From 469b99a531d7d86c0d602f616624e734b4af432f Mon Sep 17 00:00:00 2001 From: blackmatrix7 <27717518+blackmatrix7@users.noreply.github.com> Date: Thu, 22 Dec 2022 20:46:26 +0800 Subject: [PATCH] =?UTF-8?q?[MagicJS3]=20=E6=9B=B4=E6=96=B0=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/dingdong/dingdong_checkin.js | 53 +++++++++--------- script/gallery.json | 8 --- script/smzdm/smzdm_daily.js | 26 ++++----- script/tieba/tieba_signin.js | 50 ++++++++--------- script/zheye/zheye.js | 20 +++---- script/zheye/zheye.png | Bin 23074 -> 163175 bytes .../zheye/{zheye.qxrewrite => zheye.snippet} | 0 7 files changed, 71 insertions(+), 86 deletions(-) rename script/zheye/{zheye.qxrewrite => zheye.snippet} (100%) diff --git a/script/dingdong/dingdong_checkin.js b/script/dingdong/dingdong_checkin.js index 088f7f491..4e232f684 100644 --- a/script/dingdong/dingdong_checkin.js +++ b/script/dingdong/dingdong_checkin.js @@ -23,8 +23,7 @@ function getUserId(cookie) { if (obj.code === 0) { $.logger.info(`当前登录用户的UserId:${obj.data.id}`); resolve(obj.data.id); - } - else { + } else { const msg = `获取UserId失败\n${JSON.stringify(resp)}`; $.logger.warning(msg); reject(msg); @@ -57,16 +56,15 @@ function checkIn(cookie, body) { }).then(resp => { const obj = resp.body; if (obj.code === 0) { - let msg = `签到成功,连续签到${obj.data.sign_series}天,获取积分${obj.data.point}`; - if (!!obj.data.ticket_money) { - msg += `,优惠券${obj.data.ticket_money}!`; + let msg = `签到成功,连续签到${obj.data["sign_series"]}天,获取积分${obj.data.point}`; + if (!!obj.data["ticket_money"]) { + msg += `,优惠券${obj.data["ticket_money"]}!`; } else { msg += "!"; } $.logger.info(msg); resolve(msg); - } - else if (obj.code === 9007) { + } else if (obj.code === 9007) { const msg = `签到失败,Cookie已过期`; $.logger.warning(`${msg}\n${JSON.stringify(obj)}`); reject(msg); @@ -79,7 +77,7 @@ function checkIn(cookie, body) { }) } -; (async () => { +;(async () => { if ($.isRequest && getCookieRegex.test($.request.url)) { const cookie = $.request.headers.Cookie; const body = $.request.url.split('?')[1]; @@ -94,8 +92,7 @@ function checkIn(cookie, body) { $.data.write(dingDongBodyKey, body, userId); $.logger.info(`旧的Cookie:${hisCookie}\n新的Cookie:${cookie}\nCookie不同,写入新的Cookie成功!`); $.notification.post("🎈Cookie写入成功!!"); - } - else { + } else { $.logger.info("Cookie没有变化,无需更新"); } // 同步Cookies至青龙面板 @@ -108,9 +105,8 @@ function checkIn(cookie, body) { $.notification.post("🎈Cookie同步到青龙面板成功!!"); } } - } - else { - const allSessions = $.data.allSessions(dingDongCookieKey); + } else { + const allSessions = $.data.allSessionNames(dingDongCookieKey); if (!allSessions || allSessions.length <= 0) { const msg = "没有需要执行的Cookies,请先打开APP获取"; $.logger.warning(msg); @@ -134,18 +130,25 @@ function checkIn(cookie, body) { })(); /** - * - * $$\ $$\ $$\ $$$$$\ $$$$$$\ $$$$$$\ - * $$$\ $$$ | \__| \__$$ |$$ __$$\ $$ ___$$\ + * + * $$\ $$\ $$\ $$$$$\ $$$$$$\ $$$$$$\ + * $$$\ $$$ | \__| \__$$ |$$ __$$\ $$ ___$$\ * $$$$\ $$$$ | $$$$$$\ $$$$$$\ $$\ $$$$$$$\ $$ |$$ / \__| \_/ $$ | - * $$\$$\$$ $$ | \____$$\ $$ __$$\ $$ |$$ _____| $$ |\$$$$$$\ $$$$$ / - * $$ \$$$ $$ | $$$$$$$ |$$ / $$ |$$ |$$ / $$\ $$ | \____$$\ \___$$\ + * $$\$$\$$ $$ | \____$$\ $$ __$$\ $$ |$$ _____| $$ |\$$$$$$\ $$$$$ / + * $$ \$$$ $$ | $$$$$$$ |$$ / $$ |$$ |$$ / $$\ $$ | \____$$\ \___$$\ * $$ |\$ /$$ |$$ __$$ |$$ | $$ |$$ |$$ | $$ | $$ |$$\ $$ | $$\ $$ | * $$ | \_/ $$ |\$$$$$$$ |\$$$$$$$ |$$ |\$$$$$$$\\$$$$$$ |\$$$$$$ | \$$$$$$ | - * \__| \__| \_______| \____$$ |\__| \_______|\______/ \______/ \______/ - * $$\ $$ | - * \$$$$$$ | - * \______/ - * -*/ -function MagicJS(e = "MagicJS", t = "INFO") { const r = () => { const e = typeof $loon !== "undefined"; const t = typeof $task !== "undefined"; const n = typeof module !== "undefined"; const r = typeof $httpClient !== "undefined" && !e; const i = typeof $storm !== "undefined"; const o = typeof $environment !== "undefined" && typeof $environment["stash-build"] !== "undefined"; const s = r || e || i || o; const a = typeof importModule !== "undefined"; return { isLoon: e, isQuanX: t, isNode: n, isSurge: r, isStorm: i, isStash: o, isSurgeLike: s, isScriptable: a, get name() { if (e) { return "Loon" } else if (t) { return "QuantumultX" } else if (n) { return "NodeJS" } else if (r) { return "Surge" } else if (a) { return "Scriptable" } else { return "unknown" } }, get build() { if (r) { return $environment["surge-build"] } else if (o) { return $environment["stash-build"] } else if (i) { return $storm.buildVersion } }, get language() { if (r || o) { return $environment["language"] } }, get version() { if (r) { return $environment["surge-version"] } else if (o) { return $environment["stash-version"] } else if (i) { return $storm.appVersion } else if (n) { return process.version } }, get system() { if (r) { return $environment["system"] } else if (n) { return process.platform } }, get systemVersion() { if (i) { return $storm.systemVersion } }, get deviceName() { if (i) { return $storm.deviceName } } } }; const i = (n, e = "INFO") => { let r = e; const i = { SNIFFER: 6, DEBUG: 5, INFO: 4, NOTIFY: 3, WARNING: 2, ERROR: 1, CRITICAL: 0, NONE: -1 }; const o = { SNIFFER: "", DEBUG: "", INFO: "", NOTIFY: "", WARNING: "❗ ", ERROR: "❌ ", CRITICAL: "❌ ", NONE: "" }; const t = (e, t = "INFO") => { if (!(i[r] < i[t.toUpperCase()])) console.log(`[${t}] [${n}]\n${o[t.toUpperCase()]}${e}\n`) }; const s = e => { r = e }; return { setLevel: s, sniffer: e => { t(e, "SNIFFER") }, debug: e => { t(e, "DEBUG") }, info: e => { t(e, "INFO") }, notify: e => { t(e, "NOTIFY") }, warning: e => { t(e, "WARNING") }, error: e => { t(e, "ERROR") }, retry: e => { t(e, "RETRY") } } }; return new class { constructor(e, t) { this._startTime = Date.now(); this.version = "3.0.0"; this.scriptName = e; this.env = r(); this.logger = i(e, t); this.http = typeof MagicHttp === "function" ? MagicHttp(this.env, this.logger) : undefined; this.data = typeof MagicData === "function" ? MagicData(this.env, this.logger) : undefined; this.notification = typeof MagicNotification === "function" ? MagicNotification(this.scriptName, this.env, this.logger, this.http) : undefined; this.utils = typeof MagicUtils === "function" ? MagicUtils(this.env, this.logger) : undefined; this.qinglong = typeof MagicQingLong === "function" ? MagicQingLong(this.env, this.data, this.logger) : undefined; if (typeof this.data !== "undefined") { let e = this.data.read("magic_loglevel"); const n = this.data.read("magic_bark_url"); if (e) { this.logger.setLevel(e.toUpperCase()) } if (n) { this.notification.setBark(n) } } } get isRequest() { return typeof $request !== "undefined" && typeof $response === "undefined" } get isResponse() { return typeof $response !== "undefined" } get isDebug() { return this.logger.level === "DEBUG" } get request() { return typeof $request !== "undefined" ? $request : undefined } get response() { if (typeof $response !== "undefined") { if ($response.hasOwnProperty("status")) $response["statusCode"] = $response["status"]; if ($response.hasOwnProperty("statusCode")) $response["status"] = $response["statusCode"]; return $response } else { return undefined } } done = (e = {}) => { this._endTime = Date.now(); let t = (this._endTime - this._startTime) / 1e3; this.logger.info(`SCRIPT COMPLETED: ${t} S.`); if (typeof $done !== "undefined") { $done(e) } } }(e, t) } function MagicHttp(u, c) { const t = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1"; const n = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59"; let f; if (u.isNode) { const a = require("axios"); f = a.create() } class e { constructor(e = true) { this.handlers = []; this.isRequest = e } use(e, t, n) { this.handlers.push({ fulfilled: e, rejected: t, synchronous: n ? n.synchronous : false, runWhen: n ? n.runWhen : null }); return this.handlers.length - 1 } eject(e) { if (this.handlers[e]) { this.handlers[e] = null } } forEach(t) { this.handlers.forEach(e => { if (e !== null) { t(e) } }) } } function r(e) { let n = { ...e }; if (!!n.params) { if (!u.isNode) { let e = Object.keys(n.params).map(e => { const t = encodeURIComponent(e); n.url = n.url.replace(new RegExp(`${e}=[^&]*`, "ig"), ""); n.url = n.url.replace(new RegExp(`${t}=[^&]*`, "ig"), ""); return `${t}=${encodeURIComponent(n.params[e])}` }).join("&"); if (n.url.indexOf("?") < 0) n.url += "?"; if (!/(&|\?)$/g.test(n.url)) { n.url += "&" } n.url += e; delete n.params; c.debug(`Params to QueryString: ${n.url}`) } } return n } const d = (e, t) => { let n = typeof t === "object" ? { headers: {}, ...t } : { url: t, headers: {} }; if (!n.method) { n["method"] = e } n = r(n); if (n["rewrite"] === true) { if (u.isSurge) { n.headers["X-Surge-Skip-Scripting"] = false; delete n["rewrite"] } else if (u.isQuanX) { n["hints"] = false; delete n["rewrite"] } } if (u.isSurge) { if (n["method"] !== "GET" && n.headers["Content-Type"].indexOf("application/json") >= 0 && n.body instanceof Array) { n.body = JSON.stringify(n.body); c.debug(`Convert Array object to String: ${n.body}`) } } else if (u.isQuanX) { if (n.hasOwnProperty("body") && typeof n["body"] !== "string") n["body"] = JSON.stringify(n["body"]); n["method"] = e } else if (u.isNode) { if (e === "POST" || e === "PUT" || e === "PATCH" || e === "DELETE") { n.data = n.data || n.body } else if (e === "GET") { n.params = n.params || n.body } delete n.body } return n }; const p = (t, n = null) => { if (t) { let e = { ...t, config: t.config || n, status: t.statusCode || t.status, body: t.body || t.data, headers: t.headers || t.header }; if (typeof e.body === "string") { try { e.body = JSON.parse(e.body) } catch { } } delete t.data; return e } else { return t } }; const i = r => { if (!!r) { delete r["Content-Length"]; let e = new Set(["Accept", "Accept-CH", "Accept-Charset", "Accept-Features", "Accept-Encoding", "Accept-Language", "Accept-Ranges", "Access-Control-Allow-Credentials", "Access-Control-Allow-Origin", "Access-Control-Allow-Methods", "Access-Control-Allow-Headers", "Access-Control-Max-Age", "Access-Control-Expose-Headers", "Access-Control-Request-Method", "Access-Control-Request-Headers", "Age", "Allow", "Alternates", "Authorization", "Cache-Control", "Connection", "Content-Encoding", "Content-Language", "ontent-Length", "Content-Location", "Content-Range", "Content-Security-Policy", "Content-Type", "Cookie", "DNT", "Date", "ETag", "Expect", "Expires", "From", "Host", "If-Match", "If-Modified-Since", "If-None-Match", "If-Range", "If-Unmodified-Since", "Last-Event-ID", "Last-Modified", "Link", "Location", "Max-Forwards", "Negotiate", "Origin", "Pragma", "Proxy-Authenticate", "Proxy-Authorization", "Range", "Referer", "Retry-After", "Sec-Websocket-Extensions", "Sec-Websocket-Key", "Sec-Websocket-Origin", "Sec-Websocket-Protocol", "Sec-Websocket-Version", "Server", "Set-Cookie", "Set-Cookie2", "Strict-Transport-Security", "TCN", "TE", "Trailer", "Transfer-Encoding", "Upgrade", "User-Agent", "Variant-Vary", "Vary", "Via", "Warning", "WWW-Authenticate", "X-Content-Duration", "X-Content-Security-Policy", "X-DNSPrefetch-Control", "X-Frame-Options", "X-Requested-With"]); for (let n of Object.keys(r)) { if (!e.has(n)) { for (let t of e) { let e = n.replace(new RegExp(t, "ig"), t); if (n !== e) { r[e] = r[n]; delete r[n]; break } } } } if (!r["User-Agent"]) { if (u.isNode) { r["User-Agent"] = n } else { r["User-Agent"] = t } } return r } return r }; const g = (t, n = null) => { if (!!t && t.status >= 400) { c.debug(`Raise exception when status code is ${t.status}`); let e = { name: "RequestException", message: `Request failed with status code ${t.status}`, config: n || t.config, response: t }; return e } }; const o = { request: new e, response: new e(false) }; let y = []; let h = []; let m = true; function $(e) { if (typeof e === "object" && e["modify"] !== false) { e["headers"] = i(e["headers"]) } e = r(e); return e } function b(e) { try { e = !!e ? p(e) : e; c.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body === "object" ? JSON.stringify(e.body) : e.body}`); const t = g(e); if (!!t) { return Promise.reject(t) } return e } catch (t) { c.error(t); return e } } const S = t => { try { y = []; h = []; o.request.forEach(e => { if (typeof e.runWhen === "function" && e.runWhen(t) === false) { return } m = m && e.synchronous; y.unshift(e.fulfilled, e.rejected) }); o.response.forEach(e => { h.push(e.fulfilled, e.rejected) }) } catch (e) { c.error(`failed to register interceptors: ${e}`) } }; const s = (e, r) => { let i; const t = e.toUpperCase(); r = d(t, r); if (u.isNode) { i = f } else { if (u.isSurgeLike) { i = o => { return new Promise((r, i) => { $httpClient[e.toLowerCase()](o, (t, n, e) => { if (t) { let e = { name: t.name || t, message: t.message || t, stack: t.stack || t, config: o, response: p(n) }; i(e) } else { n.config = o; n.body = e; r(n) } }) }) } } else { i = i => { return new Promise((n, r) => { $task.fetch(i).then(e => { e = p(e, i); const t = g(e, i); if (t) { return Promise.reject(t) } n(e) }).catch(e => { let t = { name: e.message || e.error, message: e.message || e.error, stack: e.error, config: i, response: !!e.response ? p(e.response) : null }; r(t) }) }) } } } let o; S(r); const s = [$, undefined]; const a = [b, undefined]; if (!m) { c.debug("Interceptors are executed in asynchronous mode"); let n = [i, undefined]; Array.prototype.unshift.apply(n, s); Array.prototype.unshift.apply(n, y); Array.prototype.unshift.apply(n, s); n = n.concat(a); n = n.concat(h); o = Promise.resolve(r); while (n.length) { try { let e = n.shift(); let t = n.shift(); if (!u.isNode && r["timeout"] && e === i) { o = l(r) } else { o = o.then(e, t) } } catch (e) { c.error(`request exception: ${e}`) } } return o } else { c.debug("Interceptors are executed in synchronous mode"); Array.prototype.unshift.apply(y, s); y = y.concat([$, undefined]); while (y.length) { let e = y.shift(); let t = y.shift(); try { r = e(r) } catch (e) { t(e); break } } try { if (!u.isNode && r["timeout"]) { o = l(r) } else { o = i(r) } } catch (e) { return Promise.reject(e) } Array.prototype.unshift.apply(h, a); while (h.length) { o = o.then(h.shift(), h.shift()) } return o } function l(n) { try { const e = new Promise((e, t) => { setTimeout(() => { let e = { message: `timeout of ${n["timeout"]}ms exceeded`, config: n }; t(e) }, n["timeout"]) }); return Promise.race([i(n), e]) } catch (e) { c.error(`Request Timeout exception: ${e}`) } } }; return { request: s, interceptors: o, modifyHeaders: i, modifyResponse: p, get: e => { return s("GET", e) }, post: e => { return s("POST", e) }, put: e => { return s("PUT", e) }, patch: e => { return s("PATCH", e) }, delete: e => { return s("DELETE", e) }, head: e => { return s("HEAD", e) }, options: e => { return s("OPTIONS", e) } } } function MagicNotification(o, s, a, l) { let u = null; let c = null; const e = t => { try { let e = t.replace(/\/+$/g, ""); u = `${/^https?:\/\/([^/]*)/.exec(e)[0]}/push`; c = /\/([^\/]+)\/?$/.exec(e)[1] } catch (e) { a.error(`Bark url error: ${e}.`) } }; function t(e = o, t = "", n = "", r = "") { const i = n => { try { let t = {}; if (typeof n === "string") { if (s.isLoon) t = { openUrl: n }; else if (s.isQuanX) t = { "open-url": n }; else if (s.isSurge) t = { url: n } } else if (typeof n === "object") { if (s.isLoon) { t["openUrl"] = !!n["open-url"] ? n["open-url"] : ""; t["mediaUrl"] = !!n["media-url"] ? n["media-url"] : "" } else if (s.isQuanX) { t = !!n["open-url"] || !!n["media-url"] ? n : {} } else if (s.isSurge) { let e = n["open-url"] || n["openUrl"]; t = e ? { url: e } : {} } } return t } catch (e) { a.error(`Failed to convert notification option, ${e}`) } return n }; r = i(r); if (arguments.length == 1) { e = o; t = "", n = arguments[0] } a.notify(`title:${e}\nsubTitle:${t}\nbody:${n}\noptions:${typeof r === "object" ? JSON.stringify(r) : r}`); if (s.isSurge) { $notification.post(e, t, n, r) } else if (s.isLoon) { if (!!r) $notification.post(e, t, n, r); else $notification.post(e, t, n) } else if (s.isQuanX) { $notify(e, t, n, r) } if (u && c) { f(e, t, n) } } function n(e = o, t = "", n = "", r = "") { if (a.level === "DEBUG") { if (arguments.length == 1) { e = o; t = "", n = arguments[0] } this.notify(e, t, n, r) } } function f(e = o, t = "", n = "", r = "") { if (typeof l === "undefined" || typeof l.post === "undefined") { throw "Bark notification needs to import MagicHttp module." } let i = { url: u, headers: { "Content-Type": "application/json; charset=utf-8" }, body: { title: e, body: t ? `${t}\n${n}` : n, device_key: c } }; l.post(i).catch(e => { a.error(`Bark notify error: ${e}`) }) } return { post: t, debug: n, bark: f, setBark: e } } function MagicData(s, a) { let l = { fs: undefined, data: {} }; if (s.isNode) { l.fs = require("fs"); try { l.fs.accessSync("./magic.json", l.fs.constants.R_OK | l.fs.constants.W_OK) } catch (e) { l.fs.writeFileSync("./magic.json", "{}", { encoding: "utf8" }) } l.data = require("./magic.json") } const u = (e, t) => { if (typeof t === "object") { return false } else { return e === t } }; const c = e => { if (e === "true") { return true } else if (e === "false") { return false } else if (typeof e === "undefined") { return null } else { return e } }; const f = (e, t, n, r) => { if (n) { try { if (typeof e === "string") e = JSON.parse(e); if (e["magic_session"] === true) { e = e[n] } else { e = null } } catch { e = null } } if (typeof e === "string" && e !== "null") { try { e = JSON.parse(e) } catch { } } if (r === false && !!e && e["magic_session"] === true) { e = null } if ((e === null || typeof e === "undefined") && t !== null && typeof t !== "undefined") { e = t } e = c(e); return e }; const o = t => { if (typeof t === "string") { let e = {}; try { e = JSON.parse(t); const n = typeof e; if (n !== "object" || e instanceof Array || n === "bool" || e === null) { e = {} } } catch { } return e } else if (t instanceof Array || t === null || typeof t === "undefined" || t !== t || typeof t === "boolean") { return {} } else { return t } }; const d = (e, t = null, n = "", r = false, i = null) => { let o = i || l.data; if (!!o && typeof o[e] !== "undefined" && o[e] !== null) { val = o[e] } else { val = !!n ? {} : null } val = f(val, t, n, r); return val }; const p = (e, t = null, n = "", r = false, i = null) => { let o = ""; if (i || s.isNode) { o = d(e, t, n, r, i) } else { if (s.isSurgeLike) { o = $persistentStore.read(e) } else if (s.isQuanX) { o = $prefs.valueForKey(e) } o = f(o, t, n, r) } a.debug(`READ DATA [${e}]${!!n ? `[${n}]` : ""} <${typeof o}>\n${JSON.stringify(o)}`); return o }; const g = (t, n, r = "", e = null) => { let i = e || l.data; i = o(i); if (!!r) { let e = o(i[t]); e["magic_session"] = true; e[r] = n; i[t] = e } else { i[t] = n } if (e !== null) { e = i } return i }; const y = (e, t, n = "", r = null) => { if (typeof t === "undefined" || t !== t) { return false } if (!s.isNode && (typeof t === "boolean" || typeof t === "number")) { t = String(t) } let i = ""; if (r || s.isNode) { i = g(e, t, n, r) } else { if (!n) { i = t } else { if (s.isSurgeLike) { i = !!$persistentStore.read(e) ? $persistentStore.read(e) : i } else if (s.isQuanX) { i = !!$prefs.valueForKey(e) ? $prefs.valueForKey(e) : i } i = o(i); i["magic_session"] = true; i[n] = t } } if (!!i && typeof i === "object") { i = JSON.stringify(i, "", "\t") } a.debug(`WRITE DATA [${e}]${n ? `[${n}]` : ""} <${typeof t}>\n${JSON.stringify(t)}`); if (!r) { if (s.isSurgeLike) { return $persistentStore.write(i, e) } else if (s.isQuanX) { return $prefs.setValueForKey(i, e) } else if (s.isNode) { try { l.fs.writeFileSync("./magic.json", i); return true } catch (e) { a.error(e); return false } } } return true }; const e = (t, n, r, i = u, o = null) => { n = c(n); const e = p(t, null, r, false, o); if (i(e, n) === true) { return false } else { const s = y(t, n, r, o); let e = p(t, null, r, false, o); if (i === u && typeof e === "object") { return s } return i(n, e) } }; const h = (e, t, n) => { let r = n || l.data; r = o(r); if (!!t) { obj = o(r[e]); delete obj[t]; r[e] = obj } else { delete r[e] } if (!!n) { n = r } return r }; const t = (e, t = "", n = null) => { let r = {}; if (n || s.isNode) { r = h(e, t, n); if (!n) { l.fs.writeFileSync("./magic.json", JSON.stringify(r)) } else { n = r } } else { if (!t) { if (s.isStorm) { return $persistentStore.remove(e) } else if (s.isSurgeLike) { return $persistentStore.write(null, e) } else if (s.isQuanX) { return $prefs.removeValueForKey(e) } } else { if (s.isSurgeLike) { r = $persistentStore.read(e) } else if (s.isQuanX) { r = $prefs.valueForKey(e) } r = o(r); delete r[t]; const i = JSON.stringify(r); y(e, i) } } a.debug(`DELETE KEY [${e}]${!!t ? `[${t}]` : ""}`) }; const n = (e, t = null) => { let n = []; let r = p(e, null, null, true, t); r = o(r); if (r["magic_session"] !== true) { n = [] } else { n = Object.keys(r).filter(e => e !== "magic_session") } a.debug(`READ ALL SESSIONS [${e}] <${typeof n}>\n${JSON.stringify(n)}`); return n }; return { read: p, write: y, del: t, update: e, allSessions: n, defaultValueComparator: u, convertToObject: o } } function MagicUtils(r, u) { const e = (o, s = 5, a = 0, l = null) => { return (...e) => { return new Promise((n, r) => { function i(...t) { Promise.resolve().then(() => o.apply(this, t)).then(e => { if (typeof l === "function") { Promise.resolve().then(() => l(e)).then(() => { n(e) }).catch(e => { if (s >= 1) { if (a > 0) setTimeout(() => i.apply(this, t), a); else i.apply(this, t) } else { r(e) } s-- }) } else { n(e) } }).catch(e => { u.error(e); if (s >= 1 && a > 0) { setTimeout(() => i.apply(this, t), a) } else if (s >= 1) { i.apply(this, t) } else { r(e) } s-- }) } i.apply(this, e) }) } }; const t = (e, t = "yyyy-MM-dd hh:mm:ss") => { let n = { "M+": e.getMonth() + 1, "d+": e.getDate(), "h+": e.getHours(), "m+": e.getMinutes(), "s+": e.getSeconds(), "q+": Math.floor((e.getMonth() + 3) / 3), S: e.getMilliseconds() }; if (/(y+)/.test(t)) t = t.replace(RegExp.$1, (e.getFullYear() + "").substr(4 - RegExp.$1.length)); for (let e in n) if (new RegExp("(" + e + ")").test(t)) t = t.replace(RegExp.$1, RegExp.$1.length == 1 ? n[e] : ("00" + n[e]).substr(("" + n[e]).length)); return t }; const n = () => { return t(new Date, "yyyy-MM-dd hh:mm:ss") }; const i = () => { return t(new Date, "yyyy-MM-dd") }; const o = t => { return new Promise(e => setTimeout(e, t)) }; const s = (e, t = null) => { if (r.isNode) { const n = require("assert"); if (t) n(e, t); else n(e) } else { if (e !== true) { let e = `AssertionError: ${t || "The expression evaluated to a falsy value"}`; u.error(e) } } }; return { retry: e, formatTime: t, now: n, today: i, sleep: o, assert: s } } function MagicQingLong(e, l, i) { let o = ""; let s = ""; let a = ""; let u = ""; let c = ""; let t = ""; const f = "magic.json"; const n = 3e3; const d = MagicHttp(e, i); const r = (e, t, n, r, i) => { o = e; a = t; u = n; s = r; c = i }; function p(e) { o = o || l.read("magic_qlurl"); t = t || l.read("magic_qltoken"); return e } function g(e) { if (!o) { o = l.read("magic_qlurl") } if (e.url.indexOf(o) < 0) { e.url = `${o}${e.url}` } return { ...e, timeout: n } } function y(e) { e.params = { ...e.params, t: Date.now() }; return e } function h(e) { t = t || l.read("magic_qltoken"); if (t) { e.headers["Authorization"] = `Bearer ${t}` } return e } function m(e) { a = a || l.read("magic_qlclient"); if (!!a) { e.url = e.url.replace("/api/", "/open/") } return e } async function $(e) { try { const t = e.message || e.error || JSON.stringify(e); if ((t.indexOf("NSURLErrorDomain") >= 0 && t.indexOf("-1012") >= 0 || !!e.response && e.response.status === 401) && (!!e.config && e.config.refreshToken !== true)) { i.warning(`Qinglong panel token has expired`); await b(); e.config["refreshToken"] = true; return await d.request(e.config.method, e.config) } else { return Promise.reject(e) } } catch (e) { return Promise.reject(e) } } d.interceptors.request.use(p, undefined); d.interceptors.request.use(g, undefined); d.interceptors.request.use(m, undefined, { runWhen: e => { return e.url.indexOf("api/user/login") < 0 && e.url.indexOf("open/auth/token") < 0 } }); d.interceptors.request.use(h, undefined, { runWhen: e => { return e.url.indexOf("api/user/login") < 0 && e.url.indexOf("open/auth/token") < 0 } }); d.interceptors.request.use(y, undefined, { runWhen: e => { return e.url.indexOf("open/auth/token") < 0 && e.url.indexOf("t=") < 0 } }); d.interceptors.response.use(undefined, $); async function b() { a = a || l.read("magic_qlclient"); u = u || l.read("magic_qlsecrt"); s = s || l.read("magic_qlname"); c = c || l.read("magic_qlpwd"); if (o && a && u) { await d.get({ url: `/open/auth/token`, headers: { "Content-Type": "application/json" }, params: { client_id: a, client_secret: u } }).then(e => { i.info("Log in to Qinglong panel successfully"); t = e.body.data.token; l.update("magic_qltoken", t); return t }).catch(e => { i.error(`Failed to log in to Qinglong panel.\n${e.message}`) }) } else if (o && s && c) { await d.post({ url: `/api/user/login`, headers: { "Content-Type": "application/json" }, body: { username: s, password: c } }).then(e => { i.info("Log in to Qinglong panel successfully"); t = e.body.data.token; l.update("magic_qltoken", t); return t }).catch(e => { i.error(`Failed to log in to Qinglong panel.\n${e.message}`) }) } } async function S(t, n, r = null) { o = o || l.read("magic_qlurl"); if (r === null) { let e = await N([{ name: t, value: n }]); if (!!e && e.length === 1) { return e[0] } } else { d.put({ url: `/api/envs`, headers: { "Content-Type": "application/json" }, body: { name: t, value: n, id: r } }).then(e => { if (e.body.code === 200) { i.debug(`QINGLONG UPDATE ENV ${t} <${typeof n}> (${r})\n${JSON.stringify(n)}`); return true } else { i.error(`Failed to update Qinglong panel environment variable.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to update Qinglong panel environment variable.\n${e.message}`); return false }) } } async function N(e) { let t = []; await d.post({ url: `/api/envs`, headers: { "Content-Type": "application/json" }, body: e }).then(e => { if (e.body.code === 200) { e.body.data.forEach(e => { i.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`); t.push(e.id) }) } else { i.error(`Failed to add Qinglong panel environment variable.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to add Qinglong panel environment variable.\n${e.message}`) }); return t } async function v(t) { return await d.delete({ url: `/api/envs`, headers: { Accept: "application/json", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", Connection: "keep-alive", "Content-Type": "application/json;charset=UTF-8", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30" }, body: t }).then(e => { if (e.body.code === 200) { i.debug(`QINGLONG DELETE ENV IDS: ${t}`); return true } else { i.error(`Failed to delete QingLong envs.\n${JSON.stringify(e)}`); return false } }).catch(e => { i.error(`Failed to delete QingLong envs.\n${e.message}`) }) } async function O(n = null, e = "") { let r = []; await d.get({ url: `/api/envs`, headers: { "Content-Type": "application/json" }, params: { searchValue: e } }).then(e => { if (e.body.code === 200) { const t = e.body.data; if (!!n) { let e = []; for (const e of t) { if (e.name === n) { r.push(e) } } r = e } r = t } else { i.error(`Failed to get environment variables from Qinglong panel.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to get environment variables from Qinglong panel.\n${JSON.stringify(e)}`) }); return r } async function E(e) { let t = null; const n = await O(); for (const r of n) { if (r.id === e) { t = r; break } } return t } async function T(t) { let n = false; await d.put({ url: `/api/envs/disable`, headers: { Accept: "application/json", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", Connection: "keep-alive", "Content-Type": "application/json;charset=UTF-8", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30" }, body: t }).then(e => { if (e.body.code === 200) { i.debug(`QINGLONG DISABLED ENV IDS: ${t}`); n = true } else { i.error(`Failed to disable QingLong envs.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to disable QingLong envs.\n${e.message}`) }); return n } async function w(t) { let n = false; await d.put({ url: `/api/envs/enable`, headers: { Accept: "application/json", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", Connection: "keep-alive", "Content-Type": "application/json;charset=UTF-8", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30" }, body: t }).then(e => { if (e.body.code === 200) { i.debug(`QINGLONG ENABLED ENV IDS: ${t}`); n = true } else { i.error(`Failed to enable QingLong envs.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to enable QingLong envs.\n${e.message}`) }); return n } async function C(e, t = "", n = "") { let r = false; await d.post({ url: `/api/scripts`, headers: { "Content-Type": "application/json" }, body: { filename: e, path: t, content: n } }).then(e => { if (e.body.code === 200) { r = true } else { i.error(`Failed to add script content from Qinglong panel.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to add script content from Qinglong panel.\n${e.message}`) }); return r } async function A(e, t = "") { let n = ""; await d.get({ url: `/api/scripts/${e}`, params: { path: t } }).then(e => { if (e.body.code === 200) { n = e.body.data } else { i.error(`Failed to read script content from Qinglong panel.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to read script content from Qinglong panel.\n${e.message}`) }); return n } async function k(e, t = "", n = "") { let r = false; await d.put({ url: `/api/scripts`, headers: { "Content-Type": "application/json" }, body: { filename: e, path: t, content: n } }).then(e => { if (e.body.code === 200) { r = true } else { i.error(`Failed to read script content from Qinglong panel.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to read script content from Qinglong panel.\n${e.message}`) }); return r } async function L(e, t = "") { let n = false; await d.delete({ url: `/api/scripts`, headers: { "Content-Type": "application/json" }, body: { filename: e, path: t } }).then(e => { if (e.body.code === 200) { n = true } else { i.error(`Failed to read script content from Qinglong panel.\n${JSON.stringify(e)}`) } }).catch(e => { i.error(`Failed to read script content from Qinglong panel.\n${e.message}`) }); return n } async function F(e, t, n = "") { let r = await A(f, ""); let i = l.convertToObject(r); let o = l.write(e, t, n, i); r = JSON.stringify(i, "", "\t"); let s = await k(f, "", r); return s && o } async function j(e, t, n, r = l.defaultValueComparator) { let i = await A(f, ""); let o = l.convertToObject(i); const s = l.update(e, t, n, r, o); let a = false; if (s === true) { i = JSON.stringify(o, "", "\t"); a = await k(f, "", i) } return s && a } async function M(e, t, n = "") { let r = await A(f, ""); let i = l.convertToObject(r); const o = l.read(e, t, n, false, i); return o } async function R(e, t = "") { let n = await A(f, ""); let r = l.convertToObject(n); const i = l.del(e, t, r); n = JSON.stringify(r, "", "\t"); const o = await k(f, "", n); return i && o } async function q(e) { let t = await A(f, ""); let n = l.convertToObject(t); const r = l.allSessions(e, n); return r } return { init: r, getToken: b, setEnv: S, setEnvs: N, getEnv: E, getEnvs: O, delEnvs: v, disableEnvs: T, enbleEnvs: w, addScript: C, getScript: A, editScript: k, delScript: L, write: F, read: M, del: R, update: j, allSessions: q } } \ No newline at end of file + * \__| \__| \_______| \____$$ |\__| \_______|\______/ \______/ \______/ + * $$\ $$ | + * \$$$$$$ | + * \______/ + * + */ +// @formatter:off +function MagicJS(e="MagicJS",t="INFO"){const i=()=>{const e=typeof $loon!=="undefined";const t=typeof $task!=="undefined";const n=typeof module!=="undefined";const i=typeof $httpClient!=="undefined"&&!e;const s=typeof $storm!=="undefined";const r=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const o=i||e||s||r;const u=typeof importModule!=="undefined";return{isLoon:e,isQuanX:t,isNode:n,isSurge:i,isStorm:s,isStash:r,isSurgeLike:o,isScriptable:u,get name(){if(e){return"Loon"}else if(t){return"QuantumultX"}else if(n){return"NodeJS"}else if(i){return"Surge"}else if(u){return"Scriptable"}else{return"unknown"}},get build(){if(i){return $environment["surge-build"]}else if(r){return $environment["stash-build"]}else if(s){return $storm.buildVersion}},get language(){if(i||r){return $environment["language"]}},get version(){if(i){return $environment["surge-version"]}else if(r){return $environment["stash-version"]}else if(s){return $storm.appVersion}else if(n){return process.version}},get system(){if(i){return $environment["system"]}else if(n){return process.platform}},get systemVersion(){if(s){return $storm.systemVersion}},get deviceName(){if(s){return $storm.deviceName}}}};const s=(n,e="INFO")=>{let i=e;const s={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const r={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const t=(e,t="INFO")=>{if(!(s[i]{i=e};return{setLevel:o,sniffer:e=>{t(e,"SNIFFER")},debug:e=>{t(e,"DEBUG")},info:e=>{t(e,"INFO")},notify:e=>{t(e,"NOTIFY")},warning:e=>{t(e,"WARNING")},error:e=>{t(e,"ERROR")},retry:e=>{t(e,"RETRY")}}};return new class{constructor(e,t){this._startTime=Date.now();this.version="3.0.0";this.scriptName=e;this.env=i();this.logger=s(e,t);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let e=this.data.read("magic_loglevel");const n=this.data.read("magic_bark_url");if(e){this.logger.setLevel(e.toUpperCase())}if(n){this.notification.setBark(n)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){if(typeof $request!=="undefined"){this.logger.sniffer(`RESPONSE:\n${JSON.stringify($request)}`);return $request}}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];this.logger.sniffer(`RESPONSE:\n${JSON.stringify($response)}`);return $response}else{return undefined}}done=(e={})=>{this._endTime=Date.now();let t=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${t} S.`);if(typeof $done!=="undefined"){$done(e)}}}(e,t)} +function MagicHttp(c,l){const e="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1";const t="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59";let r;if(c.isNode){const S=require("axios");r=S.create()}class s{constructor(e=true){this.handlers=[];this.isRequest=e}use(e,t,r){this.handlers.push({fulfilled:e,rejected:t,synchronous:r?r.synchronous:false,runWhen:r?r.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}forEach(t){this.handlers.forEach(e=>{if(e!==null){t(e)}})}}function n(e){let r={...e};if(!!r.params){if(!c.isNode){let e=Object.keys(r.params).map(e=>{const t=encodeURIComponent(e);r.url=r.url.replace(new RegExp(`${e}=[^&]*`,"ig"),"");r.url=r.url.replace(new RegExp(`${t}=[^&]*`,"ig"),"");return`${t}=${encodeURIComponent(r.params[e])}`}).join("&");if(r.url.indexOf("?")<0)r.url+="?";if(!/(&|\?)$/g.test(r.url)){r.url+="&"}r.url+=e;delete r.params;l.debug(`Params to QueryString: ${r.url}`)}}return r}const d=(e,t)=>{let r=typeof t==="object"?{headers:{},...t}:{url:t,headers:{}};if(!r.method){r["method"]=e}r=n(r);if(r["rewrite"]===true){if(c.isSurge){r.headers["X-Surge-Skip-Scripting"]=false;delete r["rewrite"]}else if(c.isQuanX){r["hints"]=false;delete r["rewrite"]}}if(c.isSurge){if(r["method"]!=="GET"&&r.headers["Content-Type"].indexOf("application/json")>=0&&r.body instanceof Array){r.body=JSON.stringify(r.body);l.debug(`Convert Array object to String: ${r.body}`)}}else if(c.isQuanX){if(r.hasOwnProperty("body")&&typeof r["body"]!=="string")r["body"]=JSON.stringify(r["body"]);r["method"]=e}else if(c.isNode){if(e==="POST"||e==="PUT"||e==="PATCH"||e==="DELETE"){r.data=r.data||r.body}else if(e==="GET"){r.params=r.params||r.body}delete r.body}return r};const f=(t,r=null)=>{if(t){let e={...t,config:t.config||r,status:t.statusCode||t.status,body:t.body||t.data,headers:t.headers||t.header};if(typeof e.body==="string"){try{e.body=JSON.parse(e.body)}catch{}}delete t.data;return e}else{return t}};const o=r=>{return Object.keys(r).reduce((e,t)=>{e[t.toLowerCase()]=r[t];return e},{})};const i=s=>{return Object.keys(s).reduce((e,t)=>{const r=t.split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("-");e[r]=s[t];return e},{})};const h=(t,r=null)=>{if(!!t&&t.status>=400){l.debug(`Raise exception when status code is ${t.status}`);let e={name:"RequestException",message:`Request failed with status code ${t.status}`,config:r||t.config,response:t};return e}};const a={request:new s,response:new s(false)};let p=[];let y=[];let g=true;function m(e){e=n(e);l.debug(`HTTP ${e["method"].toUpperCase()}:\n${JSON.stringify(e)}`);return e}function b(e){try{e=!!e?f(e):e;l.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body==="object"?JSON.stringify(e.body):e.body}`);const t=h(e);if(!!t){return Promise.reject(t)}return e}catch(t){l.error(t);return e}}const T=t=>{try{p=[];y=[];a.request.forEach(e=>{if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}g=g&&e.synchronous;p.unshift(e.fulfilled,e.rejected)});a.response.forEach(e=>{y.push(e.fulfilled,e.rejected)})}catch(e){l.error(`Failed to register interceptors: ${e}.`)}};const u=(e,s)=>{let n;const t=e.toUpperCase();s=d(t,s);if(c.isNode){n=r}else{if(c.isSurgeLike){n=o=>{return new Promise((s,n)=>{$httpClient[e.toLowerCase()](o,(t,r,e)=>{if(t){let e={name:t.name||t,message:t.message||t,stack:t.stack||t,config:o,response:f(r)};n(e)}else{r.config=o;r.body=e;s(r)}})})}}else{n=n=>{return new Promise((r,s)=>{$task.fetch(n).then(e=>{e=f(e,n);const t=h(e,n);if(t){return Promise.reject(t)}r(e)}).catch(e=>{let t={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:n,response:!!e.response?f(e.response):null};s(t)})})}}}let o;T(s);const i=[m,undefined];const a=[b,undefined];if(!g){l.debug("Interceptors are executed in asynchronous mode.");let r=[n,undefined];Array.prototype.unshift.apply(r,i);Array.prototype.unshift.apply(r,p);r=r.concat(a);r=r.concat(y);o=Promise.resolve(s);while(r.length){try{let e=r.shift();let t=r.shift();if(!c.isNode&&s["timeout"]&&e===n){o=u(s)}else{o=o.then(e,t)}}catch(e){l.error(`request exception: ${e}`)}}return o}else{l.debug("Interceptors are executed in synchronous mode.");Array.prototype.unshift.apply(p,i);p=p.concat([m,undefined]);while(p.length){let e=p.shift();let t=p.shift();try{s=e(s)}catch(e){t(e);break}}try{if(!c.isNode&&s["timeout"]){o=u(s)}else{o=n(s)}}catch(e){return Promise.reject(e)}Array.prototype.unshift.apply(y,a);while(y.length){o=o.then(y.shift(),y.shift())}return o}function u(r){try{const e=new Promise((e,t)=>{setTimeout(()=>{let e={message:`timeout of ${r["timeout"]}ms exceeded.`,config:r};t(e)},r["timeout"])});return Promise.race([n(r),e])}catch(e){l.error(`Request Timeout exception: ${e}.`)}}};return{request:u,interceptors:a,convertHeadersToLowerCase:o,convertHeadersToCamelCase:i,modifyResponse:f,get:e=>{return u("GET",e)},post:e=>{return u("POST",e)},put:e=>{return u("PUT",e)},patch:e=>{return u("PATCH",e)},delete:e=>{return u("DELETE",e)},head:e=>{return u("HEAD",e)},options:e=>{return u("OPTIONS",e)}}} +function MagicData(i,u){let f={fs:undefined,data:{}};if(i.isNode){f.fs=require("fs");try{f.fs.accessSync("./magic.json",f.fs.constants.R_OK|f.fs.constants.W_OK)}catch(e){f.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}f.data=require("./magic.json")}const o=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const a=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const c=(e,t,s,n)=>{if(s){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[s]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(n===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=a(e);return e};const l=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const s=typeof e;if(s!=="object"||e instanceof Array||s==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const y=(e,t=null,s="",n=false,r=null)=>{let l=r||f.data;if(!!l&&typeof l[e]!=="undefined"&&l[e]!==null){val=l[e]}else{val=!!s?{}:null}val=c(val,t,s,n);return val};const d=(e,t=null,s="",n=false,r=null)=>{let l="";if(r||i.isNode){l=y(e,t,s,n,r)}else{if(i.isSurgeLike){l=$persistentStore.read(e)}else if(i.isQuanX){l=$prefs.valueForKey(e)}l=c(l,t,s,n)}u.debug(`READ DATA [${e}]${!!s?`[${s}]`:""} <${typeof l}>\n${JSON.stringify(l)}`);return l};const p=(t,s,n="",e=null)=>{let r=e||f.data;r=l(r);if(!!n){let e=l(r[t]);e["magic_session"]=true;e[n]=s;r[t]=e}else{r[t]=s}if(e!==null){e=r}return r};const S=(e,t,s="",n=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!i.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let r="";if(n||i.isNode){r=p(e,t,s,n)}else{if(!s){r=t}else{if(i.isSurgeLike){r=!!$persistentStore.read(e)?$persistentStore.read(e):r}else if(i.isQuanX){r=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):r}r=l(r);r["magic_session"]=true;r[s]=t}}if(!!r&&typeof r==="object"){r=JSON.stringify(r,null,4)}u.debug(`WRITE DATA [${e}]${s?`[${s}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!n){if(i.isSurgeLike){return $persistentStore.write(r,e)}else if(i.isQuanX){return $prefs.setValueForKey(r,e)}else if(i.isNode){try{f.fs.writeFileSync("./magic.json",r);return true}catch(e){u.error(e);return false}}}return true};const e=(t,s,n,r=o,l=null)=>{s=a(s);const e=d(t,null,n,false,l);if(r(e,s)===true){return false}else{const i=S(t,s,n,l);let e=d(t,null,n,false,l);if(r===o&&typeof e==="object"){return i}return r(s,e)}};const g=(e,t,s)=>{let n=s||f.data;n=l(n);if(!!t){obj=l(n[e]);delete obj[t];n[e]=obj}else{delete n[e]}if(!!s){s=n}return n};const t=(e,t="",s=null)=>{let n={};if(s||i.isNode){n=g(e,t,s);if(!s){f.fs.writeFileSync("./magic.json",JSON.stringify(n,null,4))}else{s=n}}else{if(!t){if(i.isStorm){return $persistentStore.remove(e)}else if(i.isSurgeLike){return $persistentStore.write(null,e)}else if(i.isQuanX){return $prefs.removeValueForKey(e)}}else{if(i.isSurgeLike){n=$persistentStore.read(e)}else if(i.isQuanX){n=$prefs.valueForKey(e)}n=l(n);delete n[t];const r=JSON.stringify(n,null,4);S(e,r)}}u.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const s=(e,t=null)=>{let s=[];let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]!==true){s=[]}else{s=Object.keys(n).filter(e=>e!=="magic_session")}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};const n=(e,t=null)=>{let s={};let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]===true){s={...n};delete s["magic_session"]}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};return{read:d,write:S,del:t,update:e,allSessions:n,allSessionNames:s,defaultValueComparator:o,convertToObject:l}} +function MagicNotification(r,f,l){let s=null;let u=null;const c=typeof MagicHttp==="function"?MagicHttp(f,l):undefined;const e=t=>{try{let e=t.replace(/\/+$/g,"");s=`${/^https?:\/\/([^/]*)/.exec(e)[0]}/push`;u=/\/([^\/]+)\/?$/.exec(e)[1]}catch(e){l.error(`Bark url error: ${e}.`)}};function t(e=r,t="",i="",o=""){const n=i=>{try{let t={};if(typeof i==="string"){if(f.isLoon)t={openUrl:i};else if(f.isQuanX)t={"open-url":i};else if(f.isSurge)t={url:i}}else if(typeof i==="object"){if(f.isLoon){t["openUrl"]=!!i["open-url"]?i["open-url"]:"";t["mediaUrl"]=!!i["media-url"]?i["media-url"]:""}else if(f.isQuanX){t=!!i["open-url"]||!!i["media-url"]?i:{}}else if(f.isSurge){let e=i["open-url"]||i["openUrl"];t=e?{url:e}:{}}}return t}catch(e){l.error(`Failed to convert notification option, ${e}`)}return i};o=n(o);if(arguments.length==1){e=r;t="",i=arguments[0]}l.notify(`title:${e}\nsubTitle:${t}\nbody:${i}\noptions:${typeof o==="object"?JSON.stringify(o):o}`);if(f.isSurge){$notification.post(e,t,i,o)}else if(f.isLoon){if(!!o)$notification.post(e,t,i,o);else $notification.post(e,t,i)}else if(f.isQuanX){$notify(e,t,i,o)}if(s&&u&&typeof c!=="undefined"){p(e,t,i)}}function i(e=r,t="",i="",o=""){if(l.level==="DEBUG"){if(arguments.length==1){e=r;t="",i=arguments[0]}this.notify(e,t,i,o)}}function p(e=r,t="",i="",o=""){if(typeof c==="undefined"||typeof c.post==="undefined"){throw"Bark notification needs to import MagicHttp module."}let n={url:s,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:e,body:t?`${t}\n${i}`:i,device_key:u}};c.post(n).catch(e=>{l.error(`Bark notify error: ${e}`)})}return{post:t,debug:i,bark:p,setBark:e}} +function MagicUtils(r,h){const e=(o,i=5,l=0,a=null)=>{return(...e)=>{return new Promise((s,r)=>{function n(...t){Promise.resolve().then(()=>o.apply(this,t)).then(e=>{if(typeof a==="function"){Promise.resolve().then(()=>a(e)).then(()=>{s(e)}).catch(e=>{if(i>=1){if(l>0)setTimeout(()=>n.apply(this,t),l);else n.apply(this,t)}else{r(e)}i--})}else{s(e)}}).catch(e=>{h.error(e);if(i>=1&&l>0){setTimeout(()=>n.apply(this,t),l)}else if(i>=1){n.apply(this,t)}else{r(e)}i--})}n.apply(this,e)})}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{let s={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};if(/(y+)/.test(t))t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length));for(let e in s)if(new RegExp("("+e+")").test(t))t=t.replace(RegExp.$1,RegExp.$1.length==1?s[e]:("00"+s[e]).substr((""+s[e]).length));return t};const s=()=>{return t(new Date,"yyyy-MM-dd hh:mm:ss")};const n=()=>{return t(new Date,"yyyy-MM-dd")};const o=t=>{return new Promise(e=>setTimeout(e,t))};const i=(e,t=null)=>{if(r.isNode){const s=require("assert");if(t)s(e,t);else s(e)}else{if(e!==true){let e=`AssertionError: ${t||"The expression evaluated to a falsy value"}`;h.error(e)}}};return{retry:e,formatTime:t,now:s,today:n,sleep:o,assert:i}} +function MagicQingLong(e,s,o){let i="";let l="";let c="";let u="";let d="";let n="";const g="magic.json";const r=3e3;const f=MagicHttp(e,o);const t=(e,n,r,t,a)=>{i=e;c=n;u=r;l=t;d=a};function a(e){i=i||s.read("magic_qlurl");n=n||s.read("magic_qltoken");return e}function p(e){if(!i){i=s.read("magic_qlurl")}if(e.url.indexOf(i)<0){e.url=`${i}${e.url}`}return{...e,timeout:r}}function y(e){e.params={...e.params,t:Date.now()};return e}function m(e){n=n||s.read("magic_qltoken");if(n){e.headers["Authorization"]=`Bearer ${n}`}return e}function h(e){c=c||s.read("magic_qlclient");if(!!c){e.url=e.url.replace("/api/","/open/")}return e}async function b(e){try{const n=e.message||e.error||JSON.stringify(e);if((n.indexOf("NSURLErrorDomain")>=0&&n.indexOf("-1012")>=0||!!e.response&&e.response.status===401)&&!!e.config&&e.config.refreshToken!==true){o.warning(`Qinglong Panel token has expired.`);await v();e.config["refreshToken"]=true;return await f.request(e.config.method,e.config)}else{return Promise.reject(e)}}catch(e){return Promise.reject(e)}}f.interceptors.request.use(a,undefined);f.interceptors.request.use(p,undefined);f.interceptors.request.use(h,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(m,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(y,undefined,{runWhen:e=>{return e.url.indexOf("open/auth/token")<0&&e.url.indexOf("t=")<0}});f.interceptors.response.use(undefined,b);async function v(){c=c||s.read("magic_qlclient");u=u||s.read("magic_qlsecrt");l=l||s.read("magic_qlname");d=d||s.read("magic_qlpwd");if(i&&c&&u){await f.get({url:`/open/auth/token`,headers:{"Content-Type":"application/json"},params:{client_id:c,client_secret:u}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}else if(i&&l&&d){await f.post({url:`/api/user/login`,headers:{"Content-Type":"application/json"},body:{username:l,password:d}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}}async function E(n,r,t=null){i=i||s.read("magic_qlurl");if(t===null){let e=await w([{name:n,value:r}]);if(!!e&&e.length===1){return e[0]}}else{f.put({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:{name:n,value:r,id:t}}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG UPDATE ENV ${n} <${typeof r}> (${t})\n${JSON.stringify(r)}`);return true}else{o.error(`Error updating environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error updating environment variable from Qinglong Panel.\n${e.message}`);return false})}}async function w(e){let n=[];await f.post({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:e}).then(e=>{if(e.body.code===200){e.body.data.forEach(e=>{o.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`);n.push(e.id)})}else{o.error(`Error adding environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error adding environment variable from Qinglong Panel.\n${e.message}`)});return n}async function N(n){return await f.delete({url:`/api/envs`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DELETE ENV IDS: ${n}`);return true}else{o.error(`Error deleting environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);return false}}).catch(e=>{o.error(`Error deleting environment variable from Qinglong Panel.\n${e.message}`)})}async function O(t=null,a="",i=0){if(i<=3){let r=[];await f.get({url:`/api/envs`,headers:{"Content-Type":"application/json"},params:{searchValue:a}}).then(e=>{if(e.body.code===200){const n=e.body.data;if(!!t){let e=[];for(const e of n){if(e.name===t){r.push(e)}}r=e}r=n}else{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;O(t,a,i)}}).catch(e=>{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;O(t,a,i)});return r}else{throw new Error("An error occurred while reading environment variable from Qinglong Panel.")}}async function S(e){let n=null;const r=await O();for(const t of r){if(t.id===e){n=t;break}}return n}async function $(n){let r=false;await f.put({url:`/api/envs/disable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DISABLED ENV IDS: ${n}`);r=true}else{o.error(`Error disabling environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error disabling environment variable from Qinglong Panel.\n${e.message}`)});return r}async function T(n){let r=false;await f.put({url:`/api/envs/enable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG ENABLED ENV IDS: ${n}`);r=true}else{o.error(`Error enabling environment variable from Qilong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error enabling environment variable from Qilong panel.\n${e.message}`)});return r}async function Q(e,n="",r=""){let t=false;await f.post({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function q(r,t="",a=0){if(a<=3){let n="";await f.get({url:`/api/scripts/${r}`,params:{path:t}}).then(e=>{if(e.body.code===200){n=e.body.data}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`);b();a+=1;q(r,t,a)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`);b();a+=1;q(r,t,a)});return n}else{throw new Error("An error occurred while reading the data from Qinglong Panel.")}}async function P(e,n="",r=""){let t=false;await f.put({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function j(e,n=""){let r=false;await f.delete({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n}}).then(e=>{if(e.body.code===200){r=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return r}async function k(e,n,r=""){let t=await q(g,"");let a=s.convertToObject(t);let i=s.write(e,n,r,a);t=JSON.stringify(a,null,4);let o=await P(g,"",t);return o&&i}async function C(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.write(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function J(e,n,r,t=s.defaultValueComparator){let a=await q(g,"");let i=s.convertToObject(a);const o=s.update(e,n,r,t,i);let l=false;if(o===true){a=JSON.stringify(i,null,4);l=await P(g,"",a)}return o&&l}async function A(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.update(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",typeof e[3]!=="undefined"?e["comparator"]:s.defaultValueComparator,r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function G(e,n,r="",t=false){let a=await q(g,"");let i=s.convertToObject(a);return s.read(e,n,r,t,i)}async function L(...n){let e=await q(g,"");let r=s.convertToObject(e);let t=[];for(let e of n){const a=s.read(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",typeof e[3]==="boolean"?e[3]:false,r);t.push(a)}return t}async function _(e,n=""){let r=await q(g,"");let t=s.convertToObject(r);const a=s.del(e,n,t);r=JSON.stringify(t,null,4);const i=await P(g,"",r);return a&&i}async function x(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.del(e[0],typeof e[1]!=="undefined"?e[1]:"",r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function D(e){let n=await q(g,"");let r=s.convertToObject(n);return s.allSessionNames(e,r)}async function W(e){let n=await q(g,"");let r=s.convertToObject(n);return s.allSessions(e,r)}return{url:i||s.read("magic_qlurl"),init:t,getToken:v,setEnv:E,setEnvs:w,getEnv:S,getEnvs:O,delEnvs:N,disableEnvs:$,enableEnvs:T,addScript:Q,getScript:q,editScript:P,delScript:j,write:k,read:G,del:_,update:J,batchWrite:C,batchRead:L,batchUpdate:A,batchDel:x,allSessions:W,allSessionNames:D}} +// @formatter:on \ No newline at end of file diff --git a/script/gallery.json b/script/gallery.json index 57c8b9e2e..ece574054 100644 --- a/script/gallery.json +++ b/script/gallery.json @@ -4,10 +4,6 @@ "config":"25 9 * * * https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/dingdong/dingdong_checkin.js, tag=叮咚买菜, img-url=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/dingdong/dingdong.png, enabled=true", "addons":"https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/dingdong/dingdong_checkin.qxrewrite,tag=叮咚买菜_获取Cookie" }, - { - "config":"00 9 * * * https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/eleme/eleme_daily.js, tag=领取吃货豆, img-url=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/eleme/elem.png, enabled=true", - "addons":"https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/eleme/eleme_daily.qxrewrite,tag=饿了么_获取Cookie" - }, { "config":"15 00 * * * https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/famijia/famijia_checkin.js, tag=Fa米家, img-url=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/famijia/famijia.png, enabled=true", "addons":"https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/famijia/famijia_checkin.qxrewrite,tag=Fa米家_获取Cookie" @@ -28,10 +24,6 @@ "config":"05 9 * * * https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js, tag=签到与任务, img-url=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm.png, enabled=true", "addons":"https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.qxrewrite,tag=什么值得买_获取Cookie" }, - { - "config":"30 00 * * * https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/meituan/maicai_checkin.js, tag=美团买菜, img-url=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/meituan/maicai.png, enabled=true", - "addons":"https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/meituan/maicai_checkin.qxrewrite,tag=美团买菜_获取Cookie" - }, { "config":"0/5 * 6-23 * * * https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/applestore/applestore.js, tag=库存查询, img-url=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/applestore/icon/applestore.png, enabled=true" } diff --git a/script/smzdm/smzdm_daily.js b/script/smzdm/smzdm_daily.js index 21c229b37..28cbfb936 100644 --- a/script/smzdm/smzdm_daily.js +++ b/script/smzdm/smzdm_daily.js @@ -459,9 +459,9 @@ function favArticles() { } // 多用户签到 -async function multiUsersSingin() { - const allSessions = $.data.allSessions(smzdmCookieKey); - if (!allSessions || allSessions.length === 0) { +async function multiUsersSignIn() { + const allSessionNames = $.data.allSessionNames(smzdmCookieKey); + if (!allSessionNames || allSessionNames.length === 0) { $.logger.error( scriptName, "", @@ -472,8 +472,8 @@ async function multiUsersSingin() { } ); } else { - $.logger.info(`当前共 ${allSessions.length} 个Cookies需要进行签到/任务。`); - for (let [index, session] of allSessions.entries()) { + $.logger.info(`当前共 ${allSessionNames.length} 个Cookies需要进行签到/任务。`); + for (let [index, session] of allSessionNames.entries()) { $.logger.info(`当前正在进行第 ${index + 1} 个Cookie签到`); // 通知信息 let title = ""; @@ -573,7 +573,7 @@ async function multiUsersSingin() { ) { await getWebCookie(); } else { - await multiUsersSingin(); + await multiUsersSignIn(); } $.done(); })(); @@ -593,15 +593,11 @@ async function multiUsersSingin() { * \______/ * */ -// prettier-ignore +// @formatter:off function MagicJS(e="MagicJS",t="INFO"){const i=()=>{const e=typeof $loon!=="undefined";const t=typeof $task!=="undefined";const n=typeof module!=="undefined";const i=typeof $httpClient!=="undefined"&&!e;const s=typeof $storm!=="undefined";const r=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const o=i||e||s||r;const u=typeof importModule!=="undefined";return{isLoon:e,isQuanX:t,isNode:n,isSurge:i,isStorm:s,isStash:r,isSurgeLike:o,isScriptable:u,get name(){if(e){return"Loon"}else if(t){return"QuantumultX"}else if(n){return"NodeJS"}else if(i){return"Surge"}else if(u){return"Scriptable"}else{return"unknown"}},get build(){if(i){return $environment["surge-build"]}else if(r){return $environment["stash-build"]}else if(s){return $storm.buildVersion}},get language(){if(i||r){return $environment["language"]}},get version(){if(i){return $environment["surge-version"]}else if(r){return $environment["stash-version"]}else if(s){return $storm.appVersion}else if(n){return process.version}},get system(){if(i){return $environment["system"]}else if(n){return process.platform}},get systemVersion(){if(s){return $storm.systemVersion}},get deviceName(){if(s){return $storm.deviceName}}}};const s=(n,e="INFO")=>{let i=e;const s={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const r={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const t=(e,t="INFO")=>{if(!(s[i]{i=e};return{setLevel:o,sniffer:e=>{t(e,"SNIFFER")},debug:e=>{t(e,"DEBUG")},info:e=>{t(e,"INFO")},notify:e=>{t(e,"NOTIFY")},warning:e=>{t(e,"WARNING")},error:e=>{t(e,"ERROR")},retry:e=>{t(e,"RETRY")}}};return new class{constructor(e,t){this._startTime=Date.now();this.version="3.0.0";this.scriptName=e;this.env=i();this.logger=s(e,t);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let e=this.data.read("magic_loglevel");const n=this.data.read("magic_bark_url");if(e){this.logger.setLevel(e.toUpperCase())}if(n){this.notification.setBark(n)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){if(typeof $request!=="undefined"){this.logger.sniffer(`RESPONSE:\n${JSON.stringify($request)}`);return $request}}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];this.logger.sniffer(`RESPONSE:\n${JSON.stringify($response)}`);return $response}else{return undefined}}done=(e={})=>{this._endTime=Date.now();let t=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${t} S.`);if(typeof $done!=="undefined"){$done(e)}}}(e,t)} -// prettier-ignore -function MagicData(i,f){let u={fs:undefined,data:{}};if(i.isNode){u.fs=require("fs");try{u.fs.accessSync("./magic.json",u.fs.constants.R_OK|u.fs.constants.W_OK)}catch(e){u.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}u.data=require("./magic.json")}const o=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const a=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const c=(e,t,r,s)=>{if(r){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[r]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(s===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=a(e);return e};const l=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const r=typeof e;if(r!=="object"||e instanceof Array||r==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const y=(e,t=null,r="",s=false,n=null)=>{let l=n||u.data;if(!!l&&typeof l[e]!=="undefined"&&l[e]!==null){val=l[e]}else{val=!!r?{}:null}val=c(val,t,r,s);return val};const d=(e,t=null,r="",s=false,n=null)=>{let l="";if(n||i.isNode){l=y(e,t,r,s,n)}else{if(i.isSurgeLike){l=$persistentStore.read(e)}else if(i.isQuanX){l=$prefs.valueForKey(e)}l=c(l,t,r,s)}f.debug(`READ DATA [${e}]${!!r?`[${r}]`:""} <${typeof l}>\n${JSON.stringify(l)}`);return l};const p=(t,r,s="",e=null)=>{let n=e||u.data;n=l(n);if(!!s){let e=l(n[t]);e["magic_session"]=true;e[s]=r;n[t]=e}else{n[t]=r}if(e!==null){e=n}return n};const g=(e,t,r="",s=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!i.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let n="";if(s||i.isNode){n=p(e,t,r,s)}else{if(!r){n=t}else{if(i.isSurgeLike){n=!!$persistentStore.read(e)?$persistentStore.read(e):n}else if(i.isQuanX){n=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):n}n=l(n);n["magic_session"]=true;n[r]=t}}if(!!n&&typeof n==="object"){n=JSON.stringify(n,null,4)}f.debug(`WRITE DATA [${e}]${r?`[${r}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!s){if(i.isSurgeLike){return $persistentStore.write(n,e)}else if(i.isQuanX){return $prefs.setValueForKey(n,e)}else if(i.isNode){try{u.fs.writeFileSync("./magic.json",n);return true}catch(e){f.error(e);return false}}}return true};const e=(t,r,s,n=o,l=null)=>{r=a(r);const e=d(t,null,s,false,l);if(n(e,r)===true){return false}else{const i=g(t,r,s,l);let e=d(t,null,s,false,l);if(n===o&&typeof e==="object"){return i}return n(r,e)}};const S=(e,t,r)=>{let s=r||u.data;s=l(s);if(!!t){obj=l(s[e]);delete obj[t];s[e]=obj}else{delete s[e]}if(!!r){r=s}return s};const t=(e,t="",r=null)=>{let s={};if(r||i.isNode){s=S(e,t,r);if(!r){u.fs.writeFileSync("./magic.json",JSON.stringify(s,null,4))}else{r=s}}else{if(!t){if(i.isStorm){return $persistentStore.remove(e)}else if(i.isSurgeLike){return $persistentStore.write(null,e)}else if(i.isQuanX){return $prefs.removeValueForKey(e)}}else{if(i.isSurgeLike){s=$persistentStore.read(e)}else if(i.isQuanX){s=$prefs.valueForKey(e)}s=l(s);delete s[t];const n=JSON.stringify(s,null,4);g(e,n)}}f.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const r=(e,t=null)=>{let r=[];let s=d(e,null,null,true,t);s=l(s);if(s["magic_session"]!==true){r=[]}else{r=Object.keys(s).filter(e=>e!=="magic_session")}f.debug(`READ ALL SESSIONS [${e}] <${typeof r}>\n${JSON.stringify(r,null,4)}`);return r};return{read:d,write:g,del:t,update:e,allSessions:r,defaultValueComparator:o,convertToObject:l}} -// prettier-ignore -function MagicHttp(l,u){const t="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1";const r="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59";let f;if(l.isNode){const a=require("axios");f=a.create()}class e{constructor(e=true){this.handlers=[];this.isRequest=e}use(e,t,r){this.handlers.push({fulfilled:e,rejected:t,synchronous:r?r.synchronous:false,runWhen:r?r.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}forEach(t){this.handlers.forEach(e=>{if(e!==null){t(e)}})}}function n(e){let r={...e};if(!!r.params){if(!l.isNode){let e=Object.keys(r.params).map(e=>{const t=encodeURIComponent(e);r.url=r.url.replace(new RegExp(`${e}=[^&]*`,"ig"),"");r.url=r.url.replace(new RegExp(`${t}=[^&]*`,"ig"),"");return`${t}=${encodeURIComponent(r.params[e])}`}).join("&");if(r.url.indexOf("?")<0)r.url+="?";if(!/(&|\?)$/g.test(r.url)){r.url+="&"}r.url+=e;delete r.params;u.debug(`Params to QueryString: ${r.url}`)}}return r}const d=(e,t)=>{let r=typeof t==="object"?{headers:{},...t}:{url:t,headers:{}};if(!r.method){r["method"]=e}r=n(r);if(r["rewrite"]===true){if(l.isSurge){r.headers["X-Surge-Skip-Scripting"]=false;delete r["rewrite"]}else if(l.isQuanX){r["hints"]=false;delete r["rewrite"]}}if(l.isSurge){if(r["method"]!=="GET"&&typeof r.headers["Content-Type"]==="string"&&r.headers["Content-Type"].indexOf("application/json")>=0&&r.body instanceof Array){r.body=JSON.stringify(r.body);u.debug(`Convert Array object to String: ${r.body}`)}}else if(l.isQuanX){if(r.hasOwnProperty("body")&&typeof r["body"]!=="string")r["body"]=JSON.stringify(r["body"]);r["method"]=e}else if(l.isNode){if(e==="POST"||e==="PUT"||e==="PATCH"||e==="DELETE"){r.data=r.data||r.body}else if(e==="GET"){r.params=r.params||r.body}delete r.body}return r};const h=(t,r=null)=>{if(t){let e={...t,config:t.config||r,status:t.statusCode||t.status,body:t.body||t.data||"",headers:t.headers||t.header};if(typeof e.body==="string"){try{e.body=JSON.parse(e.body)}catch{}}delete t.data;return e}else{let e={config:r,status:null,body:"",headers:{}};return e}};const o=n=>{if(!!n){delete n["Content-Length"];let e=new Set(["Accept","Accept-CH","Accept-Charset","Accept-Features","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Origin","Access-Control-Allow-Methods","Access-Control-Allow-Headers","Access-Control-Max-Age","Access-Control-Expose-Headers","Access-Control-Request-Method","Access-Control-Request-Headers","Age","Allow","Alternates","Authorization","Cache-Control","Connection","Content-Encoding","Content-Language","ontent-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Type","Cookie","DNT","Date","ETag","Expect","Expires","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Last-Event-ID","Last-Modified","Link","Location","Max-Forwards","Negotiate","Origin","Pragma","Proxy-Authenticate","Proxy-Authorization","Range","Referer","Retry-After","Sec-Websocket-Extensions","Sec-Websocket-Key","Sec-Websocket-Origin","Sec-Websocket-Protocol","Sec-Websocket-Version","Server","Set-Cookie","Set-Cookie2","Strict-Transport-Security","TCN","TE","Trailer","Transfer-Encoding","Upgrade","User-Agent","Variant-Vary","Vary","Via","Warning","WWW-Authenticate","X-Content-Duration","X-Content-Security-Policy","X-DNSPrefetch-Control","X-Frame-Options","X-Requested-With"]);for(let r of Object.keys(n)){if(!e.has(r)){for(let t of e){let e=r.replace(new RegExp(t,"ig"),t);if(r!==e){n[e]=n[r];delete n[r];break}}}}if(!n["User-Agent"]){if(l.isNode){n["User-Agent"]=r}else{n["User-Agent"]=t}}return n}return n};const p=(t,r=null)=>{if(!!t&&t.status>=400){u.debug(`Raise exception when status code is ${t.status}`);let e={name:"RequestException",message:`Request failed with status code ${t.status}`,config:r||t.config,response:t};return e}};const s={request:new e,response:new e(false)};let y=[];let g=[];let m=true;function A(e){if(typeof e==="object"&&e["modify"]!==false){e["headers"]=o(e["headers"])}e=n(e);return e}function C(e){try{e=!!e?h(e):e;u.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body==="object"?JSON.stringify(e.body):e.body}`);const t=p(e);if(!!t){return Promise.reject(t)}return e}catch(t){u.error(t);return e}}const b=t=>{try{y=[];g=[];s.request.forEach(e=>{if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}m=m&&e.synchronous;y.unshift(e.fulfilled,e.rejected)});s.response.forEach(e=>{g.push(e.fulfilled,e.rejected)})}catch(e){u.error(`failed to register interceptors: ${e}`)}};const i=(e,n)=>{let o;const t=e.toUpperCase();n=d(t,n);if(l.isNode){o=f}else{if(l.isSurgeLike){o=s=>{return new Promise((n,o)=>{$httpClient[e.toLowerCase()](s,(t,r,e)=>{if(t){let e={name:t.name||t,message:t.message||t,stack:t.stack||t,config:s,response:h(r)};o(e)}else{r.config=s;r.body=e;n(r)}})})}}else{o=o=>{return new Promise((r,n)=>{$task.fetch(o).then(e=>{e=h(e,o);const t=p(e,o);if(t){return Promise.reject(t)}r(e)}).catch(e=>{let t={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:o,response:!!e.response?h(e.response):null};n(t)})})}}}let s;b(n);const i=[A,undefined];const a=[C,undefined];if(!m){u.debug("Interceptors are executed in asynchronous mode");let r=[o,undefined];Array.prototype.unshift.apply(r,i);Array.prototype.unshift.apply(r,y);Array.prototype.unshift.apply(r,i);r=r.concat(a);r=r.concat(g);s=Promise.resolve(n);while(r.length){try{let e=r.shift();let t=r.shift();if(!l.isNode&&n["timeout"]&&e===o){s=c(n)}else{s=s.then(e,t)}}catch(e){u.error(`request exception: ${e}`)}}return s}else{u.debug("Interceptors are executed in synchronous mode");Array.prototype.unshift.apply(y,i);y=y.concat([A,undefined]);while(y.length){let e=y.shift();let t=y.shift();try{n=e(n)}catch(e){t(e);break}}try{if(!l.isNode&&n["timeout"]){s=c(n)}else{s=o(n)}}catch(e){return Promise.reject(e)}Array.prototype.unshift.apply(g,a);while(g.length){s=s.then(g.shift(),g.shift())}return s}function c(r){try{const e=new Promise((e,t)=>{setTimeout(()=>{let e={message:`timeout of ${r["timeout"]}ms exceeded`,config:r};t(e)},r["timeout"])});return Promise.race([o(r),e])}catch(e){u.error(`Request Timeout exception: ${e}`)}}};return{request:i,interceptors:s,modifyHeaders:o,modifyResponse:h,get:e=>{return i("GET",e)},post:e=>{return i("POST",e)},put:e=>{return i("PUT",e)},patch:e=>{return i("PATCH",e)},delete:e=>{return i("DELETE",e)},head:e=>{return i("HEAD",e)},options:e=>{return i("OPTIONS",e)}}} -// prettier-ignore +function MagicHttp(c,l){const e="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1";const t="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59";let r;if(c.isNode){const S=require("axios");r=S.create()}class s{constructor(e=true){this.handlers=[];this.isRequest=e}use(e,t,r){this.handlers.push({fulfilled:e,rejected:t,synchronous:r?r.synchronous:false,runWhen:r?r.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}forEach(t){this.handlers.forEach(e=>{if(e!==null){t(e)}})}}function n(e){let r={...e};if(!!r.params){if(!c.isNode){let e=Object.keys(r.params).map(e=>{const t=encodeURIComponent(e);r.url=r.url.replace(new RegExp(`${e}=[^&]*`,"ig"),"");r.url=r.url.replace(new RegExp(`${t}=[^&]*`,"ig"),"");return`${t}=${encodeURIComponent(r.params[e])}`}).join("&");if(r.url.indexOf("?")<0)r.url+="?";if(!/(&|\?)$/g.test(r.url)){r.url+="&"}r.url+=e;delete r.params;l.debug(`Params to QueryString: ${r.url}`)}}return r}const d=(e,t)=>{let r=typeof t==="object"?{headers:{},...t}:{url:t,headers:{}};if(!r.method){r["method"]=e}r=n(r);if(r["rewrite"]===true){if(c.isSurge){r.headers["X-Surge-Skip-Scripting"]=false;delete r["rewrite"]}else if(c.isQuanX){r["hints"]=false;delete r["rewrite"]}}if(c.isSurge){if(r["method"]!=="GET"&&r.headers["Content-Type"].indexOf("application/json")>=0&&r.body instanceof Array){r.body=JSON.stringify(r.body);l.debug(`Convert Array object to String: ${r.body}`)}}else if(c.isQuanX){if(r.hasOwnProperty("body")&&typeof r["body"]!=="string")r["body"]=JSON.stringify(r["body"]);r["method"]=e}else if(c.isNode){if(e==="POST"||e==="PUT"||e==="PATCH"||e==="DELETE"){r.data=r.data||r.body}else if(e==="GET"){r.params=r.params||r.body}delete r.body}return r};const f=(t,r=null)=>{if(t){let e={...t,config:t.config||r,status:t.statusCode||t.status,body:t.body||t.data,headers:t.headers||t.header};if(typeof e.body==="string"){try{e.body=JSON.parse(e.body)}catch{}}delete t.data;return e}else{return t}};const o=r=>{return Object.keys(r).reduce((e,t)=>{e[t.toLowerCase()]=r[t];return e},{})};const i=s=>{return Object.keys(s).reduce((e,t)=>{const r=t.split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("-");e[r]=s[t];return e},{})};const h=(t,r=null)=>{if(!!t&&t.status>=400){l.debug(`Raise exception when status code is ${t.status}`);let e={name:"RequestException",message:`Request failed with status code ${t.status}`,config:r||t.config,response:t};return e}};const a={request:new s,response:new s(false)};let p=[];let y=[];let g=true;function m(e){e=n(e);l.debug(`HTTP ${e["method"].toUpperCase()}:\n${JSON.stringify(e)}`);return e}function b(e){try{e=!!e?f(e):e;l.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body==="object"?JSON.stringify(e.body):e.body}`);const t=h(e);if(!!t){return Promise.reject(t)}return e}catch(t){l.error(t);return e}}const T=t=>{try{p=[];y=[];a.request.forEach(e=>{if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}g=g&&e.synchronous;p.unshift(e.fulfilled,e.rejected)});a.response.forEach(e=>{y.push(e.fulfilled,e.rejected)})}catch(e){l.error(`Failed to register interceptors: ${e}.`)}};const u=(e,s)=>{let n;const t=e.toUpperCase();s=d(t,s);if(c.isNode){n=r}else{if(c.isSurgeLike){n=o=>{return new Promise((s,n)=>{$httpClient[e.toLowerCase()](o,(t,r,e)=>{if(t){let e={name:t.name||t,message:t.message||t,stack:t.stack||t,config:o,response:f(r)};n(e)}else{r.config=o;r.body=e;s(r)}})})}}else{n=n=>{return new Promise((r,s)=>{$task.fetch(n).then(e=>{e=f(e,n);const t=h(e,n);if(t){return Promise.reject(t)}r(e)}).catch(e=>{let t={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:n,response:!!e.response?f(e.response):null};s(t)})})}}}let o;T(s);const i=[m,undefined];const a=[b,undefined];if(!g){l.debug("Interceptors are executed in asynchronous mode.");let r=[n,undefined];Array.prototype.unshift.apply(r,i);Array.prototype.unshift.apply(r,p);r=r.concat(a);r=r.concat(y);o=Promise.resolve(s);while(r.length){try{let e=r.shift();let t=r.shift();if(!c.isNode&&s["timeout"]&&e===n){o=u(s)}else{o=o.then(e,t)}}catch(e){l.error(`request exception: ${e}`)}}return o}else{l.debug("Interceptors are executed in synchronous mode.");Array.prototype.unshift.apply(p,i);p=p.concat([m,undefined]);while(p.length){let e=p.shift();let t=p.shift();try{s=e(s)}catch(e){t(e);break}}try{if(!c.isNode&&s["timeout"]){o=u(s)}else{o=n(s)}}catch(e){return Promise.reject(e)}Array.prototype.unshift.apply(y,a);while(y.length){o=o.then(y.shift(),y.shift())}return o}function u(r){try{const e=new Promise((e,t)=>{setTimeout(()=>{let e={message:`timeout of ${r["timeout"]}ms exceeded.`,config:r};t(e)},r["timeout"])});return Promise.race([n(r),e])}catch(e){l.error(`Request Timeout exception: ${e}.`)}}};return{request:u,interceptors:a,convertHeadersToLowerCase:o,convertHeadersToCamelCase:i,modifyResponse:f,get:e=>{return u("GET",e)},post:e=>{return u("POST",e)},put:e=>{return u("PUT",e)},patch:e=>{return u("PATCH",e)},delete:e=>{return u("DELETE",e)},head:e=>{return u("HEAD",e)},options:e=>{return u("OPTIONS",e)}}} +function MagicData(i,u){let f={fs:undefined,data:{}};if(i.isNode){f.fs=require("fs");try{f.fs.accessSync("./magic.json",f.fs.constants.R_OK|f.fs.constants.W_OK)}catch(e){f.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}f.data=require("./magic.json")}const o=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const a=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const c=(e,t,s,n)=>{if(s){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[s]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(n===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=a(e);return e};const l=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const s=typeof e;if(s!=="object"||e instanceof Array||s==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const y=(e,t=null,s="",n=false,r=null)=>{let l=r||f.data;if(!!l&&typeof l[e]!=="undefined"&&l[e]!==null){val=l[e]}else{val=!!s?{}:null}val=c(val,t,s,n);return val};const d=(e,t=null,s="",n=false,r=null)=>{let l="";if(r||i.isNode){l=y(e,t,s,n,r)}else{if(i.isSurgeLike){l=$persistentStore.read(e)}else if(i.isQuanX){l=$prefs.valueForKey(e)}l=c(l,t,s,n)}u.debug(`READ DATA [${e}]${!!s?`[${s}]`:""} <${typeof l}>\n${JSON.stringify(l)}`);return l};const p=(t,s,n="",e=null)=>{let r=e||f.data;r=l(r);if(!!n){let e=l(r[t]);e["magic_session"]=true;e[n]=s;r[t]=e}else{r[t]=s}if(e!==null){e=r}return r};const S=(e,t,s="",n=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!i.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let r="";if(n||i.isNode){r=p(e,t,s,n)}else{if(!s){r=t}else{if(i.isSurgeLike){r=!!$persistentStore.read(e)?$persistentStore.read(e):r}else if(i.isQuanX){r=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):r}r=l(r);r["magic_session"]=true;r[s]=t}}if(!!r&&typeof r==="object"){r=JSON.stringify(r,null,4)}u.debug(`WRITE DATA [${e}]${s?`[${s}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!n){if(i.isSurgeLike){return $persistentStore.write(r,e)}else if(i.isQuanX){return $prefs.setValueForKey(r,e)}else if(i.isNode){try{f.fs.writeFileSync("./magic.json",r);return true}catch(e){u.error(e);return false}}}return true};const e=(t,s,n,r=o,l=null)=>{s=a(s);const e=d(t,null,n,false,l);if(r(e,s)===true){return false}else{const i=S(t,s,n,l);let e=d(t,null,n,false,l);if(r===o&&typeof e==="object"){return i}return r(s,e)}};const g=(e,t,s)=>{let n=s||f.data;n=l(n);if(!!t){obj=l(n[e]);delete obj[t];n[e]=obj}else{delete n[e]}if(!!s){s=n}return n};const t=(e,t="",s=null)=>{let n={};if(s||i.isNode){n=g(e,t,s);if(!s){f.fs.writeFileSync("./magic.json",JSON.stringify(n,null,4))}else{s=n}}else{if(!t){if(i.isStorm){return $persistentStore.remove(e)}else if(i.isSurgeLike){return $persistentStore.write(null,e)}else if(i.isQuanX){return $prefs.removeValueForKey(e)}}else{if(i.isSurgeLike){n=$persistentStore.read(e)}else if(i.isQuanX){n=$prefs.valueForKey(e)}n=l(n);delete n[t];const r=JSON.stringify(n,null,4);S(e,r)}}u.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const s=(e,t=null)=>{let s=[];let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]!==true){s=[]}else{s=Object.keys(n).filter(e=>e!=="magic_session")}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};const n=(e,t=null)=>{let s={};let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]===true){s={...n};delete s["magic_session"]}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};return{read:d,write:S,del:t,update:e,allSessions:n,allSessionNames:s,defaultValueComparator:o,convertToObject:l}} function MagicNotification(r,f,l){let s=null;let u=null;const c=typeof MagicHttp==="function"?MagicHttp(f,l):undefined;const e=t=>{try{let e=t.replace(/\/+$/g,"");s=`${/^https?:\/\/([^/]*)/.exec(e)[0]}/push`;u=/\/([^\/]+)\/?$/.exec(e)[1]}catch(e){l.error(`Bark url error: ${e}.`)}};function t(e=r,t="",i="",o=""){const n=i=>{try{let t={};if(typeof i==="string"){if(f.isLoon)t={openUrl:i};else if(f.isQuanX)t={"open-url":i};else if(f.isSurge)t={url:i}}else if(typeof i==="object"){if(f.isLoon){t["openUrl"]=!!i["open-url"]?i["open-url"]:"";t["mediaUrl"]=!!i["media-url"]?i["media-url"]:""}else if(f.isQuanX){t=!!i["open-url"]||!!i["media-url"]?i:{}}else if(f.isSurge){let e=i["open-url"]||i["openUrl"];t=e?{url:e}:{}}}return t}catch(e){l.error(`Failed to convert notification option, ${e}`)}return i};o=n(o);if(arguments.length==1){e=r;t="",i=arguments[0]}l.notify(`title:${e}\nsubTitle:${t}\nbody:${i}\noptions:${typeof o==="object"?JSON.stringify(o):o}`);if(f.isSurge){$notification.post(e,t,i,o)}else if(f.isLoon){if(!!o)$notification.post(e,t,i,o);else $notification.post(e,t,i)}else if(f.isQuanX){$notify(e,t,i,o)}if(s&&u&&typeof c!=="undefined"){p(e,t,i)}}function i(e=r,t="",i="",o=""){if(l.level==="DEBUG"){if(arguments.length==1){e=r;t="",i=arguments[0]}this.notify(e,t,i,o)}}function p(e=r,t="",i="",o=""){if(typeof c==="undefined"||typeof c.post==="undefined"){throw"Bark notification needs to import MagicHttp module."}let n={url:s,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:e,body:t?`${t}\n${i}`:i,device_key:u}};c.post(n).catch(e=>{l.error(`Bark notify error: ${e}`)})}return{post:t,debug:i,bark:p,setBark:e}} -// prettier-ignore function MagicUtils(r,h){const e=(o,i=5,l=0,a=null)=>{return(...e)=>{return new Promise((s,r)=>{function n(...t){Promise.resolve().then(()=>o.apply(this,t)).then(e=>{if(typeof a==="function"){Promise.resolve().then(()=>a(e)).then(()=>{s(e)}).catch(e=>{if(i>=1){if(l>0)setTimeout(()=>n.apply(this,t),l);else n.apply(this,t)}else{r(e)}i--})}else{s(e)}}).catch(e=>{h.error(e);if(i>=1&&l>0){setTimeout(()=>n.apply(this,t),l)}else if(i>=1){n.apply(this,t)}else{r(e)}i--})}n.apply(this,e)})}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{let s={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};if(/(y+)/.test(t))t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length));for(let e in s)if(new RegExp("("+e+")").test(t))t=t.replace(RegExp.$1,RegExp.$1.length==1?s[e]:("00"+s[e]).substr((""+s[e]).length));return t};const s=()=>{return t(new Date,"yyyy-MM-dd hh:mm:ss")};const n=()=>{return t(new Date,"yyyy-MM-dd")};const o=t=>{return new Promise(e=>setTimeout(e,t))};const i=(e,t=null)=>{if(r.isNode){const s=require("assert");if(t)s(e,t);else s(e)}else{if(e!==true){let e=`AssertionError: ${t||"The expression evaluated to a falsy value"}`;h.error(e)}}};return{retry:e,formatTime:t,now:s,today:n,sleep:o,assert:i}} -// prettier-ignore -function MagicQingLong(e,s,o){let i="";let l="";let c="";let u="";let g="";let n="";const d="magic.json";const r=3e3;const f=MagicHttp(e,o);const t=(e,n,r,t,a)=>{i=e;c=n;u=r;l=t;g=a};function a(e){i=i||s.read("magic_qlurl");n=n||s.read("magic_qltoken");return e}function p(e){if(!i){i=s.read("magic_qlurl")}if(e.url.indexOf(i)<0){e.url=`${i}${e.url}`}return{...e,timeout:r}}function m(e){e.params={...e.params,t:Date.now()};return e}function h(e){n=n||s.read("magic_qltoken");if(n){e.headers["Authorization"]=`Bearer ${n}`}return e}function y(e){c=c||s.read("magic_qlclient");if(!!c){e.url=e.url.replace("/api/","/open/")}return e}async function b(e){try{const n=e.message||e.error||JSON.stringify(e);if((n.indexOf("NSURLErrorDomain")>=0&&n.indexOf("-1012")>=0||!!e.response&&e.response.status===401)&&!!e.config&&e.config.refreshToken!==true){o.warning(`Qinglong Panel token has expired.`);await v();e.config["refreshToken"]=true;return await f.request(e.config.method,e.config)}else{return Promise.reject(e)}}catch(e){return Promise.reject(e)}}f.interceptors.request.use(a,undefined);f.interceptors.request.use(p,undefined);f.interceptors.request.use(y,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(h,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(m,undefined,{runWhen:e=>{return e.url.indexOf("open/auth/token")<0&&e.url.indexOf("t=")<0}});f.interceptors.response.use(undefined,b);async function v(){c=c||s.read("magic_qlclient");u=u||s.read("magic_qlsecrt");l=l||s.read("magic_qlname");g=g||s.read("magic_qlpwd");if(i&&c&&u){await f.get({url:`/open/auth/token`,headers:{"Content-Type":"application/json"},params:{client_id:c,client_secret:u}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}else if(i&&l&&g){await f.post({url:`/api/user/login`,headers:{"Content-Type":"application/json"},body:{username:l,password:g}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}}async function E(n,r,t=null){i=i||s.read("magic_qlurl");if(t===null){let e=await N([{name:n,value:r}]);if(!!e&&e.length===1){return e[0]}}else{f.put({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:{name:n,value:r,id:t}}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG UPDATE ENV ${n} <${typeof r}> (${t})\n${JSON.stringify(r)}`);return true}else{o.error(`Error updating environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error updating environment variable from Qinglong Panel.\n${e.message}`);return false})}}async function N(e){let n=[];await f.post({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:e}).then(e=>{if(e.body.code===200){e.body.data.forEach(e=>{o.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`);n.push(e.id)})}else{o.error(`Error adding environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error adding environment variable from Qinglong Panel.\n${e.message}`)});return n}async function w(n){return await f.delete({url:`/api/envs`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DELETE ENV IDS: ${n}`);return true}else{o.error(`Error deleting environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);return false}}).catch(e=>{o.error(`Error deleting environment variable from Qinglong Panel.\n${e.message}`)})}async function $(t=null,a="",i=0){if(i<=3){let r=[];await f.get({url:`/api/envs`,headers:{"Content-Type":"application/json"},params:{searchValue:a}}).then(e=>{if(e.body.code===200){const n=e.body.data;if(!!t){let e=[];for(const e of n){if(e.name===t){r.push(e)}}r=e}r=n}else{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;$(t,a,i)}}).catch(e=>{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;$(t,a,i)});return r}else{throw new Error("An error occurred while reading environment variable from Qinglong Panel.")}}async function O(e){let n=null;const r=await $();for(const t of r){if(t.id===e){n=t;break}}return n}async function S(n){let r=false;await f.put({url:`/api/envs/disable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DISABLED ENV IDS: ${n}`);r=true}else{o.error(`Error disabling environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error disabling environment variable from Qinglong Panel.\n${e.message}`)});return r}async function Q(n){let r=false;await f.put({url:`/api/envs/enable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG ENABLED ENV IDS: ${n}`);r=true}else{o.error(`Error enabling environment variable from Qilong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error enabling environment variable from Qilong panel.\n${e.message}`)});return r}async function q(e,n="",r=""){let t=false;await f.post({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function T(r,t="",a=0){if(a<=3){let n="";await f.get({url:`/api/scripts/${r}`,params:{path:t}}).then(e=>{if(e.body.code===200){n=e.body.data}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`);b();a+=1;T(r,t,a)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`);b();a+=1;T(r,t,a)});return n}else{throw new Error("An error occurred while reading the data from Qinglong Panel.")}}async function P(e,n="",r=""){let t=false;await f.put({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function k(e,n=""){let r=false;await f.delete({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n}}).then(e=>{if(e.body.code===200){r=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return r}async function j(e,n,r=""){let t=await T(d,"");let a=s.convertToObject(t);let i=s.write(e,n,r,a);t=JSON.stringify(a,null,4);let o=await P(d,"",t);return o&&i}async function C(e,n,r,t=s.defaultValueComparator){let a=await T(d,"");let i=s.convertToObject(a);const o=s.update(e,n,r,t,i);let l=false;if(o===true){a=JSON.stringify(i,null,4);l=await P(d,"",a)}return o&&l}async function A(e,n,r=""){let t=await T(d,"");let a=s.convertToObject(t);const i=s.read(e,n,r,false,a);return i}async function J(e,n=""){let r=await T(d,"");let t=s.convertToObject(r);const a=s.del(e,n,t);r=JSON.stringify(t,null,4);const i=await P(d,"",r);return a&&i}async function G(e){let n=await T(d,"");let r=s.convertToObject(n);const t=s.allSessions(e,r);return t}return{url:i||s.read("magic_qlurl"),init:t,getToken:v,setEnv:E,setEnvs:N,getEnv:O,getEnvs:$,delEnvs:w,disableEnvs:S,enbleEnvs:Q,addScript:q,getScript:T,editScript:P,delScript:k,write:j,read:A,del:J,update:C,allSessions:G}} \ No newline at end of file +function MagicQingLong(e,s,o){let i="";let l="";let c="";let u="";let d="";let n="";const g="magic.json";const r=3e3;const f=MagicHttp(e,o);const t=(e,n,r,t,a)=>{i=e;c=n;u=r;l=t;d=a};function a(e){i=i||s.read("magic_qlurl");n=n||s.read("magic_qltoken");return e}function p(e){if(!i){i=s.read("magic_qlurl")}if(e.url.indexOf(i)<0){e.url=`${i}${e.url}`}return{...e,timeout:r}}function y(e){e.params={...e.params,t:Date.now()};return e}function m(e){n=n||s.read("magic_qltoken");if(n){e.headers["Authorization"]=`Bearer ${n}`}return e}function h(e){c=c||s.read("magic_qlclient");if(!!c){e.url=e.url.replace("/api/","/open/")}return e}async function b(e){try{const n=e.message||e.error||JSON.stringify(e);if((n.indexOf("NSURLErrorDomain")>=0&&n.indexOf("-1012")>=0||!!e.response&&e.response.status===401)&&!!e.config&&e.config.refreshToken!==true){o.warning(`Qinglong Panel token has expired.`);await v();e.config["refreshToken"]=true;return await f.request(e.config.method,e.config)}else{return Promise.reject(e)}}catch(e){return Promise.reject(e)}}f.interceptors.request.use(a,undefined);f.interceptors.request.use(p,undefined);f.interceptors.request.use(h,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(m,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(y,undefined,{runWhen:e=>{return e.url.indexOf("open/auth/token")<0&&e.url.indexOf("t=")<0}});f.interceptors.response.use(undefined,b);async function v(){c=c||s.read("magic_qlclient");u=u||s.read("magic_qlsecrt");l=l||s.read("magic_qlname");d=d||s.read("magic_qlpwd");if(i&&c&&u){await f.get({url:`/open/auth/token`,headers:{"Content-Type":"application/json"},params:{client_id:c,client_secret:u}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}else if(i&&l&&d){await f.post({url:`/api/user/login`,headers:{"Content-Type":"application/json"},body:{username:l,password:d}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}}async function E(n,r,t=null){i=i||s.read("magic_qlurl");if(t===null){let e=await w([{name:n,value:r}]);if(!!e&&e.length===1){return e[0]}}else{f.put({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:{name:n,value:r,id:t}}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG UPDATE ENV ${n} <${typeof r}> (${t})\n${JSON.stringify(r)}`);return true}else{o.error(`Error updating environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error updating environment variable from Qinglong Panel.\n${e.message}`);return false})}}async function w(e){let n=[];await f.post({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:e}).then(e=>{if(e.body.code===200){e.body.data.forEach(e=>{o.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`);n.push(e.id)})}else{o.error(`Error adding environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error adding environment variable from Qinglong Panel.\n${e.message}`)});return n}async function N(n){return await f.delete({url:`/api/envs`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DELETE ENV IDS: ${n}`);return true}else{o.error(`Error deleting environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);return false}}).catch(e=>{o.error(`Error deleting environment variable from Qinglong Panel.\n${e.message}`)})}async function O(t=null,a="",i=0){if(i<=3){let r=[];await f.get({url:`/api/envs`,headers:{"Content-Type":"application/json"},params:{searchValue:a}}).then(e=>{if(e.body.code===200){const n=e.body.data;if(!!t){let e=[];for(const e of n){if(e.name===t){r.push(e)}}r=e}r=n}else{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;O(t,a,i)}}).catch(e=>{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;O(t,a,i)});return r}else{throw new Error("An error occurred while reading environment variable from Qinglong Panel.")}}async function S(e){let n=null;const r=await O();for(const t of r){if(t.id===e){n=t;break}}return n}async function $(n){let r=false;await f.put({url:`/api/envs/disable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DISABLED ENV IDS: ${n}`);r=true}else{o.error(`Error disabling environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error disabling environment variable from Qinglong Panel.\n${e.message}`)});return r}async function T(n){let r=false;await f.put({url:`/api/envs/enable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG ENABLED ENV IDS: ${n}`);r=true}else{o.error(`Error enabling environment variable from Qilong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error enabling environment variable from Qilong panel.\n${e.message}`)});return r}async function Q(e,n="",r=""){let t=false;await f.post({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function q(r,t="",a=0){if(a<=3){let n="";await f.get({url:`/api/scripts/${r}`,params:{path:t}}).then(e=>{if(e.body.code===200){n=e.body.data}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`);b();a+=1;q(r,t,a)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`);b();a+=1;q(r,t,a)});return n}else{throw new Error("An error occurred while reading the data from Qinglong Panel.")}}async function P(e,n="",r=""){let t=false;await f.put({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function j(e,n=""){let r=false;await f.delete({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n}}).then(e=>{if(e.body.code===200){r=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return r}async function k(e,n,r=""){let t=await q(g,"");let a=s.convertToObject(t);let i=s.write(e,n,r,a);t=JSON.stringify(a,null,4);let o=await P(g,"",t);return o&&i}async function C(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.write(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function J(e,n,r,t=s.defaultValueComparator){let a=await q(g,"");let i=s.convertToObject(a);const o=s.update(e,n,r,t,i);let l=false;if(o===true){a=JSON.stringify(i,null,4);l=await P(g,"",a)}return o&&l}async function A(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.update(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",typeof e[3]!=="undefined"?e["comparator"]:s.defaultValueComparator,r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function G(e,n,r="",t=false){let a=await q(g,"");let i=s.convertToObject(a);return s.read(e,n,r,t,i)}async function L(...n){let e=await q(g,"");let r=s.convertToObject(e);let t=[];for(let e of n){const a=s.read(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",typeof e[3]==="boolean"?e[3]:false,r);t.push(a)}return t}async function _(e,n=""){let r=await q(g,"");let t=s.convertToObject(r);const a=s.del(e,n,t);r=JSON.stringify(t,null,4);const i=await P(g,"",r);return a&&i}async function x(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.del(e[0],typeof e[1]!=="undefined"?e[1]:"",r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function D(e){let n=await q(g,"");let r=s.convertToObject(n);return s.allSessionNames(e,r)}async function W(e){let n=await q(g,"");let r=s.convertToObject(n);return s.allSessions(e,r)}return{url:i||s.read("magic_qlurl"),init:t,getToken:v,setEnv:E,setEnvs:w,getEnv:S,getEnvs:O,delEnvs:N,disableEnvs:$,enableEnvs:T,addScript:Q,getScript:q,editScript:P,delScript:j,write:k,read:G,del:_,update:J,batchWrite:C,batchRead:L,batchUpdate:A,batchDel:x,allSessions:W,allSessionNames:D}} +// @formatter:on \ No newline at end of file diff --git a/script/tieba/tieba_signin.js b/script/tieba/tieba_signin.js index bf23723d0..559c8f17e 100644 --- a/script/tieba/tieba_signin.js +++ b/script/tieba/tieba_signin.js @@ -40,9 +40,9 @@ function getTieBaList() { const obj = resp.body; if (obj.error === "success") { $.logger.info( - `获取贴吧列表成功,共关注${obj.data.like_forum.length}个贴吧` + `获取贴吧列表成功,共关注${obj.data["like_forum"].length}个贴吧` ); - resolve([obj.data.tbs, obj.data.like_forum]); + resolve([obj.data["tbs"], obj.data["like_forum"]]); } }) .catch((err) => { @@ -83,23 +83,23 @@ function tiebaSignIn(tbs, tieba) { .then((resp) => { const obj = resp.body; if ( - obj.data.errmsg === "success" && + obj.data["errmsg"] === "success" && obj.data.errno === 0 && - obj.data.uinfo.is_sign_in === 1 + obj.data["uinfo"]["is_sign_in"] === 1 ) { - msg = `[${kw}] 签到成功 排名 ${obj.data.uinfo.user_sign_rank} 积分 ${obj.data.uinfo.cont_sign_num}`; + msg = `[${kw}] 签到成功 排名 ${obj.data["uinfo"]["user_sign_rank"]} 积分 ${obj.data["uinfo"]["cont_sign_num"]}`; $.logger.info(msg); resolve(msg); } else { - if (obj.no === 2150040) { + if (obj["no"] === 2150040) { msg = `[${kw}] 签到失败,need vcode`; - } else if (obj.no === 1011) { + } else if (obj["no"] === 1011) { msg = `[${kw}] 未加入此吧或等级不够`; - } else if (obj.no === 1102) { + } else if (obj["no"] === 1102) { msg = `[${kw}] 签到过快`; - } else if (obj.no === 1101) { + } else if (obj["no"] === 1101) { msg = `[${kw}] 重复签到`; - } else if (obj.no === 1010) { + } else if (obj["no"] === 1010) { msg = `[${kw}] 目录出错`; } else { msg = `[${kw}] 签到失败`; @@ -132,8 +132,8 @@ function getUserInfo() { }, }) .then((resp) => { - if (resp.body.no === 0 && resp.body.error === "success") { - resolve(resp.body.data.user_id); + if (resp.body["no"] === 0 && resp.body.error === "success") { + resolve(resp.body.data["user_id"]); } }) .catch((err) => { @@ -144,17 +144,17 @@ function getUserInfo() { } async function multiUsersSignIn() { - const allSessionskey = $.data.allSessions(tiebaCookieKey); - if (allSessionskey.length === 0) { + const allSessionNames = $.data.allSessionNames(tiebaCookieKey); + if (allSessionNames.length === 0) { $.logger.error(`没有需要签到的Cookie,请先登录百度贴吧`); $.notification.post(`没有需要签到的Cookie,请先登录百度贴吧`); $.done(); } - $.logger.info(`本次一共需要签到 ${allSessionskey.length} 个Cookies`); - for (let [index, sessionKey] of allSessionskey.entries()) { + $.logger.info(`本次一共需要签到 ${allSessionNames.length} 个Cookies`); + for (let [index, sessionKey] of allSessionNames.entries()) { currentCookie = $.data.read(tiebaCookieKey, null, sessionKey); if (!currentCookie) { - continue; + $.logger.error(`Cookie ${sessionKey} 不存在`); } else { $.logger.info(`当前正在进行第 ${index + 1} 个Cookie签到`); let content = "🥺很遗憾,以下贴吧签到失败:"; @@ -213,7 +213,7 @@ async function multiUsersSignIn() { currentCookie = cookie; $.logger.info(`获取百度贴吧Cookies(请勿泄露):\n${cookie}`); if (!!cookie) { - const userId = await getUserInfo(); + let userId = await getUserInfo(); if (!userId) { userId = "default"; } @@ -276,15 +276,11 @@ catch(err){ * \______/ * */ -// prettier-ignore +// @formatter:off function MagicJS(e="MagicJS",t="INFO"){const i=()=>{const e=typeof $loon!=="undefined";const t=typeof $task!=="undefined";const n=typeof module!=="undefined";const i=typeof $httpClient!=="undefined"&&!e;const s=typeof $storm!=="undefined";const r=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const o=i||e||s||r;const u=typeof importModule!=="undefined";return{isLoon:e,isQuanX:t,isNode:n,isSurge:i,isStorm:s,isStash:r,isSurgeLike:o,isScriptable:u,get name(){if(e){return"Loon"}else if(t){return"QuantumultX"}else if(n){return"NodeJS"}else if(i){return"Surge"}else if(u){return"Scriptable"}else{return"unknown"}},get build(){if(i){return $environment["surge-build"]}else if(r){return $environment["stash-build"]}else if(s){return $storm.buildVersion}},get language(){if(i||r){return $environment["language"]}},get version(){if(i){return $environment["surge-version"]}else if(r){return $environment["stash-version"]}else if(s){return $storm.appVersion}else if(n){return process.version}},get system(){if(i){return $environment["system"]}else if(n){return process.platform}},get systemVersion(){if(s){return $storm.systemVersion}},get deviceName(){if(s){return $storm.deviceName}}}};const s=(n,e="INFO")=>{let i=e;const s={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const r={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const t=(e,t="INFO")=>{if(!(s[i]{i=e};return{setLevel:o,sniffer:e=>{t(e,"SNIFFER")},debug:e=>{t(e,"DEBUG")},info:e=>{t(e,"INFO")},notify:e=>{t(e,"NOTIFY")},warning:e=>{t(e,"WARNING")},error:e=>{t(e,"ERROR")},retry:e=>{t(e,"RETRY")}}};return new class{constructor(e,t){this._startTime=Date.now();this.version="3.0.0";this.scriptName=e;this.env=i();this.logger=s(e,t);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let e=this.data.read("magic_loglevel");const n=this.data.read("magic_bark_url");if(e){this.logger.setLevel(e.toUpperCase())}if(n){this.notification.setBark(n)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){if(typeof $request!=="undefined"){this.logger.sniffer(`RESPONSE:\n${JSON.stringify($request)}`);return $request}}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];this.logger.sniffer(`RESPONSE:\n${JSON.stringify($response)}`);return $response}else{return undefined}}done=(e={})=>{this._endTime=Date.now();let t=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${t} S.`);if(typeof $done!=="undefined"){$done(e)}}}(e,t)} -// prettier-ignore -function MagicData(i,f){let u={fs:undefined,data:{}};if(i.isNode){u.fs=require("fs");try{u.fs.accessSync("./magic.json",u.fs.constants.R_OK|u.fs.constants.W_OK)}catch(e){u.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}u.data=require("./magic.json")}const o=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const a=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const c=(e,t,r,s)=>{if(r){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[r]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(s===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=a(e);return e};const l=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const r=typeof e;if(r!=="object"||e instanceof Array||r==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const y=(e,t=null,r="",s=false,n=null)=>{let l=n||u.data;if(!!l&&typeof l[e]!=="undefined"&&l[e]!==null){val=l[e]}else{val=!!r?{}:null}val=c(val,t,r,s);return val};const d=(e,t=null,r="",s=false,n=null)=>{let l="";if(n||i.isNode){l=y(e,t,r,s,n)}else{if(i.isSurgeLike){l=$persistentStore.read(e)}else if(i.isQuanX){l=$prefs.valueForKey(e)}l=c(l,t,r,s)}f.debug(`READ DATA [${e}]${!!r?`[${r}]`:""} <${typeof l}>\n${JSON.stringify(l)}`);return l};const p=(t,r,s="",e=null)=>{let n=e||u.data;n=l(n);if(!!s){let e=l(n[t]);e["magic_session"]=true;e[s]=r;n[t]=e}else{n[t]=r}if(e!==null){e=n}return n};const g=(e,t,r="",s=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!i.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let n="";if(s||i.isNode){n=p(e,t,r,s)}else{if(!r){n=t}else{if(i.isSurgeLike){n=!!$persistentStore.read(e)?$persistentStore.read(e):n}else if(i.isQuanX){n=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):n}n=l(n);n["magic_session"]=true;n[r]=t}}if(!!n&&typeof n==="object"){n=JSON.stringify(n,null,4)}f.debug(`WRITE DATA [${e}]${r?`[${r}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!s){if(i.isSurgeLike){return $persistentStore.write(n,e)}else if(i.isQuanX){return $prefs.setValueForKey(n,e)}else if(i.isNode){try{u.fs.writeFileSync("./magic.json",n);return true}catch(e){f.error(e);return false}}}return true};const e=(t,r,s,n=o,l=null)=>{r=a(r);const e=d(t,null,s,false,l);if(n(e,r)===true){return false}else{const i=g(t,r,s,l);let e=d(t,null,s,false,l);if(n===o&&typeof e==="object"){return i}return n(r,e)}};const S=(e,t,r)=>{let s=r||u.data;s=l(s);if(!!t){obj=l(s[e]);delete obj[t];s[e]=obj}else{delete s[e]}if(!!r){r=s}return s};const t=(e,t="",r=null)=>{let s={};if(r||i.isNode){s=S(e,t,r);if(!r){u.fs.writeFileSync("./magic.json",JSON.stringify(s,null,4))}else{r=s}}else{if(!t){if(i.isStorm){return $persistentStore.remove(e)}else if(i.isSurgeLike){return $persistentStore.write(null,e)}else if(i.isQuanX){return $prefs.removeValueForKey(e)}}else{if(i.isSurgeLike){s=$persistentStore.read(e)}else if(i.isQuanX){s=$prefs.valueForKey(e)}s=l(s);delete s[t];const n=JSON.stringify(s,null,4);g(e,n)}}f.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const r=(e,t=null)=>{let r=[];let s=d(e,null,null,true,t);s=l(s);if(s["magic_session"]!==true){r=[]}else{r=Object.keys(s).filter(e=>e!=="magic_session")}f.debug(`READ ALL SESSIONS [${e}] <${typeof r}>\n${JSON.stringify(r,null,4)}`);return r};return{read:d,write:g,del:t,update:e,allSessions:r,defaultValueComparator:o,convertToObject:l}} -// prettier-ignore -function MagicHttp(l,u){const t="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1";const r="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59";let f;if(l.isNode){const a=require("axios");f=a.create()}class e{constructor(e=true){this.handlers=[];this.isRequest=e}use(e,t,r){this.handlers.push({fulfilled:e,rejected:t,synchronous:r?r.synchronous:false,runWhen:r?r.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}forEach(t){this.handlers.forEach(e=>{if(e!==null){t(e)}})}}function n(e){let r={...e};if(!!r.params){if(!l.isNode){let e=Object.keys(r.params).map(e=>{const t=encodeURIComponent(e);r.url=r.url.replace(new RegExp(`${e}=[^&]*`,"ig"),"");r.url=r.url.replace(new RegExp(`${t}=[^&]*`,"ig"),"");return`${t}=${encodeURIComponent(r.params[e])}`}).join("&");if(r.url.indexOf("?")<0)r.url+="?";if(!/(&|\?)$/g.test(r.url)){r.url+="&"}r.url+=e;delete r.params;u.debug(`Params to QueryString: ${r.url}`)}}return r}const d=(e,t)=>{let r=typeof t==="object"?{headers:{},...t}:{url:t,headers:{}};if(!r.method){r["method"]=e}r=n(r);if(r["rewrite"]===true){if(l.isSurge){r.headers["X-Surge-Skip-Scripting"]=false;delete r["rewrite"]}else if(l.isQuanX){r["hints"]=false;delete r["rewrite"]}}if(l.isSurge){if(r["method"]!=="GET"&&typeof r.headers["Content-Type"]==="string"&&r.headers["Content-Type"].indexOf("application/json")>=0&&r.body instanceof Array){r.body=JSON.stringify(r.body);u.debug(`Convert Array object to String: ${r.body}`)}}else if(l.isQuanX){if(r.hasOwnProperty("body")&&typeof r["body"]!=="string")r["body"]=JSON.stringify(r["body"]);r["method"]=e}else if(l.isNode){if(e==="POST"||e==="PUT"||e==="PATCH"||e==="DELETE"){r.data=r.data||r.body}else if(e==="GET"){r.params=r.params||r.body}delete r.body}return r};const h=(t,r=null)=>{if(t){let e={...t,config:t.config||r,status:t.statusCode||t.status,body:t.body||t.data||"",headers:t.headers||t.header};if(typeof e.body==="string"){try{e.body=JSON.parse(e.body)}catch{}}delete t.data;return e}else{let e={config:r,status:null,body:"",headers:{}};return e}};const o=n=>{if(!!n){delete n["Content-Length"];let e=new Set(["Accept","Accept-CH","Accept-Charset","Accept-Features","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Origin","Access-Control-Allow-Methods","Access-Control-Allow-Headers","Access-Control-Max-Age","Access-Control-Expose-Headers","Access-Control-Request-Method","Access-Control-Request-Headers","Age","Allow","Alternates","Authorization","Cache-Control","Connection","Content-Encoding","Content-Language","ontent-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Type","Cookie","DNT","Date","ETag","Expect","Expires","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Last-Event-ID","Last-Modified","Link","Location","Max-Forwards","Negotiate","Origin","Pragma","Proxy-Authenticate","Proxy-Authorization","Range","Referer","Retry-After","Sec-Websocket-Extensions","Sec-Websocket-Key","Sec-Websocket-Origin","Sec-Websocket-Protocol","Sec-Websocket-Version","Server","Set-Cookie","Set-Cookie2","Strict-Transport-Security","TCN","TE","Trailer","Transfer-Encoding","Upgrade","User-Agent","Variant-Vary","Vary","Via","Warning","WWW-Authenticate","X-Content-Duration","X-Content-Security-Policy","X-DNSPrefetch-Control","X-Frame-Options","X-Requested-With"]);for(let r of Object.keys(n)){if(!e.has(r)){for(let t of e){let e=r.replace(new RegExp(t,"ig"),t);if(r!==e){n[e]=n[r];delete n[r];break}}}}if(!n["User-Agent"]){if(l.isNode){n["User-Agent"]=r}else{n["User-Agent"]=t}}return n}return n};const p=(t,r=null)=>{if(!!t&&t.status>=400){u.debug(`Raise exception when status code is ${t.status}`);let e={name:"RequestException",message:`Request failed with status code ${t.status}`,config:r||t.config,response:t};return e}};const s={request:new e,response:new e(false)};let y=[];let g=[];let m=true;function A(e){if(typeof e==="object"&&e["modify"]!==false){e["headers"]=o(e["headers"])}e=n(e);return e}function C(e){try{e=!!e?h(e):e;u.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body==="object"?JSON.stringify(e.body):e.body}`);const t=p(e);if(!!t){return Promise.reject(t)}return e}catch(t){u.error(t);return e}}const b=t=>{try{y=[];g=[];s.request.forEach(e=>{if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}m=m&&e.synchronous;y.unshift(e.fulfilled,e.rejected)});s.response.forEach(e=>{g.push(e.fulfilled,e.rejected)})}catch(e){u.error(`failed to register interceptors: ${e}`)}};const i=(e,n)=>{let o;const t=e.toUpperCase();n=d(t,n);if(l.isNode){o=f}else{if(l.isSurgeLike){o=s=>{return new Promise((n,o)=>{$httpClient[e.toLowerCase()](s,(t,r,e)=>{if(t){let e={name:t.name||t,message:t.message||t,stack:t.stack||t,config:s,response:h(r)};o(e)}else{r.config=s;r.body=e;n(r)}})})}}else{o=o=>{return new Promise((r,n)=>{$task.fetch(o).then(e=>{e=h(e,o);const t=p(e,o);if(t){return Promise.reject(t)}r(e)}).catch(e=>{let t={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:o,response:!!e.response?h(e.response):null};n(t)})})}}}let s;b(n);const i=[A,undefined];const a=[C,undefined];if(!m){u.debug("Interceptors are executed in asynchronous mode");let r=[o,undefined];Array.prototype.unshift.apply(r,i);Array.prototype.unshift.apply(r,y);Array.prototype.unshift.apply(r,i);r=r.concat(a);r=r.concat(g);s=Promise.resolve(n);while(r.length){try{let e=r.shift();let t=r.shift();if(!l.isNode&&n["timeout"]&&e===o){s=c(n)}else{s=s.then(e,t)}}catch(e){u.error(`request exception: ${e}`)}}return s}else{u.debug("Interceptors are executed in synchronous mode");Array.prototype.unshift.apply(y,i);y=y.concat([A,undefined]);while(y.length){let e=y.shift();let t=y.shift();try{n=e(n)}catch(e){t(e);break}}try{if(!l.isNode&&n["timeout"]){s=c(n)}else{s=o(n)}}catch(e){return Promise.reject(e)}Array.prototype.unshift.apply(g,a);while(g.length){s=s.then(g.shift(),g.shift())}return s}function c(r){try{const e=new Promise((e,t)=>{setTimeout(()=>{let e={message:`timeout of ${r["timeout"]}ms exceeded`,config:r};t(e)},r["timeout"])});return Promise.race([o(r),e])}catch(e){u.error(`Request Timeout exception: ${e}`)}}};return{request:i,interceptors:s,modifyHeaders:o,modifyResponse:h,get:e=>{return i("GET",e)},post:e=>{return i("POST",e)},put:e=>{return i("PUT",e)},patch:e=>{return i("PATCH",e)},delete:e=>{return i("DELETE",e)},head:e=>{return i("HEAD",e)},options:e=>{return i("OPTIONS",e)}}} -// prettier-ignore +function MagicHttp(c,l){const e="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1";const t="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59";let r;if(c.isNode){const S=require("axios");r=S.create()}class s{constructor(e=true){this.handlers=[];this.isRequest=e}use(e,t,r){this.handlers.push({fulfilled:e,rejected:t,synchronous:r?r.synchronous:false,runWhen:r?r.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}forEach(t){this.handlers.forEach(e=>{if(e!==null){t(e)}})}}function n(e){let r={...e};if(!!r.params){if(!c.isNode){let e=Object.keys(r.params).map(e=>{const t=encodeURIComponent(e);r.url=r.url.replace(new RegExp(`${e}=[^&]*`,"ig"),"");r.url=r.url.replace(new RegExp(`${t}=[^&]*`,"ig"),"");return`${t}=${encodeURIComponent(r.params[e])}`}).join("&");if(r.url.indexOf("?")<0)r.url+="?";if(!/(&|\?)$/g.test(r.url)){r.url+="&"}r.url+=e;delete r.params;l.debug(`Params to QueryString: ${r.url}`)}}return r}const d=(e,t)=>{let r=typeof t==="object"?{headers:{},...t}:{url:t,headers:{}};if(!r.method){r["method"]=e}r=n(r);if(r["rewrite"]===true){if(c.isSurge){r.headers["X-Surge-Skip-Scripting"]=false;delete r["rewrite"]}else if(c.isQuanX){r["hints"]=false;delete r["rewrite"]}}if(c.isSurge){if(r["method"]!=="GET"&&r.headers["Content-Type"].indexOf("application/json")>=0&&r.body instanceof Array){r.body=JSON.stringify(r.body);l.debug(`Convert Array object to String: ${r.body}`)}}else if(c.isQuanX){if(r.hasOwnProperty("body")&&typeof r["body"]!=="string")r["body"]=JSON.stringify(r["body"]);r["method"]=e}else if(c.isNode){if(e==="POST"||e==="PUT"||e==="PATCH"||e==="DELETE"){r.data=r.data||r.body}else if(e==="GET"){r.params=r.params||r.body}delete r.body}return r};const f=(t,r=null)=>{if(t){let e={...t,config:t.config||r,status:t.statusCode||t.status,body:t.body||t.data,headers:t.headers||t.header};if(typeof e.body==="string"){try{e.body=JSON.parse(e.body)}catch{}}delete t.data;return e}else{return t}};const o=r=>{return Object.keys(r).reduce((e,t)=>{e[t.toLowerCase()]=r[t];return e},{})};const i=s=>{return Object.keys(s).reduce((e,t)=>{const r=t.split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("-");e[r]=s[t];return e},{})};const h=(t,r=null)=>{if(!!t&&t.status>=400){l.debug(`Raise exception when status code is ${t.status}`);let e={name:"RequestException",message:`Request failed with status code ${t.status}`,config:r||t.config,response:t};return e}};const a={request:new s,response:new s(false)};let p=[];let y=[];let g=true;function m(e){e=n(e);l.debug(`HTTP ${e["method"].toUpperCase()}:\n${JSON.stringify(e)}`);return e}function b(e){try{e=!!e?f(e):e;l.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body==="object"?JSON.stringify(e.body):e.body}`);const t=h(e);if(!!t){return Promise.reject(t)}return e}catch(t){l.error(t);return e}}const T=t=>{try{p=[];y=[];a.request.forEach(e=>{if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}g=g&&e.synchronous;p.unshift(e.fulfilled,e.rejected)});a.response.forEach(e=>{y.push(e.fulfilled,e.rejected)})}catch(e){l.error(`Failed to register interceptors: ${e}.`)}};const u=(e,s)=>{let n;const t=e.toUpperCase();s=d(t,s);if(c.isNode){n=r}else{if(c.isSurgeLike){n=o=>{return new Promise((s,n)=>{$httpClient[e.toLowerCase()](o,(t,r,e)=>{if(t){let e={name:t.name||t,message:t.message||t,stack:t.stack||t,config:o,response:f(r)};n(e)}else{r.config=o;r.body=e;s(r)}})})}}else{n=n=>{return new Promise((r,s)=>{$task.fetch(n).then(e=>{e=f(e,n);const t=h(e,n);if(t){return Promise.reject(t)}r(e)}).catch(e=>{let t={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:n,response:!!e.response?f(e.response):null};s(t)})})}}}let o;T(s);const i=[m,undefined];const a=[b,undefined];if(!g){l.debug("Interceptors are executed in asynchronous mode.");let r=[n,undefined];Array.prototype.unshift.apply(r,i);Array.prototype.unshift.apply(r,p);r=r.concat(a);r=r.concat(y);o=Promise.resolve(s);while(r.length){try{let e=r.shift();let t=r.shift();if(!c.isNode&&s["timeout"]&&e===n){o=u(s)}else{o=o.then(e,t)}}catch(e){l.error(`request exception: ${e}`)}}return o}else{l.debug("Interceptors are executed in synchronous mode.");Array.prototype.unshift.apply(p,i);p=p.concat([m,undefined]);while(p.length){let e=p.shift();let t=p.shift();try{s=e(s)}catch(e){t(e);break}}try{if(!c.isNode&&s["timeout"]){o=u(s)}else{o=n(s)}}catch(e){return Promise.reject(e)}Array.prototype.unshift.apply(y,a);while(y.length){o=o.then(y.shift(),y.shift())}return o}function u(r){try{const e=new Promise((e,t)=>{setTimeout(()=>{let e={message:`timeout of ${r["timeout"]}ms exceeded.`,config:r};t(e)},r["timeout"])});return Promise.race([n(r),e])}catch(e){l.error(`Request Timeout exception: ${e}.`)}}};return{request:u,interceptors:a,convertHeadersToLowerCase:o,convertHeadersToCamelCase:i,modifyResponse:f,get:e=>{return u("GET",e)},post:e=>{return u("POST",e)},put:e=>{return u("PUT",e)},patch:e=>{return u("PATCH",e)},delete:e=>{return u("DELETE",e)},head:e=>{return u("HEAD",e)},options:e=>{return u("OPTIONS",e)}}} +function MagicData(i,u){let f={fs:undefined,data:{}};if(i.isNode){f.fs=require("fs");try{f.fs.accessSync("./magic.json",f.fs.constants.R_OK|f.fs.constants.W_OK)}catch(e){f.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}f.data=require("./magic.json")}const o=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const a=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const c=(e,t,s,n)=>{if(s){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[s]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(n===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=a(e);return e};const l=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const s=typeof e;if(s!=="object"||e instanceof Array||s==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const y=(e,t=null,s="",n=false,r=null)=>{let l=r||f.data;if(!!l&&typeof l[e]!=="undefined"&&l[e]!==null){val=l[e]}else{val=!!s?{}:null}val=c(val,t,s,n);return val};const d=(e,t=null,s="",n=false,r=null)=>{let l="";if(r||i.isNode){l=y(e,t,s,n,r)}else{if(i.isSurgeLike){l=$persistentStore.read(e)}else if(i.isQuanX){l=$prefs.valueForKey(e)}l=c(l,t,s,n)}u.debug(`READ DATA [${e}]${!!s?`[${s}]`:""} <${typeof l}>\n${JSON.stringify(l)}`);return l};const p=(t,s,n="",e=null)=>{let r=e||f.data;r=l(r);if(!!n){let e=l(r[t]);e["magic_session"]=true;e[n]=s;r[t]=e}else{r[t]=s}if(e!==null){e=r}return r};const S=(e,t,s="",n=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!i.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let r="";if(n||i.isNode){r=p(e,t,s,n)}else{if(!s){r=t}else{if(i.isSurgeLike){r=!!$persistentStore.read(e)?$persistentStore.read(e):r}else if(i.isQuanX){r=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):r}r=l(r);r["magic_session"]=true;r[s]=t}}if(!!r&&typeof r==="object"){r=JSON.stringify(r,null,4)}u.debug(`WRITE DATA [${e}]${s?`[${s}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!n){if(i.isSurgeLike){return $persistentStore.write(r,e)}else if(i.isQuanX){return $prefs.setValueForKey(r,e)}else if(i.isNode){try{f.fs.writeFileSync("./magic.json",r);return true}catch(e){u.error(e);return false}}}return true};const e=(t,s,n,r=o,l=null)=>{s=a(s);const e=d(t,null,n,false,l);if(r(e,s)===true){return false}else{const i=S(t,s,n,l);let e=d(t,null,n,false,l);if(r===o&&typeof e==="object"){return i}return r(s,e)}};const g=(e,t,s)=>{let n=s||f.data;n=l(n);if(!!t){obj=l(n[e]);delete obj[t];n[e]=obj}else{delete n[e]}if(!!s){s=n}return n};const t=(e,t="",s=null)=>{let n={};if(s||i.isNode){n=g(e,t,s);if(!s){f.fs.writeFileSync("./magic.json",JSON.stringify(n,null,4))}else{s=n}}else{if(!t){if(i.isStorm){return $persistentStore.remove(e)}else if(i.isSurgeLike){return $persistentStore.write(null,e)}else if(i.isQuanX){return $prefs.removeValueForKey(e)}}else{if(i.isSurgeLike){n=$persistentStore.read(e)}else if(i.isQuanX){n=$prefs.valueForKey(e)}n=l(n);delete n[t];const r=JSON.stringify(n,null,4);S(e,r)}}u.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const s=(e,t=null)=>{let s=[];let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]!==true){s=[]}else{s=Object.keys(n).filter(e=>e!=="magic_session")}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};const n=(e,t=null)=>{let s={};let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]===true){s={...n};delete s["magic_session"]}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};return{read:d,write:S,del:t,update:e,allSessions:n,allSessionNames:s,defaultValueComparator:o,convertToObject:l}} function MagicNotification(r,f,l){let s=null;let u=null;const c=typeof MagicHttp==="function"?MagicHttp(f,l):undefined;const e=t=>{try{let e=t.replace(/\/+$/g,"");s=`${/^https?:\/\/([^/]*)/.exec(e)[0]}/push`;u=/\/([^\/]+)\/?$/.exec(e)[1]}catch(e){l.error(`Bark url error: ${e}.`)}};function t(e=r,t="",i="",o=""){const n=i=>{try{let t={};if(typeof i==="string"){if(f.isLoon)t={openUrl:i};else if(f.isQuanX)t={"open-url":i};else if(f.isSurge)t={url:i}}else if(typeof i==="object"){if(f.isLoon){t["openUrl"]=!!i["open-url"]?i["open-url"]:"";t["mediaUrl"]=!!i["media-url"]?i["media-url"]:""}else if(f.isQuanX){t=!!i["open-url"]||!!i["media-url"]?i:{}}else if(f.isSurge){let e=i["open-url"]||i["openUrl"];t=e?{url:e}:{}}}return t}catch(e){l.error(`Failed to convert notification option, ${e}`)}return i};o=n(o);if(arguments.length==1){e=r;t="",i=arguments[0]}l.notify(`title:${e}\nsubTitle:${t}\nbody:${i}\noptions:${typeof o==="object"?JSON.stringify(o):o}`);if(f.isSurge){$notification.post(e,t,i,o)}else if(f.isLoon){if(!!o)$notification.post(e,t,i,o);else $notification.post(e,t,i)}else if(f.isQuanX){$notify(e,t,i,o)}if(s&&u&&typeof c!=="undefined"){p(e,t,i)}}function i(e=r,t="",i="",o=""){if(l.level==="DEBUG"){if(arguments.length==1){e=r;t="",i=arguments[0]}this.notify(e,t,i,o)}}function p(e=r,t="",i="",o=""){if(typeof c==="undefined"||typeof c.post==="undefined"){throw"Bark notification needs to import MagicHttp module."}let n={url:s,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:e,body:t?`${t}\n${i}`:i,device_key:u}};c.post(n).catch(e=>{l.error(`Bark notify error: ${e}`)})}return{post:t,debug:i,bark:p,setBark:e}} -// prettier-ignore function MagicUtils(r,h){const e=(o,i=5,l=0,a=null)=>{return(...e)=>{return new Promise((s,r)=>{function n(...t){Promise.resolve().then(()=>o.apply(this,t)).then(e=>{if(typeof a==="function"){Promise.resolve().then(()=>a(e)).then(()=>{s(e)}).catch(e=>{if(i>=1){if(l>0)setTimeout(()=>n.apply(this,t),l);else n.apply(this,t)}else{r(e)}i--})}else{s(e)}}).catch(e=>{h.error(e);if(i>=1&&l>0){setTimeout(()=>n.apply(this,t),l)}else if(i>=1){n.apply(this,t)}else{r(e)}i--})}n.apply(this,e)})}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{let s={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};if(/(y+)/.test(t))t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length));for(let e in s)if(new RegExp("("+e+")").test(t))t=t.replace(RegExp.$1,RegExp.$1.length==1?s[e]:("00"+s[e]).substr((""+s[e]).length));return t};const s=()=>{return t(new Date,"yyyy-MM-dd hh:mm:ss")};const n=()=>{return t(new Date,"yyyy-MM-dd")};const o=t=>{return new Promise(e=>setTimeout(e,t))};const i=(e,t=null)=>{if(r.isNode){const s=require("assert");if(t)s(e,t);else s(e)}else{if(e!==true){let e=`AssertionError: ${t||"The expression evaluated to a falsy value"}`;h.error(e)}}};return{retry:e,formatTime:t,now:s,today:n,sleep:o,assert:i}} -// prettier-ignore -function MagicQingLong(e,s,o){let i="";let l="";let c="";let u="";let g="";let n="";const d="magic.json";const r=3e3;const f=MagicHttp(e,o);const t=(e,n,r,t,a)=>{i=e;c=n;u=r;l=t;g=a};function a(e){i=i||s.read("magic_qlurl");n=n||s.read("magic_qltoken");return e}function p(e){if(!i){i=s.read("magic_qlurl")}if(e.url.indexOf(i)<0){e.url=`${i}${e.url}`}return{...e,timeout:r}}function m(e){e.params={...e.params,t:Date.now()};return e}function h(e){n=n||s.read("magic_qltoken");if(n){e.headers["Authorization"]=`Bearer ${n}`}return e}function y(e){c=c||s.read("magic_qlclient");if(!!c){e.url=e.url.replace("/api/","/open/")}return e}async function b(e){try{const n=e.message||e.error||JSON.stringify(e);if((n.indexOf("NSURLErrorDomain")>=0&&n.indexOf("-1012")>=0||!!e.response&&e.response.status===401)&&!!e.config&&e.config.refreshToken!==true){o.warning(`Qinglong Panel token has expired.`);await v();e.config["refreshToken"]=true;return await f.request(e.config.method,e.config)}else{return Promise.reject(e)}}catch(e){return Promise.reject(e)}}f.interceptors.request.use(a,undefined);f.interceptors.request.use(p,undefined);f.interceptors.request.use(y,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(h,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(m,undefined,{runWhen:e=>{return e.url.indexOf("open/auth/token")<0&&e.url.indexOf("t=")<0}});f.interceptors.response.use(undefined,b);async function v(){c=c||s.read("magic_qlclient");u=u||s.read("magic_qlsecrt");l=l||s.read("magic_qlname");g=g||s.read("magic_qlpwd");if(i&&c&&u){await f.get({url:`/open/auth/token`,headers:{"Content-Type":"application/json"},params:{client_id:c,client_secret:u}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}else if(i&&l&&g){await f.post({url:`/api/user/login`,headers:{"Content-Type":"application/json"},body:{username:l,password:g}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}}async function E(n,r,t=null){i=i||s.read("magic_qlurl");if(t===null){let e=await N([{name:n,value:r}]);if(!!e&&e.length===1){return e[0]}}else{f.put({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:{name:n,value:r,id:t}}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG UPDATE ENV ${n} <${typeof r}> (${t})\n${JSON.stringify(r)}`);return true}else{o.error(`Error updating environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error updating environment variable from Qinglong Panel.\n${e.message}`);return false})}}async function N(e){let n=[];await f.post({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:e}).then(e=>{if(e.body.code===200){e.body.data.forEach(e=>{o.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`);n.push(e.id)})}else{o.error(`Error adding environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error adding environment variable from Qinglong Panel.\n${e.message}`)});return n}async function w(n){return await f.delete({url:`/api/envs`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DELETE ENV IDS: ${n}`);return true}else{o.error(`Error deleting environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);return false}}).catch(e=>{o.error(`Error deleting environment variable from Qinglong Panel.\n${e.message}`)})}async function $(t=null,a="",i=0){if(i<=3){let r=[];await f.get({url:`/api/envs`,headers:{"Content-Type":"application/json"},params:{searchValue:a}}).then(e=>{if(e.body.code===200){const n=e.body.data;if(!!t){let e=[];for(const e of n){if(e.name===t){r.push(e)}}r=e}r=n}else{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;$(t,a,i)}}).catch(e=>{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;$(t,a,i)});return r}else{throw new Error("An error occurred while reading environment variable from Qinglong Panel.")}}async function O(e){let n=null;const r=await $();for(const t of r){if(t.id===e){n=t;break}}return n}async function S(n){let r=false;await f.put({url:`/api/envs/disable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DISABLED ENV IDS: ${n}`);r=true}else{o.error(`Error disabling environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error disabling environment variable from Qinglong Panel.\n${e.message}`)});return r}async function Q(n){let r=false;await f.put({url:`/api/envs/enable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG ENABLED ENV IDS: ${n}`);r=true}else{o.error(`Error enabling environment variable from Qilong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error enabling environment variable from Qilong panel.\n${e.message}`)});return r}async function q(e,n="",r=""){let t=false;await f.post({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function T(r,t="",a=0){if(a<=3){let n="";await f.get({url:`/api/scripts/${r}`,params:{path:t}}).then(e=>{if(e.body.code===200){n=e.body.data}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`);b();a+=1;T(r,t,a)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`);b();a+=1;T(r,t,a)});return n}else{throw new Error("An error occurred while reading the data from Qinglong Panel.")}}async function P(e,n="",r=""){let t=false;await f.put({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function k(e,n=""){let r=false;await f.delete({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n}}).then(e=>{if(e.body.code===200){r=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return r}async function j(e,n,r=""){let t=await T(d,"");let a=s.convertToObject(t);let i=s.write(e,n,r,a);t=JSON.stringify(a,null,4);let o=await P(d,"",t);return o&&i}async function C(e,n,r,t=s.defaultValueComparator){let a=await T(d,"");let i=s.convertToObject(a);const o=s.update(e,n,r,t,i);let l=false;if(o===true){a=JSON.stringify(i,null,4);l=await P(d,"",a)}return o&&l}async function A(e,n,r=""){let t=await T(d,"");let a=s.convertToObject(t);const i=s.read(e,n,r,false,a);return i}async function J(e,n=""){let r=await T(d,"");let t=s.convertToObject(r);const a=s.del(e,n,t);r=JSON.stringify(t,null,4);const i=await P(d,"",r);return a&&i}async function G(e){let n=await T(d,"");let r=s.convertToObject(n);const t=s.allSessions(e,r);return t}return{url:i||s.read("magic_qlurl"),init:t,getToken:v,setEnv:E,setEnvs:N,getEnv:O,getEnvs:$,delEnvs:w,disableEnvs:S,enbleEnvs:Q,addScript:q,getScript:T,editScript:P,delScript:k,write:j,read:A,del:J,update:C,allSessions:G}} \ No newline at end of file +function MagicQingLong(e,s,o){let i="";let l="";let c="";let u="";let d="";let n="";const g="magic.json";const r=3e3;const f=MagicHttp(e,o);const t=(e,n,r,t,a)=>{i=e;c=n;u=r;l=t;d=a};function a(e){i=i||s.read("magic_qlurl");n=n||s.read("magic_qltoken");return e}function p(e){if(!i){i=s.read("magic_qlurl")}if(e.url.indexOf(i)<0){e.url=`${i}${e.url}`}return{...e,timeout:r}}function y(e){e.params={...e.params,t:Date.now()};return e}function m(e){n=n||s.read("magic_qltoken");if(n){e.headers["Authorization"]=`Bearer ${n}`}return e}function h(e){c=c||s.read("magic_qlclient");if(!!c){e.url=e.url.replace("/api/","/open/")}return e}async function b(e){try{const n=e.message||e.error||JSON.stringify(e);if((n.indexOf("NSURLErrorDomain")>=0&&n.indexOf("-1012")>=0||!!e.response&&e.response.status===401)&&!!e.config&&e.config.refreshToken!==true){o.warning(`Qinglong Panel token has expired.`);await v();e.config["refreshToken"]=true;return await f.request(e.config.method,e.config)}else{return Promise.reject(e)}}catch(e){return Promise.reject(e)}}f.interceptors.request.use(a,undefined);f.interceptors.request.use(p,undefined);f.interceptors.request.use(h,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(m,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});f.interceptors.request.use(y,undefined,{runWhen:e=>{return e.url.indexOf("open/auth/token")<0&&e.url.indexOf("t=")<0}});f.interceptors.response.use(undefined,b);async function v(){c=c||s.read("magic_qlclient");u=u||s.read("magic_qlsecrt");l=l||s.read("magic_qlname");d=d||s.read("magic_qlpwd");if(i&&c&&u){await f.get({url:`/open/auth/token`,headers:{"Content-Type":"application/json"},params:{client_id:c,client_secret:u}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}else if(i&&l&&d){await f.post({url:`/api/user/login`,headers:{"Content-Type":"application/json"},body:{username:l,password:d}}).then(e=>{o.info("Successfully logged in to Qinglong Panel");n=e.body.data.token;s.update("magic_qltoken",n);return n}).catch(e=>{o.error(`Error logging in to Qinglong Panel.\n${e.message}`)})}}async function E(n,r,t=null){i=i||s.read("magic_qlurl");if(t===null){let e=await w([{name:n,value:r}]);if(!!e&&e.length===1){return e[0]}}else{f.put({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:{name:n,value:r,id:t}}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG UPDATE ENV ${n} <${typeof r}> (${t})\n${JSON.stringify(r)}`);return true}else{o.error(`Error updating environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error updating environment variable from Qinglong Panel.\n${e.message}`);return false})}}async function w(e){let n=[];await f.post({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:e}).then(e=>{if(e.body.code===200){e.body.data.forEach(e=>{o.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`);n.push(e.id)})}else{o.error(`Error adding environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error adding environment variable from Qinglong Panel.\n${e.message}`)});return n}async function N(n){return await f.delete({url:`/api/envs`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DELETE ENV IDS: ${n}`);return true}else{o.error(`Error deleting environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);return false}}).catch(e=>{o.error(`Error deleting environment variable from Qinglong Panel.\n${e.message}`)})}async function O(t=null,a="",i=0){if(i<=3){let r=[];await f.get({url:`/api/envs`,headers:{"Content-Type":"application/json"},params:{searchValue:a}}).then(e=>{if(e.body.code===200){const n=e.body.data;if(!!t){let e=[];for(const e of n){if(e.name===t){r.push(e)}}r=e}r=n}else{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;O(t,a,i)}}).catch(e=>{o.error(`Error reading environment variable from Qinglong Panel.\n${JSON.stringify(e)}`);b();i+=1;O(t,a,i)});return r}else{throw new Error("An error occurred while reading environment variable from Qinglong Panel.")}}async function S(e){let n=null;const r=await O();for(const t of r){if(t.id===e){n=t;break}}return n}async function $(n){let r=false;await f.put({url:`/api/envs/disable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG DISABLED ENV IDS: ${n}`);r=true}else{o.error(`Error disabling environment variable from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error disabling environment variable from Qinglong Panel.\n${e.message}`)});return r}async function T(n){let r=false;await f.put({url:`/api/envs/enable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:n}).then(e=>{if(e.body.code===200){o.debug(`QINGLONG ENABLED ENV IDS: ${n}`);r=true}else{o.error(`Error enabling environment variable from Qilong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error enabling environment variable from Qilong panel.\n${e.message}`)});return r}async function Q(e,n="",r=""){let t=false;await f.post({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function q(r,t="",a=0){if(a<=3){let n="";await f.get({url:`/api/scripts/${r}`,params:{path:t}}).then(e=>{if(e.body.code===200){n=e.body.data}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`);b();a+=1;q(r,t,a)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`);b();a+=1;q(r,t,a)});return n}else{throw new Error("An error occurred while reading the data from Qinglong Panel.")}}async function P(e,n="",r=""){let t=false;await f.put({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n,content:r}}).then(e=>{if(e.body.code===200){t=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return t}async function j(e,n=""){let r=false;await f.delete({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:n}}).then(e=>{if(e.body.code===200){r=true}else{o.error(`Error reading data from Qinglong Panel.\n${JSON.stringify(e)}`)}}).catch(e=>{o.error(`Error reading data from Qinglong Panel.\n${e.message}`)});return r}async function k(e,n,r=""){let t=await q(g,"");let a=s.convertToObject(t);let i=s.write(e,n,r,a);t=JSON.stringify(a,null,4);let o=await P(g,"",t);return o&&i}async function C(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.write(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function J(e,n,r,t=s.defaultValueComparator){let a=await q(g,"");let i=s.convertToObject(a);const o=s.update(e,n,r,t,i);let l=false;if(o===true){a=JSON.stringify(i,null,4);l=await P(g,"",a)}return o&&l}async function A(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.update(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",typeof e[3]!=="undefined"?e["comparator"]:s.defaultValueComparator,r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function G(e,n,r="",t=false){let a=await q(g,"");let i=s.convertToObject(a);return s.read(e,n,r,t,i)}async function L(...n){let e=await q(g,"");let r=s.convertToObject(e);let t=[];for(let e of n){const a=s.read(e[0],e[1],typeof e[2]!=="undefined"?e[2]:"",typeof e[3]==="boolean"?e[3]:false,r);t.push(a)}return t}async function _(e,n=""){let r=await q(g,"");let t=s.convertToObject(r);const a=s.del(e,n,t);r=JSON.stringify(t,null,4);const i=await P(g,"",r);return a&&i}async function x(...n){let e=await q(g,"");let r=s.convertToObject(e);for(let e of n){s.del(e[0],typeof e[1]!=="undefined"?e[1]:"",r)}e=JSON.stringify(r,null,4);return await P(g,"",e)}async function D(e){let n=await q(g,"");let r=s.convertToObject(n);return s.allSessionNames(e,r)}async function W(e){let n=await q(g,"");let r=s.convertToObject(n);return s.allSessions(e,r)}return{url:i||s.read("magic_qlurl"),init:t,getToken:v,setEnv:E,setEnvs:w,getEnv:S,getEnvs:O,delEnvs:N,disableEnvs:$,enableEnvs:T,addScript:Q,getScript:q,editScript:P,delScript:j,write:k,read:G,del:_,update:J,batchWrite:C,batchRead:L,batchUpdate:A,batchDel:x,allSessions:W,allSessionNames:D}} +// @formatter:on \ No newline at end of file diff --git a/script/zheye/zheye.js b/script/zheye/zheye.js index 661a42f19..29a2b1422 100644 --- a/script/zheye/zheye.js +++ b/script/zheye/zheye.js @@ -98,7 +98,6 @@ function modifyMCloudConfig() { // 去除灰色主题 obj.data["configs"].forEach(element => { if (element["configKey"] === "feed_gray_theme") { - $.notification.debug("修改灰色主题生效时间"); element["configValue"].start_time = "1669824000"; element["configValue"].end_time = "1669824001"; element.status = false; @@ -758,22 +757,22 @@ function modifyAnswer() { // 付费内容提醒 if ((html.indexOf("查看完整内容") >= 0 || html.indexOf("查看全部章节") >= 0) && html.indexOf("paid") >= 0) { - insertText = '
哲也同学 · 本文为付费内容
'; + insertText = '
本文为付费内容
'; } // 营销推广提醒 else if (html.indexOf("ad-link-card") >= 0 || html.indexOf("xg.zhihu.com") >= 0 || html.indexOf("营销平台") >= 0) { - insertText = '
哲也同学 · 本文含有营销推广
'; + insertText = '
本文含有营销推广
'; } // 购物推广提醒 else if (html.indexOf("mcn-link-card") >= 0) { - insertText = '
哲也同学 · 本文含有购物推广
'; + insertText = '
本文含有购物推广
'; } // 彩蛋 else if (Math.floor(Math.random() * 200) === 7) { - insertText = '
哲也同学 · 本文为免费内容
'; + insertText = '
本文为免费内容
'; } if (insertText !== "") { @@ -1202,9 +1201,8 @@ function changeUserCredit(){ * \______/ * */ -// prettier-ignore -function MagicJS(scriptName="MagicJS",logLevel="INFO"){const MagicEnvironment=()=>{const isLoon=typeof $loon!=="undefined";const isQuanX=typeof $task!=="undefined";const isNode=typeof module!=="undefined";const isSurge=typeof $httpClient!=="undefined"&&!isLoon;const isStorm=typeof $storm!=="undefined";const isStash=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const isSurgeLike=isSurge||isLoon||isStorm||isStash;const isScriptable=typeof importModule!=="undefined";return{isLoon:isLoon,isQuanX:isQuanX,isNode:isNode,isSurge:isSurge,isStorm:isStorm,isStash:isStash,isSurgeLike:isSurgeLike,isScriptable:isScriptable,get name(){if(isLoon){return"Loon"}else if(isQuanX){return"QuantumultX"}else if(isNode){return"NodeJS"}else if(isSurge){return"Surge"}else if(isScriptable){return"Scriptable"}else{return"unknown"}},get build(){if(isSurge){return $environment["surge-build"]}else if(isStash){return $environment["stash-build"]}else if(isStorm){return $storm.buildVersion}},get language(){if(isSurge||isStash){return $environment["language"]}},get version(){if(isSurge){return $environment["surge-version"]}else if(isStash){return $environment["stash-version"]}else if(isStorm){return $storm.appVersion}else if(isNode){return process.version}},get system(){if(isSurge){return $environment["system"]}else if(isNode){return process.platform}},get systemVersion(){if(isStorm){return $storm.systemVersion}},get deviceName(){if(isStorm){return $storm.deviceName}}}};const MagicLogger=(scriptName,logLevel="INFO")=>{let _level=logLevel;const logLevels={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const logEmoji={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const _log=(msg,level="INFO")=>{if(!(logLevels[_level]{_level=logLevel};return{getLevel:()=>{return _level},setLevel:setLevel,sniffer:msg=>{_log(msg,"SNIFFER")},debug:msg=>{_log(msg,"DEBUG")},info:msg=>{_log(msg,"INFO")},notify:msg=>{_log(msg,"NOTIFY")},warning:msg=>{_log(msg,"WARNING")},error:msg=>{_log(msg,"ERROR")},retry:msg=>{_log(msg,"RETRY")}}};return new class{constructor(scriptName,logLevel){this._startTime=Date.now();this.version="3.0.0";this.scriptName=scriptName;this.env=MagicEnvironment();this.logger=MagicLogger(scriptName,logLevel);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger,this.http):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let magicLoglevel=this.data.read("magic_loglevel");const barkUrl=this.data.read("magic_bark_url");if(magicLoglevel){this.logger.setLevel(magicLoglevel.toUpperCase())}if(barkUrl){this.notification.setBark(barkUrl)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){return typeof $request!=="undefined"?$request:undefined}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];return $response}else{return undefined}}done=(value={})=>{this._endTime=Date.now();let span=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${span} S.`);if(typeof $done!=="undefined"){$done(value)}}}(scriptName,logLevel)} -// prettier-ignore -function MagicNotification(scriptName,env,logger,http){let _barkUrl=null;let _barkKey=null;const setBark=url=>{try{let _url=url.replace(/\/+$/g,"");_barkUrl=`${/^https?:\/\/([^/]*)/.exec(_url)[0]}/push`;_barkKey=/\/([^\/]+)\/?$/.exec(_url)[1]}catch(ex){logger.error(`Bark url error: ${ex}.`)}};function post(title=scriptName,subTitle="",body="",opts=""){const _adaptOpts=_opts=>{try{let newOpts={};if(typeof _opts==="string"){if(env.isLoon)newOpts={openUrl:_opts};else if(env.isQuanX)newOpts={"open-url":_opts};else if(env.isSurge)newOpts={url:_opts}}else if(typeof _opts==="object"){if(env.isLoon){newOpts["openUrl"]=!!_opts["open-url"]?_opts["open-url"]:"";newOpts["mediaUrl"]=!!_opts["media-url"]?_opts["media-url"]:""}else if(env.isQuanX){newOpts=!!_opts["open-url"]||!!_opts["media-url"]?_opts:{}}else if(env.isSurge){let openUrl=_opts["open-url"]||_opts["openUrl"];newOpts=openUrl?{url:openUrl}:{}}}return newOpts}catch(err){logger.error(`通知选项转换失败${err}`)}return _opts};opts=_adaptOpts(opts);if(arguments.length==1){title=scriptName;subTitle="",body=arguments[0]}logger.notify(`title:${title}\nsubTitle:${subTitle}\nbody:${body}\noptions:${typeof opts==="object"?JSON.stringify(opts):opts}`);if(env.isSurge){$notification.post(title,subTitle,body,opts)}else if(env.isLoon){if(!!opts)$notification.post(title,subTitle,body,opts);else $notification.post(title,subTitle,body)}else if(env.isQuanX){$notify(title,subTitle,body,opts)}if(_barkUrl&&_barkKey){bark(title,subTitle,body)}}function debug(title=scriptName,subTitle="",body="",opts=""){if(logger.getLevel()==="DEBUG"){if(arguments.length==1){title=scriptName;subTitle="",body=arguments[0]}this.post(title,subTitle,body,opts)}}function bark(title=scriptName,subTitle="",body="",opts=""){if(typeof http==="undefined"||typeof http.post==="undefined"){throw"Bark notification needs to import MagicHttp module."}let options={url:_barkUrl,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:title,body:subTitle?`${subTitle}\n${body}`:body,device_key:_barkKey}};http.post(options).catch(ex=>{logger.error(`Bark notify error: ${ex}`)})}return{post:post,debug:debug,bark:bark,setBark:setBark}} -// prettier-ignore -function MagicData(env,logger){let node={fs:undefined,data:{}};if(env.isNode){node.fs=require("fs");try{node.fs.accessSync("./magic.json",node.fs.constants.R_OK|node.fs.constants.W_OK)}catch(err){node.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}node.data=require("./magic.json")}const defaultValueComparator=(oldVal,newVal)=>{if(typeof newVal==="object"){return false}else{return oldVal===newVal}};const _typeConvertor=val=>{if(val==="true"){return true}else if(val==="false"){return false}else if(typeof val==="undefined"){return null}else{return val}};const _valConvertor=(val,default_,session,read_no_session)=>{if(session){try{if(typeof val==="string")val=JSON.parse(val);if(val["magic_session"]===true){val=val[session]}else{val=null}}catch{val=null}}if(typeof val==="string"&&val!=="null"){try{val=JSON.parse(val)}catch{}}if(read_no_session===false&&!!val&&val["magic_session"]===true){val=null}if((val===null||typeof val==="undefined")&&default_!==null&&typeof default_!=="undefined"){val=default_}val=_typeConvertor(val);return val};const convertToObject=obj=>{if(typeof obj==="string"){let data={};try{data=JSON.parse(obj);const type=typeof data;if(type!=="object"||data instanceof Array||type==="bool"||data===null){data={}}}catch{}return data}else if(obj instanceof Array||obj===null||typeof obj==="undefined"||obj!==obj||typeof obj==="boolean"){return{}}else{return obj}};const readForNode=(key,default_=null,session="",read_no_session=false,externalData=null)=>{let data=externalData||node.data;if(!!data&&typeof data[key]!=="undefined"&&data[key]!==null){val=data[key]}else{val=!!session?{}:null}val=_valConvertor(val,default_,session,read_no_session);return val};const read=(key,default_=null,session="",read_no_session=false,externalData=null)=>{let val="";if(externalData||env.isNode){val=readForNode(key,default_,session,read_no_session,externalData)}else{if(env.isSurgeLike){val=$persistentStore.read(key)}else if(env.isQuanX){val=$prefs.valueForKey(key)}val=_valConvertor(val,default_,session,read_no_session)}logger.debug(`READ DATA [${key}]${!!session?`[${session}]`:""} <${typeof val}>\n${JSON.stringify(val)}`);return val};const writeForNode=(key,val,session="",externalData=null)=>{let data=externalData||node.data;data=convertToObject(data);if(!!session){let obj=convertToObject(data[key]);obj["magic_session"]=true;obj[session]=val;data[key]=obj}else{data[key]=val}if(externalData!==null){externalData=data}return data};const write=(key,val,session="",externalData=null)=>{if(typeof val==="undefined"||val!==val){return false}if(!env.isNode&&(typeof val==="boolean"||typeof val==="number")){val=String(val)}let data="";if(externalData||env.isNode){data=writeForNode(key,val,session,externalData)}else{if(!session){data=val}else{if(env.isSurgeLike){data=!!$persistentStore.read(key)?$persistentStore.read(key):data}else if(env.isQuanX){data=!!$prefs.valueForKey(key)?$prefs.valueForKey(key):data}data=convertToObject(data);data["magic_session"]=true;data[session]=val}}if(!!data&&typeof data==="object"){data=JSON.stringify(data)}logger.debug(`WRITE DATA [${key}]${session?`[${session}]`:""} <${typeof val}>\n${JSON.stringify(val)}`);if(!externalData){if(env.isSurgeLike){return $persistentStore.write(data,key)}else if(env.isQuanX){return $prefs.setValueForKey(data,key)}else if(env.isNode){try{node.fs.writeFileSync("./magic.json",data);return true}catch(err){logger.error(err);return false}}}return true};const update=(key,val,session,comparator=defaultValueComparator,externalData=null)=>{val=_typeConvertor(val);const oldValue=read(key,null,session,false,externalData);if(comparator(oldValue,val)===true){return false}else{const result=write(key,val,session,externalData);let newVal=read(key,null,session,false,externalData);if(comparator===defaultValueComparator&&typeof newVal==="object"){return result}return comparator(val,newVal)}};const delForNode=(key,session,externalData)=>{let data=externalData||node.data;data=convertToObject(data);if(!!session){obj=convertToObject(data[key]);delete obj[session];data[key]=obj}else{delete data[key]}if(!!externalData){externalData=data}return data};const del=(key,session="",externalData=null)=>{let data={};if(externalData||env.isNode){data=delForNode(key,session,externalData);if(!externalData){node.fs.writeFileSync("./magic.json",JSON.stringify(data))}else{externalData=data}}else{if(!session){if(env.isStorm){return $persistentStore.remove(key)}else if(env.isSurgeLike){return $persistentStore.write(null,key)}else if(env.isQuanX){return $prefs.removeValueForKey(key)}}else{if(env.isSurgeLike){data=$persistentStore.read(key)}else if(env.isQuanX){data=$prefs.valueForKey(key)}data=convertToObject(data);delete data[session];const json=JSON.stringify(data);write(key,json)}}logger.debug(`DELETE KEY [${key}]${!!session?`[${session}]`:""}`)};const allSessions=(key,externalData=null)=>{let _sessions=[];let data=read(key,null,null,true,externalData);data=convertToObject(data);if(data["magic_session"]!==true){_sessions=[]}else{_sessions=Object.keys(data).filter(key=>key!=="magic_session")}logger.debug(`READ ALL SESSIONS [${key}] <${typeof _sessions}>\n${JSON.stringify(_sessions)}`);return _sessions};return{read:read,write:write,del:del,update:update,allSessions:allSessions,defaultValueComparator:defaultValueComparator,convertToObject:convertToObject}} \ No newline at end of file +// @formatter:off +function MagicJS(e="MagicJS",t="INFO"){const i=()=>{const e=typeof $loon!=="undefined";const t=typeof $task!=="undefined";const n=typeof module!=="undefined";const i=typeof $httpClient!=="undefined"&&!e;const s=typeof $storm!=="undefined";const r=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const o=i||e||s||r;const u=typeof importModule!=="undefined";return{isLoon:e,isQuanX:t,isNode:n,isSurge:i,isStorm:s,isStash:r,isSurgeLike:o,isScriptable:u,get name(){if(e){return"Loon"}else if(t){return"QuantumultX"}else if(n){return"NodeJS"}else if(i){return"Surge"}else if(u){return"Scriptable"}else{return"unknown"}},get build(){if(i){return $environment["surge-build"]}else if(r){return $environment["stash-build"]}else if(s){return $storm.buildVersion}},get language(){if(i||r){return $environment["language"]}},get version(){if(i){return $environment["surge-version"]}else if(r){return $environment["stash-version"]}else if(s){return $storm.appVersion}else if(n){return process.version}},get system(){if(i){return $environment["system"]}else if(n){return process.platform}},get systemVersion(){if(s){return $storm.systemVersion}},get deviceName(){if(s){return $storm.deviceName}}}};const s=(n,e="INFO")=>{let i=e;const s={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const r={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const t=(e,t="INFO")=>{if(!(s[i]{i=e};return{setLevel:o,sniffer:e=>{t(e,"SNIFFER")},debug:e=>{t(e,"DEBUG")},info:e=>{t(e,"INFO")},notify:e=>{t(e,"NOTIFY")},warning:e=>{t(e,"WARNING")},error:e=>{t(e,"ERROR")},retry:e=>{t(e,"RETRY")}}};return new class{constructor(e,t){this._startTime=Date.now();this.version="3.0.0";this.scriptName=e;this.env=i();this.logger=s(e,t);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let e=this.data.read("magic_loglevel");const n=this.data.read("magic_bark_url");if(e){this.logger.setLevel(e.toUpperCase())}if(n){this.notification.setBark(n)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){if(typeof $request!=="undefined"){this.logger.sniffer(`RESPONSE:\n${JSON.stringify($request)}`);return $request}}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];this.logger.sniffer(`RESPONSE:\n${JSON.stringify($response)}`);return $response}else{return undefined}}done=(e={})=>{this._endTime=Date.now();let t=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${t} S.`);if(typeof $done!=="undefined"){$done(e)}}}(e,t)} +function MagicNotification(r,f,l){let s=null;let u=null;const c=typeof MagicHttp==="function"?MagicHttp(f,l):undefined;const e=t=>{try{let e=t.replace(/\/+$/g,"");s=`${/^https?:\/\/([^/]*)/.exec(e)[0]}/push`;u=/\/([^\/]+)\/?$/.exec(e)[1]}catch(e){l.error(`Bark url error: ${e}.`)}};function t(e=r,t="",i="",o=""){const n=i=>{try{let t={};if(typeof i==="string"){if(f.isLoon)t={openUrl:i};else if(f.isQuanX)t={"open-url":i};else if(f.isSurge)t={url:i}}else if(typeof i==="object"){if(f.isLoon){t["openUrl"]=!!i["open-url"]?i["open-url"]:"";t["mediaUrl"]=!!i["media-url"]?i["media-url"]:""}else if(f.isQuanX){t=!!i["open-url"]||!!i["media-url"]?i:{}}else if(f.isSurge){let e=i["open-url"]||i["openUrl"];t=e?{url:e}:{}}}return t}catch(e){l.error(`Failed to convert notification option, ${e}`)}return i};o=n(o);if(arguments.length==1){e=r;t="",i=arguments[0]}l.notify(`title:${e}\nsubTitle:${t}\nbody:${i}\noptions:${typeof o==="object"?JSON.stringify(o):o}`);if(f.isSurge){$notification.post(e,t,i,o)}else if(f.isLoon){if(!!o)$notification.post(e,t,i,o);else $notification.post(e,t,i)}else if(f.isQuanX){$notify(e,t,i,o)}if(s&&u&&typeof c!=="undefined"){p(e,t,i)}}function i(e=r,t="",i="",o=""){if(l.level==="DEBUG"){if(arguments.length==1){e=r;t="",i=arguments[0]}this.notify(e,t,i,o)}}function p(e=r,t="",i="",o=""){if(typeof c==="undefined"||typeof c.post==="undefined"){throw"Bark notification needs to import MagicHttp module."}let n={url:s,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:e,body:t?`${t}\n${i}`:i,device_key:u}};c.post(n).catch(e=>{l.error(`Bark notify error: ${e}`)})}return{post:t,debug:i,bark:p,setBark:e}} +function MagicData(i,u){let f={fs:undefined,data:{}};if(i.isNode){f.fs=require("fs");try{f.fs.accessSync("./magic.json",f.fs.constants.R_OK|f.fs.constants.W_OK)}catch(e){f.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}f.data=require("./magic.json")}const o=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const a=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const c=(e,t,s,n)=>{if(s){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[s]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(n===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=a(e);return e};const l=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const s=typeof e;if(s!=="object"||e instanceof Array||s==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const y=(e,t=null,s="",n=false,r=null)=>{let l=r||f.data;if(!!l&&typeof l[e]!=="undefined"&&l[e]!==null){val=l[e]}else{val=!!s?{}:null}val=c(val,t,s,n);return val};const d=(e,t=null,s="",n=false,r=null)=>{let l="";if(r||i.isNode){l=y(e,t,s,n,r)}else{if(i.isSurgeLike){l=$persistentStore.read(e)}else if(i.isQuanX){l=$prefs.valueForKey(e)}l=c(l,t,s,n)}u.debug(`READ DATA [${e}]${!!s?`[${s}]`:""} <${typeof l}>\n${JSON.stringify(l)}`);return l};const p=(t,s,n="",e=null)=>{let r=e||f.data;r=l(r);if(!!n){let e=l(r[t]);e["magic_session"]=true;e[n]=s;r[t]=e}else{r[t]=s}if(e!==null){e=r}return r};const S=(e,t,s="",n=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!i.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let r="";if(n||i.isNode){r=p(e,t,s,n)}else{if(!s){r=t}else{if(i.isSurgeLike){r=!!$persistentStore.read(e)?$persistentStore.read(e):r}else if(i.isQuanX){r=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):r}r=l(r);r["magic_session"]=true;r[s]=t}}if(!!r&&typeof r==="object"){r=JSON.stringify(r,null,4)}u.debug(`WRITE DATA [${e}]${s?`[${s}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!n){if(i.isSurgeLike){return $persistentStore.write(r,e)}else if(i.isQuanX){return $prefs.setValueForKey(r,e)}else if(i.isNode){try{f.fs.writeFileSync("./magic.json",r);return true}catch(e){u.error(e);return false}}}return true};const e=(t,s,n,r=o,l=null)=>{s=a(s);const e=d(t,null,n,false,l);if(r(e,s)===true){return false}else{const i=S(t,s,n,l);let e=d(t,null,n,false,l);if(r===o&&typeof e==="object"){return i}return r(s,e)}};const g=(e,t,s)=>{let n=s||f.data;n=l(n);if(!!t){obj=l(n[e]);delete obj[t];n[e]=obj}else{delete n[e]}if(!!s){s=n}return n};const t=(e,t="",s=null)=>{let n={};if(s||i.isNode){n=g(e,t,s);if(!s){f.fs.writeFileSync("./magic.json",JSON.stringify(n,null,4))}else{s=n}}else{if(!t){if(i.isStorm){return $persistentStore.remove(e)}else if(i.isSurgeLike){return $persistentStore.write(null,e)}else if(i.isQuanX){return $prefs.removeValueForKey(e)}}else{if(i.isSurgeLike){n=$persistentStore.read(e)}else if(i.isQuanX){n=$prefs.valueForKey(e)}n=l(n);delete n[t];const r=JSON.stringify(n,null,4);S(e,r)}}u.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const s=(e,t=null)=>{let s=[];let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]!==true){s=[]}else{s=Object.keys(n).filter(e=>e!=="magic_session")}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};const n=(e,t=null)=>{let s={};let n=d(e,null,null,true,t);n=l(n);if(n["magic_session"]===true){s={...n};delete s["magic_session"]}u.debug(`READ ALL SESSIONS [${e}] <${typeof s}>\n${JSON.stringify(s,null,4)}`);return s};return{read:d,write:S,del:t,update:e,allSessions:n,allSessionNames:s,defaultValueComparator:o,convertToObject:l}} +// @formatter:on \ No newline at end of file diff --git a/script/zheye/zheye.png b/script/zheye/zheye.png index 369dae256f8daf81f760a6abd9595fd553fab3d6..f8625dff5b2d6c67dd81e558af4bd6214d36fd12 100644 GIT binary patch literal 163175 zcmV)oK%BpcP)00Bw}1^@s6dnpzL00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D|D{PpK~#8N%>8G# zZA)^dhvoL(9q-TesH$59*C;qPL{b|18B_x;kz;5O4U&>bqNy+SU!*TGA2?*GCfgD~ zqtP(sP<8#i$J>3j_fGHg#*DRc&9m0t`AnsetNy1!;;(u4WuQ&pp!YWZ3_lqbPg;3ufZv%nebS$n zrv}os^YK1XqTDuJHJnyP#`Q~+VMl6h*ncc15p2q8wf{-H553m@0Ui8Jx`Yhx#1DWv zzMZyT-m}u=`&oJW#U~IqRN=`s==3dtdbQ(@#lsrfcn6h(ejsk7!?t7h`|(lrPlfOA z@0Y{F!*W97Gyol=(j%m!zaJ^x(a}&jJW@+G<=~TUNPQoAdB>%0$aLy>;WhQBp`D)c zz*&d4p&yRg?^Lr+SSM;fx8D)gd`}{dRPm!Dn1CYF^Wlk^0ewd($D{CpAuCMbN`@k^ zjnION3Zh8I$H&Xq*jO1Q{qbQLY8VB>gRy>91BU;11(ban1Z}6M`MS^#e;syO`DfAg zWoiGi=?4LL&g)Q;KrNdI$irzeVcDzF*Y9=sR{>~iLpv<%(1r}JYvwx4MarSv*Z z3hdzMu8BwsvP??8%KGHLaQ&s6H2jw_1Hc}=h z#$~CBD3x)nGKQsbv1(D4STLeiSs7zqA2Hg{uLGTzd2Ki?&sV{B8YGR0x5i(G1NHN1 z(9YL}FN3F_|8)QygB)^!Wt7hCDcQ)j#SKdqQa(_qZ3hkDxtpiRXT40G?|eq|3Mjo=4=yq$qi&-{LZTJFVYk47GI$PDII% z{@->rK)>ryLBDi$*%?>URLA#&ln1NZM9|MqmlaATM0hZzP7@9dF6D=lRk<$(xwn64 zWx2P1RJL~y%g&w@=mAPq3R4!RJmHAxRDy|<;G-MIMn=no?EG=PjGRbG%0iWC*(gQP zpqwH6k>4GsVMxuGK~Tq^m9`(8mglSBI}Z$^xnFsMXgF{9*G>0T0etBa>M#@_K5d`x zwIeJc^VE>C+m_*cPUx2x=odaHT|)ag-}{C4i%%bDr%C9SCZ7jEou*DVC{LXpWdhHb zO(y>mlD7d}3y-wDas72p9p4Yy^bJZ+x^!)5hvhpo;DTyFBJcWW^-8l#W{x$T#`(Fa zgb_(+;g~*S6*7xPbrIiDmIt9MclHm;?w5Wb zHNhgQ{k9tvUPI!q{d@-cJ@-pfhxPJaz$}iw)&S{7#V~jnOKze32+zEczn*4C9J(W* zTcb>q3aXnYX{c+D8w^J)VpB+N{=6*eKwI6XdE zW~atvS&qsAkfq7!&y*Y!L14PUGeB7yh?DCZ*T89UXF=voetjJPSGq3?u^iF7RB#r) z^TdA>&}pj%^1VBwp&TrYeD9{OpX*J)1jj3TI^?Q;$8{`*mP-p0nX(Kv^3n!M{4x&9 zFdgsTG}L(8Z8)e+&kEz&#)@3xa9G1DcGypj)WL0SDueoawg-CPSbX#>Q!b*VGaB^S zesy`h5N+S(U@vsqzk(VU&nYJ;@eE5h2r{lC6Mhra1@1OWlwIUk&}rYU9Z`pe~Q_bT#CAlo{zyOIHJ7 z<^cJ08^(p3R|sS*2K^q#4zyCF_>7y?hqlUN{o2 zgrq&7cl1goCuG|0F{fV4?eqhoWd)rD=f>N>S?RxSd|C!=NGrCT|1^9V7k)EfHerMK zOE@%89_`IKCGSHTnRzFEbad1wFM!d}ad&C}Il^jeLq8hpu-^DyI@>TPJmEz0pAc!W zpazxI``!8KB@{22wG;@17Pa3?+%O#Gxb!2N- z==q-l&O--j(zW5d^4HGW#TnD_41=HWctnO!yWjPe)#wemK?7|+NF2Y&e$%dN8fgO+ zC2N;B9|Ui-drhb4b6hsA4_TYGzDhc!#m zVTFoNbpbnY;18iCRiW@s%9y9&Bc6hjvJKg=H6)Gw;sO{+x}$xaX3%pRi1QTX6!-56 zK4b~JhTC%t6heD86dr9f)zQoBu!(5S7OYG6pR(lQl?z@ z>H&qxc_5P;T*C&MHR0rv&s;ap^?N^P*SDs15Dbckeq^U_PwiB$fx5zVTpc#ZQAk%v zn|CZmjqI#h=Gn?UO`SO^w7YktX*4_GZ1O0LCQ~QUh%5-Fp9{ohzBDb3$7T-g6BP~? zG7YPlbQZJP&`w|DIxl4X2e~f`U!@LTh3ct2?41p2*aSU%V9HPmr63<^)^7oTCZOQ@gwK|5{j66)vVd7UPG zlt+fABmIf^n(__L6Gw0R^;JDz3zCL>u6>|>J`LJ=Q2c$@C~KgiglAkk4N3~=#<$3PPvV4lS*Ml2MZ*DaNlvukYBjE|0aT0Jo_q302QzDORJU0VpoD=ho!HE}lcxa>(0 zpA=2ARKPKLl%~^2okj~K#rSwSoZg^x)YG7@e?Ryt%5o6&3gTesN!QF420Jvi1iUReNc{Sq&~+v zIt?yAp9jHN@#g^=^ECHO!g=Yhli{d^kq%hNA!9fzZCb`CuSJiU1xUj?A3(ZqUX zLJxx)AS{`RMR247G|Tqp4#$O3S@H!>D9in_zOhx-H@C{h=62cI*;O3hkjMArN6Nqk z&L|r?UPx{V5@cC5zyPM@`JBvYLqFQvFeoq3!{`An%OB)^(ePEu`8src)x1e3uI3#x z5*Du+Fj0iIWEniA5RW7qqw2`Sp&*H)-8~(Y?BP3qA0RYi2GN}K^n(l^6rXTbJkYP4 z8vkiH&WZ=l%5T4M0Ac2%+5pJDjDp1P*XI(>)2C|aeC^giP3u|p`Z6#Gmvt1f(!75o z(2oiI2uMbvP(AXeJA^39xz{f--}j|Gu^u;7WkT^R>+EiA`+}B{k+Bf|ivQp_3(k{f5G1XGppMJuZdiBL(UVT3H>+Id zf_C|B+3QCGz;nLWGD}$YHToX?mp)5;s+BO9x=UpLEel6N)A^K)_;8xy$=cv+l#@M$Yw(;IA1fPc%jM~l z`<9Ejg~h@JEF;5{WnuA>(2O<~3LRJqwlh@rhkn$bRcD|}W4C^pug;(HK|PZPj%UZW z$?uIz0c0B=*&7^wtg2AsuA#Tg*VDWf#-P(c(r#Dcc-81|+#w4O57{%og7;b)r&F@7 z%q{~@XPuH&=~h{ZJD(Fy3uF53XHGa&@c{3+VFzSiq4r+5d;Lanf%C;pqSn z)NT;;i|e002&r+xZ+v#Q5hPolw1GN;uVusOo%5KO6!Gm&bHH2?E=PoqOtEU{ z)TMuw4N1$_g~T(+odrp2`d2s z#^unOmXzJit#YulT@H7*%cu}xQIa=>KCbo?zOT>HGvU0v?4%Q&b&jZG)H!ECzfzC@33o^286gapkm=L;plm}+7w=bx z4x6QjTUAX`Hn*d zG*Zg<Q; zyI&cEbzS%1J5-r6)hogqjx=e3+ONZb_WK|>D^0)n#9hb1$LNO8*#(q3j$bK2q1Jg$ z!=2AH^o?r<*ml~};58hA)A~}>ty!ZaQ@gO!GAH!Qmr&<#sNeh5sdoM7uW{17 zd`SdtjLR&u%RUj(>SC!j}CUqx)dbJ^622uN6f5n`S}pbjTCKVy(ZN3d{dD4 z`r)m^P==?K&6h{L={3yrN?1NO;WhByFRX_4dq1et)Ht(G;<8VEmECNhUB+3^FHJkF zjWgf-H}7aI8o%03M-ST_<=eEn>)L^du4x*^Oef2isi9|C@VS$SQFBM=?CXw=4ttBfR58# z;u++=3HY+Y@nxW2ooaU)Ko{0y)KyP?oI4-SN{dTNlW%}=8WPKxWaQ{zzpSslD$k!j zESqbqilYN7tAqtY(x4;Zo90u}d@jK1Rewq=G8JG#;_6JloAfpGE3X~a zj!(#NQScgH3~9j;r@;wc#s*HTKe~5`o^+`toV8E+`2E6xjH_LSC!7|aK5*7^J8V$; z4yQ9wy40lkUPGNO-_HYG*Pyf+{&nlvuTHf)3+Q-#J7yn%)^rAS*fBlI zUMw50UY2K%?w6g-6*cvKr|i0&$(QYqZ1;n&!jISJ8UUxIIZGaEKv@EV%I#N19aiUQ zhqwJYzJ}iRg_pt4)AIBSACwlTPQS zvi00oHVI@MQ%P}Eo%*@6fc_Y+m#^u*DxA0c(;)MI9X$Q&RJ*ev%VuDUHOOoMh1JSK zR;4e4Zo_htRX7jt z+G*-{{}N$UPg|1pLEsj2`PBv3fDM<{V88baYri{xpE_h1em?h8=AHqj)sF?)Jf8;r z%4@@UX#)Dar(e5%&`w(e?;TlgCrpaaG{jBCgDOAoY}JqULVR*X%)e8w>qx2{Lv z8-Ea>N2bKoS?g1mPD6HNE}ZFB;C`ZNhoe0X5z2`n26?;4~`M z%7J&DN(9YdiBbYr))!oD z_%gisvQXnb505$)aGzwc}Vkhp&xz=8WL@1Pcz5_$F`LwP8?vzJnjvj)(8`8+geN{1HbT zf`0*-eo+1GGsuCf!CyO|{a!=Au!K5)Ew>q#)Zy*8I=pr@ z)bITm*)BJUtX)DIcTUAIMXXC2$UOMq=jaHXC9d`l=4GcF1T{^+NXR-4a%aKc1)X09 z|5^0$d+oHv?*4wKzCOmIEaUvt2iNB{1IENCzmueQDU*Ypt+KtjQbteq%fie=nI0eZ zxyi%5Jz!5u7W!{;>)4f1Op$kyR)^e zN`x#-h#&0clkZ@6uV*uL5V(w{%=6NiP}2%z{%&}0`59i9na}-PLjBx^cAj?HL3KJU zPYoGYr>UQ_J%+KYY+W@YO50%t+7hh7kU>UuM(&!Be6C%F_k(siDxEH&{a&Xxc=u1~ zdGfU)lKXA8Wi(gnITDBh9*>X=p6g^FY#FyBgZ^c^;^7xFe3L zZO6izjLd``%)esMMQ%a@ROvtRXtc6!Q0O6 z2W=d{ptK2f+5Pa>I0xg3X^NftMCQTI(Hh5RRy97L#@G*kn;u{=9p{Id#?#zcko5JV z^WQ~i(>SJq&Lg&-vHXq>;(`;trkRxD97iEYVUB8wJ~?ty_BK|_v-_Wv-PPyi`lZFP zI5)|KdTQG};b4{^L>eGRN5)lHD4$fqabv!V6>np`vkm9r;g{j}pmZ5d8zZC9zi4xH zN17h)=0yTqL^D7+sG%9k{rCXemBwSOA4)Aqwt17Yd< zy#s^7+J3*VgnZ7n=uwm~BN?K%j$_CnV<(dwQ0K*ESPkT>T|(zwmV?*f5C);e@vMl( zoel`To&KY2C>FIHnwVZQU15UoByS#YxMR{`X<1#-n zT)zF*t#bXsoTlMQ$NHDsTG)?heJs;)@o!Z4W36+9X}lce)8_3ue?1<2b>O#sxYK}X zH^88QB^HW2HX*q=e0y`F9PaOxgS}mcdA$#-Kz$JZWhnHFSev22bSlxKG@D8#lG>dG{qo=v z^1UL+F4NR$Yv$IF;V~_EJstHxNybii)XQ~~a3YX{@cvyuO;11fRUmm<^KKBFC(SPs z=!Bi+9aWe0U1wrU;inGwrsRG*j_@@J;jNEcwDR43J`Ei9v%q{Fs@V zurhpj|9;t6TPyp!yBPd|4SWIYGDemHA)7WB(g zyKf3=9@cyuRF2ae%dVHTe;h{^==t8+J>hGst`1R^_1Lf#{6`;sR6hUwGs&wut70Z6QU0vO9(sAA>KbQ4P3NF? z$}}0@FHM5q=_FXUjgQM6ZihGNGjH2vTt6Skbm z_?kvNFVr-ASuh=yGkvJ|e*RZ1hvPL}=(b^hkmahnQ~Px10!^0((MRXCQ%%wr=ffw9 zMlbvk<)0+Y&Q>|v-YCaAn`M9XReARLC*{+h{HT2RqrWQ03V-*FTjjks@0M{Cn=DK= zIIs@$n9tt+VOd?@EYDs%FUzZIWo&Y)%q%RHT}@T_{iX47r5zb7ySvOFLS|8#kWvHf z@l~PD%erVk2lTY7_)Z~*)AI2Le_O6zxl|Sx<~o;q&@U#& zCvE8rf`M(*uZ}7ERUfG7Oj)h-*6($ALOXB$T)VTNo$jbjZK_o*eo9uX*re;VDi8906@d+MD8~RBzB#FW|aq@F|k>#|-J1gG} z?^O(RP-w?zy5%zLB0b-!cEdF9$uvIB3r%gZmy-tJDBo0}G$>9cgoD{thp+R%K_`udZR9!M)YwB0r)sEma-R$C^|~=hTUe$K0ItbW>6f8 z3!~U|M;=jh%1a&;A4zVe4}SL3^8Wkp zm%DfGdUNV$AAVFOXJ*Sy)n{^cF6d*f-U7-^dMUSlPssQ1;bpWLkm+%q_HNPx85b|T z1LnYV4di?6*J;?%2ioC4?|Zb7&*3(_^|~&`tOiuIirRwuhb0NnW(Vw32#?R`s;IoT zvaVV$#<1G(%s747h( z!)S?EqE?;+>f*FkEb)6W!?s-1*-<{@>Zo3y2tdh^9*fVu-y?k|g>c$3#1fUD(pMeU z+9=fhYgDL)iOH7<;#=h(xnUK&aIo}>eb6- zdS+ZWV~q&Kf;^4h?P;Yzu1`Fgo@^?I3^ zTPj22vFjbmQi_Y&1)T+jr_SQGR}FG{4us;1^}|riUaN9i*H`rL16mOm{3o0;01ml> zKjPWFcCe61S*jg4C%Ut{Z7XtSYO3t*Y?n=0#2Aw{}k6{WbFg>b3a9i%jbkpl-=|hM@4}ST@9oVW?7lOLr;?rAg-nf z=$0J~GNdV4g5xSh*-fj|dd&AW&MyPW$Mb?mO3JSM8YCL=P({>9_*FdDr*Z~$GK2vE z0#X?feuywh2|9gi#1%(ff1H)&(Y}Ag>)=qfot=qwH`N8JAW7w1CA5Wg7IXvL7{!$PqmMr?Uwm<| ztZ#0Y{XQ?upvo9~pj-uqU$aPhJR12%D_)Rd39S%#!2-5F$4W~ZRd;jy1pI6jsK z&nbrRgDwU*ojMxI68?1*rSMt7j|sO1j82Ee;xRwP1HF&R9Ubm_<7#bft=v}~9(?wN ztm^G@_x7#w=G`~S{QSI?`tr(Z`Q+2j%MDqVS8v=d!=q#VJ$&d*fS!Ipc)vK)FJ5O{ z_+3K?zc;Q6owzTdD1kaIp?>x-(+ZzC_eG#bIL^OyP^O04?*}`S$wI~xI5Qv+&rh_FIcOM@`$#bm$ z@*N+#G7LyTPRMY8aIvX*3m~jc(}mX+r9q0)yl5=SPPr{hu%_Y5z-jc?Q1jz-sPl{e zomaJsp4r%-yl}Kv#8N}IyL>t|n+4>dT*61BoW@jVF2lu=vIQz7bEN4r=N%C`tflR> zS7ldTC-1k9(3r5MtLA%>)};lNUW0J`|Bk1#Axrh)Jq`ney~ zQ@}=k;R%P~j}H!2C#6yN!S0SaIJ??kl>7G{`W{WnxO(}LEbH6l;>C-8r|&JRe)k_g zDYxHxOP2CAA*2rKpQ1J8Dg7GGiW{UTd&6GO-wAJ~G5zAx)lk2;;{eyT2|q0_bOK(w z6OZ~SO1mbUJ0Or>Cm>a;zv5u@O{K!h7}FKx9lvq_t~@1KIIi zMh%Susucri;%sGfmJBnrr>;##)xf@T*$2pzztsT*Eg|FyDah1|^dxt=jYXN|o<~u3 z()Nic61`TGQlm4Ria>}a_8rqKi z16{HdHC;Z^)OlOh;pW=9EkzU}pU|C1G0e`6m)WVwa$#wyEG=ouJ3ZrRG;TsxBm8Ae z5#{*&`SY@&{DjTU&e{!exvmB)X!9i|su1gtq@fcaz#Q#?CX^}P_3!NLNU5xs#}6Kt z4}Sh>dGTV|78z41EXeDczE6k_?g1dr^z2-jonI_-b8}^CdbU#@%MQbn(_(`Zn>rCz z2h2ku`?f0a4g1#}rct!e5!P;WFwQu#bB$$%qJ)#I3EOhPf+W4#L%H=Vg(`ltRI$6g zV{7}1k3SVp*F`6FJT{GQNf|CJEL!2xe$evt$+NO7{$o+jE?ltkH*HQqF}*(Y0la5e z4c)L%O!?lPdS{(8tOmcU-u>dw8!CvEyQ(scRWDZH^TGp+-T<bHBtmNH$=h$3tCZ{C`l9@?}rj( z-1^qG74H3e56b7CKPYQ2rFdnh)6>)C=FOYs;-w`&kErhM#KQl%EKWN0 zwcEGL)a-&4Wy*G2S=Mk?82y3w3_D9v*6+Ys7G**{x6_fk9R~DMl$4!7IIdSwrg6o3 zaL7>`cMg20CF0;Iaz+?_4LxQ5e}DYMZ*(FMr^3uc4c`RaPL@y;4%CP{`Q`U>8JCt@ z0>YONbOiA{RJVS%|V0S6{7^m6cG8 zoYlLyFkfcprpq-co=GX88HLfI&2|d$oK(DLy33SVbmC|ST=LzPq?9h@u@*TwF>Qqh z?Y@s9Ot+-~u^z?T%WIS<{Z}tvmIwFll@-yB!kn6#vc=7s=kD&d zl>9=ub?a7Hym-Ouw+tSKNBbJ2#$*{El#f37+)Dl0jhkg`az+J>c#SeoZvf__SeLSg z-!p>{)Nui-4fz@e^IlKW`wVp6&#)+ge(@b>rK2tCbh$|^U#0ylc##7z^;(j#ITSYiF-RFKstB0=D8mb zPW~jMCdeR0*Le}cgvk54qO|j(f0UnbK!>leN?~-^j05UtphHJvF?Qk`MG3vequ`9o zJop(l5N`_*zrJxTSn!BNXKF>WXoWOQE4; zCN*WAmUX%~vta8Beq(u=XJX>MaPR|Tds384@hP7);I0+)*5*#x-rg-QMdz#K)v_k* zcjw@+%*@P{g^QQU!lL*gD|&o#N;1dvc&O~|i+ABhmY=; z#}6NQa|^-bDA1&M%`HfPX+fc@o@{1ayLrQPLP=5w!u7B0p(sE8tX#i&yIi?;U7{Iu z>}#MH()7FrwX|sg@Xu0|xki}|x$8c^o<5=TUKtb#{qpn+1E9Vg24q&CO?Udb-qXwtx z6AloUinIpOXPzStptXQ}CT)|!#RI9B`T=;e41j0ouc4;H(ADe>L>y^|p);X;06KxgtyCgk4iv)(jDjs7!pV2i zC`*2}l}(oyPal?t4?ZvZvZ$t}C(8A!SIX_1*UPmFnx=}k$xlk*h=p&47g*ssF5X#x zQ>2B>Z8J1!iQO&bYF&R@OAd1>cn`S9~}f+ESJP6uzgfnzl2Ig>Mlq zMW}Mw9AX0n1qw}+x3qN8Yp+ipKXW@`RkE`^B$)(v(vA<|bXXKA9hl2M%tI>F@RB?e zQ73J0IH>5bh5f*M>>dF-PaQz^|>v-3r z$rIt-e%_O=^<2NVp^k6odky+@DAJ)I@#*&|TWKj~8U}6#>XhGX+lCdA34YH#2Csd| z0`idk*>~9L9gKmi>wvaD^xyyOOFj2iphK7(j0}hZ+G%SbJy54X7=Vleh|e_j8b=TA zMqv>av_u?7Oi&y!#W)q7c`2)-ccdsIO*6IY7T*EauPMJn-#4fz0m5oXIy&iOnFM4x zp&)BKJY(5YKOatR1cIqqUZ(16@2EVRFv7VjMYW+${`k>@vbDBS7S##gee13jBo+_{ zr`^>U$fz^*Y}MU(8-+~SHJ`cBhHt5dhGgA{W;!_GhbrG^B&Cp<5-(j?aQ?Iuvt9@( zZnv2lqhL@_;6NdIGYIQTiiW&QohXBi80w#v1f9X6A*I9`nEV1S1 zPs*#8FErZjmbdTTEw`>-Ef+5=`YRNaD4p0FI4BR6R;)k}7{ztSje&@@O#t5F;J?H1 zQ3Q=ZVp&1gg9nei1AYC*4OvN-jmI6@`A<5B&QYY)3rAa`6j5p@NZz4{JScMTj*U*( zr+lWk;4~f5YbYtoeD!LjyjorN)cpF5TfLU#SXdlZnkZLzFG%?VlCQ+EK}6f~0R%qs z1*0(9|$w8Zuf4!wxT3YH?E7j z&eIRtX%pIcsAtq8p!*bQ84QWX5TLGX(kRC9UL#lg5yzKHs4DW1p26?18H{nMfA$YU zj;SX;Gl--KKV7~j4E+y3TkgK~gL5d#x}r7I1<_QQt`0{~^POe`>Uf*ilp$wdI1oMr z%04JzA{9pwG!@5M0GQ?_B;Fo+Pf?V8;Tu$x08`N#ItS+MM}0?CR}?DKMFv&`!@N*K zOJx);tleB+)ztcnvi$66SzMSc@Bh+!<>rkmWlBngvxyuE=eQ3hcP@~Fd+(S7*zpX` zaJ}tB91fn3$&!KZybG&@O*Dx-6xA2^?n&_-dQ*ZOWtIroa6vil?(CI~txc~R5{6Qo znVBgIbF*baG-5@9H#=~01ujq)d?y?laEB6puj9$WUR{0VBSI@Ht7WFy6q%Zuu_Eu( zNwgj)KUTDrg`T|&t~l2x4|iu_Mn>s-=q;%GBJvlr0-JQUXog_{0+2)DcS-I_DM^%fiwH@tPKAeKKYi z=8YiBYeOC8vGHjXp?~`GSG^$uXJ{w}VL!+Q z0@_FuNW<3<`P_!c*JV_usoRQ5n;x|&K8k{LI65dYO*S?J0FM-YiubfAfe!wfUN;os ztvdXjDa!C)3vXz};+j-PatD{ih|=U228$FFU%@OteOR79mKC?MT&`#e_x`tjsa(1+ zFN7K@oIdr}@gd}zVD zefJHo3+`wdy}845T2`a1IDn~UOsl7SoCo#9Z9ypSF3wOk0JMxY$^Zu~q@^4j3S?CS z#FHmaq^Q@u^L_o=O_#%clvt0J8R1}aXiozQos9vNbBug3#4^FI6gZnc(2#&q!(yBo zpDN>1@}+pkC#FQhs1)VL<--p@Hcco>)=(#uu45r9Z}5tBvcLsDp&2Xp;^j-Ww#Tua zWgQBU<9wt^>7j$QHRyl*__37ae3@TdGCe-dg1n-@&3{Vi?c{BM&KgKZ8Q8d~D1pcy zinI-NSU#VXj&l3u13EaGewy#uAF>zw=UbG7)eDYcVMSsb!Bb{e$Om~{mKeg?BfNx9 z@DD7!({DL+PWzw}kO_`trJevsho;5{QYMD}*#|3~&^iGfHwZXeQ37>dAmi(w;_L@G zf_3mU>kJ9twQE`wYbeWNq=8vvO-1Q-Cj~$^KAi#>NbgD3uSKU6C3)KQ`Z9`=ylot> zDa0hB9p2DO$L4(F^fyT?Juga5$vf#GX%GJvk%G+vr;i?%r%xZN z9mdML@4o9DV%7*zl>E#Ca^`8ZtVewE#%5F~Tsk@%bl`vs3EewC=VWT zoQU;9a3WtQ#?8$wPlJ1I>i}ajgSd|iIQ;Qw(x%s8C%a=XKtMc(_D(RS207)}A20`*Sc?=w>oLcqq_(-J-Da<*d?7n^lzhA^Zr zg4np@9qTfzPi8wBz)x~bI?8SP$Zz68berjXbLPI%JwQB)-nnvx1&H zX?@7=D$1@ykbzW`toJ1DHh@>Epz|Ei_}_pv7MLY;k}1tVPQ@R;JRpz`yWv*&_n*&+1T+;;RKAk z!Gj>9R1$Yir7~?Uxu8L^j@0X=>i6R1vUj52dHX$o?#FNJumnK;Q84TBcQr`(N;Nr@ z9mjEe{07`A11kjOmi41E0?1hY*jM+R4i`$sr!~|rFP2xNu%Ej;juN2=x#35ZH-7p( z1I(1dZrr-ntTTp{!+I>AhyuCE;Ql7OwBsu&b}vt;%{bS&EhRrPI;pW81-|cTG)KT{ zkxJgVE&_a9tsFaHIF`N|1QA|i3#jwe(0&I7r5yyMinL9?Z8S$35PT596dOg!l$$T1 z_^g%BVi6JK6JEkP1}2Vf(M~b-?ykYoT<`!pni2@(eOQXJra7Mz@_p!^f4J(W*AjG? z_d4SeQkdINcfCy0#$N+Pz?dki5m>_IBftqM%vhHpRD{V%mRSt%Ei3Y!LViF;@gZCl z<>ye8D9JYdY~XqwFo9;v^i8r5@`eGKmua?YY9EVX=xD#}Y^-~Vy&)yxuVdJp(Lk}g zwIb!QS++JdW%DIyp)JiGn8+(-Y;+ojYE`<5&t`FMsOXt{gm&9b<#;7*5<^fX66*&g*}wWcC+xbQ-Y+fVq9ad4v< z0Lf2$DoE-=*q#&~N|3UjK7A^los`?R?v!_b>04!La;B`UuawU}|J;Ysv7iC0<}5p{ zS;_#f>2X^IJ=8Omxj&_BWQ@TWpY%hDXAr>IYLRt<#fTNNC8hjaiW?swcb=(@ zO%D0;Y+*L-m;Dy}IB)}w<3X?R9ZRc8Y9JqUwSllf;cXa{whjGKBqBIJ>_PM-qO#S^*n z0BRR{Dad+t(zGl|07ZE)9J{XoOdmcD=7WkHGzgvafK3zOIvUoLfYwu^lg}27ln1-e z>`G%jV#9C_@?dMjn=>z@lwK{raNOMVl!XZk1_jAi8yq?wAK`amx-QmmVxx?HNLg4X zw{PFJqQuJE-r00L5uU6AKF&559Zz*(M;k@9vbO5ANE8)y;(+?})NDss0m`&e5e~{u zOaSTc*NZJMk ziNa)+juRGakfq``PqIw;>Do}o)$x55C6I|~MTx+)VUVIs{tjYvLOWj@pd-ueS3Xe3 z`!}Gg_qxJ?E0jkHNs^ZhpU|n77;G4zC{IQZJWO~st#EKI3`NP58mkBzutW|yjw7)^ zo;{^iqC;6r?D{iO4kOum*PO1L>}{7P_wJRC|MsUo3(0TCu!+MCFIFHOncZjbj!&~8 zFy;-C2?-xPF$yN+Ry+l`Fmomd^?4WLVLuC~*jCKI2kx(ec?>U`>wAnmGDX z%KjcZiXusA!H;r6A*Hg!p*-L<@j$dgD9){&n5whpw=D~5OH=w4)fuHn*(eaw!7Hq+ zjkR@gQ8cS7?d|V+qi9$I#f@t>y++Cu9Q@=XqW9uy~SNk_smh9(at%Igb-l^*(N z<)oK#JHF^O-9E3Uflbfg=Sw5#+TPlA-B82~LUdFV`nGt-+UWYa1~sLn-h7Y#-h1zr z+i%`2M_AZuU%n1nU)v~8G>u7*>9MmVJi-QndVUeVT4Gzm2lh4$*CvWqfVe}!eWPgi3 zM5$_b1z`ZN9Ky`U=YKsYh$hK%d?9rlhsjmJoN~i^HM5mxDoQWEG-YP_`CdaEjt~97 zKt%~ehG0~qE?$GP6s1StQ(zF@gj7^Xa6jl&Mt=VAeI1sS?^mA)dmXyvMfyR2GU|m$ z&zCYlS^_={D@UgUM#rW2G!jm#lN_ldbA*TAuzv9QXXWQV`eE5r=eo2sUoI~#m1#bG z8=r8;pc78dOqTJ{i5MY;6a27=H8q4I1cY+qSc>13AT2F6b5NACv(t(XrG^9GH;QFX zog9Vn=+PrvkbG^!x@N9zV$p&Zp`RZLm|&;`U>3)6imJEX#jct{Hc^{)Rn33D>>@N`YY3MF1y8gMggN^NQbi$ zmxYNkp}wY5Jj=S12J3~oq+Anb#i(cKM@4sKBY?W@?ZzjQtf9gKKCvVn$9O!i7cj`6 z1lKmXl5V?fbIsc5i2Qvi>~SfzlXCIWmGVFTU;Ho28}GbZre^2V@k1#hSEd6JRUYS9 zxweirHeCRmKx4lO!%<&mDFNJQ6m5_St*t0)a2qMw{%i43hkp4I+WB~H^C|(^?TK%m zRU^N;AFG|%aKxINnVJ+|rAuIdfKPI_G`LXT1MvtY>H4do`YFmRFM;QD3H_eaANr>s z#%9i-3e^^6Klnvklx?~O(FqXOR+I=Am4%5>=|&;=|1Q)_s>@Kefq>V&;Ts#5HN&z0SuD8Ek?tT76`SFkbMhfy(xq2~f`o44HMwy$L@~u56 zAvUf6*Hd^gPw6lUu%G7!Eift%A8Qarw5CpsQo;Hm+}{>oyHc)Ry<%J_5rB@)`r~~o zq~|UdrNseqzL^F;(?%37Wk3txO_Luy)Gzs$bl?u998nIeA)*YvC9cvoV_cj_W%-l|>k3CHC#%87i?LY-JEgLk82SeK1rZg#n` zZrm=ipjpabDQ0Q$V!3+jR{7qq{aU$s=dK1)S&|Yhlz=~xM7Bg${sMp!0_v3!?KpmdX&FQMQo)?eq!B*RN|)o))ZREqEV<(dG zP|{4@QIPmdHNhF17l;0Y@7I6*SIckx)^C-$`5Bk(>Z-n!o1Xzd9hdxS zLno}!50V%v;XVTIMK~tQ);Y`UeCvZ7oE?n!M68S;z`h5jrrzd*aAl`VNM%Yq$_}8OI65(o zH9k5&!U)j8QLb2nC^~KhLLp2_*Q?x*Q4mt6gg-Mh3%V-hR4d@Hfw|%rVGW1k|aI9zDW7}5ZCv= z|9!7tQlA$uU&c94(c*KVQWVgEBDO53qv7Y27Dyj(8bPNmP-3cU@LE=!lo{oCy-eXK zOVh37;K5<(5l1~JADP)uI(Dsp??3nt%bV}MS4PAqEJ{hU*C^4EkP-4rS1ss@bf@VN-vQAAKzl&+i=H%s_Ip1Vl*ZxWp9d+DsBOJmq_R0P zOq1lzjhNZ&+H}q~G7FN`RmT+M+Wa zmFe+m=hK*Lg$loET=IrOj1HB`H5F|7lvVR6d6Qw30ibY6o99vyS`^NQKmSP6`q-7m zYQ&)&IHZlz!s>+<6lA*bvAFPp->#mXowg-=;lg4ZtoFfeS={1X{0>j75u#oWtz6=a zCU-sV?MP7z7o8ZIQQT}gVL7gF&!)=X+T1qYfB!%H56ZW{{cS5n_(!@I&*NT8lqT!N z(80}0)Q>VKFW1Bph=ZO4)&P^2L0_D`#IocaWetATRI&JpgVy9Lx3Ie$wJpE-16_ab zH-D>q`@8R#`3o1z@Q9}F;ys%_v@#YHpJMV12&3`w0RV~vnasG_2w`&%fUn`lJ4;3R z40N7fQD&v4!E5d+?0n;WvMSp5fZaF z|BjGeJaC9l1Sc&K-ldDSY=_lpYyTTllzTDfv* zsVr%l$r?4g*`1>*f*e7i$xi4IeABLHI-C`$IvSrQ@@(bU`0T!B8Wax~(;{Gm@y;{2 zh)@1xSv7x17h$11*?h=&=aogoM#iB!JBkSuLMnxh0~rb7|(J~=gB#wR&b z7_^}LP_V2&arDE`l!c-U>!jfk-h?S^D2cdKIo%N?rpO=}Lsq**!-uI;}f4N-0e$!U=u%_>ajpc_mM;`K0NBBim zi3hLC7l|Dj0JUAse-syaNgJKH=|74GFG`uTw1M-w-m(4`?Hd*&w-h~m^rYOleW(2D zZ~R8Nar15&(=-$%aiILv8%2p?V8@*DSW3uGd07HLhLhH?*q~AEOPeVmnl2P&4Oti0 ztEwtc#{u;3dS=pj7$l@3L1yp8kGG!X*NCdS7!Lx_Ph*DRy$)vlVEb$N*uDgLT{ zSki$j%1ykvspV&-#Q{klK-?f`$9*M531pr&BilfSt)Y$Qn}V7F{UGa<>5_R-yKepr z$+3t|NIL3^rNc$6SRK3{O1KetcUUYBy>Dvj$tAh`X7$3%Ou0BeU-;c>u<|(~%8||& zw6ItmyV-n_g|MU&ss${8XZYRWy?mx9_|S+zpU%xAyZB;dJ0+rf{IU|ZDn%tX=xFJCIwYfv1*PnrUE z)G?KLmYYhEdh=fYemLuv9B;ysW0`<=^1uK7`(C%ad-u&UuJ%MmDTjPGtWeUj3B?gA z21;nL(%ub)oxp+l`aKP{B{x;yJR`IKVHWV_ctu*i zsVEZ`4t; zSo-|*!-$s#ID2^@EB8ft_WVUz+t_klzW2Rfk%f8NgWWN=B+(ASjqGw6M6f#)FBYiZ z8g}}(#R1hbf;15FTJgKzbGKhrVe+YWJ_E14%d68j((H7W8&QD;8Ot4-Sy2!1?r=YD z`XLX_t65FGVzVZ2k{0NsQ+Ox6{5C!50~y~hE+O%c{DXh=$3IA93Hcs=Q;`4f0&%!{ z`@Ns*Tz}^OUx!H3EkE(5I}2V*+sV?Kmj1W#3zr-qO6a1-?&>YFV4xDoYHjrpp1`2KKjg%6lWgrj;~>4ku=tX zUvS9}r$PAj4)Y`>h=J+SJ82Lc=m`2FtmDh!k7+7{)tHCOu_h5pIuRX~>&fW&C>_#M zCIF2&sARbP#sRb)$z#e)n5gYEw29U`VWQm1k7svFITSw@yQZqRrXKM{QP)A2^GjfH z`Aj(ep$4igDaWfQ3sbZbo-~3J`U%5zc@>J23poIGWtoNKOk`_oyR3`eF)79= zS&HDF0>Aw6iSaT++bu1X`MG(`Muy9l>iFT$KPX>(`bpD1!={~9<13+YwXI5(MRq8w za~yr>rim8Aj|LKV{T4re9JD61pK+0^7c#C5bvXam?=i6E`-#s<#?KS$jkayt^+*ao z+a91_^2j@N>PHXI4R6ZtDX$kYte>9_9=k7~DBF=W)QYZOnsx_jJEd^Cx?&E;;vr2F zmJoT)4=5ZoiFbv;*U29~j5RG(gP?}-KtrnAOzpefa1K?-1TVNp~5ad$9& zV+Msu(oxQ5Njux0h(OSt*eGLH3hck%16+CNbK16k`h zlpeqDbF8%7#7?}Qm6j^I+SJJk@=()Rl>JWGma^Gg->}cx9C7Tn-@JLt2iLLqunwuu z-29@#E{XOLD^CvA!^SyTbr&uyl?f>+cSh=~3i6J^8P^n>>GS4B9QQ$ip`bV(MdxO~ zLrL+OBFY+GS@y(pen%+#5oN(-=tBvQ$>Q5n-B}w2|0Ks@C_56W&Lb*ord*V=ym9kp zxpD29%iP-B@XvfO7$BQdlT)Sv+T2dGpPsSWkpldbBc!3@1B4?l6=eAdqA0{jULBXu z1H(Fn#5)sEg6Tgf{t5Lh+Ldl{EaiB}RdzC^HJ+$0^f@vH|KO)LG)Zj4Q7=M3>ZBky zba|N2e(wjQ!FA-mai@O52;`L1il`5$DVnGL(4Eo-B(airgWKq9fEA@cUD|#Z;ynci ztH*-dl*c!|9+BM`FZZ(6cCRE(n%wTx^^A9GjZ1O z4ck;_g{drll#6LARul1DG{Gl<;IFMDAaMm=lpgN&GH~9JZo(2WZScFXAXuYR?}%q9 zP$?XI@`dsZtBqqko@(#MQ6ZEP>xx*(Sb)?AYmu~kj}F~Dd)-n>b@}CraZyjEzst=A z&Ts$D@08#Bz28&47i}@pBG5=#(7^3Qq<{5t*_%GJDg2p{vII9umw|?FkGpl3vQo9} z>j8YUH+5wC2ya;*h3~ATe){RBo^s#1d#7-@FG`+cYbbiA&~A(7+$-OXbDs6N>cjWV z*EA@+`>k*LCiD|2VeS>>LJX@($uccN`LqH)kiNl79@TpT?XW@pyFpLbot(fEHC?N!q--msZa(%R)FdQ zQEBkmJ5y0+`hg$?0(2E+Zv|^+@SJOvC=i&z>3_m$A9vD*unwJyJ5&QQeMV98T{cst zlSi_Kwz&H+ZneR}V$Een%9F)uIvt0`nPSkHITtpHwP^gI6!Lm3AP>&I z&ey1?Ez}0clkF4F-8^}$C8qe%@b;VV;0rt6SVYA)__+R!Qt}m5dgoGF(=FG*AwOLg zSAPhLHX!)iEyIHE-RwA^&U7)u)1|^hA>vT*Ok25tIH$(^UJ7w+z&zu(f>aLSEHex> zyZ_Klols^dQg*^oaH}iJWnI(u$4{S>?|kPw<#&Gf?^^--YBS{n7c}@_xairE1&4LY z8YokIzQbqgj+Kw{MFvoOJF*g8E`laV8jw?b0K7ukeBCr*1^jbOtCxj;aq)teORnF# z=_P|H)s<`8xS|bZl>_?0&Y|d8Ezg%aNq-P@SKz;!e zkd54JY%?St{0=4H$HL5u1vs9NjS%~|K_`t%{zw}a=&ta&-0G`xQB$~sJ$0Jw* zWm^GA>o5T}~G zHnMcrhdLYUpz-Sg{9PsUy%w!$svdm zYVpJC*zgu7Wq82#SOb93AgVc}+RL={pE($LmT$ ziM7L;5I=jcySY);WQk0uKARHCm(L!TwO7xSh~Hwt(uwnIFJGZJ*IbsZ5tRjgIx(N= zaajXDrMfV$sTVQK0Y~N+Driki`tp=$sc@n zl)BR9>U{cvyJ zQ*}?vw?ko~+_DYeW8#Ev09x~zbDvy9Oc}efPN%14%9ZO^%hl`GTt@tk&r}&3=l9Ju z;7fT9X?jk(JW)N?H@19f@P#Ya{ZqFS9ypM9m814zse{WTD9`OHeo(Lc`Peib;ykYM zAS&=dGT4g?;Oxd@m=y=QN2fR-i52m2cF$A`=KgoH_0u^{L)C`Vs~CdCNQsd8FI$Dz^O zsTMAj?|%2Y<@W76>YUfD7_zZ)X`r)4D&^COQ#fDaP#>(GtXJ}ucb>bvrp8^%FCD<);HD5Yz?`4n8(+_~L~%M$$25MoDHKaItsW02m`Wkz#|Ir3Zl|x7%a!z3 zE-wk^N%`P|54;$^uhE|l&rdaAS)dT3V}#)G&2KLJ(|9NdzD4Gy8!m3(iZDL)Q}Uh; z4-WEUh4G&Fvfk!l^K8B}c>srt4+$BEs}&_c-hdD+@}`gh_;f7jXI=2glV=?zgYrbN zL;s>WC6*vc5Z}{gjwVe;SSm%@DeIH?qpXlC=%RcDcH#(Q34k5n&F#2)jWS4w<2lo^ z2~zV0KjQ+TLmo=0gAXf^cI1;rtkd_u_ubB>midtU5Pjs?Wyf9lSm(s&9#8OHT$Hj@ zKGUGOZSBOj@uY!&d4QjG!G~|r2BE;Y@Pm9P1lBIUxPLDO1pOudX5sVV1>c~a)@8&^ zY05q$!(zCsN=_d=d#*SQ%$F`pnJ$#c*;y5fq8#?c8yaYlOvn#!*mz*C>Z3y|?^fyz+%WG=#_}%nDD=@BUw4dLvD* z-#D^}5%C^=rV~pX$=c$u6Omqxph$}&Wr@N3IMcYMM5H@8iR-+WYR|~(S)85peUK|J zUY5_LB&XE@FG={XYBWb6+1%OO+ARO%|M%bd`mj(S@dH6d=VH+gfon;YpbG^~IJ8jLJeHF{x`Zqj{P2S|g*I=_ zD2{g7-P<*vXfx818{BkG@{h|xGboPtq>q7?^x%cZ95c#xC!C9rf#F>CkOT6XF#R(w z`VsuSaFHA7hsuto_*S%{8B2aw7B%t)-}l7_7VU^%m8E|y>z<7w>a(-6U0!G=v@M?x zBv4Gm`4=$7BZ{YQn1&D>J(4Zt~ zw>)2r3w~rdjhr?`DcWhs({1yJgn!**S%Hf*ZI^Kg^?Q~(^85ejANw3-f|3L&-FyaK z5gtS(k>DFq<+4)os;N<9dBE$egoR%LFat}^XS{@$!>>b)QbWlp#8Xgf!(q~?!#G|H zz_L}?(5UP(Y#eZ2G1jZ%KzO%piN|pcvfHMi zsBp9)KIZ|+la?_DqdjGm74#Gfs8I;;1vpd(Bwv=rni=I}9pW2tCv`n|=g>U$WO})8 zi+s~cj6sOAj+9IJ2z^?U$Q%y2LiqSi85Dx08`dd?XJim}ptQ(0jy6ff|NO;s(;4j` zVHB=0`S8@8Ob?U^4$HM1z%eEUNDrvO$Nh>vH`okNBdV7-xzw`M7uo{g1(d}*0~T#C zCb?W%S}c>2t!?4uwsi3N=Rp+Dc~Z`z?(OVZNu%^QPrAFUL0U4$9RqAQt*^Y&?C4q9 z-{BWKx6KECKtW-W0qV~eGEfG$oWKm@nHLQbP-k8?U-e|19C4krav^Wkt-55xv*^a;vkKnkCCfb^gi4XUK+C6D;efbU;5g|En%T$Y2Jq+)ctK?jH`==a`H zz->htXuDnwWDKR&MOqiy>mr=gUZat+paXeyRb$ieSa=+v@vY=?X0s}f5@b5esK)fz z(&+E2HLB4xq$La?lX65MqF{%Wk4EN<C4P^Il zyjy2qYo>DcHKlv{_)&TA+2`f<&FkgP&6{F8KU}4bES&oXdmaSlHKqLJ?|silOYTTn zUcY`#9rv=ouAl>P94I?4^`~>^&mUkFaR7XJda9!ku?DaZxXhJwC;&R`MJWS1T`DTl z*>X{5V9JZ*op2mhK(>vmCZBg86&-G0oyzGe3lf**_;7mz78n!@f^5MYQQO96kpN}P z%4$M!(Zh$@M}jL>EJ&OAiv9L%JcInkZID9 z-#Gro2WPBNRviUkLnQ%37GgV;ikrBxhNKqmr3bK&o8c&DOXjqqRlpWyJ#Rv(F%y+Vs!`h-RyO5x< zyUnj3t}QQ@ciy;LZePFd1IPRn0m7PxvvIQ%@!KqPUhtx%5$-)r!C6zf_r>R-9G}1R zfI){wi1&A-)DHKgAZKJb&f9vVa}!So00*7x^0lkw*M9BSys^OaHQNL0k}qmFqT&uI zJ|*Aq;Q<}eJETpgN5K(C891Ih2Xob~9o|XkNSi+KZtF%EfovadXjtjTch5}a$OBN% zyuF8K6ev5&v^~Fz!(ntb9l#5i4nVXdjqn)U9Q0-Yp)TNI%@bNV_5)4i1rI*F%CXjgpdL>xGbOA6`1g9oO8pN?f3Ogumt$p?V4SgV9i6g%y*wZ7rO z&Ptsry#_|gp=@Z`luR%Hz(Z)nijKNRJtW!oQOwYdgH|@NIB@>x(F5lrEa?I_&)gc% z?NQUyGf{u_6n4v@o3&}ItmRj0KFY)z{iSQy%ayCw%ec}jfhs6`C`AndC-4?oK|ioh z(6p7PZK=X&$B>dPbsyR8|yc28|6__ zyDX|IGC=QEO!%!dkZY%Bnulku(r2FM&Y&r2Fuqv9@I}qu{*I?ChkU*9{F$fSZ{4|F zW~V2uJh4h?L^=!#55aSzN@%!{0m0-~;yks0kfxzGrF5S?eOf;M>|aecnF;WAqSXx*x;r}<#Fd!K9nuA5(ZzfSh0vu zn9!PS$fgK&+1=Z=@6M?>%D~YvQ@P+1N4?VV4o|5Qb%R%RI?6)Xv6GC#B#vV@moH-( zEy|jw<0AB-AfO@X$pMJ^@Z)N!s8T_JU;n!vlt&ol;iyLqi95ro8?>ljxo+gox`Q9! zInQ6Bl)wS)@De^!p3?|#mdkM=Xy&5?>g@|tR1eCdZRZwc94K$rflm#oU&sV)7Hhn0 zu-I3}q70_mC}N&z$JyC=KRjku*U^(#7?9lr=pY7jL-DSO!oU&KQ!;KT)wS z%Tu!hE)u?Q<*ILnpPUh`lF2eUA*Wf9I-OeAypiO2utwR@0!UNGR~c=P7HOUWoF*0J zQGERbeSDn3Gx4TXX}#nmm+PU#r=makhp-DjCUc!+mPYu5B-Y|S2S3J zU>G5FhtNv%@{Trgyi9WYdM6xZ<@g3tVP=^6jh{R3uv^dIpmO&$S_3E|EGm>mjG8gB z@Y4wRI8fvwdfYT3vZRnuPT(7rHOE;o;<5Vp1v@NRn8)W_2t3Cw5PpP^yyNOAGZHXG z_&g;)54*PfvMeFcnyzoGt(qR_$lsdIPC=uBhX%%3_|y<|-{cFzit=EJ%FZyKs^N31 z&Cb?l+0+z>=@Fd(Tuh@-Y;=ZcIXV#GvkUX(*MI%j%Wwbg@Aw?1zd=@7rhasg?BqE3 z3Z&A+ao&;iOyhH!5AbuYDQwVya&-qk4l4yZ@U!!guP!5jcgn$frp{yPT%?6|@`D=% z^6dE&@8V)TU>VM+!?Vsweyme|vX<#J11WsJ`^Igb2Dq@e6ueYBgOg|Ipg-8RY)0Fs zJcBdjMtqSB@D88I3l82nV+g-VlQ^j>Rue#e@-U!c9g`1*4PQt{nF*%BZM{`inmQl{ z_~1ak$%nEU(aqu{9Vp{10YCk?F z1ee=D$??-bNWRd9$P_f0uL9~p`TXkW)Z~P(BqTk2Wf_2agBRcZ$@uB)T|JUzw69Y` z|M*!%;wR*DZ3x!!z-jNDUGD^u(mVtK@u+7%0ga-Ac=@ER^Aiqq!=iHFvTH&C!Y^E8 zgr3us6^8DYwUzaejc^ z(KI4+=8Tb~~!$$;jR2^Yj9n!m(o_6vhUb5CE#=V=# z<^W*`KARtugJMCD=~z5-9O>DM=dw6c<0|Ku3zTMLH?(IG)LepPd()P|&+-E7A}~dEllli_LH1ux#-7 z@ze70C!ds$KKj@eTUb42nu< zxkMgFm%mknrAb=egVq?Ja!`TC_~hpp6Fkjj3fEV8xVVEgb*B@f{850O!Rs{eL%NGy zZq~YeOiuNLHs24a$dy;iQ!bsVPy&_OughK2Y1MS1b$S(zQ1C|56D zEYlL&{Jjot0@{&9_~z}q5*{_a^6p6}8MVDDtUsUqV$(=rC_V(#yKt(oJB9Gg%+8dH zmoAnoSFcE6ES5PbYxprC#qEW20ZIy?r!&zRuuMS0Gkn16cqV%3q)V)8PGKF&;*-K- zeG3k=K7%zqEc*GmRD_J3Zq}-J-rn9(hoYlNSjSl>jOi1d3+0Uu9xk<|qwel8$~Ws^ zqRRpbv9zH)XwCNLrX8HEc?~)!B5>k33N$YM&dG|LUx;hpQrWO}`Q7in?*sU3jNQ0- ztxQf$bf(^P*aV^!h ztnWyUxuJ(3u3U4y!6653=pvtYTJ?;gLE-I4alsFMZj~KsmRj&>XY)*Q1D(Ujj^vYm zKp`kJ;{9V;!XKvrM6JqqS)u^mGE)Fpi^c&cOBB2ksva?Arrp2^?@;zAarj9)QHD2^ zKrTQ9c+FpZ9;0GPZMVO(S)M<8T%KvFzq>6Hma3^($h{1^YnAHbk&?CzHyk-$&#p|1@Nub_U1Ug!6q7x^ui zdUkl0p@deP>6FGh(K7p4^FwLO%`cP%IXV~5Gt;wDE=&U^%ZNsH#!D_%y`Z$0WogZb z>BAb;rqqH5Oe1%;%J$kT|6a}Nv!~_N(#@HlYJXzJyF z8CiN#;JiP1{KyB9Unt+k>bgeRmxUj=KiJ<@J=I)lT-R#|OLNQ}Bt}8%g^SLKfX>a$ zm#eat=rH?ICYfQNWamwFHnCN1CvFLpjmG>3|3@X$j{UpY&NabtMetO=qQ?u!y3g(+PN{ z%p4T5gF_4TX5#}TNj!0M>P<~w0rF9S^e!XIM|t~Q15NVCb<`j6Pqu`v*<=Tyfo2AC_ee*t82ukKc(pp)F9B!pvneQfIzKP1@9!D4Vue+*`_nA@jv& zpOrf|Z}>7|>X>{>A9|>_h%;Z&DbxqLO{-i;cMZ|DK;6zL)Eerz8rts(Bmc?&?!Wng zO4lF7t3l}JA^?RMM?->vinQxaGb4OZL9Ud6G~kTN_R<@Rug0lSTddNk$NG#Kk60-j zA9ht9M)f#46gbR3Jx@xREviG$NNMbCtd$jwc#l5&q}==HgR&+icq}EU9#G~qDqftQ zl_FiVySOkf>vdjARnu3E;=_!p8XYHlEQ8tP?Ek-LxRNG zBEXMs?Q0}wEsq^_7UnNr;zHgz379&$_=EzbDBj@_mMt9$O9o4q<49P!lo6I?jNYmA z5K^8|M)-7aXyPzEbtDbxqXPzBEEg>5w17rX0xDxubh5tZV=>GUEDTbnvUanM{EqjS zreo`BKMv`0MQ6$7e9~}?pX{Gtcv@aB3$|8O`Z$2P%LiGO}WtMjhd}Z-~7X-6gW4x*4+kJ z+Ry?&To3(CU;wBL6eU(ac<^Z_&mKer11o^2Feq>jCU_ZWP?nQZlP;Hm+-C@thk}^S zGJU5$X_Y}Ossu>hQ416%vI@V%30s&_V`W_JJf-&HV~stv$?Ecpvi$5x+0qnxZ&z(3 z$0?BmDeGM+an|BlYT4S5aiKIA93Ox9VR_^3o$}UOZ@FA#1-WJx#2I1aNuFuOqg~R6 z?zDhy*nxn7#D4H38URO|cH2K)4ehWxUAmF~_`g6=!i=V1m!fw?2J|9TuI3>CBsJuF zD#{d`#M7X6ItwD2S)o41r$(?sR2&DO(`s;v4t+2OMMFoGaI2HD481GC`{<`XDS!26 ze^$0vm&+SBu9a`S^`@rLe0MurX85%~k>XuQH6&j#_)7)}H;R-_0}Xr;gEcdXB2juS zO;~>UT-M{O!tVT{6cR^UF0&Ca!zYTNH0c2R%qCM0z7yy0_}coarYtBHDPCI-Sd`5X z2&NRO2Z|VF;a_FEa>Z74SZ=Y|z!Z*Uh)Y*4d-H?!9;_6fl~ZSV@bIB|LLAnYJGrQB51gG!bw)swd$nJL<6~ zg$z#C<)Z#!$wgWXKFyjWZC=w7Z6XCD9@w(fw3o7tL-@%Lek)Dofj-`GSyv#Rk+I&e z@DrD(sKSM!#LskYuLexB!e}SXH`+>9eZdPJ;*ja^i#s*-Q!g zP!gfc2GVI((m>^iizqqc%plTPd2IT^~&m)Zv21s)6g^ zC-W)a>*ro*hYd;xjQnr@=)d{_Ot3~ab0T3!QMNPoL0&_?pESW#I)E~001=a~Y9Shj z6wrW)??w?FjA^WsFshNkl^~thHJ!}nd^yzAapc4oRs6}n_~&I#Our?C^WK|psv%h~ z5e*GaPXUZu7L;(ux(ZeZ0&Y>TMV9Mn)b;s`7n)`~@fRmE8l~B-#C%}wi77GGBj5M> z(>j50Yk}gbchWKf008Ros4?R@wEtiViZM@axCbYrqU=q7QX3N+<)kfFKc&6 zN}o8^G~w%p;`T%XzXQWs6;m%dEpaFpfV{lpj7QGxjMYgxbx`skm?)?^eddApsVL1S z}8*u@o?3ezMN$wiJ!&QyzJEPnYpnlEeYE%u*kTg3{oWUbI-DU~x6Pvajsm0+Ju_ zU{^c?EqS7&N4Z%+mSHyg@%_0lDT$jVEbmg`+IfvOL6U7SMJm z5yX)+@s$-kjb#8zeuwXz>vep?CvZ{Dxbk8^fX83SDU4GXP=FD`E%J0w=%GB; z?Y-W}En6rvDNjBTW?C&yd)=Pd0rJd89`q`nxjhOVT)%p)eCIpgF7Lhjj_ZPw6i$83YWt+4;TSlmOWme5cYv_kdit@ky0Ygfz zf#{zT!kB3AC@7wdHT(t!6+#6Q$O{k$J3Bym{5A0j@gAc*4pd!yjP7b|g)^d|?Dl27 zt;*_KfBCX}>y5i*RGoHaYTTbB()p~IOgA)uLHNvaaK-Tq0xcMgwSt4bm6tE9K)8+{ zu4E@=3b7(9VSO!rLV;h~11m!4>5->M*#SaWSxdq?piFPFh!t28$!y46zkWkXLkdM!28xtv7srmE17*oH9fgd*!9Vz!?Z>-E<_6p%3PV{E z&-xiOb`@hN%g7)2;1_ARpAtwVL70Wv<-u#}6iS6Q1FzRxg(DStD9)~x#xrr?z!Jj8 z^363z6esvl478P%Z$pz6vlLuxqD3W%3yAvTG7Q{2dvH)25r zoY-Z~X*hTpoG1gCgMQ?NIuS?smCIMk1<3>!J?C6$UyjFl%CA4l0jEK26nqQk&t#=g z;uBX?6{=8eELo=v_bt+kFVsKUK>bEx_zdWiQ?r)oP4VdZ%^T%=zw#^Pn*4(U$&}Jz zTDX6@oG!mcl*e+{&;~D(w*X3%a#Z~e1nq5zHm@Px$=J=@KTQ`#{=pyq@0(8;B_ha= z2w;RGad{H$O?r(oAiPQKVLCb1As1BFwBeXe%u{AC`wNTFv9 z@$ik`8)2mU>}NkM*B0i>f=26|%{cqWsLkytBNBS(VR{tDVL%e}FsfrcV$K76Pwd@j zg<~bYc=n>qX^PEpAVzjB72vEJ$C0LIX3Iqh;w4#uSEalzNV&}~E|po8%VrbG(AMJQ zwBPwzQl`rYb96q~txlrhJdPEiKv~?E;*yfTB89oMbWx-Z*?Q!7)Q$vxSOR%Tg*-t%dnTp94j3S-V5AWXC#mHL1HCd{!H<SnEaU z5Jo%)u~A}tS%TtV4bJPLD$vU{bS@VklET!TyvpphfJVyZ8QzhPPE8)ai6A;8^w19R zn>cLP?VFdTk-E8_F*U{dMPagRGm1RxkMfM)=Xyiwk>*57<^Va`+V=6CNez6|fhjV| zjuR6kMy9EMT-d@oIiIV>W)qY`Gx4se2ZvCMdO@k+=Cv91>Oti4Hpn4y9BanLl z#Imw4%iV1*TzU|ll8*zm<%sI6(ezmFqvKPQrZ_3W2|c^rB-ij!rH_nj5M%9Gc#z9c zz564AaSigKb$yF7nWfx$>z(rL?|!dL&d!%@W>+JU1?5-4Du=cUp3yESQ1i}mfq=kp zWUlhzzv3f|)(dEo2*?lb<2n5Z52FU&<&!axNRDTWj10$({J|goA7YJCtsjMENw2^6 z`VBN42&gO4)U5*1tn1FyW=RjDZld91qL0ASTN*~QpT2I3yluVsiBV%Xsf;Uk3eeA_DC1FPi zxFaI8wkTzlN}y(D*`Y^x!s5YEZ-ksrBB6!pJe|xI3pErSEbgO77G-%{zIvrBEMD-Y z2-p6vuB=*6uW1@{>&8uWPQD1)D6f{6eHjI7Uu^EMQN&LO*y>Wbl!X;)1*&JjMGAO@ zF4hpU(}9Pygy;0wcXJBZxFJmP?6fEYDmJ~?Q?0pJ8OjJ&Rw{xZGk zmL`evsZS_F=)=MVeA)p%C>}hqX%%(jyL#k{Jh3TOd}NGz<-o)S5BP22i+0jbjyP(I zl!2Bo1_yB3DuW)Ck+efM8*GHJfo9yo%Q;?B^1;J~ELr3WMehx%u}Lt<%H@_M<(ovN zU~&gM3oev25*$Vti}tME|<68d#~KMbH~OA zU&zrGCmK+YMel#VDslhQ^3!DE{jsii`}^Sg;`r*e2Fk6MFoXk z{{)&2q09k|rl1oec!YZaTf)p|cV2@M9Qwzs4n19BddrVcF%4!4gMerL9v)QnB#sV5 z2cTnw(ugB52sHp6tP0Yi2=U|m7mR-6M`);t@2}Z1!C02B1+|$3J7|M0|yolaqdi_EtVBx z0M9Iwph&O~nf|eiK|1i02n7LtZ~)MaLTCMz^)Tr2;3mMLGQY;)5egcGB}K&a)G1P- zMqA{rI0x4m3=R)De+Xfr00Ghg?xc(WL@SJPpow&$gc@GTK@V|QgeW8|IM=5s*S}7w z^f^eN=orMQKT9eoMmFIn6H6Z1BQ5WwN2ywYVxfr-dnj93hQV*Og94t3chb;) zC`#lf>ERL)e3o*+NAr8yu6(QkXMM=0gvQCBPadYo7y}U}#ZSGI_eAknmzz7gs?)BN z@UGLn`Sv?)-!RAxYY`D05SUVjCEp4zV=!qUACJ$Y1*K{#+J&m;fQ z|MtK9fzx?PO$X=_PJ-@h8(H%{Kv5=mQq(8B19YTwK&@~SusS7Dn$zr-kN)q!xj*QTu`23CIA1EhZIMEzFzj^DX z!&%oOd}Sqmyr0pVO(K*g9nKa=)6v84wu?KQ{<&UC3ysi32NvT@7ktTSa&*?HGwFi< z$eRGlE`B;kC^iK#c)eN4M!3Qf6e9FQjYk7CND1Ner*0Kkzr zt%TGx4nyV@U&rBcpdu_Gc|tyD$@){Svbg@j6zLiZoaKqcNjj`_U~zH5xM?Tor;U&S z1~}v^`Aa>4{54AyGUZSJt3Xu09(173!BdyRJA5Yp+WLmujhPLA!lf+amI0Mn2y%kF zF_S{xC?9JtWn2H1Q5ggrZ$dG1IStDmTdK>BXnCnw&iZD2W{H*gmJ}qv2zf;_9xmnJ z2m3h2=I`bYq94Wj=a+}NJ?iIva8^7(eNKbKG4j9qPyg#?jWX6zaEk7@K-3Qz32CKx z0}^RXAgTI=cfdiE5)O?>P`dcf!98HS`hR3tLc70He)8A`gyP)a!tQFaCS(T7r z+H+`}DUde~$g4{7%$g0thP0v35zhQ5pN@jk$qs=PgusnX$SPDh2osh=Y}Q041JVZ< zjBvUkiA3d%YVPF^}U7PXIKshsG% zkyh&7Q!$7-a9Wi=pD0k+Ay(V|u1_Sew&yd4@Li6j1Ii+;61xT=7yJp7#?OQ`F53(`eCrPN z5*;X&RKU=KoG?8G(InGWc-`Ot@I#pvw;lBb55L#LfXPx0{J=3F(Ec3|F6xbfqJ8oE zE6N!Bpp|ge6uAzNA1Ol-vOW$Te$yS9&TH#XVkpMh>Dj20W@W^Qay_vp3|Wj_xnYyB$NkziPvSKh?JgA#Z;Wn7*Px?6QFQVmV6F~Wx_O^HA^f9F75Rc9jlP? z{98e3v4{>86m(JbF0GUa9c(1<%{(m#9Q&jeM_{M zR|-qMP_{{S(&oW63Fw9ewBG~zh4n(@dp#ZD;#Bh%@BPb=tpEOh`o}*|v>xT$NqFl1 zDQBb{08LK+mxa`Yb>h(o4ZxrT6W2T&PI}&~*r0)QbY`9tn0Aj2$%>Kn@X619T8`D( zI1oOs=`ljV_ti|fyQ-*Mv-aiF+aZ` zWuqyIJG&^dE{M)!8YK|fiL##Q*YU15@2U>*Os(krl#ivtRD}h2(z=5PpoQ{KR#;_B zJC_!htT4fWb-)G@KUBuybp-vz%NJJo%P*E)@2l6YyYpbZa`c4TZoDKR07vuKp%ov& z#v-SD6crXQ)90`VqOMslaJWM>9hHs;QlSZaN=q8>+DaE5tSLGtiVa0c9Pe%i;c;4T zBw%^Rw3l*;CvVUliY0kP%Yq}XwqsC5N%GBpT9~Z4>3`=*99a*_O*(O+o-78^XS&Qs z5?olCQjVf82S4&NW8v&*uDSX)CoIatW3M}7wR6Li+f{kM4X_4mJ}4hFQ8VgAJ4Aw@ z0Sbdxv>8e%mIVOfPq?S^UpNEJ}D0$KJwLYm#<&b zlzp+>e)G-po%g?2zAbm>jkn6urOQ%|nyD}YQd_9%=7H%_A=I6XVvev8509|A^9!;L zQw70me7{9l=cyN>P5jjO{h|I=ybZy(;9c#IQViXE#*O^`A4*Z0K!UqM+zD&K&jcrp zwCVRipRg>e2U?2Kbojxq_DF)y?Iol9tgGC;&ps_Hnr`x=UKcb{vfGP7L3p;d`L)FO z&KYHa)yNkW?hsW&g>Z(YgQ8?gLVm)rA{p%wV(QWnWMoe7)CK1-XqE#=hpX$Eoe*$C z8DFgJVGUtrP(c(OG^2PD2R?b}EXFNCz`EpnS!jIt@PRD^ehwF9xvpnV!B^H?ACyhr zsmRWCKz2fC?<#fbzjx;{pdXGVMl5GT0G@A|RagY80~93YFJimNd$Y{8^W5_k1QX z?^za*@5E<%_(yp$)eOZA4rVu&9Rcl{yydJc>&;iMUNPUEJ$vf9N8K2tVwOQgiH~m0 z#TT)ror+Tb`5hXv4aiSkWC}&)qhg`~IUzlN4Eh%?Togu@0M;ZYE4GR`X>oW&JxY1& z-FM1weE+x0FaPSVmABr0x6IBhlu-tC(RQTr+0=nPcC_8Llu!L2wV@$+6SR9EkdmZ5 zn%?cWbn)Kha}5~})X#(AtTerSb`Z{yKln%8Yu4<0l#T5E&bop@NC3wulPgZUIkX~x z=f9-max4jwHPqCrlsRw0h$Veg2vO>t9i|3)T{OYBI>%@u+g@wRj1$1bGR}GJ-Mb@OQ zd)CkCE6DPYrdYd)^|&dncheLMVTU$4l@&yzIK&Op20E9mAZW(1O)!C;hEYtnZ0Z5ol|5$v?Z;SiKFiKA3XHV z?zEB9-nH}Jh z7DW%8JfrxjJJv1=3|V;b;-&GBmo$+-4!08@0|j?#at2p?QF)XJz!UO-(~8J-h<4$f z`g2qbnYLxEx?#o7&&=9dN8T7{@4op)xpn)Nlp8rfNzzy8<8fDmB8fv-8(R5Ul@N(8AA5l|z>j$T@3@GF7(M5^@yhX@VKtsk zz9v52Ll1P{yZ8wQc(+BFFNX95gk@r&lcojPNW`bpf1ULG@{xn^%nL-i-n5iY10%%z z{F89@Ogu?b7yvBFg-#!dME=?Eu{mAH6HSSV{O zb9h`K=ECXCw4&kW`JrJo5p-A=|7PuKS!eSy1;j|0s$PYfAsT)=#yZ*d0 zFmlOBmTO#6K$M4KqT{Ztt-BtnRA_%_=;n##58`k@KI2H6@s=w!1$0sd;S5IjN??3| z6_(N%hyExFMalp~8{^;`_}~c+zM3~ubcDyC5WC+%O+(PpZA;>EjT5EM*;M2hWyyhf z1`4L*$OG%6@PiKt-h21G^3J>OdgJHEKmCcVNH%RaTyDk9GK0$U5`yqkFYtOjvf@Dx zH1u{Kf~SKZ2k#n^j{)5_$vS8H-h8i@6L_2iZXB zD8vQfi;20}(az7Ca&~+raCpQhJ04DW++o?xYw)U1`sR`m?!?<#w&j>lRaN-`ab(FAoQu4UJUA1#AFA<)o?vWTCxh<6sUj% z_ViVsE#;ZDw2K!ngrbyH=Cg#dm}ckZr5u`BK|>Gxr(CA!D2b$M6=Gl9+sKM529GF6F2kS;=UO+<-LM+s{q^vGXrJ)G z3q;a(`iu|f9U&p}z(5?Gx5hCDpB1B_d1ySQCVW$j zm~lVk!GVNNjew$*7Av2B@U!y&{BQqT8I=+`WkN~psG+eY7Z$kyH-4s-4G4DdIP$=> zoS&(M_BK6qXu_xyg345d5xrwk(%BW~&f&cHk+&Zt{<@qx3o2Qq-Npf{|i*u0=D6a>?AaPqBt zSe9d6r)6yxEBexr&`JA3ALW4$a==e{IB3ad>P8$s ziXI>5c=^;1xg(5v(H7ZG@B=_mVnMRWm|>(tKFNo*7fT#`N6t>Zrpm&Pc8Ye0r3Uzr zJO?O`blGO)?Fsi=@R2o3cG^*RSwDD0`FxYkZ#^-^zI^d=dE<>Ye1XN^{`_ZUS_+kP zBB2aR!6I9t%DliwjsR%Nc5Rxu54;`&-RbK1c<;soS)VTtiMKz7#Gf$o2mcvslsqbf ze4hKcK@`ytFr-7c7*o4s8cl`)ja=MLW#*NDS+^j#NQ^S7p(Ff&!{HOne z6(%%r){i*W%m6wG$9ZVTiSbF{I`Yp;U~MsS^64N`59&q^(@XJkdbE&oY=yfi*^#CL zBk-h?7${*k{UE5L>U#5>E;>ReV=PI~Q%3ML(vk*Y&M7Hp8c~{nExra9Q_}1x(2JG8 zQ6Y{9k(b{eCw}GCitk8#{^F(ha%_te#gShL<*py)Cq%uw08MdSm^!ltBI-aIT+$3s z9^Vx+P4kyQit}Q>{yY>At}ql9MUX#vLK`q(<)#dsIF#A0*Bn_o;A@ksvV5>4t?*FL z8qg2}PAA~A%Sw5)AD^6JY2r|*tmPsr)Zc4&qL(#Te3TUmiO)yb0OT?UtU3;4<2JW8 zY}rB+>6yl2T{0UWA9XWLSkTl>{Ggtp)#Yt~utLQ?LRNTpF88H0an|UW)?EpS7e| z>X5V(fFSb;V_1{%+c$JHy11u~=TVeReFr&!GD8Woa3Ay#$9t3!X_FTSym^9vH&Z$~ zgWEy*BR-ZaP&RSt?~spwFlAylTo}s>O~1D`w#)LX_yUO=ZBQ0Ieq>rW&Jt6-DEoCe zNd-=aB~4nynI63E@U#sBkJ<_#jP*sDk7-(WAPD6G;3qy5B<+E<2cXcHJt(K&DF+<* za5Gp_E*yk6mMz8cB@yv#ek631n$q*f5)iTnUMpgSGw8#Y{k^Cs=>ewyE=O^M z;gXMpqYMG3mkhDyY1wP?As^HM$4P+zbXFzYwQ*T-ArNPXXE& zssr+aNOV9t9y^&arQiaEWAFO1ppKyWkg{<5>j_bWB4tE3J#x@XgGZfW?TTAo5F}p; z&?rhOCCbXNXoOU7Wu07SJ$IbK@M}KtoDS=UjzK3Nuh)L6^e%}qn=#cJR?$;qc%#ZHSUA|c&|s^X2VZ8P1d^Wecl$t^e3FKEU#F5bkNE4VDjDx>2X3(|ilgaqUxwDyCPm2`uF z{2`O^9O*lF6;52n=d*etQO=?qe(rVgH}d=3M`>{K*Wh*Hl&uQuSHY|l4bcH*$?(ii z-p;c;FmZA}!f@)C5+v@Or0b0;{iFMzmw)}Q{$&}{GhgMf<-kqld}T2!3xf>|?$|>C zVGZ(Yi}Q;MYV;YUEMAkMvojsdU2w{yZ0HF^iKQ0j);48vr8VhMS@A%SC|dp2%LDSJ z144j%m8Ik4u#D*V9Yx8p30clct$36sohv#4v{4p5%8HIwa#Luj8#kBI+ zmLas1mPRgUmOD=@w63uN~HiE z_(BDe&%`lp^rx)wPO`?DG(2SLjRIu%7dmo!&8A=|=m_H=xA6#Pwvq93x0rymyt4$v zfWeYOSkT<58GL}=kh}c8oAwW$@=V;a_(I%_j?xx}MT35)g)IZoEcGqa;GBuGR3 zl1`cxTx@W;P4&*%PIlDcH8i|>wW7N2n5XWTp5Nf5$jR!oR^$rJx-(b?#5dAi~sRomIGNBOEVK? z&pU@Z{%)AHIHrjqJaHhGU1Tl=;AB;#R)`3fu5)kXn;qQpabMHI@h z+ZLQNWM^9ne~k7EUZP;@PDF>z^pnlKm|P(ISe7N7fO{>mYB+lcE|eyg0?+I$qex@J zBkq3$4}745@yzd}WBu6b74PzUZ+PixF7#IpWq~sO{PWMO7`HUA`Iw7hePIKeEmGjP zB~9~~&eBGC>yCM-^6{ZRz7nF7Gf=SkL>qCbh=x${-=CgJncC7JPs1znI=|@QixF_9 zPl9YGfH0=`@D`w52_rwVk||l>o}CC6wS@Qk2YaGdmY$skdn|3?H~$cK`S2J;jN*aE z=CANJt?fE}pqXftW z7t0_w42FDr&o}C{6K%&4pM}LG(YfVM99f%X2cNUZ{2J+klqT%@xZiVLBJDBoky<(rHkasE#GUDyna=H;XTm2W+;u(hB~Y>l~m_8z*^$LD zEup;s=_lpGpZ=s=UYswRYpZ2Mii8e|rQ(eU3t9*<%EA^z1MJk%>Da)@5gh9PHhQ|) z2pA(h`LVpXe~)JiXrtID2cbZr(Ltf#%C>QIp8B0M_~gZL^%AR-7P`6b0Tt3XbgmeTfHPWIibNa}kXFgwJor<(r zE$&Px8!M0yTv2O$06x|tmKbT0&y=5lqQtVz`m;05W(qsetogCYmichttn))BJV5aU zFHjs&HtBq+vgoG_@&hOdo=J}d33PDMKNKDYfbfYv9P&V(Y`?UK!3%xV&x&%QdxVQ} zQTj~DaqtqHC`53OpV#KUA^hirQa+Q36UgXd8C>`k;cp`7e7?vpQ!cnc~FP|%M+@ZI(joY9nFL?(V4ZT7@|C8()QO`tbZA=+=2y`B^y#zm^Pm4r?&oD? z^_6*wB4j$oc}%R1z~7}Yr-oV2qy?I(4^|!un>fnMwD1Q0;}q4&gUj|p5odbyplL4@ z4ezXHvW!4{te3{8kx3s`7`#AH5k_(NV4@vt9os^Va&b|oSi^)~oYyNw3-W`q!!bQw zd9_xSU&isPtxdiwKlbONoVu8qnH4@1MwCOjeBTXSsoVhG0pd|qyrU>tsz6zW;vOe~ z6(!1u_GBurmk!^fzA-S+_B>;CC$A|lr^m$MDBAo`xbf&OH!;^X);)mICzyIGndE!g zOI!HdVzs)q;k?XTpq>2mJ<8eRyrmQpmMh=5+cIqUpN`-859?0v4Q(~}>z~Fck?}ZgJVqcl*VWmE{ZkKENkZU8MS$t_tZyMW;6s>$o;aq#4yCOb zO?Oz+WMhZU&n_J}5D4gGM|EM5-=2w2$FLAkdf<0DEDzylG)3rYhal%OU`88v@FF4U z0y2)U1i}>1yfx`t4t~*Tppo^iEDL2tJRKE0Iil0yNzd9Ne17UnBi3!vp)A2cXCyBJ zL3|g^H}2#9nTd}-{-pfmr#~(qefUYackc`TW)K}1p0mb@JU{~q3!30r)(d_>3u!Fl z3J+z|wTJ=7!i+u zhvl4Dx8$2>eCWpF<~`R|S-QXvg&k|G&;l=6{sCW&9}Ac?w28|R9k?z8@5n=We0h|z z$e<|hSW$ulek;IfdvS!K1W=U3r;O(G72cTNs%P*!;*l2&3;G#@BFD+rRbQ4f<`(8P zt&aZ34PDfc-vE020%!khF-%hy(vFtx|2JoZ;RP{3|E%8%niOe6R`8P=CLgUA{vR)ISo4KAFvPFzW-cMW*y0BN$L zy6!ghc~OUGlw_MHfYhe30U1Z5r2{9pDbpjcP{odHTvtY&13FmzzrUK$V;;ok5I#HJ z3@q2LU6sYYP&ULzE(B(={*bj>@q;A?HpJL1=WC5QrDF~3@uP=QnD@&kpL|k2`|NXD zQYeO0ehf+sP;LXghrSLTfENXx)*1DrO`^Wh0h~v9dB*Wfy>Zkteic(ZS4SZ&W#JopqIe%Zd}u{%*%fbnp|8?$(47qw@FtGr zWxR(X45dXq1HY%*NSpZQDLOJmxXPvfjEphp#>WHr9Pr=T*-{(tx_rLaK^fA2s29KU z1P52uU%6nz3X{4)hsuwes-%#iLo}H-g`aq*CwOg|J8kj0^M}zzElH^hc@-xlm^E5cZv=K##g+r-y)+`{HvgT zCq0fZI+}$|&uku`bO7p*3WTiS&CbYTdK|hRwpGMbns^RiGZ>uH*yc?QpuyRy6a4FL&MD5s{mT=dzdCsN4NDl)M1ps8eBcH3IVl55(YdsT$j-0TO7a1fOqIf=q{X+sQ*ZlFB(m z?-qu}(P5}7esrF&X6;zRQW$jwSo>nj|aG0OP?#1#N7sn~s@TjzPuL zIsqEc!NgN9I)A4g44!heVgh6=9-4?lQSzK^i$aIbC`l9_Kpndf zG_zi}A_d9Ro3x~1aEbH5$Zpg*&yAvpQdWRaOneHfz9l{rOkUSj&(U9*c_B+-tvj!H zFykeveH#{##@aM82g5l*!7Pn)&aBrXckqg1eJpQHOi20bZ&L&Bss>}^6&(I)73h_t zA9)5SAImn^TpPkne}a0E+X%i86*JM^G=R@)DnER(%n)YRShd9ADU5omW~L*0rPAp? zT$AGKE6RZYetYrI+xT6uAgXa}-ZR}EISC~x)BRv?r@ZsV-SW3T{;}MT%Ay+V%H@k? zLJiEWGaYkI!g%G%RSN||^vl2UJ+C9a{nlIdIm&BVd3Q%vc~*+ebG}m_ z1iN1zHnZ@vQ=xQthaSR0QE+~4R2_ZZxKNf@Excd8a!HC{+V5#ahQf&sNP5b2r)cO& ztB`hq-^8PQ3CGGnp}@ner+tYf^q@?@f#M)82d+@=q5NE)$|61QJnz}s31tF(bRym< zhxSV)gq2Jf`G_Yj_>>2?yL`-YaMUN_qRvsjkO3eRdK?x9KRyZ+1&PZ#gOkA{tx?k| zz@p5lbWXn$$fFi@Stv@@fSE1bx^>HI%Crsgh=QgcQ7`I5dXys1lm*=Y&%$a8kub{S ze$M1?@|5}!Px-`gHJMiO)dFhXkme36)EqrF<{z zJbhkv)xWSxF+7k})DvapDCMO)x2JfZf9@glA-!;B2 zTS0cxD1YVS&aEgjL%M`^c-IjZ1X9^tG$t;A=Ocb6hG&sHKC1u4+?7`^%88iw?wfbZ z^7CiqU;oLUl--@Ja{byhSv8tUsZo?cj2|y=z5RAf6*t#B(*5c$|BB-2l(Xf{H{UFm zHI<}c`S>59jHwc%k~+6WSAKfdw`b?(jI1FV6sstvZ`;lECKkXc7{x&c@%s=RhPp|p zgto3Thbfil^9YT&nIP0Dnmnj&?ygQ@610v!2kvGaZ}fcn_FWk;* z^RO0!-=W;&vJJ|jKHvq9mFjUQ)Knn2Q0mdn=?D+N$J#}SB2yt(@D|aI^mP7wiSQt&;ukz+ZJZez$BIzS zd-5V8dydEegJw1P#PDbwqvqQ!e1&?cN-CpK~h1JoO3ArIyhZ;ofU;oU!n?BqF^ z#~=ZI!0WJb)G6!DbH*opDMi^228Ab3utDiaTc@X*L{CU)jt?~*(6spF^QUD@Q|~u! z-IP+>D_?y2N%_$a|E4U>FO&sX-^h}1f|q#SsUJWXd7&)_Hr~@wE@^0YmjUD;;9P`-g3T>cz1Ty6S~2}bA}NQe#@;~(nmV-Qy%rVWhfp1&`o_9goxuEi=Sr{ zDjS(7e=Is^1d#hwlng%bGwVg)piIhe{iQujWAnugbh$jGr!3Oqcn0!g4cZ?dEf;2h z`_iS$w(L1Z$Ml?~G&X}cd(4y{MaE7y{2G!1r|c=k`A7ehmb`1?_nP>yDLLDgQfEfD zzq{k*9WR5a-Ym${-N)3-i7ShqXd3>ZQS-Jbo-I@~(s-rrT7UA3XA}CTirnbmfW< z$chAYd`+#za5}8dp9#pr*CC8lFq4s&oo{ydtRTe42*(`cM`; zQ%3qJi0QzQ@i^ks)p#W>7Jf7doC~Kvv$5OA?5d;eS#x2^#0c%Pj;fOdfZ<7*Nbh$w z07{NJQ5U|IfBN)^!s2FkIwYGlqZnx+q?U6$9)I+(`p2<%}?t8l9c#I|>Vh$1@fxRuT#qV2wHQ z$5cDog3nY}O~<(U0%urJu%ug8y^t}|(ysvC0rKuM;K_$qr13Oa>}7qMwQ$bi@&y&~ z$PTFAWkX6gFWLek=7%AV^tU2Wwkiyr7LE&xart79xfA)nIN2=(?nk*TOChxs<*PkqIZ?2YmpMO^V z>M#FFOq?y3W!X?+zKWsqVws>UsT}Kw2*anJe(E3A%3W5%SlD*ORX!sz8x^cwA`A!* zBO(AE(u-XZh?tf^D|qN&l#Q^G#+^zE6hTLD5Em(JtVxL`A0r1LikI&pk#O^o^z`;B>jr<<{bQ_ECzy9kl@aA)QRU@ zbIvlMn|kpa^^LVumTHpsC?)Q>yng+9=e#Mi6rQoBE?&A|nL;je6K7#QZWSVLZuVGi z4GPfd}|gdhLthpPM|9|iJnzo9#={H?GWmtArkRuiKSLVyEc7lHwdk4f2z(e7L)bYv_S)>~qZER|l$9Q7xktwC8A;7>&XE|P^Gd2p1^Mi%W( zS)}C*WLVcyf+#@6BX`IFRx*4;ao{u1qJ$U_7_?Dt$wzQ`%BxQ7ce$jQa>2(lG{Lj9 zkg;sZi(Hc)+$n?LfflSU_{(w-xa!j<$EqhkGzU+?0e$52S8W;;xFKmn3X_?~G|E_f zgU!%E892(NOdJC$b)|o>H$Xk04+Tm6{Mjp3o@RQ7`v=0KItrsm5>m+rmg=#>)n-;q ziaVn3V6m!9U(PKzrus8u6G92qDT=9?acc|jt^Z}Bhbn~!8;u&Qg>+s=$Hu9vJ?xWHFbvX+41qQ#8H;c zCp_TgoLusl@LZz=7k*mfC|LLn9yW`7nThg|hYrIalt6mQA)Ym9+M9G)4)jw4c#;DW zwBUHp_R4mFZg%f!dvLjf3W3XQ@PdnH{7eV!G5wAi2zB5vK2yj%LYD19-prrx05pIf z+Q0{2oKKFhEDydU9YI&{fwEDy$Tj(iw=$G({xofbf+C)&F|?=roX7)Dem%vY2Y+~` zT>1_1v<(0*@)L$j+My}>oA@Q=$I=veHZ`C@pD$z<(WE60gA@IO_3eD#)wCId!dE9s z(Xw=LB!2E6?v)dcw#jF0($i`=eu5c2VHw)zJNj+M+bB6?P(HC9xFidoTm0X9_uX<^ zJ_Z)mhaTuMsGq=lG0wb0AK|C-&0U0(RDP%ZzOJHFMDq|ZAeF(yWW$L;CkVju3yl`z znlfKgjF_fTab;z>{MEnxx8=cud*!mGHgqVg21fG5#U(Y!l-C-4u21MVen1af)~G8J z%s0?*i2RbwZ3Ko!_Zppq6)O~`abF?pLMUEFEJjGCAiKK~TI^ggpS38~b7*k#BGgdN zdtQBpFtHw)7FO~p8H}IL33UVXi%UQF)eDTaggG4C?7BBf(oo^cvgxFJ6Krc(;ax=u zgr$rh)(0Jbr0i_*QvlDrPRJz(UYJ)tIx0B10SKjog$h5g)^i;ZK}1m!4y2L}dWxrc zSc-I3rr>-FOqo%4rI8$9txz6$=^&gBq+=)V(t*&vfH=y`PD=X#(Ydj>G*ekycN{W7 zhlfrVE5Hw4g>nZ_BBa}wb;ReISldi3Q_-=sllAPSE%+aNjTS@30NMfk-VjuI&`Y^# zb%L9B@UxkNfiY#0-tHnGmdo7ZM%I4?p)WgrwOg)G+?BG#T1Ij1S?O;0&^t3sekF5uX0}|HF?Hwe?efOmH+)$) zatWU%Wr;$2wwIDyP64+Y{Q&D#?L&O0TQrce^^GdZekmx(d7&_c2D6!|+2L;4-(D|o z+__#R#MmQ7i=EB#(FY%tzx<28kP;d%*RS7{`91ENl<8Oq*3!k8S|g1X6e%kz&qw<- z9#e11;Z_>TBrOc1a{wGMh$%A1gGPPF9=|lVqlQ2MV9rAy@hlL7-^x}vT?_eGJ~SKx zk?UEEmH-S--+8EWpLbx;a|fD+N+3lx9w1J3@|o9uYG~9uWg^@NHa-J{h1gT(z~ezg z5&|#1h9oT1jUOUo_mNJ=nbVx^!B6;{M~OngM#(JDQx2#JkLhr9E;=AQML_Ayl*N}o zT(H2jwXPTEWT69^P^?_SOB+Nd4GYla2$$=v@{{j}M{Holt|#;oo_SCbOh2iMXB?(K z+Jt!ON?OV#40=6#QQ352Iy+(1pAMf_m}MUPW{48kS%agHuPluaD>xN z%yz&@Ug#zqAS}~@6CcBXXX*((d0Q0xB|Q%77|Y3uRd^_uG{ogVNc-@Pat0surreOF zz(;*NEmc2dqlNwhugH(1{G5_ozSQr64&+4bR^s#svk_)w?0#DzGG!MolqBaweR=Y( zW+L#c`BW5MEJ`8Xlw!Q|)|=(}t(%e~?#djE4JgSSJN3|uZpiw@#$&t(&rp)Qi$?4D z-nIh>8~Ob|`eQ4~b^?$Agb&JWM@RLa!j9#igmZv^u8VTRXrT`xm`4)i=JiJIZ@j3fH3HR?YGI=c zgoF?Bxyz7F%K1vt1tAa+Q|P!5x1mLrA!jF<0%Bbfwzj_JMxyapGhv||Q{VaB(BuP$ z6oJy9&|}KVs2fUxbU3CLVnRb{P+Y%vpS$ttjHm?;f%uN=rg1yT5rP=n7Y>AncHo&& z7-fK<0i+`j7IL27L-;8h;eYYsx$(dkEKBN{Q$!S)l_kO^DZ_%`Tqo_!h|bRpaQ7hP zQzrcJdS+8E@^eCg-|ImEKz|gCvSw;`th`bfhx_H(lV`qgfluZ9C6~n8-!}^v0uCP- z+)w~~|4pZ6XB0fNPg+>`Y-;e0HfwpTLx!?!ObOK`_<@B?`N(eg42USk9d%~#LMO@} zg$FGFWz+e*nMFN>3xxumdhEcS24iL{L3da@7y>?+jogS%lnHsBKYMCfhDRtJls`%u zevMABP8dqTZLToZ990qDb%_k32%$Gl8ld#BjyK$1Gjp@98*PuoAS3=YP~lyX(ZJ>@ zR3^We z5WL|v+8RDs;oC`On*V+lJ)EO-2Wvrw^^5BT2oiFr2()QD2B{K4`}z+i zadq19;a*vJ^}H<3PnO#^E=ifhkA>0ce)v~^U4HmCKlJEu>*k$u?ZyrNfD{df@GUJZ zsBve?Fx(Ju*($>8H7s@BhYucD;27BuDmpa`fdG#x-tg; zBjjGBwgNo#oqBY>P=*I8Gdjk&rigrj;AfSOAmxY;(5V5Jp*Z|Oa5k^|!Rh#LE>n$y z&q#YH+6iYN9{>YiJHQYuG{|7FopmJ+G&9O0)O0weuwnIt(s}&wVF(wzC1WE4D98|c z6pH>w0W01~2vs0_Vk(G5$?{6@FO^E9#Sz9dtlnUv926Xoc>&Dqpj&A zC>h!odBB3AZc&!7n@6=C^J34AQbgQImddP^Q%14QV!wpw#!$JC^3CM^h}F( zC5-fuCoE+6wYIwIa)}2}mZTvb#mfN6tcLagUtE+uZ=RZu{==G#`WTJ!qG(;F+eHdc z@+9i)NaQKK(y2D(M1634VoEc=OR^mAlsj*}S+3l;Rpu5K%dyfNs-1_1)X$U;V+tR= zzyQK*DIx2C&m&5b5+WQqrGGk!c?D!1pQH3sAIL!SR{a```Jlr`$A@nJ(>k`7&ql#8e4@ zr$G_|1Ts4Dgx5U?&m%xsieWK?fIu%k4F^D5bfBOUi-oB>>mK0cHXQKK@lz0?g|#U! zHmh^cQH@iAKpyarhV+bxFvBK34I|g31@`nl*U*0N52+yf12~`qVWsS_g4kHmG*J9< znA1giZ&0Wn1d@+q7VNmv;i%h;1|T|gc3gha6vcxgW>mIfQor%-+(sI_VBpDjm!tG7 ze_&N|)av?menoM?bOfD|j%PYK0~Uwj`DH-pLt%$fYSvyG{A9z~+7~UUz_=C++-W&* zvkm9)ux8jX&dyIH^rp;M?&Ra314Ra3SPHhJbyAnG3F6HeWs7a7MVjAv#`v>VoB z8WTA9?DQxn;h;|7fHuN&kO0gt>S`s-a>bhV?=b8W1$#P5oMAPn9%g@V= ztC!2doR}|WBFrCs_-Xm4|Kz{-Z6lmfGAx=--)RANA9lNS5#uLxr#)bi#Mu4Ys${zxZatOQ(Dgn?JRtWs%^TsQZ2^4Tz zWsyF49*3PDJ$&TvjOmC>h0|&USJr`iu7k^uFJSmW1VAw``@oX*j=I{2O^vkHl*8%V zk(D>gPsp`g+SV4K!r&)i@E2LmwOD9?M}XTv@!$lALtgmF;G`G1;er;@!E5kiMKe2M zjTp%Mq@i2}B%X0WXV6W1C;i~Y&wK!MVX2~Qaw!E!T*~bHC`bk~%e=w~!>V){PAh(@ z4Zx1_VQGgoV3rCfmvs2XXKslXEH}tUIii>eKY?C+O}Sa~oS9p+QoMfqu9V~*|5WY_ zg9U4_O35!GFbf2KPy00Oocu=XCJlB9BAn;Co}^D6ncm6=M*iV{{>RYf2|TQId{JH?X!mr9HrcVJDDjOH8@h z03aPZ z5X78XA)rvVDuu%r8k7=sk}y(^_{1O*f+?J)1)7|s6V5p};#ebQa67WC=>Z9tO0wRF88>qr)k zehn@wT@aDYz8;(iU-bRM#-gM`HPk|SI*<=1YMdoTHAW2}kF$(RNRJNG>0Ul7Z@+c7 zOh{R7YvlR#<4?+;{n?+F4}SV{Gnc8y`|rPB-h1~Qf7Zm$#6rs6{!Y2DB;}`P*33|p zG}O|CrH)br=m0b-(+UI(MM+%7({U|8G>;IAk8U*9u@D^7+KjF=Fe5x8`uxJ8M_$Zx z)>66h%EGO@T_FuC5(Q32H;4`3Pe+>cT|NYSE$FseyA1)?RW7F$lnFp1yNn3Br*uua zCOSHefI$EYfpe9_BaHAHiw;~<8mKsP`a;uU_|CB&rd#mFWjFL?J+tl!C=7T;n{p%5 z^&4CYJm>V}@4}GV5H$Dh-7EL+KQJEFD^Zp)`RDhf06BsaJKDeUz3-M=w{E)O=*S4s(a}M9+irX>gh zI5H1{>)XMbwKLvvnFhWA(OA(T)3u>r0|K4!W0vjjn%s5h2813vlqM%x<`%8NpRhQvp`l20f~({H&587B<}L&$0O z!~=DOUZ&FIizOo$VV6rFq@zyI$-o4yUAYRY(@P*&Y~m^SS=*;Rv<-ar>{2-Sk-z!H zCI1#UU&md%e6`%T&8F?mGOzwTDqLzrv2M6?pRFiia6hOM4u;GdjgDEI#JaI)7*&M3 zCD&J8l$%#Cm;K$X^7*G9mp}W{Kb64WmnAXl#a=q>^($A(ul@S3$r_A%{OAB%+Z&?g zq};xJOV-Pt88kmP?+(R%iZn}9j9ua3Y15= z2z7QW036Z5k1YI21JOZO3?j58v@;E49g`8Is{#Y+iyW2uu4Y$!l0?Moi;&=HU;ta~g; z@Nk@q{Jf(uIhO}-s3YN=e4swi1g%*nd3ncA2zdy+tmTq6*FsSk30PxfLvFzfK5^N! z@*`YWXvhxjL|woOO~@nR$aAhI*KJ5T-m`t7k9vm!40=(<)F)&y6eW4G9f(5#5{JUe zO)PLH1V3X3o^;@+t;p-OX~knmU@2~I?f7yJ1QUyxwMx&#L=QvF(xnTUUSE)b!) z7k~ce-c6mFo|kgds4&W*?c?&!TW^-{y#F0BmnoGRn8wwp#W98}S1)O5KJHG+O(Qfu zYz-#Bq}V*6F%dBEqfDtdLPx{W5g47YOq~D36ncG;^LiFaMn{E()u~5AFf{5WVH@E` z;90+n-SHGy%AtG|ZwPQ4CZ=&H4@dZc1dQ9BG5vw;K*{fH*c1Sujt3`>-#J!FTX6_1 z*IV)KTA5UpE&k#7=9YnrILh|#LGLi|#1WC`1Tp=>Wu2jc+j6krVx3Kvfd;p!X-#>R z4!*)GU;Nu#rh!Eev}ebRdJ{(7a6E%AJ16mU2nI<8Bc}H`kf7{HmmOhsZKXVZ^rZRp zw7W)yg+rMD?HEtgSoMZK!ojf-WQ}?cs~ss9d7*9S(BN?$RIb~+f@}lANzW_@YmDDN z=kT=1b2;1ykDPf)KrDl|tP2C+PHT+~F!->&#m5$V9gFS$qlZ4?G9^XB4MPlS)DcJd z0OiArRD9F{c>_0f4_cK@vj;YJcn^8R$_{0k^~`|+{D~9%SlOfpr~~ETa}E?)p}&xh zUqkg8HsvTk0|1+4Sk%nGIK6@~F(u_jJjd-eWgV_b39hei`a5(!7-7I+27|m2AA<}s zG+d@6qgCuFJ7 zDSqu&ex22%m7W<_&f*Ap@4DFL|E3#LL$Lp`iw1q7ax*mR&1QVsx)uwc5%jd*wp>D=~$vW%sI zNDrWRGTpPMabpbm;XO+u$PybV966iNpi22xR&GDxIDv1%qyI#ml`;H4UZAnAfAWL) z3{N@$-V-PTn&40HE;=0PLz%|!JAsSyhbS3jHK%^0M;=HIpO;r&IX~B?F)KpBAtTwI z(1xRppo1`;Q{kfsi3cZma&rgBa^Sz^K#(#>9{3A@x2_}4;3qHgPdVU*Z!FQUUdXvf zN@1;eu`*ebq+6yk1K)j-EOF^A(#yKuXX!UY`|B9|^KmaANL zBRrJB;Owb0v^VrYQ`9fs+q46bCh7}BeAn_fVBA$W69y{Ea|42xy;VeZQHN-9{D%+Q z`MsNQDej;A@UP1!AAjVI#u+m{7aWx}iK2ut|Fhrw9VwlQ%B#j^)YU(3=(%?Ny365) za~d~yWo+ER}pk(zHg2-v#2wjpRX}EZ^zd# zO6|e#4y=rRCt)W>lcu)h86Un=jt_pZu_!~CR4g+jwo9z4Kt(txwHoN)w*15h~3 z2FS-@_=oo&_;<6J?r{y;(uGT|*QRjr$(zr=HiII{3;0+ESJmn0$#;>~jixnwO6b{o>EOXZ9!rC73 zAfRHboRUw3Ck^lqnI{Zo7s@R90T5|<679lE8uDd7!RMX9f^;a*;8(~H4%&H#KY#~V zJ(HI>EJP2sUMr?NE{)+*;gxbAS);GBE;%zZ=P&2j*}i=Jn(v6cbmelnEFX9EYPf4x zua+xZji!FY)oWhsR=eUeLyhXtCeZ_+KZBsR4Qv9%^q&L@pk9`{ZXJO>Sq*&^WoGPG z;A>!7n{-lIYDPc$hs+^MntyL+Lk)CLo<4q1e)8iVS}^A47Ru_XrcKSL&Xn=O(tP=? z-~7HTl`&gNbP75wo$A_+>uL~p1P{sSd*f>2&eH_JLDW1Q+2Ej1cb$4 z8kmKD(u9)CUBRvpVp$T8@Zuv-;7z_DvQhumtkjH-w0RfQAMqLP^IQ zvf>J%Bws2`eCUNXTwOK}i26pkz-w`G;7r;9lsEMQ2x6*?(4)+tH#;Cg6`dfgLX;_M zX-tg(I&m(Ku-=D4dh+B+dHU?RX$PqD;?hF-&Ue03zW@EdSAOfaeyiNMbH@sow9p0q z=%_I;KqvL48t{!l6Plm_fHu-mKASqvo;-IOLj#u~T)q-Nk-!%kSa3M-L7$f=l+M2b zh=P>NuF%$rl{JyX&s}4CIsxZ!--vLtoNEI_S=L%ELe)4|o8=DVM>Ac*4n_ zzei45w~6?R&js1E1?*wnnD$+j6-kk|?%pYHz4Lat`_`M~#?71MvJ@i9k=YmnDN9)_ zJ;29Unh;K9G_Qr<^eBw-I}UxLe_1EL@V{um0g)~sXObBg(9J`cHDuZzMfo~{vq31x zs3#R555ggAxKWfEyUXgbMo0t6bI$%}~W505mM=@>(gZ4H`8S6euhVqBA>b$h2pE6|eN0oiDV#5hF3GXGJI8J7q*Vee3%;x6 zT&BON);n_x9P%+;&@WW)y1x9N9r) z04Y`|9FAU7`&scQ9E*}$=V=&9;pY>WGKvaY3U8}Z{H6xJ?|=XM<^A`+<%8#%a`-f@g8l#djE6d?)~ zrGKEd1uvUT(7*r;(dNJEiUWTtS0EJ+@&F#%IMQJWcdbeQpR^3_q09mY>Bti_k&ge# z$EC)xUPv5E7w})6j_CEC3RjAXIWLwPTl}&*M$>U z(>w#}?wv3k{E1msBuWTWp4BaxpEy z+N5C-CIpwpV>*LX$%sWgQI<^0i07~^_+ly=i`7w10CWI^gZKZ>+JAQGl_Ys$r$Yw< zKp+BIBNK@fCAzA`=%F~f+_QU@A7d2N3v#$5hf8wLna{`R>aOmts;pE_^@s(_<3xtY1S<|RYc z7p~J7W}dE7P8b3FFjt!DF3eN{nKE`d z#cB`!x{9_BqMxN)(j3ZRSe0mpChCO0_?}?=7G~B@8i3{PeS9Bb#&6%0AKkluS5z!X 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

  • 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 BvONF* diff --git a/script/zheye/zheye.qxrewrite b/script/zheye/zheye.snippet similarity index 100% rename from script/zheye/zheye.qxrewrite rename to script/zheye/zheye.snippet