@coremail/lunkr-openclaw 1.0.9 → 1.1.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/bin/lunkr-cli.js +30 -22
- package/i18n/locales/en-US.json +60 -1
- package/i18n/locales/zh-CN.json +60 -1
- package/index.js +90 -43
- package/openclaw.plugin.json +23 -6
- package/package.json +2 -2
- package/skills/lunkr/SKILL.md +21 -5
package/index.js
CHANGED
|
@@ -1,48 +1,95 @@
|
|
|
1
|
-
var ki=Object.create;var Cn=Object.defineProperty;var yi=Object.getOwnPropertyDescriptor;var wi=Object.getOwnPropertyNames;var Ci=Object.getPrototypeOf,Si=Object.prototype.hasOwnProperty;var _i=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,s)=>(typeof require<"u"?require:e)[s]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var J=(o,e)=>()=>(o&&(e=o(o=0)),e);var Ye=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),Ai=(o,e)=>{for(var s in e)Cn(o,s,{get:e[s],enumerable:!0})},Li=(o,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of wi(e))!Si.call(o,i)&&i!==s&&Cn(o,i,{get:()=>e[i],enumerable:!(n=yi(e,i))||n.enumerable});return o};var $o=(o,e,s)=>(s=o!=null?ki(Ci(o)):{},Li(e||!o||!o.__esModule?Cn(s,"default",{value:o,enumerable:!0}):s,o));import*as qe from"fs";import*as Ze from"path";import{fileURLToPath as Ri}from"url";import{dirname as ji}from"path";function Ui(){let o=Ze.join(Fo,"locales");return qe.existsSync(o)?o:Ze.join(Fo,"i18n","locales")}function Pi(){let o=process.env.LUNKR_LANG;if(o)return An(o);let e=process.env.LANG||process.env.LC_ALL;if(e){let n=e.split(".")[0].replace("_","-");return An(n)}let s=process.env.LANGUAGE;if(s){let n=s.split(":")[0].replace("_","-");return An(n)}return en}function An(o){let e=o.toLowerCase();return{zh:"zh-CN","zh-cn":"zh-CN",zh_cn:"zh-CN","zh-hans":"zh-CN","zh-hans-cn":"zh-CN","zh-tw":"zh-TW","zh-hant":"zh-TW","zh-hk":"zh-TW",en:"en-US","en-us":"en-US",en_us:"en-US","en-gb":"en-US"}[e]||en}function qo(o){if(Sn.has(o))return Sn.get(o);let e=Ze.join(Ui(),`${o}.json`);try{if(qe.existsSync(e)){let s=qe.readFileSync(e,"utf-8"),n=JSON.parse(s);return Sn.set(o,n),n}}catch{}return null}function Oi(){return _n||(_n=Pi()),_n}function To(o,e){let s=e.split("."),n=o;for(let i of s)if(typeof n=="object"&&n!==null&&i in n)n=n[i];else return;return typeof n=="string"?n:void 0}function Eo(o,e){return e?o.replace(/\{\{(\w+)\}\}/g,(s,n)=>String(e[n]??"")):o}function r(o,e){let s=Oi(),n=qo(s);if(n){let i=To(n,o);if(i)return Eo(i,e)}if(s!==en){let i=qo(en);if(i){let a=To(i,o);if(a)return Eo(a,e)}}return o}var Ii,Fo,Sn,_n,en,j=J(()=>{Ii=Ri(import.meta.url),Fo=ji(Ii),Sn=new Map,_n=null,en="en-US"});import*as B from"crypto";import*as nn from"os";function Rn(o){return o<128?Buffer.from([o]):o<256?Buffer.from([129,o]):Buffer.from([130,o>>8&255,o&255])}function Mo(o){let e=o.length%2===0?o:"0"+o,s=Buffer.from(e,"hex");return s[0]&&s[0]&128&&(s=Buffer.concat([Buffer.from([0]),s])),Buffer.concat([Buffer.from([2]),Rn(s.length),s])}function Bo(o){return Buffer.concat([Buffer.from([48]),Rn(o.length),o])}function Gi(o){let e=Buffer.concat([Buffer.from([0]),o]);return Buffer.concat([Buffer.from([3]),Rn(e.length),e])}function zo(o,e){let s=Mo(e),n=Mo(o),i=Bo(Buffer.concat([s,n])),a=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return Bo(Buffer.concat([a,Gi(i)]))}function jn(o,e,s){try{let n=zo(e,s),i=B.createPublicKey({key:n,format:"der",type:"spki"});return B.publicEncrypt({key:i,padding:B.constants.RSA_PKCS1_PADDING},Buffer.from(o,"utf8")).toString("base64")}catch{return o}}function In(o,e){let s=Buffer.from(e,"base64"),n=B.createPublicKey({key:s,format:"der",type:"spki"});return B.publicEncrypt({key:n,padding:B.constants.RSA_PKCS1_PADDING},Buffer.from(o,"utf8")).toString("base64")}var fe,Ae,on=J(()=>{fe=class extends Error{constructor(e){super(e),this.name="EncryptionError"}},Ae=class{key=null;deviceUuid=null;deviceName=null;username=null;setDeviceUuid(e){this.deviceUuid=e,this.key=null}setDeviceName(e){this.deviceName=e,this.key=null}setUsername(e){this.username=e,this.key=null}getKey(){if(!this.key){let e=this.deviceUuid||"",s=this.deviceName||nn.hostname(),n=this.username||nn.userInfo().username;if(!e)throw new fe("device_uuid not set, cannot generate encryption key");let i=`lunkr-mcp-key-${e}-${s}-${n}`;this.key=B.createHash("sha256").update(i).digest()}return this.key}encrypt(e){if(!e)return"";let s=this.getKey(),n=B.randomBytes(12),i=B.createCipheriv("aes-256-gcm",s,n),a=Buffer.concat([i.update(e,"utf8"),i.final()]),t=i.getAuthTag();return Buffer.concat([n,a,t]).toString("base64")}decrypt(e){if(!e)return"";let s=this.getKey(),n=Buffer.from(e,"base64");if(n.length<28)throw new fe("Ciphertext too short");let i=n.subarray(0,12),a=n.subarray(12,-16),t=n.subarray(-16),c=B.createDecipheriv("aes-256-gcm",s,i);c.setAuthTag(t);try{return Buffer.concat([c.update(a),c.final()]).toString("utf8")}catch{throw new fe("Decryption failed, config file may be corrupted or key changed")}}}});import*as le from"fs";import*as On from"path";import*as ge from"os";function Te(){return On.join(ge.homedir(),Ko)}function W(){return On.join(Te(),Vo)}function Jo(){let o=Te();le.existsSync(o)||le.mkdirSync(o,{recursive:!0})}function Ni(){let o=ge.hostname(),e=ge.platform(),s=ge.release(),n="Unknown",i="Unknown";return e==="darwin"?(n=`macOS ${s}`,i="mac"):e==="win32"?(n=`Windows ${s}`,i="pc"):e==="linux"&&(n=`Linux ${s}`,i="pc"),{device_uuid:Wo(),device_os:n,device_model:i,device_name:o}}function Wo(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{let e=Math.random()*16|0;return(o==="x"?e:e&3|8).toString(16)})}function Pn(){return{...Ni(),bot_name:sn,accounts:[]}}function Ho(o){let e=new Ae;return e.setDeviceUuid(o.device_uuid),e.setDeviceName(o.device_name),e}function Un(o){if(!o)return!1;try{return Buffer.from(o,"base64").length>=28}catch{return!1}}function Mi(o,e){let s={...o};return s.session&&(s.session={...s.session,sid:s.session.sid?e.encrypt(s.session.sid):s.session.sid,cookie:s.session.cookie?e.encrypt(s.session.cookie):s.session.cookie}),s.apiToken&&(s.apiToken=e.encrypt(s.apiToken)),s}function Bi(o,e){let s={...o};if(s.session){let n={...s.session};try{n.sid&&Un(n.sid)&&(n.sid=e.decrypt(n.sid))}catch{n.sid=""}try{n.cookie&&Un(n.cookie)&&(n.cookie=e.decrypt(n.cookie))}catch{n.cookie=""}s.session=n}try{s.apiToken&&Un(s.apiToken)&&(s.apiToken=e.decrypt(s.apiToken))}catch{s.apiToken=void 0}return s}function R(){let o=W();if(!le.existsSync(o))return Pn();try{let e=le.readFileSync(o,"utf-8"),s=JSON.parse(e);if(s.device_uuid||(s.device_uuid=Wo()),s.bot_name||(s.bot_name=sn),s.accounts||(s.accounts=[]),s.accounts?.length){let n=Ho(s);try{s.accounts=s.accounts.map(i=>Bi(i,n))}catch(i){i instanceof fe&&console.warn("Warning: Failed to decrypt config, values may be unencrypted or from different machine/user")}}return s}catch{return Pn()}}function E(o){Jo();let e=W(),s={...o,accounts:o.accounts?.map(n=>{let i=Ho(o);return Mi(n,i)})};le.writeFileSync(e,JSON.stringify(s,null,2),"utf-8")}function an(o){return pe(o)}function pe(o){let e=o||R();if(!e.accounts?.length)return null;let s=i=>!i.role||i.role==="standard"||i.role==="standard+agent";return e.accounts.find(i=>i.enabled&&i.session?.sid&&s(i))||e.accounts.find(i=>i.session?.sid&&s(i))||null}function Ee(o){let e=o||R();return e.accounts?.length?e.accounts.filter(s=>s.role==="agent"):[]}function ke(o,e){return(e||R()).accounts?.find(n=>n.email===o)||null}function xe(o,e){let s=e||R();s.accounts||(s.accounts=[]);let n=s.accounts.findIndex(i=>i.accountId===o.accountId||i.email===o.email);n>=0?s.accounts[n]=o:s.accounts.push(o),E(s)}function $n(o,e){let s=e||R();if(!s.accounts)return!1;let n=s.accounts.findIndex(i=>i.email===o);return n<0?!1:(s.accounts.splice(n,1),E(s),!0)}function z(o){return(o||R()).bot_name||sn}function Fn(o,e){let s=e||R();return s.bot_name=o,s}var Ko,Vo,sn,ue=J(()=>{on();Ko=".lunkr",Vo="config.json",sn="Bot"});var es=Ye((_t,Ji)=>{Ji.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/ace+json":{source:"iana",compressible:!0},"application/ace-groupcomm+cbor":{source:"iana"},"application/ace-trl+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/aif+cbor":{source:"iana"},"application/aif+json":{source:"iana",compressible:!0},"application/alto-cdni+json":{source:"iana",compressible:!0},"application/alto-cdnifilter+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-propmap+json":{source:"iana",compressible:!0},"application/alto-propmapparams+json":{source:"iana",compressible:!0},"application/alto-tips+json":{source:"iana",compressible:!0},"application/alto-tipsparams+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/appinstaller":{compressible:!1,extensions:["appinstaller"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/appx":{compressible:!1,extensions:["appx"]},"application/appxbundle":{compressible:!1,extensions:["appxbundle"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/automationml-aml+xml":{source:"iana",compressible:!0,extensions:["aml"]},"application/automationml-amlx+zip":{source:"iana",compressible:!1,extensions:["amlx"]},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/bufr":{source:"iana"},"application/c2pa":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/ce+cbor":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/cid-edhoc+cbor-seq":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/city+json-seq":{source:"iana"},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-eap":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/concise-problem-details+cbor":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cose-x509":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwl":{source:"iana",extensions:["cwl"]},"application/cwl+json":{source:"iana",compressible:!0},"application/cwl+yaml":{source:"iana"},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana",extensions:["dcm"]},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dpop+jwt":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/eat+cwt":{source:"iana"},"application/eat+jwt":{source:"iana"},"application/eat-bun+cbor":{source:"iana"},"application/eat-bun+json":{source:"iana",compressible:!0},"application/eat-ucs+cbor":{source:"iana"},"application/eat-ucs+json":{source:"iana",compressible:!0},"application/ecmascript":{source:"apache",compressible:!0,extensions:["ecma"]},"application/edhoc+cbor-seq":{source:"iana"},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.legacyesn+json":{source:"iana",compressible:!0},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/entity-statement+jwt":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdf":{source:"iana",extensions:["fdf"]},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geopose+json":{source:"iana",compressible:!0},"application/geoxacml+json":{source:"iana",compressible:!0},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gnap-binding-jws":{source:"iana"},"application/gnap-binding-jwsd":{source:"iana"},"application/gnap-binding-rotation-jws":{source:"iana"},"application/gnap-binding-rotation-jwsd":{source:"iana"},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/grib":{source:"iana"},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"iana",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"apache",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/jscontact+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jsonpath":{source:"iana"},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwk-set+jwt":{source:"iana"},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/linkset":{source:"iana"},"application/linkset+json":{source:"iana",compressible:!0},"application/load-control+xml":{source:"iana",compressible:!0},"application/logout+jwt":{source:"iana"},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4","mpg4","mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msix":{compressible:!1,extensions:["msix"]},"application/msixbundle":{compressible:!1,extensions:["msixbundle"]},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!0,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/ohttp-keys":{source:"iana"},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg","one","onea"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["sig","asc"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/private-token-issuer-directory":{source:"iana"},"application/private-token-request":{source:"iana"},"application/private-token-response":{source:"iana"},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/provided-claims+jwt":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.implied-document+xml":{source:"iana",compressible:!0},"application/prs.implied-executable":{source:"iana"},"application/prs.implied-object+json":{source:"iana",compressible:!0},"application/prs.implied-object+json-seq":{source:"iana"},"application/prs.implied-object+yaml":{source:"iana"},"application/prs.implied-structure":{source:"iana"},"application/prs.mayfile":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.vcfbzip2":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0,extensions:["xsf"]},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"apache"},"application/reputon+json":{source:"iana",compressible:!0},"application/resolve-response+jwt":{source:"iana"},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-checklist":{source:"iana"},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-signed-tal":{source:"iana"},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"apache"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana",extensions:["sql"]},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/sslkeylogfile":{source:"iana"},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/st2110-41":{source:"iana"},"application/stix+json":{source:"iana",compressible:!0},"application/stratum":{source:"iana"},"application/swid+cbor":{source:"iana"},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tm+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/toc+cbor":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{source:"iana",compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/trust-chain+json":{source:"iana",compressible:!0},"application/trust-mark+jwt":{source:"iana"},"application/trust-mark-delegation+jwt":{source:"iana"},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/uccs+cbor":{source:"iana"},"application/ujcs+json":{source:"iana",compressible:!0},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vc":{source:"iana"},"application/vc+cose":{source:"iana"},"application/vc+jwt":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.1ob":{source:"iana"},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3a+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ach+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc8+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.5gsa2x":{source:"iana"},"application/vnd.3gpp.5gsa2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gsv2x":{source:"iana"},"application/vnd.3gpp.5gsv2x-local-service-information":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.crs+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.current-location-discovery+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.pinapp-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.seal-group-doc+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-network-qos-management-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-ue-config-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-unicast-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-user-profile-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.v2x":{source:"iana"},"application/vnd.3gpp.vae-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acm.addressxfer+json":{source:"iana",compressible:!0},"application/vnd.acm.chatbot+json":{source:"iana",compressible:!0},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"apache",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"apache"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.parquet":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.apexlang":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"apache"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autodesk.fbx":{extensions:["fbx"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.belightsoft.lhzd+zip":{source:"iana",compressible:!1},"application/vnd.belightsoft.lhzl+zip":{source:"iana",compressible:!1},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.bzip3":{source:"iana"},"application/vnd.c3voc.schedule+xml":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.cncf.helm.chart.content.v1.tar+gzip":{source:"iana"},"application/vnd.cncf.helm.chart.provenance.v1.prov":{source:"iana"},"application/vnd.cncf.helm.config.v1+json":{source:"iana",compressible:!0},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datalog":{source:"iana"},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.dcmp+xml":{source:"iana",compressible:!0,extensions:["dcmp"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.eln+zip":{source:"iana",compressible:!1},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.erofs":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"apache",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.fdsn.stationxml+xml":{source:"iana",charset:"XML-BASED",compressible:!0},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.freelog.comic":{source:"iana"},"application/vnd.frogans.fnc":{source:"apache",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"apache",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.ga4gh.passport+jwt":{source:"iana"},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.genozip":{source:"iana"},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.gentoo.catmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.ebuild":{source:"iana"},"application/vnd.gentoo.eclass":{source:"iana"},"application/vnd.gentoo.gpkg":{source:"iana"},"application/vnd.gentoo.manifest":{source:"iana"},"application/vnd.gentoo.pkgmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.xpak":{source:"iana"},"application/vnd.geo+json":{source:"apache",compressible:!0},"application/vnd.geocube+xml":{source:"apache",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.pinboard":{source:"iana"},"application/vnd.geogebra.slides":{source:"iana",extensions:["ggs"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.gnu.taler.exchange+json":{source:"iana",compressible:!0},"application/vnd.gnu.taler.merchant+json":{source:"iana",compressible:!0},"application/vnd.google-apps.audio":{},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.drawing":{compressible:!1,extensions:["gdraw"]},"application/vnd.google-apps.drive-sdk":{compressible:!1},"application/vnd.google-apps.file":{},"application/vnd.google-apps.folder":{compressible:!1},"application/vnd.google-apps.form":{compressible:!1,extensions:["gform"]},"application/vnd.google-apps.fusiontable":{},"application/vnd.google-apps.jam":{compressible:!1,extensions:["gjam"]},"application/vnd.google-apps.mail-layout":{},"application/vnd.google-apps.map":{compressible:!1,extensions:["gmap"]},"application/vnd.google-apps.photo":{},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.script":{compressible:!1,extensions:["gscript"]},"application/vnd.google-apps.shortcut":{},"application/vnd.google-apps.site":{compressible:!1,extensions:["gsite"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-apps.unknown":{},"application/vnd.google-apps.video":{},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"apache",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0,extensions:["xdcf"]},"application/vnd.gpxsee.map+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.hsl":{source:"iana"},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"apache"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"apache",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"apache"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.ipfs.ipns-record":{source:"iana"},"application/vnd.ipld.car":{source:"iana"},"application/vnd.ipld.dag-cbor":{source:"iana"},"application/vnd.ipld.dag-json":{source:"iana"},"application/vnd.ipld.raw":{source:"iana"},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kdl":{source:"iana"},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.keyman.kmp+zip":{source:"iana",compressible:!1},"application/vnd.keyman.kmx":{source:"iana"},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.ldev.productlicensing":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.mdl":{source:"iana"},"application/vnd.mdl-mbsdf":{source:"iana"},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.medicalholodeck.recordxr":{source:"iana"},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mermaid":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.modl":{source:"iana"},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-visio.viewer":{extensions:["vdx"]},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msgpack":{source:"iana"},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+cbor":{source:"iana"},"application/vnd.nato.bindingdataobject+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+xml":{source:"iana",compressible:!0,extensions:["bdo"]},"application/vnd.nato.openxmlformats-package.iepd+zip":{source:"iana",compressible:!1},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"apache",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oai.workflows":{source:"iana"},"application/vnd.oai.workflows+json":{source:"iana",compressible:!0},"application/vnd.oai.workflows+yaml":{source:"iana"},"application/vnd.oasis.opendocument.base":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"apache",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-master-template":{source:"iana"},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.onvif.metadata":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openvpi.dspx+json":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.procrate.brushset":{extensions:["brushset"]},"application/vnd.procreate.brush":{extensions:["brush"]},"application/vnd.procreate.dream":{extensions:["drm"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.pt.mundusmundi":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0,extensions:["xhtm"]},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.relpipe":{source:"iana"},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.sketchometry":{source:"iana"},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.smintio.portals.archive":{source:"iana"},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sybyl.mol2":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uic.osdm+json":{source:"iana",compressible:!0},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml","uo"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.veraison.tsm-report+cbor":{source:"iana"},"application/vnd.veraison.tsm-report+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw","vsdx","vtx"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vocalshaper.vsp4":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.wasmflow.wafl":{source:"iana"},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordlift":{source:"iana"},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xarin.cpj":{source:"iana"},"application/vnd.xecrets-encrypted":{source:"iana"},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/voucher-jws+json":{source:"iana",compressible:!0},"application/vp":{source:"iana"},"application/vp+cose":{source:"iana"},"application/vp+jwt":{source:"iana"},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blender":{extensions:["blend"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-compressed":{extensions:["rar"]},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-ipynb+json":{compressible:!0,extensions:["ipynb"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zip-compressed":{extensions:["zip"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xfdf":{source:"iana",extensions:["xfdf"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yaml":{source:"iana"},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+cbor":{source:"iana"},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yang-sid+json":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zip+dotlottie":{extensions:["lottie"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana",extensions:["adts","aac"]},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flac":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/matroska":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/midi-clip":{source:"iana"},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a","m4b"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"apache"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{source:"iana",compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp","dib"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/dpx":{source:"iana",extensions:["dpx"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/j2c":{source:"iana"},"image/jaii":{source:"iana",extensions:["jaii"]},"image/jais":{source:"iana",extensions:["jais"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpg","jpeg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm","jpgm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxl":{source:"iana",extensions:["jxl"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1,extensions:["jfif"]},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif","btf"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.clip":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"iana",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-adobe-dng":{extensions:["dng"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-emf":{source:"iana"},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-wmf":{source:"iana"},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/bhttp":{source:"iana"},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/mls":{source:"iana"},"message/news":{source:"apache"},"message/ohttp-req":{source:"iana"},"message/ohttp-res":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime","mht","mhtml"]},"message/s-http":{source:"apache"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"apache"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/jt":{source:"iana",extensions:["jt"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/prc":{source:"iana",extensions:["prc"]},"model/step":{source:"iana",extensions:["step","stp","stpnc","p21","210"]},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/u3d":{source:"iana",extensions:["u3d"]},"model/vnd.bary":{source:"iana",extensions:["bary"]},"model/vnd.cld":{source:"iana",extensions:["cld"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana",extensions:["pyo","pyox"]},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usda":{source:"iana",extensions:["usda"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"apache"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hl7v2":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["md","markdown"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/prs.texi":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.exchangeable":{source:"iana"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"apache"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.vcf":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vnd.zoo.kcl":{source:"iana"},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/wgsl":{source:"iana",extensions:["wgsl"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/evc":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/h266":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/lottie+json":{source:"iana",compressible:!0},"video/matroska":{source:"iana"},"video/matroska-3d":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts","m2t","m2ts","mts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.planar":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var os=Ye((At,ns)=>{ns.exports=es()});var rs=Ye((Lt,ts)=>{var ss={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},is={nginx:10,apache:20,iana:40,default:30},as={application:1,font:2,audio:2,video:3,default:0};ts.exports=function(e,s="default"){if(e==="application/octet-stream")return 0;let[n,i]=e.split("/"),a=i.replace(/(\.|x-).*/,"$1"),t=ss[a]||ss.default,c=is[s]||is.default,l=as[n]||as.default,p=1-e.length/100;return t+c+l+p}});var En=Ye(G=>{"use strict";var ye=os(),Wi=_i("path").extname,cs=rs(),ls=/^\s*([^;\s]*)(?:;|\s|$)/,Hi=/^text\//i;G.charset=ps;G.charsets={lookup:ps};G.contentType=Qi;G.extension=Tn;G.extensions=Object.create(null);G.lookup=Xi;G.types=Object.create(null);G._extensionConflicts=[];Yi(G.extensions,G.types);function ps(o){if(!o||typeof o!="string")return!1;var e=ls.exec(o),s=e&&ye[e[1].toLowerCase()];return s&&s.charset?s.charset:e&&Hi.test(e[1])?"UTF-8":!1}function Qi(o){if(!o||typeof o!="string")return!1;var e=o.indexOf("/")===-1?G.lookup(o):o;if(!e)return!1;if(e.indexOf("charset")===-1){var s=G.charset(e);s&&(e+="; charset="+s.toLowerCase())}return e}function Tn(o){if(!o||typeof o!="string")return!1;var e=ls.exec(o),s=e&&G.extensions[e[1].toLowerCase()];return!s||!s.length?!1:s[0]}function Xi(o){if(!o||typeof o!="string")return!1;var e=Wi("x."+o).toLowerCase().slice(1);return e&&G.types[e]||!1}function Yi(o,e){Object.keys(ye).forEach(function(n){var i=ye[n],a=i.extensions;if(!(!a||!a.length)){o[n]=a;for(var t=0;t<a.length;t++){var c=a[t];e[c]=Zi(c,e[c],n);let l=ea(c,e[c],n);l!==e[c]&&G._extensionConflicts.push([c,l,e[c]])}}})}function Zi(o,e,s){var n=e?cs(e,ye[e].source):0,i=s?cs(s,ye[s].source):0;return n>i?e:s}function ea(o,e,s){var n=["nginx","apache",void 0,"iana"],i=e?n.indexOf(ye[e].source):0,a=s?n.indexOf(ye[s].source):0;return G.types[Tn]!=="application/octet-stream"&&(i>a||i===a&&G.types[Tn]?.slice(0,12)==="application/")||i>a?e:s}});import*as Ge from"https";import*as tn from"zlib";import{HttpsProxyAgent as na}from"https-proxy-agent";function rn(o,e){if(!e)return o.toString("utf8");let s=e.toLowerCase().split(",").map(n=>n.trim());try{if(s.includes("gzip"))return tn.gunzipSync(o).toString("utf8");if(s.includes("deflate"))return tn.inflateSync(o).toString("utf8")}catch{}return o.toString("utf8")}function ie(o,e,s,n){return new Promise((i,a)=>{let t=new URL(o),c=Buffer.from(e,"utf8"),l={hostname:t.hostname,port:t.port||443,path:t.pathname+t.search,method:"POST",headers:{...cn,...s,"Content-Length":c.length},timeout:n,agent:Ne},p=Ge.request(l,u=>{let d=[];u.on("data",f=>{d.push(f)}),u.on("end",()=>{let f={};if(u.headers)for(let[m,x]of Object.entries(u.headers))x!==void 0&&(f[m.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let g=Buffer.concat(d),h=rn(g,u.headers["content-encoding"]);i({status:u.statusCode||0,data:h,headers:f})})});p.on("error",a),p.on("timeout",()=>{p.destroy(),a(new Error("Request timeout"))}),p.write(c),p.end()})}function we(o,e={},s=2e4){return new Promise((n,i)=>{let a=new URL(o),t={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"GET",headers:{...cn,...e},timeout:s,agent:Ne},c=Ge.request(t,l=>{let p=[];l.on("data",u=>{p.push(u)}),l.on("end",()=>{let u={};if(l.headers)for(let[g,h]of Object.entries(l.headers))h!==void 0&&(u[g.toLowerCase()]=Array.isArray(h)?h.join(", "):h);let d=Buffer.concat(p),f=rn(d,l.headers["content-encoding"]);n({status:l.statusCode||0,data:f,headers:u})})});c.on("error",i),c.on("timeout",()=>{c.destroy(),i(new Error("Request timeout"))}),c.end()})}function Me(o,e={},s=6e4){return new Promise((n,i)=>{let a=new URL(o),t={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"GET",headers:{...cn,...e},timeout:s,agent:Ne},c=Ge.request(t,l=>{let p=[];l.on("data",u=>{p.push(u)}),l.on("end",()=>{let u={};if(l.headers)for(let[g,h]of Object.entries(l.headers))h!==void 0&&(u[g.toLowerCase()]=Array.isArray(h)?h.join(", "):h);let d=Buffer.concat(p),f=l.headers["content-encoding"];if(f){let g=rn(d,f);n({status:l.statusCode||0,data:Buffer.from(g,"utf8"),headers:u})}else n({status:l.statusCode||0,data:d,headers:u})})});c.on("error",i),c.on("timeout",()=>{c.destroy(),i(new Error("Request timeout"))}),c.end()})}function Le(o,e,s,n){return new Promise((i,a)=>{let t=new URL(o),c={hostname:t.hostname,port:t.port||443,path:t.pathname+t.search,method:"POST",headers:{...cn,...s,"Content-Length":e.length},timeout:n,agent:Ne},l=Ge.request(c,p=>{let u=[];p.on("data",d=>{u.push(d)}),p.on("end",()=>{let d={};if(p.headers)for(let[h,m]of Object.entries(p.headers))m!==void 0&&(d[h.toLowerCase()]=Array.isArray(m)?m.join(", "):m);let f=Buffer.concat(u),g=rn(f,p.headers["content-encoding"]);i({status:p.statusCode||0,data:g,headers:d})})});l.on("error",a),l.on("timeout",()=>{l.destroy(),a(new Error("Request timeout"))}),l.write(e),l.end()})}var Ne,us,cn,Re=J(()=>{us=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;us&&(Ne=new na(us));cn={accept:"*/*","accept-encoding":"gzip, deflate",connection:"keep-alive","user-agent":"python-httpx/0.27.2"}});import*as Ke from"crypto";import*as he from"os";import{XMLParser as oa}from"fast-xml-parser";function Dn(o){let e=he.platform(),s=he.release(),n=he.arch(),i=he.hostname(),a=o?.device_uuid?.trim()||"",t=o?.device_os?.trim()||"",c=o?.device_model?.trim()||"",l=o?.device_name?.trim()||"";if(!a){let p=`${i}-${e}-${n}`;a=Ke.createHash("sha256").update(p).digest("hex").substring(0,40)}return c||(e==="win32"?c="windows":e==="darwin"?c="mac":e==="linux"?c="Linux":c=e),t||(e==="win32"?t=`Windows ${s} (build ${s.split(".").pop()||s}), ${n}bit`:e==="darwin"?t=`macOS ${s}, ${n}`:e==="linux"?t=`Linux ${s}, ${n}`:t=`${e} ${s}, ${n}`),l||(l=i),{deviceType:"AI-Bot",friendlyName:l,model:c,os:t,uuid:a}}function Gn(o,e,s){let n=o+e+s;return"!AIBot:"+Ke.createHash("sha1").update(n).digest("hex")}function Nn(o){let e=o+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return Ke.createHash("sha1").update(e).digest("hex")}function Mn(o,e,s,n=""){let i=p=>encodeURIComponent(p).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A"),a=i(o),t=i(s),c;if(n){let p=i(n);c=`accessToken=${a}&nonce=${p}×tamp=${e}&secret=${t}`}else c=`accessToken=${a}×tamp=${e}&secret=${t}`;return Ke.createHash("sha1").update(c).digest().toString("base64")}var ln,je,U,Be,ze,O,Ie=J(()=>{Re();on();ln="https://lunkr.coremail.cn",je="/lunkr/s/json",U=class extends Error{constructor(e){super(e),this.name="AuthError"}},Be=class extends U{constructor(e){super(e),this.name="PasswordError"}},ze=class{static QUERY_URL="https://cloud.icoremail.net/querydomain/query";static PRIORITY_ORDER=["lookup","gal","incoming","outgoing","mirror"];static getTypePriority(e){if(e==="gal")return[1,0];if(e.startsWith("gal")&&/^\d+$/.test(e.slice(3)))return[1,parseInt(e.slice(3),10)];for(let s=0;s<this.PRIORITY_ORDER.length;s++)if(e===this.PRIORITY_ORDER[s])return[s+1,0];return[this.PRIORITY_ORDER.length+1,0]}static extractDomain(e){return e.includes("@")?e.split("@").pop().trim().toLowerCase():null}static async queryDomain(e){let s=`${this.QUERY_URL}?domain=${e}`;try{let n=await we(s,{},3e4);return this.parseXmlResponse(n.data)}catch(n){let i=n instanceof Error?`${n.message} (${n.name})`:String(n);throw n instanceof Error&&n.cause?new U(`Domain query failed: ${i}, cause: ${n.cause}`):new U(`Domain query failed: ${i}`)}}static parseXmlResponse(e){let n=new oa({ignoreAttributes:!1,attributeNamePrefix:"@_"}).parse(e),i=n.result||n.querydomain;if(!i)throw new U("Domain query response parse failed: root element not found");let a=i.code;if(a!=="S_OK")throw new U(`Domain query returned error: ${a}`);let t=i.provider;if(!t)throw new U("Provider not found in domain query response");let c=[];for(let[l,p]of Object.entries(t)){if(l.startsWith("@_")||typeof p!="object"||!p)continue;let u=Array.isArray(p)?p:[p];for(let d of u){let f=d["@_uri"];if(!f||!f.startsWith("http://")&&!f.startsWith("https://"))continue;let g=new URL(f),h=`${g.protocol}//${g.host}`,m=g.pathname.replace(/\/$/,""),x=m?`${m}/s/json`:"/s/json";c.push({type:l,uri:f,baseUrl:h,apiPath:x,apiUrl:`${h}${x}`})}}return c.sort((l,p)=>{let[u,d]=this.getTypePriority(l.type),[f,g]=this.getTypePriority(p.type);return u!==f?u-f:d-g}),c}static async testServerAvailability(e,s,n){let i=`func=user:getPasswordKey&uid=${encodeURIComponent(n)}`,a=`${e}${s}?${i}`,t={"Content-Type":"text/x-json; charset=UTF-8"};try{let c=await ie(a,"{}",t,3e4);if(c.status!==200)return null;let l=JSON.parse(c.data);if(l.code!=="S_OK")return null;let p=l.var||{},u=p.key||{},d=p.sid,f=u.type;return!d||!f?null:{sid:d,authType:f,rsaE:u.e||"",rsaN:u.n||""}}catch{return null}}static async discoverAvailableServer(e){let s=this.extractDomain(e);if(!s)throw new U(`Cannot extract domain from email: ${e}`);console.log(`Querying domain: ${s}`);let n=await this.queryDomain(s);if(n.length===0)throw new U(`No server addresses found for domain: ${s}`);console.log(`Found ${n.length} server addresses:`);for(let i of n)console.log(` - ${i.type}: ${i.apiUrl}`);for(let i of n){console.log(`Trying server: ${i.type} (${i.apiUrl})`);let a=await this.testServerAvailability(i.baseUrl,i.apiPath,e);if(a)return console.log(`Server available: ${i.type}`),[i,a]}throw new U("All server addresses are unavailable")}},O=class{_baseUrl;apiPath;headers;timeout;_cookies={};constructor(e,s={}){this._baseUrl=e.replace(/\/$/,""),this.apiPath=s.apiPath||"/lunkr/s/json",this.headers=s.headers||{},this.timeout=s.timeout||2e4}get baseUrl(){return this._baseUrl}get apiUrl(){return`${this._baseUrl}${this.apiPath}`}get cookies(){return this._cookies}setCookies(e){this._cookies=e}async postJson(e){let s={func:e.func};e.sid&&(s.sid=e.sid),e.query&&Object.assign(s,e.query);let n=Object.entries(s).map(([p,u])=>`${encodeURIComponent(p)}=${encodeURIComponent(String(u))}`).join("&"),i=`${this.apiUrl}?${n}`,a={"Content-Type":"text/x-json; charset=UTF-8",...this.headers};Object.keys(this.cookies).length>0&&(a.Cookie=Object.entries(this.cookies).map(([p,u])=>`${p}=${u}`).join("; "));let t=JSON.stringify(e.payload||{});e.debug&&(console.log(`[postJson] URL: ${i}`),console.log(`[postJson] headers: ${JSON.stringify(a)}`),console.log(`[postJson] body: ${t}`));let c=await ie(i,t,a,this.timeout),l=c.headers["set-cookie"];if(l){let p=l.split(/, (?=[^=]+=[^;]+)/);for(let u of p){let d=u.match(/^([^=]+)=([^;]+)/);d&&(this._cookies[d[1].trim()]=d[2].trim())}}try{return JSON.parse(c.data)}catch{throw new U(`API returned non-JSON: ${c.data?.substring?.(0,400)||c.data}`)}}async checkSessionValid(e){try{return(await this.postJson({func:"cim.common:getOrgInfo",sid:e})).code==="S_OK"}catch{return!1}}}});import*as ds from"https";import*as ms from"http";import{WebSocket as Bn}from"ws";import{v4 as sa}from"uuid";function pn(...o){process.env.LUNKR_VERBOSE==="1"&&console.log("[SocketIO]",...o)}var Ce,un=J(()=>{Re();Ce=class o{baseUrl;cookies;eventCallbacks;ws=null;connected=!1;websocketUrl=null;eioSid="";pingInterval=25e3;running=!1;authDone=!1;sessionId="";uid="";username="";pingTimer=null;waitResolve=null;autoReconnect;static authLoginIndex=1;constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.cookies=e.cookies,this.eventCallbacks=e.eventCallbacks||{},this.uid=e.uid||"",this.username=e.username||"",this.autoReconnect=e.autoReconnect??!0}static fromLunkrConfig(e,s,n,i){let a={"Cim.sid":s};for(let c of n.split(";")){let l=c.trim();if(l.includes("=")){let[p,u]=l.split("=",2);a[p.trim()]=u.trim()}}let t=new o({baseUrl:e,cookies:a,eventCallbacks:i?.eventCallbacks,uid:i?.uid,username:i?.username,autoReconnect:i?.autoReconnect});return t.sessionId=s,t}buildCookieHeader(){return Object.entries(this.cookies).map(([e,s])=>`${e}=${s}`).join("; ")}async getWebSocketUrl(){if(this.websocketUrl)return this.websocketUrl;let e=this.buildCookieHeader(),s=`${this.baseUrl}/lunkr/s/json?func=cim.common:getWebSocketURL&uid=${encodeURIComponent(this.username)}&sid=${encodeURIComponent(this.sessionId)}`;try{let n=await we(s,{Cookie:e},1e4),i=JSON.parse(n.data);return i?.code==="S_OK"?(this.websocketUrl=typeof i.var=="string"?i.var:i.var?.webSocketURL,this.websocketUrl):(console.error("getWebSocketURL failed:",i),null)}catch(n){return console.error("getWebSocketURL request failed:",n),null}}async callSioSubscribe(){let e=this.buildCookieHeader(),s=`${this.baseUrl}/lunkr/s/json?func=cim.common:sioSubscribe&sid=${encodeURIComponent(this.sessionId)}`;try{let n=await ie(s,"{}",{Cookie:e},1e4),i=JSON.parse(n.data),a=i?.code==="S_OK";return a||console.error("sioSubscribe failed:",i),a}catch(n){return console.error("sioSubscribe exception:",n),!1}}async performHandshake(){let e=await this.getWebSocketUrl();if(!e)return!1;await this.callSioSubscribe();let s=this.buildCookieHeader();try{let t=`${e}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,l=(await we(t,{Cookie:s},1e4)).data,p=l.indexOf('0{"sid"');if(p>=0&&(l=l.substring(p)),!l.startsWith("0{"))return console.error("Handshake response format error:",l.substring(0,80)),!1;let u=JSON.parse(l.substring(1));if(this.eioSid=u.sid,this.pingInterval=u.pingInterval??25e3,!u.upgrades?.includes("websocket"))return console.error("Server does not support WebSocket upgrade"),!1}catch(t){return console.error("Socket.IO HTTP handshake failed:",t),!1}let n=e.startsWith("https://"),i=e.replace(/^https?:\/\//,""),a=`${n?"wss":"ws"}://${i}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(this.eioSid)}`;return new Promise(t=>{this.ws=new Bn(a,{headers:{Cookie:this.buildCookieHeader()},agent:n?new ds.Agent({rejectUnauthorized:!1}):new ms.Agent}),this.ws.once("open",()=>{pn("WebSocket open, sending 2probe"),this.ws.send("2probe")}),this.ws.once("message",c=>{let l=c.toString();pn("Received during handshake:",l.substring(0,50)),l.includes("3probe")?(pn("Upgrade confirmed, sending 5"),this.ws.send("5"),this.connected=!0,this.running=!0,this.startMessageLoop(),this.startPingLoop(),pn("Connection complete, connected=true, running=true"),t(!0)):(console.error("[SocketIO] Upgrade handshake failed, received:",l.substring(0,50)),t(!1))}),this.ws.once("error",c=>{console.error("WebSocket connection failed:",c.message),t(!1)})})}startMessageLoop(){this.ws&&(this.ws.on("message",e=>{this.handleFrame(e.toString())}),this.ws.on("close",()=>{this.connected=!1,this.authDone=!1,this.stopPingLoop(),this.handleEvent("disconnect",{}),this.waitResolve&&(this.waitResolve(),this.waitResolve=null),this.running&&this.autoReconnect&&setTimeout(()=>this.reconnect(),5e3)}),this.ws.on("error",e=>{console.error("[SocketIO] WebSocket error:",e.message)}))}startPingLoop(){this.pingTimer=setInterval(()=>{this.connected&&this.ws?.readyState===Bn.OPEN&&this.ws.send("2")},this.pingInterval)}stopPingLoop(){this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}handleFrame(e){if(e){if(e[0]==="2"){this.ws?.send("3");return}if(e[0]==="4"&&e.length>1){let s=e[1];if(s==="0"){this.handleEvent("connect",{}),this.authDone||this.sendAuth();return}if(s==="1"){this.connected=!1;return}if(s==="2"){try{let n=JSON.parse(e.substring(2));if(Array.isArray(n)&&n.length>=2){let i=n[0],a=n[1];i==="ready"&&(this.authDone=!0),this.handleEvent(i,a)}}catch{}return}}}}sendAuth(){let e=`pc:${this.sessionId}_${o.authLoginIndex++}`,s=this.cookies.Cim||"";this.emit("auth",{username:this.username,clientId:e,password:`{SES}${this.sessionId}:${s}`,uid:this.uid,uuid:sa()})}handleEvent(e,s){let n=this.eventCallbacks[e];if(n)try{n(s)}catch(i){console.error(`${e} callback error:`,i)}}async connect(){return this.performHandshake()}async reconnect(){this.connected=!1,this.authDone=!1,this.eioSid="",this.websocketUrl=null;try{this.ws?.close()}catch{}this.ws=null,await this.performHandshake()}disconnect(){this.running=!1,this.stopPingLoop();try{this.ws?.send("0")}catch{}try{this.ws?.close()}catch{}this.connected=!1}emit(e,s){if(!this.connected||this.ws?.readyState!==Bn.OPEN)return!1;try{return this.ws.send(`42${JSON.stringify([e,s])}`),!0}catch{return!1}}isConnected(){return this.connected}isAuthenticated(){return this.authDone}onDisconnect(e){let s=this.eventCallbacks.disconnect;s?this.eventCallbacks.disconnect=n=>{s(n),e()}:this.eventCallbacks.disconnect=()=>e()}wait(){return!this.ws||!this.connected?Promise.resolve():new Promise(e=>{this.waitResolve=e})}}});import*as mn from"https";import*as hs from"crypto";import{WebSocket as gs}from"ws";import*as vs from"qrcode-terminal";import{v4 as xs}from"uuid";async function dn(o,e,s,n){return new Promise((i,a)=>{let t=JSON.stringify(s),c=`${o}?func=${e}`;n?.sid&&(c+=`&sid=${encodeURIComponent(n.sid)}`);let l=n?.baseUrl||Ve,p={...ta,"Content-Length":Buffer.byteLength(t)};n?.cookies&&Object.keys(n.cookies).length>0&&(p.Cookie=Object.entries(n.cookies).map(([f,g])=>`${f}=${g}`).join("; "));let d=mn.request({hostname:l,port:443,path:c,method:"POST",headers:p},f=>{let g="",h={},m=f.headers["set-cookie"];if(m)for(let x of m){let v=x.match(/^([^=]+)=([^;]+)/);v&&(h[v[1].trim()]=v[2].trim())}f.on("data",x=>g+=x),f.on("end",()=>{try{i({data:JSON.parse(g),cookies:h})}catch{a(new Error(`Invalid JSON: ${g}`))}})});d.on("error",a),d.write(t),d.end()})}async function ra(o){return new Promise((e,s)=>{mn.get(o,n=>{let i="";n.on("data",a=>i+=a),n.on("end",()=>e(i))}).on("error",s)})}async function zn(o={}){let{debug:e=!1,timeout:s=12e4,device:n}=o,i=a=>{e&&console.log(`[QR Login] ${a}`)};try{i("[1] Generating temporary session...");let a=await dn("/lunkr/s/json","cim.user:genTempSession",{type:"qrLogin"});if(a.data.code!=="S_OK")return{success:!1,error:`genTempSession failed: ${a.data.code} - ${a.data.msg||a.data.reason}`};let t=a.data.var?.sid;if(!t)return{success:!1,error:"No sid in response"};i(`Temporary session ID: ${t}`),i("[2] Socket.IO HTTP handshake...");let c=`https://${Ve}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,l=await ra(c),p=l.indexOf('0{"sid"'),u=p>=0?l.substring(p):l;if(!u.startsWith("0{"))return{success:!1,error:"Handshake format error"};let d=JSON.parse(u.substring(1)),f=d.sid,g=d.pingInterval??25e3;i(`eioSid: ${f}, pingInterval: ${g}`),i("[3] WebSocket connection...");let h=`wss://${Ve}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(f)}`;return new Promise(m=>{let x=setTimeout(()=>{v.close(),m({success:!1,error:"Timeout waiting for QR scan"})},s),v=new gs(h,{headers:{Host:Ve,Origin:`https://${Ve}`,"User-Agent":"Mozilla/5.0"}}),k=!1,b;v.on("open",()=>{i("WebSocket connected, sending 2probe..."),v.send("2probe")}),v.on("message",_=>{let A=_.toString();if(i(`Received: ${A.substring(0,100)}`),A.includes("3probe")){i("Received 3probe, sending 5 and auth"),v.send("5");let y={clientId:`webmail:${t}`,sid:t,msg_v:100,uuid:xs(),TmpSes:1};v.send(`42["auth",${JSON.stringify(y)}]`);let S=`https://www.coremail.cn/app/poster.html?action=qrLogin&sid=${encodeURIComponent(t)}`;console.log(""),console.log(` ${r("login.qrcode_title")}`),console.log(""),vs.generate(S,{small:!0},F=>{console.log(F)}),console.log(` ${r("login.qrcode_scan_prompt")}`),console.log(""),e&&console.log(`QR URL: ${S}
|
|
2
|
-
`),b=setInterval(()=>{v.readyState===gs.OPEN&&v.send("2")},g)}if(A.startsWith("42"))try{let y=JSON.parse(A.substring(2)),S=y[0],F=y[1];if(S==="ready"&&!k){k=!0,i("Auth ready, subscribing to scan events...");let w=`/onstat/mail/${t}/op_app_scanqrcode`;v.send(`42["subscribe",{"topic":"${w}"}]`)}if(S==="message"&&F?.payload){let w=typeof F.payload=="string"?JSON.parse(F.payload):F.payload;if(i(`Scan status: ${w.status}`),w.status==="verify"&&console.log(r("login.qrcode_scanned")),w.status==="auth"){i(`Confirmed: ${w.user?.email}`);let P=w.user?.email,$={uid:P,authSid:t,authToken:w.token};i("Calling checkVersionAndLogin..."),dn("/lunkr/s/json","cim.user:checkVersionAndLogin",$).then(M=>{let q=M.data,V=M.cookies;if(i(`Login result: ${JSON.stringify(q)}`),q.code==="S_OK"&&q.var?.sid){let be=q.var.sid,Fe=P,wn=q.var.self_uid;i(`Login successful, sid: ${be}, email: ${Fe}, selfUid: ${wn}`),i("Calling getApiToken...");let Po=n||{device_uuid:xs(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};dn("/lunkr/s/json","cim.user:getApiToken",Po,{sid:be,baseUrl:"betaweb.lunkr.cn",cookies:V}).then(Xe=>{let Oo=Xe.data;i(`Token result: ${JSON.stringify(Oo)}`),clearTimeout(x),clearInterval(b),v.close(),m({success:!0,apiToken:Oo.var?.api_token,email:Fe,selfUid:wn,deviceUuid:Po.device_uuid})}).catch(Xe=>{console.error(`getApiToken failed: ${Xe.message}`),clearTimeout(x),clearInterval(b),v.close(),m({success:!1,error:`getApiToken failed: ${Xe.message}`})})}else clearTimeout(x),clearInterval(b),v.close(),m({success:!1,error:`Login failed: ${JSON.stringify(q)}`})}).catch(M=>{clearTimeout(x),clearInterval(b),v.close(),m({success:!1,error:M.message})})}}}catch(y){i(`Event parse failed: ${y.message}`)}A==="2"&&v.send("3")}),v.on("error",_=>{i(`WebSocket error: ${_.message}`),clearTimeout(x),clearInterval(b),m({success:!1,error:_.message})}),v.on("close",()=>{i("WebSocket closed"),clearTimeout(x),clearInterval(b)})})}catch(a){return{success:!1,error:a.message}}}async function ae(o,e,s,n={}){let{debug:i=!1}=n,a=t=>{i&&console.log(`[API Token Login] ${t}`)};try{a("Calling getLunkrSid..."),a(`email: ${o}`),a(`deviceUuid: ${s}`);let t=Date.now().toString(),c=hs.createHash("sha256").update(`${t}:${s}:${e}`).digest("base64");a(`timestamp: ${t}`),a(`token_hash: ${c}`);let l=await dn("/lunkr/s/json","cim.user:getLunkrSid",{email:o,timestamp:t,device_uuid:s,token_hash:c},{baseUrl:"betaweb.lunkr.cn"});if(a(`Result: ${JSON.stringify(l.data)}`),l.data.code==="S_OK"&&l.data.var?.sid){let p=l.data.var.cookie?`Cim=${l.data.var.cookie}`:l.cookies?.Cim?`Cim=${l.cookies.Cim}`:void 0;return{success:!0,sid:l.data.var.sid,email:o,selfUid:l.data.var.uid,cookie:p}}else return l.data.code==="FA_REQUEST_EXPIRED"?{success:!1,error:r("login.clock_error")}:{success:!1,error:`getLunkrSid failed: ${l.data.code} - ${l.data.msg||"Unknown error"}`}}catch(t){return{success:!1,error:t.message}}}var Ve,ta,Ue=J(()=>{j();Ve="lunkr.coremail.cn",ta={Accept:"text/x-json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","Cache-Control":"no-cache",Connection:"keep-alive","Content-Type":"text/x-json; charset=UTF-8"}});import*as gn from"path";function bs(o,e){return r("message.prefix",{sender:o||"Unknown",bot:e||"Bot"})}function de(o,e,s){return bs(e,s)+o}function Kn(o){return ca.test(o.trim())}function Vn(o){return la.test(o.trim())}function fn(o){return pa.test(o.trim())}function Jn(o){return ua.test(o.trim())}function te(o){let e=o.trim();return Kn(e)||Vn(e)||fn(e)||Jn(e)}function xn(o){let e=o.trim();return Kn(e)||Jn(e)&&!fn(e)?"user":Vn(e)||fn(e)?"group":"unknown"}function Wn(o){let e=o.replace(/[<>:"/\\|?*\x00-\x1f]/g,"_").replace(/\.\./g,"_").replace(/^\.+/,"_").replace(/\.+$/,"_").trim();if(e.length>200){let s=gn.extname(e);e=gn.basename(e,s).substring(0,200-s.length)+s}return e||"download"}function Q(o){if(!o)return"";let e=typeof o=="string"?parseInt(o,10):o;if(isNaN(e))return"";try{return new Date(e).toLocaleString("zh-CN",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return""}}function Se(o){if(o==null)return"";let e=["B","KB","MB","GB"],s=o,n=0;for(;s>=1024&&n<e.length-1;)s/=1024,n++;return`${s.toFixed(1)} ${e[n]}`}function da(o){let e=0;for(let s of o){let n=s.codePointAt(0);e+=n>=11904&&n<=40959||n>=63744&&n<=64255||n>=65072&&n<=65103||n>=65280&&n<=65376||n>=131072&&n<=195103?2:1}return e}function I(o,e){let s=Math.max(0,e-da(o));return o+" ".repeat(s)}var ca,la,pa,ua,_e=J(()=>{j();ca=/^#\d+#U$/,la=/^#\d+#T$/,pa=/^t\.\./i,ua=/^[^\s@]+@[^\s@]+\.[^\s@]+$/});function Pe(o){return ma.includes(o)}function ks(o){let e=["ETIMEDOUT","ECONNREFUSED","ECONNRESET","ENOTFOUND","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","EPIPE","socket hang up","network","timeout","fetch failed"],s=o.toLowerCase();return e.some(n=>s.includes(n.toLowerCase()))?"network":"rejected"}async function X(o,e){let s=R(),n=s.accounts?.find(l=>l.accountId===o);if(!n)return{success:!1,error:`Account not found: ${o}`,reason:"no_credentials"};if(!n.apiToken)return{success:!1,error:"No apiToken available for refresh",reason:"no_credentials"};let i=e||s.device_uuid;if(!i)return{success:!1,error:"No device UUID available",reason:"no_credentials"};let a=n.email||o,t;try{t=await ae(a,n.apiToken,i)}catch(l){let p=l instanceof Error?l.message:String(l);return{success:!1,error:p,reason:ks(p)}}if(t.success&&t.sid&&t.cookie){let l={sid:t.sid,cookie:t.cookie,baseUrl:n.session?.baseUrl||"https://lunkr.coremail.cn",apiPath:n.session?.apiPath||"/lunkr/s/json",selfUid:t.selfUid||n.session?.selfUid||"",senderName:n.session?.senderName},p=s.accounts?.findIndex(u=>u.accountId===o)??-1;return p>=0&&s.accounts&&(s.accounts[p].session=l,E(s)),{success:!0,session:l}}let c=t.error||"Unknown error during token login";return{success:!1,error:c,reason:ks(c)}}var ma,Je=J(()=>{ue();Ue();ma=["FA_SESSION_EXPIRED","FA_AUTH_FAILED","FA_NO_SESSION","FA_SID_INVALID","FA_INVALID_SESSION"]});import*as K from"fs";import*as ne from"path";import*as zs from"os";import*as Ks from"crypto";function T(o){let e=oe.fromConfig(o);if(!e)throw new Error(r("api.no_account"));return e}var Xn,oe,Oe=J(()=>{Xn=$o(En(),1);j();Ie();Re();un();Ue();_e();ue();oe=class o{client;sid;session;botName;senderName;cookies;constructor(e){this.session=e.session,this.sid=e.session.sid,this.botName=e.botName||"Bot",this.senderName=e.senderName||"",this.client=new O(e.session.baseUrl,{apiPath:e.session.apiPath}),this.cookies={};for(let s of e.session.cookie.split(";")){let n=s.trim();if(n.includes("=")){let i=n.indexOf("="),a=n.substring(0,i).trim(),t=n.substring(i+1).trim();this.cookies[a]=t}}this.client.setCookies(this.cookies)}static fromConfig(e){let s=R(),n=e?s.accounts?.find(i=>i.accountId===e&&i.session):an(s);return n?.session?new o({session:n.session,botName:s.bot_name,senderName:n.session.senderName||""}):null}static fromAccount(e,s){if(!e.session)return null;let n=s||R();return new o({session:e.session,botName:n.bot_name,senderName:e.session.senderName||""})}async checkSession(){try{if((await this.client.postJson({func:"cim.common:getOrgInfo",sid:this.sid})).code==="S_OK")return!0}catch{}let e=await this.tryApiTokenRelogin();return e||(console.error(""),console.error(r("api.session_expired_relogin")),console.error(r("api.session_expired_qrcode")),console.error(r("api.session_expired_password"))),e}async tryApiTokenRelogin(){let e=R(),s=e.accounts.find(t=>t.session?.selfUid===this.session.selfUid);if(!s?.apiToken)return!1;let n=s.email||s.accountId,i=await ae(n,s.apiToken,e.device_uuid);if(!i.success||!i.sid||!i.cookie)return!1;s.session={...s.session,sid:i.sid,cookie:i.cookie,selfUid:i.selfUid||s.session.selfUid},E(e),this.sid=i.sid,this.session=s.session;let a={};for(let t of i.cookie.split(";")){let c=t.trim();if(c.includes("=")){let l=c.indexOf("="),p=c.substring(0,l).trim(),u=c.substring(l+1).trim();a[p]=u}}return this.cookies=a,this.client.setCookies(this.cookies),!0}getSelfUid(){return this.session.selfUid}async callApi(e){return this.client.postJson({func:e.func,sid:this.sid,query:e.query,payload:e.payload})}async fetchSenderName(){try{let e=await this.client.postJson({func:"cim.common:getCimPrefAttr",sid:this.sid,payload:{return_field:"nickname,true_name,name"}});if(e.code==="S_OK"&&e.var){let s=e.var,n=s.nickname||s.true_name||s.name;return n?String(n).trim():null}}catch{}return null}async ensureSenderName(){if(this.senderName)return this.senderName;let e=await this.fetchSenderName();if(e)return this.senderName=e,e;let s=this.session.selfUid;return s&&s.includes("@")?s.split("@")[0]:s||"Unknown"}async searchContacts(e,s=20){let n=[],i=new Set;try{let a=await this.client.postJson({func:"cim.pab:getRecentContacts",sid:this.sid});if(a.code==="S_OK"&&Array.isArray(a.var))for(let t of a.var){if(typeof t!="object"||!t)continue;let c=t,l=String(c.uid||""),p=String(c.email||"").toLowerCase(),u=String(c.true_name||"").toLowerCase();if(p.includes(e.toLowerCase())||u.includes(e.toLowerCase())){if(i.has(l))continue;i.add(l),n.push({uid:l,email:c.email,trueName:c.true_name,name:c.name})}}}catch{}try{let a=await this.client.postJson({func:"cim.container:searchContacts",sid:this.sid,payload:{keyword:e,windowSize:s}});if(a.code==="S_OK"&&Array.isArray(a.var))for(let t of a.var){if(typeof t!="object"||!t)continue;let c=t,l=String(c.uid||"");i.has(l)||(i.add(l),n.push({uid:l,email:c.email,trueName:c.true_name,name:c.name}))}}catch{}return n.slice(0,s)}async searchGroups(e,s=20){try{let n=await this.client.postJson({func:"cim.group:search",sid:this.sid,payload:{keyword:e,limit:s,return_field:"uid,email,true_name,name,description"}});if(n.code==="S_OK"&&Array.isArray(n.var))return n.var.map(i=>({uid:String(i.uid||""),name:i.name,trueName:i.true_name,email:i.email,description:i.description}))}catch{}return[]}async resolveRecipient(e){let s=e.trim();if(te(s)){let a=xn(s);return{uid:s,type:a==="group"?"group":"user",name:s}}let n=await this.searchContacts(s,5);if(n.length>0){let a=n[0];return{uid:a.uid,type:"user",name:a.trueName||a.name||s,email:a.email||void 0}}let i=await this.searchGroups(s,5);if(i.length>0){let a=i[0];return{uid:a.uid,type:"group",name:a.name||a.trueName||s,email:a.email||void 0}}throw new Error(r("api.recipient_not_found",{name:s}))}async resolveRecipientInteractive(e,s){let n=e.trim();if(te(n)){let t=xn(n);return{uid:n,type:t==="group"?"group":"user",name:n}}let i=await this.searchContacts(n,10);if(i.length>0){let t=i.filter(p=>p.name===n||p.trueName===n);if(t.length===1){let p=t[0];return{uid:p.uid,type:"user",name:p.trueName||p.name||n,email:p.email||void 0}}let c=0;if(i.length>1&&s){let p=i.map(u=>({uid:u.uid,name:u.trueName||u.name||u.email||u.uid,type:"user"}));c=s(p)}c<0&&(c=0);let l=i[c];return{uid:l.uid,type:"user",name:l.trueName||l.name||n,email:l.email||void 0}}let a=await this.searchGroups(n,10);if(a.length>0){let t=a.filter(p=>p.name===n||p.trueName===n);if(t.length===1){let p=t[0];return{uid:p.uid,type:"group",name:p.name||p.trueName||n,email:p.email||void 0}}let c=0;if(a.length>1&&s){let p=a.map(u=>({uid:u.uid,name:u.name||u.trueName||u.email||u.uid,type:"group"}));c=s(p)}c<0&&(c=0);let l=a[c];return{uid:l.uid,type:"group",name:l.name||l.trueName||n,email:l.email||void 0}}throw new Error(r("api.recipient_not_found",{name:n}))}async listMessages(e,s={}){let{limit:n=20,latestFirst:i=!0}=s,a={limit:n,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"};e.type==="user"?(a.uid=this.session.selfUid,a.filter={chatWithAddress:e.uid}):a.uid=e.uid,i&&(a.order="date",a.desc=!0,a.listOrder="desc");let c=await this.client.postJson({func:"cim.msg:list",sid:this.sid,payload:a});if(c.code!=="S_OK"||!Array.isArray(c.var))return[];let l=[];for(let p of c.var){if(typeof p!="object"||!p)continue;let u=p,d=u.data||u,f=d.from||{},g=[],h=d.attachments;if(Array.isArray(h))for(let m of h)g.push({file_id:m.fileId,uid:m.uid,title:m.title||m.filename,content_type:m.content_type,file_size:m.file_size||m.size,type:m.type,inline:m.inline===!0});l.push({mid:String(d.mid||d.uid||""),time:Q(d.time),subject:d.subject||d.content||"",content:d.content,senderUid:f.uid||d.sender_uid||d.fromUid,senderName:f.true_name||f.email||d.sender_name||d.fromName,senderEmail:f.email||d.sender_email||d.fromEmail,attachments:g})}return l}async sendMessage(e,s,n={}){let i=n.botName||this.botName,a=n.senderName||await this.ensureSenderName(),t=de(s,a,i),c=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text"}});if(c.code!=="S_OK")throw new Error(r("api.send_reply_failed",{code:c.code,msg:c.msg||"Unknown error"}));let l=c.var?.[0];return{mid:String(l?.mid||""),to:e.uid,type:e.type}}async sendFile(e,s,n={}){let i=n.botName||this.botName,a=n.senderName||await this.ensureSenderName(),t=de(n.content||"",a,i),c=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,l=Ks.randomUUID(),u=e.type==="user"?this.session.selfUid:e.uid,d=[];for(let h of s){let m=await this.uploadFileWithFlow(h,u,c);d.push({fileId:m.fileId,uid:m.fileUid})}let f=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text",clientMid:l,attachments:d}});if(f.code!=="S_OK")throw new Error(r("api.send_reply_failed",{code:f.code,msg:f.msg||"Unknown error"}));let g=f.var?.[0];return{mid:String(g?.mid||""),to:e.uid,files:s}}async uploadFile(e,s,n){let i=ne.resolve(e),a=ne.basename(i);if(!K.existsSync(i))throw new Error(r("errors.file_not_found",{path:e}));let t=K.statSync(i),c=Xn.lookup(i)||"application/octet-stream",l=K.readFileSync(i),p=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:t.size,composeId:n,fileName:a,uid:s,contentType:c}});if(p.code!=="S_OK")throw new Error(r("api.upload_prepare_failed",{code:p.code}));let d=p.var?.attachmentId;if(!d)throw new Error(r("api.upload_no_attachment_id"));let f=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(n)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(s)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([y,S])=>`${y}=${S}`).join("; ")},m=await Le(f,l,h,6e4),x=m.headers["set-cookie"];if(x)for(let y of x.split(",")){let S=y.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let v;try{v=JSON.parse(m.data)}catch{throw new Error(r("api.upload_invalid_response",{data:m.data?.substring?.(0,400)}))}if(v.code!=="S_OK")throw new Error(r("api.upload_data_failed",{code:v.code}));let k=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:n,fileName:a,item:"fileName",attachmentId:d,uid:s}});if(k.code!=="S_OK")throw new Error(r("api.upload_move_failed",{code:k.code}));let b=k.var,_=b?.fileId,A=b?.uid;if(!_)throw new Error(r("api.upload_no_file_id"));return{fileId:_,fileUid:A||"",fileName:a}}async uploadFileWithFlow(e,s,n){let i=ne.resolve(e),a=ne.basename(i);if(!K.existsSync(i))throw new Error(r("errors.file_not_found",{path:e}));let t=K.statSync(i),c=Xn.lookup(i)||"application/octet-stream",l=K.readFileSync(i),p=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:t.size,composeId:n,fileName:a,uid:s,contentType:c}});if(p.code!=="S_OK")throw new Error(r("api.upload_prepare_failed",{code:p.code}));let d=p.var?.attachmentId;if(!d)throw new Error(r("api.upload_no_attachment_id"));let f=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(n)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(s)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([y,S])=>`${y}=${S}`).join("; ")},m=await Le(f,l,h,6e4),x=m.headers["set-cookie"];if(x)for(let y of x.split(",")){let S=y.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let v;try{v=JSON.parse(m.data)}catch{throw new Error(r("api.upload_invalid_response",{data:m.data?.substring?.(0,400)}))}if(v.code!=="S_OK")throw new Error(r("api.upload_data_failed",{code:v.code}));let k=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:n,fileName:a,item:"fileName",attachmentId:d,uid:s}});if(k.code!=="S_OK")throw new Error(r("api.upload_move_failed",{code:k.code}));let b=k.var,_=b?.fileId,A=b?.uid;if(!_)throw new Error(r("api.upload_no_file_id"));return{fileId:_,fileUid:A||"",fileName:a}}async downloadFile(e,s,n,i){let a=`${this.session.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(s)}&mid=${encodeURIComponent(e)}&sid=${encodeURIComponent(this.sid)}&fallback=false`,t={Cookie:`Cim.sid=${this.sid}; Cim=${this.cookies.Cim||""}`},c=await Me(a,t);if(c.status!==200){let d=c.data.toString("utf-8").substring(0,500);throw new Error(r("api.download_http_failed",{status:c.status,body:d}))}if(c.data.length<1e3)try{let d=JSON.parse(c.data.toString("utf-8"));if(d.code&&d.code!=="S_OK")throw new Error(r("api.download_failed",{error:`${d.code} - ${d.msg||""}`}))}catch(d){if(!(d instanceof SyntaxError))throw d}if(!i)throw new Error(r("api.filename_required"));let l=Wn(i),p=n?ne.resolve(n):ne.join(zs.tmpdir(),l),u=ne.dirname(p);return K.existsSync(u)||K.mkdirSync(u,{recursive:!0}),K.writeFileSync(p,c.data),{filePath:p,fileName:l,fileSize:c.data.length}}async createGroup(e,s){let n=await this.searchGroups(e,1);if(n.length>0&&n[0].name===e)return{uid:n[0].uid,name:n[0].name||e};let i={true_name:e,group_type:"topic"};s&&(i.description=s);let a=await this.client.postJson({func:"cim.group:create",sid:this.sid,payload:i});if(a.code!=="S_OK")throw new Error(r("api.create_group_failed",{code:a.code,msg:a.msg||""}));let t=a.var;return{uid:String(t.uid||""),name:e}}async deleteGroup(e){let s=await this.client.postJson({func:"cim.group:discard",sid:this.sid,payload:{uid:e}});if(s.code!=="S_OK")throw new Error(r("api.delete_group_failed",{code:s.code,msg:s.msg||""}));return!0}createSocketClient(e){return Ce.fromLunkrConfig(this.session.baseUrl,this.sid,this.session.cookie,{uid:this.session.selfUid,username:this.senderName,eventCallbacks:{connect:()=>e.onConnect?.(),disconnect:()=>e.onDisconnect?.(),ready:()=>e.onReady?.(),message:s=>e.onMessage?.(s),error:s=>{let n=s&&typeof s=="object"&&"message"in s?String(s.message):"Unknown error";e.onError?.(new Error(n))}}})}}});var D=J(()=>{ue();Je();_e();Oe()});var Js={};Ai(Js,{loginCommand:()=>$e,loginCommandMeta:()=>Vs});async function Fa(o){try{let e=new O(o.baseUrl,{apiPath:o.apiPath}),s={};for(let n of o.cookie.split(";")){let i=n.trim();if(i.includes("=")){let a=i.indexOf("="),t=i.substring(0,a).trim(),c=i.substring(a+1).trim();s[t]=c}}return e.setCookies(s),await e.checkSessionValid(o.sid)}catch{return!1}}async function Yn(o){try{let e=new O(o.baseUrl,{apiPath:o.apiPath}),s={};for(let i of o.cookie.split(";")){let a=i.trim();if(a.includes("=")){let t=a.indexOf("="),c=a.substring(0,t).trim(),l=a.substring(t+1).trim();s[c]=l}}e.setCookies(s);let n=await e.postJson({func:"cim.common:getCimPrefAttr",sid:o.sid,payload:{return_field:"nickname,true_name,name"}});if(n.code==="S_OK"&&n.var){let i=n.var,a=i.nickname||i.true_name||i.name;return a?String(a).trim():null}}catch{}return null}async function $e(o,e){let s=e.verbose??!1,n=e.debug??!1,i=e.force??!1,a=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("login.qrcode_login_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(a?` ${r("messages.mode_temporary_desc")}`:` ${r("messages.mode_persistent_desc")}`),console.log("");let t=R();if(i)console.log(r("messages.force_relogin"));else{let x=t.accounts?.[0];if(x?.session?.sid){if(await Fa(x.session)){let k=await Yn(x.session);k&&(x.session.senderName=k,E(t)),console.log(r("messages.already_logged_in")),k&&console.log(`${r("labels.name")}: ${k}`),console.log(`UID: ${x.session.selfUid}`),console.log("");return}s&&(console.log(r("errors.session_expired_login")),console.log(""),console.log(r("status.login_hint")))}}let c=t.accounts?.[0];if(c?.apiToken&&!i){console.log(r("messages.authenticating_token"));let x=await ae(c.email||c.accountId,c.apiToken,t.device_uuid,{debug:n});if(x.success&&x.sid&&x.cookie){let v=x.selfUid||c.session?.selfUid;c.session={sid:x.sid,cookie:x.cookie,baseUrl:ln,apiPath:je,selfUid:v};let k=await Yn(c.session);k&&(c.session.senderName=k),E(t);let b=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("messages.login_successful_token")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),k&&console.log(` ${I(r("labels.name")+":",b)} ${k}`),console.log(` ${I(r("labels.email")+":",b)} ${x.email}`),console.log(` ${I(r("labels.bot")+":",b)} ${z()}`),console.log(""),console.log(` ${I(r("labels.config")+":",b)} ${W()}`),console.log("");return}console.log(r("login.token_expired_need_rescan")),n&&console.log(r("login.token_login_error",{error:x.error||"Unknown"}))}let l=await zn({device:{device_uuid:t.device_uuid,device_os:t.device_os,device_model:t.device_model,device_name:t.device_name},debug:n});l.success||(console.error(""),console.error(r("login.qrcode_login_failed",{error:l.error||"Unknown"})),process.exit(1)),(!l.apiToken||!l.email)&&(console.error(""),console.error(r("login.qrcode_login_no_token")),process.exit(1)),console.log(""),console.log(r("messages.authenticating_with_token"));let p=await ae(l.email,l.apiToken,l.deviceUuid||t.device_uuid,{debug:n});p.success||(console.error(""),console.error(r("login.token_login_failed",{error:p.error||"Unknown"})),process.exit(1)),(!p.sid||!p.cookie)&&(console.error(""),console.error(r("login.token_login_no_session")),process.exit(1));let u=p.selfUid||l.selfUid,d={sid:p.sid,cookie:p.cookie,baseUrl:ln,apiPath:je,selfUid:u},f=await Yn(d);f&&(d.senderName=f);let g={accountId:l.email,email:l.email,enabled:!0,session:d,apiToken:a?void 0:l.apiToken};t=R();let h=t.accounts?.findIndex(x=>x.accountId===l.email)??-1;h>=0&&t.accounts?t.accounts[h]=g:(t.accounts||(t.accounts=[]),t.accounts.push(g)),E(t);let m=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("messages.login_successful_qrcode")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),f&&console.log(` ${I(r("labels.name")+":",m)} ${f}`),console.log(` ${I(r("labels.email")+":",m)} ${l.email}`),console.log(` ${I(r("labels.bot")+":",m)} ${z()}`),console.log(` ${I("UID:",m)} ${u}`),console.log(a?` ${I(r("labels.mode")+":",m)} ${r("messages.mode_temporary")}`:` ${I(r("labels.mode")+":",m)} ${r("messages.mode_persistent")}`),console.log(""),console.log(` ${I(r("labels.config")+":",m)} ${W()}`),console.log("")}var Vs,vn=J(()=>{D();Ie();Ue();j();Vs={name:"login",description:"Login to Lunkr using QR code",options:[{name:"verbose",alias:"v",description:"Verbose output",type:"boolean",required:!1},{name:"debug",alias:"d",description:"Debug output (show network requests)",type:"boolean",required:!1},{name:"force",alias:"f",description:"Force re-login even if session is valid",type:"boolean",required:!1},{name:"temp",alias:"t",description:"Temporary login (do not save api_token)",type:"boolean",required:!1}]}});j();function Do(o){return{}}function Go(o){return{accountId:o.accountId}}function No(o){return{}}import{Type as C}from"@sinclair/typebox";import{Value as mt}from"@sinclair/typebox/value";var $i=C.Object({name:C.String({minLength:1,description:"Discussion name is required"}),agentId:C.Optional(C.String()),creatorUid:C.String({minLength:1,description:"Creator UID is required"}),createdAt:C.Union([C.String(),C.Number()],{description:"Creation timestamp"})}),Fi=C.Union([C.Literal("allow"),C.Literal("deny"),C.Literal("whitelist")]),qi=C.Union([C.Literal("allow"),C.Literal("deny"),C.Literal("whitelist")]),Ln=C.Object({enabled:C.Optional(C.Boolean({default:!0})),commandPrefix:C.Optional(C.String({minLength:1,default:"/"})),botDiscussions:C.Optional(C.Record(C.String(),$i)),dmPolicy:C.Optional(Fi),allowFrom:C.Optional(C.Array(C.String())),groupPolicy:C.Optional(qi),groups:C.Optional(C.Array(C.String()))}),Ti=C.Object({email:C.String({minLength:1,description:"Email is required"}),password:C.String({minLength:1,description:"Password is required"}),deviceUuid:C.Optional(C.String()),deviceName:C.Optional(C.String())}),Ei=C.Object({sid:C.String(),selfUid:C.String(),cookie:C.String(),baseUrl:C.String(),apiPath:C.String()}),Di=C.Object({accountId:C.String({minLength:1,description:"Account ID is required"}),name:C.Optional(C.String()),enabled:C.Optional(C.Boolean({default:!0})),credentials:Ti,config:Ln,session:C.Optional(Ei)}),ft=C.Record(C.String(),Di);var se="default";ue();var qn="agent:";function zi(o){let e=R(),s=e.accounts||[];if(o&&o.startsWith(qn)){let i=o.slice(qn.length),a=s.find(t=>t.email===i&&t.role==="agent");return a?{accountId:a.accountId,name:a.name,enabled:a.enabled,session:a.session,config:a.config,apiToken:a.apiToken,role:a.role,agentId:a.agentId}:null}if(!o||o===se){let i=pe(e);if(!i)return null;let a=s.find(t=>t.accountId===i.accountId||t.email===i.email);return{accountId:i.accountId,name:a?.name,enabled:i.enabled,session:i.session,config:a?.config,apiToken:i.apiToken,role:i.role,agentId:i.agentId}}let n=s.find(i=>i.accountId===o);return n?{accountId:n.accountId,name:n.name,enabled:n.enabled,session:n.session,config:n.config,apiToken:n.apiToken,role:n.role,agentId:n.agentId}:null}function Qo(o){return o.channels?.["lunkr-openclaw"]}function H(o,e){let s=Qo(o),i=zi(e??se);if(!i?.session||s?.enabled===!1)return null;let a=s?.enabled??!0,t=i.session;return{accountId:i.accountId,name:i.name??z(),enabled:a,selfUid:i.session.selfUid,sid:i.session.sid,cookie:i.session.cookie,botName:z(),commandPrefix:s?.commandPrefix??"/bot",botDiscussions:s?.botDiscussions??{},senderName:t.senderName,config:s??{enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"allow",allowFrom:[],groupPolicy:"allow",groups:[]},lunkrConfig:i.session,hasApiToken:!!i.apiToken,role:i.role||"standard",agentId:i.agentId}}function De(o,e){return{...o,sid:e.sid,cookie:e.cookie,selfUid:e.selfUid||o.selfUid,lunkrConfig:e}}var Xo={listAccountIds:o=>{let e=[],s=R();pe(s)?.session&&e.push(se);let i=Ee(s);for(let a of i)a.session?.sid&&e.push(`${qn}${a.email}`);return e},resolveAccount:(o,e)=>H(o,e),defaultAccountId:()=>se,isConfigured:o=>o?!!((o.sid||o.hasApiToken)&&o.selfUid):!1,isEnabled:o=>o?o.enabled??!0:!1,describeAccount:o=>{if(!o)return{accountId:"default",configured:!1,enabled:!1};let e=!!((o.sid||o.hasApiToken)&&o.selfUid);return{accountId:o.accountId,name:o.name,enabled:o.enabled,configured:e}},setAccountEnabled:o=>{let{cfg:e,enabled:s}=o,n=Qo(e)??{};return{...e,channels:{...e.channels,lunkr:{...n,enabled:s}}}},unconfiguredReason:o=>o?o.sid?o.selfUid?"Account not configured":"Lunkr user ID not available. Please re-authenticate.":"Lunkr session not configured. Run: openclaw lunkr login":"Lunkr account not configured. Run: openclaw lunkr login"};function Yo(o){return o.replace(/^lunkr:/i,"")}function Ki(o,e,s){let n=s.config.dmPolicy??"allow",i=s.config.allowFrom??[];return{policy:n,allowFrom:i.map(Yo),policyPath:"channels.lunkr-openclaw.dmPolicy",allowFromPath:"channels.lunkr-openclaw.allowFrom",approveHint:"openclaw pairing approve lunkr <code>",normalizeEntry:Yo}}async function Vi(o){let e=[],{account:s}=o;return s.config.dmPolicy==="allow"&&s.config.allowFrom?.length,s.config.groupPolicy==="allow"&&!s.config.groups?.length&&e.push('Group policy is set to "allow" but no groups are configured. Bot will respond in any group where mentioned.'),e}var Zo={resolveDmPolicy:o=>{let{cfg:e,accountId:s,account:n}=o;return Ki(e,s??se,n)},collectWarnings:o=>Vi(o)};var As=$o(En(),1);import*as Y from"fs";import*as ve from"path";import*as _s from"os";Re();on();Ie();un();var fs={"cim.cal:createEvents":{func:"cim.cal:createEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:createEventsForLunkr":{func:"cim.cal:createEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEvents":{func:"cim.cal:deleteEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEventsForLunkr":{func:"cim.cal:deleteEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteReminder":{func:"cim.cal:deleteReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getMeetingRooms":{func:"cim.cal:getMeetingRooms",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminder":{func:"cim.cal:getReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminderWithAutoCheck":{func:"cim.cal:getReminderWithAutoCheck",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminder":{func:"cim.cal:setReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminderForLunkr":{func:"cim.cal:setReminderForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEvents":{func:"cim.cal:updateEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEventsForLunkr":{func:"cim.cal:updateEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:api":{func:"cim.common:api",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:autoKeepSession":{func:"cim.common:autoKeepSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkModuleVersion":{func:"cim.common:checkModuleVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkVersion":{func:"cim.common:checkVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:clickLog":{func:"cim.common:clickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:customOpLog":{func:"cim.common:customOpLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:delayClickLog":{func:"cim.common:delayClickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:feedback":{func:"cim.common:feedback",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:flashMailLog":{func:"cim.common:flashMailLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAdminFunctionSetting":{func:"cim.common:getAdminFunctionSetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAttrs":{func:"cim.common:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAvatar":{func:"cim.common:getAvatar",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getBigAvatar":{func:"cim.common:getBigAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCimPrefAttr":{func:"cim.common:getCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getConfig":{func:"cim.common:getConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCustomDomain":{func:"cim.common:getCustomDomain",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getEnfDetail":{func:"cim.common:getEnfDetail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getInitConfig":{func:"cim.common:getInitConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getLastLoginStatus":{func:"cim.common:getLastLoginStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getMaterial":{func:"cim.common:getMaterial",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getNSISDownloadURL":{func:"cim.common:getNSISDownloadURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getOrgInfo":{func:"cim.common:getOrgInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRemindList":{func:"cim.common:getRemindList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRevision":{func:"cim.common:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getSysUserInfo":{func:"cim.common:getSysUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getUserType":{func:"cim.common:getUserType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getValueByKey":{func:"cim.common:getValueByKey",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getWebSocketURL":{func:"cim.common:getWebSocketURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:iosHotfix":{func:"cim.common:iosHotfix",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listAuthDevice":{func:"cim.common:listAuthDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listFlagUser":{func:"cim.common:listFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logCollapse":{func:"cim.common:logCollapse",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logRecord":{func:"cim.common:logRecord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:onlineStatus":{func:"cim.common:onlineStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:resetTopicAvatar":{func:"cim.common:resetTopicAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:searchFlagUser":{func:"cim.common:searchFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendNetDiskOperateNotice":{func:"cim.common:sendNetDiskOperateNotice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendShake":{func:"cim.common:sendShake",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setApplePushSwitch":{func:"cim.common:setApplePushSwitch",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setAvatar":{func:"cim.common:setAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setCimPrefAttr":{func:"cim.common:setCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setFlag":{func:"cim.common:setFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setMiscFlag":{func:"cim.common:setMiscFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setRevision":{func:"cim.common:setRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sioSubscribe":{func:"cim.common:sioSubscribe",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:transEmail":{func:"cim.common:transEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:verify":{func:"cim.common:verify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getCompanyInfoById":{func:"cim.company:getCompanyInfoById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getSensitiveWord":{func:"cim.company:getSensitiveWord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:listCompanyInfo":{func:"cim.company:listCompanyInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.container:searchContacts":{func:"cim.container:searchContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:opRedpacket":{func:"cim.extSys:opRedpacket",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:push":{func:"cim.extSys:push",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:pushRegister":{func:"cim.extSys:pushRegister",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:addCollect":{func:"cim.file:addCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:cancelCollect":{func:"cim.file:cancelCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:directData":{func:"cim.file:directData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getFileData":{func:"cim.file:getFileData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getSearchResult":{func:"cim.file:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getThumbnail":{func:"cim.file:getThumbnail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:listCollect":{func:"cim.file:listCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:moveToNetFolder":{func:"cim.file:moveToNetFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:prepare":{func:"cim.file:prepare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:search":{func:"cim.file:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:searchCollect":{func:"cim.file:searchCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadPost":{func:"cim.file:uploadPost",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadSnippet":{func:"cim.file:uploadSnippet",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadVoice":{func:"cim.file:uploadVoice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:viewFile":{func:"cim.file:viewFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:attendance":{func:"cim.group:attendance",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:create":{func:"cim.group:create",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:delete":{func:"cim.group:delete",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:discard":{func:"cim.group:discard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getInfo":{func:"cim.group:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getMembersInfo":{func:"cim.group:getMembersInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getRelate":{func:"cim.group:getRelate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:invite":{func:"cim.group:invite",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:listVipUserTopic":{func:"cim.group:listVipUserTopic",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:notifyFlag":{func:"cim.group:notifyFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:search":{func:"cim.group:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:transfer":{func:"cim.group:transfer",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateDescription":{func:"cim.group:updateDescription",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateName":{func:"cim.group:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:generate":{func:"cim.link:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:getInfo":{func:"cim.link:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:prolong":{func:"cim.link:prolong",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:sendInviteMail":{func:"cim.link:sendInviteMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:shorten":{func:"cim.link:shorten",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:compose":{func:"cim.mail:compose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getPushFolder":{func:"cim.mail:getPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getShareNF":{func:"cim.mail:getShareNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readMail":{func:"cim.mail:readMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readShare":{func:"cim.mail:readShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:refreshToken":{func:"cim.mail:refreshToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteCompose":{func:"cim.mail:remoteCompose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteRequest":{func:"cim.mail:remoteRequest",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:searchMessages":{func:"cim.mail:searchMessages",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setAllRead":{func:"cim.mail:setAllRead",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setPushFolder":{func:"cim.mail:setPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:share":{func:"cim.mail:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:ssoLunkr":{func:"cim.mail:ssoLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:uploadToPersonalNF":{func:"cim.mail:uploadToPersonalNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:batchReply":{func:"cim.msg:batchReply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:broadcast":{func:"cim.msg:broadcast",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:clearUnread":{func:"cim.msg:clearUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:collect":{func:"cim.msg:collect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:deleteUploadFile":{func:"cim.msg:deleteUploadFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getInfo":{func:"cim.msg:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByType":{func:"cim.msg:getLastMsgByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByUID":{func:"cim.msg:getLastMsgByUID",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getSearchResult":{func:"cim.msg:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getShare":{func:"cim.msg:getShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:list":{func:"cim.msg:list",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:operate":{func:"cim.msg:operate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:p2p":{func:"cim.msg:p2p",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:reply":{func:"cim.msg:reply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:search":{func:"cim.msg:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:searchByGroup":{func:"cim.msg:searchByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:setVip":{func:"cim.msg:setVip",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:share":{func:"cim.msg:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:stats":{func:"cim.msg:stats",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateLastMsg":{func:"cim.msg:updateLastMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateRcptMsg":{func:"cim.msg:updateRcptMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getAttrs":{func:"cim.oabEx:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getUserInfo":{func:"cim.oabEx:getUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:setAttrs":{func:"cim.oabEx:setAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteLotterySetting":{func:"cim.operation:deleteLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteOperateActivityById":{func:"cim.operation:deleteOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:exportUserLottery":{func:"cim.operation:exportUserLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getCommentByCode":{func:"cim.operation:getCommentByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getLotteryResultByCode":{func:"cim.operation:getLotteryResultByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getOperateActivityById":{func:"cim.operation:getOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getPrizeInfoByCode":{func:"cim.operation:getPrizeInfoByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listActiveOperateActivity":{func:"cim.operation:listActiveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listLotterySetting":{func:"cim.operation:listLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveComment":{func:"cim.operation:saveComment",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveLotterySetting":{func:"cim.operation:saveLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveOperateActivity":{func:"cim.operation:saveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveUserCommentForPrize":{func:"cim.operation:saveUserCommentForPrize",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:sendGreetingCard":{func:"cim.operation:sendGreetingCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:startLottery":{func:"cim.operation:startLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:updateOperateActivity":{func:"cim.operation:updateOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addContact":{func:"cim.pab:addContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addGroup":{func:"cim.pab:addGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addToBlacklist":{func:"cim.pab:addToBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:deleteGroup":{func:"cim.pab:deleteGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getAllContacts":{func:"cim.pab:getAllContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getBlacklist":{func:"cim.pab:getBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getCombinedContacts":{func:"cim.pab:getCombinedContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getRecentContacts":{func:"cim.pab:getRecentContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getWholeContacts":{func:"cim.pab:getWholeContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:removeFromBlacklist":{func:"cim.pab:removeFromBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:searchContact":{func:"cim.pab:searchContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:updateContact":{func:"cim.pab:updateContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:generate":{func:"cim.qrcode:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:qrcodeInfo":{func:"cim.qrcode:qrcodeInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:register":{func:"cim.qrcode:register",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:get":{func:"cim.remind:get",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:getMobile":{func:"cim.remind:getMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:set":{func:"cim.remind:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:setMobile":{func:"cim.remind:setMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.revision:getRevision":{func:"cim.revision:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:getNotify":{func:"cim.state:getNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:query":{func:"cim.state:query",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryHasLogin":{func:"cim.state:queryHasLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryUserState":{func:"cim.state:queryUserState",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:set":{func:"cim.state:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:setNotify":{func:"cim.state:setNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:checkToken":{func:"cim.third:checkToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:genLinkNonce":{func:"cim.third:genLinkNonce",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:listApp":{func:"cim.third:listApp",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:getThreadInfo":{func:"cim.thread:getThreadInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listBulletin":{func:"cim.thread:listBulletin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listRevision":{func:"cim.thread:listRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listThreadNew":{func:"cim.thread:listThreadNew",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:setTop":{func:"cim.thread:setTop",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:changePassword":{func:"cim.user:changePassword",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:checkVersionAndLogin":{func:"cim.user:checkVersionAndLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:genTempSession":{func:"cim.user:genTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getCard":{func:"cim.user:getCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getEmojiList":{func:"cim.user:getEmojiList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getLunkrMailData":{func:"cim.user:getLunkrMailData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getRecentUnread":{func:"cim.user:getRecentUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempSession":{func:"cim.user:getTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempShareSession":{func:"cim.user:getTempShareSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOffLine":{func:"cim.user:kickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineDevice":{func:"cim.user:kickOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineUserForAdmin":{func:"cim.user:kickOnlineUserForAdmin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listKickOffLineLog":{func:"cim.user:listKickOffLineLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listLoginHistory":{func:"cim.user:listLoginHistory",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:logout":{func:"cim.user:logout",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:queryOnlineDevice":{func:"cim.user:queryOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:removeKickOffLine":{func:"cim.user:removeKickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveCard":{func:"cim.user:saveCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveEmoji":{func:"cim.user:saveEmoji",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:shareCard":{func:"cim.user:shareCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateName":{func:"cim.user:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateOrgUserLastModified":{func:"cim.user:updateOrgUserLastModified",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateTempSession":{func:"cim.user:updateTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"nfEx:getFileData":{func:"nfEx:getFileData",path:"/crux/adm_api/filePreview",requiresFunc:!0,defaultUseGet:!0},"nfEx:getShareFile":{func:"nfEx:getShareFile",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"oab:autoMatch":{func:"oab:autoMatch",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:get":{func:"oab:get",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:getDirectories":{func:"oab:getDirectories",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:listEx":{func:"oab:listEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:searchEx":{func:"oab:searchEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:createContact":{func:"pab:createContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:deleteContact":{func:"pab:deleteContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getAllContactsByType":{func:"pab:getAllContactsByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactByEmail":{func:"pab:getContactByEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactsByGroup":{func:"pab:getContactsByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"user:config":{func:"user:config",path:"/lunkr/common/config",requiresFunc:!1,defaultUseGet:!0},"user:init":{func:"user:init",path:"/lunkr/init",requiresFunc:!1,defaultUseGet:!0}},ia=Object.keys(fs);Re();Ue();_e();j();Je();var ys=1e3;async function ws(o,e){try{let s=await o.postJson({func:"cim.common:getCimPrefAttr",sid:e,payload:{return_field:"nickname,true_name,name"}});if(s.code==="S_OK"&&s.var){let n=s.var,i=n.nickname||n.true_name||n.name;return i?String(i).trim():null}}catch{}return null}async function Cs(o,e){let s=H(o,e);if(!s)throw new Error(r("errors.account_not_configured"));let n=new O(s.lunkrConfig.baseUrl,{apiPath:s.lunkrConfig.apiPath}),i={"Cim.sid":s.sid};for(let a of s.cookie.split(";")){let t=a.trim();if(t.includes("=")){let[c,l]=t.split("=",2);i[c.trim()]=l.trim()}}return n.setCookies(i),{client:n,account:s}}async function fa(o,e){let{to:s,content:n,sid:i,accountId:a,lunkrConfig:t}=e,c=await o.postJson({func:"cim.msg:reply",sid:i,payload:{uid:s,content:n,type:"text"}});if(c.code!=="S_OK"&&Pe(String(c.code))){let p=await X(a);if(p.success&&p.session){let u=new O(t.baseUrl,{apiPath:t.apiPath}),d={"Cim.sid":p.session.sid};for(let g of p.session.cookie.split(";")){let h=g.trim();if(h.includes("=")){let[m,x]=h.split("=",2);d[m.trim()]=x.trim()}}u.setCookies(d);let f=await u.postJson({func:"cim.msg:reply",sid:p.session.sid,payload:{uid:s,content:n,type:"text"}});if(f.code==="S_OK")return{msgId:f.var?.msgId??`msg-${Date.now()}`};throw new Error(r("api.send_failed",{code:String(f.code)}))}else console.error(`[${a}] Session refresh failed: ${p.error}. Please run: lunkr login`)}if(c.code!=="S_OK")throw new Error(r("api.send_failed",{code:String(c.code)}));return{msgId:c.var?.msgId??`msg-${Date.now()}`}}async function ga(o,e){let{to:s,content:n,sid:i,accountId:a,lunkrConfig:t}=e,c=await o.postJson({func:"cim.msg:reply",sid:i,payload:{uid:s,content:n,type:"post"}});if(c.code!=="S_OK"&&Pe(String(c.code))){let p=await X(a);if(p.success&&p.session){let u=new O(t.baseUrl,{apiPath:t.apiPath}),d={"Cim.sid":p.session.sid};for(let g of p.session.cookie.split(";")){let h=g.trim();if(h.includes("=")){let[m,x]=h.split("=",2);d[m.trim()]=x.trim()}}u.setCookies(d);let f=await u.postJson({func:"cim.msg:reply",sid:p.session.sid,payload:{uid:s,content:n,type:"post"}});if(f.code==="S_OK")return{msgId:f.var?.msgId??`post-${Date.now()}`};throw new Error(r("api.send_post_failed",{code:String(f.code)}))}else console.error(`[${a}] Session refresh failed: ${p.error}. Please run: lunkr login`)}if(c.code!=="S_OK")throw new Error(r("api.send_post_failed",{code:String(c.code)}));return{msgId:c.var?.msgId??`post-${Date.now()}`}}function Ss(o){let e=o.replace(/^lunkr:/i,"");return e.startsWith("discussion:")?{chatId:e.replace("discussion:",""),chatType:"group"}:e.startsWith("channel:")?{chatId:e.replace("channel:",""),chatType:"channel"}:{chatId:e,chatType:"p2p"}}async function xa(o){if(o.startsWith("http://")||o.startsWith("https://")){let s=_s.tmpdir(),n=`lunkr-media-${Date.now()}-${ve.basename(new URL(o).pathname)||"file"}`,i=ve.join(s,n),a=await Me(o,{},6e4);return Y.writeFileSync(i,a.data),{filePath:i,cleanup:()=>{try{Y.existsSync(i)&&Y.unlinkSync(i)}catch{}}}}let e=ve.resolve(o);if(!Y.existsSync(e))throw new Error(r("errors.file_not_found",{path:o}));return{filePath:e,cleanup:()=>{}}}async function ha(o,e){let{filePath:s,sid:n,uploadUid:i,cookies:a,baseUrl:t,apiPath:c}=e,l=ve.resolve(s),p=ve.basename(l);if(!Y.existsSync(l))throw new Error(r("errors.file_not_found",{path:s}));let u=Y.statSync(l),d=As.lookup(l)||"application/octet-stream",f=Y.readFileSync(l),g=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,h=await o.postJson({func:"cim.file:prepare",sid:n,payload:{size:u.size,composeId:g,fileName:p,uid:i,contentType:d}});if(h.code!=="S_OK")throw new Error(r("api.upload_prepare_failed",{code:String(h.code)}));let x=h.var?.attachmentId;if(!x)throw new Error(r("api.upload_no_attachment_id"));let v=`${t}${c}?func=cim.file:directData&sid=${encodeURIComponent(n)}&composeId=${encodeURIComponent(g)}&attachmentId=${x}&offset=0&uid=${encodeURIComponent(i)}`,b={"Content-Type":"application/octet-stream",Cookie:Object.entries(a).map(([P,$])=>`${P}=${$}`).join("; ")},_=await Le(v,f,b,6e4),A;try{A=JSON.parse(_.data)}catch{throw new Error(r("api.upload_invalid_response",{data:_.data?.substring?.(0,200)}))}if(A.code!=="S_OK")throw new Error(r("api.upload_data_failed",{code:String(A.code)}));let y=await o.postJson({func:"cim.file:moveToNetFolder",sid:n,payload:{composeId:g,fileName:p,item:"fileName",attachmentId:x,uid:i}});if(y.code!=="S_OK")throw new Error(r("api.upload_move_failed",{code:String(y.code)}));let S=y.var,F=S?.fileId,w=S?.uid;if(!F)throw new Error(r("api.upload_no_file_id"));return{fileId:F,fileUid:w||""}}var Ls={deliveryMode:"direct",textChunkLimit:ys,sendText:async o=>{let{cfg:e,to:s,text:n,replyToId:i,accountId:a}=o,{client:t,account:c}=await Cs(e,a),{chatId:l,chatType:p}=Ss(s),u=c.botName??"Bot",d=c.senderName;d||(d=await ws(t,c.sid)),d||(d=c.selfUid?.includes("@")?c.selfUid.split("@")[0]:"User");let f=de(n,d,u),g;return f.length>ys?g=await ga(t,{to:l,content:f,sid:c.sid,accountId:c.accountId,lunkrConfig:c.lunkrConfig}):g=await fa(t,{to:l,content:f,sid:c.sid,accountId:c.accountId,lunkrConfig:c.lunkrConfig}),{ok:!0,channel:"lunkr-openclaw",messageId:g.msgId}},sendMedia:async o=>{let{cfg:e,to:s,text:n,mediaUrl:i,accountId:a}=o;if(!i)throw new Error(r("errors.media_url_required"));let{client:t,account:c}=await Cs(e,a),{chatId:l,chatType:p}=Ss(s),u=c.botName??"Bot",d=c.senderName;d||(d=await ws(t,c.sid)),d||(d=c.selfUid?.includes("@")?c.selfUid.split("@")[0]:"User");let f=de(n||"",d,u),g={"Cim.sid":c.sid};for(let b of c.cookie.split(";")){let _=b.trim();if(_.includes("=")){let[A,y]=_.split("=",2);g[A.trim()]=y.trim()}}let h=t,m=c.sid;if((await t.postJson({func:"cim.common:getOrgInfo",sid:c.sid})).code!=="S_OK"){let b=await X(c.accountId);if(!b.success||!b.session)throw new Error(r("errors.session_expired"));m=b.session.sid,h=new O(c.lunkrConfig.baseUrl,{apiPath:c.lunkrConfig.apiPath}),g={"Cim.sid":m};for(let _ of b.session.cookie.split(";")){let A=_.trim();if(A.includes("=")){let[y,S]=A.split("=",2);g[y.trim()]=S.trim()}}h.setCookies(g)}let v,k;try{let b=await xa(i);v=b.filePath,k=b.cleanup;let _=p==="p2p"?c.selfUid:l,{fileId:A,fileUid:y}=await ha(h,{filePath:v,sid:m,uploadUid:_,cookies:g,baseUrl:c.lunkrConfig.baseUrl,apiPath:c.lunkrConfig.apiPath}),S=await h.postJson({func:"cim.msg:reply",sid:m,payload:{uid:l,content:f,type:"text",attachments:[{fileId:A,uid:y}]}});if(S.code!=="S_OK")throw new Error(r("api.send_media_failed",{code:String(S.code)}));return{ok:!0,channel:"lunkr-openclaw",messageId:S.var?.msgId??`media-${Date.now()}`}}finally{k&&k()}}};un();function Is(o,e){let s=o.chatType==="group"?o.chatId:null;return s&&(e.botDiscussions||{})[s]||null}function va(o,e){return Is(o,e)!==null}function ba(o,e){return o.trim().toLowerCase().startsWith(e.toLowerCase())}function ka(o,e){return o.mentionedUids&&o.mentionedUids.length>0?o.mentionedUids.includes("all")?!0:o.mentionedUids.includes(e.selfUid):o.mentioned===!0}function Rs(o,e){let s=o.fromUid===e.selfUid,n=s&&/^\[@!.+?\]/.test(o.content),i=s&&!n;if(n)return{isBotMention:!1,isFromBot:!0,isFromSelf:!1};let a=Is(o,e);return a?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:a.agentId}:s&&ba(o.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function js(o,e){let s=o.fromUid===e.selfUid;return s&&/^\[@!.+?\]/.test(o.content)?{isBotMention:!1,isFromBot:!0,isFromSelf:!1}:s?{isBotMention:!1,isFromBot:!1,isFromSelf:!0}:o.chatType==="p2p"?{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId}:ka(o,e)?{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId}:{isBotMention:!1,isFromBot:!1,isFromSelf:!1}}function ya(o,e){let s=o.trim();return s.toLowerCase().startsWith(e.toLowerCase())?s.slice(e.length).trim():o}function Us(o,e){let s=e.role||"standard",n;if(s==="agent")n=js(o,e);else if(s==="standard+agent"){let c=js(o,e),l=Rs(o,e);c.isBotMention?n=c:(l.isBotMention,n=l)}else n=Rs(o,e);let a=va(o,e)?o.content:ya(o.content,e.commandPrefix),t=o.chatType==="p2p"?"direct":o.chatType;return{externalId:o.msgId,channel:"lunkr-openclaw",chatType:t,peerId:o.chatId,senderId:o.fromUid,text:a,timestamp:o.timestamp,replyTo:o.threadId,mentions:o.mentionedUids,isBotMention:n.isBotMention,isFromBot:n.isFromBot,isFromSelf:n.isFromSelf,agentId:n.agentId,contentType:o.contentType,attachments:o.attachments}}_e();j();Je();var re=new Map,We=new Map,Ps=5e3;function wa(o){let e=Date.now(),s=We.get(o);if(s&&e-s<Ps)return!0;if(We.set(o,e),We.size>1e3)for(let[n,i]of We)e-i>Ps*2&&We.delete(n);return!1}var Os=1e3;async function Ca(o,e,s){let{to:n,text:i,chatType:a}=e;s?.debug?.(`[sendLunkrReply] to=${n}, chatType=${a}, textLen=${i.length}`);let t=o.botName??"Bot",c=o.senderName;c||(c=o.selfUid?.includes("@")?o.selfUid.split("@")[0]:"User");let l=de(i,c,t),p=o.sid,u=o.cookie,d=o;if(p){let f=new O(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),g={"Cim.sid":p};for(let m of u.split(";")){let x=m.trim();if(x.includes("=")){let[v,k]=x.split("=",2);g[v.trim()]=k.trim()}}f.setCookies(g);let h=await f.postJson({func:"cim.msg:reply",sid:p,payload:{uid:n,content:l,type:l.length>Os?"post":"text"}});if(s?.debug?.(`[sendLunkrReply] Response: code=${h.code}`),h.code==="S_OK"){let m=h.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully${m?`: msgId=${m}`:""}`),{msgId:m??`msg-${Date.now()}`,account:d}}if(Pe(String(h.code)))s?.info(`[${o.accountId}] Session expired, clearing sid...`),p="",u="";else throw new Error(r("api.send_reply_failed",{code:String(h.code),msg:String(h.msg||"Unknown")}))}if(!p){s?.info(`[${o.accountId}] No valid session, attempting refresh with apiToken...`);let f=await X(o.accountId);if(f.success&&f.session){s?.info(`[${o.accountId}] Session refreshed, sending message...`),p=f.session.sid,u=f.session.cookie;let g=new O(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),h={"Cim.sid":p};for(let x of u.split(";")){let v=x.trim();if(v.includes("=")){let[k,b]=v.split("=",2);h[k.trim()]=b.trim()}}g.setCookies(h);let m=await g.postJson({func:"cim.msg:reply",sid:p,payload:{uid:n,content:l,type:l.length>Os?"post":"text"}});if(m.code==="S_OK"){let x=De(o,f.session),v=m.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully after refresh: msgId=${v}`),{msgId:v??`msg-${Date.now()}`,account:x}}throw s?.warn?.(`[${o.accountId}] Send failed after refresh: ${m.code}. Will retry later.`),new Error(r("api.send_reply_failed",{code:String(m.code),msg:String(m.msg||"Unknown")}))}throw s?.warn?.(`[${o.accountId}] Session refresh failed: ${f.error}. Will retry later.`),new Error(r("api.no_session"))}throw new Error(r("api.send_reply_failed",{code:"UNKNOWN",msg:"Unexpected state"}))}function hn(o,e){let{log:s}=e;return Ce.fromLunkrConfig(o.lunkrConfig.baseUrl,o.sid,o.cookie,{uid:o.selfUid,username:o.botName,autoReconnect:e.autoReconnect,eventCallbacks:{message:i=>{try{let a=Sa(i,s);if(a){let t=Us(a,o);e.onMessage(t)}}catch(a){e.onError(a instanceof Error?a:new Error(String(a)))}},reaction:i=>{if(e.onReaction&&i&&typeof i=="object"){let a=i;e.onReaction({msgId:String(a.msgId??""),userId:String(a.fromUid??""),emoji:String(a.emoji??"")})}},disconnect:()=>{e.onDisconnect()},error:i=>{let a=i&&typeof i=="object"&&"message"in i?String(i.message):"Unknown socket error";e.onError(new Error(a))}}})}function Sa(o,e){if(!o||typeof o!="object")return null;let s=o,n=s.topic||"",i=s.payload||"",a;try{a=JSON.parse(i)}catch{return null}if(!a.mid&&!a.subject)return null;let t=Object.keys(a),c=a.attachments;e?.debug?.(`[parseSocketMessage] MSG keys=[${t.join(", ")}], attachments=${JSON.stringify(c)?.substring(0,200)}`);let l=String(a.mid||""),p=a.from||{},u=a.to||{},d=String(p.uid||""),f=String(p.true_name||p.email||""),g=String(a.subject||"");try{g=decodeURIComponent(g.replace(/\+/g," "))}catch{}let h=String(a.type||a.group_type||"p2p"),m=String(a.uid||u.uid||""),x;m.endsWith("#U")?x="p2p":m.endsWith("#T")?x="group":x=h==="p2p"?"p2p":h==="topic"||h==="group"?"group":"channel";let v=a.attachments||[],k=v.map(w=>({fileId:String(w.fileId||""),uid:String(w.mbox_id||""),title:String(w.title||""),fileSize:Number(w.file_size||0),type:Number(w.t||0),ctype:w.ctype?String(w.ctype):void 0,inline:!!w.inline,duration:w.duration?Number(w.duration):void 0}));if(k.length===0){let w=Object.keys(a),P=w.some(q=>q.toLowerCase().includes("file")||q.toLowerCase().includes("att")||q.toLowerCase().includes("attach")||q.toLowerCase().includes("media")||q.toLowerCase().includes("image")||q.toLowerCase().includes("audio")),$=String(a.type||""),M=["file","image","audio","video","attachment"].some(q=>$.toLowerCase().includes(q));if(P||M){e?.info(`[parseSocketMessage] \u26A0\uFE0F No attachments parsed but message has file-related fields. type="${$}", keys=${w.join(", ")}`),e?.debug?.("[parseSocketMessage] No attachments found, but message might have file content"),e?.debug?.(`[parseSocketMessage] msg.type="${$}", msg keys: ${w.join(", ")}`);for(let q of w){let V=q.toLowerCase();if(V.includes("file")||V.includes("att")||V.includes("attach")||V.includes("media")||V.includes("image")||V.includes("audio")){let be=a[q];e?.debug?.(`[parseSocketMessage] Field "${q}": ${JSON.stringify(be).substring(0,500)}`)}}}}let b="text",_=k[0];if(_){let w=_.title?.split(".").pop()?.toLowerCase();w==="ilbc"?b="audio":["jpg","jpeg","png","gif","bmp","webp"].includes(w||"")?b="image":["mp4","mov","avi","mkv"].includes(w||"")?b="video":b="file"}let A=g;if(k.length>0){let w=[];for(let $ of k){let M=$.title?.split(".").pop()?.toLowerCase();M==="ilbc"?w.push(r("attachment.voice",{duration:$.duration||""})):["jpg","jpeg","png","gif","bmp","webp"].includes(M||"")?w.push(r("attachment.image",{title:$.title})):["mp4","mov","avi","mkv"].includes(M||"")?w.push(r("attachment.video",{title:$.title})):w.push(r("attachment.file",{title:$.title}))}let P=w.join(" ");g.trim()?A=`${g}
|
|
3
|
-
${P}`:A=P}k.length>0&&(e?.info(`[parseSocketMessage] Parsed ${k.length} attachment(s): ${k.map(w=>`${w.title}(uid=${w.uid})`).join(", ")}`),v[0]&&(e?.debug(`[parseSocketMessage] Raw attachment[0] keys: ${Object.keys(v[0]).join(", ")}`),e?.debug(`[parseSocketMessage] Raw attachment[0]: ${JSON.stringify(v[0])}`)));let y,S=a.at_uid;typeof S=="string"&&S&&(S==="all"?y=["all"]:S.includes(",")?y=S.split(",").map(w=>w.trim()).filter(Boolean):y=[S]);let F=y?y.length>0:!1;return{msgId:l,threadId:a.threadId?String(a.threadId):void 0,parentId:a.parentId?String(a.parentId):void 0,fromUid:d,fromName:f||void 0,toUid:String(u.uid||""),chatType:x,chatId:m||(x==="p2p"?d:""),content:A,contentType:b,timestamp:typeof a.time=="number"?a.time:Date.now(),mentioned:F,mentionedUids:y,attachments:k.length>0?k:void 0}}function _a(o){let{msg:e,account:s,sessionKey:n,accountId:i}=o,a=e.chatType!=="direct",t=a?`group:${e.peerId}`:e.senderId,c=a?"group":"direct",l=e.attachments?.[0],p;return l&&(e.contentType==="audio"?p="audio/ilbc":e.contentType==="image"?p=`image/${l.title?.split(".").pop()||"jpeg"}`:e.contentType==="video"?p=`video/${l.title?.split(".").pop()||"mp4"}`:p="application/octet-stream"),{Body:e.text,BodyForAgent:e.text,RawBody:e.text,CommandBody:e.text,From:a?`lunkr:group:${e.peerId}`:`lunkr:${e.senderId}`,To:`lunkr:${e.peerId}`,SessionKey:n,AccountId:i,ChatType:c,ConversationLabel:t,SenderName:void 0,SenderId:e.senderId,CommandAuthorized:!0,Provider:"lunkr",Surface:"lunkr",MessageSid:e.externalId,MediaPath:l?.fileId,MediaType:p,MediaUrl:void 0,Attachments:e.attachments,OriginatingChannel:"lunkr",OriginatingTo:`lunkr:${e.peerId}`}}var $s={startAccount:async o=>{let{account:e,abortSignal:s,log:n}=o,i=e;n?.info(`[${i.accountId}] Starting Lunkr gateway`);let a=!i.sid;if(i.sid&&(await new O(i.lunkrConfig.baseUrl).checkSessionValid(i.sid)||(n?.warn?.(`[${i.accountId}] Session invalid on startup, will refresh...`),a=!0)),a){n?.info(`[${i.accountId}] No valid session on startup, attempting refresh...`);let m=await X(i.accountId);m.success&&m.session?(i=De(i,m.session),n?.info(`[${i.accountId}] Session refreshed on startup`)):n?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${m.error}. Will retry when sending messages.`)}let t,c=3,l=5e3,p=12e4,u=0,d=0,f={onMessage:async m=>{if(!m.isBotMention)return;if(wa(m.externalId)){n?.debug?.(`[${i.accountId}] Skipping duplicate message: ${m.externalId}`);return}let x=m.chatType==="direct"?"DM":"Group";if(n?.info(`[${i.accountId}] [${x}:${m.peerId}] Received msg from ${m.senderId}: ${m.text?.substring(0,50)}...`),n?.debug?.(`[${i.accountId}] Attachments check: count=${m.attachments?.length||0}, contentType=${m.contentType}`),m.attachments&&m.attachments.length>0){let v=m.attachments.map(k=>{let b=k.title?.split(".").pop()?.toLowerCase();return b==="ilbc"?r("attachment.voice_short",{duration:k.duration||"?"}):["jpg","jpeg","png","gif","bmp","webp"].includes(b||"")?r("attachment.image_short",{title:k.title}):["mp4","mov","avi","mkv"].includes(b||"")?r("attachment.video_short",{title:k.title}):r("attachment.file_short",{title:k.title})}).join(", ");n?.info(`[${i.accountId}] [${x}:${m.peerId}] Attachments: ${v}`)}if(!o.channelRuntime){n?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let v=new Set,k=m.chatType!=="direct",b=o.channelRuntime.routing.buildAgentSessionKey({peerId:m.peerId,channelId:"lunkr-openclaw",accountId:o.accountId}),_=o.channelRuntime.routing.resolveAgentRoute({cfg:o.cfg,channel:"lunkr-openclaw",peer:{kind:k?"group":"direct",id:m.peerId},accountId:o.accountId,agentId:m.agentId}),A=_a({msg:m,account:i,sessionKey:_.sessionKey,accountId:_.accountId}),S=o.cfg.session?.store;S&&await o.channelRuntime.session.recordInboundSession({storePath:S,sessionKey:A.SessionKey,ctx:A,onRecordError:F=>{n?.error?.(`[${i.accountId}] Failed to record session: ${String(F)}`)}}),await o.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:A,cfg:o.cfg,dispatcherOptions:{deliver:async(F,w)=>{let P=F.text??"";if(P.trim()){if(w.kind==="block"){n?.debug?.(`[${i.accountId}] Skipping block chunk (waiting for final)`);return}if(w.kind==="final"&&v.has(P)){n?.debug?.(`[${i.accountId}] Skipping duplicate final reply`);return}w.kind==="final"&&v.add(P),n?.info(`[${i.accountId}] Deliver ${w.kind} reply to ${m.peerId}: ${P.substring(0,50)}...`);try{let $=await Ca(i,{to:m.peerId,chatType:m.chatType,text:P},n);$.account!==i&&(i=$.account,n?.info(`[${i.accountId}] Session updated after refresh`))}catch($){n?.error?.(`[${i.accountId}] Failed to send reply: ${$ instanceof Error?$.message:String($)}`)}}},onError:(F,w)=>{n?.error?.(`[${i.accountId}] AI ${w.kind} failed: ${String(F)}`)}}})}catch(v){n?.error?.(`[${i.accountId}] Message dispatch error: ${v instanceof Error?v.message:String(v)}`)}},onReaction:m=>{n?.debug(`[${i.accountId}] Received reaction: ${m.emoji} on ${m.msgId}`)},onError:m=>{n?.error(`[${i.accountId}] Socket error: ${m.message}`)},onDisconnect:async()=>{if(n?.info(`[${i.accountId}] Socket disconnected`),re.delete(i.accountId),s.aborted)return;u++;let m=Math.min(l*Math.pow(2,u-1),p);if(n?.warn?.(`[${i.accountId}] Reconnect attempt ${u}, delay ${m/1e3}s...`),await new Promise(k=>setTimeout(k,m)),s.aborted)return;let x=await X(i.accountId);if(x.success&&x.session){if(i=De(i,x.session),n?.info(`[${i.accountId}] Session refreshed, reconnecting...`),g=hn(i,f),await g.connect()){n?.info(`[${i.accountId}] Reconnected with refreshed session`),u=0,d=0,t.socket=g,re.set(i.accountId,t);return}n?.warn?.(`[${i.accountId}] Reconnect with refreshed session failed`)}else{let k=x.reason||"rejected";if(n?.warn?.(`[${i.accountId}] Session refresh failed (${k}): ${x.error}`),k==="no_credentials"){n?.error?.(`[${i.accountId}] Missing credentials \u2014 giving up reconnect. Fix config and restart.`);return}if(k==="rejected"&&(d++,d>=c)){n?.error?.(`[${i.accountId}] Server rejected ${d} consecutive refreshes \u2014 giving up. Check apiToken and restart.`);return}}if(s.aborted)return;g=hn(i,f),await g.connect()?(n?.info(`[${i.accountId}] Reconnected with existing session`),u=0,d=0,t.socket=g,re.set(i.accountId,t)):(n?.warn?.(`[${i.accountId}] Reconnect attempt ${u} failed, will retry on next disconnect`),s.aborted||f.onDisconnect())},log:n,autoReconnect:!1},g=hn(i,f),h=await g.connect();if(!h){n?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let m=await X(i.accountId);m.success&&m.session&&(i=De(i,m.session),n?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),g=hn(i,f),h=await g.connect())}if(!h)throw new Error(r("api.socket_connect_failed",{accountId:i.accountId}));return n?.info(`[${i.accountId}] Lunkr gateway connected`),t={socket:g,connected:!0,startedAt:Date.now()},re.set(i.accountId,t),s.addEventListener("abort",()=>{n?.info(`[${i.accountId}] Stopping Lunkr gateway`),g.disconnect(),re.delete(i.accountId)}),new Promise(m=>{let x=()=>{s.removeEventListener("abort",v),m(t)},v=()=>{n?.info(`[${i.accountId}] Gateway abort signal received`),x()};s.addEventListener("abort",v),g.onDisconnect(()=>{n?.info(`[${e.accountId}] Socket disconnected`),re.delete(e.accountId),x()})})},stopAccount:async o=>{let{account:e,log:s}=o;s?.info(`[${e.accountId}] Stopping Lunkr gateway`);let n=re.get(e.accountId);n&&(n.socket.disconnect(),re.delete(e.accountId))},logoutAccount:async o=>{let{account:e,log:s}=o;s?.info(`[${e.accountId}] Logging out Lunkr account`);let n=re.get(e.accountId);return n&&(n.socket.disconnect(),re.delete(e.accountId)),{cleared:!0,loggedOut:!0}}};Je();j();async function Fs(o,e=5e3){let s=Date.now();if(!o)return{ok:!1,error:r("errors.account_not_configured"),elapsedMs:Date.now()-s};if(!o.sid||!o.lunkrConfig){if(o.hasApiToken){let n=await X(o.accountId);if(n.success&&n.session){let i={...o,sid:n.session.sid,lunkrConfig:n.session};return Fs(i,e)}}return{ok:!1,error:r("errors.session_not_configured"),elapsedMs:Date.now()-s}}try{let n=new O(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath,timeout:e/1e3}),i={"Cim.sid":o.sid};for(let t of o.cookie.split(";")){let c=t.trim();if(c.includes("=")){let[l,p]=c.split("=",2);i[l.trim()]=p.trim()}}n.setCookies(i);let a=await n.checkSessionValid(o.sid);return{ok:a,sessionValid:a,elapsedMs:Date.now()-s}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n),elapsedMs:Date.now()-s}}}function Aa(o){let e=[];for(let s of o){let n=s.accountId??se;s.configured===!1&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"config",message:r("status.session_not_configured_fix"),fix:r("status.run_login")}),s.lastError&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"runtime",message:r("status.channel_error",{error:s.lastError})});let i=s.probe;i&&!i.ok&&i.sessionValid===!1&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"auth",message:r("errors.session_expired"),fix:r("status.run_login_refresh")})}return e}function La(o){return No({configured:o.snapshot.configured,running:o.snapshot.running,lastStartAt:o.snapshot.lastStartAt,lastStopAt:o.snapshot.lastStopAt,lastError:o.snapshot.lastError,probe:o.snapshot.probe,lastProbeAt:o.snapshot.lastProbeAt,tokenSource:o.snapshot.configured?"session":null})}function Ra(o){let{account:e,runtime:s,probe:n}=o,i=!!((e.sid||e.hasApiToken)&&e.selfUid);return Go({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:s,probe:n})}var qs={defaultRuntime:{accountId:se,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:Aa,buildChannelSummary:({snapshot:o})=>La({snapshot:o}),probeAccount:async({account:o,timeoutMs:e})=>Fs(o??null,e??5e3),buildAccountSnapshot:({account:o,runtime:e,probe:s})=>Ra({account:o,runtime:e,probe:s}),logSelfId:({account:o,includeChannelPrefix:e})=>{console.log(`Self ID: ${e?"lunkr:":""}${o.selfUid}`)},resolveAccountState:({configured:o,enabled:e})=>o?e?"configured":"disabled":"not configured"};j();async function He(o,e){let s=H(o,e);if(!s)throw new Error(r("errors.account_not_configured"));let n=new O(s.lunkrConfig.baseUrl,{apiPath:s.lunkrConfig.apiPath}),i={"Cim.sid":s.sid};for(let a of s.cookie.split(";")){let t=a.trim();if(t.includes("=")){let[c,l]=t.split("=",2);i[c.trim()]=l.trim()}}return n.setCookies(i),{client:n,account:s}}function Hn(o){return{kind:"user",id:`lunkr:${o.uid}`,name:o.name??o.uid,email:o.email,avatarUrl:o.avatar}}function Ts(o){return{kind:o.type==="channel"?"channel":"group",id:`lunkr:discussion:${o.gid}`,name:o.name??o.gid,avatarUrl:o.avatar}}async function Es(o,e,s,n){let i=await o.postJson({func:"cim.contacts:search",sid:e,query:{keyword:s,limit:n}});return i.code!=="S_OK"?[]:i.var?.users??[]}async function Ds(o,e){let s=await o.postJson({func:"cim.discussion:list",sid:e});if(s.code!=="S_OK")return[];let n=s.var?.discussions;return n?n.map(i=>({gid:String(i.id??i.gid??""),name:i.name?String(i.name):void 0,memberCount:typeof i.memberCount=="number"?i.memberCount:void 0,avatar:i.avatar?String(i.avatar):void 0,type:i.type??"group"})):[]}async function ja(o,e,s,n){let i=await o.postJson({func:"cim.discussion:getMembers",sid:e,query:{gid:s,limit:n}});if(i.code!=="S_OK")return[];let a=i.var?.members;return a?a.map(t=>({uid:String(t.uid??""),name:t.name?String(t.name):void 0,email:t.email?String(t.email):void 0,avatar:t.avatar?String(t.avatar):void 0,department:t.department?String(t.department):void 0})):[]}var Gs={self:async({cfg:o,accountId:e})=>{let s=H(o,e);return s?.selfUid?{kind:"user",id:`lunkr:${s.selfUid}`,name:s.name??s.selfUid}:null},listPeers:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=s?.trim()??"",c=n&&n>0?n:20;return t?(await Es(i,a.sid,t,c)).map(Hn):[]},listPeersLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=s?.trim()??"",c=n&&n>0?n:20;return t?(await Es(i,a.sid,t,c)).map(Hn):[]},listGroups:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=await Ds(i,a.sid),c=t;if(s){let l=s.toLowerCase();c=t.filter(p=>p.name?.toLowerCase().includes(l)||p.gid.toLowerCase().includes(l))}return n&&n>0&&(c=c.slice(0,n)),c.map(Ts)},listGroupsLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=await Ds(i,a.sid),c=t;if(s){let l=s.toLowerCase();c=t.filter(p=>p.name?.toLowerCase().includes(l)||p.gid.toLowerCase().includes(l))}return n&&n>0&&(c=c.slice(0,n)),c.map(Ts)},listGroupMembers:async({cfg:o,accountId:e,groupId:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=s.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");return(await ja(i,a.sid,t,n??100)).map(Hn)}};function Ns(o){let{cfg:e,accountId:s,groupId:n}=o,i=H(e,s);if(!i||!n)return!1;let a=n.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[a])return!1;let t=i.config.groups??[];return t.includes(a)||t.includes("*"),!0}function Ia(o){let{cfg:e,accountId:s,groupId:n}=o,i=H(e,s);if(!i||!n)return;let a=n.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[a])return"Bot discussion - all messages will trigger the bot";let t=i.config.groups??[];if(t.includes(a)||t.includes("*"))return Ns({cfg:e,accountId:s,groupId:n})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function Ua(o){let{cfg:e,accountId:s,groupId:n}=o;H(e,s)}var Ms={resolveRequireMention:Ns,resolveGroupIntroHint:Ia,resolveToolPolicy:Ua};j();var Pa={id:"lunkr-openclaw",label:"Lunkr",get selectionLabel(){return r("meta.selection_label")},get detailLabel(){return r("meta.detail_label")},docsPath:"/channels/lunkr",docsLabel:"lunkr",get blurb(){return r("meta.blurb")}},Qn={id:"lunkr-openclaw",meta:{...Pa,quickstartAllowFrom:!0},capabilities:{chatTypes:["direct","group"],polls:!1,reactions:!0,edit:!0,unsend:!0,reply:!0,effects:!1,groupManagement:!1,threads:!1,media:!0,nativeCommands:!1,blockStreaming:!0},reload:{configPrefixes:["channels.lunkr-openclaw"]},configSchema:Do(Ln),config:Xo,security:Zo,group:Ms,messaging:{normalizeTarget:o=>{let e=o.trim();if(e)return e.replace(/^lunkr:(?:discussion:)?/i,"")},targetResolver:{looksLikeId:o=>{let e=o?.trim();return e?/^#[0-9]+#[UT]$/.test(e)||/^[a-zA-Z0-9_-]+$/.test(e)||/^lunkr:/i.test(e):!1},hint:"<uid|gid>"}},directory:Gs,outbound:Ls,status:qs,gateway:$s,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:o=>o.replace(/^lunkr:/i,"")}};ue();var Oa=null;function $a(o){let e={...o,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return Oa=e,e}function Bs(o){$a(o)}vn();import*as oo from"readline";import*as Hs from"readline";j();var no=class extends Error{constructor(s,n,i){super(s);this.sid=n;this.authType=i;this.name="OtpRequiredError"}};var Zn="https://lunkr.coremail.cn",eo="/lunkr/s/json",Kc=300*1e3;function Qs(o){let e={};for(let s of o.split(";")){let[n,i]=s.trim().split("=");n&&i&&(e[n]=i)}return e}async function Xs(o,e){try{let s=e?.verbose??!1,n=e?.debug??!1;(s||n)&&console.log(`Discovering server for: ${o.email}`);let[i,a]=await ze.discoverAvailableServer(o.email);(s||n)&&(console.log(`Found server: ${i.apiUrl}`),console.log(`Auth type: ${a.authType}`),console.log(`RSA sid: ${a.sid}`));let t=new O(i.baseUrl,{apiPath:i.apiPath}),c=Dn({device_uuid:e?.deviceUuid||o.deviceUuid,device_name:e?.deviceName||o.deviceName});return n&&console.log(`Device info: ${JSON.stringify(c,null,2)}`),{success:!0,session:await qa(t,o.email,o.password,a,c,i,s,n)}}catch(s){return s instanceof no?{success:!1,requiresOtp:!0,otpSid:s.sid,error:s.message}:{success:!1,error:s instanceof Error?s.message:String(s)}}}async function qa(o,e,s,n,i,a,t,c=!1){let l={type:n.authType,e:n.rsaE,n:n.rsaN},p=l.type;c&&(console.log(`[Login] authType: ${p}`),console.log(`[Login] RSA e: ${l.e?l.e.substring(0,20)+"...":"(empty)"}`),console.log(`[Login] RSA n: ${l.n?l.n.substring(0,40)+"...":"(empty)"}`));let u;p&&p.toLowerCase()==="rsa"&&l?.e&&l?.n?((t||c)&&console.log("Encrypting password with RSA"),u=jn(s,l.e,l.n),c&&console.log(`[Login] Encrypted password length: ${u.length}`)):(c&&console.log(`[Login] WARNING: Password NOT encrypted (authType=${p})`),u=s);let d=Math.floor(Date.now()/1e3).toString(),f=Gn(i.uuid,e,i.friendlyName),g=Nn(f),h=Mn(f,d,g,"");c&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${f.substring(0,20)}...`),console.log(`[Login] signature: ${h.substring(0,20)}...`));let m={uid:e,password:u,authType:p,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:f,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(c){let y={...m},S=String(y.password||"");y.password=S.length>10?S.substring(0,20)+`...(length: ${S.length})`:"***",console.log(`[Login] Payload: ${JSON.stringify(y,null,2)}`)}let x=await o.postJson({func:"user:login",sid:n.sid,payload:m,debug:c||t});c&&console.log(`[Login] Response: ${JSON.stringify(x,null,2)}`);let v=x.code,k=x.var||{};if(v==="FA_NEED_VERIFY_CODE"||v==="FA_USER_IN_GRAYLIST"){let y=a.uri||`${a.baseUrl}/coremail/`;throw new U(r("auth.captcha_required",{code:v,uri:y}))}if(v==="FA_NEED_DYNAMIC_PWD"){console.log(`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`:case"\r":case"":a.setRawMode(!1),a.pause(),a.removeListener("data",t),process.stdout.write(`
|
|
8
|
-
`)
|
|
9
|
-
`),process.exit(1);break;case"\x7F":case"\b":i.length>0&&(i=i.slice(0,-1),process.stdout.clearLine(0),process.stdout.cursorTo(0),process.stdout.write(o+"*".repeat(i.length)));break;default:l.charCodeAt(0)>=32&&(i+=l,process.stdout.write("*"));break}};a.on("data",t)}else if(e){process.stdout.write(o.replace("Password:","Password (visible): "));let i=oo.createInterface({input:process.stdin,output:process.stdout});i.question("",a=>{i.close(),s(a.trim())})}else{let i=oo.createInterface({input:process.stdin,output:process.stdout});i.question(o,a=>{i.close(),s(a.trim())})}})}async function Qe(o,e){let s=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Login (Password)"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(s?" Mode: Temporary (api_token will NOT be saved)":" Mode: Persistent (api_token will be saved)"),console.log("");let n=e.email;n||(n=process.env.LUNKR_EMAIL||process.env.LUNKR_USERNAME),n||(n=await Zs("Email: ")),n||(console.error(r("errors.email_required")),process.exit(1));let i=e.password;i||(i=process.env.LUNKR_PASSWORD),i||(i=await Zs(r("login.password_prompt"),!0)),i||(console.error(r("errors.password_required")),process.exit(1)),console.log(""),console.log(r("messages.authenticating"));let a=e.verbose??!1,t=e.debug??!1,c=R(),l={email:n,password:i,deviceUuid:c.device_uuid,deviceName:c.device_name};try{let p=await Xs(l,{deviceUuid:c.device_uuid,deviceName:c.device_name,verbose:a,debug:t});p.success||(console.error(r("login.login_failed",{error:p.error})),process.exit(1)),p.session||(console.error(r("login.login_success_no_session")),process.exit(1));let u=Qs(p.session.cookie);console.log(""),console.log(r("messages.getting_token"));try{await Ys({email:n,sid:p.session.sid,cookie:p.session.cookie,emailForAccountId:n,baseUrl:p.session.baseUrl,apiPath:p.session.apiPath,deviceUuid:c.device_uuid,cookies:u,temp:s,debug:t})}catch(d){let f=d instanceof Error?d.message:String(d);console.warn(r("login.token_login_failed_warn",{error:f})),console.log(r("login.session_saved_without_token"));let g={accountId:n,email:n,enabled:!0,session:p.session},h=c.accounts?.findIndex(m=>m.accountId===n)??-1;h>=0&&c.accounts?c.accounts[h]=g:(c.accounts||(c.accounts=[]),c.accounts.push(g)),E(c)}console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("messages.login_successful")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(r("login.result_email",{email:n})),console.log(r("login.result_uid",{uid:p.session.selfUid})),console.log(r("login.result_server",{server:p.session.baseUrl})),console.log(s?` ${r("labels.mode")}: ${r("messages.mode_temporary")}`:` ${r("labels.mode")}: ${r("messages.mode_persistent")}`),console.log(""),console.log(` ${r("messages.config_saved_to",{path:W()})}`),console.log("")}catch(p){let u=p instanceof Error?p.message:String(p);console.error(r("login.login_failed",{error:u})),process.exit(1)}}D();j();async function so(o,e){if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("login.logout_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),e.all){let n=Te(),i=await import("fs");i.existsSync(n)?(i.rmSync(n,{recursive:!0,force:!0}),console.log(r("messages.session_data_removed")),console.log(` ${r("messages.deleted",{path:n})}`)):console.log(r("messages.session_data_not_found")),console.log("");return}let s=R();if(!s.accounts||s.accounts.length===0){console.log(r("messages.session_not_found_logged_out")),console.log("");return}try{if(e.email){let n=s.accounts.findIndex(i=>i.accountId===e.email||i.session?.selfUid===e.email||i.email===e.email);if(n>=0){let i=s.accounts.splice(n,1)[0];E(s),console.log(r("messages.logged_out_with",{account:i.accountId||e.email}))}else console.log(r("errors.account_not_found_with_id",{accountId:e.email}))}else s.accounts=[],E(s),console.log(r("messages.logged_out_all")),console.log(` ${r("messages.config_preserved",{path:W()})}`)}catch(n){let i=n instanceof Error?n.message:String(n);console.error(r("login.logout_failed",{error:i})),process.exit(1)}console.log("")}Oe();ue();_e();j();var Z=12;async function io(o,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Status"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let s=R();if(!s.accounts||s.accounts.length===0){console.log(r("status.not_logged_in")),console.log(""),console.log(r("status.login_hint")),console.log("");return}for(let n of s.accounts){let i=n.session,a=n.role||"standard";if(console.log(` ${I(r("labels.email")+":",Z)} ${n.email||n.accountId}`),console.log(` ${I(r("agent.list_role")+":",Z)} ${a}`),console.log(` ${I(r("labels.bot")+":",Z)} ${z(s)}`),console.log(` ${I("UID:",Z)} ${i?.selfUid||"N/A"}`),console.log(` ${I(r("labels.mode")+":",Z)} ${n.enabled?r("messages.mode_persistent"):r("messages.mode_temporary")}`),console.log(` ${I(r("labels.server")+":",Z)} ${i?.baseUrl||"N/A"}`),n.agentId&&console.log(` ${I(r("agent.list_agent_id")+":",Z)} ${n.agentId}`),i?.senderName&&console.log(` ${I(r("labels.name")+":",Z)} ${i.senderName}`),i&&n.enabled)try{let t=oe.fromConfig(n.accountId);if(t){let c=await t.checkSession();if(console.log(` ${I(r("agent.list_session")+":",Z)} ${c?"\u2713 "+r("agent.list_session_valid"):"\u2717 "+r("agent.list_session_expired")}`),e.verbose){let l=await t.fetchSenderName();l&&console.log(` ${I(r("labels.name")+":",Z)} ${l}`)}}}catch(t){console.log(` ${I(r("agent.list_session")+":",Z)} \u2717 ${r("api.send_failed",{code:t instanceof Error?t.message:"unknown"})}`)}console.log("")}console.log(` ${I(r("labels.config")+":",Z)} ${W()}`),console.log("")}D();j();async function ao(o,e){let s=e.keyword;s||(console.error(r("errors.keyword_required")),process.exit(1));let n=e.limit||20,i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(r("messages.searching_groups",{keyword:s})),console.log("");try{let t=await i.searchGroups(s,n);if(t.length===0){console.log(r("messages.no_groups_found")),console.log("");return}console.log(r("messages.found_groups",{count:t.length})),console.log("");for(let c=0;c<t.length;c++){let l=t[c],p=c+1;if(console.log(` ${p}. ${l.name||l.trueName||"Unnamed"}`),console.log(` ${r("labels.uid")}: ${l.uid}`),l.email&&console.log(` ${r("labels.email")}: ${l.email}`),l.description){let u=l.description.length>60?l.description.substring(0,57)+"...":l.description;console.log(` Desc: ${u}`)}console.log("")}}catch(t){let c=t instanceof Error?t.message:String(t);console.error(r("api.search_failed",{error:c})),process.exit(1)}}D();j();async function to(o,e){let s=e.keyword;s||(console.error(r("errors.keyword_required")),process.exit(1));let n=e.limit||20,i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(r("messages.searching_contacts",{keyword:s})),console.log("");try{let t=await i.searchContacts(s,n);if(t.length===0){console.log(r("messages.no_contacts_found")),console.log("");return}console.log(r("messages.found_contacts",{count:t.length})),console.log("");for(let c=0;c<t.length;c++){let l=t[c],p=c+1;console.log(` ${p}. ${l.trueName||l.name||"Unnamed"}`),console.log(` ${r("labels.uid")}: ${l.uid}`),l.email&&console.log(` ${r("labels.email")}: ${l.email}`),console.log("")}}catch(t){let c=t instanceof Error?t.message:String(t);console.error(r("api.search_failed",{error:c})),process.exit(1)}}D();j();function Da(o,e){return e?o.filter(s=>s.senderUid===e):o}async function ro(o,e){let s=e.to;s||(console.error(r("errors.recipient_required")),process.exit(1));let n=e.limit||20,i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(r("messages.listing_messages_with",{name:s})),console.log("");try{let t=await i.resolveRecipient(s);console.log(`${r("labels.conversation")}: ${t.name} (${t.type})`),console.log("");let c=await i.listMessages(t,{limit:n,latestFirst:!0});if(e.sender&&(c=Da(c,e.sender),console.log(r("messages.filter_by_sender",{sender:e.sender,count:c.length})),console.log("")),c.length===0){console.log(r("messages.no_messages_found")),console.log("");return}if(e.json){console.log(JSON.stringify({success:!0,data:{chat:{uid:t.uid,name:t.name,type:t.type},messages:c.map(l=>({mid:l.mid,time:l.time,subject:l.subject,sender_uid:l.senderUid,sender_name:l.senderName,sender_email:l.senderEmail,attachments:l.attachments}))}},null,2));return}console.log(r("messages.recent_messages",{count:c.length})),console.log("");for(let l of c){let p=l.senderName||l.senderEmail||l.senderUid||r("labels.unknown");if(console.log(` \u250C\u2500 ${p} @ ${l.time||"N/A"}`),l.subject){let u=l.subject.length>200?l.subject.substring(0,197)+"...":l.subject;console.log(` \u2502 ${u.replace(/\n/g,`
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
\u{1F194} ${r("create.discussion_id")}: ${e}
|
|
16
|
-
${n.agentId?`\u{1F916} ${r("create.linked_agent")}: ${n.agentId}
|
|
17
|
-
`:""}\u{1F4A1} ${r("create.instructions")}:
|
|
18
|
-
|
|
19
|
-
\
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`);for(let[l,p]of c)console.log(` ${p.name}`),console.log(` GID: ${l}`),p.agentId&&console.log(` Agent: ${p.agentId}`),console.log("")}var oi={name:"bot-list",description:"List all configured bot discussions",options:[{name:"json",alias:"j",description:"Output as JSON",type:"boolean",required:!1}]};D();j();import*as ii from"readline";function si(o,e=!0){return new Promise(s=>{let n=ii.createInterface({input:process.stdin,output:process.stdout});n.question(o,i=>{n.close();let a=i.trim().toLowerCase();s(e?a==="y"||a==="yes":a!=="n"&&a!=="no")})})}async function yn(o,e){let{name:s,gid:n}=e;if(!s&&!n)throw new Error(r("bot_delete.name_or_gid_required"));let i=T();if(!await i.checkSession())throw new Error(r("errors.session_expired_login"));let c=await o.runtime.config.loadConfig(),l=c.channels||{},p=l["lunkr-openclaw"]||{},u=p.botDiscussions||{},d,f;if(n)d=n,f=u[n];else if(s){for(let[m,x]of Object.entries(u))if(x.name===s.trim()){d=m,f=x;break}}if(!d||!f){console.log(r("bot_delete.not_found"));return}if(console.log(""),console.log(r("bot_delete.found",{name:f.name,gid:d})),!e.yes&&!await si(r("bot_delete.confirm")+" ")){console.log(r("bot_delete.cancelled"));return}let g=!1;if(e.yes||(g=await si(r("bot_delete.dissolve_prompt")+" ")),g){console.log(r("bot_delete.deleting_from_server",{name:f.name}));try{await i.deleteGroup(d),console.log(" "+r("bot_delete.deleted_from_server"))}catch(m){console.warn(" \u26A0\uFE0F "+r("bot_delete.delete_from_server_failed",{error:m instanceof Error?m.message:String(m)}))}}delete u[d];let h={...c,channels:{...l,"lunkr-openclaw":{...p,botDiscussions:u}}};await o.runtime.config.writeConfigFile(h),console.log(r("bot_delete.removed_from_config",{name:f.name})),console.log(` GID: ${d}`),g||(console.log(""),console.log(r("bot_delete.reuse_hint"))),console.log(""),console.log(r("create.config_auto_reload"))}var ai={name:"bot-delete",description:"Delete a Bot discussion from server and configuration",arguments:[{name:"name",description:"Name of the bot discussion to remove",required:!1}],options:[{name:"gid",alias:"g",description:"GID of the bot discussion to remove",type:"string",required:!1},{name:"yes",alias:"y",description:"Skip confirmation prompt",type:"boolean",required:!1}]};D();j();j();import{homedir as go}from"os";import{join as xo}from"path";import{existsSync as ti,rmSync as ri}from"fs";async function ho(o,e){let{purge:s=!1}=e,n="lunkr-openclaw",i="lunkr-openclaw",a="lunkr";console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("uninstall.uninstalling")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(r("uninstall.step1"));try{let c=await o.runtime.config.loadConfig(),l=!1,p=c.plugins||{},u=p.allow||[],d=u.filter(y=>y!==n);d.length<u.length?(p.allow=d,l=!0,console.log(` \u2713 ${r("uninstall.removed_plugin_allow",{id:n})}`)):console.log(` \u2139 ${r("uninstall.plugin_allow_not_found",{id:n})}`);let f=p.entries||{};f[n]?(delete f[n],p.entries=f,l=!0,console.log(` \u2713 ${r("uninstall.removed_plugin_entry",{id:n})}`)):console.log(` \u2139 ${r("uninstall.plugin_entry_not_found",{id:n})}`),c.plugins=p;let g=c.tools||{},h=g.alsoAllow||[],m=h.filter(y=>y!==i);m.length<h.length?(g.alsoAllow=m,l=!0,console.log(` \u2713 ${r("uninstall.removed_tool",{name:i})}`)):console.log(` \u2139 ${r("uninstall.tool_not_found",{name:i})}`),c.tools=g;let x=c.skills||{},v=x.entries||{};v[a]?(delete v[a],x.entries=v,l=!0,console.log(` \u2713 ${r("uninstall.removed_skill_entry",{name:a})}`)):console.log(` \u2139 ${r("uninstall.skill_entry_not_found",{name:a})}`);let k=x.load||{},b=k.extraDirs||[],_=b.filter(y=>!y.includes(`/${n}/skills`)&&!y.includes(`/${a}/skills`));_.length<b.length?(k.extraDirs=_,x.load=k,l=!0,console.log(` \u2713 ${r("uninstall.removed_skill_dir")}`)):console.log(` \u2139 ${r("uninstall.skill_dir_not_found")}`),c.skills=x;let A=c.channels||{};A[n]?(delete A[n],c.channels=A,l=!0,console.log(` \u2713 ${r("uninstall.removed_channel",{id:n})}`)):console.log(` \u2139 ${r("uninstall.channel_not_found",{id:n})}`),l&&await o.runtime.config.writeConfigFile(c)}catch(t){console.log(` \u26A0 ${r("uninstall.update_config_failed")}`,t instanceof Error?t.message:String(t))}if(s){console.log(""),console.log(r("uninstall.step2"));let t=xo(go(),".lunkr");if(ti(t))try{ri(t,{recursive:!0,force:!0}),console.log(` \u2713 ${r("uninstall.removed_session",{path:t})}`)}catch(l){console.log(` \u26A0 ${r("uninstall.remove_session_failed")}`,l instanceof Error?l.message:String(l))}else console.log(` \u2139 ${r("uninstall.not_found_dir",{path:t})}`);let c=xo(go(),".lunkr-mcp");if(ti(c))try{ri(c,{recursive:!0,force:!0}),console.log(` \u2713 ${r("uninstall.removed_legacy",{path:c})}`)}catch(l){console.log(` \u26A0 ${r("uninstall.remove_legacy_failed")}`,l instanceof Error?l.message:String(l))}}else console.log(""),console.log(r("uninstall.step2_skip")),console.log(` ${r("uninstall.session_location",{path:xo(go(),".lunkr")})}`);console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("uninstall.done")}`),console.log(""),console.log(` ${r("uninstall.purge_hint")}`),console.log(" openclaw plugins uninstall lunkr-openclaw"),console.log(""),console.log(` ${r("uninstall.reinstall")}`),console.log(" openclaw lunkr setup"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}j();async function vo(o,e){let s=e.name||"lunkr-openclaw",i=await o.runtime.config.loadConfig(),a=i.tools||{},t=a.alsoAllow||[];if(t.includes(s)){console.log(r("tools.already_installed",{name:s}));return}let c={...i,tools:{...a,alsoAllow:[...t,s]}};await o.runtime.config.writeConfigFile(c),console.log(r("tools.install_success",{name:s})),console.log(r("tools.restart_session"))}j();async function bo(o,e){let s=e.name||"lunkr-openclaw",i=await o.runtime.config.loadConfig(),a=i.tools||{},t=a.alsoAllow||[];if(!t.includes(s)){console.log(r("tools.not_installed",{name:s}));return}let c={...i,tools:{...a,alsoAllow:t.filter(l=>l!==s)}};await o.runtime.config.writeConfigFile(c),console.log(r("tools.uninstall_success",{name:s})),console.log(r("tools.restart_session"))}j();import ci from"node:path";async function ko(o,e){let s=e.name||"lunkr",n="lunkr-openclaw",a=await o.runtime.config.loadConfig(),t=a.plugins||{},c=t.entries||{},l=c[n]||{},p=a.skills||{},u=p.entries||{},d=u[s]||{},f=p.load||{},g=f.extraDirs||[],h=ci.join(ci.dirname(o.source),"skills"),m=l.enabled===!0&&d.enabled===!0,x=g.includes(h);if(m&&x){console.log(r("skills.already_installed",{name:s}));return}let v=x?g:[...g.filter(b=>!b.includes(`/${s}/skills`)),h],k={...a,plugins:{...t,entries:{...c,[n]:{...l,enabled:!0}}},skills:{...p,load:{...f,extraDirs:v},entries:{...u,[s]:{...d,enabled:!0}}}};await o.runtime.config.writeConfigFile(k),console.log(r("skills.install_success",{name:s})),console.log(r("skills.directory",{path:h})),console.log(r("skills.restart_session"))}j();import li from"node:path";async function yo(o,e){let s=e.name||"lunkr",i=await o.runtime.config.loadConfig(),a=i.skills||{},t=a.entries||{},c=t[s]||{};if(!c.enabled){console.log(r("skills.not_installed",{name:s}));return}let l=a.load||{},p=l.extraDirs||[],u=li.join(li.dirname(o.source),"skills"),d=p.filter(g=>g!==u),f={...i,skills:{...a,load:{...l,extraDirs:d.length>0?d:void 0},entries:{...t,[s]:{...c,enabled:!1}}}};d.length===0&&delete f.skills.load,await o.runtime.config.writeConfigFile(f),console.log(r("skills.uninstall_success",{name:s})),console.log(r("skills.restart_session"))}ue();Oe();vn();j();import pi from"node:path";import*as di from"readline";function Ba(o){return new Promise(e=>{let s=di.createInterface({input:process.stdin,output:process.stdout});s.question(o,n=>{s.close();let i=n.trim().toLowerCase();e(i==="y"||i==="yes")})})}function za(o,e=" "){for(let s of o.split(`
|
|
24
|
-
`))console.log(s?e+s:"")}async function wo(o,e){let s="lunkr-openclaw",n="lunkr-openclaw",i="lunkr";if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("setup.title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),!e.yes){if(console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),za(r("setup.disclaimer")),console.log(""),!await Ba(r("setup.confirm_continue"))){console.log(` ${r("setup.cancelled")}`),console.log("");return}console.log("")}let t=await o.runtime.config.loadConfig(),c=!1,l=t.plugins||{},p=l.allow||[];if(p.includes(s))console.log(` \u2713 ${r("setup.plugin_already_registered",{id:s})}`);else{let P=[...p,s];t.plugins={...l,allow:P},c=!0,console.log(` \u2713 ${r("setup.plugin_registered",{id:s})}`)}let u=t.tools||{},d=u.alsoAllow||[];d.includes(n)?console.log(` \u2713 ${r("setup.tool_already_registered",{name:n})}`):(t.tools={...u,alsoAllow:[...d,n]},c=!0,console.log(` \u2713 ${r("setup.tool_registered",{name:n})}`));let g=(t.plugins||{}).entries||{},h=g[s]||{},m=t.skills||{},x=m.entries||{},v=x[i]||{},k=m.load||{},b=k.extraDirs||[],_=pi.join(pi.dirname(o.source),"skills"),A=h.enabled===!0,y=v.enabled===!0,S=b.includes(_);if(A&&y&&S)console.log(` \u2713 ${r("setup.skill_already_registered",{name:i})}`);else{let P=S?b:[...b.filter($=>!$.includes(`/${i}/skills`)),_];t.plugins={...t.plugins,entries:{...g,[s]:{...h,enabled:!0}}},t.skills={...m,load:{...k,extraDirs:P},entries:{...x,[i]:{...v,enabled:!0}}},c=!0,console.log(` \u2713 ${r("setup.skill_registered",{name:i})}`)}if(c&&(await o.runtime.config.writeConfigFile(t),console.log(""),console.log(` ${r("setup.config_updated")}`)),console.log(""),e.skipLogin){console.log(` \u23ED ${r("setup.skip_login")}`),console.log("");return}let w=R().accounts?.[0];if(w?.session?.sid)try{let P=oe.fromConfig(w.accountId);if(P&&await P.checkSession()){let M=w.session.senderName||w.email||w.accountId;console.log(` \u2713 ${r("setup.already_logged_in",{name:M})}`),ui();return}}catch{}console.log(` ${r("setup.start_login")}`),await $e(o,{}),ui()}function ui(){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("setup.done_title")}`),console.log(""),console.log(` ${r("setup.done_gateway_cmd")}`),console.log(""),console.log(` ${r("setup.done_rename_hint")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}D();j();async function Co(o,e){let s=e.trim()||"Bot",n=z(),i=Fn(s);E(i),console.log(""),console.log(r("rename.bot_name_changed",{oldName:n,name:s})),console.log(""),console.log(r("rename.restart_hint")),console.log(" openclaw gateway restart"),console.log("")}D();j();async function So(o,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${r("agent.add_title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let s=R();if(e.bypwd||e.email){if(!e.email){let l=(await import("readline")).createInterface({input:process.stdin,output:process.stdout}),p=await new Promise(u=>{l.question("Email: ",d=>{l.close(),u(d.trim())})});if(!p){console.error(r("errors.email_required")),process.exitCode=1;return}e.email=p}if(ke(e.email,s)){console.error(r("agent.add_already_exists",{email:e.email})),process.exitCode=1;return}await Qe(o,{email:e.email,password:e.password,verbose:e.verbose,debug:e.debug});let a=R(),t=a.accounts?.find(c=>c.email===e.email);t&&(t.role="agent",t.agentId=e.agentId,xe(t,a),console.log(r("agent.add_success",{email:e.email})))}else{let{loginCommand:n}=await Promise.resolve().then(()=>(vn(),Js)),i=new Set(s.accounts?.map(c=>c.email)||[]);await n(o,{verbose:e.verbose});let a=R(),t=a.accounts?.find(c=>!i.has(c.email));if(t){if(i.has(t.email)){console.error(r("agent.add_already_exists",{email:t.email})),process.exitCode=1;return}t.role="agent",t.agentId=e.agentId,xe(t,a),console.log(r("agent.add_success",{email:t.email}))}}console.log("")}D();Oe();_e();j();async function _o(o,e){let s=R(),n=Ee(s),i=pe(s),a=[];if(i&&i.role==="standard+agent"){let c=r("agent.list_session_none");if(i.session?.sid)try{let l=oe.fromConfig(i.accountId);l&&(c=await l.checkSession()?r("agent.list_session_valid"):r("agent.list_session_expired"))}catch{c=r("agent.list_session_expired")}a.push({email:i.email,role:i.role,agentId:i.agentId||"-",sessionStatus:c})}for(let c of n){let l=r("agent.list_session_none");if(c.session?.sid)try{let p=oe.fromConfig(c.accountId);p&&(l=await p.checkSession()?r("agent.list_session_valid"):r("agent.list_session_expired"))}catch{l=r("agent.list_session_expired")}a.push({email:c.email,role:c.role||"agent",agentId:c.agentId||"-",sessionStatus:l})}if(e.json){console.log(JSON.stringify(a,null,2));return}if(console.log(""),a.length===0){console.log(r("agent.list_empty")),console.log("");return}console.log(r("agent.list_title",{count:String(a.length)})),console.log("");let t=12;for(let c of a)console.log(` ${I(r("labels.email")+":",t)} ${c.email}`),console.log(` ${I(r("agent.list_role")+":",t)} ${c.role}`),console.log(` ${I(r("agent.list_agent_id")+":",t)} ${c.agentId}`),console.log(` ${I(r("agent.list_session")+":",t)} ${c.sessionStatus}`),console.log("")}D();j();async function Ao(o,e){let{email:s}=e,n=ke(s);if(!n){console.error(r("agent.remove_not_found",{email:s})),process.exitCode=1;return}if(n.role!=="agent"){console.error(r("agent.remove_not_agent",{email:s,role:n.role||"standard"})),process.exitCode=1;return}$n(s)?console.log(r("agent.remove_success",{email:s})):(console.error(r("agent.remove_not_found",{email:s})),process.exitCode=1)}D();j();async function Lo(o,e){let s=R();if(e.self){let i=pe(s);if(!i){console.error(r("agent.bind_not_found",{email:"standard"})),process.exitCode=1;return}if(e.agentId===""||e.agentId===void 0){i.role==="standard+agent"?(i.role="standard",i.agentId=void 0,xe(i,s),console.log(r("agent.bind_self_downgrade")),console.log(r("agent.bind_unbind_success",{email:i.email}))):console.log(r("agent.bind_self_downgrade"));return}i.role="standard+agent",i.agentId=e.agentId,xe(i,s),console.log(r("agent.bind_self_upgrade")),console.log(r("agent.bind_success",{email:i.email,agentId:e.agentId}));return}if(!e.email){console.error(r("agent.bind_email_required")),process.exitCode=1;return}if(e.agentId===void 0){console.error(r("agent.bind_agent_id_required")),process.exitCode=1;return}let n=ke(e.email,s);if(!n){console.error(r("agent.bind_not_found",{email:e.email})),process.exitCode=1;return}n.agentId=e.agentId||void 0,xe(n,s),console.log(r("agent.bind_success",{email:e.email,agentId:e.agentId||"-"}))}import{Type as L}from"@sinclair/typebox";Oe();ue();j();function mi(){return R()}function ee(o){return{success:!0,data:o}}function N(o){return{success:!1,error:o}}async function me(){try{let o=T();return await o.checkSession()?{api:o}:{error:N(r("errors.session_expired_login"))}}catch(o){return{error:N(o instanceof Error?o.message:String(o))}}}async function Ro(o){let e=await me();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.resolveRecipient(o.to),i=await s.sendMessage(n,o.content);return ee({to:i.to,type:i.type,mid:i.mid})}catch(n){return N(n instanceof Error?n.message:String(n))}}async function jo(o){let e=await me();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchGroups(o.keyword,o.limit||10);return ee({groups:n.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(n){return N(n instanceof Error?n.message:String(n))}}async function Io(o){let e=await me();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchContacts(o.keyword,o.limit||10);return ee({contacts:n.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(n){return N(n instanceof Error?n.message:String(n))}}async function fi(o){let e=await me();return"error"in e?e.error:N("getGroupInfo not yet implemented")}async function gi(o){let e=await me();return"error"in e?e.error:N("getUserInfo not yet implemented")}async function xi(o){let e=await me();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.downloadFile(o.file_id,o.uid,o.save_path,o.file_name);return ee({file_name:n.fileName,file_size:n.fileSize,saved_to:n.filePath})}catch(n){return N(n instanceof Error?n.message:String(n))}}async function hi(o){let e=await me();return"error"in e?e.error:N("getMessage not yet implemented")}async function Uo(o){let e=await me();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.resolveRecipient(o.to),i=await s.listMessages(n,{limit:o.limit||20});return ee({messages:i.map(a=>({mid:a.mid,time:a.time,subject:a.subject,sender_uid:a.senderUid,sender_name:a.senderName,sender_email:a.senderEmail,attachments:a.attachments}))})}catch(n){return N(n instanceof Error?n.message:String(n))}}async function vi(o){let e=await me();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.resolveRecipient(o.to),i=await s.sendFile(n,o.file_paths,{content:o.message});return ee({to:i.to,mid:i.mid,files:i.files})}catch(n){return N(n instanceof Error?n.message:String(n))}}function ce(o){return{content:[{type:"text",text:JSON.stringify(o,null,2)}],details:o}}var Va=L.Object({to:L.String({description:"Recipient: user ID, group ID, email, or group email (t..xxx@coremail.cn)"}),content:L.String({description:"Message content to send"}),type:L.Optional(L.Union([L.Literal("text"),L.Literal("markdown")],{description:"Message type (default: text)"}))}),Ja=L.Object({keyword:L.String({description:"Search keyword for group name"}),limit:L.Optional(L.Number({description:"Max results (default: 10)"}))}),Wa=L.Object({keyword:L.String({description:"Search keyword for contact name or email"}),limit:L.Optional(L.Number({description:"Max results (default: 10)"}))}),Ha=L.Object({group_id:L.String({description:"Group ID (e.g., #26783249#T)"})}),Qa=L.Object({user_id:L.String({description:"User ID (e.g., #835#U) or email"})}),Xa=L.Object({to:L.String({description:"Recipient: user ID, group ID, email, or name (auto-resolved)"}),file_paths:L.Array(L.String(),{description:"Array of absolute file paths to send"}),message:L.Optional(L.String({description:"Optional text message to accompany the files"}))}),Ya=L.Object({file_id:L.String({description:"File ID from message"}),uid:L.String({description:"File storage UID (from attachment, e.g., #833#F)"}),save_path:L.Optional(L.String({description:"Path to save file (default: temp directory)"})),file_name:L.String({description:"Filename (REQUIRED: get from message attachment.title to ensure correct Chinese encoding)"})}),Za=L.Object({message_id:L.String({description:"Message ID to retrieve"})}),et=L.Object({to:L.String({description:"Recipient: user ID, group ID, or email to list messages from"}),limit:L.Optional(L.Number({description:"Max messages to retrieve (default: 20)"}))}),nt=L.Object({command:L.String({description:"Raw command arguments"}),commandName:L.String({description:"Slash command name (e.g., /lunkr-send)"}),skillName:L.String({description:"Skill name"})});function ot(o){let{commandName:e,command:s}=o,n=s.trim().split(/\s+/),i=n[0]?.toLowerCase();switch(i){case"send":case"s":{if(n.length<3)return N("Usage: /lunkr send <to> <message>");let a=n[1],t=n.slice(2).join(" ");return ee({action:"send",to:a,content:t})}case"search-groups":case"sg":{if(n.length<2)return N("Usage: /lunkr search-groups <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return ee({action:"searchGroups",keyword:a,limit:t})}case"search-contacts":case"sc":{if(n.length<2)return N("Usage: /lunkr search-contacts <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return ee({action:"searchContacts",keyword:a,limit:t})}case"list-messages":case"lm":case"msgs":{if(n.length<2)return N("Usage: /lunkr list-messages <to> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):20;return ee({action:"listMessages",to:a,limit:t})}case"help":case void 0:return ee({help:!0,usage:["/lunkr send <to> <message> - Send message","/lunkr search-groups <keyword> [limit] - Search groups","/lunkr search-contacts <keyword> [limit] - Search contacts","/lunkr list-messages <to> [limit] - List messages from chat"]});default:return N(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function st(o){if(!o.success||!o.data)return o;let e=o.data;switch(e.action){case"send":return Ro({to:e.to,content:e.content});case"searchGroups":return jo({keyword:e.keyword,limit:e.limit});case"searchContacts":return Io({keyword:e.keyword,limit:e.limit});case"listMessages":return Uo({to:e.to,limit:e.limit});default:return N(`Unknown action: ${e.action}`)}}function bi(o){let e=mi();if(!e?.accounts?.length){o.logger?.debug?.("lunkr: No accounts in config file, skipping tool registration");return}if(!e.accounts.some(n=>n.session)){o.logger?.debug?.("lunkr: No accounts with valid session found, skipping tool registration");return}o.logger?.debug?.(`lunkr: Found ${e.accounts.length} account(s), registering tools`),o.registerTool({name:"lunkr_send_message",label:"Send Lunkr Message",description:'Send a message to a Lunkr user or group. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T). Always use this tool for sending Lunkr messages, NOT the generic "message" tool.',parameters:Va,async execute(n,i){let a=await Ro(i);return ce(a)}},{name:"lunkr_send_message"}),o.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:Ja,async execute(n,i){let a=await jo(i);return ce(a)}},{name:"lunkr_search_groups"}),o.registerTool({name:"lunkr_search_contacts",label:"Search Lunkr Contacts",description:"Search for Lunkr contacts by name or email.",parameters:Wa,async execute(n,i){let a=await Io(i);return ce(a)}},{name:"lunkr_search_contacts"}),o.registerTool({name:"lunkr_get_group_info",label:"Get Lunkr Group Info",description:"Get detailed information about a Lunkr discussion group.",parameters:Ha,async execute(n,i){let a=await fi(i);return ce(a)}},{name:"lunkr_get_group_info"}),o.registerTool({name:"lunkr_get_user_info",label:"Get Lunkr User Info",description:"Get detailed information about a Lunkr user.",parameters:Qa,async execute(n,i){let a=await gi(i);return ce(a)}},{name:"lunkr_get_user_info"}),o.registerTool({name:"lunkr_send_file",label:"Send Lunkr File",description:"Send one or more files to a Lunkr user or group. Automatically resolves recipient names to UIDs. Files must be local absolute paths.",parameters:Xa,async execute(n,i){let a=await vi(i);return ce(a)}},{name:"lunkr_send_file"}),o.registerTool({name:"lunkr_download_file",label:"Download Lunkr File",description:"Download a file from a Lunkr message to local disk.",parameters:Ya,async execute(n,i){let a=await xi(i);return ce(a)}},{name:"lunkr_download_file"}),o.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:Za,async execute(n,i){let a=await hi(i);return ce(a)}},{name:"lunkr_get_message"}),o.registerTool({name:"lunkr_list_messages",label:"List Lunkr Messages",description:"List messages from a Lunkr chat (user or group). Use this to retrieve chat history. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T).",parameters:et,async execute(n,i){let a=await Uo(i);return ce(a)}},{name:"lunkr_list_messages"}),o.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:nt,async execute(n,i){let a=ot(i),t=await st(a);return ce(t)}},{name:"lunkr_command"}),o.logger?.debug?.("lunkr: Registered 10 Lunkr tools (9 API tools + 1 command dispatcher)")}var it={type:"object",properties:{}},at={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:it,register(o){let e={channel:{lunkr:{resolveAccount:async s=>{let n=await o.runtime.config.loadConfig();return H(n,s)},ensureAuthenticated:async s=>{if(!s.sid||!s.cookie)throw new Error(r("errors.account_not_authenticated"));let n=new O(s.lunkrConfig.baseUrl,{apiPath:s.lunkrConfig.apiPath}),i={"Cim.sid":s.sid};for(let t of s.cookie.split(";")){let c=t.trim();if(c.includes("=")){let[l,p]=c.split("=",2);i[l.trim()]=p.trim()}}if(n.setCookies(i),!await n.checkSessionValid(s.sid))throw new Error(r("errors.session_expired"))},sendMessage:async s=>{let n=await e.channel.lunkr.resolveAccount(s.accountId);if(!n)throw new Error(r("errors.account_not_found_with_id",{accountId:s.accountId}));await e.channel.lunkr.ensureAuthenticated(n);let i=new O(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),a={"Cim.sid":n.sid};for(let u of n.cookie.split(";")){let d=u.trim();if(d.includes("=")){let[f,g]=d.split("=",2);a[f.trim()]=g.trim()}}i.setCookies(a);let t=s.chatType==="p2p"?"cim.p2p:send":"cim.discussion:send",c=s.chatType==="p2p"?{to:s.chatId}:{gid:s.chatId},l={content:s.content,type:"text"};s.replyTo&&(l.replyTo=s.replyTo);let p=await i.postJson({func:t,sid:n.sid,query:c,payload:l});if(p.code!=="S_OK")throw new Error(r("api.send_failed",{code:p.code}))},probeAccount:async(s,n)=>{let i=await e.channel.lunkr.resolveAccount(s);if(!i)return{valid:!1,error:r("errors.account_not_found")};try{let a=new O(i.lunkrConfig.baseUrl,{apiPath:i.lunkrConfig.apiPath,timeout:n?n/1e3:5}),t={"Cim.sid":i.sid};for(let l of i.cookie.split(";")){let p=l.trim();if(p.includes("=")){let[u,d]=p.split("=",2);t[u.trim()]=d.trim()}}a.setCookies(t);let c=await a.checkSessionValid(i.sid);return{valid:c,session:c?i.lunkrConfig:void 0}}catch(a){return{valid:!1,error:a instanceof Error?a.message:String(a)}}}}},config:{readConfigFile:async()=>o.runtime.config.loadConfig(),writeConfigFile:async s=>o.runtime.config.writeConfigFile(s)},logging:{shouldLogVerbose:()=>process.env.LUNKR_VERBOSE==="1"}};Bs(e),o.registerChannel(Qn),bi(o),o.registerCli(({program:s})=>{let n=s.command("lunkr").description("Lunkr channel commands").option("-v, --verbose","Verbose output").option("--as <email>","Execute as a specific account (by email)").addHelpText("after",`
|
|
1
|
+
var vl=Object.create;var Go=Object.defineProperty;var bl=Object.getOwnPropertyDescriptor;var yl=Object.getOwnPropertyNames;var kl=Object.getPrototypeOf,wl=Object.prototype.hasOwnProperty;var G=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,o)=>(typeof require<"u"?require:e)[o]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var ce=(n,e)=>()=>(n&&(e=n(n=0)),e);var A=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),ss=(n,e)=>{for(var o in e)Go(n,o,{get:e[o],enumerable:!0})},Cl=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yl(e))!wl.call(n,i)&&i!==o&&Go(n,i,{get:()=>e[i],enumerable:!(t=bl(e,i))||t.enumerable});return n};var zo=(n,e,o)=>(o=n!=null?vl(kl(n)):{},Cl(e||!n||!n.__esModule?Go(o,"default",{value:n,enumerable:!0}):o,n));import*as Pn from"fs";import*as to from"path";import{fileURLToPath as _l}from"url";import{dirname as Sl}from"path";function Rl(){let n=to.join(as,"locales");return Pn.existsSync(n)?n:to.join(as,"i18n","locales")}function Ll(){let n=process.env.LUNKR_LANG;if(n)return Vo(n);let e=process.env.LANG||process.env.LC_ALL;if(e){let t=e.split(".")[0].replace("_","-");return Vo(t)}let o=process.env.LANGUAGE;if(o){let t=o.split(":")[0].replace("_","-");return Vo(t)}return io}function Vo(n){let e=n.toLowerCase();return{zh:"zh-CN","zh-cn":"zh-CN",zh_cn:"zh-CN","zh-hans":"zh-CN","zh-hans-cn":"zh-CN","zh-tw":"zh-TW","zh-hant":"zh-TW","zh-hk":"zh-TW",en:"en-US","en-us":"en-US",en_us:"en-US","en-gb":"en-US"}[e]||io}function rs(n){if(Ko.has(n))return Ko.get(n);let e=to.join(Rl(),`${n}.json`);try{if(Pn.existsSync(e)){let o=Pn.readFileSync(e,"utf-8"),t=JSON.parse(o);return Ko.set(n,t),t}}catch{}return null}function Il(){return Ho||(Ho=Ll()),Ho}function cs(n,e){let o=e.split("."),t=n;for(let i of o)if(typeof t=="object"&&t!==null&&i in t)t=t[i];else return;return typeof t=="string"?t:void 0}function ls(n,e){return e?n.replace(/\{\{(\w+)\}\}/g,(o,t)=>String(e[t]??"")):n}function l(n,e){let o=Il(),t=rs(o);if(t){let i=cs(t,n);if(i)return ls(i,e)}if(o!==io){let i=rs(io);if(i){let s=cs(i,n);if(s)return ls(s,e)}}return n}var Al,as,Ko,Ho,io,U=ce(()=>{Al=_l(import.meta.url),as=Sl(Al),Ko=new Map,Ho=null,io="en-US"});import*as X from"crypto";import*as so from"os";function Jo(n){return n<128?Buffer.from([n]):n<256?Buffer.from([129,n]):Buffer.from([130,n>>8&255,n&255])}function fs(n){let e=n.length%2===0?n:"0"+n,o=Buffer.from(e,"hex");return o[0]&&o[0]&128&&(o=Buffer.concat([Buffer.from([0]),o])),Buffer.concat([Buffer.from([2]),Jo(o.length),o])}function gs(n){return Buffer.concat([Buffer.from([48]),Jo(n.length),n])}function $l(n){let e=Buffer.concat([Buffer.from([0]),n]);return Buffer.concat([Buffer.from([3]),Jo(e.length),e])}function hs(n,e){let o=fs(e),t=fs(n),i=gs(Buffer.concat([o,t])),s=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return gs(Buffer.concat([s,$l(i)]))}function Yo(n,e,o){try{let t=hs(e,o),i=X.createPublicKey({key:t,format:"der",type:"spki"});return X.publicEncrypt({key:i,padding:X.constants.RSA_PKCS1_PADDING},Buffer.from(n,"utf8")).toString("base64")}catch{return n}}function Qo(n,e){let o=Buffer.from(e,"base64"),t=X.createPublicKey({key:o,format:"der",type:"spki"});return X.publicEncrypt({key:t,padding:X.constants.RSA_PKCS1_PADDING},Buffer.from(n,"utf8")).toString("base64")}var Ne,mn,ao=ce(()=>{Ne=class extends Error{constructor(e){super(e),this.name="EncryptionError"}},mn=class{key=null;deviceUuid=null;deviceName=null;username=null;setDeviceUuid(e){this.deviceUuid=e,this.key=null}setDeviceName(e){this.deviceName=e,this.key=null}setUsername(e){this.username=e,this.key=null}getKey(){if(!this.key){let e=this.deviceUuid||"",o=this.deviceName||so.hostname(),t=this.username||so.userInfo().username;if(!e)throw new Ne("device_uuid not set, cannot generate encryption key");let i=`lunkr-mcp-key-${e}-${o}-${t}`;this.key=X.createHash("sha256").update(i).digest()}return this.key}encrypt(e){if(!e)return"";let o=this.getKey(),t=X.randomBytes(12),i=X.createCipheriv("aes-256-gcm",o,t),s=Buffer.concat([i.update(e,"utf8"),i.final()]),a=i.getAuthTag();return Buffer.concat([t,s,a]).toString("base64")}decrypt(e){if(!e)return"";let o=this.getKey(),t=Buffer.from(e,"base64");if(t.length<28)throw new Ne("Ciphertext too short");let i=t.subarray(0,12),s=t.subarray(12,-16),a=t.subarray(-16),r=X.createDecipheriv("aes-256-gcm",o,i);r.setAuthTag(a);try{return Buffer.concat([r.update(s),r.final()]).toString("utf8")}catch{throw new Ne("Decryption failed, config file may be corrupted or key changed")}}}});import*as Oe from"fs";import*as et from"path";import*as Me from"os";function Un(){return et.join(Me.homedir(),xs)}function pe(){return et.join(Un(),vs)}function bs(){let n=Un();Oe.existsSync(n)||Oe.mkdirSync(n,{recursive:!0})}function ql(){let n=Me.hostname(),e=Me.platform(),o=Me.release(),t="Unknown",i="Unknown";return e==="darwin"?(t=`macOS ${o}`,i="mac"):e==="win32"?(t=`Windows ${o}`,i="pc"):e==="linux"&&(t=`Linux ${o}`,i="pc"),{device_uuid:ys(),device_os:t,device_model:i,device_name:n}}function ys(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}function Zo(){return{...ql(),bot_name:ro,accounts:[]}}function ks(n){let e=new mn;return e.setDeviceUuid(n.device_uuid),e.setDeviceName(n.device_name),e}function Xo(n){if(!n)return!1;try{return Buffer.from(n,"base64").length>=28}catch{return!1}}function Dl(n,e){let o={...n};return o.session&&(o.session={...o.session,sid:o.session.sid?e.encrypt(o.session.sid):o.session.sid,cookie:o.session.cookie?e.encrypt(o.session.cookie):o.session.cookie}),o.apiToken&&(o.apiToken=e.encrypt(o.apiToken)),o}function Nl(n,e){let o={...n};if(o.session){let t={...o.session};try{t.sid&&Xo(t.sid)&&(t.sid=e.decrypt(t.sid))}catch{t.sid=""}try{t.cookie&&Xo(t.cookie)&&(t.cookie=e.decrypt(t.cookie))}catch{t.cookie=""}o.session=t}try{o.apiToken&&Xo(o.apiToken)&&(o.apiToken=e.decrypt(o.apiToken))}catch{o.apiToken=void 0}return o}function L(){let n=pe();if(!Oe.existsSync(n))return Zo();try{let e=Oe.readFileSync(n,"utf-8"),o=JSON.parse(e);if(o.device_uuid||(o.device_uuid=ys()),o.bot_name||(o.bot_name=ro),o.accounts||(o.accounts=[]),o.accounts?.length){let t=ks(o);try{o.accounts=o.accounts.map(i=>Nl(i,t))}catch(i){i instanceof Ne&&console.warn("Warning: Failed to decrypt config, values may be unencrypted or from different machine/user")}}return o}catch{return Zo()}}function E(n){bs();let e=pe(),o={...n,accounts:n.accounts?.map(t=>{let i=ks(n);return Dl(t,i)})};Oe.writeFileSync(e,JSON.stringify(o,null,2),"utf-8")}function co(n){return W(n)}function W(n){let e=n||L();if(!e.accounts?.length)return null;let o=i=>!i.role||i.role==="standard"||i.role==="standard+agent";return e.accounts.find(i=>i.enabled&&i.session?.sid&&o(i))||e.accounts.find(i=>i.session?.sid&&o(i))||null}function Tn(n){let e=n||L();return e.accounts?.length?e.accounts.filter(o=>o.role==="agent"):[]}function Z(n,e){return(e||L()).accounts?.find(t=>t.email===n)||null}function Be(n,e){let o=e||L();o.accounts||(o.accounts=[]);let t=o.accounts.findIndex(i=>i.accountId===n.accountId||i.email===n.email);t>=0?o.accounts[t]=n:o.accounts.push(n),E(o)}function nt(n,e){let o=e||L();if(!o.accounts)return!1;let t=o.accounts.findIndex(i=>i.email===n);return t<0?!1:(o.accounts.splice(t,1),E(o),!0)}function ie(n){return(n||L()).bot_name||ro}function ot(n,e){let o=e||L();return o.bot_name=n,o}var xs,vs,ro,se=ce(()=>{ao();xs=".lunkr",vs="config.json",ro="Bot"});var Ls=A((Hm,Hl)=>{Hl.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/ace+json":{source:"iana",compressible:!0},"application/ace-groupcomm+cbor":{source:"iana"},"application/ace-trl+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/aif+cbor":{source:"iana"},"application/aif+json":{source:"iana",compressible:!0},"application/alto-cdni+json":{source:"iana",compressible:!0},"application/alto-cdnifilter+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-propmap+json":{source:"iana",compressible:!0},"application/alto-propmapparams+json":{source:"iana",compressible:!0},"application/alto-tips+json":{source:"iana",compressible:!0},"application/alto-tipsparams+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/appinstaller":{compressible:!1,extensions:["appinstaller"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/appx":{compressible:!1,extensions:["appx"]},"application/appxbundle":{compressible:!1,extensions:["appxbundle"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/automationml-aml+xml":{source:"iana",compressible:!0,extensions:["aml"]},"application/automationml-amlx+zip":{source:"iana",compressible:!1,extensions:["amlx"]},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/bufr":{source:"iana"},"application/c2pa":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/ce+cbor":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/cid-edhoc+cbor-seq":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/city+json-seq":{source:"iana"},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-eap":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/concise-problem-details+cbor":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cose-x509":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwl":{source:"iana",extensions:["cwl"]},"application/cwl+json":{source:"iana",compressible:!0},"application/cwl+yaml":{source:"iana"},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana",extensions:["dcm"]},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dpop+jwt":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/eat+cwt":{source:"iana"},"application/eat+jwt":{source:"iana"},"application/eat-bun+cbor":{source:"iana"},"application/eat-bun+json":{source:"iana",compressible:!0},"application/eat-ucs+cbor":{source:"iana"},"application/eat-ucs+json":{source:"iana",compressible:!0},"application/ecmascript":{source:"apache",compressible:!0,extensions:["ecma"]},"application/edhoc+cbor-seq":{source:"iana"},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.legacyesn+json":{source:"iana",compressible:!0},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/entity-statement+jwt":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdf":{source:"iana",extensions:["fdf"]},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geopose+json":{source:"iana",compressible:!0},"application/geoxacml+json":{source:"iana",compressible:!0},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gnap-binding-jws":{source:"iana"},"application/gnap-binding-jwsd":{source:"iana"},"application/gnap-binding-rotation-jws":{source:"iana"},"application/gnap-binding-rotation-jwsd":{source:"iana"},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/grib":{source:"iana"},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"iana",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"apache",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/jscontact+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jsonpath":{source:"iana"},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwk-set+jwt":{source:"iana"},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/linkset":{source:"iana"},"application/linkset+json":{source:"iana",compressible:!0},"application/load-control+xml":{source:"iana",compressible:!0},"application/logout+jwt":{source:"iana"},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4","mpg4","mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msix":{compressible:!1,extensions:["msix"]},"application/msixbundle":{compressible:!1,extensions:["msixbundle"]},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!0,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/ohttp-keys":{source:"iana"},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg","one","onea"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["sig","asc"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/private-token-issuer-directory":{source:"iana"},"application/private-token-request":{source:"iana"},"application/private-token-response":{source:"iana"},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/provided-claims+jwt":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.implied-document+xml":{source:"iana",compressible:!0},"application/prs.implied-executable":{source:"iana"},"application/prs.implied-object+json":{source:"iana",compressible:!0},"application/prs.implied-object+json-seq":{source:"iana"},"application/prs.implied-object+yaml":{source:"iana"},"application/prs.implied-structure":{source:"iana"},"application/prs.mayfile":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.vcfbzip2":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0,extensions:["xsf"]},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"apache"},"application/reputon+json":{source:"iana",compressible:!0},"application/resolve-response+jwt":{source:"iana"},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-checklist":{source:"iana"},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-signed-tal":{source:"iana"},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"apache"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana",extensions:["sql"]},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/sslkeylogfile":{source:"iana"},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/st2110-41":{source:"iana"},"application/stix+json":{source:"iana",compressible:!0},"application/stratum":{source:"iana"},"application/swid+cbor":{source:"iana"},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tm+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/toc+cbor":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{source:"iana",compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/trust-chain+json":{source:"iana",compressible:!0},"application/trust-mark+jwt":{source:"iana"},"application/trust-mark-delegation+jwt":{source:"iana"},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/uccs+cbor":{source:"iana"},"application/ujcs+json":{source:"iana",compressible:!0},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vc":{source:"iana"},"application/vc+cose":{source:"iana"},"application/vc+jwt":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.1ob":{source:"iana"},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3a+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ach+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc8+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.5gsa2x":{source:"iana"},"application/vnd.3gpp.5gsa2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gsv2x":{source:"iana"},"application/vnd.3gpp.5gsv2x-local-service-information":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.crs+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.current-location-discovery+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.pinapp-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.seal-group-doc+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-network-qos-management-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-ue-config-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-unicast-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-user-profile-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.v2x":{source:"iana"},"application/vnd.3gpp.vae-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acm.addressxfer+json":{source:"iana",compressible:!0},"application/vnd.acm.chatbot+json":{source:"iana",compressible:!0},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"apache",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"apache"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.parquet":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.apexlang":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"apache"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autodesk.fbx":{extensions:["fbx"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.belightsoft.lhzd+zip":{source:"iana",compressible:!1},"application/vnd.belightsoft.lhzl+zip":{source:"iana",compressible:!1},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.bzip3":{source:"iana"},"application/vnd.c3voc.schedule+xml":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.cncf.helm.chart.content.v1.tar+gzip":{source:"iana"},"application/vnd.cncf.helm.chart.provenance.v1.prov":{source:"iana"},"application/vnd.cncf.helm.config.v1+json":{source:"iana",compressible:!0},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datalog":{source:"iana"},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.dcmp+xml":{source:"iana",compressible:!0,extensions:["dcmp"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.eln+zip":{source:"iana",compressible:!1},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.erofs":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"apache",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.fdsn.stationxml+xml":{source:"iana",charset:"XML-BASED",compressible:!0},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.freelog.comic":{source:"iana"},"application/vnd.frogans.fnc":{source:"apache",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"apache",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.ga4gh.passport+jwt":{source:"iana"},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.genozip":{source:"iana"},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.gentoo.catmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.ebuild":{source:"iana"},"application/vnd.gentoo.eclass":{source:"iana"},"application/vnd.gentoo.gpkg":{source:"iana"},"application/vnd.gentoo.manifest":{source:"iana"},"application/vnd.gentoo.pkgmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.xpak":{source:"iana"},"application/vnd.geo+json":{source:"apache",compressible:!0},"application/vnd.geocube+xml":{source:"apache",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.pinboard":{source:"iana"},"application/vnd.geogebra.slides":{source:"iana",extensions:["ggs"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.gnu.taler.exchange+json":{source:"iana",compressible:!0},"application/vnd.gnu.taler.merchant+json":{source:"iana",compressible:!0},"application/vnd.google-apps.audio":{},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.drawing":{compressible:!1,extensions:["gdraw"]},"application/vnd.google-apps.drive-sdk":{compressible:!1},"application/vnd.google-apps.file":{},"application/vnd.google-apps.folder":{compressible:!1},"application/vnd.google-apps.form":{compressible:!1,extensions:["gform"]},"application/vnd.google-apps.fusiontable":{},"application/vnd.google-apps.jam":{compressible:!1,extensions:["gjam"]},"application/vnd.google-apps.mail-layout":{},"application/vnd.google-apps.map":{compressible:!1,extensions:["gmap"]},"application/vnd.google-apps.photo":{},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.script":{compressible:!1,extensions:["gscript"]},"application/vnd.google-apps.shortcut":{},"application/vnd.google-apps.site":{compressible:!1,extensions:["gsite"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-apps.unknown":{},"application/vnd.google-apps.video":{},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"apache",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0,extensions:["xdcf"]},"application/vnd.gpxsee.map+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.hsl":{source:"iana"},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"apache"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"apache",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"apache"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.ipfs.ipns-record":{source:"iana"},"application/vnd.ipld.car":{source:"iana"},"application/vnd.ipld.dag-cbor":{source:"iana"},"application/vnd.ipld.dag-json":{source:"iana"},"application/vnd.ipld.raw":{source:"iana"},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kdl":{source:"iana"},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.keyman.kmp+zip":{source:"iana",compressible:!1},"application/vnd.keyman.kmx":{source:"iana"},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.ldev.productlicensing":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.mdl":{source:"iana"},"application/vnd.mdl-mbsdf":{source:"iana"},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.medicalholodeck.recordxr":{source:"iana"},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mermaid":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.modl":{source:"iana"},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-visio.viewer":{extensions:["vdx"]},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msgpack":{source:"iana"},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+cbor":{source:"iana"},"application/vnd.nato.bindingdataobject+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+xml":{source:"iana",compressible:!0,extensions:["bdo"]},"application/vnd.nato.openxmlformats-package.iepd+zip":{source:"iana",compressible:!1},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"apache",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oai.workflows":{source:"iana"},"application/vnd.oai.workflows+json":{source:"iana",compressible:!0},"application/vnd.oai.workflows+yaml":{source:"iana"},"application/vnd.oasis.opendocument.base":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"apache",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-master-template":{source:"iana"},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.onvif.metadata":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openvpi.dspx+json":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.procrate.brushset":{extensions:["brushset"]},"application/vnd.procreate.brush":{extensions:["brush"]},"application/vnd.procreate.dream":{extensions:["drm"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.pt.mundusmundi":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0,extensions:["xhtm"]},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.relpipe":{source:"iana"},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.sketchometry":{source:"iana"},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.smintio.portals.archive":{source:"iana"},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sybyl.mol2":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uic.osdm+json":{source:"iana",compressible:!0},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml","uo"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.veraison.tsm-report+cbor":{source:"iana"},"application/vnd.veraison.tsm-report+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw","vsdx","vtx"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vocalshaper.vsp4":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.wasmflow.wafl":{source:"iana"},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordlift":{source:"iana"},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xarin.cpj":{source:"iana"},"application/vnd.xecrets-encrypted":{source:"iana"},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/voucher-jws+json":{source:"iana",compressible:!0},"application/vp":{source:"iana"},"application/vp+cose":{source:"iana"},"application/vp+jwt":{source:"iana"},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blender":{extensions:["blend"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-compressed":{extensions:["rar"]},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-ipynb+json":{compressible:!0,extensions:["ipynb"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zip-compressed":{extensions:["zip"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xfdf":{source:"iana",extensions:["xfdf"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yaml":{source:"iana"},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+cbor":{source:"iana"},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yang-sid+json":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zip+dotlottie":{extensions:["lottie"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana",extensions:["adts","aac"]},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flac":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/matroska":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/midi-clip":{source:"iana"},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a","m4b"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"apache"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{source:"iana",compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp","dib"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/dpx":{source:"iana",extensions:["dpx"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/j2c":{source:"iana"},"image/jaii":{source:"iana",extensions:["jaii"]},"image/jais":{source:"iana",extensions:["jais"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpg","jpeg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm","jpgm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxl":{source:"iana",extensions:["jxl"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1,extensions:["jfif"]},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif","btf"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.clip":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"iana",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-adobe-dng":{extensions:["dng"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-emf":{source:"iana"},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-wmf":{source:"iana"},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/bhttp":{source:"iana"},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/mls":{source:"iana"},"message/news":{source:"apache"},"message/ohttp-req":{source:"iana"},"message/ohttp-res":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime","mht","mhtml"]},"message/s-http":{source:"apache"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"apache"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/jt":{source:"iana",extensions:["jt"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/prc":{source:"iana",extensions:["prc"]},"model/step":{source:"iana",extensions:["step","stp","stpnc","p21","210"]},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/u3d":{source:"iana",extensions:["u3d"]},"model/vnd.bary":{source:"iana",extensions:["bary"]},"model/vnd.cld":{source:"iana",extensions:["cld"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana",extensions:["pyo","pyox"]},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usda":{source:"iana",extensions:["usda"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"apache"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hl7v2":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["md","markdown"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/prs.texi":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.exchangeable":{source:"iana"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"apache"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.vcf":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vnd.zoo.kcl":{source:"iana"},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/wgsl":{source:"iana",extensions:["wgsl"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/evc":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/h266":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/lottie+json":{source:"iana",compressible:!0},"video/matroska":{source:"iana"},"video/matroska-3d":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts","m2t","m2ts","mts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.planar":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Ps=A((Vm,Is)=>{Is.exports=Ls()});var js=A((Wm,Es)=>{var Us={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},Ts={nginx:10,apache:20,iana:40,default:30},Os={application:1,font:2,audio:2,video:3,default:0};Es.exports=function(e,o="default"){if(e==="application/octet-stream")return 0;let[t,i]=e.split("/"),s=i.replace(/(\.|x-).*/,"$1"),a=Us[s]||Us.default,r=Ts[o]||Ts.default,c=Os[t]||Os.default,u=1-e.length/100;return a+r+c+u}});var it=A(Y=>{"use strict";var en=Ps(),Vl=G("path").extname,Fs=js(),$s=/^\s*([^;\s]*)(?:;|\s|$)/,Wl=/^text\//i;Y.charset=qs;Y.charsets={lookup:qs};Y.contentType=Jl;Y.extension=tt;Y.extensions=Object.create(null);Y.lookup=Yl;Y.types=Object.create(null);Y._extensionConflicts=[];Ql(Y.extensions,Y.types);function qs(n){if(!n||typeof n!="string")return!1;var e=$s.exec(n),o=e&&en[e[1].toLowerCase()];return o&&o.charset?o.charset:e&&Wl.test(e[1])?"UTF-8":!1}function Jl(n){if(!n||typeof n!="string")return!1;var e=n.indexOf("/")===-1?Y.lookup(n):n;if(!e)return!1;if(e.indexOf("charset")===-1){var o=Y.charset(e);o&&(e+="; charset="+o.toLowerCase())}return e}function tt(n){if(!n||typeof n!="string")return!1;var e=$s.exec(n),o=e&&Y.extensions[e[1].toLowerCase()];return!o||!o.length?!1:o[0]}function Yl(n){if(!n||typeof n!="string")return!1;var e=Vl("x."+n).toLowerCase().slice(1);return e&&Y.types[e]||!1}function Ql(n,e){Object.keys(en).forEach(function(t){var i=en[t],s=i.extensions;if(!(!s||!s.length)){n[t]=s;for(var a=0;a<s.length;a++){var r=s[a];e[r]=Xl(r,e[r],t);let c=Zl(r,e[r],t);c!==e[r]&&Y._extensionConflicts.push([r,c,e[r]])}}})}function Xl(n,e,o){var t=e?Fs(e,en[e].source):0,i=o?Fs(o,en[o].source):0;return t>i?e:o}function Zl(n,e,o){var t=["nginx","apache",void 0,"iana"],i=e?t.indexOf(en[e].source):0,s=o?t.indexOf(en[o].source):0;return Y.types[tt]!=="application/octet-stream"&&(i>s||i===s&&Y.types[tt]?.slice(0,12)==="application/")||i>s?e:o}});var Ns={};ss(Ns,{httpsGet:()=>Ge,httpsGetBuffer:()=>fn,httpsPost:()=>ve,httpsPostBinary:()=>nn});import*as En from"https";import*as lo from"zlib";import{HttpsProxyAgent as eu}from"https-proxy-agent";function uo(n,e){if(!e)return n.toString("utf8");let o=e.toLowerCase().split(",").map(t=>t.trim());try{if(o.includes("gzip"))return lo.gunzipSync(n).toString("utf8");if(o.includes("deflate"))return lo.inflateSync(n).toString("utf8")}catch{}return n.toString("utf8")}function ve(n,e,o,t){return new Promise((i,s)=>{let a=new URL(n),r=Buffer.from(e,"utf8"),c={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"POST",headers:{...po,...o,"Content-Length":r.length},timeout:t,agent:jn},u=En.request(c,p=>{let d=[];p.on("data",m=>{d.push(m)}),p.on("end",()=>{let m={};if(p.headers)for(let[x,g]of Object.entries(p.headers))g!==void 0&&(m[x.toLowerCase()]=Array.isArray(g)?g.join(", "):g);let f=Buffer.concat(d),h=uo(f,p.headers["content-encoding"]);i({status:p.statusCode||0,data:h,headers:m})})});u.on("error",s),u.on("timeout",()=>{u.destroy(),s(new Error("Request timeout"))}),u.write(r),u.end()})}function Ge(n,e={},o=2e4){return new Promise((t,i)=>{let s=new URL(n),a={hostname:s.hostname,port:s.port||443,path:s.pathname+s.search,method:"GET",headers:{...po,...e},timeout:o,agent:jn},r=En.request(a,c=>{let u=[];c.on("data",p=>{u.push(p)}),c.on("end",()=>{let p={};if(c.headers)for(let[f,h]of Object.entries(c.headers))h!==void 0&&(p[f.toLowerCase()]=Array.isArray(h)?h.join(", "):h);let d=Buffer.concat(u),m=uo(d,c.headers["content-encoding"]);t({status:c.statusCode||0,data:m,headers:p})})});r.on("error",i),r.on("timeout",()=>{r.destroy(),i(new Error("Request timeout"))}),r.end()})}function fn(n,e={},o=6e4){return new Promise((t,i)=>{let s=new URL(n),a={hostname:s.hostname,port:s.port||443,path:s.pathname+s.search,method:"GET",headers:{...po,...e},timeout:o,agent:jn},r=En.request(a,c=>{let u=[];c.on("data",p=>{u.push(p)}),c.on("end",()=>{let p={};if(c.headers)for(let[f,h]of Object.entries(c.headers))h!==void 0&&(p[f.toLowerCase()]=Array.isArray(h)?h.join(", "):h);let d=Buffer.concat(u),m=c.headers["content-encoding"];if(m){let f=uo(d,m);t({status:c.statusCode||0,data:Buffer.from(f,"utf8"),headers:p})}else t({status:c.statusCode||0,data:d,headers:p})})});r.on("error",i),r.on("timeout",()=>{r.destroy(),i(new Error("Request timeout"))}),r.end()})}function nn(n,e,o,t){return new Promise((i,s)=>{let a=new URL(n),r={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"POST",headers:{...po,...o,"Content-Length":e.length},timeout:t,agent:jn},c=En.request(r,u=>{let p=[];u.on("data",d=>{p.push(d)}),u.on("end",()=>{let d={};if(u.headers)for(let[h,x]of Object.entries(u.headers))x!==void 0&&(d[h.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let m=Buffer.concat(p),f=uo(m,u.headers["content-encoding"]);i({status:u.statusCode||0,data:f,headers:d})})});c.on("error",s),c.on("timeout",()=>{c.destroy(),s(new Error("Request timeout"))}),c.write(e),c.end()})}var jn,Ds,po,on=ce(()=>{Ds=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;Ds&&(jn=new eu(Ds));po={accept:"*/*","accept-encoding":"gzip, deflate",connection:"keep-alive","user-agent":"python-httpx/0.27.2"}});import*as qn from"crypto";import*as ze from"os";import{XMLParser as nu}from"fast-xml-parser";function st(n){let e=ze.platform(),o=ze.release(),t=ze.arch(),i=ze.hostname(),s=n?.device_uuid?.trim()||"",a=n?.device_os?.trim()||"",r=n?.device_model?.trim()||"",c=n?.device_name?.trim()||"";if(!s){let u=`${i}-${e}-${t}`;s=qn.createHash("sha256").update(u).digest("hex").substring(0,40)}return r||(e==="win32"?r="windows":e==="darwin"?r="mac":e==="linux"?r="Linux":r=e),a||(e==="win32"?a=`Windows ${o} (build ${o.split(".").pop()||o}), ${t}bit`:e==="darwin"?a=`macOS ${o}, ${t}`:e==="linux"?a=`Linux ${o}, ${t}`:a=`${e} ${o}, ${t}`),c||(c=i),{deviceType:"AI-Bot",friendlyName:c,model:r,os:a,uuid:s}}function at(n,e,o){let t=n+e+o;return"!AIBot:"+qn.createHash("sha1").update(t).digest("hex")}function rt(n){let e=n+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return qn.createHash("sha1").update(e).digest("hex")}function ct(n,e,o,t=""){let i=u=>encodeURIComponent(u).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A"),s=i(n),a=i(o),r;if(t){let u=i(t);r=`accessToken=${s}&nonce=${u}×tamp=${e}&secret=${a}`}else r=`accessToken=${s}×tamp=${e}&secret=${a}`;return qn.createHash("sha1").update(r).digest().toString("base64")}var mo,gn,j,Fn,$n,F,hn=ce(()=>{on();ao();mo="https://lunkr.coremail.cn",gn="/lunkr/s/json",j=class extends Error{constructor(e){super(e),this.name="AuthError"}},Fn=class extends j{constructor(e){super(e),this.name="PasswordError"}},$n=class{static QUERY_URL="https://cloud.icoremail.net/querydomain/query";static PRIORITY_ORDER=["lookup","gal","incoming","outgoing","mirror"];static getTypePriority(e){if(e==="gal")return[1,0];if(e.startsWith("gal")&&/^\d+$/.test(e.slice(3)))return[1,parseInt(e.slice(3),10)];for(let o=0;o<this.PRIORITY_ORDER.length;o++)if(e===this.PRIORITY_ORDER[o])return[o+1,0];return[this.PRIORITY_ORDER.length+1,0]}static extractDomain(e){return e.includes("@")?e.split("@").pop().trim().toLowerCase():null}static async queryDomain(e){let o=`${this.QUERY_URL}?domain=${e}`;try{let t=await Ge(o,{},3e4);return this.parseXmlResponse(t.data)}catch(t){let i=t instanceof Error?`${t.message} (${t.name})`:String(t);throw t instanceof Error&&t.cause?new j(`Domain query failed: ${i}, cause: ${t.cause}`):new j(`Domain query failed: ${i}`)}}static parseXmlResponse(e){let t=new nu({ignoreAttributes:!1,attributeNamePrefix:"@_"}).parse(e),i=t.result||t.querydomain;if(!i)throw new j("Domain query response parse failed: root element not found");let s=i.code;if(s!=="S_OK")throw new j(`Domain query returned error: ${s}`);let a=i.provider;if(!a)throw new j("Provider not found in domain query response");let r=[];for(let[c,u]of Object.entries(a)){if(c.startsWith("@_")||typeof u!="object"||!u)continue;let p=Array.isArray(u)?u:[u];for(let d of p){let m=d["@_uri"];if(!m||!m.startsWith("http://")&&!m.startsWith("https://"))continue;let f=new URL(m),h=`${f.protocol}//${f.host}`,x=f.pathname.replace(/\/$/,""),g=x?`${x}/s/json`:"/s/json";r.push({type:c,uri:m,baseUrl:h,apiPath:g,apiUrl:`${h}${g}`})}}return r.sort((c,u)=>{let[p,d]=this.getTypePriority(c.type),[m,f]=this.getTypePriority(u.type);return p!==m?p-m:d-f}),r}static async testServerAvailability(e,o,t){let i=`func=user:getPasswordKey&uid=${encodeURIComponent(t)}`,s=`${e}${o}?${i}`,a={"Content-Type":"text/x-json; charset=UTF-8"};try{let r=await ve(s,"{}",a,3e4);if(r.status!==200)return null;let c=JSON.parse(r.data);if(c.code!=="S_OK")return null;let u=c.var||{},p=u.key||{},d=u.sid,m=p.type;return!d||!m?null:{sid:d,authType:m,rsaE:p.e||"",rsaN:p.n||""}}catch{return null}}static async discoverAvailableServer(e){let o=this.extractDomain(e);if(!o)throw new j(`Cannot extract domain from email: ${e}`);console.log(`Querying domain: ${o}`);let t=await this.queryDomain(o);if(t.length===0)throw new j(`No server addresses found for domain: ${o}`);console.log(`Found ${t.length} server addresses:`);for(let i of t)console.log(` - ${i.type}: ${i.apiUrl}`);for(let i of t){console.log(`Trying server: ${i.type} (${i.apiUrl})`);let s=await this.testServerAvailability(i.baseUrl,i.apiPath,e);if(s)return console.log(`Server available: ${i.type}`),[i,s]}throw new j("All server addresses are unavailable")}},F=class{_baseUrl;apiPath;headers;timeout;_cookies={};constructor(e,o={}){this._baseUrl=e.replace(/\/$/,""),this.apiPath=o.apiPath||"/lunkr/s/json",this.headers=o.headers||{},this.timeout=o.timeout||2e4}get baseUrl(){return this._baseUrl}get apiUrl(){return`${this._baseUrl}${this.apiPath}`}get cookies(){return this._cookies}setCookies(e){this._cookies=e}async postJson(e){let o={func:e.func};e.sid&&(o.sid=e.sid),e.query&&Object.assign(o,e.query);let t=Object.entries(o).map(([u,p])=>`${encodeURIComponent(u)}=${encodeURIComponent(String(p))}`).join("&"),i=`${this.apiUrl}?${t}`,s={"Content-Type":"text/x-json; charset=UTF-8",...this.headers};Object.keys(this.cookies).length>0&&(s.Cookie=Object.entries(this.cookies).map(([u,p])=>`${u}=${p}`).join("; "));let a=JSON.stringify(e.payload||{});e.debug&&(console.log(`[postJson] URL: ${i}`),console.log(`[postJson] headers: ${JSON.stringify(s)}`),console.log(`[postJson] body: ${a}`));let r=await ve(i,a,s,this.timeout),c=r.headers["set-cookie"];if(c){let u=c.split(/, (?=[^=]+=[^;]+)/);for(let p of u){let d=p.match(/^([^=]+)=([^;]+)/);d&&(this._cookies[d[1].trim()]=d[2].trim())}}try{return JSON.parse(r.data)}catch{throw new j(`API returned non-JSON: ${r.data?.substring?.(0,400)||r.data}`)}}async checkSessionValid(e){try{return(await this.postJson({func:"cim.common:getOrgInfo",sid:e})).code==="S_OK"}catch{return!1}}}});import*as Ms from"https";import*as Bs from"http";import{WebSocket as lt}from"ws";import{v4 as ou}from"uuid";function fo(...n){process.env.LUNKR_VERBOSE==="1"&&console.log("[SocketIO]",...n)}var tn,go=ce(()=>{on();tn=class n{baseUrl;cookies;eventCallbacks;ws=null;connected=!1;websocketUrl=null;eioSid="";pingInterval=25e3;running=!1;authDone=!1;sessionId="";uid="";username="";pingTimer=null;waitResolve=null;autoReconnect;static authLoginIndex=1;constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.cookies=e.cookies,this.eventCallbacks=e.eventCallbacks||{},this.uid=e.uid||"",this.username=e.username||"",this.autoReconnect=e.autoReconnect??!0}static fromLunkrConfig(e,o,t,i){let s={"Cim.sid":o};for(let r of t.split(";")){let c=r.trim();if(c.includes("=")){let[u,p]=c.split("=",2);s[u.trim()]=p.trim()}}let a=new n({baseUrl:e,cookies:s,eventCallbacks:i?.eventCallbacks,uid:i?.uid,username:i?.username,autoReconnect:i?.autoReconnect});return a.sessionId=o,a}buildCookieHeader(){return Object.entries(this.cookies).map(([e,o])=>`${e}=${o}`).join("; ")}async getWebSocketUrl(){if(this.websocketUrl)return this.websocketUrl;let e=this.buildCookieHeader(),o=`${this.baseUrl}/lunkr/s/json?func=cim.common:getWebSocketURL&uid=${encodeURIComponent(this.username)}&sid=${encodeURIComponent(this.sessionId)}`;try{let t=await Ge(o,{Cookie:e},1e4),i=JSON.parse(t.data);return i?.code==="S_OK"?(this.websocketUrl=typeof i.var=="string"?i.var:i.var?.webSocketURL,this.websocketUrl):(console.error("getWebSocketURL failed:",i),null)}catch(t){return console.error("getWebSocketURL request failed:",t),null}}async callSioSubscribe(){let e=this.buildCookieHeader(),o=`${this.baseUrl}/lunkr/s/json?func=cim.common:sioSubscribe&sid=${encodeURIComponent(this.sessionId)}`;try{let t=await ve(o,"{}",{Cookie:e},1e4),i=JSON.parse(t.data),s=i?.code==="S_OK";return s||console.error("sioSubscribe failed:",i),s}catch(t){return console.error("sioSubscribe exception:",t),!1}}async performHandshake(){let e=await this.getWebSocketUrl();if(!e)return!1;await this.callSioSubscribe();let o=this.buildCookieHeader();try{let a=`${e}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=(await Ge(a,{Cookie:o},1e4)).data,u=c.indexOf('0{"sid"');if(u>=0&&(c=c.substring(u)),!c.startsWith("0{"))return console.error("Handshake response format error:",c.substring(0,80)),!1;let p=JSON.parse(c.substring(1));if(this.eioSid=p.sid,this.pingInterval=p.pingInterval??25e3,!p.upgrades?.includes("websocket"))return console.error("Server does not support WebSocket upgrade"),!1}catch(a){return console.error("Socket.IO HTTP handshake failed:",a),!1}let t=e.startsWith("https://"),i=e.replace(/^https?:\/\//,""),s=`${t?"wss":"ws"}://${i}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(this.eioSid)}`;return new Promise(a=>{this.ws=new lt(s,{headers:{Cookie:this.buildCookieHeader()},agent:t?new Ms.Agent({rejectUnauthorized:!1}):new Bs.Agent}),this.ws.once("open",()=>{fo("WebSocket open, sending 2probe"),this.ws.send("2probe")}),this.ws.once("message",r=>{let c=r.toString();fo("Received during handshake:",c.substring(0,50)),c.includes("3probe")?(fo("Upgrade confirmed, sending 5"),this.ws.send("5"),this.connected=!0,this.running=!0,this.startMessageLoop(),this.startPingLoop(),fo("Connection complete, connected=true, running=true"),a(!0)):(console.error("[SocketIO] Upgrade handshake failed, received:",c.substring(0,50)),a(!1))}),this.ws.once("error",r=>{console.error("WebSocket connection failed:",r.message),a(!1)})})}startMessageLoop(){this.ws&&(this.ws.on("message",e=>{this.handleFrame(e.toString())}),this.ws.on("close",()=>{this.connected=!1,this.authDone=!1,this.stopPingLoop(),this.handleEvent("disconnect",{}),this.waitResolve&&(this.waitResolve(),this.waitResolve=null),this.running&&this.autoReconnect&&setTimeout(()=>this.reconnect(),5e3)}),this.ws.on("error",e=>{console.error("[SocketIO] WebSocket error:",e.message)}))}startPingLoop(){this.pingTimer=setInterval(()=>{this.connected&&this.ws?.readyState===lt.OPEN&&this.ws.send("2")},this.pingInterval)}stopPingLoop(){this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}handleFrame(e){if(e){if(e[0]==="2"){this.ws?.send("3");return}if(e[0]==="4"&&e.length>1){let o=e[1];if(o==="0"){this.handleEvent("connect",{}),this.authDone||this.sendAuth();return}if(o==="1"){this.connected=!1;return}if(o==="2"){try{let t=JSON.parse(e.substring(2));if(Array.isArray(t)&&t.length>=2){let i=t[0],s=t[1];i==="ready"&&(this.authDone=!0),this.handleEvent(i,s)}}catch{}return}}}}sendAuth(){let e=`pc:${this.sessionId}_${n.authLoginIndex++}`,o=this.cookies.Cim||"";this.emit("auth",{username:this.username,clientId:e,password:`{SES}${this.sessionId}:${o}`,uid:this.uid,uuid:ou()})}handleEvent(e,o){let t=this.eventCallbacks[e];if(t)try{t(o)}catch(i){console.error(`${e} callback error:`,i)}}async connect(){return this.performHandshake()}async reconnect(){this.connected=!1,this.authDone=!1,this.eioSid="",this.websocketUrl=null;try{this.ws?.close()}catch{}this.ws=null,await this.performHandshake()}disconnect(){this.running=!1,this.stopPingLoop();try{this.ws?.send("0")}catch{}try{this.ws?.close()}catch{}this.connected=!1}emit(e,o){if(!this.connected||this.ws?.readyState!==lt.OPEN)return!1;try{return this.ws.send(`42${JSON.stringify([e,o])}`),!0}catch{return!1}}isConnected(){return this.connected}isAuthenticated(){return this.authDone}onDisconnect(e){let o=this.eventCallbacks.disconnect;o?this.eventCallbacks.disconnect=t=>{o(t),e()}:this.eventCallbacks.disconnect=()=>e()}wait(){return!this.ws||!this.connected?Promise.resolve():new Promise(e=>{this.waitResolve=e})}}});var ut=A((df,zs)=>{zs.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ke=A(sn=>{var pt,su=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];sn.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};sn.getSymbolTotalCodewords=function(e){return su[e]};sn.getBCHDigit=function(n){let e=0;for(;n!==0;)e++,n>>>=1;return e};sn.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=e};sn.isKanjiModeEnabled=function(){return typeof pt<"u"};sn.toSJIS=function(e){return pt(e)}});var ho=A(me=>{me.L={bit:1};me.M={bit:0};me.Q={bit:3};me.H={bit:2};function au(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return me.L;case"m":case"medium":return me.M;case"q":case"quartile":return me.Q;case"h":case"high":return me.H;default:throw new Error("Unknown EC Level: "+n)}}me.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};me.from=function(e,o){if(me.isValid(e))return e;try{return au(e)}catch{return o}}});var Vs=A((gf,Hs)=>{function Ks(){this.buffer=[],this.length=0}Ks.prototype={get:function(n){let e=Math.floor(n/8);return(this.buffer[e]>>>7-n%8&1)===1},put:function(n,e){for(let o=0;o<e;o++)this.putBit((n>>>e-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(n){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),n&&(this.buffer[e]|=128>>>this.length%8),this.length++}};Hs.exports=Ks});var Js=A((hf,Ws)=>{function Dn(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}Dn.prototype.set=function(n,e,o,t){let i=n*this.size+e;this.data[i]=o,t&&(this.reservedBit[i]=!0)};Dn.prototype.get=function(n,e){return this.data[n*this.size+e]};Dn.prototype.xor=function(n,e,o){this.data[n*this.size+e]^=o};Dn.prototype.isReserved=function(n,e){return this.reservedBit[n*this.size+e]};Ws.exports=Dn});var Ys=A(xo=>{var ru=Ke().getSymbolSize;xo.getRowColCoords=function(e){if(e===1)return[];let o=Math.floor(e/7)+2,t=ru(e),i=t===145?26:Math.ceil((t-13)/(2*o-2))*2,s=[t-7];for(let a=1;a<o-1;a++)s[a]=s[a-1]-i;return s.push(6),s.reverse()};xo.getPositions=function(e){let o=[],t=xo.getRowColCoords(e),i=t.length;for(let s=0;s<i;s++)for(let a=0;a<i;a++)s===0&&a===0||s===0&&a===i-1||s===i-1&&a===0||o.push([t[s],t[a]]);return o}});var Zs=A(Xs=>{var cu=Ke().getSymbolSize,Qs=7;Xs.getPositions=function(e){let o=cu(e);return[[0,0],[o-Qs,0],[0,o-Qs]]}});var ea=A(D=>{D.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var an={N1:3,N2:3,N3:40,N4:10};D.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};D.from=function(e){return D.isValid(e)?parseInt(e,10):void 0};D.getPenaltyN1=function(e){let o=e.size,t=0,i=0,s=0,a=null,r=null;for(let c=0;c<o;c++){i=s=0,a=r=null;for(let u=0;u<o;u++){let p=e.get(c,u);p===a?i++:(i>=5&&(t+=an.N1+(i-5)),a=p,i=1),p=e.get(u,c),p===r?s++:(s>=5&&(t+=an.N1+(s-5)),r=p,s=1)}i>=5&&(t+=an.N1+(i-5)),s>=5&&(t+=an.N1+(s-5))}return t};D.getPenaltyN2=function(e){let o=e.size,t=0;for(let i=0;i<o-1;i++)for(let s=0;s<o-1;s++){let a=e.get(i,s)+e.get(i,s+1)+e.get(i+1,s)+e.get(i+1,s+1);(a===4||a===0)&&t++}return t*an.N2};D.getPenaltyN3=function(e){let o=e.size,t=0,i=0,s=0;for(let a=0;a<o;a++){i=s=0;for(let r=0;r<o;r++)i=i<<1&2047|e.get(a,r),r>=10&&(i===1488||i===93)&&t++,s=s<<1&2047|e.get(r,a),r>=10&&(s===1488||s===93)&&t++}return t*an.N3};D.getPenaltyN4=function(e){let o=0,t=e.data.length;for(let s=0;s<t;s++)o+=e.data[s];return Math.abs(Math.ceil(o*100/t/5)-10)*an.N4};function lu(n,e,o){switch(n){case D.Patterns.PATTERN000:return(e+o)%2===0;case D.Patterns.PATTERN001:return e%2===0;case D.Patterns.PATTERN010:return o%3===0;case D.Patterns.PATTERN011:return(e+o)%3===0;case D.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(o/3))%2===0;case D.Patterns.PATTERN101:return e*o%2+e*o%3===0;case D.Patterns.PATTERN110:return(e*o%2+e*o%3)%2===0;case D.Patterns.PATTERN111:return(e*o%3+(e+o)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}D.applyMask=function(e,o){let t=o.size;for(let i=0;i<t;i++)for(let s=0;s<t;s++)o.isReserved(s,i)||o.xor(s,i,lu(e,s,i))};D.getBestMask=function(e,o){let t=Object.keys(D.Patterns).length,i=0,s=1/0;for(let a=0;a<t;a++){o(a),D.applyMask(a,e);let r=D.getPenaltyN1(e)+D.getPenaltyN2(e)+D.getPenaltyN3(e)+D.getPenaltyN4(e);D.applyMask(a,e),r<s&&(s=r,i=a)}return i}});var mt=A(dt=>{var He=ho(),vo=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],bo=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];dt.getBlocksCount=function(e,o){switch(o){case He.L:return vo[(e-1)*4+0];case He.M:return vo[(e-1)*4+1];case He.Q:return vo[(e-1)*4+2];case He.H:return vo[(e-1)*4+3];default:return}};dt.getTotalCodewordsCount=function(e,o){switch(o){case He.L:return bo[(e-1)*4+0];case He.M:return bo[(e-1)*4+1];case He.Q:return bo[(e-1)*4+2];case He.H:return bo[(e-1)*4+3];default:return}}});var na=A(ko=>{var Nn=new Uint8Array(512),yo=new Uint8Array(256);(function(){let e=1;for(let o=0;o<255;o++)Nn[o]=e,yo[e]=o,e<<=1,e&256&&(e^=285);for(let o=255;o<512;o++)Nn[o]=Nn[o-255]})();ko.log=function(e){if(e<1)throw new Error("log("+e+")");return yo[e]};ko.exp=function(e){return Nn[e]};ko.mul=function(e,o){return e===0||o===0?0:Nn[yo[e]+yo[o]]}});var oa=A(Mn=>{var ft=na();Mn.mul=function(e,o){let t=new Uint8Array(e.length+o.length-1);for(let i=0;i<e.length;i++)for(let s=0;s<o.length;s++)t[i+s]^=ft.mul(e[i],o[s]);return t};Mn.mod=function(e,o){let t=new Uint8Array(e);for(;t.length-o.length>=0;){let i=t[0];for(let a=0;a<o.length;a++)t[a]^=ft.mul(o[a],i);let s=0;for(;s<t.length&&t[s]===0;)s++;t=t.slice(s)}return t};Mn.generateECPolynomial=function(e){let o=new Uint8Array([1]);for(let t=0;t<e;t++)o=Mn.mul(o,new Uint8Array([1,ft.exp(t)]));return o}});var sa=A((Cf,ia)=>{var ta=oa();function gt(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}gt.prototype.initialize=function(e){this.degree=e,this.genPoly=ta.generateECPolynomial(this.degree)};gt.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let o=new Uint8Array(e.length+this.degree);o.set(e);let t=ta.mod(o,this.genPoly),i=this.degree-t.length;if(i>0){let s=new Uint8Array(this.degree);return s.set(t,i),s}return t};ia.exports=gt});var ht=A(aa=>{aa.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var xt=A(Ee=>{var ra="[0-9]+",uu="[A-Z $%*+\\-./:]+",Bn="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Bn=Bn.replace(/u/g,"\\u");var pu="(?:(?![A-Z0-9 $%*+\\-./:]|"+Bn+`)(?:.|[\r
|
|
2
|
+
]))+`;Ee.KANJI=new RegExp(Bn,"g");Ee.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Ee.BYTE=new RegExp(pu,"g");Ee.NUMERIC=new RegExp(ra,"g");Ee.ALPHANUMERIC=new RegExp(uu,"g");var du=new RegExp("^"+Bn+"$"),mu=new RegExp("^"+ra+"$"),fu=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Ee.testKanji=function(e){return du.test(e)};Ee.testNumeric=function(e){return mu.test(e)};Ee.testAlphanumeric=function(e){return fu.test(e)}});var Ve=A(z=>{var gu=ht(),vt=xt();z.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};z.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};z.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};z.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};z.MIXED={bit:-1};z.getCharCountIndicator=function(e,o){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!gu.isValid(o))throw new Error("Invalid version: "+o);return o>=1&&o<10?e.ccBits[0]:o<27?e.ccBits[1]:e.ccBits[2]};z.getBestModeForData=function(e){return vt.testNumeric(e)?z.NUMERIC:vt.testAlphanumeric(e)?z.ALPHANUMERIC:vt.testKanji(e)?z.KANJI:z.BYTE};z.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};z.isValid=function(e){return e&&e.bit&&e.ccBits};function hu(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return z.NUMERIC;case"alphanumeric":return z.ALPHANUMERIC;case"kanji":return z.KANJI;case"byte":return z.BYTE;default:throw new Error("Unknown mode: "+n)}}z.from=function(e,o){if(z.isValid(e))return e;try{return hu(e)}catch{return o}}});var da=A(rn=>{var wo=Ke(),xu=mt(),ca=ho(),We=Ve(),bt=ht(),ua=7973,la=wo.getBCHDigit(ua);function vu(n,e,o){for(let t=1;t<=40;t++)if(e<=rn.getCapacity(t,o,n))return t}function pa(n,e){return We.getCharCountIndicator(n,e)+4}function bu(n,e){let o=0;return n.forEach(function(t){let i=pa(t.mode,e);o+=i+t.getBitsLength()}),o}function yu(n,e){for(let o=1;o<=40;o++)if(bu(n,o)<=rn.getCapacity(o,e,We.MIXED))return o}rn.from=function(e,o){return bt.isValid(e)?parseInt(e,10):o};rn.getCapacity=function(e,o,t){if(!bt.isValid(e))throw new Error("Invalid QR Code version");typeof t>"u"&&(t=We.BYTE);let i=wo.getSymbolTotalCodewords(e),s=xu.getTotalCodewordsCount(e,o),a=(i-s)*8;if(t===We.MIXED)return a;let r=a-pa(t,e);switch(t){case We.NUMERIC:return Math.floor(r/10*3);case We.ALPHANUMERIC:return Math.floor(r/11*2);case We.KANJI:return Math.floor(r/13);case We.BYTE:default:return Math.floor(r/8)}};rn.getBestVersionForData=function(e,o){let t,i=ca.from(o,ca.M);if(Array.isArray(e)){if(e.length>1)return yu(e,i);if(e.length===0)return 1;t=e[0]}else t=e;return vu(t.mode,t.getLength(),i)};rn.getEncodedBits=function(e){if(!bt.isValid(e)||e<7)throw new Error("Invalid QR Code version");let o=e<<12;for(;wo.getBCHDigit(o)-la>=0;)o^=ua<<wo.getBCHDigit(o)-la;return e<<12|o}});var ha=A(ga=>{var yt=Ke(),fa=1335,ku=21522,ma=yt.getBCHDigit(fa);ga.getEncodedBits=function(e,o){let t=e.bit<<3|o,i=t<<10;for(;yt.getBCHDigit(i)-ma>=0;)i^=fa<<yt.getBCHDigit(i)-ma;return(t<<10|i)^ku}});var va=A((If,xa)=>{var wu=Ve();function xn(n){this.mode=wu.NUMERIC,this.data=n.toString()}xn.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};xn.prototype.getLength=function(){return this.data.length};xn.prototype.getBitsLength=function(){return xn.getBitsLength(this.data.length)};xn.prototype.write=function(e){let o,t,i;for(o=0;o+3<=this.data.length;o+=3)t=this.data.substr(o,3),i=parseInt(t,10),e.put(i,10);let s=this.data.length-o;s>0&&(t=this.data.substr(o),i=parseInt(t,10),e.put(i,s*3+1))};xa.exports=xn});var ya=A((Pf,ba)=>{var Cu=Ve(),kt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function vn(n){this.mode=Cu.ALPHANUMERIC,this.data=n}vn.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};vn.prototype.getLength=function(){return this.data.length};vn.prototype.getBitsLength=function(){return vn.getBitsLength(this.data.length)};vn.prototype.write=function(e){let o;for(o=0;o+2<=this.data.length;o+=2){let t=kt.indexOf(this.data[o])*45;t+=kt.indexOf(this.data[o+1]),e.put(t,11)}this.data.length%2&&e.put(kt.indexOf(this.data[o]),6)};ba.exports=vn});var wa=A((Uf,ka)=>{var _u=Ve();function bn(n){this.mode=_u.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}bn.getBitsLength=function(e){return e*8};bn.prototype.getLength=function(){return this.data.length};bn.prototype.getBitsLength=function(){return bn.getBitsLength(this.data.length)};bn.prototype.write=function(n){for(let e=0,o=this.data.length;e<o;e++)n.put(this.data[e],8)};ka.exports=bn});var _a=A((Tf,Ca)=>{var Su=Ve(),Au=Ke();function yn(n){this.mode=Su.KANJI,this.data=n}yn.getBitsLength=function(e){return e*13};yn.prototype.getLength=function(){return this.data.length};yn.prototype.getBitsLength=function(){return yn.getBitsLength(this.data.length)};yn.prototype.write=function(n){let e;for(e=0;e<this.data.length;e++){let o=Au.toSJIS(this.data[e]);if(o>=33088&&o<=40956)o-=33088;else if(o>=57408&&o<=60351)o-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
|
|
3
|
+
Make sure your charset is UTF-8`);o=(o>>>8&255)*192+(o&255),n.put(o,13)}};Ca.exports=yn});var Sa=A((Of,wt)=>{"use strict";var Gn={single_source_shortest_paths:function(n,e,o){var t={},i={};i[e]=0;var s=Gn.PriorityQueue.make();s.push(e,0);for(var a,r,c,u,p,d,m,f,h;!s.empty();){a=s.pop(),r=a.value,u=a.cost,p=n[r]||{};for(c in p)p.hasOwnProperty(c)&&(d=p[c],m=u+d,f=i[c],h=typeof i[c]>"u",(h||f>m)&&(i[c]=m,s.push(c,m),t[c]=r))}if(typeof o<"u"&&typeof i[o]>"u"){var x=["Could not find a path from ",e," to ",o,"."].join("");throw new Error(x)}return t},extract_shortest_path_from_predecessor_list:function(n,e){for(var o=[],t=e,i;t;)o.push(t),i=n[t],t=n[t];return o.reverse(),o},find_path:function(n,e,o){var t=Gn.single_source_shortest_paths(n,e,o);return Gn.extract_shortest_path_from_predecessor_list(t,o)},PriorityQueue:{make:function(n){var e=Gn.PriorityQueue,o={},t;n=n||{};for(t in e)e.hasOwnProperty(t)&&(o[t]=e[t]);return o.queue=[],o.sorter=n.sorter||e.default_sorter,o},default_sorter:function(n,e){return n.cost-e.cost},push:function(n,e){var o={value:n,cost:e};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof wt<"u"&&(wt.exports=Gn)});var Oa=A(kn=>{var $=Ve(),La=va(),Ia=ya(),Pa=wa(),Ua=_a(),zn=xt(),Co=Ke(),Ru=Sa();function Aa(n){return unescape(encodeURIComponent(n)).length}function Kn(n,e,o){let t=[],i;for(;(i=n.exec(o))!==null;)t.push({data:i[0],index:i.index,mode:e,length:i[0].length});return t}function Ta(n){let e=Kn(zn.NUMERIC,$.NUMERIC,n),o=Kn(zn.ALPHANUMERIC,$.ALPHANUMERIC,n),t,i;return Co.isKanjiModeEnabled()?(t=Kn(zn.BYTE,$.BYTE,n),i=Kn(zn.KANJI,$.KANJI,n)):(t=Kn(zn.BYTE_KANJI,$.BYTE,n),i=[]),e.concat(o,t,i).sort(function(a,r){return a.index-r.index}).map(function(a){return{data:a.data,mode:a.mode,length:a.length}})}function Ct(n,e){switch(e){case $.NUMERIC:return La.getBitsLength(n);case $.ALPHANUMERIC:return Ia.getBitsLength(n);case $.KANJI:return Ua.getBitsLength(n);case $.BYTE:return Pa.getBitsLength(n)}}function Lu(n){return n.reduce(function(e,o){let t=e.length-1>=0?e[e.length-1]:null;return t&&t.mode===o.mode?(e[e.length-1].data+=o.data,e):(e.push(o),e)},[])}function Iu(n){let e=[];for(let o=0;o<n.length;o++){let t=n[o];switch(t.mode){case $.NUMERIC:e.push([t,{data:t.data,mode:$.ALPHANUMERIC,length:t.length},{data:t.data,mode:$.BYTE,length:t.length}]);break;case $.ALPHANUMERIC:e.push([t,{data:t.data,mode:$.BYTE,length:t.length}]);break;case $.KANJI:e.push([t,{data:t.data,mode:$.BYTE,length:Aa(t.data)}]);break;case $.BYTE:e.push([{data:t.data,mode:$.BYTE,length:Aa(t.data)}])}}return e}function Pu(n,e){let o={},t={start:{}},i=["start"];for(let s=0;s<n.length;s++){let a=n[s],r=[];for(let c=0;c<a.length;c++){let u=a[c],p=""+s+c;r.push(p),o[p]={node:u,lastCount:0},t[p]={};for(let d=0;d<i.length;d++){let m=i[d];o[m]&&o[m].node.mode===u.mode?(t[m][p]=Ct(o[m].lastCount+u.length,u.mode)-Ct(o[m].lastCount,u.mode),o[m].lastCount+=u.length):(o[m]&&(o[m].lastCount=u.length),t[m][p]=Ct(u.length,u.mode)+4+$.getCharCountIndicator(u.mode,e))}}i=r}for(let s=0;s<i.length;s++)t[i[s]].end=0;return{map:t,table:o}}function Ra(n,e){let o,t=$.getBestModeForData(n);if(o=$.from(e,t),o!==$.BYTE&&o.bit<t.bit)throw new Error('"'+n+'" cannot be encoded with mode '+$.toString(o)+`.
|
|
4
|
+
Suggested mode is: `+$.toString(t));switch(o===$.KANJI&&!Co.isKanjiModeEnabled()&&(o=$.BYTE),o){case $.NUMERIC:return new La(n);case $.ALPHANUMERIC:return new Ia(n);case $.KANJI:return new Ua(n);case $.BYTE:return new Pa(n)}}kn.fromArray=function(e){return e.reduce(function(o,t){return typeof t=="string"?o.push(Ra(t,null)):t.data&&o.push(Ra(t.data,t.mode)),o},[])};kn.fromString=function(e,o){let t=Ta(e,Co.isKanjiModeEnabled()),i=Iu(t),s=Pu(i,o),a=Ru.find_path(s.map,"start","end"),r=[];for(let c=1;c<a.length-1;c++)r.push(s.table[a[c]].node);return kn.fromArray(Lu(r))};kn.rawSplit=function(e){return kn.fromArray(Ta(e,Co.isKanjiModeEnabled()))}});var It=A(Ea=>{var So=Ke(),_t=ho(),Uu=Vs(),Tu=Js(),Ou=Ys(),Eu=Zs(),Rt=ea(),Lt=mt(),ju=sa(),_o=da(),Fu=ha(),$u=Ve(),St=Oa();function qu(n,e){let o=n.size,t=Eu.getPositions(e);for(let i=0;i<t.length;i++){let s=t[i][0],a=t[i][1];for(let r=-1;r<=7;r++)if(!(s+r<=-1||o<=s+r))for(let c=-1;c<=7;c++)a+c<=-1||o<=a+c||(r>=0&&r<=6&&(c===0||c===6)||c>=0&&c<=6&&(r===0||r===6)||r>=2&&r<=4&&c>=2&&c<=4?n.set(s+r,a+c,!0,!0):n.set(s+r,a+c,!1,!0))}}function Du(n){let e=n.size;for(let o=8;o<e-8;o++){let t=o%2===0;n.set(o,6,t,!0),n.set(6,o,t,!0)}}function Nu(n,e){let o=Ou.getPositions(e);for(let t=0;t<o.length;t++){let i=o[t][0],s=o[t][1];for(let a=-2;a<=2;a++)for(let r=-2;r<=2;r++)a===-2||a===2||r===-2||r===2||a===0&&r===0?n.set(i+a,s+r,!0,!0):n.set(i+a,s+r,!1,!0)}}function Mu(n,e){let o=n.size,t=_o.getEncodedBits(e),i,s,a;for(let r=0;r<18;r++)i=Math.floor(r/3),s=r%3+o-8-3,a=(t>>r&1)===1,n.set(i,s,a,!0),n.set(s,i,a,!0)}function At(n,e,o){let t=n.size,i=Fu.getEncodedBits(e,o),s,a;for(s=0;s<15;s++)a=(i>>s&1)===1,s<6?n.set(s,8,a,!0):s<8?n.set(s+1,8,a,!0):n.set(t-15+s,8,a,!0),s<8?n.set(8,t-s-1,a,!0):s<9?n.set(8,15-s-1+1,a,!0):n.set(8,15-s-1,a,!0);n.set(t-8,8,1,!0)}function Bu(n,e){let o=n.size,t=-1,i=o-1,s=7,a=0;for(let r=o-1;r>0;r-=2)for(r===6&&r--;;){for(let c=0;c<2;c++)if(!n.isReserved(i,r-c)){let u=!1;a<e.length&&(u=(e[a]>>>s&1)===1),n.set(i,r-c,u),s--,s===-1&&(a++,s=7)}if(i+=t,i<0||o<=i){i-=t,t=-t;break}}}function Gu(n,e,o){let t=new Uu;o.forEach(function(c){t.put(c.mode.bit,4),t.put(c.getLength(),$u.getCharCountIndicator(c.mode,n)),c.write(t)});let i=So.getSymbolTotalCodewords(n),s=Lt.getTotalCodewordsCount(n,e),a=(i-s)*8;for(t.getLengthInBits()+4<=a&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(0);let r=(a-t.getLengthInBits())/8;for(let c=0;c<r;c++)t.put(c%2?17:236,8);return zu(t,n,e)}function zu(n,e,o){let t=So.getSymbolTotalCodewords(e),i=Lt.getTotalCodewordsCount(e,o),s=t-i,a=Lt.getBlocksCount(e,o),r=t%a,c=a-r,u=Math.floor(t/a),p=Math.floor(s/a),d=p+1,m=u-p,f=new ju(m),h=0,x=new Array(a),g=new Array(a),v=0,w=new Uint8Array(n.buffer);for(let S=0;S<a;S++){let T=S<c?p:d;x[S]=w.slice(h,h+T),g[S]=f.encode(x[S]),h+=T,v=Math.max(v,T)}let y=new Uint8Array(t),k=0,C,b;for(C=0;C<v;C++)for(b=0;b<a;b++)C<x[b].length&&(y[k++]=x[b][C]);for(C=0;C<m;C++)for(b=0;b<a;b++)y[k++]=g[b][C];return y}function Ku(n,e,o,t){let i;if(Array.isArray(n))i=St.fromArray(n);else if(typeof n=="string"){let u=e;if(!u){let p=St.rawSplit(n);u=_o.getBestVersionForData(p,o)}i=St.fromString(n,u||40)}else throw new Error("Invalid data");let s=_o.getBestVersionForData(i,o);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(`
|
|
5
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
6
|
+
Minimum version required to store current data is: `+s+`.
|
|
7
|
+
`);let a=Gu(e,o,i),r=So.getSymbolSize(e),c=new Tu(r);return qu(c,e),Du(c),Nu(c,e),At(c,o,0),e>=7&&Mu(c,e),Bu(c,a),isNaN(t)&&(t=Rt.getBestMask(c,At.bind(null,c,o))),Rt.applyMask(t,c),At(c,o,t),{modules:c,version:e,errorCorrectionLevel:o,maskPattern:t,segments:i}}Ea.create=function(e,o){if(typeof e>"u"||e==="")throw new Error("No input text");let t=_t.M,i,s;return typeof o<"u"&&(t=_t.from(o.errorCorrectionLevel,_t.M),i=_o.from(o.version),s=Rt.from(o.maskPattern),o.toSJISFunc&&So.setToSJISFunction(o.toSJISFunc)),Ku(e,i,t,s)}});var Pt=A((Ff,Fa)=>{"use strict";var Hu=G("util"),ja=G("stream"),be=Fa.exports=function(){ja.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Hu.inherits(be,ja);be.prototype.read=function(n,e){this._reads.push({length:Math.abs(n),allowLess:n<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};be.prototype.write=function(n,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let o;return Buffer.isBuffer(n)?o=n:o=Buffer.from(n,e||this._encoding),this._buffers.push(o),this._buffered+=o.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};be.prototype.end=function(n,e){n&&this.write(n,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};be.prototype.destroySoon=be.prototype.end;be.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};be.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};be.prototype._processReadAllowingLess=function(n){this._reads.shift();let e=this._buffers[0];e.length>n.length?(this._buffered-=n.length,this._buffers[0]=e.slice(n.length),n.func.call(this,e.slice(0,n.length))):(this._buffered-=e.length,this._buffers.shift(),n.func.call(this,e))};be.prototype._processRead=function(n){this._reads.shift();let e=0,o=0,t=Buffer.alloc(n.length);for(;e<n.length;){let i=this._buffers[o++],s=Math.min(i.length,n.length-e);i.copy(t,e,0,s),e+=s,s!==i.length&&(this._buffers[--o]=i.slice(s))}o>0&&this._buffers.splice(0,o),this._buffered-=n.length,n.func.call(this,t)};be.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let n=this._reads[0];if(n.allowLess)this._processReadAllowingLess(n);else if(this._buffered>=n.length)this._processRead(n);else break}this._buffers&&!this.writable&&this._end()}catch(n){this.emit("error",n)}}});var Tt=A(Ut=>{"use strict";var Je=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];Ut.getImagePasses=function(n,e){let o=[],t=n%8,i=e%8,s=(n-t)/8,a=(e-i)/8;for(let r=0;r<Je.length;r++){let c=Je[r],u=s*c.x.length,p=a*c.y.length;for(let d=0;d<c.x.length&&c.x[d]<t;d++)u++;for(let d=0;d<c.y.length&&c.y[d]<i;d++)p++;u>0&&p>0&&o.push({width:u,height:p,index:r})}return o};Ut.getInterlaceIterator=function(n){return function(e,o,t){let i=e%Je[t].x.length,s=(e-i)/Je[t].x.length*8+Je[t].x[i],a=o%Je[t].y.length,r=(o-a)/Je[t].y.length*8+Je[t].y[a];return s*4+r*n*4}}});var Ot=A((qf,$a)=>{"use strict";$a.exports=function(e,o,t){let i=e+o-t,s=Math.abs(i-e),a=Math.abs(i-o),r=Math.abs(i-t);return s<=a&&s<=r?e:a<=r?o:t}});var Et=A((Df,Da)=>{"use strict";var Vu=Tt(),Wu=Ot();function qa(n,e,o){let t=n*e;return o!==8&&(t=Math.ceil(t/(8/o))),t}var wn=Da.exports=function(n,e){let o=n.width,t=n.height,i=n.interlace,s=n.bpp,a=n.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let r=Vu.getImagePasses(o,t);for(let c=0;c<r.length;c++)this._images.push({byteWidth:qa(r[c].width,s,a),height:r[c].height,lineIndex:0})}else this._images.push({byteWidth:qa(o,s,a),height:t,lineIndex:0});a===8?this._xComparison=s:a===16?this._xComparison=s*2:this._xComparison=1};wn.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};wn.prototype._unFilterType1=function(n,e,o){let t=this._xComparison,i=t-1;for(let s=0;s<o;s++){let a=n[1+s],r=s>i?e[s-t]:0;e[s]=a+r}};wn.prototype._unFilterType2=function(n,e,o){let t=this._lastLine;for(let i=0;i<o;i++){let s=n[1+i],a=t?t[i]:0;e[i]=s+a}};wn.prototype._unFilterType3=function(n,e,o){let t=this._xComparison,i=t-1,s=this._lastLine;for(let a=0;a<o;a++){let r=n[1+a],c=s?s[a]:0,u=a>i?e[a-t]:0,p=Math.floor((u+c)/2);e[a]=r+p}};wn.prototype._unFilterType4=function(n,e,o){let t=this._xComparison,i=t-1,s=this._lastLine;for(let a=0;a<o;a++){let r=n[1+a],c=s?s[a]:0,u=a>i?e[a-t]:0,p=a>i&&s?s[a-t]:0,d=Wu(u,c,p);e[a]=r+d}};wn.prototype._reverseFilterLine=function(n){let e=n[0],o,t=this._images[this._imageIndex],i=t.byteWidth;if(e===0)o=n.slice(1,i+1);else switch(o=Buffer.alloc(i),e){case 1:this._unFilterType1(n,o,i);break;case 2:this._unFilterType2(n,o,i);break;case 3:this._unFilterType3(n,o,i);break;case 4:this._unFilterType4(n,o,i);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(o),t.lineIndex++,t.lineIndex>=t.height?(this._lastLine=null,this._imageIndex++,t=this._images[this._imageIndex]):this._lastLine=o,t?this.read(t.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var Ba=A((Nf,Ma)=>{"use strict";var Ju=G("util"),Na=Pt(),Yu=Et(),Qu=Ma.exports=function(n){Na.call(this);let e=[],o=this;this._filter=new Yu(n,{read:this.read.bind(this),write:function(t){e.push(t)},complete:function(){o.emit("complete",Buffer.concat(e))}}),this._filter.start()};Ju.inherits(Qu,Na)});var Cn=A((Mf,Ga)=>{"use strict";Ga.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var $t=A((Bf,za)=>{"use strict";var jt=[];(function(){for(let n=0;n<256;n++){let e=n;for(let o=0;o<8;o++)e&1?e=3988292384^e>>>1:e=e>>>1;jt[n]=e}})();var Ft=za.exports=function(){this._crc=-1};Ft.prototype.write=function(n){for(let e=0;e<n.length;e++)this._crc=jt[(this._crc^n[e])&255]^this._crc>>>8;return!0};Ft.prototype.crc32=function(){return this._crc^-1};Ft.crc32=function(n){let e=-1;for(let o=0;o<n.length;o++)e=jt[(e^n[o])&255]^e>>>8;return e^-1}});var qt=A((Gf,Ka)=>{"use strict";var J=Cn(),Xu=$t(),Q=Ka.exports=function(n,e){this._options=n,n.checkCRC=n.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[J.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[J.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[J.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[J.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[J.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[J.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Q.prototype.start=function(){this.read(J.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Q.prototype._parseSignature=function(n){let e=J.PNG_SIGNATURE;for(let o=0;o<e.length;o++)if(n[o]!==e[o]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Q.prototype._parseChunkBegin=function(n){let e=n.readUInt32BE(0),o=n.readUInt32BE(4),t="";for(let s=4;s<8;s++)t+=String.fromCharCode(n[s]);let i=!!(n[4]&32);if(!this._hasIHDR&&o!==J.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new Xu,this._crc.write(Buffer.from(t)),this._chunks[o])return this._chunks[o](e);if(!i){this.error(new Error("Unsupported critical chunk type "+t));return}this.read(e+4,this._skipChunk.bind(this))};Q.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Q.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Q.prototype._parseChunkEnd=function(n){let e=n.readInt32BE(0),o=this._crc.crc32();if(this._options.checkCRC&&o!==e){this.error(new Error("Crc error - "+e+" - "+o));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};Q.prototype._handleIHDR=function(n){this.read(n,this._parseIHDR.bind(this))};Q.prototype._parseIHDR=function(n){this._crc.write(n);let e=n.readUInt32BE(0),o=n.readUInt32BE(4),t=n[8],i=n[9],s=n[10],a=n[11],r=n[12];if(t!==8&&t!==4&&t!==2&&t!==1&&t!==16){this.error(new Error("Unsupported bit depth "+t));return}if(!(i in J.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(a!==0){this.error(new Error("Unsupported filter method"));return}if(r!==0&&r!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=i;let c=J.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:o,depth:t,interlace:!!r,palette:!!(i&J.COLORTYPE_PALETTE),color:!!(i&J.COLORTYPE_COLOR),alpha:!!(i&J.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Q.prototype._handlePLTE=function(n){this.read(n,this._parsePLTE.bind(this))};Q.prototype._parsePLTE=function(n){this._crc.write(n);let e=Math.floor(n.length/3);for(let o=0;o<e;o++)this._palette.push([n[o*3],n[o*3+1],n[o*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Q.prototype._handleTRNS=function(n){this.simpleTransparency(),this.read(n,this._parseTRNS.bind(this))};Q.prototype._parseTRNS=function(n){if(this._crc.write(n),this._colorType===J.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(n.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<n.length;e++)this._palette[e][3]=n[e];this.palette(this._palette)}this._colorType===J.COLORTYPE_GRAYSCALE&&this.transColor([n.readUInt16BE(0)]),this._colorType===J.COLORTYPE_COLOR&&this.transColor([n.readUInt16BE(0),n.readUInt16BE(2),n.readUInt16BE(4)]),this._handleChunkEnd()};Q.prototype._handleGAMA=function(n){this.read(n,this._parseGAMA.bind(this))};Q.prototype._parseGAMA=function(n){this._crc.write(n),this.gamma(n.readUInt32BE(0)/J.GAMMA_DIVISION),this._handleChunkEnd()};Q.prototype._handleIDAT=function(n){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-n,this._parseIDAT.bind(this,n))};Q.prototype._parseIDAT=function(n,e){if(this._crc.write(e),this._colorType===J.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let o=n-e.length;o>0?this._handleIDAT(o):this._handleChunkEnd()};Q.prototype._handleIEND=function(n){this.read(n,this._parseIEND.bind(this))};Q.prototype._parseIEND=function(n){this._crc.write(n),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var Dt=A(Va=>{"use strict";var Ha=Tt(),Zu=[function(){},function(n,e,o,t){if(t===e.length)throw new Error("Ran out of data");let i=e[t];n[o]=i,n[o+1]=i,n[o+2]=i,n[o+3]=255},function(n,e,o,t){if(t+1>=e.length)throw new Error("Ran out of data");let i=e[t];n[o]=i,n[o+1]=i,n[o+2]=i,n[o+3]=e[t+1]},function(n,e,o,t){if(t+2>=e.length)throw new Error("Ran out of data");n[o]=e[t],n[o+1]=e[t+1],n[o+2]=e[t+2],n[o+3]=255},function(n,e,o,t){if(t+3>=e.length)throw new Error("Ran out of data");n[o]=e[t],n[o+1]=e[t+1],n[o+2]=e[t+2],n[o+3]=e[t+3]}],ep=[function(){},function(n,e,o,t){let i=e[0];n[o]=i,n[o+1]=i,n[o+2]=i,n[o+3]=t},function(n,e,o){let t=e[0];n[o]=t,n[o+1]=t,n[o+2]=t,n[o+3]=e[1]},function(n,e,o,t){n[o]=e[0],n[o+1]=e[1],n[o+2]=e[2],n[o+3]=t},function(n,e,o){n[o]=e[0],n[o+1]=e[1],n[o+2]=e[2],n[o+3]=e[3]}];function np(n,e){let o=[],t=0;function i(){if(t===n.length)throw new Error("Ran out of data");let s=n[t];t++;let a,r,c,u,p,d,m,f;switch(e){default:throw new Error("unrecognised depth");case 16:m=n[t],t++,o.push((s<<8)+m);break;case 4:m=s&15,f=s>>4,o.push(f,m);break;case 2:p=s&3,d=s>>2&3,m=s>>4&3,f=s>>6&3,o.push(f,m,d,p);break;case 1:a=s&1,r=s>>1&1,c=s>>2&1,u=s>>3&1,p=s>>4&1,d=s>>5&1,m=s>>6&1,f=s>>7&1,o.push(f,m,d,p,u,c,r,a);break}}return{get:function(s){for(;o.length<s;)i();let a=o.slice(0,s);return o=o.slice(s),a},resetAfterLine:function(){o.length=0},end:function(){if(t!==n.length)throw new Error("extra data found")}}}function op(n,e,o,t,i,s){let a=n.width,r=n.height,c=n.index;for(let u=0;u<r;u++)for(let p=0;p<a;p++){let d=o(p,u,c);Zu[t](e,i,d,s),s+=t}return s}function tp(n,e,o,t,i,s){let a=n.width,r=n.height,c=n.index;for(let u=0;u<r;u++){for(let p=0;p<a;p++){let d=i.get(t),m=o(p,u,c);ep[t](e,d,m,s)}i.resetAfterLine()}}Va.dataToBitMap=function(n,e){let o=e.width,t=e.height,i=e.depth,s=e.bpp,a=e.interlace,r;i!==8&&(r=np(n,i));let c;i<=8?c=Buffer.alloc(o*t*4):c=new Uint16Array(o*t*4);let u=Math.pow(2,i)-1,p=0,d,m;if(a)d=Ha.getImagePasses(o,t),m=Ha.getInterlaceIterator(o,t);else{let f=0;m=function(){let h=f;return f+=4,h},d=[{width:o,height:t}]}for(let f=0;f<d.length;f++)i===8?p=op(d[f],c,m,s,n,p):tp(d[f],c,m,s,r,u);if(i===8){if(p!==n.length)throw new Error("extra data found")}else r.end();return c}});var Nt=A((Kf,Wa)=>{"use strict";function ip(n,e,o,t,i){let s=0;for(let a=0;a<t;a++)for(let r=0;r<o;r++){let c=i[n[s]];if(!c)throw new Error("index "+n[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function sp(n,e,o,t,i){let s=0;for(let a=0;a<t;a++)for(let r=0;r<o;r++){let c=!1;if(i.length===1?i[0]===n[s]&&(c=!0):i[0]===n[s]&&i[1]===n[s+1]&&i[2]===n[s+2]&&(c=!0),c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function ap(n,e,o,t,i){let s=255,a=Math.pow(2,i)-1,r=0;for(let c=0;c<t;c++)for(let u=0;u<o;u++){for(let p=0;p<4;p++)e[r+p]=Math.floor(n[r+p]*s/a+.5);r+=4}}Wa.exports=function(n,e){let o=e.depth,t=e.width,i=e.height,s=e.colorType,a=e.transColor,r=e.palette,c=n;return s===3?ip(n,c,t,i,r):(a&&sp(n,c,t,i,a),o!==8&&(o===16&&(c=Buffer.alloc(t*i*4)),ap(n,c,t,i,o))),c}});var Qa=A((Hf,Ya)=>{"use strict";var rp=G("util"),Mt=G("zlib"),Ja=Pt(),cp=Ba(),lp=qt(),up=Dt(),pp=Nt(),Se=Ya.exports=function(n){Ja.call(this),this._parser=new lp(n,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=n,this.writable=!0,this._parser.start()};rp.inherits(Se,Ja);Se.prototype._handleError=function(n){this.emit("error",n),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Se.prototype._inflateData=function(n){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Mt.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let o=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(o,Mt.Z_MIN_CHUNK);this._inflate=Mt.createInflate({chunkSize:t});let i=o,s=this.emit.bind(this,"error");this._inflate.on("error",function(r){i&&s(r)}),this._filter.on("complete",this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on("data",function(r){i&&(r.length>i&&(r=r.slice(0,i)),i-=r.length,a(r))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(n)};Se.prototype._handleMetaData=function(n){this._metaData=n,this._bitmapInfo=Object.create(n),this._filter=new cp(this._bitmapInfo)};Se.prototype._handleTransColor=function(n){this._bitmapInfo.transColor=n};Se.prototype._handlePalette=function(n){this._bitmapInfo.palette=n};Se.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Se.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Se.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Se.prototype._complete=function(n){if(this.errord)return;let e;try{let o=up.dataToBitMap(n,this._bitmapInfo);e=pp(o,this._bitmapInfo),o=null}catch(o){this._handleError(o);return}this.emit("parsed",e)}});var Za=A((Vf,Xa)=>{"use strict";var fe=Cn();Xa.exports=function(n,e,o,t){let i=[fe.COLORTYPE_COLOR_ALPHA,fe.COLORTYPE_ALPHA].indexOf(t.colorType)!==-1;if(t.colorType===t.inputColorType){let h=(function(){let x=new ArrayBuffer(2);return new DataView(x).setInt16(0,256,!0),new Int16Array(x)[0]!==256})();if(t.bitDepth===8||t.bitDepth===16&&h)return n}let s=t.bitDepth!==16?n:new Uint16Array(n.buffer),a=255,r=fe.COLORTYPE_TO_BPP_MAP[t.inputColorType];r===4&&!t.inputHasAlpha&&(r=3);let c=fe.COLORTYPE_TO_BPP_MAP[t.colorType];t.bitDepth===16&&(a=65535,c*=2);let u=Buffer.alloc(e*o*c),p=0,d=0,m=t.bgColor||{};m.red===void 0&&(m.red=a),m.green===void 0&&(m.green=a),m.blue===void 0&&(m.blue=a);function f(){let h,x,g,v=a;switch(t.inputColorType){case fe.COLORTYPE_COLOR_ALPHA:v=s[p+3],h=s[p],x=s[p+1],g=s[p+2];break;case fe.COLORTYPE_COLOR:h=s[p],x=s[p+1],g=s[p+2];break;case fe.COLORTYPE_ALPHA:v=s[p+1],h=s[p],x=h,g=h;break;case fe.COLORTYPE_GRAYSCALE:h=s[p],x=h,g=h;break;default:throw new Error("input color type:"+t.inputColorType+" is not supported at present")}return t.inputHasAlpha&&(i||(v/=a,h=Math.min(Math.max(Math.round((1-v)*m.red+v*h),0),a),x=Math.min(Math.max(Math.round((1-v)*m.green+v*x),0),a),g=Math.min(Math.max(Math.round((1-v)*m.blue+v*g),0),a))),{red:h,green:x,blue:g,alpha:v}}for(let h=0;h<o;h++)for(let x=0;x<e;x++){let g=f(s,p);switch(t.colorType){case fe.COLORTYPE_COLOR_ALPHA:case fe.COLORTYPE_COLOR:t.bitDepth===8?(u[d]=g.red,u[d+1]=g.green,u[d+2]=g.blue,i&&(u[d+3]=g.alpha)):(u.writeUInt16BE(g.red,d),u.writeUInt16BE(g.green,d+2),u.writeUInt16BE(g.blue,d+4),i&&u.writeUInt16BE(g.alpha,d+6));break;case fe.COLORTYPE_ALPHA:case fe.COLORTYPE_GRAYSCALE:{let v=(g.red+g.green+g.blue)/3;t.bitDepth===8?(u[d]=v,i&&(u[d+1]=g.alpha)):(u.writeUInt16BE(v,d),i&&u.writeUInt16BE(g.alpha,d+2));break}default:throw new Error("unrecognised color Type "+t.colorType)}p+=r,d+=c}return u}});var or=A((Wf,nr)=>{"use strict";var er=Ot();function dp(n,e,o,t,i){for(let s=0;s<o;s++)t[i+s]=n[e+s]}function mp(n,e,o){let t=0,i=e+o;for(let s=e;s<i;s++)t+=Math.abs(n[s]);return t}function fp(n,e,o,t,i,s){for(let a=0;a<o;a++){let r=a>=s?n[e+a-s]:0,c=n[e+a]-r;t[i+a]=c}}function gp(n,e,o,t){let i=0;for(let s=0;s<o;s++){let a=s>=t?n[e+s-t]:0,r=n[e+s]-a;i+=Math.abs(r)}return i}function hp(n,e,o,t,i){for(let s=0;s<o;s++){let a=e>0?n[e+s-o]:0,r=n[e+s]-a;t[i+s]=r}}function xp(n,e,o){let t=0,i=e+o;for(let s=e;s<i;s++){let a=e>0?n[s-o]:0,r=n[s]-a;t+=Math.abs(r)}return t}function vp(n,e,o,t,i,s){for(let a=0;a<o;a++){let r=a>=s?n[e+a-s]:0,c=e>0?n[e+a-o]:0,u=n[e+a]-(r+c>>1);t[i+a]=u}}function bp(n,e,o,t){let i=0;for(let s=0;s<o;s++){let a=s>=t?n[e+s-t]:0,r=e>0?n[e+s-o]:0,c=n[e+s]-(a+r>>1);i+=Math.abs(c)}return i}function yp(n,e,o,t,i,s){for(let a=0;a<o;a++){let r=a>=s?n[e+a-s]:0,c=e>0?n[e+a-o]:0,u=e>0&&a>=s?n[e+a-(o+s)]:0,p=n[e+a]-er(r,c,u);t[i+a]=p}}function kp(n,e,o,t){let i=0;for(let s=0;s<o;s++){let a=s>=t?n[e+s-t]:0,r=e>0?n[e+s-o]:0,c=e>0&&s>=t?n[e+s-(o+t)]:0,u=n[e+s]-er(a,r,c);i+=Math.abs(u)}return i}var wp={0:dp,1:fp,2:hp,3:vp,4:yp},Cp={0:mp,1:gp,2:xp,3:bp,4:kp};nr.exports=function(n,e,o,t,i){let s;if(!("filterType"in t)||t.filterType===-1)s=[0,1,2,3,4];else if(typeof t.filterType=="number")s=[t.filterType];else throw new Error("unrecognised filter types");t.bitDepth===16&&(i*=2);let a=e*i,r=0,c=0,u=Buffer.alloc((a+1)*o),p=s[0];for(let d=0;d<o;d++){if(s.length>1){let m=1/0;for(let f=0;f<s.length;f++){let h=Cp[s[f]](n,c,a,i);h<m&&(p=s[f],m=h)}}u[r]=p,r++,wp[p](n,c,a,u,r,i),r+=a,c+=a}return u}});var Bt=A((Jf,tr)=>{"use strict";var ee=Cn(),_p=$t(),Sp=Za(),Ap=or(),Rp=G("zlib"),Ye=tr.exports=function(n){if(this._options=n,n.deflateChunkSize=n.deflateChunkSize||32*1024,n.deflateLevel=n.deflateLevel!=null?n.deflateLevel:9,n.deflateStrategy=n.deflateStrategy!=null?n.deflateStrategy:3,n.inputHasAlpha=n.inputHasAlpha!=null?n.inputHasAlpha:!0,n.deflateFactory=n.deflateFactory||Rp.createDeflate,n.bitDepth=n.bitDepth||8,n.colorType=typeof n.colorType=="number"?n.colorType:ee.COLORTYPE_COLOR_ALPHA,n.inputColorType=typeof n.inputColorType=="number"?n.inputColorType:ee.COLORTYPE_COLOR_ALPHA,[ee.COLORTYPE_GRAYSCALE,ee.COLORTYPE_COLOR,ee.COLORTYPE_COLOR_ALPHA,ee.COLORTYPE_ALPHA].indexOf(n.colorType)===-1)throw new Error("option color type:"+n.colorType+" is not supported at present");if([ee.COLORTYPE_GRAYSCALE,ee.COLORTYPE_COLOR,ee.COLORTYPE_COLOR_ALPHA,ee.COLORTYPE_ALPHA].indexOf(n.inputColorType)===-1)throw new Error("option input color type:"+n.inputColorType+" is not supported at present");if(n.bitDepth!==8&&n.bitDepth!==16)throw new Error("option bit depth:"+n.bitDepth+" is not supported at present")};Ye.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ye.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ye.prototype.filterData=function(n,e,o){let t=Sp(n,e,o,this._options),i=ee.COLORTYPE_TO_BPP_MAP[this._options.colorType];return Ap(t,e,o,this._options,i)};Ye.prototype._packChunk=function(n,e){let o=e?e.length:0,t=Buffer.alloc(o+12);return t.writeUInt32BE(o,0),t.writeUInt32BE(n,4),e&&e.copy(t,8),t.writeInt32BE(_p.crc32(t.slice(4,t.length-4)),t.length-4),t};Ye.prototype.packGAMA=function(n){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(n*ee.GAMMA_DIVISION),0),this._packChunk(ee.TYPE_gAMA,e)};Ye.prototype.packIHDR=function(n,e){let o=Buffer.alloc(13);return o.writeUInt32BE(n,0),o.writeUInt32BE(e,4),o[8]=this._options.bitDepth,o[9]=this._options.colorType,o[10]=0,o[11]=0,o[12]=0,this._packChunk(ee.TYPE_IHDR,o)};Ye.prototype.packIDAT=function(n){return this._packChunk(ee.TYPE_IDAT,n)};Ye.prototype.packIEND=function(){return this._packChunk(ee.TYPE_IEND,null)}});var rr=A((Yf,ar)=>{"use strict";var Lp=G("util"),ir=G("stream"),Ip=Cn(),Pp=Bt(),sr=ar.exports=function(n){ir.call(this);let e=n||{};this._packer=new Pp(e),this._deflate=this._packer.createDeflate(),this.readable=!0};Lp.inherits(sr,ir);sr.prototype.pack=function(n,e,o,t){this.emit("data",Buffer.from(Ip.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,o)),t&&this.emit("data",this._packer.packGAMA(t));let i=this._packer.filterData(n,e,o);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var mr=A((Hn,dr)=>{"use strict";var cr=G("assert").ok,_n=G("zlib"),Up=G("util"),lr=G("buffer").kMaxLength;function cn(n){if(!(this instanceof cn))return new cn(n);n&&n.chunkSize<_n.Z_MIN_CHUNK&&(n.chunkSize=_n.Z_MIN_CHUNK),_n.Inflate.call(this,n),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,n&&n.maxLength!=null&&(this._maxLength=n.maxLength)}function Tp(n){return new cn(n)}function ur(n,e){e&&process.nextTick(e),n._handle&&(n._handle.close(),n._handle=null)}cn.prototype._processChunk=function(n,e,o){if(typeof o=="function")return _n.Inflate._processChunk.call(this,n,e,o);let t=this,i=n&&n.length,s=this._chunkSize-this._offset,a=this._maxLength,r=0,c=[],u=0,p;this.on("error",function(h){p=h});function d(h,x){if(t._hadError)return;let g=s-x;if(cr(g>=0,"have should not go down"),g>0){let v=t._buffer.slice(t._offset,t._offset+g);if(t._offset+=g,v.length>a&&(v=v.slice(0,a)),c.push(v),u+=v.length,a-=v.length,a===0)return!1}return(x===0||t._offset>=t._chunkSize)&&(s=t._chunkSize,t._offset=0,t._buffer=Buffer.allocUnsafe(t._chunkSize)),x===0?(r+=i-h,i=h,!0):!1}cr(this._handle,"zlib binding closed");let m;do m=this._handle.writeSync(e,n,r,i,this._buffer,this._offset,s),m=m||this._writeState;while(!this._hadError&&d(m[0],m[1]));if(this._hadError)throw p;if(u>=lr)throw ur(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+lr.toString(16)+" bytes");let f=Buffer.concat(c,u);return ur(this),f};Up.inherits(cn,_n.Inflate);function Op(n,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let o=n._finishFlushFlag;return o==null&&(o=_n.Z_FINISH),n._processChunk(e,o)}function pr(n,e){return Op(new cn(e),n)}dr.exports=Hn=pr;Hn.Inflate=cn;Hn.createInflate=Tp;Hn.inflateSync=pr});var Gt=A((Qf,gr)=>{"use strict";var fr=gr.exports=function(n){this._buffer=n,this._reads=[]};fr.prototype.read=function(n,e){this._reads.push({length:Math.abs(n),allowLess:n<0,func:e})};fr.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let n=this._reads[0];if(this._buffer.length&&(this._buffer.length>=n.length||n.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(n.length),n.func.call(this,e.slice(0,n.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var xr=A(hr=>{"use strict";var Ep=Gt(),jp=Et();hr.process=function(n,e){let o=[],t=new Ep(n);return new jp(e,{read:t.read.bind(t),write:function(s){o.push(s)},complete:function(){}}).start(),t.process(),Buffer.concat(o)}});var kr=A((Zf,yr)=>{"use strict";var vr=!0,br=G("zlib"),Fp=mr();br.deflateSync||(vr=!1);var $p=Gt(),qp=xr(),Dp=qt(),Np=Dt(),Mp=Nt();yr.exports=function(n,e){if(!vr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let o;function t(k){o=k}let i;function s(k){i=k}function a(k){i.transColor=k}function r(k){i.palette=k}function c(){i.alpha=!0}let u;function p(k){u=k}let d=[];function m(k){d.push(k)}let f=new $p(n);if(new Dp(e,{read:f.read.bind(f),error:t,metadata:s,gamma:p,palette:r,transColor:a,inflateData:m,simpleTransparency:c}).start(),f.process(),o)throw o;let x=Buffer.concat(d);d.length=0;let g;if(i.interlace)g=br.inflateSync(x);else{let C=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;g=Fp(x,{chunkSize:C,maxLength:C})}if(x=null,!g||!g.length)throw new Error("bad png - invalid inflate data response");let v=qp.process(g,i);x=null;let w=Np.dataToBitMap(v,i);v=null;let y=Mp(w,i);return i.data=y,i.gamma=u||0,i}});var Sr=A((eg,_r)=>{"use strict";var wr=!0,Cr=G("zlib");Cr.deflateSync||(wr=!1);var Bp=Cn(),Gp=Bt();_r.exports=function(n,e){if(!wr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let o=e||{},t=new Gp(o),i=[];i.push(Buffer.from(Bp.PNG_SIGNATURE)),i.push(t.packIHDR(n.width,n.height)),n.gamma&&i.push(t.packGAMA(n.gamma));let s=t.filterData(n.data,n.width,n.height),a=Cr.deflateSync(s,t.getDeflateOptions());if(s=null,!a||!a.length)throw new Error("bad png - invalid compressed data response");return i.push(t.packIDAT(a)),i.push(t.packIEND()),Buffer.concat(i)}});var Ar=A(zt=>{"use strict";var zp=kr(),Kp=Sr();zt.read=function(n,e){return zp(n,e||{})};zt.write=function(n,e){return Kp(n,e)}});var Ir=A(Lr=>{"use strict";var Hp=G("util"),Rr=G("stream"),Vp=Qa(),Wp=rr(),Jp=Ar(),oe=Lr.PNG=function(n){Rr.call(this),n=n||{},this.width=n.width|0,this.height=n.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,n.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Vp(n),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new Wp(n),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Hp.inherits(oe,Rr);oe.sync=Jp;oe.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};oe.prototype.parse=function(n,e){if(e){let o,t;o=function(i){this.removeListener("error",t),this.data=i,e(null,this)}.bind(this),t=function(i){this.removeListener("parsed",o),e(i,null)}.bind(this),this.once("parsed",o),this.once("error",t)}return this.end(n),this};oe.prototype.write=function(n){return this._parser.write(n),!0};oe.prototype.end=function(n){this._parser.end(n)};oe.prototype._metadata=function(n){this.width=n.width,this.height=n.height,this.emit("metadata",n)};oe.prototype._gamma=function(n){this.gamma=n};oe.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};oe.bitblt=function(n,e,o,t,i,s,a,r){if(o|=0,t|=0,i|=0,s|=0,a|=0,r|=0,o>n.width||t>n.height||o+i>n.width||t+s>n.height)throw new Error("bitblt reading outside image");if(a>e.width||r>e.height||a+i>e.width||r+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)n.data.copy(e.data,(r+c)*e.width+a<<2,(t+c)*n.width+o<<2,(t+c)*n.width+o+i<<2)};oe.prototype.bitblt=function(n,e,o,t,i,s,a){return oe.bitblt(this,n,e,o,t,i,s,a),this};oe.adjustGamma=function(n){if(n.gamma){for(let e=0;e<n.height;e++)for(let o=0;o<n.width;o++){let t=n.width*e+o<<2;for(let i=0;i<3;i++){let s=n.data[t+i]/255;s=Math.pow(s,1/2.2/n.gamma),n.data[t+i]=Math.round(s*255)}}n.gamma=0}};oe.prototype.adjustGamma=function(){oe.adjustGamma(this)}});var Vn=A(ln=>{function Pr(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let e=n.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+n);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(t){return[t,t]}))),e.length===6&&e.push("F","F");let o=parseInt(e.join(""),16);return{r:o>>24&255,g:o>>16&255,b:o>>8&255,a:o&255,hex:"#"+e.slice(0,6).join("")}}ln.getOptions=function(e){e||(e={}),e.color||(e.color={});let o=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,t=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:t,scale:t?4:i,margin:o,color:{dark:Pr(e.color.dark||"#000000ff"),light:Pr(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};ln.getScale=function(e,o){return o.width&&o.width>=e+o.margin*2?o.width/(e+o.margin*2):o.scale};ln.getImageWidth=function(e,o){let t=ln.getScale(e,o);return Math.floor((e+o.margin*2)*t)};ln.qrToImageData=function(e,o,t){let i=o.modules.size,s=o.modules.data,a=ln.getScale(i,t),r=Math.floor((i+t.margin*2)*a),c=t.margin*a,u=[t.color.light,t.color.dark];for(let p=0;p<r;p++)for(let d=0;d<r;d++){let m=(p*r+d)*4,f=t.color.light;if(p>=c&&d>=c&&p<r-c&&d<r-c){let h=Math.floor((p-c)/a),x=Math.floor((d-c)/a);f=u[s[h*i+x]?1:0]}e[m++]=f.r,e[m++]=f.g,e[m++]=f.b,e[m]=f.a}}});var Ur=A(Ae=>{var Yp=G("fs"),Qp=Ir().PNG,Kt=Vn();Ae.render=function(e,o){let t=Kt.getOptions(o),i=t.rendererOpts,s=Kt.getImageWidth(e.modules.size,t);i.width=s,i.height=s;let a=new Qp(i);return Kt.qrToImageData(a.data,e,t),a};Ae.renderToDataURL=function(e,o,t){typeof t>"u"&&(t=o,o=void 0),Ae.renderToBuffer(e,o,function(i,s){i&&t(i);let a="data:image/png;base64,";a+=s.toString("base64"),t(null,a)})};Ae.renderToBuffer=function(e,o,t){typeof t>"u"&&(t=o,o=void 0);let i=Ae.render(e,o),s=[];i.on("error",t),i.on("data",function(a){s.push(a)}),i.on("end",function(){t(null,Buffer.concat(s))}),i.pack()};Ae.renderToFile=function(e,o,t,i){typeof i>"u"&&(i=t,t=void 0);let s=!1,a=(...c)=>{s||(s=!0,i.apply(null,c))},r=Yp.createWriteStream(e);r.on("error",a),r.on("close",a),Ae.renderToFileStream(r,o,t)};Ae.renderToFileStream=function(e,o,t){Ae.render(o,t).pack().pipe(e)}});var Tr=A(Ao=>{var Xp=Vn(),Zp={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},ed={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function nd(n,e,o){return n&&e?o.BB:n&&!e?o.BW:!n&&e?o.WB:o.WW}Ao.render=function(n,e,o){let t=Xp.getOptions(e),i=Zp;(t.color.dark.hex==="#ffffff"||t.color.light.hex==="#000000")&&(i=ed);let s=n.modules.size,a=n.modules.data,r="",c=Array(s+t.margin*2+1).join(i.WW);c=Array(t.margin/2+1).join(c+`
|
|
8
|
+
`);let u=Array(t.margin+1).join(i.WW);r+=c;for(let p=0;p<s;p+=2){r+=u;for(let d=0;d<s;d++){let m=a[p*s+d],f=a[(p+1)*s+d];r+=nd(m,f,i)}r+=u+`
|
|
9
|
+
`}return r+=c.slice(0,-1),typeof o=="function"&&o(null,r),r};Ao.renderToFile=function(e,o,t,i){typeof i>"u"&&(i=t,t=void 0);let s=G("fs"),a=Ao.render(o,t);s.writeFile(e,a,i)}});var Er=A(Or=>{Or.render=function(n,e,o){let t=n.modules.size,i=n.modules.data,s="\x1B[40m \x1B[0m",a="\x1B[47m \x1B[0m",r="",c=Array(t+3).join(a),u=Array(2).join(a);r+=c+`
|
|
10
|
+
`;for(let p=0;p<t;++p){r+=a;for(let d=0;d<t;d++)r+=i[p*t+d]?s:a;r+=u+`
|
|
11
|
+
`}return r+=c+`
|
|
12
|
+
`,typeof o=="function"&&o(null,r),r}});var qr=A($r=>{var od="\x1B[47m",td="\x1B[40m",Ht="\x1B[37m",Vt="\x1B[30m",un="\x1B[0m",id=od+Vt,sd=td+Ht,ad=function(n,e,o){return{"00":un+" "+n,"01":un+e+"\u2584"+n,"02":un+o+"\u2584"+n,10:un+e+"\u2580"+n,11:" ",12:"\u2584",20:un+o+"\u2580"+n,21:"\u2580",22:"\u2588"}},jr=function(n,e,o,t){let i=e+1;if(o>=i||t>=i||t<-1||o<-1)return"0";if(o>=e||t>=e||t<0||o<0)return"1";let s=t*e+o;return n[s]?"2":"1"},Fr=function(n,e,o,t){return jr(n,e,o,t)+jr(n,e,o,t+1)};$r.render=function(n,e,o){let t=n.modules.size,i=n.modules.data,s=!!(e&&e.inverse),a=e&&e.inverse?sd:id,u=ad(a,s?Vt:Ht,s?Ht:Vt),p=un+`
|
|
13
|
+
`+a,d=a;for(let m=-1;m<t+1;m+=2){for(let f=-1;f<t;f++)d+=u[Fr(i,t,f,m)];d+=u[Fr(i,t,t,m)]+p}return d+=un,typeof o=="function"&&o(null,d),d}});var Nr=A(Dr=>{var rd=Er(),cd=qr();Dr.render=function(n,e,o){return e&&e.small?cd.render(n,e,o):rd.render(n,e,o)}});var Jt=A(Br=>{var ld=Vn();function Mr(n,e){let o=n.a/255,t=e+'="'+n.hex+'"';return o<1?t+" "+e+'-opacity="'+o.toFixed(2).slice(1)+'"':t}function Wt(n,e,o){let t=n+e;return typeof o<"u"&&(t+=" "+o),t}function ud(n,e,o){let t="",i=0,s=!1,a=0;for(let r=0;r<n.length;r++){let c=Math.floor(r%e),u=Math.floor(r/e);!c&&!s&&(s=!0),n[r]?(a++,r>0&&c>0&&n[r-1]||(t+=s?Wt("M",c+o,.5+u+o):Wt("m",i,0),i=0,s=!1),c+1<e&&n[r+1]||(t+=Wt("h",a),a=0)):i++}return t}Br.render=function(e,o,t){let i=ld.getOptions(o),s=e.modules.size,a=e.modules.data,r=s+i.margin*2,c=i.color.light.a?"<path "+Mr(i.color.light,"fill")+' d="M0 0h'+r+"v"+r+'H0z"/>':"",u="<path "+Mr(i.color.dark,"stroke")+' d="'+ud(a,s,i.margin)+'"/>',p='viewBox="0 0 '+r+" "+r+'"',m='<svg xmlns="http://www.w3.org/2000/svg" '+(i.width?'width="'+i.width+'" height="'+i.width+'" ':"")+p+' shape-rendering="crispEdges">'+c+u+`</svg>
|
|
14
|
+
`;return typeof t=="function"&&t(null,m),m}});var Gr=A(Ro=>{var pd=Jt();Ro.render=pd.render;Ro.renderToFile=function(e,o,t,i){typeof i>"u"&&(i=t,t=void 0);let s=G("fs"),r='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+Ro.render(o,t);s.writeFile(e,r,i)}});var zr=A(Lo=>{var Yt=Vn();function dd(n,e,o){n.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=o,e.width=o,e.style.height=o+"px",e.style.width=o+"px"}function md(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Lo.render=function(e,o,t){let i=t,s=o;typeof i>"u"&&(!o||!o.getContext)&&(i=o,o=void 0),o||(s=md()),i=Yt.getOptions(i);let a=Yt.getImageWidth(e.modules.size,i),r=s.getContext("2d"),c=r.createImageData(a,a);return Yt.qrToImageData(c.data,e,i),dd(r,s,a),r.putImageData(c,0,0),s};Lo.renderToDataURL=function(e,o,t){let i=t;typeof i>"u"&&(!o||!o.getContext)&&(i=o,o=void 0),i||(i={});let s=Lo.render(e,o,i),a=i.type||"image/png",r=i.rendererOpts||{};return s.toDataURL(a,r.quality)}});var Hr=A(Wn=>{var fd=ut(),Qt=It(),Kr=zr(),gd=Jt();function Xt(n,e,o,t,i){let s=[].slice.call(arguments,1),a=s.length,r=typeof s[a-1]=="function";if(!r&&!fd())throw new Error("Callback required as last argument");if(r){if(a<2)throw new Error("Too few arguments provided");a===2?(i=o,o=e,e=t=void 0):a===3&&(e.getContext&&typeof i>"u"?(i=t,t=void 0):(i=t,t=o,o=e,e=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(o=e,e=t=void 0):a===2&&!e.getContext&&(t=o,o=e,e=void 0),new Promise(function(c,u){try{let p=Qt.create(o,t);c(n(p,e,t))}catch(p){u(p)}})}try{let c=Qt.create(o,t);i(null,n(c,e,t))}catch(c){i(c)}}Wn.create=Qt.create;Wn.toCanvas=Xt.bind(null,Kr.render);Wn.toDataURL=Xt.bind(null,Kr.renderToDataURL);Wn.toString=Xt.bind(null,function(n,e,o){return gd.render(n,o)})});var Yr=A(Qe=>{var Vr=ut(),Zt=It(),hd=Ur(),Wr=Tr(),xd=Nr(),Jr=Gr();function Jn(n,e,o){if(typeof n>"u")throw new Error("String required as first argument");if(typeof o>"u"&&(o=e,e={}),typeof o!="function")if(Vr())e=o||{},o=null;else throw new Error("Callback required as last argument");return{opts:e,cb:o}}function vd(n){return n.slice((n.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Io(n){switch(n){case"svg":return Jr;case"txt":case"utf8":return Wr;case"png":case"image/png":default:return hd}}function bd(n){switch(n){case"svg":return Jr;case"terminal":return xd;case"utf8":default:return Wr}}function Yn(n,e,o){if(!o.cb)return new Promise(function(t,i){try{let s=Zt.create(e,o.opts);return n(s,o.opts,function(a,r){return a?i(a):t(r)})}catch(s){i(s)}});try{let t=Zt.create(e,o.opts);return n(t,o.opts,o.cb)}catch(t){o.cb(t)}}Qe.create=Zt.create;Qe.toCanvas=Hr().toCanvas;Qe.toString=function(e,o,t){let i=Jn(e,o,t),s=i.opts?i.opts.type:void 0,a=bd(s);return Yn(a.render,e,i)};Qe.toDataURL=function(e,o,t){let i=Jn(e,o,t),s=Io(i.opts.type);return Yn(s.renderToDataURL,e,i)};Qe.toBuffer=function(e,o,t){let i=Jn(e,o,t),s=Io(i.opts.type);return Yn(s.renderToBuffer,e,i)};Qe.toFile=function(e,o,t,i){if(typeof e!="string"||!(typeof o=="string"||typeof o=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!Vr())throw new Error("Too few arguments provided");let s=Jn(o,t,i),a=s.opts.type||vd(e),c=Io(a).renderToFile.bind(null,e);return Yn(c,o,s)};Qe.toFileStream=function(e,o,t){if(arguments.length<2)throw new Error("Too few arguments provided");let i=Jn(o,t,e.emit.bind(e,"error")),a=Io("png").renderToFileStream.bind(null,e);Yn(a,o,i)}});var Xr=A((fg,Qr)=>{Qr.exports=Yr()});import*as Uo from"https";import*as nc from"crypto";import{WebSocket as Zr}from"ws";import{v4 as ec}from"uuid";async function Po(n,e,o,t){return new Promise((i,s)=>{let a=JSON.stringify(o),r=`${n}?func=${e}`;t?.sid&&(r+=`&sid=${encodeURIComponent(t.sid)}`);let c=t?.baseUrl||Qn,u={...yd,"Content-Length":Buffer.byteLength(a)};t?.cookies&&Object.keys(t.cookies).length>0&&(u.Cookie=Object.entries(t.cookies).map(([m,f])=>`${m}=${f}`).join("; "));let d=Uo.request({hostname:c,port:443,path:r,method:"POST",headers:u},m=>{let f="",h={},x=m.headers["set-cookie"];if(x)for(let g of x){let v=g.match(/^([^=]+)=([^;]+)/);v&&(h[v[1].trim()]=v[2].trim())}m.on("data",g=>f+=g),m.on("end",()=>{try{i({data:JSON.parse(f),cookies:h})}catch{s(new Error(`Invalid JSON: ${f}`))}})});d.on("error",s),d.write(a),d.end()})}async function kd(n){return new Promise((e,o)=>{Uo.get(n,t=>{let i="";t.on("data",s=>i+=s),t.on("end",()=>e(i))}).on("error",o)})}async function ei(n={}){let{debug:e=!1,timeout:o=12e4,device:t}=n,i=s=>{e&&console.log(`[QR Login] ${s}`)};try{i("[1] Generating temporary session...");let s=await Po("/lunkr/s/json","cim.user:genTempSession",{type:"qrLogin"});if(s.data.code!=="S_OK")return{success:!1,error:`genTempSession failed: ${s.data.code} - ${s.data.msg||s.data.reason}`};let a=s.data.var?.sid;if(!a)return{success:!1,error:"No sid in response"};i(`Temporary session ID: ${a}`),i("[2] Socket.IO HTTP handshake...");let r=`https://${Qn}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=await kd(r),u=c.indexOf('0{"sid"'),p=u>=0?c.substring(u):c;if(!p.startsWith("0{"))return{success:!1,error:"Handshake format error"};let d=JSON.parse(p.substring(1)),m=d.sid,f=d.pingInterval??25e3;i(`eioSid: ${m}, pingInterval: ${f}`),i("[3] WebSocket connection...");let h=`wss://${Qn}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(m)}`;return new Promise(x=>{let g=setTimeout(()=>{v.close(),x({success:!1,error:"Timeout waiting for QR scan"})},o),v=new Zr(h,{headers:{Host:Qn,Origin:`https://${Qn}`,"User-Agent":"Mozilla/5.0"}}),w=!1,y;v.on("open",()=>{i("WebSocket connected, sending 2probe..."),v.send("2probe")}),v.on("message",k=>{let C=k.toString();if(i(`Received: ${C.substring(0,100)}`),C.includes("3probe")){i("Received 3probe, sending 5 and auth"),v.send("5");let b={clientId:`webmail:${a}`,sid:a,msg_v:100,uuid:ec(),TmpSes:1};v.send(`42["auth",${JSON.stringify(b)}]`);let S=`https://www.coremail.cn/app/poster.html?action=qrLogin&sid=${encodeURIComponent(a)}`;console.log(""),console.log(` ${l("login.qrcode_title")}`),console.log(""),oc.toString(S,{type:"terminal",small:!0},(T,R)=>{T?console.error("QR code generation failed:",T.message):console.log(R)}),console.log(` ${l("login.qrcode_scan_prompt")}`),console.log(""),e&&console.log(`QR URL: ${S}
|
|
15
|
+
`),y=setInterval(()=>{v.readyState===Zr.OPEN&&v.send("2")},f)}if(C.startsWith("42"))try{let b=JSON.parse(C.substring(2)),S=b[0],T=b[1];if(S==="ready"&&!w){w=!0,i("Auth ready, subscribing to scan events...");let R=`/onstat/mail/${a}/op_app_scanqrcode`;v.send(`42["subscribe",{"topic":"${R}"}]`)}if(S==="message"&&T?.payload){let R=typeof T.payload=="string"?JSON.parse(T.payload):T.payload;if(i(`Scan status: ${R.status}`),R.status==="verify"&&console.log(l("login.qrcode_scanned")),R.status==="auth"){i(`Confirmed: ${R.user?.email}`);let q=R.user?.email,B={uid:q,authSid:a,authToken:R.token};i("Calling checkVersionAndLogin..."),Po("/lunkr/s/json","cim.user:checkVersionAndLogin",B).then(N=>{let O=N.data,V=N.cookies;if(i(`Login result: ${JSON.stringify(O)}`),O.code==="S_OK"&&O.var?.sid){let ne=O.var.sid,ue=q,Ue=O.var.self_uid;i(`Login successful, sid: ${ne}, email: ${ue}, selfUid: ${Ue}`),i("Calling getApiToken...");let Te=t||{device_uuid:ec(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};Po("/lunkr/s/json","cim.user:getApiToken",Te,{sid:ne,baseUrl:"betaweb.lunkr.cn",cookies:V}).then(oo=>{let is=oo.data;i(`Token result: ${JSON.stringify(is)}`),clearTimeout(g),clearInterval(y),v.close(),x({success:!0,apiToken:is.var?.api_token,email:ue,selfUid:Ue,deviceUuid:Te.device_uuid})}).catch(oo=>{console.error(`getApiToken failed: ${oo.message}`),clearTimeout(g),clearInterval(y),v.close(),x({success:!1,error:`getApiToken failed: ${oo.message}`})})}else clearTimeout(g),clearInterval(y),v.close(),x({success:!1,error:`Login failed: ${JSON.stringify(O)}`})}).catch(N=>{clearTimeout(g),clearInterval(y),v.close(),x({success:!1,error:N.message})})}}}catch(b){i(`Event parse failed: ${b.message}`)}C==="2"&&v.send("3")}),v.on("error",k=>{i(`WebSocket error: ${k.message}`),clearTimeout(g),clearInterval(y),x({success:!1,error:k.message})}),v.on("close",()=>{i("WebSocket closed"),clearTimeout(g),clearInterval(y)})})}catch(s){return{success:!1,error:s.message}}}async function Re(n,e,o,t={}){let{debug:i=!1}=t,s=a=>{i&&console.log(`[API Token Login] ${a}`)};try{s("Calling getLunkrSid..."),s(`email: ${n}`),s(`deviceUuid: ${o}`);let a=Date.now().toString(),r=nc.createHash("sha256").update(`${a}:${o}:${e}`).digest("base64");s(`timestamp: ${a}`),s(`token_hash: ${r}`);let c=await Po("/lunkr/s/json","cim.user:getLunkrSid",{email:n,timestamp:a,device_uuid:o,token_hash:r},{baseUrl:"betaweb.lunkr.cn"});if(s(`Result: ${JSON.stringify(c.data)}`),c.data.code==="S_OK"&&c.data.var?.sid){let u=c.data.var.cookie?`Cim=${c.data.var.cookie}`:c.cookies?.Cim?`Cim=${c.cookies.Cim}`:void 0;return{success:!0,sid:c.data.var.sid,email:n,selfUid:c.data.var.uid,cookie:u}}else return c.data.code==="FA_REQUEST_EXPIRED"?{success:!1,error:l("login.clock_error")}:{success:!1,error:`getLunkrSid failed: ${c.data.code} - ${c.data.msg||"Unknown error"}`}}catch(a){return{success:!1,error:a.message}}}var oc,Qn,yd,Sn=ce(()=>{oc=zo(Xr(),1);U();Qn="lunkr.coremail.cn",yd={Accept:"text/x-json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","Cache-Control":"no-cache",Connection:"keep-alive","Content-Type":"text/x-json; charset=UTF-8"}});import*as Oo from"path";function tc(n,e){return l("message.prefix",{sender:n||"Unknown",bot:e||"Bot"})}function je(n,e,o,t=!1){return t?n:tc(e,o)+n}function ni(n){return wd.test(n.trim())}function oi(n){return Cd.test(n.trim())}function To(n){return _d.test(n.trim())}function ti(n){return Sd.test(n.trim())}function Le(n){let e=n.trim();return ni(e)||oi(e)||To(e)||ti(e)}function Eo(n){let e=n.trim();return ni(e)||ti(e)&&!To(e)?"user":oi(e)||To(e)?"group":"unknown"}function ii(n){let e=n.replace(/[<>:"/\\|?*\x00-\x1f]/g,"_").replace(/\.\./g,"_").replace(/^\.+/,"_").replace(/\.+$/,"_").trim();if(e.length>200){let o=Oo.extname(e);e=Oo.basename(e,o).substring(0,200-o.length)+o}return e||"download"}function le(n){if(!n)return"";let e;if(typeof n=="string"?e=new Date(n):e=new Date(n<=1e10?n*1e3:n),isNaN(e.getTime()))return"";try{return e.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return""}}function pn(n){if(n==null)return"";let e=["B","KB","MB","GB"],o=n,t=0;for(;o>=1024&&t<e.length-1;)o/=1024,t++;return`${o.toFixed(1)} ${e[t]}`}function Ad(n){let e=0;for(let o of n){let t=o.codePointAt(0);e+=t>=11904&&t<=40959||t>=63744&&t<=64255||t>=65072&&t<=65103||t>=65280&&t<=65376||t>=131072&&t<=195103?2:1}return e}function I(n,e){let o=Math.max(0,e-Ad(n));return n+" ".repeat(o)}var wd,Cd,_d,Sd,Fe=ce(()=>{U();wd=/^#\d+#U$/,Cd=/^#\d+#T$/,_d=/^t\.\./i,Sd=/^[^\s@]+@[^\s@]+\.[^\s@]+$/});function An(n){return Rd.includes(n)}function ic(n){let e=["ETIMEDOUT","ECONNREFUSED","ECONNRESET","ENOTFOUND","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","EPIPE","socket hang up","network","timeout","fetch failed"],o=n.toLowerCase();return e.some(t=>o.includes(t.toLowerCase()))?"network":"rejected"}async function ge(n,e){let o=L(),t=o.accounts?.find(c=>c.accountId===n);if(!t)return{success:!1,error:`Account not found: ${n}`,reason:"no_credentials"};if(!t.apiToken)return{success:!1,error:"No apiToken available for refresh",reason:"no_credentials"};let i=e||o.device_uuid;if(!i)return{success:!1,error:"No device UUID available",reason:"no_credentials"};let s=t.email||n,a;try{a=await Re(s,t.apiToken,i)}catch(c){let u=c instanceof Error?c.message:String(c);return{success:!1,error:u,reason:ic(u)}}if(a.success&&a.sid&&a.cookie){let c={sid:a.sid,cookie:a.cookie,baseUrl:t.session?.baseUrl||"https://lunkr.coremail.cn",apiPath:t.session?.apiPath||"/lunkr/s/json",selfUid:a.selfUid||t.session?.selfUid||"",senderName:t.session?.senderName},u=o.accounts?.findIndex(p=>p.accountId===n)??-1;return u>=0&&o.accounts&&(o.accounts[u].session=c,E(o)),{success:!0,session:c}}let r=a.error||"Unknown error during token login";return{success:!1,error:r,reason:ic(r)}}var Rd,Xn=ce(()=>{se();Sn();Rd=["FA_SESSION_EXPIRED","FA_AUTH_FAILED","FA_NO_SESSION","FA_SID_INVALID","FA_INVALID_SESSION"]});import*as ye from"fs";import*as Rn from"path";import*as xc from"os";function $d(n){let e={...n,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return Fd=e,e}function vc(n){$d(n)}function yc(n,e){bc.set(n,{...e,lastAccess:Date.now()})}function Fo(){let n;for(let[e,o]of bc)(!n||o.lastAccess>n.context.lastAccess)&&(n={key:e,context:o});if(n)return{workspaceKey:n.key,workspaceDir:n.context.workspaceDir,filesDir:n.context.filesDir,accountId:n.context.accountId}}function wc(n,e,o){if(!(!n||o.length===0)&&($e.set(n,{mid:n,time:e,attachments:o.map(t=>({fileId:t.fileId,uid:t.uid,title:t.title,contentType:t.contentType||null,fileSize:t.fileSize||null,type:t.type||null,inline:t.inline||!1})),cachedAt:Date.now()}),$e.size>ai)){let t=Date.now();for(let[i,s]of $e)t-s.cachedAt>kc&&$e.delete(i);if($e.size>ai){let i=[...$e.entries()].sort((s,a)=>s[1].cachedAt-a[1].cachedAt);for(let s=0;s<i.length-ai/2;s++)$e.delete(i[s][0])}}}function Cc(n){let e=$e.get(n);return e?Date.now()-e.cachedAt>kc?($e.delete(n),null):e.attachments:null}function ri(){return Rn.join(xc.homedir(),".lunkr")}function ci(n){return n.replace(/#/g,"").replace(/:/g,"_")}function _c(n){let e=ci(n),o=Rn.join(ri(),"session-workspaces",e);return ye.existsSync(o)||ye.mkdirSync(o,{recursive:!0}),o}function Sc(n){let e=ci(n),o=Rn.join(ri(),"session-workspaces",e);if(ye.existsSync(o))for(let t of ye.readdirSync(o))ye.rmSync(Rn.join(o,t),{recursive:!0,force:!0})}function Ac(n){let e=ci(n),o=Rn.join(ri(),"session-files",e);return ye.existsSync(o)||ye.mkdirSync(o,{recursive:!0}),o}var Fd,bc,$e,kc,ai,dn=ce(()=>{se();Fd=null;bc=new Map;$e=new Map,kc=1440*60*1e3,ai=1e3});import*as ae from"fs";import*as ke from"path";import*as qc from"os";import*as Dc from"crypto";function M(n){let e=te.fromConfig(n);if(!e)throw new Error(l("api.no_account"));return e}var pi,te,Ze=ce(()=>{pi=zo(it(),1);U();hn();on();go();Sn();Fe();se();dn();te=class n{client;sid;session;botName;senderName;cookies;constructor(e){this.session=e.session,this.sid=e.session.sid,this.botName=e.botName||"Bot",this.senderName=e.senderName||"",this.client=new F(e.session.baseUrl,{apiPath:e.session.apiPath}),this.cookies={};for(let o of e.session.cookie.split(";")){let t=o.trim();if(t.includes("=")){let i=t.indexOf("="),s=t.substring(0,i).trim(),a=t.substring(i+1).trim();this.cookies[s]=a}}this.client.setCookies(this.cookies)}static fromConfig(e){let o=L(),t=e?o.accounts?.find(i=>i.accountId===e&&i.session):co(o);return t?.session?new n({session:t.session,botName:o.bot_name,senderName:t.session.senderName||""}):null}static fromAccount(e,o){if(!e.session)return null;let t=o||L();return new n({session:e.session,botName:t.bot_name,senderName:e.session.senderName||""})}async checkSession(){try{if((await this.client.postJson({func:"cim.common:getOrgInfo",sid:this.sid})).code==="S_OK")return!0}catch{}let e=await this.tryApiTokenRelogin();return e||(console.error(""),console.error(l("api.session_expired_relogin")),console.error(l("api.session_expired_qrcode")),console.error(l("api.session_expired_password"))),e}async tryApiTokenRelogin(){let e=L(),o=e.accounts.find(a=>a.session?.selfUid===this.session.selfUid);if(!o?.apiToken)return!1;let t=o.email||o.accountId,i=await Re(t,o.apiToken,e.device_uuid);if(!i.success||!i.sid||!i.cookie)return!1;o.session={...o.session,sid:i.sid,cookie:i.cookie,selfUid:i.selfUid||o.session.selfUid},E(e),this.sid=i.sid,this.session=o.session;let s={};for(let a of i.cookie.split(";")){let r=a.trim();if(r.includes("=")){let c=r.indexOf("="),u=r.substring(0,c).trim(),p=r.substring(c+1).trim();s[u]=p}}return this.cookies=s,this.client.setCookies(this.cookies),!0}getSelfUid(){return this.session.selfUid}async callApi(e){return this.client.postJson({func:e.func,sid:this.sid,query:e.query,payload:e.payload})}async fetchSenderName(){try{let e=await this.client.postJson({func:"cim.common:getCimPrefAttr",sid:this.sid,payload:{return_field:"nickname,true_name,name"}});if(e.code==="S_OK"&&e.var){let o=e.var,t=o.nickname||o.true_name||o.name;return t?String(t).trim():null}}catch{}return null}async ensureSenderName(){if(this.senderName)return this.senderName;let e=await this.fetchSenderName();if(e)return this.senderName=e,e;let o=this.session.selfUid;return o&&o.includes("@")?o.split("@")[0]:o||"Unknown"}async searchContacts(e,o=20){let t=[],i=new Set;try{let s=await this.client.postJson({func:"cim.pab:getRecentContacts",sid:this.sid});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.uid||""),u=String(r.email||"").toLowerCase(),p=String(r.true_name||"").toLowerCase();if(u.includes(e.toLowerCase())||p.includes(e.toLowerCase())){if(i.has(c))continue;i.add(c),r.email&&i.add(String(r.email)),t.push({uid:c,email:r.email,trueName:r.true_name,name:r.name})}}}catch{}try{let s=await this.client.postJson({func:"cim.container:searchContacts",sid:this.sid,payload:{keyword:e,windowSize:o}});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.uid||"");i.has(c)||(i.add(c),r.email&&i.add(String(r.email)),t.push({uid:c,email:r.email,trueName:r.true_name,name:r.name}))}}catch{}try{let s=await this.client.postJson({func:"oab:autoMatch",sid:this.sid,payload:{keyword:e,limit:o}});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.email||"");!c||i.has(c)||(i.add(c),t.push({uid:c,email:c,trueName:r.true_name,name:r.true_name}))}}catch{}return t.slice(0,o)}async searchGroups(e,o=20){try{let t=await this.client.postJson({func:"cim.group:search",sid:this.sid,payload:{keyword:e,limit:o,return_field:"uid,email,true_name,name,description"}});if(t.code==="S_OK"&&Array.isArray(t.var))return t.var.map(i=>({uid:String(i.uid||""),name:i.name,trueName:i.true_name,email:i.email,description:i.description}))}catch{}return[]}async resolveRecipient(e){let o=e.trim();if(Le(o)){let s=Eo(o);return{uid:o,type:s==="group"?"group":"user",name:o}}let t=await this.searchContacts(o,5);if(t.length>0){let s=t[0];return{uid:s.uid,type:"user",name:s.trueName||s.name||o,email:s.email||void 0}}let i=await this.searchGroups(o,5);if(i.length>0){let s=i[0];return{uid:s.uid,type:"group",name:s.name||s.trueName||o,email:s.email||void 0}}throw new Error(l("api.recipient_not_found",{name:o}))}async resolveRecipientInteractive(e,o){let t=e.trim();if(Le(t)){let a=Eo(t);return{uid:t,type:a==="group"?"group":"user",name:t}}let i=await this.searchContacts(t,10);if(i.length>0){let a=i.filter(u=>u.name===t||u.trueName===t);if(a.length===1){let u=a[0];return{uid:u.uid,type:"user",name:u.trueName||u.name||t,email:u.email||void 0}}let r=0;if(i.length>1&&o){let u=i.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"}));r=o(u)}r<0&&(r=0);let c=i[r];return{uid:c.uid,type:"user",name:c.trueName||c.name||t,email:c.email||void 0}}let s=await this.searchGroups(t,10);if(s.length>0){let a=s.filter(u=>u.name===t||u.trueName===t);if(a.length===1){let u=a[0];return{uid:u.uid,type:"group",name:u.name||u.trueName||t,email:u.email||void 0}}let r=0;if(s.length>1&&o){let u=s.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}));r=o(u)}r<0&&(r=0);let c=s[r];return{uid:c.uid,type:"group",name:c.name||c.trueName||t,email:c.email||void 0}}throw new Error(l("api.recipient_not_found",{name:t}))}async listMessages(e,o={}){let{limit:t=20,latestFirst:i=!0}=o,s={limit:t,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"};e.type==="user"?(s.uid=this.session.selfUid,s.filter={chatWithAddress:e.uid}):s.uid=e.uid,i&&(s.order="date",s.desc=!0,s.listOrder="desc");let r=await this.client.postJson({func:"cim.msg:list",sid:this.sid,payload:s});if(r.code!=="S_OK"||!Array.isArray(r.var))return[];let c=[];for(let d of r.var){if(typeof d!="object"||!d)continue;let m=d,f=m.data,h=f&&typeof f=="object"&&!Array.isArray(f)&&Object.keys(f).length>0?f:m,x=h.from||{},g=[],v=m.attachments||h.attachments;if(Array.isArray(v))for(let k of v){let C=String(k.uid||"");g.push({file_id:String(k.fileId||k.file_id||""),uid:C||null,title:String(k.title||k.filename||"")||null,content_type:k.content_type||k.ctype,file_size:Number(k.file_size||k.size||0)||null,type:Number(k.t||k.type||0)||null,inline:k.inline===!0})}let w=String(h.mid||h.uid||""),y=g;if(g.length===0){let k=Cc(w);k&&(y=k.map(C=>({file_id:C.fileId,uid:C.uid,title:C.title,content_type:C.contentType,file_size:C.fileSize,type:C.type,inline:C.inline})))}c.push({mid:w,time:le(h.time),subject:h.subject||h.content||"",content:h.content,senderUid:x.uid||h.sender_uid||h.fromUid,senderName:x.true_name||x.email||h.sender_name||h.fromName,senderEmail:x.email||h.sender_email||h.fromEmail,attachments:y})}let u=5,p=c.filter(d=>d.attachments.length===0&&d.mid);for(let d=0;d<p.length;d+=u)await Promise.all(p.slice(d,d+u).map(async m=>{let f=await this.getMessage(m.mid);f&&f.attachments.length>0&&(m.attachments=f.attachments)}));return c}async getMessage(e){let o=await this.client.postJson({func:"cim.msg:getInfo",sid:this.sid,payload:{mid:e,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"}});if(o.code!=="S_OK"||!o.var)return null;let t=o.var,i=t.data||t,s=i.from||{},a=[],r=i.attachments;if(Array.isArray(r))for(let c of r){let u=String(c.uid||"");a.push({file_id:String(c.fileId||c.file_id||""),uid:u||null,title:String(c.title||c.filename||"")||null,content_type:c.content_type||c.ctype,file_size:Number(c.file_size||c.size||0)||null,type:Number(c.t||c.type||0)||null,inline:c.inline===!0})}return{mid:String(i.mid||i.uid||e),time:le(i.time),subject:i.subject||i.content||"",content:i.content,sender_uid:s.uid||i.sender_uid||i.fromUid,sender_name:s.true_name||s.email||i.sender_name||i.fromName,sender_email:s.email||i.sender_email||i.fromEmail,source_id:i.gid,source_name:null,attachments:a,raw:t}}async sendMessage(e,o,t={}){let i=t.botName||this.botName,s=t.senderName||await this.ensureSenderName(),a=je(o,s,i,t.skipPrefix),r=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:a,type:"text"}});if(r.code!=="S_OK")throw new Error(l("api.send_reply_failed",{code:r.code,msg:r.msg||"Unknown error"}));let c=r.var?.[0];return{mid:String(c?.mid||""),to:e.uid,type:e.type}}async sendFile(e,o,t={}){let i=t.botName||this.botName,s=t.senderName||await this.ensureSenderName(),a=je(t.content||"",s,i,t.skipPrefix),r=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,c=Dc.randomUUID(),p=e.type==="user"?this.session.selfUid:e.uid,d=[];for(let h of o){let x=await this.uploadFileWithFlow(h,p,r);d.push({fileId:x.fileId,uid:x.fileUid})}let m=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:a,type:"text",clientMid:c,attachments:d}});if(m.code!=="S_OK")throw new Error(l("api.send_reply_failed",{code:m.code,msg:m.msg||"Unknown error"}));let f=m.var?.[0];return{mid:String(f?.mid||""),to:e.uid,files:o}}async uploadFile(e,o,t){let i=ke.resolve(e),s=ke.basename(i);if(!ae.existsSync(i))throw new Error(l("errors.file_not_found",{path:e}));let a=ae.statSync(i),r=pi.lookup(i)||"application/octet-stream",c=ae.readFileSync(i),u=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:a.size,composeId:t,fileName:s,uid:o,contentType:r}});if(u.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:u.code}));let d=u.var?.attachmentId;if(!d)throw new Error(l("api.upload_no_attachment_id"));let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(t)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(o)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([b,S])=>`${b}=${S}`).join("; ")},x=await nn(m,c,h,6e4),g=x.headers["set-cookie"];if(g)for(let b of g.split(",")){let S=b.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let v;try{v=JSON.parse(x.data)}catch{throw new Error(l("api.upload_invalid_response",{data:x.data?.substring?.(0,400)}))}if(v.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:v.code}));let w=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:t,fileName:s,item:"fileName",attachmentId:d,uid:o}});if(w.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:w.code}));let y=w.var,k=y?.fileId,C=y?.uid;if(!k)throw new Error(l("api.upload_no_file_id"));return{fileId:k,fileUid:C||"",fileName:s}}async uploadFileWithFlow(e,o,t){let i=ke.resolve(e),s=ke.basename(i);if(!ae.existsSync(i))throw new Error(l("errors.file_not_found",{path:e}));let a=ae.statSync(i),r=pi.lookup(i)||"application/octet-stream",c=ae.readFileSync(i),u=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:a.size,composeId:t,fileName:s,uid:o,contentType:r}});if(u.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:u.code}));let d=u.var?.attachmentId;if(!d)throw new Error(l("api.upload_no_attachment_id"));let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(t)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(o)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([b,S])=>`${b}=${S}`).join("; ")},x=await nn(m,c,h,6e4),g=x.headers["set-cookie"];if(g)for(let b of g.split(",")){let S=b.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let v;try{v=JSON.parse(x.data)}catch{throw new Error(l("api.upload_invalid_response",{data:x.data?.substring?.(0,400)}))}if(v.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:v.code}));let w=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:t,fileName:s,item:"fileName",attachmentId:d,uid:o}});if(w.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:w.code}));let y=w.var,k=y?.fileId,C=y?.uid;if(!k)throw new Error(l("api.upload_no_file_id"));return{fileId:k,fileUid:C||"",fileName:s}}async downloadFile(e,o,t,i){let s=`${this.session.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(o)}&mid=${encodeURIComponent(e)}&sid=${encodeURIComponent(this.sid)}&fallback=false`,a={Cookie:`Cim.sid=${this.sid}; Cim=${this.cookies.Cim||""}`},r=await fn(s,a);if(r.status!==200){let m=r.data.toString("utf-8").substring(0,500);throw new Error(l("api.download_http_failed",{status:r.status,body:m}))}if(r.data.length<1e3)try{let m=JSON.parse(r.data.toString("utf-8"));if(m.code&&m.code!=="S_OK")throw new Error(l("api.download_failed",{error:`${m.code} - ${m.msg||""}`}))}catch(m){if(!(m instanceof SyntaxError))throw m}if(!i)throw new Error(l("api.filename_required"));let c=ii(i),u=t?ke.resolve(t):ke.join(qc.tmpdir(),c),p=ke.dirname(u);ae.existsSync(p)||ae.mkdirSync(p,{recursive:!0});let d=r.data;if(c.endsWith(".ilbc")&&!r.data.subarray(0,6).equals(Buffer.from("#!iLBC"))){let m=r.data.length%38===0?"20":"30",f=Buffer.from(`#!iLBC${m}
|
|
16
|
+
`);d=Buffer.concat([f,r.data])}return ae.writeFileSync(u,d),{filePath:u,fileName:c,fileSize:d.length}}async convertAudio(e,o="wav"){let t=o.startsWith(".")?o:`.${o}`,i=e.replace(/\.[^.]+$/,t),{execFile:s}=await import("child_process"),{promisify:a}=await import("util"),r=a(s);try{await r("ffmpeg",["-y","-i",e,"-ar","16000","-ac","1",i],{timeout:3e4})}catch(c){throw new Error(l("api.audio_convert_failed",{error:c.message||String(c)}))}return{filePath:i,format:o}}async createGroup(e,o){let t=await this.searchGroups(e,1);if(t.length>0&&t[0].name===e)return{uid:t[0].uid,name:t[0].name||e};let i={true_name:e,group_type:"topic"};o&&(i.description=o);let s=await this.client.postJson({func:"cim.group:create",sid:this.sid,payload:i});if(s.code!=="S_OK")throw new Error(l("api.create_group_failed",{code:s.code,msg:s.msg||""}));let a=s.var;return{uid:String(a.uid||""),name:e}}async deleteGroup(e){let o=await this.client.postJson({func:"cim.group:discard",sid:this.sid,payload:{uid:e}});if(o.code!=="S_OK")throw new Error(l("api.delete_group_failed",{code:o.code,msg:o.msg||""}));return!0}createSocketClient(e){return tn.fromLunkrConfig(this.session.baseUrl,this.sid,this.session.cookie,{uid:this.session.selfUid,username:this.senderName,eventCallbacks:{connect:()=>e.onConnect?.(),disconnect:()=>e.onDisconnect?.(),ready:()=>e.onReady?.(),message:o=>e.onMessage?.(o),error:o=>{let t=o&&typeof o=="object"&&"message"in o?String(o.message):"Unknown error";e.onError?.(new Error(t))}}})}}});var K=ce(()=>{se();Xn();Fe();Ze()});var Mc={};ss(Mc,{loginCommand:()=>Ln,loginCommandMeta:()=>Nc});async function Qd(n){try{let e=new F(n.baseUrl,{apiPath:n.apiPath}),o={};for(let t of n.cookie.split(";")){let i=t.trim();if(i.includes("=")){let s=i.indexOf("="),a=i.substring(0,s).trim(),r=i.substring(s+1).trim();o[a]=r}}return e.setCookies(o),await e.checkSessionValid(n.sid)}catch{return!1}}async function di(n){try{let e=new F(n.baseUrl,{apiPath:n.apiPath}),o={};for(let i of n.cookie.split(";")){let s=i.trim();if(s.includes("=")){let a=s.indexOf("="),r=s.substring(0,a).trim(),c=s.substring(a+1).trim();o[r]=c}}e.setCookies(o);let t=await e.postJson({func:"cim.common:getCimPrefAttr",sid:n.sid,payload:{return_field:"nickname,true_name,name"}});if(t.code==="S_OK"&&t.var){let i=t.var,s=i.nickname||i.true_name||i.name;return s?String(s).trim():null}}catch{}return null}async function Ln(n,e){let o=e.verbose??!1,t=e.debug??!1,i=e.force??!1,s=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("login.qrcode_login_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(s?` ${l("messages.mode_temporary_desc")}`:` ${l("messages.mode_persistent_desc")}`),console.log("");let a=L();if(i)console.log(l("messages.force_relogin"));else{let g=a.accounts?.[0];if(g?.session?.sid){if(await Qd(g.session)){let w=await di(g.session);w&&(g.session.senderName=w,E(a)),console.log(l("messages.already_logged_in")),w&&console.log(`${l("labels.name")}: ${w}`),console.log(`UID: ${g.session.selfUid}`),console.log("");return}o&&(console.log(l("errors.session_expired_login")),console.log(""),console.log(l("status.login_hint")))}}let r=a.accounts?.[0];if(r?.apiToken&&!i){console.log(l("messages.authenticating_token"));let g=await Re(r.email||r.accountId,r.apiToken,a.device_uuid,{debug:t});if(g.success&&g.sid&&g.cookie){let v=g.selfUid||r.session?.selfUid;r.session={sid:g.sid,cookie:g.cookie,baseUrl:mo,apiPath:gn,selfUid:v};let w=await di(r.session);w&&(r.session.senderName=w),E(a);let y=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful_token")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),w&&console.log(` ${I(l("labels.name")+":",y)} ${w}`),console.log(` ${I(l("labels.email")+":",y)} ${g.email}`),console.log(` ${I(l("labels.bot")+":",y)} ${ie()}`),console.log(""),console.log(` ${I(l("labels.config")+":",y)} ${pe()}`),console.log("");return}console.log(l("login.token_expired_need_rescan")),t&&console.log(l("login.token_login_error",{error:g.error||"Unknown"}))}let c=await ei({device:{device_uuid:a.device_uuid,device_os:a.device_os,device_model:a.device_model,device_name:a.device_name},debug:t});c.success||(console.error(""),console.error(l("login.qrcode_login_failed",{error:c.error||"Unknown"})),process.exit(1)),(!c.apiToken||!c.email)&&(console.error(""),console.error(l("login.qrcode_login_no_token")),process.exit(1)),console.log(""),console.log(l("messages.authenticating_with_token"));let u=await Re(c.email,c.apiToken,c.deviceUuid||a.device_uuid,{debug:t});u.success||(console.error(""),console.error(l("login.token_login_failed",{error:u.error||"Unknown"})),process.exit(1)),(!u.sid||!u.cookie)&&(console.error(""),console.error(l("login.token_login_no_session")),process.exit(1));let p=u.selfUid||c.selfUid,d={sid:u.sid,cookie:u.cookie,baseUrl:mo,apiPath:gn,selfUid:p},m=await di(d);m&&(d.senderName=m);let f={accountId:c.email,email:c.email,enabled:!0,session:d,apiToken:s?void 0:c.apiToken};a=L();let h=a.accounts?.findIndex(g=>g.accountId===c.email)??-1;h>=0&&a.accounts?a.accounts[h]=f:(a.accounts||(a.accounts=[]),a.accounts.push(f)),E(a);let x=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful_qrcode")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),m&&console.log(` ${I(l("labels.name")+":",x)} ${m}`),console.log(` ${I(l("labels.email")+":",x)} ${c.email}`),console.log(` ${I(l("labels.bot")+":",x)} ${ie()}`),console.log(` ${I("UID:",x)} ${p}`),console.log(s?` ${I(l("labels.mode")+":",x)} ${l("messages.mode_temporary")}`:` ${I(l("labels.mode")+":",x)} ${l("messages.mode_persistent")}`),console.log(""),console.log(` ${I(l("labels.config")+":",x)} ${pe()}`),console.log("")}var Nc,Do=ce(()=>{K();hn();Sn();U();Nc={name:"login",description:"Login to Lunkr using QR code",options:[{name:"verbose",alias:"v",description:"Verbose output",type:"boolean",required:!1},{name:"debug",alias:"d",description:"Debug output (show network requests)",type:"boolean",required:!1},{name:"force",alias:"f",description:"Force re-login even if session is valid",type:"boolean",required:!1},{name:"temp",alias:"t",description:"Temporary login (do not save api_token)",type:"boolean",required:!1}]}});U();function us(n){return{}}function ps(n){return{accountId:n.accountId}}function ds(n){return{}}import{Type as _}from"@sinclair/typebox";import{Value as Em}from"@sinclair/typebox/value";var Pl=_.Object({name:_.String({minLength:1,description:"Discussion name is required"}),agentId:_.Optional(_.String()),creatorUid:_.String({minLength:1,description:"Creator UID is required"}),createdAt:_.Union([_.String(),_.Number()],{description:"Creation timestamp"})}),Ul=_.Union([_.Literal("open"),_.Literal("allowlist"),_.Literal("disabled")]),ms=_.Union([_.Literal("open"),_.Literal("allowlist"),_.Literal("disabled")]),Tl=_.Object({enabled:_.Optional(_.Boolean()),allowFrom:_.Optional(_.Array(_.String())),policy:_.Optional(ms),requireMention:_.Optional(_.Boolean())}),Ol=_.Object({policy:_.Union([_.Literal("disabled"),_.Literal("mentionOnly"),_.Literal("open")])}),Wo=_.Object({enabled:_.Optional(_.Boolean({default:!0})),commandPrefix:_.Optional(_.String({minLength:1,default:"/"})),botDiscussions:_.Optional(_.Record(_.String(),Pl)),dmPolicy:_.Optional(Ul),allowFrom:_.Optional(_.Array(_.String())),groupPolicy:_.Optional(ms),groups:_.Optional(_.Array(_.String())),discussions:_.Optional(_.Record(_.String(),Tl)),groupTypeRules:_.Optional(_.Record(_.String(),Ol))}),El=_.Object({email:_.String({minLength:1,description:"Email is required"}),password:_.String({minLength:1,description:"Password is required"}),deviceUuid:_.Optional(_.String()),deviceName:_.Optional(_.String())}),jl=_.Object({sid:_.String(),selfUid:_.String(),cookie:_.String(),baseUrl:_.String(),apiPath:_.String()}),Fl=_.Object({accountId:_.String({minLength:1,description:"Account ID is required"}),name:_.Optional(_.String()),enabled:_.Optional(_.Boolean({default:!0})),credentials:El,config:Wo,session:_.Optional(jl)}),jm=_.Record(_.String(),Fl);var Ce="default";se();var _e="agent:";function Ml(n){let e=L(),o=e.accounts||[];if(n&&n.startsWith(_e)){let i=n.slice(_e.length),s=o.find(a=>a.email===i&&a.role==="agent");return s?{accountId:s.accountId,name:s.name,enabled:s.enabled,session:s.session,config:s.config,apiToken:s.apiToken,role:s.role,agentId:s.agentId}:null}if(!n||n===Ce){let i=W(e);if(!i)return null;let s=o.find(a=>a.accountId===i.accountId||a.email===i.email);return{accountId:i.accountId,name:s?.name,enabled:i.enabled,session:i.session,config:s?.config,apiToken:i.apiToken,role:i.role,agentId:i.agentId}}let t=o.find(i=>i.accountId===n);return t?{accountId:t.accountId,name:t.name,enabled:t.enabled,session:t.session,config:t.config,apiToken:t.apiToken,role:t.role,agentId:t.agentId}:null}function _s(n){return n.channels?.["lunkr-openclaw"]}var Bl={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]};function ws(n){switch(n){case"allow":case"any":case"pairing":return"open";case"deny":return"disabled";case"whitelist":return"allowlist";case"open":case"allowlist":case"disabled":return n;default:return"open"}}function Cs(n){switch(n){case"allow":case"any":return"open";case"deny":return"disabled";case"whitelist":return"allowlist";case"open":case"allowlist":case"disabled":return n;default:return"open"}}function Gl(n,e){let o={...Bl,...n};return e?{...o,...e,dmPolicy:ws(e.dmPolicy??o.dmPolicy),groupPolicy:Cs(e.groupPolicy??o.groupPolicy),botDiscussions:{...o.botDiscussions,...e.botDiscussions},discussions:{...o.discussions,...e.discussions},groupTypeRules:{...o.groupTypeRules,...e.groupTypeRules},allowFrom:e.allowFrom??o.allowFrom,groups:e.groups??o.groups}:{...o,dmPolicy:ws(o.dmPolicy),groupPolicy:Cs(o.groupPolicy)}}function de(n,e){let o=_s(n),i=Ml(e??Ce);if(!i?.session||o?.enabled===!1)return null;let s=o?.enabled??!0,a=Gl(o,i.config),r=i.session;return{accountId:i.accountId,name:i.name??ie(),enabled:s,selfUid:i.session.selfUid,sid:i.session.sid,cookie:i.session.cookie,botName:ie(),commandPrefix:a.commandPrefix,botDiscussions:a.botDiscussions,senderName:r.senderName,config:a,lunkrConfig:i.session,hasApiToken:!!i.apiToken,role:i.role||"standard",agentId:i.agentId}}function On(n,e){return{...n,sid:e.sid,cookie:e.cookie,selfUid:e.selfUid||n.selfUid,lunkrConfig:e}}var Ss={listAccountIds:n=>{let e=[],o=L();W(o)?.session&&e.push(Ce);let i=Tn(o);for(let s of i)s.session?.sid&&e.push(`${_e}${s.email}`);return e},resolveAccount:(n,e)=>de(n,e),defaultAccountId:()=>Ce,isConfigured:n=>n?!!((n.sid||n.hasApiToken)&&n.selfUid):!1,isEnabled:n=>n?n.enabled??!0:!1,describeAccount:n=>{if(!n)return{accountId:"default",configured:!1,enabled:!1};let e=!!((n.sid||n.hasApiToken)&&n.selfUid);return{accountId:n.accountId,name:n.name,enabled:n.enabled,configured:e}},setAccountEnabled:n=>{let{cfg:e,enabled:o}=n,t=_s(e)??{};return{...e,channels:{...e.channels,lunkr:{...t,enabled:o}}}},unconfiguredReason:n=>n?n.sid?n.selfUid?"Account not configured":"Lunkr user ID not available. Please re-authenticate.":"Lunkr session not configured. Run: openclaw lunkr login":"Lunkr account not configured. Run: openclaw lunkr login"};function As(n){return n.replace(/^lunkr:/i,"")}function zl(n,e,o){let t=o.config.dmPolicy??"open",i=o.config.allowFrom??[];return{policy:t,allowFrom:i.map(As),policyPath:"channels.lunkr-openclaw.dmPolicy",allowFromPath:"channels.lunkr-openclaw.allowFrom",approveHint:"openclaw pairing approve lunkr <code>",normalizeEntry:As}}async function Kl(n){let e=[],{account:o}=n;return o.config.groupPolicy==="allowlist"&&!o.config.groups?.length&&e.push('Group policy is set to "allowlist" but no groups are configured. Bot will not respond in any group.'),o.config.dmPolicy==="allowlist"&&!o.config.allowFrom?.length&&e.push('DM policy is set to "allowlist" but allowFrom is empty. Bot will not respond to any DM.'),e}var Rs={resolveDmPolicy:n=>{let{cfg:e,accountId:o,account:t}=n;return zl(e,o??Ce,t)},collectWarnings:n=>Kl(n)};var uc=zo(it(),1);import*as he from"fs";import*as Xe from"path";import*as lc from"os";on();ao();hn();go();var Gs={"cim.cal:createEvents":{func:"cim.cal:createEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:createEventsForLunkr":{func:"cim.cal:createEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEvents":{func:"cim.cal:deleteEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEventsForLunkr":{func:"cim.cal:deleteEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteReminder":{func:"cim.cal:deleteReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getMeetingRooms":{func:"cim.cal:getMeetingRooms",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminder":{func:"cim.cal:getReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminderWithAutoCheck":{func:"cim.cal:getReminderWithAutoCheck",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminder":{func:"cim.cal:setReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminderForLunkr":{func:"cim.cal:setReminderForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEvents":{func:"cim.cal:updateEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEventsForLunkr":{func:"cim.cal:updateEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:api":{func:"cim.common:api",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:autoKeepSession":{func:"cim.common:autoKeepSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkModuleVersion":{func:"cim.common:checkModuleVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkVersion":{func:"cim.common:checkVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:clickLog":{func:"cim.common:clickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:customOpLog":{func:"cim.common:customOpLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:delayClickLog":{func:"cim.common:delayClickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:feedback":{func:"cim.common:feedback",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:flashMailLog":{func:"cim.common:flashMailLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAdminFunctionSetting":{func:"cim.common:getAdminFunctionSetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAttrs":{func:"cim.common:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAvatar":{func:"cim.common:getAvatar",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getBigAvatar":{func:"cim.common:getBigAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCimPrefAttr":{func:"cim.common:getCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getConfig":{func:"cim.common:getConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCustomDomain":{func:"cim.common:getCustomDomain",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getEnfDetail":{func:"cim.common:getEnfDetail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getInitConfig":{func:"cim.common:getInitConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getLastLoginStatus":{func:"cim.common:getLastLoginStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getMaterial":{func:"cim.common:getMaterial",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getNSISDownloadURL":{func:"cim.common:getNSISDownloadURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getOrgInfo":{func:"cim.common:getOrgInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRemindList":{func:"cim.common:getRemindList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRevision":{func:"cim.common:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getSysUserInfo":{func:"cim.common:getSysUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getUserType":{func:"cim.common:getUserType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getValueByKey":{func:"cim.common:getValueByKey",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getWebSocketURL":{func:"cim.common:getWebSocketURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:iosHotfix":{func:"cim.common:iosHotfix",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listAuthDevice":{func:"cim.common:listAuthDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listFlagUser":{func:"cim.common:listFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logCollapse":{func:"cim.common:logCollapse",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logRecord":{func:"cim.common:logRecord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:onlineStatus":{func:"cim.common:onlineStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:resetTopicAvatar":{func:"cim.common:resetTopicAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:searchFlagUser":{func:"cim.common:searchFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendNetDiskOperateNotice":{func:"cim.common:sendNetDiskOperateNotice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendShake":{func:"cim.common:sendShake",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setApplePushSwitch":{func:"cim.common:setApplePushSwitch",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setAvatar":{func:"cim.common:setAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setCimPrefAttr":{func:"cim.common:setCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setFlag":{func:"cim.common:setFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setMiscFlag":{func:"cim.common:setMiscFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setRevision":{func:"cim.common:setRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sioSubscribe":{func:"cim.common:sioSubscribe",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:transEmail":{func:"cim.common:transEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:verify":{func:"cim.common:verify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getCompanyInfoById":{func:"cim.company:getCompanyInfoById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getSensitiveWord":{func:"cim.company:getSensitiveWord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:listCompanyInfo":{func:"cim.company:listCompanyInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.container:searchContacts":{func:"cim.container:searchContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:opRedpacket":{func:"cim.extSys:opRedpacket",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:push":{func:"cim.extSys:push",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:pushRegister":{func:"cim.extSys:pushRegister",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:addCollect":{func:"cim.file:addCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:cancelCollect":{func:"cim.file:cancelCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:directData":{func:"cim.file:directData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getFileData":{func:"cim.file:getFileData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getSearchResult":{func:"cim.file:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getThumbnail":{func:"cim.file:getThumbnail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:listCollect":{func:"cim.file:listCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:moveToNetFolder":{func:"cim.file:moveToNetFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:prepare":{func:"cim.file:prepare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:search":{func:"cim.file:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:searchCollect":{func:"cim.file:searchCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadPost":{func:"cim.file:uploadPost",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadSnippet":{func:"cim.file:uploadSnippet",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadVoice":{func:"cim.file:uploadVoice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:viewFile":{func:"cim.file:viewFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:attendance":{func:"cim.group:attendance",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:create":{func:"cim.group:create",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:delete":{func:"cim.group:delete",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:discard":{func:"cim.group:discard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getInfo":{func:"cim.group:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getMembersInfo":{func:"cim.group:getMembersInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getRelate":{func:"cim.group:getRelate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:invite":{func:"cim.group:invite",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:listVipUserTopic":{func:"cim.group:listVipUserTopic",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:notifyFlag":{func:"cim.group:notifyFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:search":{func:"cim.group:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:transfer":{func:"cim.group:transfer",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateDescription":{func:"cim.group:updateDescription",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateName":{func:"cim.group:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:generate":{func:"cim.link:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:getInfo":{func:"cim.link:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:prolong":{func:"cim.link:prolong",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:sendInviteMail":{func:"cim.link:sendInviteMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:shorten":{func:"cim.link:shorten",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:compose":{func:"cim.mail:compose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getPushFolder":{func:"cim.mail:getPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getShareNF":{func:"cim.mail:getShareNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readMail":{func:"cim.mail:readMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readShare":{func:"cim.mail:readShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:refreshToken":{func:"cim.mail:refreshToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteCompose":{func:"cim.mail:remoteCompose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteRequest":{func:"cim.mail:remoteRequest",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:searchMessages":{func:"cim.mail:searchMessages",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setAllRead":{func:"cim.mail:setAllRead",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setPushFolder":{func:"cim.mail:setPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:share":{func:"cim.mail:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:ssoLunkr":{func:"cim.mail:ssoLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:uploadToPersonalNF":{func:"cim.mail:uploadToPersonalNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:batchReply":{func:"cim.msg:batchReply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:broadcast":{func:"cim.msg:broadcast",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:clearUnread":{func:"cim.msg:clearUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:collect":{func:"cim.msg:collect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:deleteUploadFile":{func:"cim.msg:deleteUploadFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getInfo":{func:"cim.msg:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByType":{func:"cim.msg:getLastMsgByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByUID":{func:"cim.msg:getLastMsgByUID",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getSearchResult":{func:"cim.msg:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getShare":{func:"cim.msg:getShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:list":{func:"cim.msg:list",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:operate":{func:"cim.msg:operate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:p2p":{func:"cim.msg:p2p",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:reply":{func:"cim.msg:reply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:search":{func:"cim.msg:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:searchByGroup":{func:"cim.msg:searchByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:setVip":{func:"cim.msg:setVip",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:share":{func:"cim.msg:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:stats":{func:"cim.msg:stats",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateLastMsg":{func:"cim.msg:updateLastMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateRcptMsg":{func:"cim.msg:updateRcptMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getAttrs":{func:"cim.oabEx:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getUserInfo":{func:"cim.oabEx:getUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:setAttrs":{func:"cim.oabEx:setAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteLotterySetting":{func:"cim.operation:deleteLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteOperateActivityById":{func:"cim.operation:deleteOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:exportUserLottery":{func:"cim.operation:exportUserLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getCommentByCode":{func:"cim.operation:getCommentByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getLotteryResultByCode":{func:"cim.operation:getLotteryResultByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getOperateActivityById":{func:"cim.operation:getOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getPrizeInfoByCode":{func:"cim.operation:getPrizeInfoByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listActiveOperateActivity":{func:"cim.operation:listActiveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listLotterySetting":{func:"cim.operation:listLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveComment":{func:"cim.operation:saveComment",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveLotterySetting":{func:"cim.operation:saveLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveOperateActivity":{func:"cim.operation:saveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveUserCommentForPrize":{func:"cim.operation:saveUserCommentForPrize",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:sendGreetingCard":{func:"cim.operation:sendGreetingCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:startLottery":{func:"cim.operation:startLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:updateOperateActivity":{func:"cim.operation:updateOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addContact":{func:"cim.pab:addContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addGroup":{func:"cim.pab:addGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addToBlacklist":{func:"cim.pab:addToBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:deleteGroup":{func:"cim.pab:deleteGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getAllContacts":{func:"cim.pab:getAllContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getBlacklist":{func:"cim.pab:getBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getCombinedContacts":{func:"cim.pab:getCombinedContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getRecentContacts":{func:"cim.pab:getRecentContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getWholeContacts":{func:"cim.pab:getWholeContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:removeFromBlacklist":{func:"cim.pab:removeFromBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:searchContact":{func:"cim.pab:searchContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:updateContact":{func:"cim.pab:updateContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:generate":{func:"cim.qrcode:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:qrcodeInfo":{func:"cim.qrcode:qrcodeInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:register":{func:"cim.qrcode:register",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:get":{func:"cim.remind:get",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:getMobile":{func:"cim.remind:getMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:set":{func:"cim.remind:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:setMobile":{func:"cim.remind:setMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.revision:getRevision":{func:"cim.revision:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:getNotify":{func:"cim.state:getNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:query":{func:"cim.state:query",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryHasLogin":{func:"cim.state:queryHasLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryUserState":{func:"cim.state:queryUserState",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:set":{func:"cim.state:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:setNotify":{func:"cim.state:setNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:checkToken":{func:"cim.third:checkToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:genLinkNonce":{func:"cim.third:genLinkNonce",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:listApp":{func:"cim.third:listApp",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:getThreadInfo":{func:"cim.thread:getThreadInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listBulletin":{func:"cim.thread:listBulletin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listRevision":{func:"cim.thread:listRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listThreadNew":{func:"cim.thread:listThreadNew",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:setTop":{func:"cim.thread:setTop",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:changePassword":{func:"cim.user:changePassword",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:checkVersionAndLogin":{func:"cim.user:checkVersionAndLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:genTempSession":{func:"cim.user:genTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getCard":{func:"cim.user:getCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getEmojiList":{func:"cim.user:getEmojiList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getLunkrMailData":{func:"cim.user:getLunkrMailData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getRecentUnread":{func:"cim.user:getRecentUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempSession":{func:"cim.user:getTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempShareSession":{func:"cim.user:getTempShareSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOffLine":{func:"cim.user:kickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineDevice":{func:"cim.user:kickOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineUserForAdmin":{func:"cim.user:kickOnlineUserForAdmin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listKickOffLineLog":{func:"cim.user:listKickOffLineLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listLoginHistory":{func:"cim.user:listLoginHistory",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:logout":{func:"cim.user:logout",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:queryOnlineDevice":{func:"cim.user:queryOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:removeKickOffLine":{func:"cim.user:removeKickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveCard":{func:"cim.user:saveCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveEmoji":{func:"cim.user:saveEmoji",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:shareCard":{func:"cim.user:shareCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateName":{func:"cim.user:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateOrgUserLastModified":{func:"cim.user:updateOrgUserLastModified",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateTempSession":{func:"cim.user:updateTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"nfEx:getFileData":{func:"nfEx:getFileData",path:"/crux/adm_api/filePreview",requiresFunc:!0,defaultUseGet:!0},"nfEx:getShareFile":{func:"nfEx:getShareFile",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"oab:autoMatch":{func:"oab:autoMatch",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:get":{func:"oab:get",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:getDirectories":{func:"oab:getDirectories",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:listEx":{func:"oab:listEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:searchEx":{func:"oab:searchEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:createContact":{func:"pab:createContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:deleteContact":{func:"pab:deleteContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getAllContactsByType":{func:"pab:getAllContactsByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactByEmail":{func:"pab:getContactByEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactsByGroup":{func:"pab:getContactsByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"user:config":{func:"user:config",path:"/lunkr/common/config",requiresFunc:!1,defaultUseGet:!0},"user:init":{func:"user:init",path:"/lunkr/init",requiresFunc:!1,defaultUseGet:!0}},tu=Object.keys(Gs);on();Sn();Fe();U();Xn();var sc=1e3;async function ac(n,e){try{let o=await n.postJson({func:"cim.common:getCimPrefAttr",sid:e,payload:{return_field:"nickname,true_name,name"}});if(o.code==="S_OK"&&o.var){let t=o.var,i=t.nickname||t.true_name||t.name;return i?String(i).trim():null}}catch{}return null}async function rc(n,e){let o=de(n,e);if(!o)throw new Error(l("errors.account_not_configured"));let t=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),i={"Cim.sid":o.sid};for(let s of o.cookie.split(";")){let a=s.trim();if(a.includes("=")){let[r,c]=a.split("=",2);i[r.trim()]=c.trim()}}return t.setCookies(i),{client:t,account:o}}async function Ld(n,e){let{to:o,content:t,sid:i,accountId:s,lunkrConfig:a}=e,r=await n.postJson({func:"cim.msg:reply",sid:i,payload:{uid:o,content:t,type:"text"}});if(r.code!=="S_OK"&&An(String(r.code))){let u=await ge(s);if(u.success&&u.session){let p=new F(a.baseUrl,{apiPath:a.apiPath}),d={"Cim.sid":u.session.sid};for(let f of u.session.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,g]=h.split("=",2);d[x.trim()]=g.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:u.session.sid,payload:{uid:o,content:t,type:"text"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`msg-${Date.now()}`};throw new Error(l("api.send_failed",{code:String(m.code)}))}else console.error(`[${s}] Session refresh failed: ${u.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(l("api.send_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`msg-${Date.now()}`}}async function Id(n,e){let{to:o,content:t,sid:i,accountId:s,lunkrConfig:a}=e,r=await n.postJson({func:"cim.msg:reply",sid:i,payload:{uid:o,content:t,type:"post"}});if(r.code!=="S_OK"&&An(String(r.code))){let u=await ge(s);if(u.success&&u.session){let p=new F(a.baseUrl,{apiPath:a.apiPath}),d={"Cim.sid":u.session.sid};for(let f of u.session.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,g]=h.split("=",2);d[x.trim()]=g.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:u.session.sid,payload:{uid:o,content:t,type:"post"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`post-${Date.now()}`};throw new Error(l("api.send_post_failed",{code:String(m.code)}))}else console.error(`[${s}] Session refresh failed: ${u.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(l("api.send_post_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`post-${Date.now()}`}}function cc(n){let e=n.replace(/^lunkr:/i,"");return e.startsWith("discussion:")?{chatId:e.replace("discussion:",""),chatType:"group"}:e.startsWith("channel:")?{chatId:e.replace("channel:",""),chatType:"channel"}:{chatId:e,chatType:"p2p"}}async function Pd(n){if(n.startsWith("http://")||n.startsWith("https://")){let o=lc.tmpdir(),t=`lunkr-media-${Date.now()}-${Xe.basename(new URL(n).pathname)||"file"}`,i=Xe.join(o,t),s=await fn(n,{},6e4);return he.writeFileSync(i,s.data),{filePath:i,cleanup:()=>{try{he.existsSync(i)&&he.unlinkSync(i)}catch{}}}}let e=Xe.resolve(n);if(!he.existsSync(e))throw new Error(l("errors.file_not_found",{path:n}));return{filePath:e,cleanup:()=>{}}}async function Ud(n,e){let{filePath:o,sid:t,uploadUid:i,cookies:s,baseUrl:a,apiPath:r}=e,c=Xe.resolve(o),u=Xe.basename(c);if(!he.existsSync(c))throw new Error(l("errors.file_not_found",{path:o}));let p=he.statSync(c),d=uc.lookup(c)||"application/octet-stream",m=he.readFileSync(c),f=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,h=await n.postJson({func:"cim.file:prepare",sid:t,payload:{size:p.size,composeId:f,fileName:u,uid:i,contentType:d}});if(h.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:String(h.code)}));let g=h.var?.attachmentId;if(!g)throw new Error(l("api.upload_no_attachment_id"));let v=`${a}${r}?func=cim.file:directData&sid=${encodeURIComponent(t)}&composeId=${encodeURIComponent(f)}&attachmentId=${g}&offset=0&uid=${encodeURIComponent(i)}`,y={"Content-Type":"application/octet-stream",Cookie:Object.entries(s).map(([q,B])=>`${q}=${B}`).join("; ")},k=await nn(v,m,y,6e4),C;try{C=JSON.parse(k.data)}catch{throw new Error(l("api.upload_invalid_response",{data:k.data?.substring?.(0,200)}))}if(C.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:String(C.code)}));let b=await n.postJson({func:"cim.file:moveToNetFolder",sid:t,payload:{composeId:f,fileName:u,item:"fileName",attachmentId:g,uid:i}});if(b.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:String(b.code)}));let S=b.var,T=S?.fileId,R=S?.uid;if(!T)throw new Error(l("api.upload_no_file_id"));return{fileId:T,fileUid:R||""}}var pc={deliveryMode:"direct",textChunkLimit:sc,sendText:async n=>{let{cfg:e,to:o,text:t,replyToId:i,accountId:s}=n,{client:a,account:r}=await rc(e,s),{chatId:c,chatType:u}=cc(o),p=r.botName??"Bot",d=r.senderName;d||(d=await ac(a,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=r.role==="agent",f=je(t,d,p,m),h;return f.length>sc?h=await Id(a,{to:c,content:f,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}):h=await Ld(a,{to:c,content:f,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}),{ok:!0,channel:"lunkr-openclaw",messageId:h.msgId}},sendMedia:async n=>{let{cfg:e,to:o,text:t,mediaUrl:i,accountId:s}=n;if(!i)throw new Error(l("errors.media_url_required"));let{client:a,account:r}=await rc(e,s),{chatId:c,chatType:u}=cc(o),p=r.botName??"Bot",d=r.senderName;d||(d=await ac(a,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=r.role==="agent",f=je(t||"",d,p,m),h={"Cim.sid":r.sid};for(let k of r.cookie.split(";")){let C=k.trim();if(C.includes("=")){let[b,S]=C.split("=",2);h[b.trim()]=S.trim()}}let x=a,g=r.sid;if((await a.postJson({func:"cim.common:getOrgInfo",sid:r.sid})).code!=="S_OK"){let k=await ge(r.accountId);if(!k.success||!k.session)throw new Error(l("errors.session_expired"));g=k.session.sid,x=new F(r.lunkrConfig.baseUrl,{apiPath:r.lunkrConfig.apiPath}),h={"Cim.sid":g};for(let C of k.session.cookie.split(";")){let b=C.trim();if(b.includes("=")){let[S,T]=b.split("=",2);h[S.trim()]=T.trim()}}x.setCookies(h)}let w,y;try{let k=await Pd(i);w=k.filePath,y=k.cleanup;let C=u==="p2p"?r.selfUid:c,{fileId:b,fileUid:S}=await Ud(x,{filePath:w,sid:g,uploadUid:C,cookies:h,baseUrl:r.lunkrConfig.baseUrl,apiPath:r.lunkrConfig.apiPath}),T=await x.postJson({func:"cim.msg:reply",sid:g,payload:{uid:c,content:f,type:"text",attachments:[{fileId:b,uid:S}]}});if(T.code!=="S_OK")throw new Error(l("api.send_media_failed",{code:String(T.code)}));return{ok:!0,channel:"lunkr-openclaw",messageId:T.var?.msgId??`media-${Date.now()}`}}finally{y&&y()}}};go();function fc(n,e){let o=n.chatType==="group"?n.chatId:null;return o&&(e.botDiscussions||{})[o]||null}function si(n,e){return fc(n,e)!==null}function Td(n,e){return n.trim().toLowerCase().startsWith(e.toLowerCase())}function dc(n,e){let o=n.fromUid===e.selfUid,t=o&&/^\[@!.+?\]/.test(n.content),i=o&&!t;if(t)return{isBotMention:!1,isFromBot:!0,isFromSelf:!1};let s=fc(n,e);return s?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:s.agentId}:o&&Td(n.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function mc(n,e){let o=n.fromUid===e.selfUid;return o&&/^\[@!.+?\]/.test(n.content)?{isBotMention:!1,isFromBot:!0,isFromSelf:!1}:o?{isBotMention:!1,isFromBot:!1,isFromSelf:!0}:n.chatType==="p2p"?{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId,workspaceKey:`${e.selfUid}:${n.fromUid}`}:{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId,workspaceKey:`${e.selfUid}:${n.chatId}`}}function Od(n,e){let o=n.trim();return o.toLowerCase().startsWith(e.toLowerCase())?o.slice(e.length).trim():n}function gc(n,e){let o=e.role||"standard",t;if(o==="agent")t=mc(n,e);else if(o==="standard+agent"){let r=mc(n,e),c=dc(n,e);r.isBotMention?t=r:(c.isBotMention,t=c)}else t=dc(n,e);let s=si(n,e)?n.content:Od(n.content,e.commandPrefix),a=n.chatType==="p2p"?"direct":n.chatType;return{externalId:n.msgId,channel:"lunkr-openclaw",chatType:a,peerId:n.chatId,senderId:n.fromUid,text:s,timestamp:n.timestamp,replyTo:n.threadId,mentions:n.mentionedUids,isBotMention:t.isBotMention,isFromBot:t.isFromBot,isFromSelf:t.isFromSelf,agentId:t.agentId,workspaceKey:t.workspaceKey,contentType:n.contentType,attachments:n.attachments}}function Ed(n){let e=n.indexOf("(");return e>0?n.substring(0,e):n}function jo(n,e){if(!e||e.length===0)return!1;let o=n.replace(/^lunkr:/i,"");return e.some(t=>Ed(t).replace(/^lunkr:/i,"")===o)}function jd(n){let e=n.match(/(#[A-Z])$/);return e?e[1]:null}function hc(n,e,o){let t=e.config;if(n.chatType!=="direct"){let c={chatType:"group",chatId:n.peerId};if(si(c,e))return{allowed:!0,reason:"bot discussion"}}if(n.chatType==="direct"){let c=t.dmPolicy||"open";return c==="disabled"?{allowed:!1,reason:"DM blocked: policy is disabled"}:c==="allowlist"?jo(n.senderId,t.allowFrom)?{allowed:!0,reason:"sender in DM allowlist"}:{allowed:!1,reason:`DM blocked: sender ${n.senderId} not in allowFrom`}:{allowed:!0,reason:"DM policy is open"}}let i=n.peerId,s=t.discussions?.[i];if(s?.enabled===!1)return{allowed:!1,reason:`group blocked: discussion ${i} is disabled`};if(!(s&&(s.policy!==void 0||s.allowFrom!==void 0||s.requireMention!==void 0))){let c=jd(i);if(c){let u=t.groupTypeRules?.[c];if(u){if(u.policy==="disabled")return{allowed:!1,reason:`group blocked: type rule ${c} is disabled`};if(u.policy==="mentionOnly"&&!(n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")))return{allowed:!1,reason:`group blocked: type rule ${c} requires mention`}}}}if(s?.requireMention===!0&&!(n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")))return{allowed:!1,reason:`group blocked: discussion ${i} requires mention`};let r=s?.policy||t.groupPolicy||"open";if(r==="disabled")return{allowed:!1,reason:"group blocked: policy is disabled"};if(r==="allowlist"){let c=jo(i,t.groups);return s?.allowFrom&&s.allowFrom.length>0?jo(n.senderId,s.allowFrom)?{allowed:!0,reason:"sender in discussion allowFrom"}:{allowed:!1,reason:`group blocked: sender ${n.senderId} not in discussion allowFrom for ${i}`}:c?{allowed:!0,reason:"group in allowlist"}:{allowed:!1,reason:`group blocked: ${i} not in groups allowlist`}}return s?.allowFrom&&s.allowFrom.length>0&&!jo(n.senderId,s.allowFrom)?{allowed:!1,reason:`group blocked: sender ${n.senderId} not in discussion allowFrom for ${i}`}:{allowed:!0,reason:"group policy is open"}}Fe();U();Xn();dn();var Ie=new Map,Zn=new Map,Rc=5e3;function qd(n){let e=Date.now(),o=Zn.get(n);if(o&&e-o<Rc)return!0;if(Zn.set(n,e),Zn.size>1e3)for(let[t,i]of Zn)e-i>Rc*2&&Zn.delete(t);return!1}function Dd(n,e){let o=e.role||"standard";return o==="agent"||o==="standard+agent"?n.chatType==="direct"?!0:n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")||!1:n.isFromSelf}function Nd(n){let o=n.replace(/^(@\S+\s+)*/g,"").trim().toLowerCase();return o==="/help"||o.startsWith("/help ")?"/help":o==="/new"||o.startsWith("/new ")?"/new":null}var Lc=1e3;async function Ic(n,e,o){let{to:t,text:i,chatType:s}=e;o?.debug?.(`[sendLunkrReply] to=${t}, chatType=${s}, textLen=${i.length}`);let a=n.botName??"Bot",r=n.senderName;r||(r=n.selfUid?.includes("@")?n.selfUid.split("@")[0]:"User");let c=e.skipPrefix??n.role==="agent",u=je(i,r,a,c),p=n.sid,d=n.cookie,m=n;if(p){let f=new F(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),h={"Cim.sid":p};for(let g of d.split(";")){let v=g.trim();if(v.includes("=")){let[w,y]=v.split("=",2);h[w.trim()]=y.trim()}}f.setCookies(h);let x=await f.postJson({func:"cim.msg:reply",sid:p,payload:{uid:t,content:u,type:u.length>Lc?"post":"text"}});if(o?.debug?.(`[sendLunkrReply] Response: code=${x.code}`),x.code==="S_OK"){let g=x.var?.msgId;return o?.info(`[sendLunkrReply] Message sent successfully${g?`: msgId=${g}`:""}`),{msgId:g??`msg-${Date.now()}`,account:m}}if(An(String(x.code)))o?.info(`[${n.accountId}] Session expired, clearing sid...`),p="",d="";else throw new Error(l("api.send_reply_failed",{code:String(x.code),msg:String(x.msg||"Unknown")}))}if(!p){o?.info(`[${n.accountId}] No valid session, attempting refresh with apiToken...`);let f=await ge(n.accountId);if(f.success&&f.session){o?.info(`[${n.accountId}] Session refreshed, sending message...`),p=f.session.sid,d=f.session.cookie;let h=new F(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),x={"Cim.sid":p};for(let v of d.split(";")){let w=v.trim();if(w.includes("=")){let[y,k]=w.split("=",2);x[y.trim()]=k.trim()}}h.setCookies(x);let g=await h.postJson({func:"cim.msg:reply",sid:p,payload:{uid:t,content:u,type:u.length>Lc?"post":"text"}});if(g.code==="S_OK"){let v=On(n,f.session),w=g.var?.msgId;return o?.info(`[sendLunkrReply] Message sent successfully after refresh: msgId=${w}`),{msgId:w??`msg-${Date.now()}`,account:v}}throw o?.warn?.(`[${n.accountId}] Send failed after refresh: ${g.code}. Will retry later.`),new Error(l("api.send_reply_failed",{code:String(g.code),msg:String(g.msg||"Unknown")}))}throw o?.warn?.(`[${n.accountId}] Session refresh failed: ${f.error}. Will retry later.`),new Error(l("api.no_session"))}throw new Error(l("api.send_reply_failed",{code:"UNKNOWN",msg:"Unexpected state"}))}function $o(n,e){let{log:o}=e;return tn.fromLunkrConfig(n.lunkrConfig.baseUrl,n.sid,n.cookie,{uid:n.selfUid,username:n.botName,autoReconnect:e.autoReconnect,eventCallbacks:{message:i=>{try{let s=Md(i,o);if(s){s.attachments&&s.attachments.length>0&&(wc(s.msgId,s.timestamp,s.attachments.map(r=>({fileId:r.fileId,uid:r.uid,title:r.title,contentType:r.contentType,fileSize:r.fileSize,type:r.type,inline:r.inline}))),o?.debug?.(`[gateway] Cached ${s.attachments.length} attachments for message ${s.msgId}`));let a=gc(s,n);e.onMessage(a)}}catch(s){e.onError(s instanceof Error?s:new Error(String(s)))}},reaction:i=>{if(e.onReaction&&i&&typeof i=="object"){let s=i;e.onReaction({msgId:String(s.msgId??""),userId:String(s.fromUid??""),emoji:String(s.emoji??"")})}},disconnect:()=>{e.onDisconnect()},error:i=>{let s=i&&typeof i=="object"&&"message"in i?String(i.message):"Unknown socket error";e.onError(new Error(s))}}})}function Md(n,e){if(!n||typeof n!="object")return null;let o=n,t=o.topic||"",i=o.payload||"",s;try{s=JSON.parse(i)}catch{return null}if(!s.mid&&!s.subject)return null;let a=Object.keys(s),r=s.attachments;e?.debug?.(`[parseSocketMessage] MSG keys=[${a.join(", ")}], attachments=${JSON.stringify(r)?.substring(0,200)}`);let c=String(s.mid||""),u=s.from||{},p=s.to||{},d=String(u.uid||""),m=String(u.true_name||u.email||""),f=String(s.subject||"");try{f=decodeURIComponent(f.replace(/\+/g," "))}catch{}let h=String(s.type||s.group_type||"p2p"),x=String(s.uid||p.uid||""),g;x.endsWith("#U")?g="p2p":x.endsWith("#T")?g="group":g=h==="p2p"?"p2p":h==="topic"||h==="group"?"group":"channel";let v=s.attachments||[],w=v.map(R=>{let q=String(R.uid||"");return{fileId:String(R.fileId||R.file_id||""),uid:q,title:String(R.title||""),fileSize:Number(R.file_size||R.fileSize||0),type:Number(R.t||R.type||0),ctype:R.ctype?String(R.ctype):void 0,inline:!!R.inline,duration:R.duration?Number(R.duration):void 0}});if(w.length===0){let R=Object.keys(s),q=R.some(O=>O.toLowerCase().includes("file")||O.toLowerCase().includes("att")||O.toLowerCase().includes("attach")||O.toLowerCase().includes("media")||O.toLowerCase().includes("image")||O.toLowerCase().includes("audio")),B=String(s.type||""),N=["file","image","audio","video","attachment"].some(O=>B.toLowerCase().includes(O));if(q||N){e?.info(`[parseSocketMessage] \u26A0\uFE0F No attachments parsed but message has file-related fields. type="${B}", keys=${R.join(", ")}`),e?.debug?.("[parseSocketMessage] No attachments found, but message might have file content"),e?.debug?.(`[parseSocketMessage] msg.type="${B}", msg keys: ${R.join(", ")}`);for(let O of R){let V=O.toLowerCase();if(V.includes("file")||V.includes("att")||V.includes("attach")||V.includes("media")||V.includes("image")||V.includes("audio")){let ne=s[O];e?.debug?.(`[parseSocketMessage] Field "${O}": ${JSON.stringify(ne).substring(0,500)}`)}}}}let y="text",k=w[0];if(k){let R=k.title?.split(".").pop()?.toLowerCase();R==="ilbc"?y="audio":["jpg","jpeg","png","gif","bmp","webp"].includes(R||"")?y="image":["mp4","mov","avi","mkv"].includes(R||"")?y="video":y="file"}let C=f;if(w.length>0){let R=[];for(let B of w){let N=B.title?.split(".").pop()?.toLowerCase();N==="ilbc"?R.push(l("attachment.voice",{duration:B.duration||""})):["jpg","jpeg","png","gif","bmp","webp"].includes(N||"")?R.push(l("attachment.image",{title:B.title})):["mp4","mov","avi","mkv"].includes(N||"")?R.push(l("attachment.video",{title:B.title})):R.push(l("attachment.file",{title:B.title}))}let q=R.join(" ");f.trim()?C=`${f}
|
|
17
|
+
${q}`:C=q}if(w.length>0){e?.info(`[parseSocketMessage] Parsed ${w.length} attachment(s): ${w.map(q=>`${q.title}(uid=${q.uid||"EMPTY!"})`).join(", ")}`),v[0]&&(e?.debug(`[parseSocketMessage] Raw attachment[0] keys: ${Object.keys(v[0]).join(", ")}`),e?.debug(`[parseSocketMessage] Raw attachment[0]: ${JSON.stringify(v[0])}`));let R=w.filter(q=>!q.uid);R.length>0&&(e?.warn?.(`[parseSocketMessage] \u26A0\uFE0F ${R.length} attachment(s) have empty uid - download will fail!`),v[0]&&e?.warn?.(`[parseSocketMessage] Available fields in raw attachment: ${Object.keys(v[0]).join(", ")}`))}let b,S=s.at_uid;typeof S=="string"&&S&&(S==="all"?b=["all"]:S.includes(",")?b=S.split(",").map(R=>R.trim()).filter(Boolean):b=[S]);let T=b?b.length>0:!1;return{msgId:c,threadId:s.threadId?String(s.threadId):void 0,parentId:s.parentId?String(s.parentId):void 0,fromUid:d,fromName:m||void 0,toUid:String(p.uid||""),chatType:g,chatId:x||(g==="p2p"?d:""),content:C,contentType:y,timestamp:typeof s.time=="number"?s.time:Date.now(),mentioned:T,mentionedUids:b,attachments:w.length>0?w:void 0}}async function Bd(n){let{msg:e,account:o,sessionFilesDir:t,log:i}=n,s=e.attachments?.[0];if(s?.fileId)try{let a=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),r={"Cim.sid":o.sid};for(let v of o.cookie.split(";")){let w=v.trim();if(w.includes("=")){let[y,k]=w.split("=",2);r[y.trim()]=k.trim()}}a.setCookies(r);let c=s.title||`file-${s.fileId}`,u=`${t}/${c}`,p=s.uid||e.peerId,d=`${o.lunkrConfig.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(p)}&mid=${encodeURIComponent(s.fileId)}&sid=${encodeURIComponent(o.sid)}&fallback=false`,m={Cookie:`Cim.sid=${o.sid}; Cim=${r.Cim||""}`},{default:f}=await import("fs"),{default:h}=await import("path"),{httpsGetBuffer:x}=await Promise.resolve().then(()=>(on(),Ns)),g=await x(d,m);if(g.status!==200){i?.warn?.(`[autoDownload] HTTP ${g.status} for ${c}`);return}if(g.data.length<1e3)try{let v=JSON.parse(g.data.toString("utf-8"));if(v.code&&v.code!=="S_OK"){i?.warn?.(`[autoDownload] API error: ${v.code}`);return}}catch{}return f.mkdirSync(h.dirname(u),{recursive:!0}),f.writeFileSync(u,g.data),i?.info(`[autoDownload] Saved ${c} (${g.data.length} bytes) \u2192 ${u}`),u}catch(a){i?.warn?.(`[autoDownload] Failed: ${a instanceof Error?a.message:String(a)}`);return}}async function Gd(n){let{msg:e,account:o,sessionKey:t,accountId:i,log:s}=n,a=e.chatType!=="direct",r=a?`group:${e.peerId}`:e.senderId,c=a?"group":"direct",u=e.attachments?.[0],p;u&&(e.contentType==="audio"?p="audio/ilbc":e.contentType==="image"?p=`image/${u.title?.split(".").pop()||"jpeg"}`:e.contentType==="video"?p=`video/${u.title?.split(".").pop()||"mp4"}`:p="application/octet-stream");let d=t,m=_c(d),f=Ac(d);yc(d,{workspaceDir:m,filesDir:f,accountId:i});let h;return u&&(h=await Bd({msg:e,account:o,sessionFilesDir:f,log:s})),{Body:e.text,BodyForAgent:e.text,RawBody:e.text,CommandBody:e.text,From:a?`lunkr:group:${e.peerId}`:`lunkr:${e.senderId}`,To:`lunkr:${e.peerId}`,SessionKey:t,AccountId:i,ChatType:c,ConversationLabel:r,SenderName:void 0,SenderId:e.senderId,CommandAuthorized:!0,Provider:"lunkr",Surface:"lunkr",MessageSid:e.externalId,MediaPath:h,MediaType:p,MediaUrl:void 0,Attachments:e.attachments,OriginatingChannel:"lunkr",OriginatingTo:`lunkr:${e.peerId}`,LunkrSessionWorkspaceDir:m,LunkrSessionFilesDir:f,LunkrWorkspaceKey:d}}var Pc={startAccount:async n=>{let{account:e,abortSignal:o,log:t}=n,i=e,s=new Map;t?.info(`[${i.accountId}] Starting Lunkr gateway`);let a=!i.sid;if(i.sid&&(await new F(i.lunkrConfig.baseUrl).checkSessionValid(i.sid)||(t?.warn?.(`[${i.accountId}] Session invalid on startup, will refresh...`),a=!0)),a){t?.info(`[${i.accountId}] No valid session on startup, attempting refresh...`);let g=await ge(i.accountId);g.success&&g.session?(i=On(i,g.session),t?.info(`[${i.accountId}] Session refreshed on startup`)):t?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${g.error}. Will retry when sending messages.`)}let r,c=3,u=5e3,p=12e4,d=0,m=0,f={onMessage:async g=>{if(!g.isBotMention)return;if(qd(g.externalId)){t?.debug?.(`[${i.accountId}] Skipping duplicate message: ${g.externalId}`);return}let v=g.chatType==="direct"?"DM":"Group";if(t?.info(`[${i.accountId}] [${v}:${g.peerId}] Received msg from ${g.senderId}: ${g.text?.substring(0,50)}...`),t?.debug?.(`[${i.accountId}] Attachments check: count=${g.attachments?.length||0}, contentType=${g.contentType}`),g.attachments&&g.attachments.length>0){let C=g.attachments.map(b=>{let S=b.title?.split(".").pop()?.toLowerCase();return S==="ilbc"?l("attachment.voice_short",{duration:b.duration||"?"}):["jpg","jpeg","png","gif","bmp","webp"].includes(S||"")?l("attachment.image_short",{title:b.title}):["mp4","mov","avi","mkv"].includes(S||"")?l("attachment.video_short",{title:b.title}):l("attachment.file_short",{title:b.title})}).join(", ");t?.info(`[${i.accountId}] [${v}:${g.peerId}] Attachments: ${C}`)}let w=hc(g,i,t);if(!w.allowed){t?.info(`[${i.accountId}] Message discarded: ${w.reason}`);return}let y=i.role||"standard",k=y==="agent"||y==="standard+agent"&&!g.isFromSelf;if(Dd(g,i)){let C=Nd(g.text);if(C){let b=g.workspaceKey||`${i.selfUid}:${g.peerId}`,S;C==="/help"?S=l("commands.help.text"):(s.set(b,(s.get(b)||0)+1),Sc(b),S=l("commands.new.done")),t?.info(`[${i.accountId}] Built-in command ${C} from ${g.senderId}`);try{let T=await Ic(i,{to:g.peerId,chatType:g.chatType,text:S,skipPrefix:k},t);T.account!==i&&(i=T.account)}catch(T){t?.error?.(`[${i.accountId}] Command reply failed: ${T instanceof Error?T.message:String(T)}`)}return}}if(!n.channelRuntime){t?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let C=new Set,b=g.chatType!=="direct",S=n.channelRuntime.routing.buildAgentSessionKey({peerId:g.peerId,channelId:"lunkr-openclaw",accountId:n.accountId}),T=n.channelRuntime.routing.resolveAgentRoute({cfg:n.cfg,channel:"lunkr-openclaw",peer:{kind:b?"group":"direct",id:g.peerId},accountId:n.accountId}),R=g.workspaceKey||T.sessionKey,q=s.get(R)||0,B=q>0?`${R}:r${q}`:R,N=await Gd({msg:g,account:i,sessionKey:B,accountId:T.accountId,log:t}),V=n.cfg.session?.store;V&&await n.channelRuntime.session.recordInboundSession({storePath:V,sessionKey:N.SessionKey,ctx:N,onRecordError:ne=>{t?.error?.(`[${i.accountId}] Failed to record session: ${String(ne)}`)}}),await n.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:N,cfg:n.cfg,dispatcherOptions:{deliver:async(ne,ue)=>{let Ue=ne.text??"";if(Ue.trim()){if(ue.kind==="block"){t?.debug?.(`[${i.accountId}] Skipping block chunk (waiting for final)`);return}if(ue.kind==="final"&&C.has(Ue)){t?.debug?.(`[${i.accountId}] Skipping duplicate final reply`);return}ue.kind==="final"&&C.add(Ue),t?.info(`[${i.accountId}] Deliver ${ue.kind} reply to ${g.peerId}: ${Ue.substring(0,50)}...`);try{let Te=await Ic(i,{to:g.peerId,chatType:g.chatType,text:Ue,skipPrefix:k},t);Te.account!==i&&(i=Te.account,t?.info(`[${i.accountId}] Session updated after refresh`))}catch(Te){t?.error?.(`[${i.accountId}] Failed to send reply: ${Te instanceof Error?Te.message:String(Te)}`)}}},onError:(ne,ue)=>{t?.error?.(`[${i.accountId}] AI ${ue.kind} failed: ${String(ne)}`)}}})}catch(C){t?.error?.(`[${i.accountId}] Message dispatch error: ${C instanceof Error?C.message:String(C)}`)}},onReaction:g=>{t?.debug(`[${i.accountId}] Received reaction: ${g.emoji} on ${g.msgId}`)},onError:g=>{t?.error(`[${i.accountId}] Socket error: ${g.message}`)},onDisconnect:async()=>{if(t?.info(`[${i.accountId}] Socket disconnected`),Ie.delete(i.accountId),o.aborted)return;d++;let g=Math.min(u*Math.pow(2,d-1),p);if(t?.warn?.(`[${i.accountId}] Reconnect attempt ${d}, delay ${g/1e3}s...`),await new Promise(y=>setTimeout(y,g)),o.aborted)return;let v=await ge(i.accountId);if(v.success&&v.session){if(i=On(i,v.session),t?.info(`[${i.accountId}] Session refreshed, reconnecting...`),h=$o(i,f),await h.connect()){t?.info(`[${i.accountId}] Reconnected with refreshed session`),d=0,m=0,r.socket=h,Ie.set(i.accountId,r);return}t?.warn?.(`[${i.accountId}] Reconnect with refreshed session failed`)}else{let y=v.reason||"rejected";if(t?.warn?.(`[${i.accountId}] Session refresh failed (${y}): ${v.error}`),y==="no_credentials"){t?.error?.(`[${i.accountId}] Missing credentials \u2014 giving up reconnect. Fix config and restart.`);return}if(y==="rejected"&&(m++,m>=c)){t?.error?.(`[${i.accountId}] Server rejected ${m} consecutive refreshes \u2014 giving up. Check apiToken and restart.`);return}}if(o.aborted)return;h=$o(i,f),await h.connect()?(t?.info(`[${i.accountId}] Reconnected with existing session`),d=0,m=0,r.socket=h,Ie.set(i.accountId,r)):(t?.warn?.(`[${i.accountId}] Reconnect attempt ${d} failed, will retry on next disconnect`),o.aborted||f.onDisconnect())},log:t,autoReconnect:!1},h=$o(i,f),x=await h.connect();if(!x){t?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let g=await ge(i.accountId);g.success&&g.session&&(i=On(i,g.session),t?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),h=$o(i,f),x=await h.connect())}if(!x)throw new Error(l("api.socket_connect_failed",{accountId:i.accountId}));return t?.info(`[${i.accountId}] Lunkr gateway connected`),r={socket:h,connected:!0,startedAt:Date.now()},Ie.set(i.accountId,r),o.addEventListener("abort",()=>{t?.info(`[${i.accountId}] Stopping Lunkr gateway`),h.disconnect(),Ie.delete(i.accountId)}),new Promise(g=>{let v=()=>{o.removeEventListener("abort",w),g(r)},w=()=>{t?.info(`[${i.accountId}] Gateway abort signal received`),v()};o.addEventListener("abort",w),h.onDisconnect(()=>{t?.info(`[${e.accountId}] Socket disconnected`),Ie.delete(e.accountId),v()})})},stopAccount:async n=>{let{account:e,log:o}=n;o?.info(`[${e.accountId}] Stopping Lunkr gateway`);let t=Ie.get(e.accountId);t&&(t.socket.disconnect(),Ie.delete(e.accountId))},logoutAccount:async n=>{let{account:e,log:o}=n;o?.info(`[${e.accountId}] Logging out Lunkr account`);let t=Ie.get(e.accountId);return t&&(t.socket.disconnect(),Ie.delete(e.accountId)),{cleared:!0,loggedOut:!0}}};Xn();U();async function Uc(n,e=5e3){let o=Date.now();if(!n)return{ok:!1,error:l("errors.account_not_configured"),elapsedMs:Date.now()-o};if(!n.sid||!n.lunkrConfig){if(n.hasApiToken){let t=await ge(n.accountId);if(t.success&&t.session){let i={...n,sid:t.session.sid,lunkrConfig:t.session};return Uc(i,e)}}return{ok:!1,error:l("errors.session_not_configured"),elapsedMs:Date.now()-o}}try{let t=new F(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath,timeout:e/1e3}),i={"Cim.sid":n.sid};for(let a of n.cookie.split(";")){let r=a.trim();if(r.includes("=")){let[c,u]=r.split("=",2);i[c.trim()]=u.trim()}}t.setCookies(i);let s=await t.checkSessionValid(n.sid);return{ok:s,sessionValid:s,elapsedMs:Date.now()-o}}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t),elapsedMs:Date.now()-o}}}function zd(n){let e=[];for(let o of n){let t=o.accountId??Ce;o.configured===!1&&e.push({channel:"lunkr-openclaw",accountId:t,kind:"config",message:l("status.session_not_configured_fix"),fix:l("status.run_login")}),o.lastError&&e.push({channel:"lunkr-openclaw",accountId:t,kind:"runtime",message:l("status.channel_error",{error:o.lastError})});let i=o.probe;i&&!i.ok&&i.sessionValid===!1&&e.push({channel:"lunkr-openclaw",accountId:t,kind:"auth",message:l("errors.session_expired"),fix:l("status.run_login_refresh")})}return e}function Kd(n){return ds({configured:n.snapshot.configured,running:n.snapshot.running,lastStartAt:n.snapshot.lastStartAt,lastStopAt:n.snapshot.lastStopAt,lastError:n.snapshot.lastError,probe:n.snapshot.probe,lastProbeAt:n.snapshot.lastProbeAt,tokenSource:n.snapshot.configured?"session":null})}function Hd(n){let{account:e,runtime:o,probe:t}=n,i=!!((e.sid||e.hasApiToken)&&e.selfUid);return ps({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:o,probe:t})}var Tc={defaultRuntime:{accountId:Ce,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:zd,buildChannelSummary:({snapshot:n})=>Kd({snapshot:n}),probeAccount:async({account:n,timeoutMs:e})=>Uc(n??null,e??5e3),buildAccountSnapshot:({account:n,runtime:e,probe:o})=>Hd({account:n,runtime:e,probe:o}),logSelfId:({account:n,includeChannelPrefix:e})=>{console.log(`Self ID: ${e?"lunkr:":""}${n.selfUid}`)},resolveAccountState:({configured:n,enabled:e})=>n?e?"configured":"disabled":"not configured"};U();async function eo(n,e){let o=de(n,e);if(!o)throw new Error(l("errors.account_not_configured"));let t=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),i={"Cim.sid":o.sid};for(let s of o.cookie.split(";")){let a=s.trim();if(a.includes("=")){let[r,c]=a.split("=",2);i[r.trim()]=c.trim()}}return t.setCookies(i),{client:t,account:o}}function li(n){return{kind:"user",id:`lunkr:${n.uid}`,name:n.name??n.uid,email:n.email,avatarUrl:n.avatar}}function Oc(n){return{kind:n.type==="channel"?"channel":"group",id:`lunkr:discussion:${n.gid}`,name:n.name??n.gid,avatarUrl:n.avatar}}async function Ec(n,e,o,t){let i=await n.postJson({func:"cim.contacts:search",sid:e,query:{keyword:o,limit:t}});return i.code!=="S_OK"?[]:i.var?.users??[]}async function jc(n,e){let o=await n.postJson({func:"cim.discussion:list",sid:e});if(o.code!=="S_OK")return[];let t=o.var?.discussions;return t?t.map(i=>({gid:String(i.id??i.gid??""),name:i.name?String(i.name):void 0,memberCount:typeof i.memberCount=="number"?i.memberCount:void 0,avatar:i.avatar?String(i.avatar):void 0,type:i.type??"group"})):[]}async function Vd(n,e,o,t){let i=await n.postJson({func:"cim.discussion:getMembers",sid:e,query:{gid:o,limit:t}});if(i.code!=="S_OK")return[];let s=i.var?.members;return s?s.map(a=>({uid:String(a.uid??""),name:a.name?String(a.name):void 0,email:a.email?String(a.email):void 0,avatar:a.avatar?String(a.avatar):void 0,department:a.department?String(a.department):void 0})):[]}var Fc={self:async({cfg:n,accountId:e})=>{let o=de(n,e);return o?.selfUid?{kind:"user",id:`lunkr:${o.selfUid}`,name:o.name??o.selfUid}:null},listPeers:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await eo(n,e),a=o?.trim()??"",r=t&&t>0?t:20;return a?(await Ec(i,s.sid,a,r)).map(li):[]},listPeersLive:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await eo(n,e),a=o?.trim()??"",r=t&&t>0?t:20;return a?(await Ec(i,s.sid,a,r)).map(li):[]},listGroups:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await eo(n,e),a=await jc(i,s.sid),r=a;if(o){let c=o.toLowerCase();r=a.filter(u=>u.name?.toLowerCase().includes(c)||u.gid.toLowerCase().includes(c))}return t&&t>0&&(r=r.slice(0,t)),r.map(Oc)},listGroupsLive:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await eo(n,e),a=await jc(i,s.sid),r=a;if(o){let c=o.toLowerCase();r=a.filter(u=>u.name?.toLowerCase().includes(c)||u.gid.toLowerCase().includes(c))}return t&&t>0&&(r=r.slice(0,t)),r.map(Oc)},listGroupMembers:async({cfg:n,accountId:e,groupId:o,limit:t})=>{let{client:i,account:s}=await eo(n,e),a=o.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");return(await Vd(i,s.sid,a,t??100)).map(li)}};function $c(n){let{cfg:e,accountId:o,groupId:t}=n,i=de(e,o);if(!i||!t)return!1;let s=t.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[s])return!1;let a=i.config.discussions?.[s];if(a?.requireMention!==void 0)return a.requireMention;let r=s.match(/(#[A-Z])$/)?.[1];return r&&i.config.groupTypeRules?.[r]?.policy==="mentionOnly",!0}function Wd(n){let{cfg:e,accountId:o,groupId:t}=n,i=de(e,o);if(!i||!t)return;let s=t.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[s])return"Bot discussion - all messages will trigger the bot";let a=i.config.groups??[];if(a.includes(s)||a.includes("*"))return $c({cfg:e,accountId:o,groupId:t})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function Jd(n){let{cfg:e,accountId:o,groupId:t}=n;de(e,o)}var ui={resolveRequireMention:$c,resolveGroupIntroHint:Wd,resolveToolPolicy:Jd};U();var Yd={id:"lunkr-openclaw",label:"Lunkr",get selectionLabel(){return l("meta.selection_label")},get detailLabel(){return l("meta.detail_label")},docsPath:"/channels/lunkr",docsLabel:"lunkr",get blurb(){return l("meta.blurb")}},qo={id:"lunkr-openclaw",meta:{...Yd,quickstartAllowFrom:!0},capabilities:{chatTypes:["direct","group"],polls:!1,reactions:!0,edit:!0,unsend:!0,reply:!0,effects:!1,groupManagement:!1,threads:!1,media:!0,nativeCommands:!1,blockStreaming:!0},reload:{configPrefixes:["channels.lunkr-openclaw"]},configSchema:us(Wo),config:Ss,security:Rs,group:ui,groups:ui,messaging:{normalizeTarget:n=>{let e=n.trim();if(e)return e.replace(/^lunkr:(?:discussion:)?/i,"")},targetResolver:{looksLikeId:n=>{let e=n?.trim();return e?/^#[0-9]+#[UT]$/.test(e)||/^[a-zA-Z0-9_-]+$/.test(e)||/^lunkr:/i.test(e):!1},hint:"<uid|gid>"}},directory:Fc,outbound:pc,status:Tc,gateway:Pc,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:n=>n.replace(/^lunkr:/i,"")}};dn();Do();import*as hi from"readline";import*as Gc from"readline";dn();U();var gi=class extends Error{constructor(o,t,i){super(o);this.sid=t;this.authType=i;this.name="OtpRequiredError"}};var mi="https://lunkr.coremail.cn",fi="/lunkr/s/json",yx=300*1e3;function zc(n){let e={};for(let o of n.split(";")){let[t,i]=o.trim().split("=");t&&i&&(e[t]=i)}return e}async function Kc(n,e){try{let o=e?.verbose??!1,t=e?.debug??!1;(o||t)&&console.log(`Discovering server for: ${n.email}`);let[i,s]=await $n.discoverAvailableServer(n.email);(o||t)&&(console.log(`Found server: ${i.apiUrl}`),console.log(`Auth type: ${s.authType}`),console.log(`RSA sid: ${s.sid}`));let a=new F(i.baseUrl,{apiPath:i.apiPath}),r=st({device_uuid:e?.deviceUuid||n.deviceUuid,device_name:e?.deviceName||n.deviceName});return t&&console.log(`Device info: ${JSON.stringify(r,null,2)}`),{success:!0,session:await Xd(a,n.email,n.password,s,r,i,o,t)}}catch(o){return o instanceof gi?{success:!1,requiresOtp:!0,otpSid:o.sid,error:o.message}:{success:!1,error:o instanceof Error?o.message:String(o)}}}async function Xd(n,e,o,t,i,s,a,r=!1){let c={type:t.authType,e:t.rsaE,n:t.rsaN},u=c.type;r&&(console.log(`[Login] authType: ${u}`),console.log(`[Login] RSA e: ${c.e?c.e.substring(0,20)+"...":"(empty)"}`),console.log(`[Login] RSA n: ${c.n?c.n.substring(0,40)+"...":"(empty)"}`));let p;u&&u.toLowerCase()==="rsa"&&c?.e&&c?.n?((a||r)&&console.log("Encrypting password with RSA"),p=Yo(o,c.e,c.n),r&&console.log(`[Login] Encrypted password length: ${p.length}`)):(r&&console.log(`[Login] WARNING: Password NOT encrypted (authType=${u})`),p=o);let d=Math.floor(Date.now()/1e3).toString(),m=at(i.uuid,e,i.friendlyName),f=rt(m),h=ct(m,d,f,"");r&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${m.substring(0,20)}...`),console.log(`[Login] signature: ${h.substring(0,20)}...`));let x={uid:e,password:p,authType:u,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(r){let b={...x},S=String(b.password||"");b.password=S.length>10?S.substring(0,20)+`...(length: ${S.length})`:"***",console.log(`[Login] Payload: ${JSON.stringify(b,null,2)}`)}let g=await n.postJson({func:"user:login",sid:t.sid,payload:x,debug:r||a});r&&console.log(`[Login] Response: ${JSON.stringify(g,null,2)}`);let v=g.code,w=g.var||{};if(v==="FA_NEED_VERIFY_CODE"||v==="FA_USER_IN_GRAYLIST"){let b=s.uri||`${s.baseUrl}/coremail/`;throw new j(l("auth.captcha_required",{code:v,uri:b}))}if(v==="FA_NEED_DYNAMIC_PWD"){console.log(`
|
|
18
|
+
${l("auth.otp_required")}`);let b={tempSid:t.sid,trans:"login",device:{token:m,secret:f,uuid:i.uuid,friendlyName:i.friendlyName,model:i.model,os:i.os,deviceType:i.deviceType},type:"OTP"},S=await n.postJson({func:"user:triggerSecondAuth",sid:t.sid,payload:b});if(S.code!=="S_OK")throw new j(l("auth.otp_trigger_failed",{code:S.code}));console.log(` ${l("auth.otp_verify_prompt")}`),console.log(` ${l("auth.otp_trust_hint")}`),await Zd(` ${l("auth.otp_press_enter")}`);let T=await n.postJson({func:"user:querySecondAuthValidateStage",sid:t.sid,payload:{tempSid:t.sid,trans:"login"}});if(T.code!=="S_OK")throw new j(l("auth.otp_query_failed",{code:T.code}));let q=(T.var||{}).stage;if(q!=="VALIDATED")throw new j(l("auth.otp_not_completed",{stage:q}));console.log(` ${l("auth.otp_success")}`),(a||r)&&console.log(`
|
|
19
|
+
${l("auth.relogin")}`);let B={uid:e,password:"",authType:u,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1},N=await n.postJson({func:"user:login",sid:t.sid,payload:B,debug:r||a});r&&console.log(`[Login] Re-login Response: ${JSON.stringify(N,null,2)}`);let O=N.code,V=N.var||{};if(O!=="S_OK"&&O!=="FA_NEED_ACCESS_SECRET")throw new j(l("auth.relogin_failed",{code:O}));let ne=V.sid;if(!ne)throw new j(l("auth.relogin_no_sid"));let ue=n.cookies.Coremail||"";if(!ue)throw new j(l("auth.relogin_no_cookie"));return(a||r)&&console.log(l("auth.otp_verified_getting_session")),await Bc(ne,ue,e,i,a,r)}if(v!=="S_OK"&&v!=="FA_NEED_ACCESS_SECRET"){let b=String(w.error||w.msg||g.msg||v);throw b.includes("\u5BC6\u7801")||b.toLowerCase().includes("password")||["PASSWORD_ERROR","AUTH_FAILED"].includes(v)?new Fn(`Password error: ${b}`):new j(`Login failed: ${b}`)}let y=w.sid;if(!y)throw new j("Login response missing sid");r&&console.log(`[Login] Client cookies: ${JSON.stringify(n.cookies)}`);let k=n.cookies.Coremail||"";if(!k){let b=Object.keys(n.cookies);throw new j(`Login succeeded but no Coremail cookie received. Available cookies: ${b.join(", ")||"none"}`)}return(a||r)&&(console.log(`Coremail login succeeded, sid: ${y.substring(0,20)}...`),console.log(`Coremail cookie: ${k.substring(0,30)}...`),console.log("Now getting Lunkr session...")),await Bc(y,k,e,i,a,r)}async function Bc(n,e,o,t,i,s){(i||s)&&console.log(`
|
|
20
|
+
[getLunkrSession] Step 1: Calling cim.common:verify...`);let a=`${mi}${fi}?func=cim.common:verify`,r={"Content-Type":"text/x-json; charset=UTF-8",Cookie:`Coremail=${e}`},c=await ve(a,"{}",r,3e4);if(s&&console.log(`[getLunkrSession] verify status: ${c.status}`),c.status!==200)throw new j(`cim.common:verify request failed: ${c.status}`);let u=JSON.parse(c.data);if(u.code!=="S_OK")throw new j(`cim.common:verify failed: ${u.code}`);let p=u.var||{},d=p.login_key,m=p.login_index;if(!d)throw new j("cim.common:verify did not return login_key");s&&(console.log(`[getLunkrSession] login_index: ${m}`),console.log(`[getLunkrSession] login_key length: ${d.length}`)),(i||s)&&console.log("[getLunkrSession] Step 2: Generating X-CM-TOKEN...");let f=`${n}:${e}`,h=Buffer.from(f,"utf8").toString("base64"),x=Qo(h,d);s&&console.log(`[getLunkrSession] X-CM-TOKEN length: ${x.length}`),(i||s)&&console.log("[getLunkrSession] Step 3: Calling cim.user:login...");let g=`${mi}${fi}?func=cim.user:login`,v={"Content-Type":"text/x-json; charset=UTF-8","X-CM-TOKEN":x},w={uid:o,forceCookieCheck:!0,bindingRemoteCoremail:!0,setCookieKey:!0,version:"2.0.5.8",open:!0,device:{uuid:t.uuid,os:t.os,model:t.model,friendlyName:t.friendlyName}};m&&(w.login_index=m);let y=await ve(g,JSON.stringify(w),v,3e4);if(s&&console.log(`[getLunkrSession] login status: ${y.status}`),![200,202].includes(y.status))throw new j(`cim.user:login request failed: ${y.status}, response: ${y.data.substring(0,500)}`);let k=JSON.parse(y.data),C=k.code;if(C!=="S_OK"&&C!=="FA_NEED_ACCESS_SECRET")throw new j(`cim.user:login failed: ${C}`);let b=k.var||{},S=b.sid,T=b.self_uid||b.uid;if(!S)throw new j("cim.user:login did not return sid");let R=null,q=y.headers["set-cookie"];if(q)for(let O of q.split(",")){let V=O.trim().match(/^Cim=([^;]+)/);V&&(R=V[1],s&&console.log(`[getLunkrSession] Received cookie: Cim=${R.substring(0,20)}...`))}let B=R||e;return(i||s)&&(console.log(`[getLunkrSession] Lunkr SID: ${S.substring(0,20)}...`),console.log(`[getLunkrSession] selfUid: ${T}`)),{sid:S,selfUid:T||o,cookie:`Cim=${B}`,baseUrl:mi,apiPath:fi}}function Zd(n){return new Promise(e=>{let o=Gc.createInterface({input:process.stdin,output:process.stdout});o.question(n,()=>{o.close(),e()})})}K();K();hn();hn();Sn();async function em(n,e,o,t,i,s){let a=new F(t,{apiPath:gn});a.setCookies(i),s&&console.log("[getApiTokenAndSession] Calling cim.user:getApiToken...");let r=await a.postJson({func:"cim.user:getApiToken",sid:n,payload:{device_uuid:o,device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"},debug:s});if(r.code!=="S_OK"||!r.var?.api_token)throw new Error(`getApiToken failed: ${r.code} - ${r.msg||"No token returned"}`);let c=r.var.api_token;s&&console.log(`[getApiTokenAndSession] Got API token: ${c.substring(0,20)}...`);let u=await Re(e,c,o,{debug:s});if(!u.success)throw new Error(u.error||"apiTokenLogin failed");let p=u.sid,d=u.cookie;if(!d)throw new Error("apiTokenLogin did not return cookie");return s&&console.log(`[getApiTokenAndSession] New SID: ${p.substring(0,20)}...`),{apiToken:c,newSid:p,newCookie:d,selfUid:u.selfUid}}async function Hc(n){let{email:e,sid:o,cookie:t,emailForAccountId:i,baseUrl:s,apiPath:a,deviceUuid:r,cookies:c,temp:u=!1,debug:p=!1}=n;p&&(console.log(`[saveSessionWithToken] Starting for ${e}...`),console.log(`[saveSessionWithToken] temp mode: ${u}`));let d=await em(o,i,r,s,c,p),m=L(),f={accountId:i,email:e,enabled:!0,session:{sid:d.newSid,cookie:d.newCookie,baseUrl:s,apiPath:a,selfUid:d.selfUid}};u?p&&console.log("[saveSessionWithToken] Temporary login - NOT saving apiToken"):(f.apiToken=d.apiToken,p&&console.log("[saveSessionWithToken] Saving apiToken to config"));let h=m.accounts?.findIndex(x=>x.accountId===i)??-1;return h>=0&&m.accounts?m.accounts[h]=f:(m.accounts||(m.accounts=[]),m.accounts.push(f)),E(m),p&&console.log("[saveSessionWithToken] Config saved"),{accountId:i,apiToken:u?void 0:d.apiToken}}U();function Vc(n,e=!1){return new Promise((o,t)=>{if(e&&process.stdin.isTTY){process.stdout.write(n);let i="",s=process.stdin;s.setRawMode(!0),s.resume(),s.setEncoding("utf8");let a=r=>{let c=r;switch(c){case`
|
|
21
|
+
`:case"\r":case"":s.setRawMode(!1),s.pause(),s.removeListener("data",a),process.stdout.write(`
|
|
22
|
+
`),o(i);break;case"":process.stdout.write(`
|
|
23
|
+
`),process.exit(1);break;case"\x7F":case"\b":i.length>0&&(i=i.slice(0,-1),process.stdout.clearLine(0),process.stdout.cursorTo(0),process.stdout.write(n+"*".repeat(i.length)));break;default:c.charCodeAt(0)>=32&&(i+=c,process.stdout.write("*"));break}};s.on("data",a)}else if(e){process.stdout.write(n.replace("Password:","Password (visible): "));let i=hi.createInterface({input:process.stdin,output:process.stdout});i.question("",s=>{i.close(),o(s.trim())})}else{let i=hi.createInterface({input:process.stdin,output:process.stdout});i.question(n,s=>{i.close(),o(s.trim())})}})}async function no(n,e){let o=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Login (Password)"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(o?" Mode: Temporary (api_token will NOT be saved)":" Mode: Persistent (api_token will be saved)"),console.log("");let t=e.email;t||(t=process.env.LUNKR_EMAIL||process.env.LUNKR_USERNAME),t||(t=await Vc("Email: ")),t||(console.error(l("errors.email_required")),process.exit(1));let i=e.password;i||(i=process.env.LUNKR_PASSWORD),i||(i=await Vc(l("login.password_prompt"),!0)),i||(console.error(l("errors.password_required")),process.exit(1)),console.log(""),console.log(l("messages.authenticating"));let s=e.verbose??!1,a=e.debug??!1,r=L(),c={email:t,password:i,deviceUuid:r.device_uuid,deviceName:r.device_name};try{let u=await Kc(c,{deviceUuid:r.device_uuid,deviceName:r.device_name,verbose:s,debug:a});u.success||(console.error(l("login.login_failed",{error:u.error})),process.exit(1)),u.session||(console.error(l("login.login_success_no_session")),process.exit(1));let p=zc(u.session.cookie);console.log(""),console.log(l("messages.getting_token"));try{await Hc({email:t,sid:u.session.sid,cookie:u.session.cookie,emailForAccountId:t,baseUrl:u.session.baseUrl,apiPath:u.session.apiPath,deviceUuid:r.device_uuid,cookies:p,temp:o,debug:a})}catch(d){let m=d instanceof Error?d.message:String(d);console.warn(l("login.token_login_failed_warn",{error:m})),console.log(l("login.session_saved_without_token"));let f={accountId:t,email:t,enabled:!0,session:u.session},h=r.accounts?.findIndex(x=>x.accountId===t)??-1;h>=0&&r.accounts?r.accounts[h]=f:(r.accounts||(r.accounts=[]),r.accounts.push(f)),E(r)}console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("login.result_email",{email:t})),console.log(l("login.result_uid",{uid:u.session.selfUid})),console.log(l("login.result_server",{server:u.session.baseUrl})),console.log(o?` ${l("labels.mode")}: ${l("messages.mode_temporary")}`:` ${l("labels.mode")}: ${l("messages.mode_persistent")}`),console.log(""),console.log(` ${l("messages.config_saved_to",{path:pe()})}`),console.log("")}catch(u){let p=u instanceof Error?u.message:String(u);console.error(l("login.login_failed",{error:p})),process.exit(1)}}K();U();async function xi(n,e){if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("login.logout_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),e.all){let t=Un(),i=await import("fs");i.existsSync(t)?(i.rmSync(t,{recursive:!0,force:!0}),console.log(l("messages.session_data_removed")),console.log(` ${l("messages.deleted",{path:t})}`)):console.log(l("messages.session_data_not_found")),console.log("");return}let o=L();if(!o.accounts||o.accounts.length===0){console.log(l("messages.session_not_found_logged_out")),console.log("");return}try{if(e.email){let t=o.accounts.findIndex(i=>i.accountId===e.email||i.session?.selfUid===e.email||i.email===e.email);if(t>=0){let i=o.accounts.splice(t,1)[0];E(o),console.log(l("messages.logged_out_with",{account:i.accountId||e.email}))}else console.log(l("errors.account_not_found_with_id",{accountId:e.email}))}else o.accounts=[],E(o),console.log(l("messages.logged_out_all")),console.log(` ${l("messages.config_preserved",{path:pe()})}`)}catch(t){let i=t instanceof Error?t.message:String(t);console.error(l("login.logout_failed",{error:i})),process.exit(1)}console.log("")}Ze();se();Fe();U();var xe=12;async function vi(n,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Status"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let o=L();if(!o.accounts||o.accounts.length===0){console.log(l("status.not_logged_in")),console.log(""),console.log(l("status.login_hint")),console.log("");return}for(let t of o.accounts){let i=t.session,s=t.role||"standard";if(console.log(` ${I(l("labels.email")+":",xe)} ${t.email||t.accountId}`),console.log(` ${I(l("agent.list_role")+":",xe)} ${s}`),console.log(` ${I(l("labels.bot")+":",xe)} ${ie(o)}`),console.log(` ${I("UID:",xe)} ${i?.selfUid||"N/A"}`),console.log(` ${I(l("labels.mode")+":",xe)} ${t.enabled?l("messages.mode_persistent"):l("messages.mode_temporary")}`),console.log(` ${I(l("labels.server")+":",xe)} ${i?.baseUrl||"N/A"}`),t.agentId&&console.log(` ${I(l("agent.list_agent_id")+":",xe)} ${t.agentId}`),i?.senderName&&console.log(` ${I(l("labels.name")+":",xe)} ${i.senderName}`),i&&t.enabled)try{let a=te.fromConfig(t.accountId);if(a){let r=await a.checkSession();if(console.log(` ${I(l("agent.list_session")+":",xe)} ${r?"\u2713 "+l("agent.list_session_valid"):"\u2717 "+l("agent.list_session_expired")}`),e.verbose){let c=await a.fetchSenderName();c&&console.log(` ${I(l("labels.name")+":",xe)} ${c}`)}}}catch(a){console.log(` ${I(l("agent.list_session")+":",xe)} \u2717 ${l("api.send_failed",{code:a instanceof Error?a.message:"unknown"})}`)}console.log("")}console.log(` ${I(l("labels.config")+":",xe)} ${pe()}`),console.log("")}K();U();async function bi(n,e){let o=e.keyword;o||(console.error(l("errors.keyword_required")),process.exit(1));let t=e.limit||20,i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.searching_groups",{keyword:o})),console.log("");try{let a=await i.searchGroups(o,t);if(a.length===0){console.log(l("messages.no_groups_found")),console.log("");return}console.log(l("messages.found_groups",{count:a.length})),console.log("");for(let r=0;r<a.length;r++){let c=a[r],u=r+1;if(console.log(` ${u}. ${c.name||c.trueName||"Unnamed"}`),console.log(` ${l("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${l("labels.email")}: ${c.email}`),c.description){let p=c.description.length>60?c.description.substring(0,57)+"...":c.description;console.log(` Desc: ${p}`)}console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.search_failed",{error:r})),process.exit(1)}}K();U();async function yi(n,e){let o=e.keyword;o||(console.error(l("errors.keyword_required")),process.exit(1));let t=e.limit||20,i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.searching_contacts",{keyword:o})),console.log("");try{let a=await i.searchContacts(o,t);if(a.length===0){console.log(l("messages.no_contacts_found")),console.log("");return}console.log(l("messages.found_contacts",{count:a.length})),console.log("");for(let r=0;r<a.length;r++){let c=a[r],u=r+1;console.log(` ${u}. ${c.trueName||c.name||"Unnamed"}`),console.log(` ${l("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${l("labels.email")}: ${c.email}`),console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.search_failed",{error:r})),process.exit(1)}}K();U();function nm(n,e){return e?n.filter(o=>o.senderUid===e):n}async function ki(n,e){let o=e.to;o||(console.error(l("errors.recipient_required")),process.exit(1));let t=e.limit||20,i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.listing_messages_with",{name:o})),console.log("");try{let a=await i.resolveRecipient(o);console.log(`${l("labels.conversation")}: ${a.name} (${a.type})`),console.log("");let r=await i.listMessages(a,{limit:t,latestFirst:!0});if(e.sender&&(r=nm(r,e.sender),console.log(l("messages.filter_by_sender",{sender:e.sender,count:r.length})),console.log("")),r.length===0){console.log(l("messages.no_messages_found")),console.log("");return}if(e.json){console.log(JSON.stringify({success:!0,data:{chat:{uid:a.uid,name:a.name,type:a.type},messages:r.map(c=>({mid:c.mid,time:c.time,subject:c.subject,sender_uid:c.senderUid,sender_name:c.senderName,sender_email:c.senderEmail,attachments:c.attachments}))}},null,2));return}console.log(l("messages.recent_messages",{count:r.length})),console.log("");for(let c of r){let u=c.senderName||c.senderEmail||c.senderUid||l("labels.unknown");if(console.log(` \u250C\u2500 ${u} @ ${c.time||"N/A"}`),c.subject){let p=c.subject.length>200?c.subject.substring(0,197)+"...":c.subject;console.log(` \u2502 ${p.replace(/\n/g,`
|
|
24
|
+
\u2502 `)}`)}if(c.attachments&&c.attachments.length>0){console.log(` \u2502 ${l("labels.attachments")}:`);for(let p of c.attachments){let d=p.file_size?pn(p.file_size):"",m=p.file_id||"",f=p.uid||"";console.log(` \u2502 - ${p.title||l("labels.unnamed")} ${d}`),m&&console.log(` \u2502 file_id: ${m}`),f&&console.log(` \u2502 uid: ${f}`)}}console.log(` \u2514\u2500 MID: ${c.mid}`),console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.list_failed",{error:r})),process.exit(1)}}K();U();import*as Ci from"readline";function om(n){return new Promise(e=>{console.log(l("messages.multiple_matches")),console.log("");for(let t=0;t<n.length;t++)console.log(` ${t+1}. ${n[t].name} (${n[t].uid})`);console.log("");let o=Ci.createInterface({input:process.stdin,output:process.stdout});o.question(l("messages.enter_number",{max:n.length}),t=>{o.close();let i=parseInt(t.trim(),10);i>=1&&i<=n.length?e(i-1):(console.error(l("errors.invalid_selection")),process.exit(1))})})}async function _i(n,e){let o=e.to;o||(console.error(l("errors.recipient_required")),process.exit(1));let t=M();await t.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1));try{let s=await t.resolveRecipientInteractive(o,Le(o)?void 0:a=>a.length>1?-1:0);if(!Le(o)){let a=await t.searchContacts(o,10),r=await t.searchGroups(o,10),c=[...a.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"})),...r.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}))],u=c.filter(p=>p.name===o);if(u.length===1){let p=u[0],d=await t.resolveRecipient(p.uid);console.log(""),console.log(l("messages.sending_to",{name:d.name,type:d.type})),console.log(""),await wi(t,d.uid,e.message);return}if(c.length>1){let p=await om(c),d=c[p],m=await t.resolveRecipient(d.uid);console.log(""),console.log(l("messages.sending_to",{name:m.name,type:m.type})),console.log(""),await wi(t,m.uid,e.message);return}}console.log(""),console.log(l("messages.sending_to",{name:s.name,type:s.type})),console.log(""),await wi(t,s.uid,e.message)}catch(s){let a=s instanceof Error?s.message:String(s);console.error(l("api.send_failed",{code:a})),process.exit(1)}}async function wi(n,e,o){let t=o;if(!t&&!process.stdin.isTTY){let a=[];for await(let r of process.stdin)a.push(r);t=Buffer.concat(a).toString("utf-8").trim()}t||(t=await new Promise(a=>{let r=Ci.createInterface({input:process.stdin,output:process.stdout});r.question(l("labels.message")+"\uFF1A",c=>{r.close(),a(c.trim())})})),t||(console.error(l("errors.message_required")),process.exit(1));let i=await n.resolveRecipient(e),s=await n.sendMessage(i,t);console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.message_sent")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(` ${l("labels.to")}: ${i.name}`),console.log(` ${l("labels.type")}: ${i.type}`),console.log(` ${l("labels.mid")}: ${s.mid}`),console.log("")}K();U();import*as Wc from"readline";function tm(n){return new Promise(e=>{console.log(l("messages.multiple_matches")),console.log("");for(let t=0;t<n.length;t++)console.log(` ${t+1}. ${n[t].name} (${n[t].uid})`);console.log("");let o=Wc.createInterface({input:process.stdin,output:process.stdout});o.question(l("messages.enter_number",{max:n.length}),t=>{o.close();let i=parseInt(t.trim(),10);i>=1&&i<=n.length?e(i-1):(console.error(l("errors.invalid_selection")),process.exit(1))})})}async function Si(n,e){let o=e.to;o||(console.error(l("errors.recipient_required")),process.exit(1));let t=e.file;(!t||t.length===0)&&(console.error(l("errors.file_required")),process.exit(1));let i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1));try{let a=await i.resolveRecipientInteractive(o,Le(o)?void 0:u=>u.length>1?-1:0);if(!Le(o)){let u=await i.searchContacts(o,10),p=await i.searchGroups(o,10),d=[...u.map(f=>({uid:f.uid,name:f.trueName||f.name||f.email||f.uid,type:"user"})),...p.map(f=>({uid:f.uid,name:f.name||f.trueName||f.email||f.uid,type:"group"}))],m=d.filter(f=>f.name===o);if(m.length===1){let f=m[0];a=await i.resolveRecipient(f.uid)}else if(d.length>1){let f=await tm(d),h=d[f];a=await i.resolveRecipient(h.uid)}}console.log(""),console.log(l("messages.sending_files_to",{count:t.length,name:a.name,type:a.type})),console.log("");let r=await import("fs");for(let u=0;u<t.length;u++){let p=t[u],d="N/A";try{let m=r.statSync(p);d=pn(m.size)}catch{d=l("messages.file_not_found")}console.log(` ${u+1}. ${p} (${d})`)}console.log("");let c=await i.sendFile(a,t,{content:e.message});console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.files_sent")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(` ${l("labels.to")}: ${a.name}`),console.log(` ${l("labels.type")}: ${a.type}`),console.log(` ${l("labels.mid")}: ${c.mid}`),console.log(` ${l("labels.files")}: ${c.files.length}`),console.log("")}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.send_failed",{code:r})),process.exit(1)}}K();U();async function Ai(n,e){let o=e["file-id"];o||(console.error(l("errors.file_id_required")),process.exit(1));let t=e.uid;t||(console.error(l("errors.uid_required")),process.exit(1));let i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.downloading_file")),console.log("");try{let a=await i.downloadFile(o,t,e.output,e.name);console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.download_complete")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(` ${l("labels.name")}: ${a.fileName}`),console.log(` ${l("labels.size")}: ${pn(a.fileSize)}`),console.log(` ${l("labels.path")}: ${a.filePath}`),console.log("")}catch(a){let r=a instanceof Error?a.message:String(a);console.error(`${l("api.download_failed")}
|
|
25
|
+
|
|
26
|
+
${r}`),process.exit(1)}}K();U();async function Ri(n,e){let o=M();await o.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr WebSocket Listener"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("messages.connecting_websocket")),console.log(l("messages.press_ctrlc")),console.log("");let i=o.createSocketClient({onConnect:()=>{console.log(`[${le(Date.now())}] Connected to Lunkr`)},onDisconnect:()=>{console.log(`[${le(Date.now())}] Disconnected from Lunkr`)},onReady:()=>{console.log(`[${le(Date.now())}] Ready to receive messages`),console.log("")},onMessage:a=>{if(e.raw){console.log(`[${le(Date.now())}] RAW:`),console.log(JSON.stringify(a,null,2)),console.log("");return}if(!a||typeof a!="object"){console.log(`[${le(Date.now())}] Unknown message:`,a);return}let r=a,c=r.topic||"",u=r.payload||"",p;try{p=JSON.parse(u)}catch{console.log(`[${le(Date.now())}] Non-JSON payload on topic: ${c}`);return}if(!p.mid&&!p.subject)return;let d=p.mid||"",m=p.from||{},f=p.to||{},h=m.uid||"",x=m.true_name||m.email||h,g=f.true_name||f.email||"",v=p.subject||"";try{v=decodeURIComponent(v.replace(/\+/g," "))}catch{}let w=p.type||p.group_type||"p2p",y=p.uid||f.uid||"",k=p.time||"";console.log(`[${le(Date.now())}] Message from ${x}:`),console.log(` ID: ${d}`),console.log(` From: ${x} (${h})`),w!=="p2p"&&g?(console.log(` To: ${g} (${y})`),console.log(` Type: ${w}`)):console.log(` Type: ${w}`),k&&console.log(` Time: ${k}`),console.log(` Text: ${v.substring(0,200)}${v.length>200?"...":""}`),console.log("")},onError:a=>{console.error(`[${le(Date.now())}] Error: ${a.message}`)}});await i.connect()||(console.error(l("api.socket_connect_failed",{accountId:"N/A"})),process.exit(1)),process.on("SIGINT",()=>{console.log(""),console.log(l("messages.disconnecting")),i.disconnect(),process.exit(0)}),await new Promise(()=>{})}K();U();async function im(n,e,o,t){let i=`\u{1F916} ${l("create.welcome_title")}
|
|
27
|
+
|
|
28
|
+
\u{1F4CB} ${l("create.discussion_name")}: ${t.name}
|
|
29
|
+
\u{1F194} ${l("create.discussion_id")}: ${e}
|
|
30
|
+
${t.agentId?`\u{1F916} ${l("create.linked_agent")}: ${t.agentId}
|
|
31
|
+
`:""}\u{1F4A1} ${l("create.instructions")}:
|
|
32
|
+
\u2022 ${l("create.instruction_1")}
|
|
33
|
+
\u2022 ${l("create.instruction_2")}
|
|
34
|
+
\u2022 ${l("create.instruction_3")}
|
|
35
|
+
|
|
36
|
+
\u2705 ${l("create.ready_to_chat")}`,s=`[@!${o}] ${i}`,a=await n.callApi({func:"cim.msg:reply",payload:{uid:e,content:s,type:"text"}});if(a.code!=="S_OK")throw new Error(l("api.welcome_failed",{code:String(a.code)}))}async function No(n,e){let{name:o,agentId:t,force:i,welcome:s=!0}=e;if(!o||o.trim().length===0)throw new Error(l("errors.discussion_name_required"));let a=M();if(!await a.checkSession())throw new Error(l("errors.session_expired_login"));let c=`[Bot-${o.trim()}]`,u=ie(),p;if(i){console.log(l("create.creating_discussion",{name:c}));try{p=(await a.createGroup(c)).uid,console.log(l("create.discussion_created",{gid:p}))}catch(y){let k=y instanceof Error?y.message:String(y);throw k.includes("\u5DF2\u5B58\u5728")||k.includes("exist")?new Error(l("create.discussion_exists",{name:c})):y}}else{let y=c.replace(/^\[|\]$/g,""),C=(await a.searchGroups(y,20)).find(b=>b.name===c||b.trueName===c);if(C)p=C.uid,console.log(l("create.reusing_discussion",{name:c})),console.log(` GID: ${p}`);else{console.log(l("create.creating_discussion",{name:c}));try{p=(await a.createGroup(c)).uid,console.log(l("create.discussion_created",{gid:p}))}catch(b){let S=b instanceof Error?b.message:String(b);throw S.includes("\u5DF2\u5B58\u5728")||S.includes("exist")?new Error(l("create.discussion_exists",{name:c})):b}}}if(s)try{await im(a,p,u,{name:o.trim(),agentId:t}),console.log(" \u2705 "+l("create.welcome_sent"))}catch(y){console.warn(" \u26A0\uFE0F "+l("create.welcome_failed",{error:y instanceof Error?y.message:String(y)}))}let m=await n.runtime.config.loadConfig(),f=m.channels||{},h=f["lunkr-openclaw"]||{},x=a.getSelfUid(),g={name:o.trim(),agentId:t,creatorUid:x,createdAt:Date.now()},v=h.botDiscussions||{};v[p]=g;let w={...m,channels:{...f,"lunkr-openclaw":{...h,botDiscussions:v}}};await n.runtime.config.writeConfigFile(w),console.log(""),console.log(l("messages.bot_discussion_configured",{name:c})),console.log(` GID: ${p}`),t&&console.log(` ${l("create.linked_agent")}: ${t}`),console.log(""),console.log(l("create.can_chat_now")),console.log(l("create.change_agent_hint")),console.log(""),console.log(l("create.config_auto_reload"))}var Jc={name:"bot-create",description:"Create a new Bot discussion group",options:[{name:"name",alias:"n",description:"Name for the bot discussion",type:"string",required:!0},{name:"agent-id",alias:"a",description:"Agent ID to associate with this discussion",type:"string",required:!1},{name:"force",alias:"f",description:"Force create a new discussion even if one exists",type:"boolean",required:!1}]};U();async function Mo(n,e){let a=(((await n.runtime.config.loadConfig()).channels||{})["lunkr-openclaw"]||{}).botDiscussions||{};if(e.json){console.log(JSON.stringify(a,null,2));return}let r=Object.entries(a);if(r.length===0){console.log(l("messages.no_bot_discussions"));return}console.log(`${l("bot_list.title",{count:r.length})}
|
|
37
|
+
`);for(let[c,u]of r)console.log(` ${u.name}`),console.log(` GID: ${c}`),u.agentId&&console.log(` Agent: ${u.agentId}`),console.log("")}var Yc={name:"bot-list",description:"List all configured bot discussions",options:[{name:"json",alias:"j",description:"Output as JSON",type:"boolean",required:!1}]};K();U();import*as Xc from"readline";function Qc(n,e=!0){return new Promise(o=>{let t=Xc.createInterface({input:process.stdin,output:process.stdout});t.question(n,i=>{t.close();let s=i.trim().toLowerCase();o(e?s==="y"||s==="yes":s!=="n"&&s!=="no")})})}async function Bo(n,e){let{name:o,gid:t}=e;if(!o&&!t)throw new Error(l("bot_delete.name_or_gid_required"));let i=M();if(!await i.checkSession())throw new Error(l("errors.session_expired_login"));let r=await n.runtime.config.loadConfig(),c=r.channels||{},u=c["lunkr-openclaw"]||{},p=u.botDiscussions||{},d,m;if(t)d=t,m=p[t];else if(o){for(let[x,g]of Object.entries(p))if(g.name===o.trim()){d=x,m=g;break}}if(!d||!m){console.log(l("bot_delete.not_found"));return}if(console.log(""),console.log(l("bot_delete.found",{name:m.name,gid:d})),!e.yes&&!await Qc(l("bot_delete.confirm")+" ")){console.log(l("bot_delete.cancelled"));return}let f=!1;if(e.yes||(f=await Qc(l("bot_delete.dissolve_prompt")+" ")),f){console.log(l("bot_delete.deleting_from_server",{name:m.name}));try{await i.deleteGroup(d),console.log(" "+l("bot_delete.deleted_from_server"))}catch(x){console.warn(" \u26A0\uFE0F "+l("bot_delete.delete_from_server_failed",{error:x instanceof Error?x.message:String(x)}))}}delete p[d];let h={...r,channels:{...c,"lunkr-openclaw":{...u,botDiscussions:p}}};await n.runtime.config.writeConfigFile(h),console.log(l("bot_delete.removed_from_config",{name:m.name})),console.log(` GID: ${d}`),f||(console.log(""),console.log(l("bot_delete.reuse_hint"))),console.log(""),console.log(l("create.config_auto_reload"))}var Zc={name:"bot-delete",description:"Delete a Bot discussion from server and configuration",arguments:[{name:"name",description:"Name of the bot discussion to remove",required:!1}],options:[{name:"gid",alias:"g",description:"GID of the bot discussion to remove",type:"string",required:!1},{name:"yes",alias:"y",description:"Skip confirmation prompt",type:"boolean",required:!1}]};K();U();U();import{homedir as Li}from"os";import{join as Ii}from"path";import{existsSync as el,rmSync as nl}from"fs";async function Pi(n,e){let{purge:o=!1}=e,t="lunkr-openclaw",i="lunkr-openclaw",s="lunkr";console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("uninstall.uninstalling")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("uninstall.step1"));try{let r=await n.runtime.config.loadConfig(),c=!1,u=r.plugins||{},p=u.allow||[],d=p.filter(b=>b!==t);d.length<p.length?(u.allow=d,c=!0,console.log(` \u2713 ${l("uninstall.removed_plugin_allow",{id:t})}`)):console.log(` \u2139 ${l("uninstall.plugin_allow_not_found",{id:t})}`);let m=u.entries||{};m[t]?(delete m[t],u.entries=m,c=!0,console.log(` \u2713 ${l("uninstall.removed_plugin_entry",{id:t})}`)):console.log(` \u2139 ${l("uninstall.plugin_entry_not_found",{id:t})}`),r.plugins=u;let f=r.tools||{},h=f.alsoAllow||[],x=h.filter(b=>b!==i);x.length<h.length?(f.alsoAllow=x,c=!0,console.log(` \u2713 ${l("uninstall.removed_tool",{name:i})}`)):console.log(` \u2139 ${l("uninstall.tool_not_found",{name:i})}`),r.tools=f;let g=r.skills||{},v=g.entries||{};v[s]?(delete v[s],g.entries=v,c=!0,console.log(` \u2713 ${l("uninstall.removed_skill_entry",{name:s})}`)):console.log(` \u2139 ${l("uninstall.skill_entry_not_found",{name:s})}`);let w=g.load||{},y=w.extraDirs||[],k=y.filter(b=>!b.includes(`/${t}/skills`)&&!b.includes(`/${s}/skills`));k.length<y.length?(w.extraDirs=k,g.load=w,c=!0,console.log(` \u2713 ${l("uninstall.removed_skill_dir")}`)):console.log(` \u2139 ${l("uninstall.skill_dir_not_found")}`),r.skills=g;let C=r.channels||{};C[t]?(delete C[t],r.channels=C,c=!0,console.log(` \u2713 ${l("uninstall.removed_channel",{id:t})}`)):console.log(` \u2139 ${l("uninstall.channel_not_found",{id:t})}`),c&&await n.runtime.config.writeConfigFile(r)}catch(a){console.log(` \u26A0 ${l("uninstall.update_config_failed")}`,a instanceof Error?a.message:String(a))}if(o){console.log(""),console.log(l("uninstall.step2"));let a=Ii(Li(),".lunkr");if(el(a))try{nl(a,{recursive:!0,force:!0}),console.log(` \u2713 ${l("uninstall.removed_session",{path:a})}`)}catch(c){console.log(` \u26A0 ${l("uninstall.remove_session_failed")}`,c instanceof Error?c.message:String(c))}else console.log(` \u2139 ${l("uninstall.not_found_dir",{path:a})}`);let r=Ii(Li(),".lunkr-mcp");if(el(r))try{nl(r,{recursive:!0,force:!0}),console.log(` \u2713 ${l("uninstall.removed_legacy",{path:r})}`)}catch(c){console.log(` \u26A0 ${l("uninstall.remove_legacy_failed")}`,c instanceof Error?c.message:String(c))}}else console.log(""),console.log(l("uninstall.step2_skip")),console.log(` ${l("uninstall.session_location",{path:Ii(Li(),".lunkr")})}`);console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("uninstall.done")}`),console.log(""),console.log(` ${l("uninstall.purge_hint")}`),console.log(" openclaw plugins uninstall lunkr-openclaw"),console.log(""),console.log(` ${l("uninstall.reinstall")}`),console.log(" openclaw lunkr setup"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}U();async function Ui(n,e){let o=e.name||"lunkr-openclaw",i=await n.runtime.config.loadConfig(),s=i.tools||{},a=s.alsoAllow||[];if(a.includes(o)){console.log(l("tools.already_installed",{name:o}));return}let r={...i,tools:{...s,alsoAllow:[...a,o]}};await n.runtime.config.writeConfigFile(r),console.log(l("tools.install_success",{name:o})),console.log(l("tools.restart_session"))}U();async function Ti(n,e){let o=e.name||"lunkr-openclaw",i=await n.runtime.config.loadConfig(),s=i.tools||{},a=s.alsoAllow||[];if(!a.includes(o)){console.log(l("tools.not_installed",{name:o}));return}let r={...i,tools:{...s,alsoAllow:a.filter(c=>c!==o)}};await n.runtime.config.writeConfigFile(r),console.log(l("tools.uninstall_success",{name:o})),console.log(l("tools.restart_session"))}U();import ol from"node:path";async function Oi(n,e){let o=e.name||"lunkr",t="lunkr-openclaw",s=await n.runtime.config.loadConfig(),a=s.plugins||{},r=a.entries||{},c=r[t]||{},u=s.skills||{},p=u.entries||{},d=p[o]||{},m=u.load||{},f=m.extraDirs||[],h=ol.join(ol.dirname(n.source),"skills"),x=c.enabled===!0&&d.enabled===!0,g=f.includes(h);if(x&&g){console.log(l("skills.already_installed",{name:o}));return}let v=g?f:[...f.filter(y=>!y.includes(`/${o}/skills`)),h],w={...s,plugins:{...a,entries:{...r,[t]:{...c,enabled:!0}}},skills:{...u,load:{...m,extraDirs:v},entries:{...p,[o]:{...d,enabled:!0}}}};await n.runtime.config.writeConfigFile(w),console.log(l("skills.install_success",{name:o})),console.log(l("skills.directory",{path:h})),console.log(l("skills.restart_session"))}U();import tl from"node:path";async function Ei(n,e){let o=e.name||"lunkr",i=await n.runtime.config.loadConfig(),s=i.skills||{},a=s.entries||{},r=a[o]||{};if(!r.enabled){console.log(l("skills.not_installed",{name:o}));return}let c=s.load||{},u=c.extraDirs||[],p=tl.join(tl.dirname(n.source),"skills"),d=u.filter(f=>f!==p),m={...i,skills:{...s,load:{...c,extraDirs:d.length>0?d:void 0},entries:{...a,[o]:{...r,enabled:!1}}}};d.length===0&&delete m.skills.load,await n.runtime.config.writeConfigFile(m),console.log(l("skills.uninstall_success",{name:o})),console.log(l("skills.restart_session"))}se();Ze();Do();U();import il from"node:path";import*as al from"readline";function sm(n){return new Promise(e=>{let o=al.createInterface({input:process.stdin,output:process.stdout});o.question(n,t=>{o.close();let i=t.trim().toLowerCase();e(i==="y"||i==="yes")})})}function am(n,e=" "){for(let o of n.split(`
|
|
38
|
+
`))console.log(o?e+o:"")}async function ji(n,e){let o="lunkr-openclaw",t="lunkr-openclaw",i="lunkr";if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("setup.title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),!e.yes){if(console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),am(l("setup.disclaimer")),console.log(""),!await sm(l("setup.confirm_continue"))){console.log(` ${l("setup.cancelled")}`),console.log("");return}console.log("")}let a=await n.runtime.config.loadConfig(),r=!1,c=a.plugins||{},u=c.allow||[];if(u.includes(o))console.log(` \u2713 ${l("setup.plugin_already_registered",{id:o})}`);else{let O=[...u,o];a.plugins={...c,allow:O},r=!0,console.log(` \u2713 ${l("setup.plugin_registered",{id:o})}`)}let p=a.channels||{},d=p[o];d&&Object.keys(d).some(O=>O!=="enabled")?console.log(` \u2713 ${l("setup.channel_already_registered",{id:o})}`):(a.channels={...p,[o]:{...d,enabled:!0,dmPolicy:"allow"}},r=!0,console.log(` \u2713 ${l("setup.channel_registered",{id:o})}`));let f=a.tools||{},h=f.alsoAllow||[];h.includes(t)?console.log(` \u2713 ${l("setup.tool_already_registered",{name:t})}`):(a.tools={...f,alsoAllow:[...h,t]},r=!0,console.log(` \u2713 ${l("setup.tool_registered",{name:t})}`));let g=(a.plugins||{}).entries||{},v=g[o]||{},w=a.skills||{},y=w.entries||{},k=y[i]||{},C=w.load||{},b=C.extraDirs||[],S=il.join(il.dirname(n.source),"skills"),T=v.enabled===!0,R=k.enabled===!0,q=b.includes(S);if(T&&R&&q)console.log(` \u2713 ${l("setup.skill_already_registered",{name:i})}`);else{let O=q?b:[...b.filter(V=>!V.includes(`/${i}/skills`)),S];a.plugins={...a.plugins,entries:{...g,[o]:{...v,enabled:!0}}},a.skills={...w,load:{...C,extraDirs:O},entries:{...y,[i]:{...k,enabled:!0}}},r=!0,console.log(` \u2713 ${l("setup.skill_registered",{name:i})}`)}if(r&&(await n.runtime.config.writeConfigFile(a),console.log(""),console.log(` ${l("setup.config_updated")}`)),console.log(""),e.skipLogin){console.log(` \u23ED ${l("setup.skip_login")}`),console.log("");return}let N=L().accounts?.[0];if(N?.session?.sid)try{let O=te.fromConfig(N.accountId);if(O&&await O.checkSession()){let ne=N.session.senderName||N.email||N.accountId;console.log(` \u2713 ${l("setup.already_logged_in",{name:ne})}`),sl();return}}catch{}console.log(` ${l("setup.start_login")}`),await Ln(n,{}),sl()}function sl(){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("setup.done_title")}`),console.log(""),console.log(` ${l("setup.done_gateway_cmd")}`),console.log(""),console.log(` ${l("setup.done_rename_hint")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}K();U();async function Fi(n,e){let o=e.trim()||"Bot",t=ie(),i=ot(o);E(i),console.log(""),console.log(l("rename.bot_name_changed",{oldName:t,name:o})),console.log(""),console.log(l("rename.restart_hint")),console.log(" openclaw gateway restart"),console.log("")}K();U();async function qe(n,e,o){if(n)try{let i=await n.runtime.config.loadConfig(),a=(i.bindings||[]).filter(r=>r.match?.channel!=="lunkr-openclaw"?!0:(r.match?.accountId||"default")!==e);o&&a.push({agentId:o,comment:`lunkr ${e}`,match:{channel:"lunkr-openclaw",accountId:e}}),i.bindings=a,await n.runtime.config.writeConfigFile(i),console.log(o?` \u2713 OpenClaw binding: lunkr-openclaw:${e} \u2192 agent:${o}`:` \u2713 OpenClaw binding removed for lunkr-openclaw:${e}`)}catch(t){console.warn(` \u26A0 Failed to update OpenClaw bindings: ${t instanceof Error?t.message:String(t)}`)}}async function $i(n,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("agent.add_title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let o=L();if(e.bypwd||e.email){if(!e.email){let c=(await import("readline")).createInterface({input:process.stdin,output:process.stdout}),u=await new Promise(p=>{c.question("Email: ",d=>{c.close(),p(d.trim())})});if(!u){console.error(l("errors.email_required")),process.exitCode=1;return}e.email=u}if(Z(e.email,o)){console.error(l("agent.add_already_exists",{email:e.email})),process.exitCode=1;return}await no(n,{email:e.email,password:e.password,verbose:e.verbose,debug:e.debug});let s=L(),a=s.accounts?.find(r=>r.email===e.email);a&&(a.role="agent",a.agentId=e.agentId,Be(a,s),e.agentId&&await qe(n,`${_e}${a.email}`,e.agentId),console.log(l("agent.add_success",{email:e.email})))}else{let{loginCommand:t}=await Promise.resolve().then(()=>(Do(),Mc)),i=new Set(o.accounts?.map(r=>r.email)||[]);await t(n,{verbose:e.verbose,force:!0});let s=L(),a=s.accounts?.find(r=>!i.has(r.email));if(a){if(i.has(a.email)){console.error(l("agent.add_already_exists",{email:a.email})),process.exitCode=1;return}a.role="agent",a.agentId=e.agentId,Be(a,s),e.agentId&&await qe(n,`${_e}${a.email}`,e.agentId),console.log(l("agent.add_success",{email:a.email}))}}console.log("")}K();Ze();Fe();U();async function qi(n,e){let o=L(),t=Tn(o),i=W(o),s=[];if(i&&i.role==="standard+agent"){let r=l("agent.list_session_none");if(i.session?.sid)try{let c=te.fromConfig(i.accountId);c&&(r=await c.checkSession()?l("agent.list_session_valid"):l("agent.list_session_expired"))}catch{r=l("agent.list_session_expired")}s.push({email:i.email,role:i.role,agentId:i.agentId||"-",sessionStatus:r})}for(let r of t){let c=l("agent.list_session_none");if(r.session?.sid)try{let u=te.fromConfig(r.accountId);u&&(c=await u.checkSession()?l("agent.list_session_valid"):l("agent.list_session_expired"))}catch{c=l("agent.list_session_expired")}s.push({email:r.email,role:r.role||"agent",agentId:r.agentId||"-",sessionStatus:c})}if(e.json){console.log(JSON.stringify(s,null,2));return}if(console.log(""),s.length===0){console.log(l("agent.list_empty")),console.log("");return}console.log(l("agent.list_title",{count:String(s.length)})),console.log("");let a=12;for(let r of s)console.log(` ${I(l("labels.email")+":",a)} ${r.email}`),console.log(` ${I(l("agent.list_role")+":",a)} ${r.role}`),console.log(` ${I(l("agent.list_agent_id")+":",a)} ${r.agentId}`),console.log(` ${I(l("agent.list_session")+":",a)} ${r.sessionStatus}`),console.log("")}K();U();async function Di(n,e){let{email:o}=e,t=Z(o);if(!t){console.error(l("agent.remove_not_found",{email:o})),process.exitCode=1;return}if(t.role!=="agent"){console.error(l("agent.remove_not_agent",{email:o,role:t.role||"standard"})),process.exitCode=1;return}nt(o)?(await qe(n,`${_e}${o}`,void 0),console.log(l("agent.remove_success",{email:o}))):(console.error(l("agent.remove_not_found",{email:o})),process.exitCode=1)}K();U();async function Ni(n,e){let o=L();if(e.self){let s=W(o);if(!s){console.error(l("agent.bind_not_found",{email:"standard"})),process.exitCode=1;return}if(e.agentId===""||e.agentId===void 0){s.role==="standard+agent"?(s.role="standard",s.agentId=void 0,Be(s,o),await qe(n,"default",void 0),console.log(l("agent.bind_self_downgrade")),console.log(l("agent.bind_unbind_success",{email:s.email}))):console.log(l("agent.bind_self_downgrade"));return}s.role="standard+agent",s.agentId=e.agentId,Be(s,o),await qe(n,"default",e.agentId),console.log(l("agent.bind_self_upgrade")),console.log(l("agent.bind_success",{email:s.email,agentId:e.agentId}));return}if(!e.email){console.error(l("agent.bind_email_required")),process.exitCode=1;return}if(e.agentId===void 0){console.error(l("agent.bind_agent_id_required")),process.exitCode=1;return}let t=Z(e.email,o);if(!t){console.error(l("agent.bind_not_found",{email:e.email})),process.exitCode=1;return}t.agentId=e.agentId||void 0,Be(t,o);let i=t.role==="agent"?`${_e}${t.email}`:"default";await qe(n,i,e.agentId||void 0),console.log(l("agent.bind_success",{email:e.email,agentId:e.agentId||"-"}))}se();Fe();U();var De=20;async function Mi(n,e){let o=L(),t=e.account?Z(e.account,o):W(o);if(!t)throw new Error(l("errors.account_not_found"));let s=o.accounts?.find(m=>m.accountId===t.accountId||m.email===t.email)?.config||{};if(e.json){console.log(JSON.stringify({account:t.email||t.accountId,dmPolicy:s.dmPolicy??"open",allowFrom:s.allowFrom??[],groupPolicy:s.groupPolicy??"open",groups:s.groups??[],groupTypeRules:s.groupTypeRules??{},discussions:s.discussions??{}},null,2));return}console.log(""),console.log(l("policy.title")),console.log(""),console.log(` ${I(l("policy.account")+":",De)} ${t.email||t.accountId}`),console.log(""),console.log(` ${I(l("policy.dm_policy")+":",De)} ${s.dmPolicy??"open"}`);let a=s.allowFrom??[];if(a.length>0){console.log(` ${I(l("policy.allow_from")+":",De)}`);for(let m of a)console.log(` - ${m}`)}else console.log(` ${I(l("policy.allow_from")+":",De)} ${l("policy.none")}`);console.log(""),console.log(` ${I(l("policy.group_policy")+":",De)} ${s.groupPolicy??"open"}`);let r=s.groups??[];if(r.length>0){console.log(` ${I(l("policy.groups")+":",De)}`);for(let m of r)console.log(` - ${m}`)}else console.log(` ${I(l("policy.groups")+":",De)} ${l("policy.none")}`);console.log("");let c=s.groupTypeRules??{},u=Object.entries(c);if(u.length>0){console.log(` ${l("policy.group_type_rules")}:`);for(let[m,f]of u)console.log(` ${m}: ${f.policy}`)}else console.log(` ${I(l("policy.group_type_rules")+":",De)} ${l("policy.none")}`);console.log("");let p=s.discussions??{},d=Object.entries(p);if(d.length>0){console.log(` ${l("policy.discussions")}:`);for(let[m,f]of d){let h=f,x=[];h.enabled!==void 0&&x.push(`enabled=${h.enabled}`),h.policy&&x.push(`policy=${h.policy}`),h.requireMention!==void 0&&x.push(`requireMention=${h.requireMention}`),h.allowFrom?.length&&x.push(`allowFrom=[${h.allowFrom.join(", ")}]`),console.log(` ${m}: ${x.join(", ")||l("policy.no_overrides")}`)}}else console.log(` ${I(l("policy.discussions")+":",De)} ${l("policy.none")}`);console.log("")}se();Ze();U();var Bi=/^#\d+#[A-Z]+$/;function In(n){let e=n.indexOf("(");return e>=0?n.substring(0,e):n}async function rl(n,e){let o=n.trim();if(Bi.test(o))return o;let t=te.fromConfig();if(!t)throw new Error(l("errors.session_expired_login"));return`${(await t.resolveRecipient(o)).uid}(${o})`}function Gi(n){let e=L(),o=n.account?Z(n.account,e):W(e);if(!o)throw new Error(l("errors.account_not_found"));let t=e.accounts?.findIndex(s=>s.accountId===o.accountId||s.email===o.email)??-1;if(t<0||!e.accounts)throw new Error(l("errors.account_not_found"));let i=e.accounts[t];return i.config||(i.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]}),{config:e,accountIdx:t,channelConfig:i.config}}async function zi(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.set_requires_option"));let{config:o,channelConfig:t}=Gi(e);if(e.dm){if(!["open","allowlist","disabled"].includes(e.dm))throw new Error(l("policy.invalid_dm_policy",{value:e.dm}));t.dmPolicy=e.dm,console.log(l("policy.dm_policy_set",{value:e.dm}))}if(e.group){if(!["open","allowlist","disabled"].includes(e.group))throw new Error(l("policy.invalid_group_policy",{value:e.group}));t.groupPolicy=e.group,console.log(l("policy.group_policy_set",{value:e.group}))}E(o),console.log(l("policy.config_saved"))}async function Ki(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.allow_requires_option"));let{config:o,channelConfig:t}=Gi(e);if(e.dm){let i=await rl(e.dm,"user");t.allowFrom||(t.allowFrom=[]);let s=In(i);if(t.allowFrom.some(r=>In(r)===s)){console.log(l("policy.already_in_allowlist",{uid:i}));return}t.allowFrom.push(i),console.log(l("policy.added_to_dm_allowlist",{uid:i}))}if(e.group){let i=await rl(e.group,"group");t.groups||(t.groups=[]);let s=In(i);if(t.groups.some(r=>In(r)===s)){console.log(l("policy.already_in_allowlist",{uid:i}));return}t.groups.push(i),console.log(l("policy.added_to_group_allowlist",{uid:i}))}E(o),console.log(l("policy.config_saved"))}async function Hi(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.deny_requires_option"));let{config:o,channelConfig:t}=Gi(e);if(e.dm){let i=e.dm.trim(),s=Bi.test(i)?i:null;if(!t.allowFrom||t.allowFrom.length===0){console.log(l("policy.not_in_allowlist",{uid:i}));return}let a=t.allowFrom.length;if(t.allowFrom=t.allowFrom.filter(r=>{let c=In(r);return!(s&&c===s||r===i||r.includes(`(${i})`))}),t.allowFrom.length===a){console.log(l("policy.not_in_allowlist",{uid:i}));return}console.log(l("policy.removed_from_dm_allowlist",{uid:i}))}if(e.group){let i=e.group.trim(),s=Bi.test(i)?i:null;if(!t.groups||t.groups.length===0){console.log(l("policy.not_in_allowlist",{uid:i}));return}let a=t.groups.length;if(t.groups=t.groups.filter(r=>{let c=In(r);return!(s&&c===s||r===i||r.includes(`(${i})`))}),t.groups.length===a){console.log(l("policy.not_in_allowlist",{uid:i}));return}console.log(l("policy.removed_from_group_allowlist",{uid:i}))}E(o),console.log(l("policy.config_saved"))}se();Ze();Fe();U();var cl=/^#\d+#[A-Z]+$/;function Vi(n){let e=n.indexOf("(");return e>=0?n.substring(0,e):n}async function rm(n){let e=n.trim();if(cl.test(e))return e;let o=te.fromConfig();if(!o)throw new Error(l("errors.session_expired_login"));return`${(await o.resolveRecipient(e)).uid}(${e})`}var Wi=18;async function Ji(n,e,o){if(!e)throw new Error(l("policy.gid_required"));let t=L(),i=o.account?Z(o.account,t):W(t);if(!i)throw new Error(l("errors.account_not_found"));let s=t.accounts?.findIndex(p=>p.accountId===i.accountId||p.email===i.email)??-1;if(s<0||!t.accounts)throw new Error(l("errors.account_not_found"));let a=t.accounts[s];a.config||(a.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]});let r=a.config;if(!(o.setPolicy||o.enable||o.disable||o.allow||o.deny||o.requireMention!==void 0||o.noRequireMention||o.remove)){let p=r.discussions?.[e];if(!p){console.log(l("policy.no_discussion_rules",{gid:e}));return}console.log(""),console.log(l("policy.discussion_rules_title",{gid:e})),console.log(""),p.enabled!==void 0&&console.log(` ${I(l("policy.enabled")+":",Wi)} ${p.enabled}`),p.policy&&console.log(` ${I(l("policy.policy")+":",Wi)} ${p.policy}`),p.requireMention!==void 0&&console.log(` ${I(l("policy.require_mention")+":",Wi)} ${p.requireMention}`);let d=p.allowFrom??[];if(d.length>0){console.log(` ${l("policy.allow_from")}:`);for(let m of d)console.log(` - ${m}`)}console.log("");return}if(o.remove){r.discussions?.[e]?(delete r.discussions[e],r.discussions&&Object.keys(r.discussions).length===0&&delete r.discussions,console.log(l("policy.discussion_removed",{gid:e}))):console.log(l("policy.no_discussion_rules",{gid:e})),E(t),console.log(l("policy.config_saved"));return}r.discussions||(r.discussions={}),r.discussions[e]||(r.discussions[e]={});let u=r.discussions[e];if(o.setPolicy){if(!["open","allowlist","disabled"].includes(o.setPolicy))throw new Error(l("policy.invalid_group_policy",{value:o.setPolicy}));u.policy=o.setPolicy,console.log(l("policy.discussion_policy_set",{gid:e,value:o.setPolicy}))}if(o.enable&&(u.enabled=!0,console.log(l("policy.discussion_enabled",{gid:e}))),o.disable&&(u.enabled=!1,console.log(l("policy.discussion_disabled",{gid:e}))),o.requireMention&&(u.requireMention=!0,console.log(l("policy.discussion_require_mention",{gid:e,value:"true"}))),o.noRequireMention&&(u.requireMention=!1,console.log(l("policy.discussion_require_mention",{gid:e,value:"false"}))),o.allow){let p=await rm(o.allow);u.allowFrom||(u.allowFrom=[]);let d=Vi(p);u.allowFrom.some(f=>Vi(f)===d)?console.log(l("policy.already_in_allowlist",{uid:p})):(u.allowFrom.push(p),console.log(l("policy.added_to_discussion_allowlist",{gid:e,uid:p})))}if(o.deny){let p=o.deny.trim(),d=cl.test(p)?p:null;if(!u.allowFrom||u.allowFrom.length===0)console.log(l("policy.not_in_allowlist",{uid:p}));else{let m=u.allowFrom.length;u.allowFrom=u.allowFrom.filter(f=>{let h=Vi(f);return!(d&&h===d||f===p||f.includes(`(${p})`))}),u.allowFrom.length===m?console.log(l("policy.not_in_allowlist",{uid:p})):console.log(l("policy.removed_from_discussion_allowlist",{gid:e,uid:p}))}}E(t),console.log(l("policy.config_saved"))}se();U();async function Yi(n,e,o){if(!e)throw new Error(l("policy.suffix_required"));let t=L(),i=o.account?Z(o.account,t):W(t);if(!i)throw new Error(l("errors.account_not_found"));let s=t.accounts?.findIndex(u=>u.accountId===i.accountId||u.email===i.email)??-1;if(s<0||!t.accounts)throw new Error(l("errors.account_not_found"));let a=t.accounts[s];a.config||(a.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]});let r=a.config;if(o.remove){r.groupTypeRules?.[e]?(delete r.groupTypeRules[e],r.groupTypeRules&&Object.keys(r.groupTypeRules).length===0&&delete r.groupTypeRules,console.log(l("policy.type_rule_removed",{suffix:e}))):console.log(l("policy.no_type_rule",{suffix:e})),E(t),console.log(l("policy.config_saved"));return}if(o.set){if(!["disabled","mentionOnly","open"].includes(o.set))throw new Error(l("policy.invalid_type_policy",{value:o.set}));r.groupTypeRules||(r.groupTypeRules={}),r.groupTypeRules[e]={policy:o.set},console.log(l("policy.type_rule_set",{suffix:e,value:o.set})),E(t),console.log(l("policy.config_saved"));return}let c=r.groupTypeRules?.[e];console.log(c?l("policy.type_rule_current",{suffix:e,value:c.policy}):l("policy.no_type_rule",{suffix:e}))}se();U();import*as ll from"readline";function cm(n){return new Promise(e=>{let o=ll.createInterface({input:process.stdin,output:process.stdout});o.question(n,t=>{o.close();let i=t.trim().toLowerCase();e(i==="y"||i==="yes")})})}async function Qi(n,e){let o=L(),t=e.account?Z(e.account,o):W(o);if(!t)throw new Error(l("errors.account_not_found"));let i=o.accounts?.findIndex(a=>a.accountId===t.accountId||a.email===t.email)??-1;if(i<0||!o.accounts)throw new Error(l("errors.account_not_found"));if(!e.yes){let a=t.email||t.accountId;if(!await cm(l("policy.reset_confirm",{account:a})+" ")){console.log(l("policy.reset_cancelled"));return}}let s=o.accounts[i];delete s.config,E(o),console.log(l("policy.reset_done",{account:t.email||t.accountId}))}import{appendFileSync as um}from"fs";import{Type as P}from"@sinclair/typebox";import*as ul from"path";Ze();se();U();dn();function Xi(){return L()}function re(n){return{success:!0,data:n}}function H(n){return{success:!1,error:n}}async function Pe(){try{let n=M();return await n.checkSession()?{api:n}:{error:H(l("errors.session_expired_login"))}}catch(n){return{error:H(n instanceof Error?n.message:String(n))}}}async function Zi(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.resolveRecipient(n.to),i=await o.sendMessage(t,n.content);return re({to:i.to,type:i.type,mid:i.mid})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function es(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.searchGroups(n.keyword,n.limit||10);return re({groups:t.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function ns(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.searchContacts(n.keyword,n.limit||10);return re({contacts:t.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function pl(n){let e=await Pe();return"error"in e?e.error:H("getGroupInfo not yet implemented")}async function dl(n){let e=await Pe();return"error"in e?e.error:H("getUserInfo not yet implemented")}async function ml(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=n.save_path;if(!t){let s=Fo();s&&(t=ul.join(s.filesDir,n.file_name||"download"))}let i=await o.downloadFile(n.file_id,n.uid,t,n.file_name);return console.log(`[lunkr_download_file] ${i.fileName} (${i.fileSize} bytes) \u2192 ${i.filePath}`),re({file_name:i.fileName,file_size:i.fileSize,saved_to:i.filePath})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function fl(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.convertAudio(n.input_path,n.output_format);return re({converted_file:t.filePath,format:t.format})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function gl(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.getMessage(n.message_id);return t?re({mid:t.mid,time:t.time,subject:t.subject,content:t.content,sender_uid:t.sender_uid,sender_name:t.sender_name,sender_email:t.sender_email,source_id:t.source_id,attachments:t.attachments}):H(`Message not found: ${n.message_id}`)}catch(t){return H(t instanceof Error?t.message:String(t))}}async function os(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.resolveRecipient(n.to),i=await o.listMessages(t,{limit:n.limit||20});return re({messages:i.map(s=>({mid:s.mid,time:s.time,subject:s.subject,sender_uid:s.senderUid,sender_name:s.senderName,sender_email:s.senderEmail,attachments:s.attachments}))})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function hl(n){let e=await Pe();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.resolveRecipient(n.to),i=await o.sendFile(t,n.file_paths,{content:n.message});return re({to:i.to,mid:i.mid,files:i.files})}catch(t){return H(t instanceof Error?t.message:String(t))}}dn();function ts(n){um("/tmp/lunkr-tools.log",`${new Date().toISOString()} ${n}
|
|
39
|
+
`)}function we(n){return{content:[{type:"text",text:JSON.stringify(n,null,2)}],details:n}}function pm(){let n=Fo();if(!n)return null;let t=Xi()?.accounts?.find(s=>s.accountId===n.accountId)?.role||"standard";if(t!=="agent"&&t!=="standard+agent")return null;let i=n.workspaceKey.indexOf(":");return i===-1?null:n.workspaceKey.slice(i+1)}var dm=P.Object({to:P.String({description:"Recipient: user ID, group ID, email, or group email (t..xxx@coremail.cn)"}),content:P.String({description:"Message content to send"}),type:P.Optional(P.Union([P.Literal("text"),P.Literal("markdown")],{description:"Message type (default: text)"}))}),mm=P.Object({keyword:P.String({description:"Search keyword for group name"}),limit:P.Optional(P.Number({description:"Max results (default: 10)"}))}),fm=P.Object({keyword:P.String({description:"Search keyword for contact name or email"}),limit:P.Optional(P.Number({description:"Max results (default: 10)"}))}),gm=P.Object({group_id:P.String({description:"Group ID (e.g., #26783249#T)"})}),hm=P.Object({user_id:P.String({description:"User ID (e.g., #835#U) or email"})}),xm=P.Object({to:P.String({description:"Recipient: user ID, group ID, email, or name (auto-resolved)"}),file_paths:P.Array(P.String(),{description:"Array of absolute file paths to send"}),message:P.Optional(P.String({description:"Optional text message to accompany the files"}))}),vm=P.Object({file_id:P.String({description:"File ID from message"}),uid:P.String({description:"Mailbox owner UID from attachment.uid field (e.g., #835#U for DM, group UID for group messages)"}),save_path:P.Optional(P.String({description:"Path to save file (default: temp directory)"})),file_name:P.String({description:"Filename (REQUIRED: get from message attachment.title to ensure correct Chinese encoding)"})}),bm=P.Object({input_path:P.String({description:"Path to the audio file (e.g., downloaded .ilbc file)"}),output_format:P.Optional(P.String({description:"Target format: wav (default), mp3, ogg, etc."}))}),ym=P.Object({message_id:P.String({description:"Message ID to retrieve"})}),km=P.Object({to:P.String({description:"Recipient: user ID, group ID, or email to list messages from"}),limit:P.Optional(P.Number({description:"Max messages to retrieve (default: 20)"}))}),wm=P.Object({command:P.String({description:"Raw command arguments"}),commandName:P.String({description:"Slash command name (e.g., /lunkr-send)"}),skillName:P.String({description:"Skill name"})});function Cm(n){let{commandName:e,command:o}=n,t=o.trim().split(/\s+/),i=t[0]?.toLowerCase();switch(i){case"send":case"s":{if(t.length<3)return H("Usage: /lunkr send <to> <message>");let s=t[1],a=t.slice(2).join(" ");return re({action:"send",to:s,content:a})}case"search-groups":case"sg":{if(t.length<2)return H("Usage: /lunkr search-groups <keyword> [limit]");let s=t[1],a=t[2]?parseInt(t[2],10):10;return re({action:"searchGroups",keyword:s,limit:a})}case"search-contacts":case"sc":{if(t.length<2)return H("Usage: /lunkr search-contacts <keyword> [limit]");let s=t[1],a=t[2]?parseInt(t[2],10):10;return re({action:"searchContacts",keyword:s,limit:a})}case"list-messages":case"lm":case"msgs":{if(t.length<2)return H("Usage: /lunkr list-messages <to> [limit]");let s=t[1],a=t[2]?parseInt(t[2],10):20;return re({action:"listMessages",to:s,limit:a})}case"help":case void 0:return re({help:!0,usage:["/lunkr send <to> <message> - Send message","/lunkr search-groups <keyword> [limit] - Search groups","/lunkr search-contacts <keyword> [limit] - Search contacts","/lunkr list-messages <to> [limit] - List messages from chat"]});default:return H(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function _m(n){if(!n.success||!n.data)return n;let e=n.data;switch(e.action){case"send":return Zi({to:e.to,content:e.content});case"searchGroups":return es({keyword:e.keyword,limit:e.limit});case"searchContacts":return ns({keyword:e.keyword,limit:e.limit});case"listMessages":return os({to:e.to,limit:e.limit});default:return H(`Unknown action: ${e.action}`)}}function xl(n){let e=Xi();if(!e?.accounts?.length){n.logger?.debug?.("lunkr: No accounts in config file, skipping tool registration");return}if(!e.accounts.some(t=>t.session)){n.logger?.debug?.("lunkr: No accounts with valid session found, skipping tool registration");return}n.logger?.debug?.(`lunkr: Found ${e.accounts.length} account(s), registering tools`),n.registerTool({name:"lunkr_send_message",label:"Send Lunkr Message",description:'Send a message to a Lunkr user or group. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T). Always use this tool for sending Lunkr messages, NOT the generic "message" tool.',parameters:dm,async execute(t,i){let s=await Zi(i);return we(s)}},{name:"lunkr_send_message"}),n.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:mm,async execute(t,i){let s=await es(i);return we(s)}},{name:"lunkr_search_groups"}),n.registerTool({name:"lunkr_search_contacts",label:"Search Lunkr Contacts",description:"Search for Lunkr contacts by name or email.",parameters:fm,async execute(t,i){let s=await ns(i);return we(s)}},{name:"lunkr_search_contacts"}),n.registerTool({name:"lunkr_get_group_info",label:"Get Lunkr Group Info",description:"Get detailed information about a Lunkr discussion group.",parameters:gm,async execute(t,i){let s=await pl(i);return we(s)}},{name:"lunkr_get_group_info"}),n.registerTool({name:"lunkr_get_user_info",label:"Get Lunkr User Info",description:"Get detailed information about a Lunkr user.",parameters:hm,async execute(t,i){let s=await dl(i);return we(s)}},{name:"lunkr_get_user_info"}),n.registerTool({name:"lunkr_send_file",label:"Send Lunkr File",description:"Send one or more files to a Lunkr user or group. Automatically resolves recipient names to UIDs. Files must be local absolute paths.",parameters:xm,async execute(t,i){let s=await hl(i);return we(s)}},{name:"lunkr_send_file"}),n.registerTool({name:"lunkr_download_file",label:"Download Lunkr File",description:"Download a file from a Lunkr message to local disk. For voice messages (.ilbc), the iLBC header is auto-prepended during download. After downloading voice files, use lunkr_convert_audio to convert to wav, then decide whether to use speech-to-text or handle the audio as needed.",parameters:vm,async execute(t,i){let s=await ml(i);return we(s)}},{name:"lunkr_download_file"}),n.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:ym,async execute(t,i){let s=await gl(i);return we(s)}},{name:"lunkr_get_message"}),n.registerTool({name:"lunkr_list_messages",label:"List Lunkr Messages",description:"List messages from a Lunkr chat (user or group). Use this to retrieve chat history. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T).",parameters:km,async execute(t,i){let s=i,a=pm(),r=a||s.to;ts(`[lunkr_list_messages] params=${JSON.stringify(s)} channelTo=${a} effectiveTo=${r}`);let c=await os({...s,to:r}),u=c?.data?.messages;if(ts(`[lunkr_list_messages] result: ${Array.isArray(u)?u.length:"N/A"} msgs, withAttachments=${Array.isArray(u)?u.filter(p=>p.attachments?.length>0).length:"N/A"}`),Array.isArray(u))for(let p of u)ts(`[lunkr_list_messages] mid=${p.mid} sender=${p.sender_email} atts=${JSON.stringify(p.attachments)}`);return we(c)}},{name:"lunkr_list_messages"}),n.registerTool({name:"lunkr_convert_audio",label:"Convert Audio File",description:"Convert audio files to common formats using ffmpeg (e.g., iLBC voice messages \u2192 wav). Use this when you receive a voice message (.ilbc) and need to process it. After conversion, you can use the resulting wav file for speech-to-text or other processing as needed.",parameters:bm,async execute(t,i){let s=await fl(i);return we(s)}},{name:"lunkr_convert_audio"}),n.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:wm,async execute(t,i){let s=Cm(i),a=await _m(s);return we(a)}},{name:"lunkr_command"}),n.logger?.debug?.("lunkr: Registered 11 Lunkr tools (10 API tools + 1 command dispatcher)")}var Sm={type:"object",properties:{}},Am={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:Sm,register(n){let e={channel:{lunkr:{resolveAccount:async o=>{let t=await n.runtime.config.loadConfig();return de(t,o)},ensureAuthenticated:async o=>{if(!o.sid||!o.cookie)throw new Error(l("errors.account_not_authenticated"));let t=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),i={"Cim.sid":o.sid};for(let a of o.cookie.split(";")){let r=a.trim();if(r.includes("=")){let[c,u]=r.split("=",2);i[c.trim()]=u.trim()}}if(t.setCookies(i),!await t.checkSessionValid(o.sid))throw new Error(l("errors.session_expired"))},sendMessage:async o=>{let t=await e.channel.lunkr.resolveAccount(o.accountId);if(!t)throw new Error(l("errors.account_not_found_with_id",{accountId:o.accountId}));await e.channel.lunkr.ensureAuthenticated(t);let i=new F(t.lunkrConfig.baseUrl,{apiPath:t.lunkrConfig.apiPath}),s={"Cim.sid":t.sid};for(let p of t.cookie.split(";")){let d=p.trim();if(d.includes("=")){let[m,f]=d.split("=",2);s[m.trim()]=f.trim()}}i.setCookies(s);let a=o.chatType==="p2p"?"cim.p2p:send":"cim.discussion:send",r=o.chatType==="p2p"?{to:o.chatId}:{gid:o.chatId},c={content:o.content,type:"text"};o.replyTo&&(c.replyTo=o.replyTo);let u=await i.postJson({func:a,sid:t.sid,query:r,payload:c});if(u.code!=="S_OK")throw new Error(l("api.send_failed",{code:u.code}))},probeAccount:async(o,t)=>{let i=await e.channel.lunkr.resolveAccount(o);if(!i)return{valid:!1,error:l("errors.account_not_found")};try{let s=new F(i.lunkrConfig.baseUrl,{apiPath:i.lunkrConfig.apiPath,timeout:t?t/1e3:5}),a={"Cim.sid":i.sid};for(let c of i.cookie.split(";")){let u=c.trim();if(u.includes("=")){let[p,d]=u.split("=",2);a[p.trim()]=d.trim()}}s.setCookies(a);let r=await s.checkSessionValid(i.sid);return{valid:r,session:r?i.lunkrConfig:void 0}}catch(s){return{valid:!1,error:s instanceof Error?s.message:String(s)}}}}},config:{readConfigFile:async()=>n.runtime.config.loadConfig(),writeConfigFile:async o=>n.runtime.config.writeConfigFile(o)},logging:{shouldLogVerbose:()=>process.env.LUNKR_VERBOSE==="1"}};vc(e),"registrationMode"in n?n.registerChannel({plugin:qo}):n.registerChannel(qo),xl(n),n.registerCli(({program:o})=>{let t=o.command("lunkr").description("Lunkr channel commands").option("-v, --verbose","Verbose output").option("--as <email>","Execute as a specific account (by email)").addHelpText("after",`
|
|
25
40
|
Account types:
|
|
26
41
|
Standard account Main account, triggers via /bot prefix & Bot Discussions
|
|
27
42
|
Agent account Independent account, triggers on @mention & DM only
|
|
28
43
|
Use "agent-bind --self" to add agent role to the standard account
|
|
29
44
|
|
|
30
|
-
See docs/CONCEPTS.md for details.`),i=async a=>{try{await a()}catch(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
See docs/CONCEPTS.md for details.`),i=async a=>{try{await a()}catch(r){t.opts().verbose||process.env.LUNKR_VERBOSE==="1"?console.error(r):console.error(r instanceof Error?r.message:String(r)),process.exitCode=1}};t.command("setup").description("One-click setup: register plugin, tools, skills, and login").option("--skip-login","Skip the login step").action(async a=>{await i(async()=>{await ji(n,{skipLogin:a.skipLogin})})}),t.command("rename <name>").description("Rename the bot").action(async a=>{await i(async()=>{await Fi(n,a)})}),t.command("login").description("Login to Lunkr using QR code (persistent session)").option("-d, --debug","Debug output (show network requests)").option("-f, --force","Force re-login even if session is valid").action(async a=>{await i(async()=>{await Ln(n,{verbose:t.opts().verbose,debug:a.debug,force:a.force})})}),t.command("login-bypwd").description("Login to Lunkr using email/password").option("-e, --email <email>","Email address").option("-p, --password <password>","Password (or use LUNKR_PASSWORD env var)").option("-t, --temp","Temporary login (do not save api_token)").option("-d, --debug","Debug output (show network requests)").action(async a=>{await i(async()=>{await no(n,{email:a.email,password:a.password,temp:a.temp,verbose:t.opts().verbose,debug:a.debug})})}),t.command("logout").description("Logout from Lunkr server").option("-e, --email <email>","Specific account to logout").option("-a, --all","Remove all stored session data").action(async a=>{await i(async()=>{await xi(n,{email:a.email,all:a.all})})}),t.command("bot-create [name]").description("Create a new Bot discussion group").option("-a, --agent-id <agentId>","Agent ID to associate with this discussion").option("-f, --force","Force create even if discussion exists").option("--no-welcome","Skip sending welcome message").action(async(a,r)=>{if(!a){console.error(l("errors.name_required")),process.exitCode=1;return}await i(async()=>{await No(n,{name:a,agentId:r.agentId,force:r.force,welcome:r.welcome})})}),t.command("bot-list").description("List all configured bot discussions").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await Mo(n,{json:a.json})})}),t.command("bot-delete [name]").description("Delete a Bot discussion from configuration").option("-g, --gid <gid>","GID of the bot discussion to remove").action(async(a,r)=>{await i(async()=>{await Bo(n,{name:a||r.name,gid:r.gid})})}),t.command("uninstall-extension").description("Uninstall the entire Lunkr extension from OpenClaw").option("-p, --purge","Also remove Lunkr session credentials").action(async a=>{await i(async()=>{await Pi(n,{purge:a.purge})})}),t.command("tool-install [name]").description("Install a tool (add to tools.alsoAllow)").action(async a=>{await i(async()=>{await Ui(n,{name:a||void 0})})}),t.command("tool-uninstall [name]").description("Uninstall a tool (remove from tools.alsoAllow)").action(async a=>{await i(async()=>{await Ti(n,{name:a||void 0})})}),t.command("skill-install [name]").description("Install a skill (enable in skills.entries)").action(async a=>{await i(async()=>{await Oi(n,{name:a||void 0})})}),t.command("skill-uninstall [name]").description("Uninstall a skill (disable in skills.entries)").action(async a=>{await i(async()=>{await Ei(n,{name:a||void 0})})}),t.command("status").description("Show login status").action(async()=>{await i(async()=>{await vi(n,{verbose:t.opts().verbose})})}),t.command("search-group").description("Search for discussion groups").requiredOption("-k, --keyword <keyword>","Search keyword").option("-l, --limit <limit>","Maximum results",parseInt).action(async a=>{await i(async()=>{await bi(n,{keyword:a.keyword,limit:a.limit})})}),t.command("search-contact").description("Search for contacts").requiredOption("-k, --keyword <keyword>","Search keyword").option("-l, --limit <limit>","Maximum results",parseInt).action(async a=>{await i(async()=>{await yi(n,{keyword:a.keyword,limit:a.limit})})}),t.command("list-msg").description("List messages from a chat").requiredOption("-t, --to <to>","Recipient (user/group UID, email, or name)").option("-l, --limit <limit>","Maximum messages",parseInt).option("-s, --sender <sender>","Filter by sender UID (e.g., #835#U)").action(async a=>{await i(async()=>{await ki(n,{to:a.to,limit:a.limit,sender:a.sender})})}),t.command("send").description("Send a message").requiredOption("-t, --to <to>","Recipient (user/group UID, email, or name)").option("-m, --message <message>","Message content").action(async a=>{await i(async()=>{await _i(n,{to:a.to,message:a.message})})}),t.command("send-file").description("Send file(s) to a user or group").requiredOption("-t, --to <to>","Recipient (user/group UID, email, or name)").requiredOption("-f, --file <file...>","File path(s) to send").option("-m, --message <message>","Optional message content").action(async a=>{await i(async()=>{await Si(n,{to:a.to,file:a.file,message:a.message})})}),t.command("download").description("Download a file from a message").requiredOption("-f, --file-id <fileId>","File ID to download").requiredOption("-u, --uid <uid>","Chat UID (user or group)").option("-o, --output <output>","Save path").action(async a=>{await i(async()=>{await Ai(n,{"file-id":a.fileId,uid:a.uid,output:a.output})})}),t.command("agent-add").description("Add an agent account (reuses login flow)").option("--agent-id <agentId>","Agent ID to bind to this account").option("--bypwd","Use password login instead of QR").option("-e, --email <email>","Email address (for password login)").option("-p, --password <password>","Password").action(async a=>{await i(async()=>{await $i(n,{agentId:a.agentId,bypwd:a.bypwd,email:a.email,password:a.password,verbose:t.opts().verbose,debug:!1})})}),t.command("agent-list").description("List all agent accounts and their status").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await qi(n,{json:a.json})})}),t.command("agent-remove <email>").description("Remove an agent account").action(async a=>{await i(async()=>{await Di(n,{email:a})})}),t.command("agent-bind [email]").description("Bind/unbind an agent ID to an account").requiredOption("--agent-id <agentId>","Agent ID to bind (empty string to unbind)").option("--self","Operate on the standard account").action(async(a,r)=>{await i(async()=>{await Ni(n,{email:a,agentId:r.agentId,self:r.self})})});let s=t.command("policy").description("Manage message routing policies").addHelpText("after",`
|
|
46
|
+
Examples:
|
|
47
|
+
View current policy:
|
|
48
|
+
openclaw lunkr policy show
|
|
49
|
+
openclaw lunkr policy show --json
|
|
50
|
+
openclaw lunkr policy show --account agent@co
|
|
51
|
+
|
|
52
|
+
Set DM / group policy (open | allowlist | disabled):
|
|
53
|
+
openclaw lunkr policy set --dm allowlist
|
|
54
|
+
openclaw lunkr policy set --group disabled
|
|
55
|
+
openclaw lunkr policy set --dm open --account agent@co
|
|
56
|
+
|
|
57
|
+
Manage DM allowlist (who can DM the bot):
|
|
58
|
+
openclaw lunkr policy allow --dm \u5F20\u4E09
|
|
59
|
+
openclaw lunkr policy allow --dm '#100#U'
|
|
60
|
+
openclaw lunkr policy deny --dm \u5F20\u4E09
|
|
61
|
+
|
|
62
|
+
Manage group allowlist (which groups the bot responds in):
|
|
63
|
+
openclaw lunkr policy allow --group \u6280\u672F\u8BA8\u8BBA\u7EC4
|
|
64
|
+
openclaw lunkr policy allow --group '#456#T'
|
|
65
|
+
openclaw lunkr policy deny --group '#456#T'
|
|
66
|
+
|
|
67
|
+
Per-discussion rules (override for a specific group):
|
|
68
|
+
openclaw lunkr policy discussion '#10#T' --set-policy open
|
|
69
|
+
openclaw lunkr policy discussion '#10#T' --disable
|
|
70
|
+
openclaw lunkr policy discussion '#10#T' --allow \u5F20\u4E09
|
|
71
|
+
openclaw lunkr policy discussion '#10#T' --require-mention
|
|
72
|
+
openclaw lunkr policy discussion '#10#T' --remove
|
|
73
|
+
|
|
74
|
+
Group type rules (by UID suffix, e.g. #C = channels):
|
|
75
|
+
openclaw lunkr policy type '#C' --set mentionOnly
|
|
76
|
+
openclaw lunkr policy type '#C' --set disabled
|
|
77
|
+
openclaw lunkr policy type '#C' --remove
|
|
78
|
+
|
|
79
|
+
Reset all policies to default:
|
|
80
|
+
openclaw lunkr policy reset
|
|
81
|
+
|
|
82
|
+
Priority: botDiscussion > discussions[gid] > groupTypeRules[suffix] > groupPolicy
|
|
83
|
+
All commands support --account <email> to target a specific account.`);s.command("show").description("Show policy configuration for an account").option("-a, --account <email>","Account email to operate on").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await Mi(n,{account:a.account||t.opts().as,json:a.json})})}),s.command("set").description("Set DM or group policy").option("-a, --account <email>","Account email to operate on").option("--dm <policy>","Set DM policy (open|allowlist|disabled)").option("--group <policy>","Set group policy (open|allowlist|disabled)").action(async a=>{await i(async()=>{await zi(n,{account:a.account||t.opts().as,dm:a.dm,group:a.group})})}),s.command("allow").description("Add a user or group to the allowlist").option("-a, --account <email>","Account email to operate on").option("--dm <user>","User to allow for DM").option("--group <group>","Group to allow").action(async a=>{await i(async()=>{await Ki(n,{account:a.account||t.opts().as,dm:a.dm,group:a.group})})}),s.command("deny").description("Remove a user or group from the allowlist").option("-a, --account <email>","Account email to operate on").option("--dm <user>","User to remove from DM allowlist").option("--group <group>","Group to remove from allowlist").action(async a=>{await i(async()=>{await Hi(n,{account:a.account||t.opts().as,dm:a.dm,group:a.group})})}),s.command("discussion <gid>").description("Manage per-discussion override rules").option("-a, --account <email>","Account email to operate on").option("--set-policy <policy>","Set policy (open|allowlist|disabled)").option("--enable","Enable bot in this discussion").option("--disable","Disable bot in this discussion").option("--allow <user>","Add user to discussion allowlist").option("--deny <user>","Remove user from discussion allowlist").option("--require-mention","Require @mention to trigger").option("--no-require-mention","Do not require @mention").option("--remove","Remove all discussion rules").action(async(a,r)=>{await i(async()=>{let c=r.requireMention;await Ji(n,a,{account:r.account||t.opts().as,setPolicy:r.setPolicy,enable:r.enable,disable:r.disable,allow:r.allow,deny:r.deny,requireMention:c===!0?!0:void 0,noRequireMention:c===!1?!0:void 0,remove:r.remove})})}),s.command("type <suffix>").description("Manage group type rules (by UID suffix)").option("-a, --account <email>","Account email to operate on").option("--set <policy>","Set rule (disabled|mentionOnly|open)").option("--remove","Remove the rule").action(async(a,r)=>{await i(async()=>{await Yi(n,a,{account:r.account||t.opts().as,set:r.set,remove:r.remove})})}),s.command("reset").description("Clear all policy configuration for an account").option("-a, --account <email>","Account email to operate on").option("-y, --yes","Skip confirmation prompt").action(async a=>{await i(async()=>{await Qi(n,{account:a.account||t.opts().as,yes:a.yes})})}),t.command("listen").description("Listen for real-time messages").option("-r, --raw","Show raw message data").action(async a=>{await i(async()=>{await Ri(n,{raw:a.raw})})})},{commands:["lunkr"]})}},Yy=Am;export{Bo as botDeleteCommand,Zc as botDeleteCommandMeta,Mo as botListCommand,Yc as botListCommandMeta,qo as channelPlugin,No as createCommand,Jc as createCommandMeta,Yy as default};
|
|
84
|
+
/*!
|
|
85
|
+
* mime-db
|
|
86
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
87
|
+
* Copyright(c) 2015-2022 Douglas Christopher Wilson
|
|
88
|
+
* MIT Licensed
|
|
89
|
+
*/
|
|
90
|
+
/*!
|
|
91
|
+
* mime-types
|
|
92
|
+
* Copyright(c) 2014 Jonathan Ong
|
|
93
|
+
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
94
|
+
* MIT Licensed
|
|
95
|
+
*/
|