@nam088/zca-js 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc +5 -0
- package/CODE_OF_CONDUCT.md +163 -0
- package/CONTRIBUTING.md +470 -0
- package/LICENSE +21 -0
- package/README.md +225 -0
- package/SECURITY.md +83 -0
- package/dist/index.cjs +10043 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3396 -0
- package/dist/index.js +10023 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.cjs +2 -0
- package/dist/index.min.cjs.map +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/eslint.config.mjs +27 -0
- package/index.d.ts +2 -0
- package/package.json +88 -0
- package/rollup.config.js +110 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{CookieJar as t}from"tough-cookie";import n,{writeFile as r}from"node:fs/promises";import i from"crypto-js";import a from"node:crypto";import o from"node:fs";import s from"node:path";import c from"pako";import d from"spark-md5";import p from"json-bigint";import{compare as u}from"semver";import l from"events";import m from"ws";import h from"form-data";class f extends Error{constructor(e,t){super(e),this.name="ZcaApiError",this.code=t||null}}class g extends f{constructor(){super("Missing `imageMetadataGetter`. Please provide it in the Zalo object options."),this.name="ZaloApiMissingImageMetadataGetter"}}class w extends f{constructor(e="Operation aborted"){super(e),this.name="ZaloApiLoginQRAborted"}}class y extends f{constructor(e="Login QR request declined"){super(e),this.name="ZaloApiLoginQRDeclined"}}var S,v,k,U,b,R,E,_,O,A,L,I,N;!function(e){e[e.Everyone=0]="Everyone",e[e.Stranger=1]="Stranger",e[e.SpecificFriends=2]="SpecificFriends",e[e.FriendsExcept=3]="FriendsExcept"}(S||(S={})),function(e){e[e.Note=1]="Note",e[e.PinnedMessage=2]="PinnedMessage",e[e.Poll=3]="Poll"}(v||(v={})),function(e){e[e.User=0]="User",e[e.Group=1]="Group"}(k||(k={})),function(e){e[e.Group=1]="Group",e[e.User=3]="User",e[e.Page=5]="Page"}(U||(U={})),function(e){e[e.Male=0]="Male",e[e.Female=1]="Female"}(b||(b={})),function(e){e[e.ABBank=970425]="ABBank",e[e.ACB=970416]="ACB",e[e.Agribank=970405]="Agribank",e[e.BIDV=970418]="BIDV",e[e.BVBank=970454]="BVBank",e[e.BacA_Bank=970409]="BacA_Bank",e[e.BaoViet_Bank=970438]="BaoViet_Bank",e[e.CAKE=546034]="CAKE",e[e.CB_Bank=970444]="CB_Bank",e[e.CIMB_Bank=422589]="CIMB_Bank",e[e.Coop_Bank=970446]="Coop_Bank",e[e.DBS_Bank=796500]="DBS_Bank",e[e.DongA_Bank=970406]="DongA_Bank",e[e.Eximbank=970431]="Eximbank",e[e.GPBank=970408]="GPBank",e[e.HDBank=970437]="HDBank",e[e.HSBC=458761]="HSBC",e[e.HongLeong_Bank=970442]="HongLeong_Bank",e[e.IBK_HCM=970456]="IBK_HCM",e[e.IBK_HN=970455]="IBK_HN",e[e.Indovina_Bank=970434]="Indovina_Bank",e[e.KBank=668888]="KBank",e[e.KienlongBank=970452]="KienlongBank",e[e.Kookmin_Bank_HCM=970463]="Kookmin_Bank_HCM",e[e.Kookmin_Bank_HN=970462]="Kookmin_Bank_HN",e[e.LPBank=970449]="LPBank",e[e.MB_Bank=970422]="MB_Bank",e[e.MSB=970426]="MSB",e[e.NCB=970419]="NCB",e[e.Nam_A_Bank=970428]="Nam_A_Bank",e[e.NongHyup_Bank=801011]="NongHyup_Bank",e[e.OCB=970448]="OCB",e[e.Ocean_Bank=970414]="Ocean_Bank",e[e.PGBank=970430]="PGBank",e[e.PVcomBank=970412]="PVcomBank",e[e.Public_Bank_Vietnam=970439]="Public_Bank_Vietnam",e[e.SCB=970429]="SCB",e[e.SHB=970443]="SHB",e[e.Sacombank=970403]="Sacombank",e[e.Saigon_Bank=970400]="Saigon_Bank",e[e.SeABank=970440]="SeABank",e[e.Shinhan_Bank=970424]="Shinhan_Bank",e[e.Standard_Chartered_Vietnam=970410]="Standard_Chartered_Vietnam",e[e.TNEX=9704261]="TNEX",e[e.TPBank=970423]="TPBank",e[e.Techcombank=970407]="Techcombank",e[e.Timo=963388]="Timo",e[e.UBank=546035]="UBank",e[e.United_Overseas_Bank_Vietnam=970458]="United_Overseas_Bank_Vietnam",e[e.VIB=970441]="VIB",e[e.VPBank=970432]="VPBank",e[e.VRB=970421]="VRB",e[e.VietABank=970427]="VietABank",e[e.VietBank=970433]="VietBank",e[e.Vietcombank=970436]="Vietcombank",e[e.VietinBank=970415]="VietinBank",e[e.Woori_Bank=970457]="Woori_Bank"}(R||(R={}));class T{constructor(e){this.type=k.User,this.data=e,this.threadId=e.deliveredUids[0],this.isSelf=!1}}class M{constructor(e,t){this.type=k.Group,this.data=t,this.threadId=t.groupId,this.isSelf=t.deliveredUids.includes(e)}}function P(e,t,n){if(n==E.ADD||n==E.REMOVE||n==E.BLOCK||n==E.UNBLOCK||n==E.BLOCK_CALL||n==E.UNBLOCK_CALL)return{type:n,data:t,threadId:t,isSelf:![E.ADD,E.REMOVE].includes(n)};if(n==E.REJECT_REQUEST||n==E.UNDO_REQUEST){return{type:n,data:t,threadId:t.toUid,isSelf:t.fromUid==e}}if(n==E.REQUEST){return{type:n,data:t,threadId:t.toUid,isSelf:t.fromUid==e}}if(n==E.SEEN_FRIEND_REQUEST)return{type:n,data:t,threadId:e,isSelf:!0};if(n==E.PIN_CREATE){return{type:n,data:t,threadId:t.conversationId,isSelf:t.actorId==e}}if(n==E.PIN_UNPIN){return{type:n,data:t,threadId:t.conversationId,isSelf:t.actorId==e}}return{type:E.UNKNOWN,data:JSON.stringify(t),threadId:"",isSelf:!1}}function C(e,t,n,r){var i;const a="group_id"in t?t.group_id:t.groupId;if(n==A.JOIN_REQUEST)return{type:n,act:r,data:t,threadId:a,isSelf:!1};if(n==A.NEW_PIN_TOPIC||n==A.UNPIN_TOPIC||n==A.UPDATE_PIN_TOPIC)return{type:n,act:r,data:t,threadId:a,isSelf:t.actorId==e};if(n==A.REORDER_PIN_TOPIC)return{type:n,act:r,data:t,threadId:a,isSelf:t.actorId==e};if(n==A.UPDATE_BOARD||n==A.REMOVE_BOARD)return{type:n,act:r,data:t,threadId:a,isSelf:t.sourceId==e};if(n==A.ACCEPT_REMIND||n==A.REJECT_REMIND)return{type:n,act:r,data:t,threadId:a,isSelf:t.updateMembers.some(t=>t==e)};if(n==A.REMIND_TOPIC)return{type:n,act:r,data:t,threadId:a,isSelf:t.creatorId==e};{const o=t;return{type:n,act:r,data:o,threadId:a,isSelf:(null===(i=o.updateMembers)||void 0===i?void 0:i.some(t=>t.id==e))||o.sourceId==e}}}!function(e){e[e.ADD=0]="ADD",e[e.REMOVE=1]="REMOVE",e[e.REQUEST=2]="REQUEST",e[e.UNDO_REQUEST=3]="UNDO_REQUEST",e[e.REJECT_REQUEST=4]="REJECT_REQUEST",e[e.SEEN_FRIEND_REQUEST=5]="SEEN_FRIEND_REQUEST",e[e.BLOCK=6]="BLOCK",e[e.UNBLOCK=7]="UNBLOCK",e[e.BLOCK_CALL=8]="BLOCK_CALL",e[e.UNBLOCK_CALL=9]="UNBLOCK_CALL",e[e.PIN_UNPIN=10]="PIN_UNPIN",e[e.PIN_CREATE=11]="PIN_CREATE",e[e.UNKNOWN=12]="UNKNOWN"}(E||(E={})),function(e){e[e.Note=0]="Note",e[e.Message=2]="Message",e[e.Poll=3]="Poll"}(_||(_={})),function(e){e[e.Group=1]="Group",e[e.Community=2]="Community"}(O||(O={})),function(e){e.JOIN_REQUEST="join_request",e.JOIN="join",e.LEAVE="leave",e.REMOVE_MEMBER="remove_member",e.BLOCK_MEMBER="block_member",e.UPDATE_SETTING="update_setting",e.UPDATE="update",e.NEW_LINK="new_link",e.ADD_ADMIN="add_admin",e.REMOVE_ADMIN="remove_admin",e.NEW_PIN_TOPIC="new_pin_topic",e.UPDATE_PIN_TOPIC="update_pin_topic",e.REORDER_PIN_TOPIC="reorder_pin_topic",e.UPDATE_BOARD="update_board",e.REMOVE_BOARD="remove_board",e.UPDATE_TOPIC="update_topic",e.UNPIN_TOPIC="unpin_topic",e.REMOVE_TOPIC="remove_topic",e.ACCEPT_REMIND="accept_remind",e.REJECT_REMIND="reject_remind",e.REMIND_TOPIC="remind_topic",e.UPDATE_AVATAR="update_avatar",e.UNKNOWN="unknown"}(A||(A={}));class z{constructor(e,t){this.type=k.User,this.data=t,this.threadId="0"==t.uidFrom?t.idTo:t.uidFrom,this.isSelf="0"==t.uidFrom,"0"==t.idTo&&(t.idTo=e),"0"==t.uidFrom&&(t.uidFrom=e),t.quote&&(t.quote.ownerId=String(t.quote.ownerId))}}class F{constructor(e,t){this.type=k.Group,this.data=t,this.threadId=t.idTo,this.isSelf="0"==t.uidFrom,"0"==t.uidFrom&&(t.uidFrom=e),t.quote&&(t.quote.ownerId=String(t.quote.ownerId))}}!function(e){e.HEART="/-heart",e.LIKE="/-strong",e.HAHA=":>",e.WOW=":o",e.CRY=":-((",e.ANGRY=":-h",e.KISS=":-*",e.TEARS_OF_JOY=":')",e.SHIT="/-shit",e.ROSE="/-rose",e.BROKEN_HEART="/-break",e.DISLIKE="/-weak",e.LOVE=";xx",e.CONFUSED=";-/",e.WINK=";-)",e.FADE="/-fade",e.SUN="/-li",e.BIRTHDAY="/-bd",e.BOMB="/-bome",e.OK="/-ok",e.PEACE="/-v",e.THANKS="/-thanks",e.PUNCH="/-punch",e.SHARE="/-share",e.PRAY="_()_",e.NO="/-no",e.BAD="/-bad",e.LOVE_YOU="/-loveu",e.SAD="--b",e.VERY_SAD=":((",e.COOL="x-)",e.NERD="8-)",e.BIG_SMILE=";-d",e.SUNGLASSES="b-)",e.NEUTRAL=":--|",e.SAD_FACE="p-(",e.BYE=":-bye",e.SLEEPY="|-)",e.WIPE=":wipe",e.DIG=":-dig",e.ANGUISH="&-(",e.HANDCLAP=":handclap",e.ANGRY_FACE=">-|",e.F_CHAIR=":-f",e.L_CHAIR=":-l",e.R_CHAIR=":-r",e.SILENT=";-x",e.SURPRISE=":-o",e.EMBARRASSED=";-s",e.AFRAID=";-a",e.SAD2=":-<",e.BIG_LAUGH=":))",e.RICH="$-)",e.BEER="/-beer",e.NONE=""}(L||(L={}));class q{constructor(e,t,n){this.data=t,this.threadId=n||"0"==t.uidFrom?t.idTo:t.uidFrom,this.isSelf="0"==t.uidFrom,this.isGroup=n,"0"==t.idTo&&(t.idTo=e),"0"==t.uidFrom&&(t.uidFrom=e)}}!function(e){e[e.None=0]="None",e[e.Daily=1]="Daily",e[e.Weekly=2]="Weekly",e[e.Monthly=3]="Monthly"}(I||(I={}));class D{constructor(e){this.type=k.User,this.data=e,this.threadId=e.idTo,this.isSelf=!1}}class B{constructor(e,t){this.type=k.Group,this.data=t,this.threadId=t.groupId,this.isSelf=t.seenUids.includes(e)}}class J{constructor(e){this.type=k.User,this.data=e,this.threadId=e.uid,this.isSelf=!1}}class G{constructor(e){this.type=k.Group,this.data=e,this.threadId=e.gid,this.isSelf=!1}}class ${constructor(e,t,n){this.data=t,this.threadId=n||"0"==t.uidFrom?t.idTo:t.uidFrom,this.isSelf="0"==t.uidFrom,this.isGroup=n,"0"==t.idTo&&(t.idTo=e),"0"==t.uidFrom&&(t.uidFrom=e)}}!function(e){e[e.Other=0]="Other",e[e.RealEstate=1]="RealEstate",e[e.TechnologyAndDevices=2]="TechnologyAndDevices",e[e.TravelAndHospitality=3]="TravelAndHospitality",e[e.EducationAndTraining=4]="EducationAndTraining",e[e.ShoppingAndRetail=5]="ShoppingAndRetail",e[e.CosmeticsAndBeauty=6]="CosmeticsAndBeauty",e[e.RestaurantAndCafe=7]="RestaurantAndCafe",e[e.AutoAndMotorbike=8]="AutoAndMotorbike",e[e.FashionAndApparel=9]="FashionAndApparel",e[e.FoodAndBeverage=10]="FoodAndBeverage",e[e.MediaAndEntertainment=11]="MediaAndEntertainment",e[e.InternalCommunications=12]="InternalCommunications",e[e.Transportation=13]="Transportation",e[e.Telecommunications=14]="Telecommunications"}(N||(N={}));const j={[N.Other]:"Dịch vụ khác (Không hiển thị)",[N.RealEstate]:"Bất động sản",[N.TechnologyAndDevices]:"Công nghệ & Thiết bị",[N.TravelAndHospitality]:"Du lịch & Lưu trú",[N.EducationAndTraining]:"Giáo dục & Đào tạo",[N.ShoppingAndRetail]:"Mua sắm & Bán lẻ",[N.CosmeticsAndBeauty]:"Mỹ phẩm & Làm đẹp",[N.RestaurantAndCafe]:"Nhà hàng & Quán",[N.AutoAndMotorbike]:"Ô tô & Xe máy",[N.FashionAndApparel]:"Thời trang & May mặc",[N.FoodAndBeverage]:"Thực phẩm & Đồ uống",[N.MediaAndEntertainment]:"Truyền thông & Giải trí",[N.InternalCommunications]:"Truyền thông nội bộ",[N.Transportation]:"Vận tải",[N.Telecommunications]:"Viễn thông"};class x extends Map{set(e,t,n=3e5){return setTimeout(()=>{this.delete(e)},n),super.set(e,t)}}const V=(e=30,t=665)=>({API_TYPE:e,API_VERSION:t,uploadCallbacks:new x,options:{selfListen:!1,checkUpdate:!0,logging:!0,polyfill:global.fetch},secretKey:null});function K(e){return!!e.secretKey}function H(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Q(e,t){const n=[];for(const e in t)H(t,e)&&n.push(e);n.sort();let r="zsecure"+e;for(let e=0;e<n.length;e++)r+=t[n[e]];return i.MD5(r).toString()}function W(e,t,n={},r=!0){const i=new URL(t);for(const e in n)H(n,e)&&i.searchParams.append(e,n[e].toString());return r&&(i.searchParams.has("zpw_ver")||i.searchParams.set("zpw_ver",e.API_VERSION.toString()),i.searchParams.has("zpw_type")||i.searchParams.set("zpw_type",e.API_TYPE.toString())),i.toString()}class Y{constructor({type:e,imei:t,firstLaunchTime:n}){this.zcid=null,this.enc_ver="v2",this.zcid=null,this.encryptKey=null,this.createZcid(e,t,n),this.zcid_ext=Y.randomString(),this.createEncryptKey()}getEncryptKey(){if(!this.encryptKey)throw new f("getEncryptKey: didn't create encryptKey yet");return this.encryptKey}createZcid(e,t,n){if(!e||!t||!n)throw new f("createZcid: missing params");const r=`${e},${t},${n}`,i=Y.encodeAES("3FC4F0D2AB50057BCE0D90D9187A22B1",r,"hex",!0);this.zcid=i}createEncryptKey(e=0){const t=(e,t)=>{const{even:n}=Y.processStr(e),{even:r,odd:i}=Y.processStr(t);if(!n||!r||!i)return!1;const a=n.slice(0,8).join("")+r.slice(0,12).join("")+i.reverse().slice(0,12).join("");return this.encryptKey=a,!0};if(!this.zcid||!this.zcid_ext)throw new f("createEncryptKey: zcid or zcid_ext is null");try{if(t(i.MD5(this.zcid_ext).toString().toUpperCase(),this.zcid)||!(e<3))return!1;this.createEncryptKey(e+1)}catch(t){e<3&&this.createEncryptKey(e+1)}return!0}getParams(){return this.zcid?{zcid:this.zcid,zcid_ext:this.zcid_ext,enc_ver:this.enc_ver}:null}static processStr(e){if(!e||"string"!=typeof e)return{even:null,odd:null};const[t,n]=[...e].reduce((e,t,n)=>(e[n%2].push(t),e),[[],[]]);return{even:t,odd:n}}static randomString(e,t){const n=e||6,r=t&&e&&t>e?t:12;let i=Math.floor(Math.random()*(r-n+1))+n;if(i>12){let e="";for(;i>0;)e+=Math.random().toString(16).substr(2,i>12?12:i),i-=12;return e}return Math.random().toString(16).substr(2,i)}static encodeAES(e,t,n,r,a=0){if(!t)return null;try{{const a="hex"==n?i.enc.Hex:i.enc.Base64,o=i.enc.Utf8.parse(e),s={words:[0,0,0,0],sigBytes:16},c=i.AES.encrypt(t,o,{iv:s,mode:i.mode.CBC,padding:i.pad.Pkcs7}).ciphertext.toString(a);return r?c.toUpperCase():c}}catch(i){return a<3?Y.encodeAES(e,t,n,r,a+1):null}}}function Z(e,t){let n=null;try{n=function(e,t){t=decodeURIComponent(t);const n=i.enc.Utf8.parse(e),r={words:[0,0,0,0],sigBytes:16};return i.AES.decrypt({ciphertext:i.enc.Base64.parse(t)},n,{iv:r,mode:i.mode.CBC,padding:i.pad.Pkcs7}).toString(i.enc.Utf8)}(e,t);return JSON.parse(n)}catch(e){return n}}function X(e){return Buffer.from(e,"base64")}function ee(e,t,n=0){try{const n=i.enc.Base64.parse(e);return i.AES.encrypt(t,n,{iv:i.enc.Hex.parse("00000000000000000000000000000000"),mode:i.mode.CBC,padding:i.pad.Pkcs7}).ciphertext.toString(i.enc.Base64)}catch(r){return n<3?ee(e,t,n+1):null}}function te(e,t,n=0){try{t=decodeURIComponent(t);const n=i.enc.Base64.parse(e);return i.AES.decrypt({ciphertext:i.enc.Base64.parse(t)},n,{iv:i.enc.Hex.parse("00000000000000000000000000000000"),mode:i.mode.CBC,padding:i.pad.Pkcs7}).toString(i.enc.Utf8)}catch(r){return n<3?te(e,t,n+1):null}}async function ne(t,n,r,i=!1){t.cookie||(t.cookie=new e.CookieJar);const a=new URL(n).origin,o=await async function(e,t="https://chat.zalo.me"){if(!e.cookie)throw new f("Cookie is not available");if(!e.userAgent)throw new f("User agent is not available");return{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","content-type":"application/x-www-form-urlencoded",Cookie:await e.cookie.getCookieString(t),Origin:"https://chat.zalo.me",Referer:"https://chat.zalo.me/","User-Agent":e.userAgent}}(t,a);i||(r?r.headers=Object.assign(o,r.headers||{}):r={headers:o});const s=Object.assign(Object.assign({},null!=r?r:{}),{agent:t.options.agent}),c=await t.options.polyfill(n,s),d=c.headers.get("set-cookie");if(d&&!i){const n=d.split(", ");for(const r of n){const n=e.Cookie.parse(r);try{n&&await t.cookie.setCookie(n,"zalo.me"!=n.domain?`https://${n.domain}`:a)}catch(e){ce(t).error(e)}}}const p=c.headers.get("location");if(p){const e=Object.assign({},r);return e.method="GET",i||(e.headers=new Headers(e.headers),e.headers.set("Referer","https://id.zalo.me/")),await ne(t,p,e)}return c}async function re(e,t){if(!e.options.imageMetadataGetter)throw new g;const n=await e.options.imageMetadataGetter(t);if(!n)throw new f("Failed to get image metadata");return{fileName:t.split("/").pop(),totalSize:n.size,width:n.width,height:n.height}}async function ie(e){return o.promises.stat(e).then(e=>e.size)}async function ae(e,t){if(!e.options.imageMetadataGetter)throw new g;const n=await e.options.imageMetadataGetter(t);if(!n)throw new f("Failed to get gif metadata");return{fileName:s.basename(t),totalSize:n.size,width:n.width,height:n.height}}async function oe(e,t){if("string"!=typeof e.data)throw new f("Invalid data, expected string but got "+typeof e.data);if("number"!=typeof e.encrypt)throw new f("Invalid encrypt type, expected number but got "+typeof e.encrypt);if(e.encrypt<0||e.encrypt>3)throw new f(`Invalid encrypt type, expected 0-3 but got ${e.encrypt}`);const n=e.data,r=e.encrypt;if(0===r)return JSON.parse(n);const i=X(1===r?n:decodeURIComponent(n));let o=i;if(1!==r){if(!(t&&i.length>=48))throw new f("Invalid data length or missing cipher key");{const e={name:"AES-GCM",iv:i.subarray(0,16),tagLength:128,additionalData:i.subarray(16,32)},n=i.subarray(32),r=await a.subtle.importKey("raw",X(t),e,!1,["decrypt"]);o=await a.subtle.decrypt(e,r,n)}}const s=function(e){try{return(new TextDecoder).decode(e)}catch(e){return null}}(3===r?new Uint8Array(o):c.inflate(o));return s?p.parse(s):void 0}async function se(e,t){const n="string"==typeof e?await o.promises.readFile(e):e.data;return new Promise(e=>{let r=0;const i=2097152,a=Math.ceil(t/i),o=new d.ArrayBuffer;!function s(){const c=r*i,d=c+i>=t?t:c+i;o.append(new Uint8Array(n.subarray(c,d)).buffer),r++,r<a?s():e({currentChunk:r,data:o.end()})}()})}const ce=e=>({verbose:(...t)=>{e.options.logging},info:(...t)=>{e.options.logging},warn:(...t)=>{e.options.logging},error:(...t)=>{e.options.logging},success:(...t)=>{e.options.logging},timestamp:(...t)=>{(new Date).toISOString();e.options.logging}});function de(e,t,n){const r=(e=""+e).length;return r===n?e:r>n?e.slice(-n):t.repeat(n-r)+e}function pe(e,t=Date.now()){const n=new Date(t),r=new Intl.DateTimeFormat("vi-VN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(n);return e.includes("%H")||e.includes("%d")?e.replace("%H",n.getHours().toString().padStart(2,"0")).replace("%M",n.getMinutes().toString().padStart(2,"0")).replace("%S",n.getSeconds().toString().padStart(2,"0")).replace("%d",n.getDate().toString().padStart(2,"0")).replace("%m",(n.getMonth()+1).toString().padStart(2,"0")).replace("%Y",n.getFullYear().toString()):r}function ue(e){const t=new Date(e);return de(t.getHours(),"0",2)+":"+de(t.getMinutes(),"0",2)+" "+de(t.getDate(),"0",2)+"/"+de(t.getMonth()+1,"0",2)+"/"+t.getFullYear()}function le(e){return s.extname(e).slice(1)}function me(e){return s.basename(e)}function he(e){for(const t in e)void 0===e[t]&&delete e[t];return e}function fe(e){return"join_request"==e?A.JOIN_REQUEST:"join"==e?A.JOIN:"leave"==e?A.LEAVE:"remove_member"==e?A.REMOVE_MEMBER:"block_member"==e?A.BLOCK_MEMBER:"update_setting"==e?A.UPDATE_SETTING:"update_avatar"==e?A.UPDATE_AVATAR:"update"==e?A.UPDATE:"new_link"==e?A.NEW_LINK:"add_admin"==e?A.ADD_ADMIN:"remove_admin"==e?A.REMOVE_ADMIN:"new_pin_topic"==e?A.NEW_PIN_TOPIC:"update_pin_topic"==e?A.UPDATE_PIN_TOPIC:"update_topic"==e?A.UPDATE_TOPIC:"update_board"==e?A.UPDATE_BOARD:"remove_board"==e?A.REMOVE_BOARD:"reorder_pin_topic"==e?A.REORDER_PIN_TOPIC:"unpin_topic"==e?A.UNPIN_TOPIC:"remove_topic"==e?A.REMOVE_TOPIC:"accept_remind"==e?A.ACCEPT_REMIND:"reject_remind"==e?A.REJECT_REMIND:"remind_topic"==e?A.REMIND_TOPIC:A.UNKNOWN}function ge(e){return"add"==e?E.ADD:"remove"==e?E.REMOVE:"block"==e?E.BLOCK:"unblock"==e?E.UNBLOCK:"block_call"==e?E.BLOCK_CALL:"unblock_call"==e?E.UNBLOCK_CALL:"req_v2"==e?E.REQUEST:"reject"==e?E.REJECT_REQUEST:"undo_req"==e?E.UNDO_REQUEST:"seen_fr_req"==e?E.SEEN_FRIEND_REQUEST:"pin_unpin"==e?E.PIN_UNPIN:"pin_create"==e?E.PIN_CREATE:E.UNKNOWN}async function we(e,t,n=!0){const r={data:null,error:null};if(!t.ok)return r.error={message:"Request failed with status code "+t.status},r;try{const i=await t.json();if(0!=i.error_code)return r.error={message:i.error_message,code:i.error_code},r;const a=n?JSON.parse(te(e.secretKey,i.data)):i;if(0!=a.error_code)return r.error={message:a.error_message,code:a.error_code},r;r.data=a.data}catch(t){ce(e).error("Failed to parse response data:",t),r.error={message:"Failed to parse response data"}}return r}async function ye(e,t,n,r){const i=await we(e,t,r);if(i.error)throw new f(i.error.message,i.error.code);return n?n(i):i.data}function Se(){return e=>(t,n)=>{if(!K(t))throw new f("Invalid context "+JSON.stringify(t,null,2));const r={makeURL:(e,n,r)=>W(t,e,n,r),encodeAES:(e,n)=>ee(t.secretKey,e,n),request:(e,n,r)=>ne(t,e,n,r),logger:ce(t),resolve:(e,n,r)=>ye(t,e,n,r)};return e(n,t,r)}}var ve;async function ke(e,t){await r(e,t,"base64")}async function Ue(e,t,n,r){const i=new URLSearchParams;return i.append("code",n),i.append("continue","https://chat.zalo.me/"),i.append("v",t),await ne(e,"https://id.zalo.me/account/authen/qr/waiting-scan",{headers:{accept:"*/*","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5","content-type":"application/x-www-form-urlencoded",priority:"u=1, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin",Referer:"https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F","Referrer-Policy":"strict-origin-when-cross-origin"},body:i,method:"POST",signal:r}).then(e=>e.json()).then(i=>8==i.error_code?Ue(e,t,n,r):i).catch(t=>{r.aborted||ce(e).error(t)})}async function be(e,t,n,r){const i=new URLSearchParams;return i.append("code",n),i.append("gToken",""),i.append("gAction","CONFIRM_QR"),i.append("continue","https://chat.zalo.me/"),i.append("v",t),ce(e).info("Please confirm on your phone"),await ne(e,"https://id.zalo.me/account/authen/qr/waiting-confirm",{headers:{accept:"*/*","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5","content-type":"application/x-www-form-urlencoded",priority:"u=1, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin",Referer:"https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F","Referrer-Policy":"strict-origin-when-cross-origin"},body:i,method:"POST",signal:r}).then(e=>e.json()).then(i=>8==i.error_code?be(e,t,n,r):i).catch(t=>{r.aborted||ce(e).error(t)})}async function Re(e,n,r){return e.cookie=new t,e.userAgent=n.userAgent,new Promise(async(t,i)=>{var a;const o=new AbortController;let s=null;function c(){o.abort(),s&&(clearTimeout(s),s=null)}try{function d(){return c(),t(Re(e,n,r))}function p(){return c(),i(new w)}e.options.logging;const u=await async function(e){const t=await ne(e,"https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F",{headers:{accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5","cache-control":"max-age=0",priority:"u=0, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"same-site","sec-fetch-user":"?1","upgrade-insecure-requests":"1",Referer:"https://chat.zalo.me/","Referrer-Policy":"strict-origin-when-cross-origin"},method:"GET"}),n=(await t.text()).match(/https:\/\/stc-zlogin\.zdn\.vn\/main-([\d.]+)\.js/);return null==n?void 0:n[1]}(e);if(!u)throw new f("Cannot get API login version");ce(e).info("Got login version:",u),await async function(e,t){const n=new URLSearchParams;return n.append("continue","https://zalo.me/pc"),n.append("v",t),await ne(e,"https://id.zalo.me/account/logininfo",{headers:{accept:"*/*","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5","content-type":"application/x-www-form-urlencoded",priority:"u=1, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin",Referer:"https://id.zalo.me/account?continue=https%3A%2F%2Fzalo.me%2Fpc","Referrer-Policy":"strict-origin-when-cross-origin"},body:n,method:"POST"}).then(e=>e.json()).catch(ce(e).error)}(e,u),await async function(e,t){const n=new URLSearchParams;return n.append("type","device"),n.append("continue","https://zalo.me/pc"),n.append("v",t),await ne(e,"https://id.zalo.me/account/verify-client",{headers:{accept:"*/*","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5","content-type":"application/x-www-form-urlencoded",priority:"u=1, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin",Referer:"https://id.zalo.me/account?continue=https%3A%2F%2Fzalo.me%2Fpc","Referrer-Policy":"strict-origin-when-cross-origin"},body:n,method:"POST"}).then(e=>e.json()).catch(ce(e).error)}(e,u);const l=await async function(e,t){const n=new URLSearchParams;return n.append("continue","https://zalo.me/pc"),n.append("v",t),await ne(e,"https://id.zalo.me/account/authen/qr/generate",{headers:{accept:"*/*","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5","content-type":"application/x-www-form-urlencoded",priority:"u=1, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin",Referer:"https://id.zalo.me/account?continue=https%3A%2F%2Fzalo.me%2Fpc","Referrer-Policy":"strict-origin-when-cross-origin"},body:n,method:"POST"}).then(e=>e.json()).catch(ce(e).error)}(e,u);if(!l||!l.data)throw new f(`Unable to generate QRCode\nResponse: ${JSON.stringify(l,null,2)}`);const m=l.data;if(r)r({type:ve.QRCodeGenerated,data:Object.assign(Object.assign({},l.data),{image:l.data.image.replace(/^data:image\/png;base64,/,"")}),actions:{async saveToFile(t){var r;void 0===t&&(t=null!==(r=n.qrPath)&&void 0!==r?r:"qr.png"),await ke(t,m.image.replace(/^data:image\/png;base64,/,"")),ce(e).info("Scan the QR code at",`'${t}'`,"to proceed with login")},retry:d,abort:p}});else{const k=null!==(a=n.qrPath)&&void 0!==a?a:"qr.png";await ke(k,m.image.replace(/^data:image\/png;base64,/,"")),ce(e).info("Scan the QR code at",`'${k}'`,"to proceed with login")}s=setTimeout(()=>{c(),ce(e).info("QR expired!"),r?r({type:ve.QRCodeExpired,data:null,actions:{retry:d,abort:p}}):d()},1e5);const h=await Ue(e,u,l.data.code,o.signal);if(!h||!h.data)throw new f("Cannot get scan result");r&&r({type:ve.QRCodeScanned,data:h.data,actions:{retry:d,abort:p}});const g=await be(e,u,l.data.code,o.signal);if(!g)throw new f("Cannot get confirm result");if(clearTimeout(s),-13==g.error_code){if(!r)throw ce(e).error("QRCode login declined"),new y;return void r({type:ve.QRCodeDeclined,data:{code:m.code},actions:{retry:d,abort:p}})}if(0!=g.error_code)throw new f(`An error has occurred.\nResponse: ${JSON.stringify(g,null,2)}`);const S=await async function(e){return await ne(e,"https://id.zalo.me/account/checksession?continue=https%3A%2F%2Fchat.zalo.me%2Findex.html",{headers:{accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5",priority:"u=0, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"same-origin","upgrade-insecure-requests":"1",Referer:"https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F","Referrer-Policy":"strict-origin-when-cross-origin"},redirect:"manual",method:"GET"}).catch(ce(e).error)}(e);if(!S)throw new f("Cannot get session, login failed");ce(e).info("Successfully logged into the account",h.data.display_name);const v=await async function(e){return await ne(e,"https://jr.chat.zalo.me/jr/userinfo",{headers:{accept:"*/*","accept-language":"vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5",priority:"u=1, i","sec-ch-ua":'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site",Referer:"https://chat.zalo.me/","Referrer-Policy":"strict-origin-when-cross-origin"},method:"GET"}).then(e=>e.json()).catch(ce(e).error)}(e);if(!v||!v.data)throw new f("Can't get account info");if(!v.data.logged)throw new f("Can't login");t({cookies:e.cookie.toJSON().cookies,userInfo:v.data.info})}catch(U){c(),i(U)}})}!function(e){e[e.QRCodeGenerated=0]="QRCodeGenerated",e[e.QRCodeExpired=1]="QRCodeExpired",e[e.QRCodeScanned=2]="QRCodeScanned",e[e.QRCodeDeclined=3]="QRCodeDeclined",e[e.GotLoginInfo=4]="GotLoginInfo"}(ve||(ve={}));var Ee,_e,Oe,Ae,Le,Ie,Ne,Te,Me,Pe,Ce,ze,Fe,qe,De,Be,Je,Ge,$e,je,xe,Ve,Ke,He,Qe,We,Ye,Ze,Xe,et,tt,nt,rt,it,at,ot,st,ct,dt,pt,ut,lt,mt,ht,ft,gt,wt,yt,St,vt,kt,Ut,bt,Rt,Et,_t,Ot,At,Lt,It,Nt,Tt,Mt,Pt,Ct,zt,Ft,qt,Dt,Bt,Jt,Gt,$t,jt,xt,Vt,Kt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Ht(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Qt(){if(_e)return Ee;_e=1;var e="object"==typeof Kt&&Kt&&Kt.Object===Object&&Kt;return Ee=e}function Wt(){if(Ae)return Oe;Ae=1;var e=Qt(),t="object"==typeof self&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return Oe=n}function Yt(){if(Ie)return Le;Ie=1;var e=Wt().Symbol;return Le=e}function Zt(){if(ze)return Ce;ze=1;var e=Yt(),t=function(){if(Te)return Ne;Te=1;var e=Yt(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,i=e?e.toStringTag:void 0;return Ne=function(e){var t=n.call(e,i),a=e[i];try{e[i]=void 0;var o=!0}catch(e){}var s=r.call(e);return o&&(t?e[i]=a:delete e[i]),s}}(),n=function(){if(Pe)return Me;Pe=1;var e=Object.prototype.toString;return Me=function(t){return e.call(t)}}(),r=e?e.toStringTag:void 0;return Ce=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":r&&r in Object(e)?t(e):n(e)}}function Xt(){if(qe)return Fe;return qe=1,Fe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}}function en(){if(Be)return De;Be=1;var e=Zt(),t=Xt();return De=function(n){if(!t(n))return!1;var r=e(n);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}}function tn(){if(je)return $e;je=1;var e,t=function(){if(Ge)return Je;Ge=1;var e=Wt()["__core-js_shared__"];return Je=e}(),n=(e=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"";return $e=function(e){return!!n&&n in e}}function nn(){if(Ve)return xe;Ve=1;var e=Function.prototype.toString;return xe=function(t){if(null!=t){try{return e.call(t)}catch(e){}try{return t+""}catch(e){}}return""}}function rn(){if(Ze)return Ye;Ze=1;var e=function(){if(He)return Ke;He=1;var e=en(),t=tn(),n=Xt(),r=nn(),i=/^\[object .+?Constructor\]$/,a=Function.prototype,o=Object.prototype,s=a.toString,c=o.hasOwnProperty,d=RegExp("^"+s.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return Ke=function(a){return!(!n(a)||t(a))&&(e(a)?d:i).test(r(a))}}(),t=We?Qe:(We=1,Qe=function(e,t){return null==e?void 0:e[t]});return Ye=function(n,r){var i=t(n,r);return e(i)?i:void 0}}function an(){if(et)return Xe;et=1;var e=rn(),t=function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();return Xe=t}function on(){if(nt)return tt;nt=1;var e=an();return tt=function(t,n,r){"__proto__"==n&&e?e(t,n,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[n]=r}}function sn(){if(it)return rt;return it=1,rt=function(e,t){return e===t||e!=e&&t!=t}}function cn(){if(ot)return at;ot=1;var e=on(),t=sn(),n=Object.prototype.hasOwnProperty;return at=function(r,i,a){var o=r[i];n.call(r,i)&&t(o,a)&&(void 0!==a||i in r)||e(r,i,a)}}function dn(){if(pt)return dt;return pt=1,dt=function(e){return e}}function pn(){if(ht)return mt;ht=1;var e=lt?ut:(lt=1,ut=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}),t=Math.max;return mt=function(n,r,i){return r=t(void 0===r?n.length-1:r,0),function(){for(var a=arguments,o=-1,s=t(a.length-r,0),c=Array(s);++o<s;)c[o]=a[r+o];o=-1;for(var d=Array(r+1);++o<r;)d[o]=a[o];return d[r]=i(c),e(n,this,d)}},mt}function un(){if(yt)return wt;yt=1;var e=gt?ft:(gt=1,ft=function(e){return function(){return e}}),t=an(),n=dn();return wt=t?function(n,r){return t(n,"toString",{configurable:!0,enumerable:!1,value:e(r),writable:!0})}:n}function ln(){if(Ut)return kt;Ut=1;var e=un(),t=function(){if(vt)return St;vt=1;var e=Date.now;return St=function(t){var n=0,r=0;return function(){var i=e(),a=16-(i-r);if(r=i,a>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}},St}(),n=t(e);return kt=n}function mn(){if(_t)return Et;_t=1;return Et=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}}function hn(){if(At)return Ot;At=1;var e=en(),t=mn();return Ot=function(n){return null!=n&&t(n.length)&&!e(n)}}function fn(){if(It)return Lt;It=1;var e=/^(?:0|[1-9]\d*)$/;return Lt=function(t,n){var r=typeof t;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&e.test(t))&&t>-1&&t%1==0&&t<n}}function gn(){if(Pt)return Mt;Pt=1;var e=function(){if(Rt)return bt;Rt=1;var e=dn(),t=pn(),n=ln();return bt=function(r,i){return n(t(r,i,e),r+"")}}(),t=function(){if(Tt)return Nt;Tt=1;var e=sn(),t=hn(),n=fn(),r=Xt();return Nt=function(i,a,o){if(!r(o))return!1;var s=typeof a;return!!("number"==s?t(o)&&n(a,o.length):"string"==s&&a in o)&&e(o[a],i)}}();return Mt=function(n){return e(function(e,r){var i=-1,a=r.length,o=a>1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=n.length>3&&"function"==typeof o?(a--,o):void 0,s&&t(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++i<a;){var c=r[i];c&&n(e,c,i,o)}return e})}}function wn(){if(zt)return Ct;zt=1;var e=Object.prototype;return Ct=function(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||e)}}function yn(){if(Bt)return Dt;return Bt=1,Dt=function(e){return null!=e&&"object"==typeof e}}function Sn(){if(jt)return $t;jt=1;var e=function(){if(Gt)return Jt;Gt=1;var e=Zt(),t=yn();return Jt=function(n){return t(n)&&"[object Arguments]"==e(n)}}(),t=yn(),n=Object.prototype,r=n.hasOwnProperty,i=n.propertyIsEnumerable,a=e(function(){return arguments}())?e:function(e){return t(e)&&r.call(e,"callee")&&!i.call(e,"callee")};return $t=a}function vn(){if(Vt)return xt;Vt=1;var e=Array.isArray;return xt=e}var kn,Un,bn,Rn,En,_n,On,An={exports:{}};function Ln(){return bn||(bn=1,function(e,t){var n=Wt(),r=Un?kn:(Un=1,kn=function(){return!1}),i=t&&!t.nodeType&&t,a=i&&e&&!e.nodeType&&e,o=a&&a.exports===i?n.Buffer:void 0,s=(o?o.isBuffer:void 0)||r;e.exports=s}(An,An.exports)),An.exports}var In,Nn,Tn,Mn,Pn,Cn,zn,Fn,qn,Dn,Bn,Jn,Gn,$n,jn,xn={exports:{}};function Vn(){if(Tn)return Nn;Tn=1;var e=function(){if(En)return Rn;En=1;var e=Zt(),t=mn(),n=yn(),r={};return r["[object Float32Array]"]=r["[object Float64Array]"]=r["[object Int8Array]"]=r["[object Int16Array]"]=r["[object Int32Array]"]=r["[object Uint8Array]"]=r["[object Uint8ClampedArray]"]=r["[object Uint16Array]"]=r["[object Uint32Array]"]=!0,r["[object Arguments]"]=r["[object Array]"]=r["[object ArrayBuffer]"]=r["[object Boolean]"]=r["[object DataView]"]=r["[object Date]"]=r["[object Error]"]=r["[object Function]"]=r["[object Map]"]=r["[object Number]"]=r["[object Object]"]=r["[object RegExp]"]=r["[object Set]"]=r["[object String]"]=r["[object WeakMap]"]=!1,Rn=function(i){return n(i)&&t(i.length)&&!!r[e(i)]}}(),t=On?_n:(On=1,_n=function(e){return function(t){return e(t)}}),n=function(){return In||(In=1,e=xn,t=xn.exports,n=Qt(),r=t&&!t.nodeType&&t,i=r&&e&&!e.nodeType&&e,a=i&&i.exports===r&&n.process,o=function(){try{return i&&i.require&&i.require("util").types||a&&a.binding&&a.binding("util")}catch(e){}}(),e.exports=o),xn.exports;var e,t,n,r,i,a,o}(),r=n&&n.isTypedArray,i=r?t(r):e;return Nn=i}function Kn(){if(Pn)return Mn;Pn=1;var e=qt?Ft:(qt=1,Ft=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}),t=Sn(),n=vn(),r=Ln(),i=fn(),a=Vn(),o=Object.prototype.hasOwnProperty;return Mn=function(s,c){var d=n(s),p=!d&&t(s),u=!d&&!p&&r(s),l=!d&&!p&&!u&&a(s),m=d||p||u||l,h=m?e(s.length,String):[],f=h.length;for(var g in s)!c&&!o.call(s,g)||m&&("length"==g||u&&("offset"==g||"parent"==g)||l&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||i(g,f))||h.push(g);return h}}function Hn(){if(qn)return Fn;qn=1;var e=(zn?Cn:(zn=1,Cn=function(e,t){return function(n){return e(t(n))}}))(Object.keys,Object);return Fn=e}function Qn(){if(Bn)return Dn;Bn=1;var e=wn(),t=Hn(),n=Object.prototype.hasOwnProperty;return Dn=function(r){if(!e(r))return t(r);var i=[];for(var a in Object(r))n.call(r,a)&&"constructor"!=a&&i.push(a);return i}}var Wn=function(){if(jn)return $n;jn=1;var e=cn(),t=function(){if(ct)return st;ct=1;var e=cn(),t=on();return st=function(n,r,i,a){var o=!i;i||(i={});for(var s=-1,c=r.length;++s<c;){var d=r[s],p=a?a(i[d],n[d],d,i,n):void 0;void 0===p&&(p=n[d]),o?t(i,d,p):e(i,d,p)}return i}}(),n=gn(),r=hn(),i=wn(),a=function(){if(Gn)return Jn;Gn=1;var e=Kn(),t=Qn(),n=hn();return Jn=function(r){return n(r)?e(r):t(r)}}(),o=Object.prototype.hasOwnProperty,s=n(function(n,s){if(i(s)||r(s))t(s,a(s),n);else for(var c in s)o.call(s,c)&&e(n,c,s[c])});return $n=s}();const Yn=Ht(Wn);async function Zn(e,t,n){const r={},i={computer_name:"Web",imei:e.imei,language:e.language,ts:Date.now()},a=await async function(e,t,n){if(n){const n=new Y({type:e.API_TYPE,imei:t.imei,firstLaunchTime:Date.now()});try{const e=JSON.stringify(t),r=n.getEncryptKey(),i=Y.encodeAES(r,e,"base64",!1),a=n.getParams();return a?{encrypted_data:i,encrypted_params:a,enk:r}:null}catch(e){throw new f("Failed to encrypt params: "+e)}}return null}(e,i,t);if(null==a)Yn(r,i);else{const{encrypted_params:e,encrypted_data:t}=a;Yn(r,e),r.params=t}return r.type=e.API_TYPE,r.client_version=e.API_VERSION,r.signkey=Q(n,"getserverinfo"==n?{imei:e.imei,type:e.API_TYPE,client_version:e.API_VERSION,computer_name:"Web"}:r),{params:r,enk:a?a.enk:null}}var Xn;!function(e){e[e.ManualClosure=1e3]="ManualClosure",e[e.AbnormalClosure=1006]="AbnormalClosure",e[e.DuplicateConnection=3e3]="DuplicateConnection",e[e.KickConnection=3003]="KickConnection"}(Xn||(Xn={}));class er extends l{constructor(e,t){if(super(),this.ctx=e,this.urls=t,this.id=0,!e.cookie)throw new f("Cookie is not available");if(!e.userAgent)throw new f("User agent is not available");this.wsURL=W(this.ctx,this.urls[0],{t:Date.now()}),this.retryCount={},this.rotateCount=0;for(const t in e.settings.features.socket.retries){const{times:n,max:r}=e.settings.features.socket.retries[t];this.retryCount[t]={count:0,max:r||0,times:"number"==typeof n?[n]:n}}this.cookie=e.cookie.getCookieStringSync("https://chat.zalo.me"),this.userAgent=e.userAgent,this.selfListen=e.options.selfListen,this.ws=null,this.onConnectedCallback=()=>{},this.onClosedCallback=()=>{},this.onErrorCallback=()=>{},this.onMessageCallback=()=>{}}onConnected(e){this.onConnectedCallback=e}onClosed(e){this.onClosedCallback=e}onError(e){this.onErrorCallback=e}onMessage(e){this.onMessageCallback=e}canRetry(e){if(!this.ctx.settings.features.socket.close_and_retry_codes.includes(e))return!1;if(this.retryCount[e.toString()].count>=this.retryCount[e.toString()].max)return!1;this.retryCount[e.toString()].count++;const{count:t,max:n,times:r}=this.retryCount[e.toString()],i=t-1<r.length?r[t-1]:r[r.length-1];return ce(this.ctx).verbose(`Retry for code ${e} in ${i}ms (${t}/${n})`),i}shouldRotate(e){return!!this.ctx.settings.features.socket.rotate_error_codes.includes(e)&&!(this.rotateCount>=this.urls.length-1)}rotateEndpoint(){this.rotateCount++,this.wsURL=W(this.ctx,this.urls[this.rotateCount],{t:Date.now()}),ce(this.ctx).verbose(`Rotating endpoint to ${this.wsURL}`)}start({retryOnClose:e=!1}={}){if(this.ws)throw new f("Already started");const t=new m(this.wsURL,{headers:{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache",connection:"Upgrade",host:new URL(this.wsURL).host,origin:"https://chat.zalo.me",prgama:"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","sec-websocket-version":"13",upgrade:"websocket","user-agent":this.userAgent,cookie:this.cookie},agent:this.ctx.options.agent});this.ws=t,t.onopen=()=>{this.onConnectedCallback(),this.emit("connected")},t.onclose=t=>{this.reset(),this.emit("disconnected",t.code,t.reason);const n=e&&this.canRetry(t.code);if(n&&e){this.shouldRotate(t.code)&&this.rotateEndpoint(),setTimeout(()=>{this.start({retryOnClose:!0})},n)}else this.onClosedCallback(t.code,t.reason),this.emit("closed",t.code,t.reason)},t.onerror=e=>{this.onErrorCallback(e),this.emit("error",e)},t.onmessage=async e=>{const{data:n}=e;if(!(n instanceof Buffer))return;const r=n.subarray(0,4),[i,a,o]=function(e){if(e.byteLength<4)throw new f("Invalid header");return[e[0],e.readUInt16LE(1),e[3]]}(r);try{const e=n.subarray(4),r=new TextDecoder("utf-8").decode(e);if(0==r.length)return;const s=JSON.parse(r);if(1==i&&1==a&&1==o&&H(s,"key")){this.cipherKey=s.key,this.emit("cipher_key",s.key),this.pingInterval&&clearInterval(this.pingInterval);const e=()=>{const e={version:1,cmd:2,subCmd:1,data:{eventId:Date.now()}};this.sendWs(e,!1)};this.pingInterval=setInterval(()=>{e()},this.ctx.settings.features.socket.ping_interval)}if(1==i&&501==a&&0==o){const e=(await oe(s,this.cipherKey)).data,{msgs:t}=e;for(const e of t)if("object"==typeof e.content&&H(e.content,"deleteMsg")){const t=new $(this.ctx.uid,e,!1);if(t.isSelf&&!this.selfListen)continue;this.emit("undo",t)}else{const t=new z(this.ctx.uid,e);if(t.isSelf&&!this.selfListen)continue;this.onMessageCallback(t),this.emit("message",t)}}if(1==i&&521==a&&0==o){const e=(await oe(s,this.cipherKey)).data,{groupMsgs:t}=e;for(const e of t)if("object"==typeof e.content&&H(e.content,"deleteMsg")){const t=new $(this.ctx.uid,e,!0);if(t.isSelf&&!this.selfListen)continue;this.emit("undo",t)}else{const t=new F(this.ctx.uid,e);if(t.isSelf&&!this.selfListen)continue;this.onMessageCallback(t),this.emit("message",t)}}if(1==i&&601==a&&0==o){const e=(await oe(s,this.cipherKey)).data,{controls:t}=e;for(const e of t)if("file_done"==e.content.act_type){const t={fileUrl:e.content.data.url,fileId:e.content.fileId},n=this.ctx.uploadCallbacks.get(String(e.content.fileId));n&&n(t),this.ctx.uploadCallbacks.delete(String(e.content.fileId)),this.emit("upload_attachment",t)}else if("group"==e.content.act_type){if("join_reject"==e.content.act)continue;const t="string"==typeof e.content.data?JSON.parse(e.content.data):e.content.data,n=C(this.ctx.uid,t,fe(e.content.act),e.content.act);if(n.isSelf&&!this.selfListen)continue;this.emit("group_event",n)}else if("fr"==e.content.act_type){if("req"==e.content.act)continue;const t="string"==typeof e.content.data?JSON.parse(e.content.data):e.content.data;"object"==typeof t&&"topic"in t&&"object"==typeof t.topic&&"params"in t.topic&&(t.topic.params=JSON.parse(`${t.topic.params}`));const n=P(this.ctx.uid,"number"==typeof t?e.content.data:t,ge(e.content.act));if(n.isSelf&&!this.selfListen)continue;this.emit("friend_event",n)}}if(612==a){const e=(await oe(s,this.cipherKey)).data,{reacts:t,reactGroups:n}=e;for(const e of t){e.content=JSON.parse(e.content);const t=new q(this.ctx.uid,e,!1);t.isSelf&&!this.selfListen||this.emit("reaction",t)}for(const e of n){e.content=JSON.parse(e.content);const t=new q(this.ctx.uid,e,!0);t.isSelf&&!this.selfListen||this.emit("reaction",t)}}if(610==a||611==a){const e=(await oe(s,this.cipherKey)).data,t=611==a,n=e[t?"reactGroups":"reacts"].map(e=>new q(this.ctx.uid,e,t));this.emit("old_reactions",n,t)}if(510==a&&1==o){const e=(await oe(s,this.cipherKey)).data,t=e.msgs.map(e=>new z(this.ctx.uid,e));this.emit("old_messages",t,k.User)}if(511==a&&1==o){const e=(await oe(s,this.cipherKey)).data,t=e.groupMsgs.map(e=>new F(this.ctx.uid,e));this.emit("old_messages",t,k.Group)}if(602==a&&0==o){const e=(await oe(s,this.cipherKey)).data,{actions:t}=e;for(const e of t){const t=JSON.parse(`{${e.data}}`);if("typing"==e.act_type)if("typing"==e.act){const e=new J(t);this.emit("typing",e)}else if("gtyping"==e.act){const e=new G(t);this.emit("typing",e)}}}if(502==a&&0==o){const e=(await oe(s,this.cipherKey)).data,{delivereds:t,seens:n}=e;if(Array.isArray(t)&&t.length>0){const e=t.map(e=>new T(e));this.emit("delivered_messages",e)}if(Array.isArray(n)&&n.length>0){const e=n.map(e=>new D(e));this.emit("seen_messages",e)}}if(522==a&&0==o){const e=(await oe(s,this.cipherKey)).data,{delivereds:t,groupSeens:n}=e;if(Array.isArray(t)&&t.length>0){let e=t.map(e=>new M(this.ctx.uid,e));this.selfListen||(e=e.filter(e=>!e.isSelf)),this.emit("delivered_messages",e)}if(Array.isArray(n)&&n.length>0){let e=n.map(e=>new B(this.ctx.uid,e));this.selfListen||(e=e.filter(e=>!e.isSelf)),this.emit("seen_messages",e)}}1==i&&3e3==a&&0==o&&(ce(this.ctx).error(),ce(this.ctx).error("Another connection is opened, closing this one"),ce(this.ctx).error(),t.readyState!==m.CLOSED&&t.close(Xn.DuplicateConnection))}catch(e){this.onErrorCallback(e),this.emit("error",e)}}}stop(){this.ws&&(this.ws.close(Xn.ManualClosure),this.reset())}sendWs(e,t=!0){if(this.ws){t&&(e.data.req_id="req_"+this.id++);const n=(new TextEncoder).encode(JSON.stringify(e.data)),r=n.length,i=new DataView(Buffer.alloc(4+r).buffer);i.setUint8(0,e.version),i.setInt32(1,e.cmd,!0),i.setInt8(3,e.subCmd),n.forEach((e,t)=>{i.setUint8(4+t,e)}),this.ws.send(i)}}requestOldMessages(e,t=null){const n={version:1,cmd:e===k.User?510:511,subCmd:1,data:{first:!0,lastId:t,preIds:[]}};this.sendWs(n)}requestOldReactions(e,t=null){const n={version:1,cmd:e===k.User?610:611,subCmd:1,data:{first:!0,lastId:t,preIds:[]}};this.sendWs(n)}reset(){this.ws=null,this.cipherKey=void 0,this.pingInterval&&clearInterval(this.pingInterval)}}const tr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/accept`);return async function(e){const i={fid:e,language:t.language},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}});var nr,rr;var ir=function(){if(rr)return nr;rr=1;var e=vn();return nr=function(){if(!arguments.length)return[];var t=arguments[0];return e(t)?t:[t]},nr}();const ar=Ht(ir),or=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/blockedmems/add`);return async function(e,t){const i={grid:t,members:ar(e)},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),sr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/admins/add`);return async function(e,i){const a={grid:i,members:ar(e),imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),cr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/poll/option/add`);return async function(e){const t={poll_id:e.pollId,new_options:JSON.stringify(e.options),voted_option_ids:e.votedOptionIds},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),dr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.quick_message[0]}/api/quickmessage/create`);return async function(i){const a=i.media?1:0,o={keyword:i.keyword,message:{title:i.title,params:""},type:a,imei:t.imei};if(1===a){if(!i.media)throw new f("Media is required");const t=await e.uploadProductPhoto({file:i.media}),n=t.photoId,r=t.thumbUrl,a=t.normalUrl,s=t.hdUrl;o.media={items:[{type:0,photoId:n,title:"",width:"",height:"",previewThumb:r,rawUrl:a||s,thumbUrl:r,normalUrl:a||s,hdUrl:s||a}]}}const s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(n.makeURL(r,{params:s}),{method:"GET"});return n.resolve(c)}}),pr=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.reaction[0]}/api/message/reaction`),[k.Group]:n.makeURL(`${e.zpwServiceMap.reaction[0]}/api/group/reaction`)};return async function(e,i){const a=r[i.type];let o,s;if("object"==typeof e)o=e.rType,s=e.source;else switch(e){case L.HAHA:o=0,s=6;break;case L.LIKE:o=3,s=6;break;case L.HEART:o=5,s=6;break;case L.WOW:o=32,s=6;break;case L.CRY:o=2,s=6;break;case L.ANGRY:o=20,s=6;break;case L.KISS:o=8,s=6;break;case L.TEARS_OF_JOY:o=7,s=6;break;case L.SHIT:o=66,s=6;break;case L.ROSE:o=120,s=6;break;case L.BROKEN_HEART:o=65,s=6;break;case L.DISLIKE:o=4,s=6;break;case L.LOVE:o=29,s=6;break;case L.CONFUSED:o=51,s=6;break;case L.WINK:o=45,s=6;break;case L.FADE:o=121,s=6;break;case L.SUN:o=67,s=6;break;case L.BIRTHDAY:o=126,s=6;break;case L.BOMB:o=127,s=6;break;case L.OK:o=68,s=6;break;case L.PEACE:o=69,s=6;break;case L.THANKS:o=70,s=6;break;case L.PUNCH:o=71,s=6;break;case L.SHARE:o=72,s=6;break;case L.PRAY:o=73,s=6;break;case L.NO:o=131,s=6;break;case L.BAD:o=132,s=6;break;case L.LOVE_YOU:o=133,s=6;break;case L.SAD:o=1,s=6;break;case L.VERY_SAD:o=16,s=6;break;case L.COOL:o=21,s=6;break;case L.NERD:o=22,s=6;break;case L.BIG_SMILE:o=23,s=6;break;case L.SUNGLASSES:o=26,s=6;break;case L.NEUTRAL:o=30,s=6;break;case L.SAD_FACE:o=35,s=6;break;case L.BYE:o=36,s=6;break;case L.SLEEPY:o=38,s=6;break;case L.WIPE:o=39,s=6;break;case L.DIG:o=42,s=6;break;case L.ANGUISH:o=44,s=6;break;case L.HANDCLAP:o=46,s=6;break;case L.ANGRY_FACE:o=47,s=6;break;case L.F_CHAIR:o=48,s=6;break;case L.L_CHAIR:o=49,s=6;break;case L.R_CHAIR:o=50,s=6;break;case L.SILENT:o=52,s=6;break;case L.SURPRISE:o=53,s=6;break;case L.EMBARRASSED:o=54,s=6;break;case L.AFRAID:o=60,s=6;break;case L.SAD2:o=61,s=6;break;case L.BIG_LAUGH:o=62,s=6;break;case L.RICH:o=63,s=6;break;case L.BEER:o=99,s=6;break;default:o=-1,s=6}const c="object"==typeof e?e.icon:e;if(null==o||null==s||null==c)throw new f("Invalid reaction");const d={react_list:[{message:JSON.stringify({rMsg:[{gMsgID:parseInt(i.data.msgId),cMsgID:parseInt(i.data.cliMsgId),msgType:1}],rIcon:c,rType:o,source:s}),clientId:Date.now()}]};i.type==k.User?d.toid=i.threadId:(d.grid=i.threadId,d.imei=t.imei);const p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt message");const u=await n.request(a,{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u,e=>"string"==typeof e.data.msgIds?{msgIds:JSON.parse(e.data.msgIds)}:e.data)}}),ur=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/conv/addUnreadMark`);return async function(e,i=k.User){const a=Date.now(),o=a.toString(),s=i===k.Group,c={param:JSON.stringify({[s?"convsGroup":"convsUser"]:[{id:e,cliMsgId:o,fromUid:"0",ts:a}],[s?"convsUser":"convsGroup"]:[],imei:t.imei})},d=n.encodeAES(JSON.stringify(c));if(!d)throw new f("Failed to encrypt params");const p=await n.request(r,{method:"POST",body:new URLSearchParams({params:d})});return n.resolve(p,e=>{const t=e.data;return"string"==typeof t.data?{data:JSON.parse(t.data),status:t.status}:e.data})}}),lr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/invite/v2`);return async function(e,i){const a=ar(e),o={grid:i,members:a,memberTypes:a.map(()=>-1),imei:t.imei,clientLang:t.language},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),mr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/block`);return async function(e){const i={fid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),hr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/feed/block`);return async function(e,i){const a={fid:i,isBlockFeed:e?1:0,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),fr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.file[0]}/api/profile/upavatar`);return async function(e){const i="string"==typeof e,a=i?await re(t,e):e.metadata,s=a.totalSize||0,c={avatarSize:120,clientId:String(t.uid+pe("%H:%M %d/%m/%Y")),language:t.language,metaData:JSON.stringify({origin:{width:a.width||1080,height:a.height||1080},processed:{width:a.width||1080,height:a.height||1080,size:s}})},d=i?o.readFileSync(e):e.data,p=new h;p.append("fileContent",d,{filename:"blob",contentType:"image/jpeg"});const u=n.encodeAES(JSON.stringify(c));if(!u)throw new f("Failed to encrypt params");const l=await n.request(n.makeURL(r,{params:u}),{method:"POST",headers:p.getHeaders(),body:p.getBuffer()});return n.resolve(l)}}),gr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.alias[0]}/api/alias/update`);return async function(e,i){const a={friendId:i,alias:e,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),wr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.file[0]}/api/group/upavatar`);return async function(e,i){const a={grid:i,avatarSize:120,clientId:`g${i}${ue((new Date).getTime())}`,imei:t.imei},s="string"==typeof e,c=s?await re(t,e):e.metadata;a.originWidth=c.width||1080,a.originHeight=c.height||1080;const d=s?o.readFileSync(e):e.data,p=new h;p.append("fileContent",d,{filename:"blob",contentType:"image/jpeg"});const u=n.encodeAES(JSON.stringify(a));if(!u)throw new f("Failed to encrypt params");const l=await n.request(n.makeURL(r,{params:u}),{method:"POST",headers:p.getHeaders(),body:p.getBuffer()});return n.resolve(l)}}),yr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/updateinfo`);return async function(e,i){0==e.length&&(e=Date.now().toString());const a={grid:i,gname:e,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),Sr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/change-owner`);return async function(e,i){const a={grid:i,newAdminId:e,imei:t.imei,language:t.language},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),vr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.auto_reply[0]}/api/autoreply/create`);return async function(e){const i=ar(e.uids||[]),a=2===e.scope||3===e.scope?i:[],o={cliLang:t.language,enable:e.isEnable,content:e.content,startTime:e.startTime,endTime:e.endTime,recurrence:["RRULE:FREQ=DAILY;"],scope:e.scope,uids:a},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),kr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/catalog/create`);return async function(e){const t={catalog_name:e,catalog_photo:""},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Ur=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/create/v2`);return async function(i){if(0==i.members.length)throw new f("Group must have at least one member");const a={clientId:Date.now(),gname:String(Date.now()),gdesc:null,members:i.members,membersTypes:i.members.map(()=>-1),nameChanged:0,createLink:1,clientLang:t.language,imei:t.imei,zsource:601};i.name&&i.name.length>0&&(a.gname=i.name,a.nameChanged=1);const o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt message");const s=await n.request(n.makeURL(r,{params:o}),{method:"POST"}),c=await n.resolve(s);return i.avatarSource=i.avatarSource||i.avatarPath,i.avatarSource&&await e.changeGroupAvatar(i.avatarSource,c.groupId).catch(n.logger.error),c}}),br=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/createv2`);return async function(e,i){const a={grid:i,type:0,color:-16777216,emoji:"",startTime:-1,duration:-1,params:JSON.stringify({title:e.title}),repeat:0,src:1,imei:t.imei,pinAct:e.pinAct?1:0},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s,e=>("string"==typeof e.data.params&&(e.data.params=JSON.parse(e.data.params)),e.data))}}),Rr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/poll/create`);return async function(e,i){var a;const o={group_id:i,question:e.question,options:e.options,expired_time:null!==(a=e.expiredTime)&&void 0!==a?a:0,pinAct:!1,allow_multi_choices:!!e.allowMultiChoices,allow_add_new_option:!!e.allowAddNewOption,is_hide_vote_preview:!!e.hideVotePreview,is_anonymous:!!e.isAnonymous,poll_type:0,src:1,imei:t.imei},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Er=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/product/create`);return async function(t){const i=t.product_photos||[];if(t.files&&0==t.files.length){if(t.files.length>5)throw new f("Maximum 5 media files are allowed");for(const n of t.files){const t=await e.uploadProductPhoto({file:n}),r=t.normalUrl||t.hdUrl;i.push(r)}}if(i.length>5)throw new f("Maximum 5 media files are allowed");const a={product_name:t.productName,price:t.price,description:t.description,product_photos:i,catalog_id:t.catalogId,currency_unit:"₫",create_time:Date.now()},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),_r=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/oneone/create`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/createv2`)};return async function(e,i,a=k.User){var o,s,c,d,p,u;const l=a===k.User?{objectData:JSON.stringify({toUid:i,type:0,color:-16245706,emoji:null!==(o=e.emoji)&&void 0!==o?o:"⏰",startTime:null!==(s=e.startTime)&&void 0!==s?s:Date.now(),duration:-1,params:{title:e.title},needPin:!1,repeat:null!==(c=e.repeat)&&void 0!==c?c:I.None,creatorUid:t.uid,src:1}),imei:t.imei}:{grid:i,type:0,color:-16245706,emoji:null!==(d=e.emoji)&&void 0!==d?d:"⏰",startTime:null!==(p=e.startTime)&&void 0!==p?p:Date.now(),duration:-1,params:JSON.stringify({title:e.title}),repeat:null!==(u=e.repeat)&&void 0!==u?u:I.None,src:1,imei:t.imei,pinAct:0},m=n.encodeAES(JSON.stringify(l));if(!m)throw new f("Failed to encrypt params");const h=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:m})});return n.resolve(h)}}),Or=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.auto_reply[0]}/api/autoreply/delete`);return async function(e){const i={cliLang:t.language,id:e},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),Ar=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/del-avatars`);return async function(e){const i=ar(e).map(e=>({photoId:e})),a={delPhotos:JSON.stringify(i),imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),Lr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/catalog/delete`);return async function(e){const t={catalog_id:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Ir=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/deleteconver`,{nretry:0}),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/deleteconver`,{nretry:0})};return async function(e,i,a=k.User){const o=Date.now().toString(),s=a===k.User?{toid:i,cliMsgId:o,conver:e,onlyMe:1,imei:t.imei}:{grid:i,cliMsgId:o,conver:e,onlyMe:1,imei:t.imei},c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt params");const d=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:c})});return n.resolve(d)}}),Nr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/inv-box/mdel-inv`);return async function(e,t=!1){const i=ar(e),a={invitations:JSON.stringify(i.map(e=>({grid:e}))),block:t?1:0},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),Tr=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/delete`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/deletemsg`)};return async function(e,i=!1){const{threadId:a,type:o=k.User,data:s}=e,c=o===k.Group;if(t.uid==s.uidFrom&&!1===i)throw new f("To delete your message for everyone, use undo api instead");if(!c&&!1===i)throw new f("Can't delete message for everyone in a private chat");const d={[c?"grid":"toid"]:a,cliMsgId:Date.now(),msgs:[{cliMsgId:s.cliMsgId,globalMsgId:s.msgId,ownerId:s.uidFrom,destId:a}],onlyMe:i?1:0};c||(d.imei=t.imei);const p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt message");const u=await n.request(r[o],{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u)}}),Mr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/product/mdelete`);return async function(e){const t={product_ids:ar(e.productIds),catalog_id:e.catalogId},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Pr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/link/disable`);return async function(e){const t={grid:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Cr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/disperse`);return async function(e){const i={grid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),zr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/updatev2`);return async function(e,i){const a={grid:i,type:0,color:-16777216,emoji:"",startTime:-1,duration:-1,params:JSON.stringify({title:e.title}),topicId:e.topicId,repeat:0,imei:t.imei,pinAct:e.pinAct?1:2},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s,e=>{const t=e.data;return"string"==typeof t.params&&(t.params=JSON.parse(t.params)),t})}}),Fr=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/oneone/update`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/updatev2`)};return async function(e,i,a=k.User){var o,s,c,d,p,u;const l=a===k.User?{objectData:JSON.stringify({toUid:i,type:0,color:-16777216,emoji:null!==(o=e.emoji)&&void 0!==o?o:"",startTime:null!==(s=e.startTime)&&void 0!==s?s:Date.now(),duration:-1,params:{title:e.title},needPin:!1,reminderId:e.topicId,repeat:null!==(c=e.repeat)&&void 0!==c?c:0})}:{grid:i,type:0,color:-16777216,emoji:null!==(d=e.emoji)&&void 0!==d?d:"",startTime:null!==(p=e.startTime)&&void 0!==p?p:Date.now(),duration:-1,params:JSON.stringify({title:e.title}),topicId:e.topicId,repeat:null!==(u=e.repeat)&&void 0!==u?u:0,imei:t.imei,pinAct:2},m=n.encodeAES(JSON.stringify(l));if(!m)throw new f("Failed to encrypt params");const h=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:m})});return n.resolve(h)}}),qr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/link/new`);return async function(e){const i={grid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Dr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/me-v2`);return async function(){const e=await n.request(r,{method:"GET"});return n.resolve(e)}}),Br=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/profile/get`);return async function(e){if(!e)throw new f("Missing phoneNumber");e.startsWith("0")&&"vi"==t.language&&(e="84"+e.slice(1));const i={phone:e,avatar_size:240,language:t.language,imei:t.imei,reqSrc:40},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt message");const o=new URL(r);o.searchParams.append("params",a);const s=await n.request(n.makeURL(o.toString(),{params:a}));return n.resolve(s,e=>{if(e.error&&216!=e.error.code)throw new f(e.error.message,e.error.code);return e.data})}}),Jr=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/message/mforward`),[k.Group]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/group/mforward`)};return async function(e,i,a=k.User){var o,s;if(!e.message)throw new f("Missing message content");if(!i||0===i.length)throw new f("Missing thread IDs");const c=Date.now().toString(),d={message:e.message,reference:e.reference?JSON.stringify({type:3,data:JSON.stringify(e.reference)}):void 0},p=e.reference?{fw:{pmsg:{st:1,ts:e.reference.ts,id:e.reference.id},rmsg:{st:1,ts:e.reference.ts,id:e.reference.id},fwLvl:e.reference.fwLvl}}:null;let u;u=a===k.User?{toIds:i.map(t=>{var n;return{clientId:c,toUid:t,ttl:null!==(n=e.ttl)&&void 0!==n?n:0}}),imei:t.imei,ttl:null!==(o=e.ttl)&&void 0!==o?o:0,msgType:"1",totalIds:i.length,msgInfo:JSON.stringify(d),decorLog:JSON.stringify(p)}:{grids:i.map(t=>{var n;return{clientId:c,grid:t,ttl:null!==(n=e.ttl)&&void 0!==n?n:0}}),ttl:null!==(s=e.ttl)&&void 0!==s?s:0,msgType:"1",totalIds:i.length,msgInfo:JSON.stringify(d),decorLog:JSON.stringify(p)};const l=n.encodeAES(JSON.stringify(u));if(!l)throw new f("Failed to encrypt params");const m=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:l})});return n.resolve(m)}}),Gr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.alias[0]}/api/alias/list`);return async function(e=100,i=1){const a={page:i,count:e,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),$r=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/friend/getfriends`);return async function(e=2e4,i=1){const a={incInvalid:1,page:i,count:e,avatar_size:120,actiontime:0,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt message");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),jr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group_poll[0]}/api/group/getlg/v4`);return async function(){const e=await n.request(r,{method:"GET"});return n.resolve(e)}}),xr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.label[0]}/api/archivedchat/list`);return async function(){const e={version:1,imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Vr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/conv/autodelete/getConvers`);return async function(){const e=n.encodeAES(JSON.stringify({}));if(!e)throw new f("Failed to encrypt params");const t=await n.request(n.makeURL(r,{params:e}),{method:"GET"});return n.resolve(t)}}),Kr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.auto_reply[0]}/api/autoreply/list`);return async function(){const e={version:0,cliLang:t.language},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Hr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/avatar-list`);return async function(e=50,i=1){const a={page:i,albumId:"0",count:e,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),Qr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/friend/get-bizacc`);return async function(e){const t={fid:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Wr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/catalog/list`);return async function(e){var t,i,a;const o={version_list_catalog:0,limit:null!==(t=null==e?void 0:e.limit)&&void 0!==t?t:20,last_product_id:null!==(i=null==e?void 0:e.lastProductId)&&void 0!==i?i:-1,page:null!==(a=null==e?void 0:e.page)&&void 0!==a?a:0},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Yr=Se()((e,t)=>()=>t),Zr=Se()((e,t)=>function(){return t.cookie}),Xr=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend_board[0]}/api/friendboard/list`);return async function(e){const i={conversationId:e,version:0,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}});const ei=Ht(vn()),ti=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/friend/onlines`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a,e=>{const t=e.data;if(ei(t.onlines))for(const e of t.onlines)if("string"==typeof e.status){const t=JSON.parse(e.status);t&&"string"==typeof t.status&&(e.status=t.status)}return t})}}),ni=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/recommendsv2/list`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),ri=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/reqstatus`);return async function(e){const i={fid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),ii=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/blockedmems/list`);return async function(e,i){var a,o;const s={grid:i,page:null!==(a=e.page)&&void 0!==a?a:1,count:null!==(o=e.count)&&void 0!==o?o:50,imei:t.imei},c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt params");const d=await n.request(n.makeURL(r,{params:c}),{method:"GET"});return n.resolve(d)}}),ai=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/getmg-v2`);return async function(e){const t=ar(e),i={gridVerMap:JSON.stringify(t.reduce((e,t)=>(e[t]=0,e),{}))},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt message");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),oi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/inv-box/inv-info`);return async function(e){var t,i;const a={grId:e.groupId,mcount:null!==(t=e.mcount)&&void 0!==t?t:10,mpage:null!==(i=e.mpage)&&void 0!==i?i:1},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s,e=>{const t=e.data,n=t.groupInfo.topic;if("string"==typeof n.params){const e=JSON.parse(n.params);"string"==typeof e.extra&&(e.extra=JSON.parse(e.extra)),n.params=e}return t})}}),si=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/inv-box/list`);return async function(e){var t,i,a,o;const s={mpage:null!==(t=null==e?void 0:e.mpage)&&void 0!==t?t:1,page:null!==(i=null==e?void 0:e.page)&&void 0!==i?i:0,invPerPage:null!==(a=null==e?void 0:e.invPerPage)&&void 0!==a?a:12,mcount:null!==(o=null==e?void 0:e.mcount)&&void 0!==o?o:10,lastGroupId:null,avatar_size:120,member_avatar_size:120},c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt params");const d=await n.request(n.makeURL(r,{params:c}),{method:"GET"});return n.resolve(d)}}),ci=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/link/detail`);return async function(e){const i={grid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),di=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/link/ginfo`);return async function(e){var t;const i={link:e.link,avatar_size:120,member_avatar_size:120,mpage:null!==(t=e.memberPage)&&void 0!==t?t:1},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),pi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/group/members`);return async function(e){const t={friend_pversion_map:ar(e).map(e=>e.endsWith("_0")?e:`${e}_0`)},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt message");const a=await n.request(n.makeURL(r,{params:i}));return n.resolve(a)}}),ui=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/hiddenconvers/get-all`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),li=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.label[0]}/api/convlabel/get`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt message");const a=await n.request(n.makeURL(r,{params:i}));return n.resolve(a,e=>{const t=e.data;return{labelData:JSON.parse(t.labelData),version:t.version,lastUpdateTime:t.lastUpdateTime}})}}),mi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/list`);return async function(e,i){var a,o;const s={group_id:i,board_type:0,page:null!==(a=e.page)&&void 0!==a?a:1,count:null!==(o=e.count)&&void 0!==o?o:20,last_id:0,last_type:0,imei:t.imei},c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt params");const d=await n.request(n.makeURL(r,{params:c}),{method:"GET"});return n.resolve(d,e=>{const t=e.data;return t.items.forEach(e=>{if(e.boardType!=v.Poll){const t=e.data;"string"==typeof t.params&&(t.params=JSON.parse(t.params))}}),t})}}),hi=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/oneone/list`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/listReminder`)};return async function(e,i,a=k.User){var o,s,c,d;const p=Object.assign({objectData:JSON.stringify(a===k.User?{uid:i,board_type:1,page:null!==(o=e.page)&&void 0!==o?o:1,count:null!==(s=e.count)&&void 0!==s?s:20,last_id:0,last_type:0}:{group_id:i,board_type:1,page:null!==(c=e.page)&&void 0!==c?c:1,count:null!==(d=e.count)&&void 0!==d?d:20,last_id:0,last_type:0})},a===k.Group&&{imei:t.imei}),u=n.encodeAES(JSON.stringify(p));if(!u)throw new f("Failed to encrypt params");const l=await n.request(n.makeURL(r[a],{params:u}),{method:"GET"});return n.resolve(l,e=>JSON.parse(e.data))}}),fi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/getmute`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),gi=Se()((e,t)=>()=>t.uid),wi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/pending-mems/list`);return async function(e){const i={grid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),yi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/pinconvers/list`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Si=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/poll/detail`);return async function(e){if(!e)throw new f("Missing poll id");const i={poll_id:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt message");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),vi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/product/list`);return async function(e){var t,i,a,o;const s={catalog_id:e.catalogId,limit:null!==(t=e.limit)&&void 0!==t?t:100,version_catalog:null!==(i=e.versionCatalog)&&void 0!==i?i:0,last_product_id:null!==(a=e.lastProductId)&&void 0!==a?a:-1,page:null!==(o=e.page)&&void 0!==o?o:0},c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt params");const d=await n.request(r,{method:"POST",body:new URLSearchParams({params:c})});return n.resolve(d)}}),ki=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/mget-qr`);return async function(e){"string"==typeof e&&(e=[e]);const t={fids:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Ui=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.quick_message[0]}/api/quickmessage/list`);return async function(){const e={version:0,lang:0,imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),bi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/group/related`);return async function(e){const i=ar(e),a={friend_ids:JSON.stringify(i),imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),Ri=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/getReminder`);return async function(e){const i={eventId:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Ei=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/listResponseEvent`);return async function(e){const t={eventId:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),_i=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/requested/list`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Oi=Se()((e,t,n)=>{const r=n.makeURL("https://wpa.chat.zalo.me/api/setting/me");return async function(){const e=n.encodeAES(JSON.stringify({}));if(!e)throw new f("Failed to encrypt params");const t=await n.request(n.makeURL(r,{params:e}),{method:"GET"});return n.resolve(t)}}),Ai=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.sticker}/api/message/sticker`);return async function(e){if(!e)throw new f("Missing keyword");const i={keyword:e,gif:1,guggy:0,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt message");const o=new URL(r);o.pathname=o.pathname+"/suggest/stickers";const s=await n.request(n.makeURL(o.toString(),{params:a}));return n.resolve(s,e=>{const t=e.data,n=[];return t.sugg_sticker&&t.sugg_sticker.forEach(e=>n.push(e.sticker_id)),n})}}),Li=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.sticker}/api/message/sticker/sticker_detail`);return async function(e){if(!e)throw new f("Missing sticker id");const i=ar(e);if(0==i.length)throw new f("Missing sticker id");const a=[],o=i.map(e=>async function(e){const i={sid:e},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt message");const o=await n.request(n.makeURL(r,{params:a}));return ye(t,o)}(e));return(await Promise.allSettled(o)).forEach(e=>{"fulfilled"===e.status&&a.push(e.value)}),a}}),Ii=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/conv/getUnreadMark`);return async function(){const e=n.encodeAES(JSON.stringify({}));if(!e)throw new f("Failed to encrypt params");const t=await n.request(n.makeURL(r,{params:e}),{method:"GET"});return n.resolve(t,e=>{const t=e.data;return"string"==typeof t.data?{data:JSON.parse(t.data),status:t.status}:t})}}),Ni=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/friend/getprofiles/v2`);return async function(e){if(!e)throw new f("Missing user id");const i=ar(e).map(e=>e.split("_").length>1?e:`${e}_0`),a={phonebook_version:t.extraVer.phonebook,friend_pversion_map:i,avatar_size:120,language:t.language,show_online_status:1,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),Ti=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/invite/multi`);return async function(e,i){const a={grids:ar(i),member:e,memberType:-1,srcInteraction:2,clientLang:t.language},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),Mi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/inv-box/join`);return async function(e){const i={grid:e,lang:t.language},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Pi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/link/join`);return async function(e){const i={link:e,clientLang:t.language},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Ci=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.chat[0]}/keepalive`);return async function(){const e={imei:t.imei},i=n.encodeAES(JSON.stringify(e));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a,void 0,!1)}}),zi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/lastOnline`);return async function(e){const i={uid:e,conv_type:1,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Fi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/leave`);return async function(e,i=!1){const a={grids:[e],imei:t.imei,silent:i?1:0,language:t.language},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),qi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/poll/end`);return async function(e){const i={poll_id:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),Di=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.file[0]}/api/message/parselink`);return async function(e){const i={link:e,version:1,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Bi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/reject`);return async function(e){const t={fid:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Ji=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/remove`);return async function(e){const i={fid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),Gi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.alias[0]}/api/alias/remove`);return async function(e){const t={friendId:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),$i=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/blockedmems/remove`);return async function(e,t){const i={grid:t,members:ar(e)},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),ji=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/admins/remove`);return async function(e,i){const a={grid:i,members:ar(e),imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),xi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.quick_message[0]}/api/quickmessage/delete`);return async function(e){const t={itemIds:ar(e)},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Vi=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/oneone/remove`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group_board[0]}/api/board/topic/remove`)};return async function(e,i,a=k.User){const o=a===k.User?{uid:i,reminderId:e}:{grid:i,topicId:e,imei:t.imei},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Ki=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/conv/removeUnreadMark`);return async function(e,t=k.User){const i=Date.now(),a=t===k.Group,o={param:JSON.stringify({[a?"convsGroup":"convsUser"]:[e],[a?"convsUser":"convsGroup"]:[],[a?"convsGroupData":"convsUserData"]:[{id:e,ts:i}],[a?"convsUserData":"convsGroupData"]:[]})},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c,e=>{const t=e.data;return"string"==typeof t.data?{data:JSON.parse(t.data),status:t.status}:e.data})}}),Hi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/kickout`);return async function(e,i){const a={grid:i,members:ar(e),imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),Qi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/hiddenconvers/reset`);return async function(){const e=n.encodeAES(JSON.stringify({}));if(!e)throw new f("Failed to encrypt params");const t=await n.request(n.makeURL(r,{params:e}),{method:"GET"});return n.resolve(t)}}),Wi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/reuse-avatar`);return async function(e){const i={photoId:e,isPostSocial:0,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}});var Yi;!function(e){e[e.SUCCESS=0]="SUCCESS",e[e.NOT_IN_PENDING_LIST=170]="NOT_IN_PENDING_LIST",e[e.ALREADY_IN_GROUP=178]="ALREADY_IN_GROUP",e[e.INSUFFICIENT_PERMISSION=166]="INSUFFICIENT_PERMISSION"}(Yi||(Yi={}));const Zi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/pending-mems/review`);return async function(e,t){const i={grid:t,members:ar(e.members),isApprove:e.isApprove?1:0},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),Xi=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.zimsg[0]}/api/transfer/card`);return async function(e,t,i=k.User){var a;const o={binBank:e.binBank,numAccBank:e.numAccBank,nameAccBank:(null===(a=e.nameAccBank)||void 0===a?void 0:a.toUpperCase())||"---",cliMsgId:Date.now().toString(),tsMsg:Date.now(),destUid:t,destType:i===k.Group?1:0},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),ea=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/message/forward`),[k.Group]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/group/forward`)};return async function(i,a,o=k.User){var s;const c=(await e.getQR(i.userId))[i.userId],d=Date.now().toString(),p={ttl:null!==(s=i.ttl)&&void 0!==s?s:0,msgType:6,clientId:d,msgInfo:{contactUid:i.userId,qrCodeUrl:c}};i.phoneNumber&&(p.msgInfo.phone=i.phoneNumber),o==k.Group?(p.visibility=0,p.grid=a):(p.toId=a,p.imei=t.imei);const u=JSON.stringify(p.msgInfo);p.msgInfo=u;const l=n.encodeAES(JSON.stringify(p));if(!l)throw new f("Failed to encrypt params");const m=await n.request(r[o],{method:"POST",body:new URLSearchParams({params:l})});return n.resolve(m)}}),ta=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/deliveredv2`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/deliveredv2`)};return async function(e,i,a=k.User){if(!i)throw new f("messages are missing or not in a valid array format.");const o=ar(i);if(0===o.length||o.length>50)throw new f("messages must contain between 1 and 50 messages.");const s=o[0].idTo;if(a===k.Group&&!o.every(e=>e.idTo===s))throw new f("All messages must have the same idTo for Group thread");const c=Object.assign({seen:e?1:0,data:o.map(e=>({cmi:e.cliMsgId,gmi:e.msgId,si:e.uidFrom,di:e.idTo===t.uid?"0":e.idTo,mt:e.msgType,st:e.st||0===e.st?0:-1,at:e.at||0===e.at?0:-1,cmd:e.cmd||0===e.cmd?0:-1,ts:parseInt(`${e.ts}`)||0===parseInt(`${e.ts}`)?0:-1}))},a===k.User?{}:{grid:s}),d=Object.assign({msgInfos:JSON.stringify(c)},a===k.User?{}:{imei:t.imei}),p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt params");const u=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u)}}),na=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/sendreq`);return async function(e,i){const a={toid:i,msg:e,reqsrc:30,imei:t.imei,language:t.language,srcParams:JSON.stringify({uidTo:i})},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),ra=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/link`,{nretry:0}),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/sendlink`,{nretry:0})};return async function(i,a,o=k.User){var s;const c=await e.parseLink(i.link),d={msg:i.msg&&i.msg.trim()?i.msg.includes(i.link)?i.msg:i.msg+" "+i.link:i.link,href:c.data.href,src:c.data.src,title:c.data.title,desc:c.data.desc,thumb:c.data.thumb,type:2,media:JSON.stringify(c.data.media),ttl:null!==(s=i.ttl)&&void 0!==s?s:0,clientId:Date.now()};o==k.Group?(d.grid=a,d.imei=t.imei):(d.toId=a,d.mentionInfo="");const p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt params");const u=await n.request(r[o],{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u)}});var ia,aa,oa,sa,ca,da,pa,ua,la,ma,ha,fa,ga,wa;function ya(){if(fa)return ha;fa=1;var e=function(){if(aa)return ia;aa=1;var e=rn()(Wt(),"DataView");return ia=e}(),t=function(){if(sa)return oa;sa=1;var e=rn()(Wt(),"Map");return oa=e}(),n=function(){if(da)return ca;da=1;var e=rn()(Wt(),"Promise");return ca=e}(),r=function(){if(ua)return pa;ua=1;var e=rn()(Wt(),"Set");return pa=e}(),i=function(){if(ma)return la;ma=1;var e=rn()(Wt(),"WeakMap");return la=e}(),a=Zt(),o=nn(),s="[object Map]",c="[object Promise]",d="[object Set]",p="[object WeakMap]",u="[object DataView]",l=o(e),m=o(t),h=o(n),f=o(r),g=o(i),w=a;return(e&&w(new e(new ArrayBuffer(1)))!=u||t&&w(new t)!=s||n&&w(n.resolve())!=c||r&&w(new r)!=d||i&&w(new i)!=p)&&(w=function(e){var t=a(e),n="[object Object]"==t?e.constructor:void 0,r=n?o(n):"";if(r)switch(r){case l:return u;case m:return s;case h:return c;case f:return d;case g:return p}return t}),ha=w}var Sa=function(){if(wa)return ga;wa=1;var e=Qn(),t=ya(),n=Sn(),r=vn(),i=hn(),a=Ln(),o=wn(),s=Vn(),c=Object.prototype.hasOwnProperty;return ga=function(d){if(null==d)return!0;if(i(d)&&(r(d)||"string"==typeof d||"function"==typeof d.splice||a(d)||s(d)||n(d)))return!d.length;var p=t(d);if("[object Map]"==p||"[object Set]"==p)return!d.size;if(o(d))return!e(d).length;for(var u in d)if(c.call(d,u))return!1;return!0}}();const va=Ht(Sa),ka={image:"photo_original/send?",gif:"gif?",video:"asyncfile/msg?",others:"asyncfile/msg?"};function Ua(e){const t=e;return"string"==typeof t.content?t.propertyExt:"chat.todo"==t.msgType?{properties:{color:0,size:0,type:0,subType:0,ext:'{"shouldParseLinkOrContact":0}'}}:Object.assign(Object.assign({},t.content),{thumbUrl:t.content.thumb,oriUrl:t.content.href,normalUrl:t.content.href})}function ba(e){const t=e;return"chat.todo"==t.msgType&&"object"==typeof t.content&&"string"==typeof t.content.params?JSON.parse(t.content.params).item.content:""}var Ra,Ea;!function(e){e.Bold="b",e.Italic="i",e.Underline="u",e.StrikeThrough="s",e.Red="c_db342e",e.Orange="c_f27806",e.Yellow="c_f7b503",e.Green="c_15a85f",e.Small="f_13",e.Big="f_18",e.UnorderedList="lst_1",e.OrderedList="lst_2",e.Indent="ind_$"}(Ra||(Ra={})),function(e){e[e.Default=0]="Default",e[e.Important=1]="Important",e[e.Urgent=2]="Urgent"}(Ea||(Ea={}));const _a=Se()((e,t,r)=>{const i={message:{[k.User]:r.makeURL(`${e.zpwServiceMap.chat[0]}/api/message`,{nretry:0}),[k.Group]:r.makeURL(`${e.zpwServiceMap.group[0]}/api/group`,{nretry:0})},attachment:{[k.User]:`${e.zpwServiceMap.file[0]}/api/message/`,[k.Group]:`${e.zpwServiceMap.file[0]}/api/group/`}},{sharefile:a}=t.settings.features;function o(e){return e>1024*a.max_size_share_file_v3*1024}async function s(e){const n=ar(e),i=[];for(const e of n)i.push((async()=>{const n=await r.request(e.url,{method:"POST",body:e.body,headers:e.headers});return await ye(t,n)})());return await Promise.all(i)}async function c(e,i){const a=new h,o="string"==typeof e?await n.readFile(e):e.data;a.append("fileContent",o,{filename:"blob",contentType:"image/png"});const s={clientId:Date.now(),imei:t.imei},c=r.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt message");const d=await r.request(r.makeURL(i+"upthumb?",{params:c}),{method:"POST",headers:a.getHeaders(),body:a.getBuffer()});return await ye(t,d)}function d(e,t,n){let r=0;const i=va(n)||e!=k.Group?[]:ar(n).filter(e=>e.pos>=0&&e.uid&&e.len>0).map(e=>(r+=e.len,{pos:e.pos,uid:e.uid,len:e.len,type:"-1"==e.uid?1:0}));if(r>t.length)throw new f("Invalid mentions: total mention characters exceed message length");return{mentionsFinal:i,msgFinal:t}}function p(e,t){t!=Ea.Important&&t!=Ea.Urgent||Yn(e,{metaData:{urgency:t}})}async function u({msg:e,styles:n,urgency:a,mentions:o,quote:s,ttl:c},u,l){if(!e||0==e.length)throw new f("Missing message content");const m=l==k.Group,{mentionsFinal:h,msgFinal:g}=d(l,e,o);if(e=g,s){if("string"!=typeof s.content&&"webchat"==s.msgType)throw new f("This kind of `webchat` quote type is not available");if("group.poll"==s.msgType)throw new f("The `group.poll` quote type is not available")}const w=h.length>0&&m,y=s?{toid:m?void 0:u,grid:m?u:void 0,message:e,clientId:Date.now(),mentionInfo:w?JSON.stringify(h):void 0,qmsgOwner:s.uidFrom,qmsgId:s.msgId,qmsgCliId:s.cliMsgId,qmsgType:(S=s.msgType,"webchat"===S?1:"chat.voice"===S?31:"chat.photo"===S?32:"chat.sticker"===S?36:"chat.doodle"===S?37:"chat.recommended"===S||"chat.link"===S?38:"chat.video.msg"===S?44:"share.file"===S?46:"chat.gif"===S?49:"chat.location.new"===S?43:1),qmsgTs:s.ts,qmsg:"string"==typeof s.content?s.content:ba(s),imei:m?void 0:t.imei,visibility:m?0:void 0,qmsgAttach:m?JSON.stringify(Ua(s)):void 0,qmsgTTL:s.ttl,ttl:null!=c?c:0}:{message:e,clientId:Date.now(),mentionInfo:w?JSON.stringify(h):void 0,imei:m?void 0:t.imei,ttl:null!=c?c:0,visibility:m?0:void 0,toid:m?void 0:u,grid:m?u:void 0};var S;!function(e,t){t&&Yn(e,{textProperties:JSON.stringify({styles:t.map(e=>{var t;const n=Object.assign(Object.assign({},e),{indentSize:void 0,st:e.st==Ra.Indent?Ra.Indent.replace(/\$/g,`${null!==(t=e.indentSize)&&void 0!==t?t:1}0`):e.st});return he(n),n}),ver:0})})}(y,n),p(y,a),he(y);const v=r.encodeAES(JSON.stringify(y));if(!v)throw new f("Failed to encrypt message");const U=new URL(i.message[l]);return U.pathname=s?U.pathname+"/quote":U.pathname+"/"+(m?y.mentionInfo?"mention":"sendmsg":"sms"),{url:U.toString(),body:new URLSearchParams({params:v})}}async function l({msg:s,attachments:u,mentions:l,quote:m,ttl:g,urgency:w},y,S){if(!u)throw new f("Missing attachments");const v=ar(u);if(0==v.length)throw new f("Missing attachments");const U=v[0],b=le("string"==typeof U?U:U.filename),R=1==v.length,E=S==k.Group,_=R&&["jpg","jpeg","png","webp"].includes(b),O=v.filter(e=>"gif"==le("string"==typeof e?e:e.filename)),A=v.filter(e=>"gif"!=le("string"==typeof e?e:e.filename)),L=0==A.length?[]:await e.uploadAttachment(A,y,S),I=[];let N=L.length-1;const T=Date.now(),{mentionsFinal:M,msgFinal:P}=d(S,s,l);s=P;const C=M.length>0&&E&&1==A.length,z=A.length>1;let F=Date.now();for(const e of L){let t;switch(e.fileType){case"image":t={fileType:e.fileType,params:{photoId:e.photoId,clientId:(F++).toString(),desc:s,width:e.width,height:e.height,toid:E?void 0:String(y),grid:E?String(y):void 0,rawUrl:e.normalUrl,hdUrl:e.hdUrl,thumbUrl:e.thumbUrl,oriUrl:E?e.normalUrl:void 0,normalUrl:E?void 0:e.normalUrl,hdSize:String(e.totalSize),zsource:-1,ttl:null!=g?g:0,jcp:'{"convertible":"jxl"}',groupLayoutId:z?T:void 0,isGroupLayout:z?1:void 0,idInGroup:z?N--:void 0,totalItemInGroup:z?L.length:void 0,mentionInfo:C&&_&&!m?JSON.stringify(M):void 0},body:new URLSearchParams};break;case"video":case"others":t={fileType:e.fileType,params:{fileId:e.fileId,checksum:e.checksum,checksumSha:"",extention:le(e.fileName),totalSize:e.totalSize,fileName:e.fileName,clientId:e.clientFileId,fType:1,fileCount:0,fdata:"{}",toid:E?void 0:String(y),grid:E?String(y):void 0,fileUrl:e.fileUrl,zsource:-1,ttl:null!=g?g:0},body:new URLSearchParams}}p(t.params,w),he(t.params);const n=r.encodeAES(JSON.stringify(t.params));if(!n)throw new f("Failed to encrypt message");t.body.append("params",n),I.push(t)}for(const e of O){const d="string"==typeof e,u=d?await ae(t,e):Object.assign(Object.assign({},e.metadata),{fileName:e.filename});if(o(u.totalSize))throw new f(`File ${d?me(e):e.filename} size exceed maximum size of ${a.max_size_share_file_v3}MB`);const l=await c(e,i.attachment[k.User]),m=new h;m.append("chunkContent",d?await n.readFile(e):e.data,{filename:d?me(e):e.filename,contentType:"application/octet-stream"});const S={clientId:Date.now().toString(),fileName:u.fileName,totalSize:u.totalSize,width:u.width,height:u.height,msg:s,type:1,ttl:null!=g?g:0,visibility:E?0:void 0,toid:E?void 0:y,grid:E?y:void 0,thumb:l.url,checksum:(await se(e,u.totalSize)).data,totalChunk:1,chunkId:1};p(S,w),he(S);const v=r.encodeAES(JSON.stringify(S));if(!v)throw new f("Failed to encrypt message");I.push({query:{params:v,type:"1"},body:m.getBuffer(),headers:m.getHeaders(),fileType:"gif"})}const q=[];for(const e of I)q.push({url:r.makeURL(i.attachment[S]+ka[e.fileType],Yn({nretry:"0"},e.query||{})),body:e.body,headers:"gif"==e.fileType?e.headers:{}});return q}return async function(e,t,n=k.User){if(!e)throw new f("Missing message content");if(!t)throw new f("Missing threadId");"string"==typeof e&&(e={msg:e});let{msg:r,mentions:i}=e;const{attachments:o}=e,{quote:c,ttl:d,styles:p,urgency:m}=e,h=o?ar(o):[];if(!r&&0==h.length)throw new f("Missing message content");if(h.length>0&&h.length>a.max_file)throw new f("Exceed maximum file of "+a.max_file);const g={message:null,attachment:[]};if(h.length>0){const a=le("string"==typeof h[0]?h[0]:h[0].filename);(!(1==h.length&&["jpg","jpeg","png","webp"].includes(a))&&r.length>0||r.length>0&&c)&&(await u(e,t,n).then(async e=>{g.message=(await s(e))[0]}),r="",i=void 0);const p=await l({msg:r,mentions:i,attachments:o,quote:c,ttl:d,urgency:m},t,n);g.attachment=await s(p),r=""}if(r.length>0){const r=await u(e,t,n);g.message=(await s(r))[0]}return g}});var Oa;!function(e){e[e.Sensitive=1]="Sensitive",e[e.Annoy=2]="Annoy",e[e.Fraud=3]="Fraud",e[e.Other=0]="Other"}(Oa||(Oa={}));const Aa=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.profile[0]}/api/report/abuse-v2`),[k.Group]:n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/reportabuse`)};return async function(e,i,a=k.User){const o=a==k.User?{idTo:i,objId:"person.profile",reason:e.reason.toString(),content:e.reason==Oa.Other?e.content:void 0}:{uidTo:i,type:14,reason:e.reason,content:e.reason==Oa.Other?e.content:"",imei:t.imei};he(o);const s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),La=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/seenv2`,{nretry:0}),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/seenv2`,{nretry:0})};return async function(e,i=k.User){if(!e)throw new f("messages are missing or not in a valid array format.");const a=ar(e);if(0===a.length||a.length>50)throw new f("messages must contain between 1 and 50 messages.");const o=i===k.Group,s=o?a[0].idTo:a[0].uidFrom,c={data:a.map(e=>{if((o?e.idTo:e.uidFrom)!==s)throw new f("All messages must belong to the same thread.");return{cmi:e.cliMsgId,gmi:e.msgId,si:e.uidFrom,di:e.idTo===t.uid?"0":e.idTo,mt:e.msgType,st:e.st||0===e.st?0:-1,at:e.at||0===e.at?0:-1,cmd:e.cmd||0===e.cmd?0:-1,ts:parseInt(`${e.ts}`)||0===parseInt(`${e.ts}`)?0:-1}}),[o?"grid":"senderId"]:s},d=Object.assign({msgInfos:JSON.stringify(c)},o?{imei:t.imei}:{}),p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt params");const u=await n.request(r[i],{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u)}}),Ia=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/sticker`,{nretry:"0"}),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/sticker`,{nretry:"0"})};return async function(e,i,a=k.User){if(!e)throw new f("Missing sticker");if(!i)throw new f("Missing threadId");if(!e.id)throw new f("Missing sticker id");if(!e.cateId)throw new f("Missing sticker cateId");if(!e.type)throw new f("Missing sticker type");const o=a===k.Group,s={stickerId:e.id,cateId:e.cateId,type:e.type,clientId:Date.now(),imei:t.imei,zsource:101,toid:o?void 0:i,grid:o?i:void 0};he(s);const c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt message");const d=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:c})});return n.resolve(d)}}),Na=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/typing`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/typing`)};return async function(e,i=k.User,a=U.User){if(!e)throw new f("Missing threadId");const o=Object.assign(Object.assign({[i===k.User?"toid":"grid"]:e},i===k.User?{destType:a}:{}),{imei:t.imei}),s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r[i],{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Ta=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/message/forward`),[k.Group]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/group/forward`)};return async function(e,i,a=k.User){var o,s,c,d,p,u,l,m,h,g;let w=0;const y=Date.now();try{const t=await n.request(e.videoUrl,{method:"HEAD"},!0);t.ok&&(w=parseInt(t.headers.get("content-length")||"0"))}catch(e){throw new f(`Unable to get video content: ${e instanceof Error?e.message:String(e)}`)}const S=a===k.User?{toId:i,clientId:String(y),ttl:null!==(o=e.ttl)&&void 0!==o?o:0,zsource:704,msgType:5,msgInfo:JSON.stringify({videoUrl:e.videoUrl,thumbUrl:e.thumbnailUrl,duration:null!==(s=e.duration)&&void 0!==s?s:0,width:null!==(c=e.width)&&void 0!==c?c:1280,height:null!==(d=e.height)&&void 0!==d?d:720,fileSize:w,properties:{color:-1,size:-1,type:1003,subType:0,ext:{sSrcType:-1,sSrcStr:"",msg_warning_type:0}},title:null!==(p=e.msg)&&void 0!==p?p:""}),imei:t.imei}:{grid:i,visibility:0,clientId:String(y),ttl:null!==(u=e.ttl)&&void 0!==u?u:0,zsource:704,msgType:5,msgInfo:JSON.stringify({videoUrl:e.videoUrl,thumbUrl:e.thumbnailUrl,duration:null!==(l=e.duration)&&void 0!==l?l:0,width:null!==(m=e.width)&&void 0!==m?m:1280,height:null!==(h=e.height)&&void 0!==h?h:720,fileSize:w,properties:{color:-1,size:-1,type:1003,subType:0,ext:{sSrcType:-1,sSrcStr:"",msg_warning_type:0}},title:null!==(g=e.msg)&&void 0!==g?g:""}),imei:t.imei};if(a!==k.User&&a!==k.Group)throw new f("Thread type is invalid");const v=n.encodeAES(JSON.stringify(S));if(!v)throw new f("Failed to encrypt params");const U=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:v})});return n.resolve(U)}}),Ma=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/message/forward`),[k.Group]:n.makeURL(`${e.zpwServiceMap.file[0]}/api/group/forward`)};return async function(e,i,a=k.User){var o,s;let c=null;const d=Date.now().toString();try{const t=await n.request(e.voiceUrl,{method:"HEAD"},!0);t.ok&&(c=parseInt(t.headers.get("content-length")||"0"))}catch(e){throw new f(`Unable to get voice content: ${e instanceof Error?e.message:String(e)}`)}const p=a===k.User?{toId:i,ttl:null!==(o=e.ttl)&&void 0!==o?o:0,zsource:-1,msgType:3,clientId:d,msgInfo:JSON.stringify({voiceUrl:e.voiceUrl,m4aUrl:e.voiceUrl,fileSize:null!=c?c:0}),imei:t.imei}:{grid:i,visibility:0,ttl:null!==(s=e.ttl)&&void 0!==s?s:0,zsource:-1,msgType:3,clientId:d,msgInfo:JSON.stringify({voiceUrl:e.voiceUrl,m4aUrl:e.voiceUrl,fileSize:null!=c?c:0}),imei:t.imei};if(a!==k.User&&a!==k.Group)throw new f("Thread type is invalid");const u=n.encodeAES(JSON.stringify(p));if(!u)throw new f("Failed to encrypt params");const l=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:u})});return n.resolve(l)}}),Pa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/hiddenconvers/add-remove`);return async function(e,i,a=k.User){const o=ar(i);if(0===o.length)throw new f("threadId is required");const s=a===k.Group?1:0,c={[e?"add_threads":"del_threads"]:JSON.stringify(o.map(e=>({thread_id:e,is_group:s}))),[e?"del_threads":"add_threads"]:"[]",imei:t.imei},d=n.encodeAES(JSON.stringify(c));if(!d)throw new f("Failed to encrypt params");const p=await n.request(r,{method:"POST",body:new URLSearchParams({params:d})});return n.resolve(p)}});var Ca,za;!function(e){e[e.ONE_HOUR=3600]="ONE_HOUR",e[e.FOUR_HOURS=14400]="FOUR_HOURS",e[e.FOREVER=-1]="FOREVER",e.UNTIL_8AM="until8AM"}(Ca||(Ca={})),function(e){e[e.MUTE=1]="MUTE",e[e.UNMUTE=3]="UNMUTE"}(za||(za={}));const Fa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/setmute`);return async function(e={},i,a=k.User){const{duration:o=Ca.FOREVER,action:s=za.MUTE}=e;let c;if(s===za.UNMUTE)c=-1;else if(o===Ca.FOREVER)c=-1;else if(o===Ca.UNTIL_8AM){const e=new Date,t=new Date(e);t.setHours(8,0,0,0),e.getHours()>=8&&t.setDate(t.getDate()+1),c=Math.floor((t.getTime()-e.getTime())/1e3)}else c=o;const d={toid:i,duration:c,action:s,startTime:Math.floor(Date.now()/1e3),muteType:a===k.User?1:2,imei:t.imei},p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt params");const u=await n.request(r,{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u)}}),qa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/pinconvers/updatev2`);return async function(e,t,i=k.User){const a=ar(t),o={actionType:e?1:2,conversations:i==k.Group?a.map(e=>`g${e}`):a.map(e=>`u${e}`)},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Da=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/poll/share`);return async function(e){const i={poll_id:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),Ba=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/unblock`);return async function(e){const i={fid:e,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})});return n.resolve(o)}}),Ja=Se()((e,t,n)=>{const r={[k.User]:n.makeURL(`${e.zpwServiceMap.chat[0]}/api/message/undo`),[k.Group]:n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/undomsg`)};return async function(e,i,a=k.User){const o={msgId:e.msgId,clientId:Date.now(),cliMsgIdUndo:e.cliMsgId};a==k.Group?(o.grid=i,o.visibility=0,o.imei=t.imei):o.toid=i;const s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt message");const c=await n.request(r[a],{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Ga=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.friend[0]}/api/friend/undo`);return async function(e){const t={fid:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),$a=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/ping`),i=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/deactive`);return async function(e){const a={status:e?1:0,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=e?r:i,c=await n.request(n.makeURL(s,{params:o}),{method:"GET"});return n.resolve(c)}});var ja;!function(e){e[e.NO_DELETE=0]="NO_DELETE",e[e.ONE_DAY=864e5]="ONE_DAY",e[e.SEVEN_DAYS=6048e5]="SEVEN_DAYS",e[e.FOURTEEN_DAYS=12096e5]="FOURTEEN_DAYS"}(ja||(ja={}));const xa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/conv/autodelete/updateConvers`);return async function(e,i,a=k.User){const o={threadId:i,isGroup:a===k.Group?1:0,ttl:e,clientLang:t.language},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Va=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.auto_reply[0]}/api/autoreply/update`);return async function(e){const i=ar(e.uids||[]),a=2===e.scope||3===e.scope?i:[],o={cliLang:t.language,id:e.id,enable:e.isEnable,content:e.content,startTime:e.startTime,endTime:e.endTime,recurrence:["RRULE:FREQ=DAILY;"],scope:e.scope,uids:a},s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(r,{method:"POST",body:new URLSearchParams({params:s})});return n.resolve(c)}}),Ka=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/catalog/update`);return async function(e){const t={catalog_id:e.catalogId,catalog_name:e.catalogName,catalog_photo:""},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(r,{method:"POST",body:new URLSearchParams({params:i})});return n.resolve(a)}}),Ha=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/group/setting/update`);return async function(e,i){const a={blockName:e.blockName?1:0,signAdminMsg:e.signAdminMsg?1:0,setTopicOnly:e.setTopicOnly?1:0,enableMsgHistory:e.enableMsgHistory?1:0,joinAppr:e.joinAppr?1:0,lockCreatePost:e.lockCreatePost?1:0,lockCreatePoll:e.lockCreatePoll?1:0,lockSendMsg:e.lockSendMsg?1:0,lockViewMember:e.lockViewMember?1:0,bannFeature:0,dirtyMedia:0,banDuration:0,blocked_members:[],grid:i,imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),Qa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.conversation[0]}/api/hiddenconvers/update-pin`),i=/^\d{4}$/;return async function(e){if(!i.test(e))throw new f("Pin must be a 4-digit number between 0000-9999");const o=function(e){return a.createHash("md5").update(e).digest("hex")}(e),s={new_pin:o,imei:t.imei},c=n.encodeAES(JSON.stringify(s));if(!c)throw new f("Failed to encrypt params");const d=await n.request(n.makeURL(r,{params:c}),{method:"GET"});return n.resolve(d)}}),Wa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.label[0]}/api/convlabel/update`);return async function(e){const i={labelData:JSON.stringify(e.labelData),version:e.version,imei:t.imei},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt message");const o=await n.request(r,{method:"POST",body:new URLSearchParams({params:a})}),s=await n.resolve(o);return{labelData:JSON.parse(s.labelData),version:s.version,lastUpdateTime:s.lastUpdateTime}}});var Ya;!function(e){e.VI="VI",e.EN="EN"}(Ya||(Ya={}));const Za=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/updatelang`);return async function(e=Ya.VI){const t={language:e},i=n.encodeAES(JSON.stringify(t));if(!i)throw new f("Failed to encrypt params");const a=await n.request(n.makeURL(r,{params:i}),{method:"GET"});return n.resolve(a)}}),Xa=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.catalog[0]}/api/prodcatalog/product/update`);return async function(t){const i=t.product_photos||[];if(t.files&&0==t.files.length){if(t.files.length>5)throw new f("Maximum 5 media files are allowed");for(const n of t.files){const t=await e.uploadProductPhoto({file:n}),r=t.normalUrl||t.hdUrl;i.push(r)}}if(i.length>5)throw new f("Maximum 5 media files are allowed");const a={product_id:t.productId,product_name:t.productName,price:t.price,description:t.description,product_photos:i,catalog_id:t.catalogId,currency_unit:"₫",create_time:t.createTime},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(r,{method:"POST",body:new URLSearchParams({params:o})});return n.resolve(s)}}),eo=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.profile[0]}/api/social/profile/update`);return async function(e){var i,a,o,s,c;const d={profile:JSON.stringify({name:e.profile.name,dob:e.profile.dob,gender:e.profile.gender}),biz:JSON.stringify({desc:null===(i=e.biz)||void 0===i?void 0:i.description,cate:null===(a=e.biz)||void 0===a?void 0:a.cate,addr:null===(o=e.biz)||void 0===o?void 0:o.address,website:null===(s=e.biz)||void 0===s?void 0:s.website,email:null===(c=e.biz)||void 0===c?void 0:c.email}),language:t.language},p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt params");const u=await n.request(r,{method:"POST",body:new URLSearchParams({params:p})});return n.resolve(u)}}),to=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.quick_message[0]}/api/quickmessage/update`);return async function(t,i){const a=t.media?1:0,o={itemId:i,keyword:t.keyword,message:{title:t.title,params:""},type:a};if(1===a){if(!t.media)throw new f("Media is required");const n=await e.uploadProductPhoto({file:t.media}),r=n.photoId,i=n.thumbUrl,a=n.normalUrl,s=n.hdUrl;o.media={items:[{type:0,photoId:r,title:"",width:"",height:"",previewThumb:i,rawUrl:a||s,thumbUrl:i,normalUrl:a||s,hdUrl:s||a}]}}const s=n.encodeAES(JSON.stringify(o));if(!s)throw new f("Failed to encrypt params");const c=await n.request(n.makeURL(r,{params:s}),{method:"GET"});return n.resolve(c)}});var no;!function(e){e.ViewBirthday="view_birthday",e.ShowOnlineStatus="show_online_status",e.DisplaySeenStatus="display_seen_status",e.ReceiveMessage="receive_message",e.AcceptCall="accept_stranger_call",e.AddFriendViaPhone="add_friend_via_phone",e.AddFriendViaQR="add_friend_via_qr",e.AddFriendViaGroup="add_friend_via_group",e.AddFriendViaContact="add_friend_via_contact",e.DisplayOnRecommendFriend="display_on_recommend_friend",e.ArchivedChat="archivedChatStatus",e.QuickMessage="quickMessageStatus"}(no||(no={}));const ro=Se()((e,t,n)=>{const r=n.makeURL("https://wpa.chat.zalo.me/api/setting/update");return async function(e,t){const i={[e]:t},a=n.encodeAES(JSON.stringify(i));if(!a)throw new f("Failed to encrypt params");const o=await n.request(n.makeURL(r,{params:a}),{method:"GET"});return n.resolve(o)}}),io={image:"photo_original/upload",video:"asyncfile/upload",others:"asyncfile/upload"},ao=Se()((e,t,n)=>{const r=`${e.zpwServiceMap.file[0]}/api`,{sharefile:i}=t.settings.features;function a(e){return e>1024*i.max_size_share_file_v3*1024}function s(e){return-1==i.restricted_ext_file.indexOf(e)}return async function(e,c,d=k.User){if(!e)throw new f("Missing sources");const p=ar(e);if(0==p.length)throw new f("Missing sources");if(p.length>i.max_file)throw new f("Exceed maximum file of "+i.max_file);if(!c)throw new f("Missing threadId");const u=t.settings.features.sharefile.chunk_size_file,l=d==k.Group,m=[],g=`${r}/${l?"group":"message"}/`,w=l?"11":"2";let y=Date.now();for(const e of p){const n="string"==typeof e,r="object"==typeof e&&e.data instanceof Buffer;if(!n&&!r)throw new f("Invalid source type");if(!n&&!e.filename)throw new f("Missing filename");if(n&&!o.existsSync(e))throw new f("File not found");const d=le(n?e:e.filename).toLowerCase(),p=n?me(e):e.filename;if(0==s(d))throw new f(`File extension "${d}" is not allowed`);const g={filePath:n?e:e.filename,chunkContent:[],params:{},source:e};switch(l?g.params.grid=c:g.params.toid=c,d){case"jpg":case"jpeg":case"png":case"webp":{const r=n?await re(t,e):Object.assign(Object.assign({},e.metadata),{fileName:p});if(a(r.totalSize))throw new f(`File ${p} size exceed maximum size of ${i.max_size_share_file_v3}MB`);g.fileData=r,g.fileType="image",g.params.totalChunk=Math.ceil(g.fileData.totalSize/u),g.params.fileName=p,g.params.clientId=y++,g.params.totalSize=r.totalSize,g.params.imei=t.imei,g.params.isE2EE=0,g.params.jxl=0,g.params.chunkId=1;break}case"mp4":{const r=n?await ie(e):e.metadata.totalSize;if(a(r))throw new f(`File ${p} size exceed maximum size of ${i.max_size_share_file_v3}MB`);g.fileType="video",g.fileData={fileName:p,totalSize:r},g.params.totalChunk=Math.ceil(g.fileData.totalSize/u),g.params.fileName=p,g.params.clientId=y++,g.params.totalSize=r,g.params.imei=t.imei,g.params.isE2EE=0,g.params.jxl=0,g.params.chunkId=1;break}default:{const r=n?await ie(e):e.metadata.totalSize;if(a(r))throw new f(`File ${p} size exceed maximum size of ${i.max_size_share_file_v3}MB`);g.fileType="others",g.fileData={fileName:p,totalSize:r},g.params.totalChunk=Math.ceil(g.fileData.totalSize/u),g.params.fileName=p,g.params.clientId=y++,g.params.totalSize=r,g.params.imei=t.imei,g.params.isE2EE=0,g.params.jxl=0,g.params.chunkId=1;break}}const w=n?await o.promises.readFile(e):e.data;for(let e=0;e<g.params.totalChunk;e++){const t=new h,n=w.subarray(e*u,(e+1)*u);t.append("chunkContent",n,{filename:p,contentType:"application/octet-stream"}),g.chunkContent[e]=t}m.push(g)}const S=[],v=[];for(const e of m)for(let r=0;r<e.params.totalChunk;r++){const i=n.encodeAES(JSON.stringify(e.params));if(!i)throw new f("Failed to encrypt message");S.push(n.request(n.makeURL(g+io[e.fileType],{type:w,params:i}),{method:"POST",headers:e.chunkContent[r].getHeaders(),body:e.chunkContent[r].getBuffer()}).then(async n=>{const r=await ye(t,n);r&&"-1"!=r.fileId&&"-1"!=r.photoId&&await new Promise(n=>{if("video"==e.fileType||"others"==e.fileType){const i=async t=>{const i=Object.assign(Object.assign(Object.assign({fileType:e.fileType},r),t),{totalSize:e.fileData.totalSize,fileName:e.fileData.fileName,checksum:(await se(e.source,e.fileData.totalSize)).data});v.push(i),n()};t.uploadCallbacks.set(r.fileId.toString(),i)}if("image"==e.fileType){const t={fileType:"image",width:e.fileData.width,height:e.fileData.height,totalSize:e.fileData.totalSize,hdSize:e.fileData.totalSize,finished:r.finished,normalUrl:r.normalUrl,hdUrl:r.hdUrl,thumbUrl:r.thumbUrl,chunkId:r.chunkId,photoId:r.photoId,clientFileId:r.clientFileId};v.push(t),n()}})})),e.params.chunkId++}return await Promise.all(S),v}}),oo=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.file[0]}/api/product/upload/photo`);return async function(e){const i="string"==typeof e.file,a=(i?await re(t,e.file):e.file.metadata).totalSize||0,s=i?await o.promises.readFile(e.file):e.file.data,c=new h;c.append("chunkContent",s,{filename:"undefined",contentType:"application/octet-stream"});const d={totalChunk:1,fileName:`Base64_Img_Picker_${Date.now()}.jpg`,clientId:Date.now(),totalSize:a,imei:t.imei,chunkId:1,toid:t.loginInfo.send2me_id,featureId:1},p=n.encodeAES(JSON.stringify(d));if(!p)throw new f("Failed to encrypt params");const u=await n.request(n.makeURL(r,{params:p}),{method:"POST",headers:c.getHeaders(),body:c.getBuffer()});return n.resolve(u)}}),so=Se()((e,t,n)=>{const r=n.makeURL(`${e.zpwServiceMap.group[0]}/api/poll/vote`);return async function(e,i){const a={poll_id:e,option_ids:ar(i),imei:t.imei},o=n.encodeAES(JSON.stringify(a));if(!o)throw new f("Failed to encrypt params");const s=await n.request(n.makeURL(r,{params:o}),{method:"GET"});return n.resolve(s)}}),co=Se()((e,t,n)=>function(r,i){Object.defineProperty(e,r,{value:function(e){return i({ctx:t,utils:n,props:e})},writable:!1,enumerable:!1,configurable:!1})});class po{constructor(e,t,n){this.zpwServiceMap=t,this.listener=new er(e,n),this.acceptFriendRequest=tr(e,this),this.addGroupBlockedMember=or(e,this),this.addGroupDeputy=sr(e,this),this.addPollOptions=cr(e,this),this.addQuickMessage=dr(e,this),this.addReaction=pr(e,this),this.addUnreadMark=ur(e,this),this.addUserToGroup=lr(e,this),this.blockUser=mr(e,this),this.blockViewFeed=hr(e,this),this.changeAccountAvatar=fr(e,this),this.changeFriendAlias=gr(e,this),this.changeGroupAvatar=wr(e,this),this.changeGroupName=yr(e,this),this.changeGroupOwner=Sr(e,this),this.createAutoReply=vr(e,this),this.createCatalog=kr(e,this),this.createGroup=Ur(e,this),this.createNote=br(e,this),this.createPoll=Rr(e,this),this.createProductCatalog=Er(e,this),this.createReminder=_r(e,this),this.deleteAutoReply=Or(e,this),this.deleteAvatar=Ar(e,this),this.deleteCatalog=Lr(e,this),this.deleteChat=Ir(e,this),this.deleteGroupInviteBox=Nr(e,this),this.deleteMessage=Tr(e,this),this.deleteProductCatalog=Mr(e,this),this.disableGroupLink=Pr(e,this),this.disperseGroup=Cr(e,this),this.editNote=zr(e,this),this.editReminder=Fr(e,this),this.enableGroupLink=qr(e,this),this.fetchAccountInfo=Dr(e,this),this.findUser=Br(e,this),this.forwardMessage=Jr(e,this),this.getAliasList=Gr(e,this),this.getAllFriends=$r(e,this),this.getAllGroups=jr(e,this),this.getArchivedChatList=xr(e,this),this.getAutoDeleteChat=Vr(e,this),this.getAutoReplyList=Kr(e,this),this.getAvatarList=Hr(e,this),this.getBizAccount=Qr(e,this),this.getCatalogList=Wr(e,this),this.getContext=Yr(e,this),this.getCookie=Zr(e,this),this.getFriendBoardList=Xr(e,this),this.getFriendOnlines=ti(e,this),this.getFriendRecommendations=ni(e,this),this.getFriendRequestStatus=ri(e,this),this.getGroupBlockedMember=ii(e,this),this.getGroupInfo=ai(e,this),this.getGroupInviteBoxInfo=oi(e,this),this.getGroupInviteBoxList=si(e,this),this.getGroupLinkDetail=ci(e,this),this.getGroupLinkInfo=di(e,this),this.getGroupMembersInfo=pi(e,this),this.getHiddenConversations=ui(e,this),this.getLabels=li(e,this),this.getListBoard=mi(e,this),this.getListReminder=hi(e,this),this.getMute=fi(e,this),this.getOwnId=gi(e,this),this.getPendingGroupMembers=wi(e,this),this.getPinConversations=yi(e,this),this.getPollDetail=Si(e,this),this.getProductCatalogList=vi(e,this),this.getQR=ki(e,this),this.getQuickMessageList=Ui(e,this),this.getRelatedFriendGroup=bi(e,this),this.getReminder=Ri(e,this),this.getReminderResponses=Ei(e,this),this.getSentFriendRequest=_i(e,this),this.getSettings=Oi(e,this),this.getStickers=Ai(e,this),this.getStickersDetail=Li(e,this),this.getUnreadMark=Ii(e,this),this.getUserInfo=Ni(e,this),this.inviteUserToGroups=Ti(e,this),this.joinGroupInviteBox=Mi(e,this),this.joinGroupLink=Pi(e,this),this.keepAlive=Ci(e,this),this.lastOnline=zi(e,this),this.leaveGroup=Fi(e,this),this.lockPoll=qi(e,this),this.parseLink=Di(e,this),this.rejectFriendRequest=Bi(e,this),this.removeFriend=Ji(e,this),this.removeFriendAlias=Gi(e,this),this.removeGroupBlockedMember=$i(e,this),this.removeGroupDeputy=ji(e,this),this.removeQuickMessage=xi(e,this),this.removeReminder=Vi(e,this),this.removeUnreadMark=Ki(e,this),this.removeUserFromGroup=Hi(e,this),this.resetHiddenConversPin=Qi(e,this),this.reuseAvatar=Wi(e,this),this.reviewPendingMemberRequest=Zi(e,this),this.sendBankCard=Xi(e,this),this.sendCard=ea(e,this),this.sendDeliveredEvent=ta(e,this),this.sendFriendRequest=na(e,this),this.sendLink=ra(e,this),this.sendMessage=_a(e,this),this.sendReport=Aa(e,this),this.sendSeenEvent=La(e,this),this.sendSticker=Ia(e,this),this.sendTypingEvent=Na(e,this),this.sendVideo=Ta(e,this),this.sendVoice=Ma(e,this),this.setHiddenConversations=Pa(e,this),this.setMute=Fa(e,this),this.setPinnedConversations=qa(e,this),this.sharePoll=Da(e,this),this.unblockUser=Ba(e,this),this.undo=Ja(e,this),this.undoFriendRequest=Ga(e,this),this.updateActiveStatus=$a(e,this),this.updateAutoDeleteChat=xa(e,this),this.updateAutoReply=Va(e,this),this.updateCatalog=Ka(e,this),this.updateGroupSettings=Ha(e,this),this.updateHiddenConversPin=Qa(e,this),this.updateLabels=Wa(e,this),this.updateLang=Za(e,this),this.updateProductCatalog=Xa(e,this),this.updateProfile=eo(e,this),this.updateQuickMessage=to(e,this),this.updateSettings=ro(e,this),this.uploadAttachment=ao(e,this),this.uploadProductPhoto=oo(e,this),this.votePoll=so(e,this),this.custom=co(e,this)}}class uo{constructor(e={}){this.options=e,this.enableEncryptParam=!0}parseCookies(t){var n;const r=Array.isArray(t)?t:t.cookies;r.forEach((e,t)=>{"string"==typeof e.domain&&e.domain.startsWith(".")&&(r[t].domain=e.domain.slice(1))});const i=new e.CookieJar;for(const t of r)try{i.setCookieSync(null!==(n=e.Cookie.fromJSON(Object.assign(Object.assign({},t),{key:t.key||t.name})))&&void 0!==n?n:"","https://chat.zalo.me")}catch(e){ce({options:{logging:this.options.logging}}).error("Failed to set cookie:",e)}return i}validateParams(e){if(!e.imei||!e.cookie||!e.userAgent)throw new f("Missing required params")}async login(e){const t=V(this.options.apiType,this.options.apiVersion);return Object.assign(t.options,this.options),this.loginCookie(t,e)}async loginCookie(e,t){await async function(e){if(!e.options.checkUpdate)return;const t=Object.assign({},{agent:e.options.agent}),n=await e.options.polyfill("https://registry.npmjs.org/zca-js",t).catch(()=>null);if(!n||!n.ok)return;const r=await n.json().catch(()=>null);if(!r)return;const i=r["dist-tags"].latest;-1===u("2.0.4",i)?ce(e).info(`A new version of zca-js is available: ${i}`):ce(e).info("zca-js is up to date")}(e),this.validateParams(t),e.imei=t.imei,e.cookie=this.parseCookies(t.cookie),e.userAgent=t.userAgent,e.language=t.language||"vi";const n=await async function(e,t){const n=await Zn(e,t,"getlogininfo");try{const t=await ne(e,W(e,"https://wpa.chat.zalo.me/api/login/getLoginInfo",Object.assign(Object.assign({},n.params),{nretry:0})));if(!t.ok)throw new f("Failed to fetch login info: "+t.statusText);const r=await t.json();if(n.enk){const e=Z(n.enk,r.data);return null!=e&&"string"!=typeof e?e:null}return null}catch(t){throw ce(e).error("Login failed:",t),t}}(e,this.enableEncryptParam),r=await async function(e,t){const n=await Zn(e,t,"getserverinfo");if(!n.params.signkey||"string"!=typeof n.params.signkey)throw new f("Missing signkey");const r=await ne(e,W(e,"https://wpa.chat.zalo.me/api/login/getServerInfo",{imei:e.imei,type:e.API_TYPE,client_version:e.API_VERSION,computer_name:"Web",signkey:n.params.signkey},!1));if(!r.ok)throw new f("Failed to fetch server info: "+r.statusText);const i=await r.json();if(null==i.data)throw new f("Failed to fetch server info: "+i.error_message);return i.data}(e,this.enableEncryptParam),i=null==n?void 0:n.data;if(!n||!i||!r)throw new f("Đăng nhập thất bại");if(e.secretKey=i.zpw_enk,e.uid=i.uid,e.settings=r.setttings||r.settings,e.extraVer=r.extra_ver,e.loginInfo=i,!K(e))throw new f("Khởi tạo ngữ cảnh thất bại.");return ce(e).info("Logged in as",i.uid),new po(e,i.zpw_service_map_v3,i.zpw_ws)}async loginQR(e,t){e||(e={}),e.userAgent||(e.userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0"),e.language||(e.language="vi");const n=V(this.options.apiType,this.options.apiVersion);Object.assign(n.options,this.options);const r=await Re(n,e,t);if(!r)throw new f("Unable to login with QRCode");const o=(s=e.userAgent,a.randomUUID()+"-"+i.MD5(s).toString());var s;return t&&t({type:ve.GotLoginInfo,data:{cookie:r.cookies,imei:o,userAgent:e.userAgent},actions:null}),this.loginCookie(n,{cookie:r.cookies,imei:o,userAgent:e.userAgent,language:e.language})}}export{po as API,S as AutoReplyScope,R as BinBankCard,v as BoardType,N as BusinessCategory,j as BusinessCategoryName,ja as ChatTTL,Xn as CloseReason,U as DestType,E as FriendEventType,b as Gender,M as GroupDeliveredMessage,A as GroupEventType,F as GroupMessage,B as GroupSeenMessage,_ as GroupTopicType,O as GroupType,G as GroupTyping,ve as LoginQRCallbackEventType,za as MuteAction,Ca as MuteDuration,q as Reaction,L as Reactions,I as ReminderRepeatMode,Oa as ReportReason,Yi as ReviewPendingMemberRequestStatus,Ra as TextStyle,k as ThreadType,$ as Undo,Ya as UpdateLangAvailableLanguages,no as UpdateSettingsType,Ea as Urgency,T as UserDeliveredMessage,z as UserMessage,D as UserSeenMessage,J as UserTyping,uo as Zalo,f as ZaloApiError,w as ZaloApiLoginQRAborted,y as ZaloApiLoginQRDeclined,g as ZaloApiMissingImageMetadataGetter,P as initializeFriendEvent,C as initializeGroupEvent};
|
|
2
|
+
//# sourceMappingURL=index.min.js.map
|