@coremail/lunkr-openclaw 1.0.9 → 1.0.10

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/index.js CHANGED
@@ -1,15 +1,16 @@
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}&timestamp=${e}&secret=${t}`}else c=`accessToken=${a}&timestamp=${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
- ${r("auth.otp_required")}`);let y={tempSid:n.sid,trans:"login",device:{token:f,secret:g,uuid:i.uuid,friendlyName:i.friendlyName,model:i.model,os:i.os,deviceType:i.deviceType},type:"OTP"},S=await o.postJson({func:"user:triggerSecondAuth",sid:n.sid,payload:y});if(S.code!=="S_OK")throw new U(r("auth.otp_trigger_failed",{code:S.code}));console.log(` ${r("auth.otp_verify_prompt")}`),console.log(` ${r("auth.otp_trust_hint")}`),await Ta(` ${r("auth.otp_press_enter")}`);let F=await o.postJson({func:"user:querySecondAuthValidateStage",sid:n.sid,payload:{tempSid:n.sid,trans:"login"}});if(F.code!=="S_OK")throw new U(r("auth.otp_query_failed",{code:F.code}));let P=(F.var||{}).stage;if(P!=="VALIDATED")throw new U(r("auth.otp_not_completed",{stage:P}));console.log(` ${r("auth.otp_success")}`),(t||c)&&console.log(`
5
- ${r("auth.relogin")}`);let $={uid:e,password:"",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},M=await o.postJson({func:"user:login",sid:n.sid,payload:$,debug:c||t});c&&console.log(`[Login] Re-login Response: ${JSON.stringify(M,null,2)}`);let q=M.code,V=M.var||{};if(q!=="S_OK"&&q!=="FA_NEED_ACCESS_SECRET")throw new U(r("auth.relogin_failed",{code:q}));let be=V.sid;if(!be)throw new U(r("auth.relogin_no_sid"));let Fe=o.cookies.Coremail||"";if(!Fe)throw new U(r("auth.relogin_no_cookie"));return(t||c)&&console.log(r("auth.otp_verified_getting_session")),await Ws(be,Fe,e,i,t,c)}if(v!=="S_OK"&&v!=="FA_NEED_ACCESS_SECRET"){let y=String(k.error||k.msg||x.msg||v);throw y.includes("\u5BC6\u7801")||y.toLowerCase().includes("password")||["PASSWORD_ERROR","AUTH_FAILED"].includes(v)?new Be(`Password error: ${y}`):new U(`Login failed: ${y}`)}let b=k.sid;if(!b)throw new U("Login response missing sid");c&&console.log(`[Login] Client cookies: ${JSON.stringify(o.cookies)}`);let _=o.cookies.Coremail||"";if(!_){let y=Object.keys(o.cookies);throw new U(`Login succeeded but no Coremail cookie received. Available cookies: ${y.join(", ")||"none"}`)}return(t||c)&&(console.log(`Coremail login succeeded, sid: ${b.substring(0,20)}...`),console.log(`Coremail cookie: ${_.substring(0,30)}...`),console.log("Now getting Lunkr session...")),await Ws(b,_,e,i,t,c)}async function Ws(o,e,s,n,i,a){(i||a)&&console.log(`
6
- [getLunkrSession] Step 1: Calling cim.common:verify...`);let t=`${Zn}${eo}?func=cim.common:verify`,c={"Content-Type":"text/x-json; charset=UTF-8",Cookie:`Coremail=${e}`},l=await ie(t,"{}",c,3e4);if(a&&console.log(`[getLunkrSession] verify status: ${l.status}`),l.status!==200)throw new U(`cim.common:verify request failed: ${l.status}`);let p=JSON.parse(l.data);if(p.code!=="S_OK")throw new U(`cim.common:verify failed: ${p.code}`);let u=p.var||{},d=u.login_key,f=u.login_index;if(!d)throw new U("cim.common:verify did not return login_key");a&&(console.log(`[getLunkrSession] login_index: ${f}`),console.log(`[getLunkrSession] login_key length: ${d.length}`)),(i||a)&&console.log("[getLunkrSession] Step 2: Generating X-CM-TOKEN...");let g=`${o}:${e}`,h=Buffer.from(g,"utf8").toString("base64"),m=In(h,d);a&&console.log(`[getLunkrSession] X-CM-TOKEN length: ${m.length}`),(i||a)&&console.log("[getLunkrSession] Step 3: Calling cim.user:login...");let x=`${Zn}${eo}?func=cim.user:login`,v={"Content-Type":"text/x-json; charset=UTF-8","X-CM-TOKEN":m},k={uid:s,forceCookieCheck:!0,bindingRemoteCoremail:!0,setCookieKey:!0,version:"2.0.5.8",open:!0,device:{uuid:n.uuid,os:n.os,model:n.model,friendlyName:n.friendlyName}};f&&(k.login_index=f);let b=await ie(x,JSON.stringify(k),v,3e4);if(a&&console.log(`[getLunkrSession] login status: ${b.status}`),![200,202].includes(b.status))throw new U(`cim.user:login request failed: ${b.status}, response: ${b.data.substring(0,500)}`);let _=JSON.parse(b.data),A=_.code;if(A!=="S_OK"&&A!=="FA_NEED_ACCESS_SECRET")throw new U(`cim.user:login failed: ${A}`);let y=_.var||{},S=y.sid,F=y.self_uid||y.uid;if(!S)throw new U("cim.user:login did not return sid");let w=null,P=b.headers["set-cookie"];if(P)for(let q of P.split(",")){let V=q.trim().match(/^Cim=([^;]+)/);V&&(w=V[1],a&&console.log(`[getLunkrSession] Received cookie: Cim=${w.substring(0,20)}...`))}let $=w||e;return(i||a)&&(console.log(`[getLunkrSession] Lunkr SID: ${S.substring(0,20)}...`),console.log(`[getLunkrSession] selfUid: ${F}`)),{sid:S,selfUid:F||s,cookie:`Cim=${$}`,baseUrl:Zn,apiPath:eo}}function Ta(o){return new Promise(e=>{let s=Hs.createInterface({input:process.stdin,output:process.stdout});s.question(o,()=>{s.close(),e()})})}D();D();Ie();Ie();Ue();async function Ea(o,e,s,n,i,a){let t=new O(n,{apiPath:je});t.setCookies(i),a&&console.log("[getApiTokenAndSession] Calling cim.user:getApiToken...");let c=await t.postJson({func:"cim.user:getApiToken",sid:o,payload:{device_uuid:s,device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"},debug:a});if(c.code!=="S_OK"||!c.var?.api_token)throw new Error(`getApiToken failed: ${c.code} - ${c.msg||"No token returned"}`);let l=c.var.api_token;a&&console.log(`[getApiTokenAndSession] Got API token: ${l.substring(0,20)}...`);let p=await ae(e,l,s,{debug:a});if(!p.success)throw new Error(p.error||"apiTokenLogin failed");let u=p.sid,d=p.cookie;if(!d)throw new Error("apiTokenLogin did not return cookie");return a&&console.log(`[getApiTokenAndSession] New SID: ${u.substring(0,20)}...`),{apiToken:l,newSid:u,newCookie:d,selfUid:p.selfUid}}async function Ys(o){let{email:e,sid:s,cookie:n,emailForAccountId:i,baseUrl:a,apiPath:t,deviceUuid:c,cookies:l,temp:p=!1,debug:u=!1}=o;u&&(console.log(`[saveSessionWithToken] Starting for ${e}...`),console.log(`[saveSessionWithToken] temp mode: ${p}`));let d=await Ea(s,i,c,a,l,u),f=R(),g={accountId:i,email:e,enabled:!0,session:{sid:d.newSid,cookie:d.newCookie,baseUrl:a,apiPath:t,selfUid:d.selfUid}};p?u&&console.log("[saveSessionWithToken] Temporary login - NOT saving apiToken"):(g.apiToken=d.apiToken,u&&console.log("[saveSessionWithToken] Saving apiToken to config"));let h=f.accounts?.findIndex(m=>m.accountId===i)??-1;return h>=0&&f.accounts?f.accounts[h]=g:(f.accounts||(f.accounts=[]),f.accounts.push(g)),E(f),u&&console.log("[saveSessionWithToken] Config saved"),{accountId:i,apiToken:p?void 0:d.apiToken}}j();function Zs(o,e=!1){return new Promise((s,n)=>{if(e&&process.stdin.isTTY){process.stdout.write(o);let i="",a=process.stdin;a.setRawMode(!0),a.resume(),a.setEncoding("utf8");let t=c=>{let l=c;switch(l){case`
1
+ var yi=Object.create;var Sn=Object.defineProperty;var wi=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Si=Object.getPrototypeOf,_i=Object.prototype.hasOwnProperty;var Ai=(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 W=(o,e)=>()=>(o&&(e=o(o=0)),e);var Ye=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),Li=(o,e)=>{for(var s in e)Sn(o,s,{get:e[s],enumerable:!0})},Ri=(o,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ci(e))!_i.call(o,i)&&i!==s&&Sn(o,i,{get:()=>e[i],enumerable:!(n=wi(e,i))||n.enumerable});return o};var Fo=(o,e,s)=>(s=o!=null?yi(Si(o)):{},Ri(e||!o||!o.__esModule?Sn(s,"default",{value:o,enumerable:!0}):s,o));import*as qe from"fs";import*as Ze from"path";import{fileURLToPath as ji}from"url";import{dirname as Ii}from"path";function Pi(){let o=Ze.join(qo,"locales");return qe.existsSync(o)?o:Ze.join(qo,"i18n","locales")}function Oi(){let o=process.env.LUNKR_LANG;if(o)return Ln(o);let e=process.env.LANG||process.env.LC_ALL;if(e){let n=e.split(".")[0].replace("_","-");return Ln(n)}let s=process.env.LANGUAGE;if(s){let n=s.split(":")[0].replace("_","-");return Ln(n)}return en}function Ln(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 To(o){if(_n.has(o))return _n.get(o);let e=Ze.join(Pi(),`${o}.json`);try{if(qe.existsSync(e)){let s=qe.readFileSync(e,"utf-8"),n=JSON.parse(s);return _n.set(o,n),n}}catch{}return null}function $i(){return An||(An=Oi()),An}function Eo(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 Do(o,e){return e?o.replace(/\{\{(\w+)\}\}/g,(s,n)=>String(e[n]??"")):o}function r(o,e){let s=$i(),n=To(s);if(n){let i=Eo(n,o);if(i)return Do(i,e)}if(s!==en){let i=To(en);if(i){let a=Eo(i,o);if(a)return Do(a,e)}}return o}var Ui,qo,_n,An,en,j=W(()=>{Ui=ji(import.meta.url),qo=Ii(Ui),_n=new Map,An=null,en="en-US"});import*as B from"crypto";import*as nn from"os";function jn(o){return o<128?Buffer.from([o]):o<256?Buffer.from([129,o]):Buffer.from([130,o>>8&255,o&255])}function Bo(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]),jn(s.length),s])}function zo(o){return Buffer.concat([Buffer.from([48]),jn(o.length),o])}function Ni(o){let e=Buffer.concat([Buffer.from([0]),o]);return Buffer.concat([Buffer.from([3]),jn(e.length),e])}function Ko(o,e){let s=Bo(e),n=Bo(o),i=zo(Buffer.concat([s,n])),a=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return zo(Buffer.concat([a,Ni(i)]))}function In(o,e,s){try{let n=Ko(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 Un(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=W(()=>{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 pe from"fs";import*as $n from"path";import*as ge from"os";function Te(){return $n.join(ge.homedir(),Vo)}function H(){return $n.join(Te(),Jo)}function Wo(){let o=Te();pe.existsSync(o)||pe.mkdirSync(o,{recursive:!0})}function Mi(){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:Ho(),device_os:n,device_model:i,device_name:o}}function Ho(){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 On(){return{...Mi(),bot_name:sn,accounts:[]}}function Qo(o){let e=new Ae;return e.setDeviceUuid(o.device_uuid),e.setDeviceName(o.device_name),e}function Pn(o){if(!o)return!1;try{return Buffer.from(o,"base64").length>=28}catch{return!1}}function Bi(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 zi(o,e){let s={...o};if(s.session){let n={...s.session};try{n.sid&&Pn(n.sid)&&(n.sid=e.decrypt(n.sid))}catch{n.sid=""}try{n.cookie&&Pn(n.cookie)&&(n.cookie=e.decrypt(n.cookie))}catch{n.cookie=""}s.session=n}try{s.apiToken&&Pn(s.apiToken)&&(s.apiToken=e.decrypt(s.apiToken))}catch{s.apiToken=void 0}return s}function R(){let o=H();if(!pe.existsSync(o))return On();try{let e=pe.readFileSync(o,"utf-8"),s=JSON.parse(e);if(s.device_uuid||(s.device_uuid=Ho()),s.bot_name||(s.bot_name=sn),s.accounts||(s.accounts=[]),s.accounts?.length){let n=Qo(s);try{s.accounts=s.accounts.map(i=>zi(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 On()}}function E(o){Wo();let e=H(),s={...o,accounts:o.accounts?.map(n=>{let i=Qo(o);return Bi(n,i)})};pe.writeFileSync(e,JSON.stringify(s,null,2),"utf-8")}function an(o){return ue(o)}function ue(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 Fn(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 qn(o,e){let s=e||R();return s.bot_name=o,s}var Vo,Jo,sn,de=W(()=>{on();Vo=".lunkr",Jo="config.json",sn="Bot"});var ns=Ye((Lt,Wi)=>{Wi.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 ss=Ye((Rt,os)=>{os.exports=ns()});var cs=Ye((jt,rs)=>{var is={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},as={nginx:10,apache:20,iana:40,default:30},ts={application:1,font:2,audio:2,video:3,default:0};rs.exports=function(e,s="default"){if(e==="application/octet-stream")return 0;let[n,i]=e.split("/"),a=i.replace(/(\.|x-).*/,"$1"),t=is[a]||is.default,c=as[s]||as.default,l=ts[n]||ts.default,p=1-e.length/100;return t+c+l+p}});var Dn=Ye(N=>{"use strict";var ye=ss(),Hi=Ai("path").extname,ls=cs(),ps=/^\s*([^;\s]*)(?:;|\s|$)/,Qi=/^text\//i;N.charset=us;N.charsets={lookup:us};N.contentType=Xi;N.extension=En;N.extensions=Object.create(null);N.lookup=Yi;N.types=Object.create(null);N._extensionConflicts=[];Zi(N.extensions,N.types);function us(o){if(!o||typeof o!="string")return!1;var e=ps.exec(o),s=e&&ye[e[1].toLowerCase()];return s&&s.charset?s.charset:e&&Qi.test(e[1])?"UTF-8":!1}function Xi(o){if(!o||typeof o!="string")return!1;var e=o.indexOf("/")===-1?N.lookup(o):o;if(!e)return!1;if(e.indexOf("charset")===-1){var s=N.charset(e);s&&(e+="; charset="+s.toLowerCase())}return e}function En(o){if(!o||typeof o!="string")return!1;var e=ps.exec(o),s=e&&N.extensions[e[1].toLowerCase()];return!s||!s.length?!1:s[0]}function Yi(o){if(!o||typeof o!="string")return!1;var e=Hi("x."+o).toLowerCase().slice(1);return e&&N.types[e]||!1}function Zi(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]=ea(c,e[c],n);let l=na(c,e[c],n);l!==e[c]&&N._extensionConflicts.push([c,l,e[c]])}}})}function ea(o,e,s){var n=e?ls(e,ye[e].source):0,i=s?ls(s,ye[s].source):0;return n>i?e:s}function na(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 N.types[En]!=="application/octet-stream"&&(i>a||i===a&&N.types[En]?.slice(0,12)==="application/")||i>a?e:s}});import*as Ge from"https";import*as tn from"zlib";import{HttpsProxyAgent as oa}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 ae(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",m=>{d.push(m)}),u.on("end",()=>{let m={};if(u.headers)for(let[f,x]of Object.entries(u.headers))x!==void 0&&(m[f.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:m})})});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),m=rn(d,l.headers["content-encoding"]);n({status:l.statusCode||0,data:m,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),m=l.headers["content-encoding"];if(m){let g=rn(d,m);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,f]of Object.entries(p.headers))f!==void 0&&(d[h.toLowerCase()]=Array.isArray(f)?f.join(", "):f);let m=Buffer.concat(u),g=rn(m,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,ds,cn,Re=W(()=>{ds=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;ds&&(Ne=new oa(ds));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 sa}from"fast-xml-parser";function Gn(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 Nn(o,e,s){let n=o+e+s;return"!AIBot:"+Ke.createHash("sha1").update(n).digest("hex")}function Mn(o){let e=o+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return Ke.createHash("sha1").update(e).digest("hex")}function Bn(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}&timestamp=${e}&secret=${t}`}else c=`accessToken=${a}&timestamp=${e}&secret=${t}`;return Ke.createHash("sha1").update(c).digest().toString("base64")}var ln,je,U,Be,ze,O,Ie=W(()=>{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 sa({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 m=d["@_uri"];if(!m||!m.startsWith("http://")&&!m.startsWith("https://"))continue;let g=new URL(m),h=`${g.protocol}//${g.host}`,f=g.pathname.replace(/\/$/,""),x=f?`${f}/s/json`:"/s/json";c.push({type:l,uri:m,baseUrl:h,apiPath:x,apiUrl:`${h}${x}`})}}return c.sort((l,p)=>{let[u,d]=this.getTypePriority(l.type),[m,g]=this.getTypePriority(p.type);return u!==m?u-m: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 ae(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,m=u.type;return!d||!m?null:{sid:d,authType:m,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 ae(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 ms from"https";import*as fs from"http";import{WebSocket as zn}from"ws";import{v4 as ia}from"uuid";function pn(...o){process.env.LUNKR_VERBOSE==="1"&&console.log("[SocketIO]",...o)}var Ce,un=W(()=>{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 ae(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 zn(a,{headers:{Cookie:this.buildCookieHeader()},agent:n?new ms.Agent({rejectUnauthorized:!1}):new fs.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===zn.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:ia()})}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!==zn.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 vs from"crypto";import{WebSocket as xs}from"ws";import*as bs from"qrcode-terminal";import{v4 as hs}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={...ra,"Content-Length":Buffer.byteLength(t)};n?.cookies&&Object.keys(n.cookies).length>0&&(p.Cookie=Object.entries(n.cookies).map(([m,g])=>`${m}=${g}`).join("; "));let d=mn.request({hostname:l,port:443,path:c,method:"POST",headers:p},m=>{let g="",h={},f=m.headers["set-cookie"];if(f)for(let x of f){let v=x.match(/^([^=]+)=([^;]+)/);v&&(h[v[1].trim()]=v[2].trim())}m.on("data",x=>g+=x),m.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 ca(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 Kn(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 ca(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)),m=d.sid,g=d.pingInterval??25e3;i(`eioSid: ${m}, pingInterval: ${g}`),i("[3] WebSocket connection...");let h=`wss://${Ve}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(m)}`;return new Promise(f=>{let x=setTimeout(()=>{v.close(),f({success:!1,error:"Timeout waiting for QR scan"})},s),v=new xs(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 L=_.toString();if(i(`Received: ${L.substring(0,100)}`),L.includes("3probe")){i("Received 3probe, sending 5 and auth"),v.send("5");let y={clientId:`webmail:${t}`,sid:t,msg_v:100,uuid:hs(),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(""),bs.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===xs.OPEN&&v.send("2")},g)}if(L.startsWith("42"))try{let y=JSON.parse(L.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,Cn=q.var.self_uid;i(`Login successful, sid: ${be}, email: ${Fe}, selfUid: ${Cn}`),i("Calling getApiToken...");let Oo=n||{device_uuid:hs(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};dn("/lunkr/s/json","cim.user:getApiToken",Oo,{sid:be,baseUrl:"betaweb.lunkr.cn",cookies:V}).then(Xe=>{let $o=Xe.data;i(`Token result: ${JSON.stringify($o)}`),clearTimeout(x),clearInterval(b),v.close(),f({success:!0,apiToken:$o.var?.api_token,email:Fe,selfUid:Cn,deviceUuid:Oo.device_uuid})}).catch(Xe=>{console.error(`getApiToken failed: ${Xe.message}`),clearTimeout(x),clearInterval(b),v.close(),f({success:!1,error:`getApiToken failed: ${Xe.message}`})})}else clearTimeout(x),clearInterval(b),v.close(),f({success:!1,error:`Login failed: ${JSON.stringify(q)}`})}).catch(M=>{clearTimeout(x),clearInterval(b),v.close(),f({success:!1,error:M.message})})}}}catch(y){i(`Event parse failed: ${y.message}`)}L==="2"&&v.send("3")}),v.on("error",_=>{i(`WebSocket error: ${_.message}`),clearTimeout(x),clearInterval(b),f({success:!1,error:_.message})}),v.on("close",()=>{i("WebSocket closed"),clearTimeout(x),clearInterval(b)})})}catch(a){return{success:!1,error:a.message}}}async function te(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=vs.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,ra,Ue=W(()=>{j();Ve="lunkr.coremail.cn",ra={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 ks(o,e){return r("message.prefix",{sender:o||"Unknown",bot:e||"Bot"})}function me(o,e,s){return ks(e,s)+o}function Vn(o){return la.test(o.trim())}function Jn(o){return pa.test(o.trim())}function fn(o){return ua.test(o.trim())}function Wn(o){return da.test(o.trim())}function re(o){let e=o.trim();return Vn(e)||Jn(e)||fn(e)||Wn(e)}function xn(o){let e=o.trim();return Vn(e)||Wn(e)&&!fn(e)?"user":Jn(e)||fn(e)?"group":"unknown"}function Hn(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 X(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 ma(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-ma(o));return o+" ".repeat(s)}var la,pa,ua,da,_e=W(()=>{j();la=/^#\d+#U$/,pa=/^#\d+#T$/,ua=/^t\.\./i,da=/^[^\s@]+@[^\s@]+\.[^\s@]+$/});function Pe(o){return fa.includes(o)}function ys(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 Y(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 te(a,n.apiToken,i)}catch(l){let p=l instanceof Error?l.message:String(l);return{success:!1,error:p,reason:ys(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:ys(c)}}var fa,Je=W(()=>{de();Ue();fa=["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 Yn,oe,Oe=W(()=>{Yn=Fo(Dn(),1);j();Ie();Re();un();Ue();_e();de();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 te(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),c.email&&i.add(String(c.email)),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),c.email&&i.add(String(c.email)),n.push({uid:l,email:c.email,trueName:c.true_name,name:c.name}))}}catch{}try{let a=await this.client.postJson({func:"oab:autoMatch",sid:this.sid,payload:{keyword:e,limit: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.email||"");!l||i.has(l)||(i.add(l),n.push({uid:l,email:l,trueName:c.true_name,name:c.true_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(re(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(re(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,m=d.from||{},g=[],h=d.attachments;if(Array.isArray(h))for(let f of h)g.push({file_id:f.fileId,uid:f.uid,title:f.title||f.filename,content_type:f.content_type,file_size:f.file_size||f.size,type:f.type,inline:f.inline===!0});l.push({mid:String(d.mid||d.uid||""),time:X(d.time),subject:d.subject||d.content||"",content:d.content,senderUid:m.uid||d.sender_uid||d.fromUid,senderName:m.true_name||m.email||d.sender_name||d.fromName,senderEmail:m.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=me(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=me(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 f=await this.uploadFileWithFlow(h,u,c);d.push({fileId:f.fileId,uid:f.fileUid})}let m=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text",clientMid:l,attachments:d}});if(m.code!=="S_OK")throw new Error(r("api.send_reply_failed",{code:m.code,msg:m.msg||"Unknown error"}));let g=m.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=Yn.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 m=`${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("; ")},f=await Le(m,l,h,6e4),x=f.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(f.data)}catch{throw new Error(r("api.upload_invalid_response",{data:f.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,L=b?.uid;if(!_)throw new Error(r("api.upload_no_file_id"));return{fileId:_,fileUid:L||"",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=Yn.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 m=`${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("; ")},f=await Le(m,l,h,6e4),x=f.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(f.data)}catch{throw new Error(r("api.upload_invalid_response",{data:f.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,L=b?.uid;if(!_)throw new Error(r("api.upload_no_file_id"));return{fileId:_,fileUid:L||"",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 m=c.data.toString("utf-8").substring(0,500);throw new Error(r("api.download_http_failed",{status:c.status,body:m}))}if(c.data.length<1e3)try{let m=JSON.parse(c.data.toString("utf-8"));if(m.code&&m.code!=="S_OK")throw new Error(r("api.download_failed",{error:`${m.code} - ${m.msg||""}`}))}catch(m){if(!(m instanceof SyntaxError))throw m}if(!i)throw new Error(r("api.filename_required"));let l=Hn(i),p=n?ne.resolve(n):ne.join(zs.tmpdir(),l),u=ne.dirname(p);K.existsSync(u)||K.mkdirSync(u,{recursive:!0});let d=c.data;if(l.endsWith(".ilbc")&&!c.data.subarray(0,6).equals(Buffer.from("#!iLBC"))){let m=c.data.length%38===0?"20":"30",g=Buffer.from(`#!iLBC${m}
3
+ `);d=Buffer.concat([g,c.data])}return K.writeFileSync(p,d),{filePath:p,fileName:l,fileSize:d.length}}async convertAudio(e,s="wav"){let n=s.startsWith(".")?s:`.${s}`,i=e.replace(/\.[^.]+$/,n),{execFile:a}=await import("child_process"),{promisify:t}=await import("util"),c=t(a);try{await c("ffmpeg",["-y","-i",e,"-ar","16000","-ac","1",i],{timeout:3e4})}catch(l){throw new Error(r("api.audio_convert_failed",{error:l.message||String(l)}))}return{filePath:i,format:s}}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=W(()=>{de();Je();_e();Oe()});var Js={};Li(Js,{loginCommand:()=>$e,loginCommandMeta:()=>Vs});async function qa(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 Zn(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 qa(x.session)){let k=await Zn(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 te(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 Zn(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)} ${H()}`),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 Kn({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 te(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},m=await Zn(d);m&&(d.senderName=m);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 f=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(""),m&&console.log(` ${I(r("labels.name")+":",f)} ${m}`),console.log(` ${I(r("labels.email")+":",f)} ${l.email}`),console.log(` ${I(r("labels.bot")+":",f)} ${z()}`),console.log(` ${I("UID:",f)} ${u}`),console.log(a?` ${I(r("labels.mode")+":",f)} ${r("messages.mode_temporary")}`:` ${I(r("labels.mode")+":",f)} ${r("messages.mode_persistent")}`),console.log(""),console.log(` ${I(r("labels.config")+":",f)} ${H()}`),console.log("")}var Vs,bn=W(()=>{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 Go(o){return{}}function No(o){return{accountId:o.accountId}}function Mo(o){return{}}import{Type as C}from"@sinclair/typebox";import{Value as gt}from"@sinclair/typebox/value";var Fi=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"})}),qi=C.Union([C.Literal("allow"),C.Literal("deny"),C.Literal("whitelist")]),Ti=C.Union([C.Literal("allow"),C.Literal("deny"),C.Literal("whitelist")]),Rn=C.Object({enabled:C.Optional(C.Boolean({default:!0})),commandPrefix:C.Optional(C.String({minLength:1,default:"/"})),botDiscussions:C.Optional(C.Record(C.String(),Fi)),dmPolicy:C.Optional(qi),allowFrom:C.Optional(C.Array(C.String())),groupPolicy:C.Optional(Ti),groups:C.Optional(C.Array(C.String()))}),Ei=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())}),Di=C.Object({sid:C.String(),selfUid:C.String(),cookie:C.String(),baseUrl:C.String(),apiPath:C.String()}),Gi=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:Ei,config:Rn,session:C.Optional(Di)}),xt=C.Record(C.String(),Gi);var ie="default";de();var Tn="agent:";function Ki(o){let e=R(),s=e.accounts||[];if(o&&o.startsWith(Tn)){let i=o.slice(Tn.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===ie){let i=ue(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 Xo(o){return o.channels?.["lunkr-openclaw"]}function Q(o,e){let s=Xo(o),i=Ki(e??ie);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 Yo={listAccountIds:o=>{let e=[],s=R();ue(s)?.session&&e.push(ie);let i=Ee(s);for(let a of i)a.session?.sid&&e.push(`${Tn}${a.email}`);return e},resolveAccount:(o,e)=>Q(o,e),defaultAccountId:()=>ie,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=Xo(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 Zo(o){return o.replace(/^lunkr:/i,"")}function Vi(o,e,s){let n=s.config.dmPolicy??"allow",i=s.config.allowFrom??[];return{policy:n,allowFrom:i.map(Zo),policyPath:"channels.lunkr-openclaw.dmPolicy",allowFromPath:"channels.lunkr-openclaw.allowFrom",approveHint:"openclaw pairing approve lunkr <code>",normalizeEntry:Zo}}async function Ji(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 es={resolveDmPolicy:o=>{let{cfg:e,accountId:s,account:n}=o;return Vi(e,s??ie,n)},collectWarnings:o=>Ji(o)};var Ls=Fo(Dn(),1);import*as Z from"fs";import*as ve from"path";import*as As from"os";Re();on();Ie();un();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}},aa=Object.keys(gs);Re();Ue();_e();j();Je();var ws=1e3;async function Cs(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 Ss(o,e){let s=Q(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 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:"text"}});if(c.code!=="S_OK"&&Pe(String(c.code))){let p=await Y(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[f,x]=h.split("=",2);d[f.trim()]=x.trim()}}u.setCookies(d);let m=await u.postJson({func:"cim.msg:reply",sid:p.session.sid,payload:{uid:s,content:n,type:"text"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`msg-${Date.now()}`};throw new Error(r("api.send_failed",{code:String(m.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 xa(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 Y(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[f,x]=h.split("=",2);d[f.trim()]=x.trim()}}u.setCookies(d);let m=await u.postJson({func:"cim.msg:reply",sid:p.session.sid,payload:{uid:s,content:n,type:"post"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`post-${Date.now()}`};throw new Error(r("api.send_post_failed",{code:String(m.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 _s(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 ha(o){if(o.startsWith("http://")||o.startsWith("https://")){let s=As.tmpdir(),n=`lunkr-media-${Date.now()}-${ve.basename(new URL(o).pathname)||"file"}`,i=ve.join(s,n),a=await Me(o,{},6e4);return Z.writeFileSync(i,a.data),{filePath:i,cleanup:()=>{try{Z.existsSync(i)&&Z.unlinkSync(i)}catch{}}}}let e=ve.resolve(o);if(!Z.existsSync(e))throw new Error(r("errors.file_not_found",{path:o}));return{filePath:e,cleanup:()=>{}}}async function va(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(!Z.existsSync(l))throw new Error(r("errors.file_not_found",{path:s}));let u=Z.statSync(l),d=Ls.lookup(l)||"application/octet-stream",m=Z.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,m,b,6e4),L;try{L=JSON.parse(_.data)}catch{throw new Error(r("api.upload_invalid_response",{data:_.data?.substring?.(0,200)}))}if(L.code!=="S_OK")throw new Error(r("api.upload_data_failed",{code:String(L.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 Rs={deliveryMode:"direct",textChunkLimit:ws,sendText:async o=>{let{cfg:e,to:s,text:n,replyToId:i,accountId:a}=o,{client:t,account:c}=await Ss(e,a),{chatId:l,chatType:p}=_s(s),u=c.botName??"Bot",d=c.senderName;d||(d=await Cs(t,c.sid)),d||(d=c.selfUid?.includes("@")?c.selfUid.split("@")[0]:"User");let m=me(n,d,u),g;return m.length>ws?g=await xa(t,{to:l,content:m,sid:c.sid,accountId:c.accountId,lunkrConfig:c.lunkrConfig}):g=await ga(t,{to:l,content:m,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 Ss(e,a),{chatId:l,chatType:p}=_s(s),u=c.botName??"Bot",d=c.senderName;d||(d=await Cs(t,c.sid)),d||(d=c.selfUid?.includes("@")?c.selfUid.split("@")[0]:"User");let m=me(n||"",d,u),g={"Cim.sid":c.sid};for(let b of c.cookie.split(";")){let _=b.trim();if(_.includes("=")){let[L,y]=_.split("=",2);g[L.trim()]=y.trim()}}let h=t,f=c.sid;if((await t.postJson({func:"cim.common:getOrgInfo",sid:c.sid})).code!=="S_OK"){let b=await Y(c.accountId);if(!b.success||!b.session)throw new Error(r("errors.session_expired"));f=b.session.sid,h=new O(c.lunkrConfig.baseUrl,{apiPath:c.lunkrConfig.apiPath}),g={"Cim.sid":f};for(let _ of b.session.cookie.split(";")){let L=_.trim();if(L.includes("=")){let[y,S]=L.split("=",2);g[y.trim()]=S.trim()}}h.setCookies(g)}let v,k;try{let b=await ha(i);v=b.filePath,k=b.cleanup;let _=p==="p2p"?c.selfUid:l,{fileId:L,fileUid:y}=await va(h,{filePath:v,sid:f,uploadUid:_,cookies:g,baseUrl:c.lunkrConfig.baseUrl,apiPath:c.lunkrConfig.apiPath}),S=await h.postJson({func:"cim.msg:reply",sid:f,payload:{uid:l,content:m,type:"text",attachments:[{fileId:L,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 Us(o,e){let s=o.chatType==="group"?o.chatId:null;return s&&(e.botDiscussions||{})[s]||null}function ba(o,e){return Us(o,e)!==null}function ka(o,e){return o.trim().toLowerCase().startsWith(e.toLowerCase())}function ya(o,e){return o.mentionedUids&&o.mentionedUids.length>0?o.mentionedUids.includes("all")?!0:o.mentionedUids.includes(e.selfUid):o.mentioned===!0}function js(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=Us(o,e);return a?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:a.agentId}:s&&ka(o.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function Is(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}:ya(o,e)?{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId}:{isBotMention:!1,isFromBot:!1,isFromSelf:!1}}function wa(o,e){let s=o.trim();return s.toLowerCase().startsWith(e.toLowerCase())?s.slice(e.length).trim():o}function Ps(o,e){let s=e.role||"standard",n;if(s==="agent")n=Is(o,e);else if(s==="standard+agent"){let c=Is(o,e),l=js(o,e);c.isBotMention?n=c:(l.isBotMention,n=l)}else n=js(o,e);let a=ba(o,e)?o.content:wa(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 ce=new Map,We=new Map,Os=5e3;function Ca(o){let e=Date.now(),s=We.get(o);if(s&&e-s<Os)return!0;if(We.set(o,e),We.size>1e3)for(let[n,i]of We)e-i>Os*2&&We.delete(n);return!1}var $s=1e3;async function Sa(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=me(i,c,t),p=o.sid,u=o.cookie,d=o;if(p){let m=new O(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),g={"Cim.sid":p};for(let f of u.split(";")){let x=f.trim();if(x.includes("=")){let[v,k]=x.split("=",2);g[v.trim()]=k.trim()}}m.setCookies(g);let h=await m.postJson({func:"cim.msg:reply",sid:p,payload:{uid:n,content:l,type:l.length>$s?"post":"text"}});if(s?.debug?.(`[sendLunkrReply] Response: code=${h.code}`),h.code==="S_OK"){let f=h.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully${f?`: msgId=${f}`:""}`),{msgId:f??`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 m=await Y(o.accountId);if(m.success&&m.session){s?.info(`[${o.accountId}] Session refreshed, sending message...`),p=m.session.sid,u=m.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 f=await g.postJson({func:"cim.msg:reply",sid:p,payload:{uid:n,content:l,type:l.length>$s?"post":"text"}});if(f.code==="S_OK"){let x=De(o,m.session),v=f.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: ${f.code}. Will retry later.`),new Error(r("api.send_reply_failed",{code:String(f.code),msg:String(f.msg||"Unknown")}))}throw s?.warn?.(`[${o.accountId}] Session refresh failed: ${m.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=_a(i,s);if(a){let t=Ps(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 _a(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||""),m=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"),f=String(a.uid||u.uid||""),x;f.endsWith("#U")?x="p2p":f.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 L=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()?L=`${g}
4
+ ${P}`:L=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:m||void 0,toUid:String(u.uid||""),chatType:x,chatId:f||(x==="p2p"?d:""),content:L,contentType:b,timestamp:typeof a.time=="number"?a.time:Date.now(),mentioned:F,mentionedUids:y,attachments:k.length>0?k:void 0}}function Aa(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 Fs={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 f=await Y(i.accountId);f.success&&f.session?(i=De(i,f.session),n?.info(`[${i.accountId}] Session refreshed on startup`)):n?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${f.error}. Will retry when sending messages.`)}let t,c=3,l=5e3,p=12e4,u=0,d=0,m={onMessage:async f=>{if(!f.isBotMention)return;if(Ca(f.externalId)){n?.debug?.(`[${i.accountId}] Skipping duplicate message: ${f.externalId}`);return}let x=f.chatType==="direct"?"DM":"Group";if(n?.info(`[${i.accountId}] [${x}:${f.peerId}] Received msg from ${f.senderId}: ${f.text?.substring(0,50)}...`),n?.debug?.(`[${i.accountId}] Attachments check: count=${f.attachments?.length||0}, contentType=${f.contentType}`),f.attachments&&f.attachments.length>0){let v=f.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}:${f.peerId}] Attachments: ${v}`)}if(!o.channelRuntime){n?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let v=new Set,k=f.chatType!=="direct",b=o.channelRuntime.routing.buildAgentSessionKey({peerId:f.peerId,channelId:"lunkr-openclaw",accountId:o.accountId}),_=o.channelRuntime.routing.resolveAgentRoute({cfg:o.cfg,channel:"lunkr-openclaw",peer:{kind:k?"group":"direct",id:f.peerId},accountId:o.accountId,agentId:f.agentId}),L=Aa({msg:f,account:i,sessionKey:_.sessionKey,accountId:_.accountId}),S=o.cfg.session?.store;S&&await o.channelRuntime.session.recordInboundSession({storePath:S,sessionKey:L.SessionKey,ctx:L,onRecordError:F=>{n?.error?.(`[${i.accountId}] Failed to record session: ${String(F)}`)}}),await o.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:L,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 ${f.peerId}: ${P.substring(0,50)}...`);try{let $=await Sa(i,{to:f.peerId,chatType:f.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:f=>{n?.debug(`[${i.accountId}] Received reaction: ${f.emoji} on ${f.msgId}`)},onError:f=>{n?.error(`[${i.accountId}] Socket error: ${f.message}`)},onDisconnect:async()=>{if(n?.info(`[${i.accountId}] Socket disconnected`),ce.delete(i.accountId),s.aborted)return;u++;let f=Math.min(l*Math.pow(2,u-1),p);if(n?.warn?.(`[${i.accountId}] Reconnect attempt ${u}, delay ${f/1e3}s...`),await new Promise(k=>setTimeout(k,f)),s.aborted)return;let x=await Y(i.accountId);if(x.success&&x.session){if(i=De(i,x.session),n?.info(`[${i.accountId}] Session refreshed, reconnecting...`),g=hn(i,m),await g.connect()){n?.info(`[${i.accountId}] Reconnected with refreshed session`),u=0,d=0,t.socket=g,ce.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,m),await g.connect()?(n?.info(`[${i.accountId}] Reconnected with existing session`),u=0,d=0,t.socket=g,ce.set(i.accountId,t)):(n?.warn?.(`[${i.accountId}] Reconnect attempt ${u} failed, will retry on next disconnect`),s.aborted||m.onDisconnect())},log:n,autoReconnect:!1},g=hn(i,m),h=await g.connect();if(!h){n?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let f=await Y(i.accountId);f.success&&f.session&&(i=De(i,f.session),n?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),g=hn(i,m),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()},ce.set(i.accountId,t),s.addEventListener("abort",()=>{n?.info(`[${i.accountId}] Stopping Lunkr gateway`),g.disconnect(),ce.delete(i.accountId)}),new Promise(f=>{let x=()=>{s.removeEventListener("abort",v),f(t)},v=()=>{n?.info(`[${i.accountId}] Gateway abort signal received`),x()};s.addEventListener("abort",v),g.onDisconnect(()=>{n?.info(`[${e.accountId}] Socket disconnected`),ce.delete(e.accountId),x()})})},stopAccount:async o=>{let{account:e,log:s}=o;s?.info(`[${e.accountId}] Stopping Lunkr gateway`);let n=ce.get(e.accountId);n&&(n.socket.disconnect(),ce.delete(e.accountId))},logoutAccount:async o=>{let{account:e,log:s}=o;s?.info(`[${e.accountId}] Logging out Lunkr account`);let n=ce.get(e.accountId);return n&&(n.socket.disconnect(),ce.delete(e.accountId)),{cleared:!0,loggedOut:!0}}};Je();j();async function qs(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 Y(o.accountId);if(n.success&&n.session){let i={...o,sid:n.session.sid,lunkrConfig:n.session};return qs(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 La(o){let e=[];for(let s of o){let n=s.accountId??ie;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 Ra(o){return Mo({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 ja(o){let{account:e,runtime:s,probe:n}=o,i=!!((e.sid||e.hasApiToken)&&e.selfUid);return No({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:s,probe:n})}var Ts={defaultRuntime:{accountId:ie,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:La,buildChannelSummary:({snapshot:o})=>Ra({snapshot:o}),probeAccount:async({account:o,timeoutMs:e})=>qs(o??null,e??5e3),buildAccountSnapshot:({account:o,runtime:e,probe:s})=>ja({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=Q(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 Qn(o){return{kind:"user",id:`lunkr:${o.uid}`,name:o.name??o.uid,email:o.email,avatarUrl:o.avatar}}function Es(o){return{kind:o.type==="channel"?"channel":"group",id:`lunkr:discussion:${o.gid}`,name:o.name??o.gid,avatarUrl:o.avatar}}async function Ds(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 Gs(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 Ia(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 Ns={self:async({cfg:o,accountId:e})=>{let s=Q(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 Ds(i,a.sid,t,c)).map(Qn):[]},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 Ds(i,a.sid,t,c)).map(Qn):[]},listGroups:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=await Gs(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(Es)},listGroupsLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await He(o,e),t=await Gs(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(Es)},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 Ia(i,a.sid,t,n??100)).map(Qn)}};function Ms(o){let{cfg:e,accountId:s,groupId:n}=o,i=Q(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 Ua(o){let{cfg:e,accountId:s,groupId:n}=o,i=Q(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 Ms({cfg:e,accountId:s,groupId:n})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function Pa(o){let{cfg:e,accountId:s,groupId:n}=o;Q(e,s)}var Xn={resolveRequireMention:Ms,resolveGroupIntroHint:Ua,resolveToolPolicy:Pa};j();var Oa={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")}},vn={id:"lunkr-openclaw",meta:{...Oa,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:Go(Rn),config:Yo,security:es,group:Xn,groups:Xn,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:Ns,outbound:Rs,status:Ts,gateway:Fs,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:o=>o.replace(/^lunkr:/i,"")}};de();var $a=null;function Fa(o){let e={...o,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return $a=e,e}function Bs(o){Fa(o)}bn();import*as so from"readline";import*as Hs from"readline";j();var oo=class extends Error{constructor(s,n,i){super(s);this.sid=n;this.authType=i;this.name="OtpRequiredError"}};var eo="https://lunkr.coremail.cn",no="/lunkr/s/json",Jc=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=Gn({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 Ta(t,o.email,o.password,a,c,i,s,n)}}catch(s){return s instanceof oo?{success:!1,requiresOtp:!0,otpSid:s.sid,error:s.message}:{success:!1,error:s instanceof Error?s.message:String(s)}}}async function Ta(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=In(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(),m=Nn(i.uuid,e,i.friendlyName),g=Mn(m),h=Bn(m,d,g,"");c&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${m.substring(0,20)}...`),console.log(`[Login] signature: ${h.substring(0,20)}...`));let f={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:m,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(c){let y={...f},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:f,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(`
5
+ ${r("auth.otp_required")}`);let y={tempSid:n.sid,trans:"login",device:{token:m,secret:g,uuid:i.uuid,friendlyName:i.friendlyName,model:i.model,os:i.os,deviceType:i.deviceType},type:"OTP"},S=await o.postJson({func:"user:triggerSecondAuth",sid:n.sid,payload:y});if(S.code!=="S_OK")throw new U(r("auth.otp_trigger_failed",{code:S.code}));console.log(` ${r("auth.otp_verify_prompt")}`),console.log(` ${r("auth.otp_trust_hint")}`),await Ea(` ${r("auth.otp_press_enter")}`);let F=await o.postJson({func:"user:querySecondAuthValidateStage",sid:n.sid,payload:{tempSid:n.sid,trans:"login"}});if(F.code!=="S_OK")throw new U(r("auth.otp_query_failed",{code:F.code}));let P=(F.var||{}).stage;if(P!=="VALIDATED")throw new U(r("auth.otp_not_completed",{stage:P}));console.log(` ${r("auth.otp_success")}`),(t||c)&&console.log(`
6
+ ${r("auth.relogin")}`);let $={uid:e,password:"",authType:p,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},M=await o.postJson({func:"user:login",sid:n.sid,payload:$,debug:c||t});c&&console.log(`[Login] Re-login Response: ${JSON.stringify(M,null,2)}`);let q=M.code,V=M.var||{};if(q!=="S_OK"&&q!=="FA_NEED_ACCESS_SECRET")throw new U(r("auth.relogin_failed",{code:q}));let be=V.sid;if(!be)throw new U(r("auth.relogin_no_sid"));let Fe=o.cookies.Coremail||"";if(!Fe)throw new U(r("auth.relogin_no_cookie"));return(t||c)&&console.log(r("auth.otp_verified_getting_session")),await Ws(be,Fe,e,i,t,c)}if(v!=="S_OK"&&v!=="FA_NEED_ACCESS_SECRET"){let y=String(k.error||k.msg||x.msg||v);throw y.includes("\u5BC6\u7801")||y.toLowerCase().includes("password")||["PASSWORD_ERROR","AUTH_FAILED"].includes(v)?new Be(`Password error: ${y}`):new U(`Login failed: ${y}`)}let b=k.sid;if(!b)throw new U("Login response missing sid");c&&console.log(`[Login] Client cookies: ${JSON.stringify(o.cookies)}`);let _=o.cookies.Coremail||"";if(!_){let y=Object.keys(o.cookies);throw new U(`Login succeeded but no Coremail cookie received. Available cookies: ${y.join(", ")||"none"}`)}return(t||c)&&(console.log(`Coremail login succeeded, sid: ${b.substring(0,20)}...`),console.log(`Coremail cookie: ${_.substring(0,30)}...`),console.log("Now getting Lunkr session...")),await Ws(b,_,e,i,t,c)}async function Ws(o,e,s,n,i,a){(i||a)&&console.log(`
7
+ [getLunkrSession] Step 1: Calling cim.common:verify...`);let t=`${eo}${no}?func=cim.common:verify`,c={"Content-Type":"text/x-json; charset=UTF-8",Cookie:`Coremail=${e}`},l=await ae(t,"{}",c,3e4);if(a&&console.log(`[getLunkrSession] verify status: ${l.status}`),l.status!==200)throw new U(`cim.common:verify request failed: ${l.status}`);let p=JSON.parse(l.data);if(p.code!=="S_OK")throw new U(`cim.common:verify failed: ${p.code}`);let u=p.var||{},d=u.login_key,m=u.login_index;if(!d)throw new U("cim.common:verify did not return login_key");a&&(console.log(`[getLunkrSession] login_index: ${m}`),console.log(`[getLunkrSession] login_key length: ${d.length}`)),(i||a)&&console.log("[getLunkrSession] Step 2: Generating X-CM-TOKEN...");let g=`${o}:${e}`,h=Buffer.from(g,"utf8").toString("base64"),f=Un(h,d);a&&console.log(`[getLunkrSession] X-CM-TOKEN length: ${f.length}`),(i||a)&&console.log("[getLunkrSession] Step 3: Calling cim.user:login...");let x=`${eo}${no}?func=cim.user:login`,v={"Content-Type":"text/x-json; charset=UTF-8","X-CM-TOKEN":f},k={uid:s,forceCookieCheck:!0,bindingRemoteCoremail:!0,setCookieKey:!0,version:"2.0.5.8",open:!0,device:{uuid:n.uuid,os:n.os,model:n.model,friendlyName:n.friendlyName}};m&&(k.login_index=m);let b=await ae(x,JSON.stringify(k),v,3e4);if(a&&console.log(`[getLunkrSession] login status: ${b.status}`),![200,202].includes(b.status))throw new U(`cim.user:login request failed: ${b.status}, response: ${b.data.substring(0,500)}`);let _=JSON.parse(b.data),L=_.code;if(L!=="S_OK"&&L!=="FA_NEED_ACCESS_SECRET")throw new U(`cim.user:login failed: ${L}`);let y=_.var||{},S=y.sid,F=y.self_uid||y.uid;if(!S)throw new U("cim.user:login did not return sid");let w=null,P=b.headers["set-cookie"];if(P)for(let q of P.split(",")){let V=q.trim().match(/^Cim=([^;]+)/);V&&(w=V[1],a&&console.log(`[getLunkrSession] Received cookie: Cim=${w.substring(0,20)}...`))}let $=w||e;return(i||a)&&(console.log(`[getLunkrSession] Lunkr SID: ${S.substring(0,20)}...`),console.log(`[getLunkrSession] selfUid: ${F}`)),{sid:S,selfUid:F||s,cookie:`Cim=${$}`,baseUrl:eo,apiPath:no}}function Ea(o){return new Promise(e=>{let s=Hs.createInterface({input:process.stdin,output:process.stdout});s.question(o,()=>{s.close(),e()})})}D();D();Ie();Ie();Ue();async function Da(o,e,s,n,i,a){let t=new O(n,{apiPath:je});t.setCookies(i),a&&console.log("[getApiTokenAndSession] Calling cim.user:getApiToken...");let c=await t.postJson({func:"cim.user:getApiToken",sid:o,payload:{device_uuid:s,device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"},debug:a});if(c.code!=="S_OK"||!c.var?.api_token)throw new Error(`getApiToken failed: ${c.code} - ${c.msg||"No token returned"}`);let l=c.var.api_token;a&&console.log(`[getApiTokenAndSession] Got API token: ${l.substring(0,20)}...`);let p=await te(e,l,s,{debug:a});if(!p.success)throw new Error(p.error||"apiTokenLogin failed");let u=p.sid,d=p.cookie;if(!d)throw new Error("apiTokenLogin did not return cookie");return a&&console.log(`[getApiTokenAndSession] New SID: ${u.substring(0,20)}...`),{apiToken:l,newSid:u,newCookie:d,selfUid:p.selfUid}}async function Ys(o){let{email:e,sid:s,cookie:n,emailForAccountId:i,baseUrl:a,apiPath:t,deviceUuid:c,cookies:l,temp:p=!1,debug:u=!1}=o;u&&(console.log(`[saveSessionWithToken] Starting for ${e}...`),console.log(`[saveSessionWithToken] temp mode: ${p}`));let d=await Da(s,i,c,a,l,u),m=R(),g={accountId:i,email:e,enabled:!0,session:{sid:d.newSid,cookie:d.newCookie,baseUrl:a,apiPath:t,selfUid:d.selfUid}};p?u&&console.log("[saveSessionWithToken] Temporary login - NOT saving apiToken"):(g.apiToken=d.apiToken,u&&console.log("[saveSessionWithToken] Saving apiToken to config"));let h=m.accounts?.findIndex(f=>f.accountId===i)??-1;return h>=0&&m.accounts?m.accounts[h]=g:(m.accounts||(m.accounts=[]),m.accounts.push(g)),E(m),u&&console.log("[saveSessionWithToken] Config saved"),{accountId:i,apiToken:p?void 0:d.apiToken}}j();function Zs(o,e=!1){return new Promise((s,n)=>{if(e&&process.stdin.isTTY){process.stdout.write(o);let i="",a=process.stdin;a.setRawMode(!0),a.resume(),a.setEncoding("utf8");let t=c=>{let l=c;switch(l){case`
7
8
  `:case"\r":case"":a.setRawMode(!1),a.pause(),a.removeListener("data",t),process.stdout.write(`
8
9
  `),s(i);break;case"":process.stdout.write(`
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
- \u2502 `)}`)}if(l.attachments&&l.attachments.length>0){console.log(` \u2502 ${r("labels.attachments")}:`);for(let u of l.attachments){let d=u.file_size?Se(u.file_size):"",f=u.file_id||"",g=u.uid||"";console.log(` \u2502 - ${u.title||r("labels.unnamed")} ${d}`),f&&console.log(` \u2502 file_id: ${f}`),g&&console.log(` \u2502 uid: ${g}`)}}console.log(` \u2514\u2500 MID: ${l.mid}`),console.log("")}}catch(t){let c=t instanceof Error?t.message:String(t);console.error(r("api.list_failed",{error:c})),process.exit(1)}}D();j();import*as lo from"readline";function Ga(o){return new Promise(e=>{console.log(r("messages.multiple_matches")),console.log("");for(let n=0;n<o.length;n++)console.log(` ${n+1}. ${o[n].name} (${o[n].uid})`);console.log("");let s=lo.createInterface({input:process.stdin,output:process.stdout});s.question(r("messages.enter_number",{max:o.length}),n=>{s.close();let i=parseInt(n.trim(),10);i>=1&&i<=o.length?e(i-1):(console.error(r("errors.invalid_selection")),process.exit(1))})})}async function po(o,e){let s=e.to;s||(console.error(r("errors.recipient_required")),process.exit(1));let n=T();await n.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1));try{let a=await n.resolveRecipientInteractive(s,te(s)?void 0:t=>t.length>1?-1:0);if(!te(s)){let t=await n.searchContacts(s,10),c=await n.searchGroups(s,10),l=[...t.map(u=>({uid:u.uid,name:u.trueName||u.name||u.email||u.uid,type:"user"})),...c.map(u=>({uid:u.uid,name:u.name||u.trueName||u.email||u.uid,type:"group"}))],p=l.filter(u=>u.name===s);if(p.length===1){let u=p[0],d=await n.resolveRecipient(u.uid);console.log(""),console.log(r("messages.sending_to",{name:d.name,type:d.type})),console.log(""),await co(n,d.uid,e.message);return}if(l.length>1){let u=await Ga(l),d=l[u],f=await n.resolveRecipient(d.uid);console.log(""),console.log(r("messages.sending_to",{name:f.name,type:f.type})),console.log(""),await co(n,f.uid,e.message);return}}console.log(""),console.log(r("messages.sending_to",{name:a.name,type:a.type})),console.log(""),await co(n,a.uid,e.message)}catch(a){let t=a instanceof Error?a.message:String(a);console.error(r("api.send_failed",{code:t})),process.exit(1)}}async function co(o,e,s){let n=s;if(!n&&!process.stdin.isTTY){let t=[];for await(let c of process.stdin)t.push(c);n=Buffer.concat(t).toString("utf-8").trim()}n||(n=await new Promise(t=>{let c=lo.createInterface({input:process.stdin,output:process.stdout});c.question(r("labels.message")+"\uFF1A",l=>{c.close(),t(l.trim())})})),n||(console.error(r("errors.message_required")),process.exit(1));let i=await o.resolveRecipient(e),a=await o.sendMessage(i,n);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.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(` ${r("labels.to")}: ${i.name}`),console.log(` ${r("labels.type")}: ${i.type}`),console.log(` ${r("labels.mid")}: ${a.mid}`),console.log("")}D();j();import*as ei from"readline";function Na(o){return new Promise(e=>{console.log(r("messages.multiple_matches")),console.log("");for(let n=0;n<o.length;n++)console.log(` ${n+1}. ${o[n].name} (${o[n].uid})`);console.log("");let s=ei.createInterface({input:process.stdin,output:process.stdout});s.question(r("messages.enter_number",{max:o.length}),n=>{s.close();let i=parseInt(n.trim(),10);i>=1&&i<=o.length?e(i-1):(console.error(r("errors.invalid_selection")),process.exit(1))})})}async function uo(o,e){let s=e.to;s||(console.error(r("errors.recipient_required")),process.exit(1));let n=e.file;(!n||n.length===0)&&(console.error(r("errors.file_required")),process.exit(1));let i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1));try{let t=await i.resolveRecipientInteractive(s,te(s)?void 0:p=>p.length>1?-1:0);if(!te(s)){let p=await i.searchContacts(s,10),u=await i.searchGroups(s,10),d=[...p.map(g=>({uid:g.uid,name:g.trueName||g.name||g.email||g.uid,type:"user"})),...u.map(g=>({uid:g.uid,name:g.name||g.trueName||g.email||g.uid,type:"group"}))],f=d.filter(g=>g.name===s);if(f.length===1){let g=f[0];t=await i.resolveRecipient(g.uid)}else if(d.length>1){let g=await Na(d),h=d[g];t=await i.resolveRecipient(h.uid)}}console.log(""),console.log(r("messages.sending_files_to",{count:n.length,name:t.name,type:t.type})),console.log("");let c=await import("fs");for(let p=0;p<n.length;p++){let u=n[p],d="N/A";try{let f=c.statSync(u);d=Se(f.size)}catch{d=r("messages.file_not_found")}console.log(` ${p+1}. ${u} (${d})`)}console.log("");let l=await i.sendFile(t,n,{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(` ${r("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(` ${r("labels.to")}: ${t.name}`),console.log(` ${r("labels.type")}: ${t.type}`),console.log(` ${r("labels.mid")}: ${l.mid}`),console.log(` ${r("labels.files")}: ${l.files.length}`),console.log("")}catch(t){let c=t instanceof Error?t.message:String(t);console.error(r("api.send_failed",{code:c})),process.exit(1)}}D();j();async function mo(o,e){let s=e["file-id"];s||(console.error(r("errors.file_id_required")),process.exit(1));let n=e.uid;n||(console.error(r("errors.uid_required")),process.exit(1));let i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(r("messages.downloading_file")),console.log("");try{let t=await i.downloadFile(s,n,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(` ${r("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(` ${r("labels.name")}: ${t.fileName}`),console.log(` ${r("labels.size")}: ${Se(t.fileSize)}`),console.log(` ${r("labels.path")}: ${t.filePath}`),console.log("")}catch(t){let c=t instanceof Error?t.message:String(t);console.error(`${r("api.download_failed")}
10
+ `),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=so.createInterface({input:process.stdin,output:process.stdout});i.question("",a=>{i.close(),s(a.trim())})}else{let i=so.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 m=d instanceof Error?d.message:String(d);console.warn(r("login.token_login_failed_warn",{error:m})),console.log(r("login.session_saved_without_token"));let g={accountId:n,email:n,enabled:!0,session:p.session},h=c.accounts?.findIndex(f=>f.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:H()})}`),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 io(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:H()})}`)}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();de();_e();j();var ee=12;async function ao(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")+":",ee)} ${n.email||n.accountId}`),console.log(` ${I(r("agent.list_role")+":",ee)} ${a}`),console.log(` ${I(r("labels.bot")+":",ee)} ${z(s)}`),console.log(` ${I("UID:",ee)} ${i?.selfUid||"N/A"}`),console.log(` ${I(r("labels.mode")+":",ee)} ${n.enabled?r("messages.mode_persistent"):r("messages.mode_temporary")}`),console.log(` ${I(r("labels.server")+":",ee)} ${i?.baseUrl||"N/A"}`),n.agentId&&console.log(` ${I(r("agent.list_agent_id")+":",ee)} ${n.agentId}`),i?.senderName&&console.log(` ${I(r("labels.name")+":",ee)} ${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")+":",ee)} ${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")+":",ee)} ${l}`)}}}catch(t){console.log(` ${I(r("agent.list_session")+":",ee)} \u2717 ${r("api.send_failed",{code:t instanceof Error?t.message:"unknown"})}`)}console.log("")}console.log(` ${I(r("labels.config")+":",ee)} ${H()}`),console.log("")}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_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 ro(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 Ga(o,e){return e?o.filter(s=>s.senderUid===e):o}async function co(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=Ga(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,`
11
+ \u2502 `)}`)}if(l.attachments&&l.attachments.length>0){console.log(` \u2502 ${r("labels.attachments")}:`);for(let u of l.attachments){let d=u.file_size?Se(u.file_size):"",m=u.file_id||"",g=u.uid||"";console.log(` \u2502 - ${u.title||r("labels.unnamed")} ${d}`),m&&console.log(` \u2502 file_id: ${m}`),g&&console.log(` \u2502 uid: ${g}`)}}console.log(` \u2514\u2500 MID: ${l.mid}`),console.log("")}}catch(t){let c=t instanceof Error?t.message:String(t);console.error(r("api.list_failed",{error:c})),process.exit(1)}}D();j();import*as po from"readline";function Na(o){return new Promise(e=>{console.log(r("messages.multiple_matches")),console.log("");for(let n=0;n<o.length;n++)console.log(` ${n+1}. ${o[n].name} (${o[n].uid})`);console.log("");let s=po.createInterface({input:process.stdin,output:process.stdout});s.question(r("messages.enter_number",{max:o.length}),n=>{s.close();let i=parseInt(n.trim(),10);i>=1&&i<=o.length?e(i-1):(console.error(r("errors.invalid_selection")),process.exit(1))})})}async function uo(o,e){let s=e.to;s||(console.error(r("errors.recipient_required")),process.exit(1));let n=T();await n.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1));try{let a=await n.resolveRecipientInteractive(s,re(s)?void 0:t=>t.length>1?-1:0);if(!re(s)){let t=await n.searchContacts(s,10),c=await n.searchGroups(s,10),l=[...t.map(u=>({uid:u.uid,name:u.trueName||u.name||u.email||u.uid,type:"user"})),...c.map(u=>({uid:u.uid,name:u.name||u.trueName||u.email||u.uid,type:"group"}))],p=l.filter(u=>u.name===s);if(p.length===1){let u=p[0],d=await n.resolveRecipient(u.uid);console.log(""),console.log(r("messages.sending_to",{name:d.name,type:d.type})),console.log(""),await lo(n,d.uid,e.message);return}if(l.length>1){let u=await Na(l),d=l[u],m=await n.resolveRecipient(d.uid);console.log(""),console.log(r("messages.sending_to",{name:m.name,type:m.type})),console.log(""),await lo(n,m.uid,e.message);return}}console.log(""),console.log(r("messages.sending_to",{name:a.name,type:a.type})),console.log(""),await lo(n,a.uid,e.message)}catch(a){let t=a instanceof Error?a.message:String(a);console.error(r("api.send_failed",{code:t})),process.exit(1)}}async function lo(o,e,s){let n=s;if(!n&&!process.stdin.isTTY){let t=[];for await(let c of process.stdin)t.push(c);n=Buffer.concat(t).toString("utf-8").trim()}n||(n=await new Promise(t=>{let c=po.createInterface({input:process.stdin,output:process.stdout});c.question(r("labels.message")+"\uFF1A",l=>{c.close(),t(l.trim())})})),n||(console.error(r("errors.message_required")),process.exit(1));let i=await o.resolveRecipient(e),a=await o.sendMessage(i,n);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.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(` ${r("labels.to")}: ${i.name}`),console.log(` ${r("labels.type")}: ${i.type}`),console.log(` ${r("labels.mid")}: ${a.mid}`),console.log("")}D();j();import*as ei from"readline";function Ma(o){return new Promise(e=>{console.log(r("messages.multiple_matches")),console.log("");for(let n=0;n<o.length;n++)console.log(` ${n+1}. ${o[n].name} (${o[n].uid})`);console.log("");let s=ei.createInterface({input:process.stdin,output:process.stdout});s.question(r("messages.enter_number",{max:o.length}),n=>{s.close();let i=parseInt(n.trim(),10);i>=1&&i<=o.length?e(i-1):(console.error(r("errors.invalid_selection")),process.exit(1))})})}async function mo(o,e){let s=e.to;s||(console.error(r("errors.recipient_required")),process.exit(1));let n=e.file;(!n||n.length===0)&&(console.error(r("errors.file_required")),process.exit(1));let i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1));try{let t=await i.resolveRecipientInteractive(s,re(s)?void 0:p=>p.length>1?-1:0);if(!re(s)){let p=await i.searchContacts(s,10),u=await i.searchGroups(s,10),d=[...p.map(g=>({uid:g.uid,name:g.trueName||g.name||g.email||g.uid,type:"user"})),...u.map(g=>({uid:g.uid,name:g.name||g.trueName||g.email||g.uid,type:"group"}))],m=d.filter(g=>g.name===s);if(m.length===1){let g=m[0];t=await i.resolveRecipient(g.uid)}else if(d.length>1){let g=await Ma(d),h=d[g];t=await i.resolveRecipient(h.uid)}}console.log(""),console.log(r("messages.sending_files_to",{count:n.length,name:t.name,type:t.type})),console.log("");let c=await import("fs");for(let p=0;p<n.length;p++){let u=n[p],d="N/A";try{let m=c.statSync(u);d=Se(m.size)}catch{d=r("messages.file_not_found")}console.log(` ${p+1}. ${u} (${d})`)}console.log("");let l=await i.sendFile(t,n,{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(` ${r("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(` ${r("labels.to")}: ${t.name}`),console.log(` ${r("labels.type")}: ${t.type}`),console.log(` ${r("labels.mid")}: ${l.mid}`),console.log(` ${r("labels.files")}: ${l.files.length}`),console.log("")}catch(t){let c=t instanceof Error?t.message:String(t);console.error(r("api.send_failed",{code:c})),process.exit(1)}}D();j();async function fo(o,e){let s=e["file-id"];s||(console.error(r("errors.file_id_required")),process.exit(1));let n=e.uid;n||(console.error(r("errors.uid_required")),process.exit(1));let i=T();await i.checkSession()||(console.error(r("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(r("messages.downloading_file")),console.log("");try{let t=await i.downloadFile(s,n,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(` ${r("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(` ${r("labels.name")}: ${t.fileName}`),console.log(` ${r("labels.size")}: ${Se(t.fileSize)}`),console.log(` ${r("labels.path")}: ${t.filePath}`),console.log("")}catch(t){let c=t instanceof Error?t.message:String(t);console.error(`${r("api.download_failed")}
11
12
 
12
- ${c}`),process.exit(1)}}D();j();async function fo(o,e){let s=T();await s.checkSession()||(console.error(r("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(r("messages.connecting_websocket")),console.log(r("messages.press_ctrlc")),console.log("");let i=s.createSocketClient({onConnect:()=>{console.log(`[${Q(Date.now())}] Connected to Lunkr`)},onDisconnect:()=>{console.log(`[${Q(Date.now())}] Disconnected from Lunkr`)},onReady:()=>{console.log(`[${Q(Date.now())}] Ready to receive messages`),console.log("")},onMessage:t=>{if(e.raw){console.log(`[${Q(Date.now())}] RAW:`),console.log(JSON.stringify(t,null,2)),console.log("");return}if(!t||typeof t!="object"){console.log(`[${Q(Date.now())}] Unknown message:`,t);return}let c=t,l=c.topic||"",p=c.payload||"",u;try{u=JSON.parse(p)}catch{console.log(`[${Q(Date.now())}] Non-JSON payload on topic: ${l}`);return}if(!u.mid&&!u.subject)return;let d=u.mid||"",f=u.from||{},g=u.to||{},h=f.uid||"",m=f.true_name||f.email||h,x=g.true_name||g.email||"",v=u.subject||"";try{v=decodeURIComponent(v.replace(/\+/g," "))}catch{}let k=u.type||u.group_type||"p2p",b=u.uid||g.uid||"",_=u.time||"";console.log(`[${Q(Date.now())}] Message from ${m}:`),console.log(` ID: ${d}`),console.log(` From: ${m} (${h})`),k!=="p2p"&&x?(console.log(` To: ${x} (${b})`),console.log(` Type: ${k}`)):console.log(` Type: ${k}`),_&&console.log(` Time: ${_}`),console.log(` Text: ${v.substring(0,200)}${v.length>200?"...":""}`),console.log("")},onError:t=>{console.error(`[${Q(Date.now())}] Error: ${t.message}`)}});await i.connect()||(console.error(r("api.socket_connect_failed",{accountId:"N/A"})),process.exit(1)),process.on("SIGINT",()=>{console.log(""),console.log(r("messages.disconnecting")),i.disconnect(),process.exit(0)}),await new Promise(()=>{})}D();j();async function Ma(o,e,s,n){let i=`\u{1F916} ${r("create.welcome_title")}
13
+ ${c}`),process.exit(1)}}D();j();async function go(o,e){let s=T();await s.checkSession()||(console.error(r("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(r("messages.connecting_websocket")),console.log(r("messages.press_ctrlc")),console.log("");let i=s.createSocketClient({onConnect:()=>{console.log(`[${X(Date.now())}] Connected to Lunkr`)},onDisconnect:()=>{console.log(`[${X(Date.now())}] Disconnected from Lunkr`)},onReady:()=>{console.log(`[${X(Date.now())}] Ready to receive messages`),console.log("")},onMessage:t=>{if(e.raw){console.log(`[${X(Date.now())}] RAW:`),console.log(JSON.stringify(t,null,2)),console.log("");return}if(!t||typeof t!="object"){console.log(`[${X(Date.now())}] Unknown message:`,t);return}let c=t,l=c.topic||"",p=c.payload||"",u;try{u=JSON.parse(p)}catch{console.log(`[${X(Date.now())}] Non-JSON payload on topic: ${l}`);return}if(!u.mid&&!u.subject)return;let d=u.mid||"",m=u.from||{},g=u.to||{},h=m.uid||"",f=m.true_name||m.email||h,x=g.true_name||g.email||"",v=u.subject||"";try{v=decodeURIComponent(v.replace(/\+/g," "))}catch{}let k=u.type||u.group_type||"p2p",b=u.uid||g.uid||"",_=u.time||"";console.log(`[${X(Date.now())}] Message from ${f}:`),console.log(` ID: ${d}`),console.log(` From: ${f} (${h})`),k!=="p2p"&&x?(console.log(` To: ${x} (${b})`),console.log(` Type: ${k}`)):console.log(` Type: ${k}`),_&&console.log(` Time: ${_}`),console.log(` Text: ${v.substring(0,200)}${v.length>200?"...":""}`),console.log("")},onError:t=>{console.error(`[${X(Date.now())}] Error: ${t.message}`)}});await i.connect()||(console.error(r("api.socket_connect_failed",{accountId:"N/A"})),process.exit(1)),process.on("SIGINT",()=>{console.log(""),console.log(r("messages.disconnecting")),i.disconnect(),process.exit(0)}),await new Promise(()=>{})}D();j();async function Ba(o,e,s,n){let i=`\u{1F916} ${r("create.welcome_title")}
13
14
 
14
15
  \u{1F4CB} ${r("create.discussion_name")}: ${n.name}
15
16
  \u{1F194} ${r("create.discussion_id")}: ${e}
@@ -19,15 +20,15 @@ ${n.agentId?`\u{1F916} ${r("create.linked_agent")}: ${n.agentId}
19
20
  \u2022 ${r("create.instruction_2")}
20
21
  \u2022 ${r("create.instruction_3")}
21
22
 
22
- \u2705 ${r("create.ready_to_chat")}`,a=`[@!${s}] ${i}`,t=await o.callApi({func:"cim.msg:reply",payload:{uid:e,content:a,type:"text"}});if(t.code!=="S_OK")throw new Error(r("api.welcome_failed",{code:String(t.code)}))}async function bn(o,e){let{name:s,agentId:n,force:i,welcome:a=!0}=e;if(!s||s.trim().length===0)throw new Error(r("errors.discussion_name_required"));let t=T();if(!await t.checkSession())throw new Error(r("errors.session_expired_login"));let l=`[Bot-${s.trim()}]`,p=z(),u;if(i){console.log(r("create.creating_discussion",{name:l}));try{u=(await t.createGroup(l)).uid,console.log(r("create.discussion_created",{gid:u}))}catch(b){let _=b instanceof Error?b.message:String(b);throw _.includes("\u5DF2\u5B58\u5728")||_.includes("exist")?new Error(r("create.discussion_exists",{name:l})):b}}else{let b=l.replace(/^\[|\]$/g,""),A=(await t.searchGroups(b,20)).find(y=>y.name===l||y.trueName===l);if(A)u=A.uid,console.log(r("create.reusing_discussion",{name:l})),console.log(` GID: ${u}`);else{console.log(r("create.creating_discussion",{name:l}));try{u=(await t.createGroup(l)).uid,console.log(r("create.discussion_created",{gid:u}))}catch(y){let S=y instanceof Error?y.message:String(y);throw S.includes("\u5DF2\u5B58\u5728")||S.includes("exist")?new Error(r("create.discussion_exists",{name:l})):y}}}if(a)try{await Ma(t,u,p,{name:s.trim(),agentId:n}),console.log(" \u2705 "+r("create.welcome_sent"))}catch(b){console.warn(" \u26A0\uFE0F "+r("create.welcome_failed",{error:b instanceof Error?b.message:String(b)}))}let f=await o.runtime.config.loadConfig(),g=f.channels||{},h=g["lunkr-openclaw"]||{},m=t.getSelfUid(),x={name:s.trim(),agentId:n,creatorUid:m,createdAt:Date.now()},v=h.botDiscussions||{};v[u]=x;let k={...f,channels:{...g,"lunkr-openclaw":{...h,botDiscussions:v}}};await o.runtime.config.writeConfigFile(k),console.log(""),console.log(r("messages.bot_discussion_configured",{name:l})),console.log(` GID: ${u}`),n&&console.log(` ${r("create.linked_agent")}: ${n}`),console.log(""),console.log(r("create.can_chat_now")),console.log(r("create.change_agent_hint")),console.log(""),console.log(r("create.config_auto_reload"))}var ni={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}]};j();async function kn(o,e){let t=(((await o.runtime.config.loadConfig()).channels||{})["lunkr-openclaw"]||{}).botDiscussions||{};if(e.json){console.log(JSON.stringify(t,null,2));return}let c=Object.entries(t);if(c.length===0){console.log(r("messages.no_bot_discussions"));return}console.log(`${r("bot_list.title",{count:c.length})}
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",`
23
+ \u2705 ${r("create.ready_to_chat")}`,a=`[@!${s}] ${i}`,t=await o.callApi({func:"cim.msg:reply",payload:{uid:e,content:a,type:"text"}});if(t.code!=="S_OK")throw new Error(r("api.welcome_failed",{code:String(t.code)}))}async function kn(o,e){let{name:s,agentId:n,force:i,welcome:a=!0}=e;if(!s||s.trim().length===0)throw new Error(r("errors.discussion_name_required"));let t=T();if(!await t.checkSession())throw new Error(r("errors.session_expired_login"));let l=`[Bot-${s.trim()}]`,p=z(),u;if(i){console.log(r("create.creating_discussion",{name:l}));try{u=(await t.createGroup(l)).uid,console.log(r("create.discussion_created",{gid:u}))}catch(b){let _=b instanceof Error?b.message:String(b);throw _.includes("\u5DF2\u5B58\u5728")||_.includes("exist")?new Error(r("create.discussion_exists",{name:l})):b}}else{let b=l.replace(/^\[|\]$/g,""),L=(await t.searchGroups(b,20)).find(y=>y.name===l||y.trueName===l);if(L)u=L.uid,console.log(r("create.reusing_discussion",{name:l})),console.log(` GID: ${u}`);else{console.log(r("create.creating_discussion",{name:l}));try{u=(await t.createGroup(l)).uid,console.log(r("create.discussion_created",{gid:u}))}catch(y){let S=y instanceof Error?y.message:String(y);throw S.includes("\u5DF2\u5B58\u5728")||S.includes("exist")?new Error(r("create.discussion_exists",{name:l})):y}}}if(a)try{await Ba(t,u,p,{name:s.trim(),agentId:n}),console.log(" \u2705 "+r("create.welcome_sent"))}catch(b){console.warn(" \u26A0\uFE0F "+r("create.welcome_failed",{error:b instanceof Error?b.message:String(b)}))}let m=await o.runtime.config.loadConfig(),g=m.channels||{},h=g["lunkr-openclaw"]||{},f=t.getSelfUid(),x={name:s.trim(),agentId:n,creatorUid:f,createdAt:Date.now()},v=h.botDiscussions||{};v[u]=x;let k={...m,channels:{...g,"lunkr-openclaw":{...h,botDiscussions:v}}};await o.runtime.config.writeConfigFile(k),console.log(""),console.log(r("messages.bot_discussion_configured",{name:l})),console.log(` GID: ${u}`),n&&console.log(` ${r("create.linked_agent")}: ${n}`),console.log(""),console.log(r("create.can_chat_now")),console.log(r("create.change_agent_hint")),console.log(""),console.log(r("create.config_auto_reload"))}var ni={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}]};j();async function yn(o,e){let t=(((await o.runtime.config.loadConfig()).channels||{})["lunkr-openclaw"]||{}).botDiscussions||{};if(e.json){console.log(JSON.stringify(t,null,2));return}let c=Object.entries(t);if(c.length===0){console.log(r("messages.no_bot_discussions"));return}console.log(`${r("bot_list.title",{count:c.length})}
24
+ `);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 wn(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,m;if(n)d=n,m=u[n];else if(s){for(let[f,x]of Object.entries(u))if(x.name===s.trim()){d=f,m=x;break}}if(!d||!m){console.log(r("bot_delete.not_found"));return}if(console.log(""),console.log(r("bot_delete.found",{name:m.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:m.name}));try{await i.deleteGroup(d),console.log(" "+r("bot_delete.deleted_from_server"))}catch(f){console.warn(" \u26A0\uFE0F "+r("bot_delete.delete_from_server_failed",{error:f instanceof Error?f.message:String(f)}))}}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:m.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 xo}from"os";import{join as ho}from"path";import{existsSync as ti,rmSync as ri}from"fs";async function vo(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 m=p.entries||{};m[n]?(delete m[n],p.entries=m,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||[],f=h.filter(y=>y!==i);f.length<h.length?(g.alsoAllow=f,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 L=c.channels||{};L[n]?(delete L[n],c.channels=L,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=ho(xo(),".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=ho(xo(),".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:ho(xo(),".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 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.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 ko(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 yo(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]||{},m=p.load||{},g=m.extraDirs||[],h=ci.join(ci.dirname(o.source),"skills"),f=l.enabled===!0&&d.enabled===!0,x=g.includes(h);if(f&&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:{...m,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 wo(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),m={...i,skills:{...a,load:{...l,extraDirs:d.length>0?d:void 0},entries:{...t,[s]:{...c,enabled:!1}}}};d.length===0&&delete m.skills.load,await o.runtime.config.writeConfigFile(m),console.log(r("skills.uninstall_success",{name:s})),console.log(r("skills.restart_session"))}de();Oe();bn();j();import pi from"node:path";import*as di from"readline";function za(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 Ka(o,e=" "){for(let s of o.split(`
25
+ `))console.log(s?e+s:"")}async function Co(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"),Ka(r("setup.disclaimer")),console.log(""),!await za(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]||{},f=t.skills||{},x=f.entries||{},v=x[i]||{},k=f.load||{},b=k.extraDirs||[],_=pi.join(pi.dirname(o.source),"skills"),L=h.enabled===!0,y=v.enabled===!0,S=b.includes(_);if(L&&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={...f,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 So(o,e){let s=e.trim()||"Bot",n=z(),i=qn(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 _o(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(()=>(bn(),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 Ao(o,e){let s=R(),n=Ee(s),i=ue(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 Lo(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}Fn(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 Ro(o,e){let s=R();if(e.self){let i=ue(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 A}from"@sinclair/typebox";Oe();de();j();function mi(){return R()}function J(o){return{success:!0,data:o}}function G(o){return{success:!1,error:o}}async function le(){try{let o=T();return await o.checkSession()?{api:o}:{error:G(r("errors.session_expired_login"))}}catch(o){return{error:G(o instanceof Error?o.message:String(o))}}}async function jo(o){let e=await le();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 J({to:i.to,type:i.type,mid:i.mid})}catch(n){return G(n instanceof Error?n.message:String(n))}}async function Io(o){let e=await le();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchGroups(o.keyword,o.limit||10);return J({groups:n.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(n){return G(n instanceof Error?n.message:String(n))}}async function Uo(o){let e=await le();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchContacts(o.keyword,o.limit||10);return J({contacts:n.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(n){return G(n instanceof Error?n.message:String(n))}}async function fi(o){let e=await le();return"error"in e?e.error:G("getGroupInfo not yet implemented")}async function gi(o){let e=await le();return"error"in e?e.error:G("getUserInfo not yet implemented")}async function xi(o){let e=await le();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 J({file_name:n.fileName,file_size:n.fileSize,saved_to:n.filePath})}catch(n){return G(n instanceof Error?n.message:String(n))}}async function hi(o){let e=await le();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.convertAudio(o.input_path,o.output_format);return J({converted_file:n.filePath,format:n.format})}catch(n){return G(n instanceof Error?n.message:String(n))}}async function vi(o){let e=await le();return"error"in e?e.error:G("getMessage not yet implemented")}async function Po(o){let e=await le();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 J({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 G(n instanceof Error?n.message:String(n))}}async function bi(o){let e=await le();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 J({to:i.to,mid:i.mid,files:i.files})}catch(n){return G(n instanceof Error?n.message:String(n))}}function se(o){return{content:[{type:"text",text:JSON.stringify(o,null,2)}],details:o}}var Ja=A.Object({to:A.String({description:"Recipient: user ID, group ID, email, or group email (t..xxx@coremail.cn)"}),content:A.String({description:"Message content to send"}),type:A.Optional(A.Union([A.Literal("text"),A.Literal("markdown")],{description:"Message type (default: text)"}))}),Wa=A.Object({keyword:A.String({description:"Search keyword for group name"}),limit:A.Optional(A.Number({description:"Max results (default: 10)"}))}),Ha=A.Object({keyword:A.String({description:"Search keyword for contact name or email"}),limit:A.Optional(A.Number({description:"Max results (default: 10)"}))}),Qa=A.Object({group_id:A.String({description:"Group ID (e.g., #26783249#T)"})}),Xa=A.Object({user_id:A.String({description:"User ID (e.g., #835#U) or email"})}),Ya=A.Object({to:A.String({description:"Recipient: user ID, group ID, email, or name (auto-resolved)"}),file_paths:A.Array(A.String(),{description:"Array of absolute file paths to send"}),message:A.Optional(A.String({description:"Optional text message to accompany the files"}))}),Za=A.Object({file_id:A.String({description:"File ID from message"}),uid:A.String({description:"File storage UID (from attachment, e.g., #833#F)"}),save_path:A.Optional(A.String({description:"Path to save file (default: temp directory)"})),file_name:A.String({description:"Filename (REQUIRED: get from message attachment.title to ensure correct Chinese encoding)"})}),et=A.Object({input_path:A.String({description:"Path to the audio file (e.g., downloaded .ilbc file)"}),output_format:A.Optional(A.String({description:"Target format: wav (default), mp3, ogg, etc."}))}),nt=A.Object({message_id:A.String({description:"Message ID to retrieve"})}),ot=A.Object({to:A.String({description:"Recipient: user ID, group ID, or email to list messages from"}),limit:A.Optional(A.Number({description:"Max messages to retrieve (default: 20)"}))}),st=A.Object({command:A.String({description:"Raw command arguments"}),commandName:A.String({description:"Slash command name (e.g., /lunkr-send)"}),skillName:A.String({description:"Skill name"})});function it(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 G("Usage: /lunkr send <to> <message>");let a=n[1],t=n.slice(2).join(" ");return J({action:"send",to:a,content:t})}case"search-groups":case"sg":{if(n.length<2)return G("Usage: /lunkr search-groups <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return J({action:"searchGroups",keyword:a,limit:t})}case"search-contacts":case"sc":{if(n.length<2)return G("Usage: /lunkr search-contacts <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return J({action:"searchContacts",keyword:a,limit:t})}case"list-messages":case"lm":case"msgs":{if(n.length<2)return G("Usage: /lunkr list-messages <to> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):20;return J({action:"listMessages",to:a,limit:t})}case"help":case void 0:return J({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 G(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function at(o){if(!o.success||!o.data)return o;let e=o.data;switch(e.action){case"send":return jo({to:e.to,content:e.content});case"searchGroups":return Io({keyword:e.keyword,limit:e.limit});case"searchContacts":return Uo({keyword:e.keyword,limit:e.limit});case"listMessages":return Po({to:e.to,limit:e.limit});default:return G(`Unknown action: ${e.action}`)}}function ki(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:Ja,async execute(n,i){let a=await jo(i);return se(a)}},{name:"lunkr_send_message"}),o.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:Wa,async execute(n,i){let a=await Io(i);return se(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:Ha,async execute(n,i){let a=await Uo(i);return se(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:Qa,async execute(n,i){let a=await fi(i);return se(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:Xa,async execute(n,i){let a=await gi(i);return se(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:Ya,async execute(n,i){let a=await bi(i);return se(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. 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:Za,async execute(n,i){let a=await xi(i);return se(a)}},{name:"lunkr_download_file"}),o.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:nt,async execute(n,i){let a=await vi(i);return se(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:ot,async execute(n,i){let a=await Po(i);return se(a)}},{name:"lunkr_list_messages"}),o.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:et,async execute(n,i){let a=await hi(i);return se(a)}},{name:"lunkr_convert_audio"}),o.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:st,async execute(n,i){let a=it(i),t=await at(a);return se(t)}},{name:"lunkr_command"}),o.logger?.debug?.("lunkr: Registered 11 Lunkr tools (10 API tools + 1 command dispatcher)")}var tt={type:"object",properties:{}},rt={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:tt,register(o){let e={channel:{lunkr:{resolveAccount:async s=>{let n=await o.runtime.config.loadConfig();return Q(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[m,g]=d.split("=",2);a[m.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),"registrationMode"in o?o.registerChannel({plugin:vn}):o.registerChannel(vn),ki(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",`
25
26
  Account types:
26
27
  Standard account Main account, triggers via /bot prefix & Bot Discussions
27
28
  Agent account Independent account, triggers on @mention & DM only
28
29
  Use "agent-bind --self" to add agent role to the standard account
29
30
 
30
- See docs/CONCEPTS.md for details.`),i=async a=>{try{await a()}catch(t){n.opts().verbose||process.env.LUNKR_VERBOSE==="1"?console.error(t):console.error(t instanceof Error?t.message:String(t)),process.exitCode=1}};n.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 wo(o,{skipLogin:a.skipLogin})})}),n.command("rename <name>").description("Rename the bot").action(async a=>{await i(async()=>{await Co(o,a)})}),n.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 $e(o,{verbose:n.opts().verbose,debug:a.debug,force:a.force})})}),n.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 Qe(o,{email:a.email,password:a.password,temp:a.temp,verbose:n.opts().verbose,debug:a.debug})})}),n.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 so(o,{email:a.email,all:a.all})})}),n.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,t)=>{if(!a){console.error(r("errors.name_required")),process.exitCode=1;return}await i(async()=>{await bn(o,{name:a,agentId:t.agentId,force:t.force,welcome:t.welcome})})}),n.command("bot-list").description("List all configured bot discussions").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await kn(o,{json:a.json})})}),n.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,t)=>{await i(async()=>{await yn(o,{name:a||t.name,gid:t.gid})})}),n.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 ho(o,{purge:a.purge})})}),n.command("tool-install [name]").description("Install a tool (add to tools.alsoAllow)").action(async a=>{await i(async()=>{await vo(o,{name:a||void 0})})}),n.command("tool-uninstall [name]").description("Uninstall a tool (remove from tools.alsoAllow)").action(async a=>{await i(async()=>{await bo(o,{name:a||void 0})})}),n.command("skill-install [name]").description("Install a skill (enable in skills.entries)").action(async a=>{await i(async()=>{await ko(o,{name:a||void 0})})}),n.command("skill-uninstall [name]").description("Uninstall a skill (disable in skills.entries)").action(async a=>{await i(async()=>{await yo(o,{name:a||void 0})})}),n.command("status").description("Show login status").action(async()=>{await i(async()=>{await io(o,{verbose:n.opts().verbose})})}),n.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 ao(o,{keyword:a.keyword,limit:a.limit})})}),n.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 to(o,{keyword:a.keyword,limit:a.limit})})}),n.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 ro(o,{to:a.to,limit:a.limit,sender:a.sender})})}),n.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 po(o,{to:a.to,message:a.message})})}),n.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 uo(o,{to:a.to,file:a.file,message:a.message})})}),n.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 mo(o,{"file-id":a.fileId,uid:a.uid,output:a.output})})}),n.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 So(o,{agentId:a.agentId,bypwd:a.bypwd,email:a.email,password:a.password,verbose:n.opts().verbose,debug:!1})})}),n.command("agent-list").description("List all agent accounts and their status").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await _o(o,{json:a.json})})}),n.command("agent-remove <email>").description("Remove an agent account").action(async a=>{await i(async()=>{await Ao(o,{email:a})})}),n.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,t)=>{await i(async()=>{await Lo(o,{email:a,agentId:t.agentId,self:t.self})})}),n.command("listen").description("Listen for real-time messages").option("-r, --raw","Show raw message data").action(async a=>{await i(async()=>{await fo(o,{raw:a.raw})})})},{commands:["lunkr"]})}},Gu=at;export{yn as botDeleteCommand,ai as botDeleteCommandMeta,kn as botListCommand,oi as botListCommandMeta,Qn as channelPlugin,bn as createCommand,ni as createCommandMeta,Gu as default};
31
+ See docs/CONCEPTS.md for details.`),i=async a=>{try{await a()}catch(t){n.opts().verbose||process.env.LUNKR_VERBOSE==="1"?console.error(t):console.error(t instanceof Error?t.message:String(t)),process.exitCode=1}};n.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 Co(o,{skipLogin:a.skipLogin})})}),n.command("rename <name>").description("Rename the bot").action(async a=>{await i(async()=>{await So(o,a)})}),n.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 $e(o,{verbose:n.opts().verbose,debug:a.debug,force:a.force})})}),n.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 Qe(o,{email:a.email,password:a.password,temp:a.temp,verbose:n.opts().verbose,debug:a.debug})})}),n.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 io(o,{email:a.email,all:a.all})})}),n.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,t)=>{if(!a){console.error(r("errors.name_required")),process.exitCode=1;return}await i(async()=>{await kn(o,{name:a,agentId:t.agentId,force:t.force,welcome:t.welcome})})}),n.command("bot-list").description("List all configured bot discussions").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await yn(o,{json:a.json})})}),n.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,t)=>{await i(async()=>{await wn(o,{name:a||t.name,gid:t.gid})})}),n.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 vo(o,{purge:a.purge})})}),n.command("tool-install [name]").description("Install a tool (add to tools.alsoAllow)").action(async a=>{await i(async()=>{await bo(o,{name:a||void 0})})}),n.command("tool-uninstall [name]").description("Uninstall a tool (remove from tools.alsoAllow)").action(async a=>{await i(async()=>{await ko(o,{name:a||void 0})})}),n.command("skill-install [name]").description("Install a skill (enable in skills.entries)").action(async a=>{await i(async()=>{await yo(o,{name:a||void 0})})}),n.command("skill-uninstall [name]").description("Uninstall a skill (disable in skills.entries)").action(async a=>{await i(async()=>{await wo(o,{name:a||void 0})})}),n.command("status").description("Show login status").action(async()=>{await i(async()=>{await ao(o,{verbose:n.opts().verbose})})}),n.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 to(o,{keyword:a.keyword,limit:a.limit})})}),n.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 ro(o,{keyword:a.keyword,limit:a.limit})})}),n.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 co(o,{to:a.to,limit:a.limit,sender:a.sender})})}),n.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 uo(o,{to:a.to,message:a.message})})}),n.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 mo(o,{to:a.to,file:a.file,message:a.message})})}),n.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 fo(o,{"file-id":a.fileId,uid:a.uid,output:a.output})})}),n.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 _o(o,{agentId:a.agentId,bypwd:a.bypwd,email:a.email,password:a.password,verbose:n.opts().verbose,debug:!1})})}),n.command("agent-list").description("List all agent accounts and their status").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await Ao(o,{json:a.json})})}),n.command("agent-remove <email>").description("Remove an agent account").action(async a=>{await i(async()=>{await Lo(o,{email:a})})}),n.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,t)=>{await i(async()=>{await Ro(o,{email:a,agentId:t.agentId,self:t.self})})}),n.command("listen").description("Listen for real-time messages").option("-r, --raw","Show raw message data").action(async a=>{await i(async()=>{await go(o,{raw:a.raw})})})},{commands:["lunkr"]})}},Mu=rt;export{wn as botDeleteCommand,ai as botDeleteCommandMeta,yn as botListCommand,oi as botListCommandMeta,vn as channelPlugin,kn as createCommand,ni as createCommandMeta,Mu as default};
31
32
  /*! Bundled license information:
32
33
 
33
34
  mime-db/index.js: