@coremail/lunkr-openclaw 1.0.4 → 1.0.5

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,28 +1,28 @@
1
- var Fs=Object.create;var no=Object.defineProperty;var Ts=Object.getOwnPropertyDescriptor;var Ds=Object.getOwnPropertyNames;var Es=Object.getPrototypeOf,Gs=Object.prototype.hasOwnProperty;var Ns=(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 Pe=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports);var Ms=(o,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ds(e))!Gs.call(o,i)&&i!==s&&no(o,i,{get:()=>e[i],enumerable:!(n=Ts(e,i))||n.enumerable});return o};var oo=(o,e,s)=>(s=o!=null?Fs(Es(o)):{},Ms(e||!o||!o.__esModule?no(s,"default",{value:o,enumerable:!0}):s,o));var ko=Pe((Ta,oi)=>{oi.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 wo=Pe((Da,yo)=>{yo.exports=ko()});var Ro=Pe((Ea,Ao)=>{var Co={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},So={nginx:10,apache:20,iana:40,default:30},Lo={application:1,font:2,audio:2,video:3,default:0};Ao.exports=function(e,s="default"){if(e==="application/octet-stream")return 0;let[n,i]=e.split("/"),a=i.replace(/(\.|x-).*/,"$1"),t=Co[a]||Co.default,r=So[s]||So.default,c=Lo[n]||Lo.default,l=1-e.length/100;return t+r+c+l}});var ln=Pe($=>{"use strict";var ce=wo(),si=Ns("path").extname,jo=Ro(),Uo=/^\s*([^;\s]*)(?:;|\s|$)/,ii=/^text\//i;$.charset=_o;$.charsets={lookup:_o};$.contentType=ai;$.extension=cn;$.extensions=Object.create(null);$.lookup=ti;$.types=Object.create(null);$._extensionConflicts=[];ri($.extensions,$.types);function _o(o){if(!o||typeof o!="string")return!1;var e=Uo.exec(o),s=e&&ce[e[1].toLowerCase()];return s&&s.charset?s.charset:e&&ii.test(e[1])?"UTF-8":!1}function ai(o){if(!o||typeof o!="string")return!1;var e=o.indexOf("/")===-1?$.lookup(o):o;if(!e)return!1;if(e.indexOf("charset")===-1){var s=$.charset(e);s&&(e+="; charset="+s.toLowerCase())}return e}function cn(o){if(!o||typeof o!="string")return!1;var e=Uo.exec(o),s=e&&$.extensions[e[1].toLowerCase()];return!s||!s.length?!1:s[0]}function ti(o){if(!o||typeof o!="string")return!1;var e=si("x."+o).toLowerCase().slice(1);return e&&$.types[e]||!1}function ri(o,e){Object.keys(ce).forEach(function(n){var i=ce[n],a=i.extensions;if(!(!a||!a.length)){o[n]=a;for(var t=0;t<a.length;t++){var r=a[t];e[r]=ci(r,e[r],n);let c=li(r,e[r],n);c!==e[r]&&$._extensionConflicts.push([r,c,e[r]])}}})}function ci(o,e,s){var n=e?jo(e,ce[e].source):0,i=s?jo(s,ce[s].source):0;return n>i?e:s}function li(o,e,s){var n=["nginx","apache",void 0,"iana"],i=e?n.indexOf(ce[e].source):0,a=s?n.indexOf(ce[s].source):0;return $.types[cn]!=="application/octet-stream"&&(i>a||i===a&&$.types[cn]?.slice(0,12)==="application/")||i>a?e:s}});function so(o){return{}}function io(o){return{accountId:o.accountId}}function ao(o){return{}}import{Type as y}from"@sinclair/typebox";import{Value as La}from"@sinclair/typebox/value";var zs=y.Object({name:y.String({minLength:1,description:"Discussion name is required"}),agentId:y.Optional(y.String()),creatorUid:y.String({minLength:1,description:"Creator UID is required"}),createdAt:y.Union([y.String(),y.Number()],{description:"Creation timestamp"})}),Bs=y.Union([y.Literal("allow"),y.Literal("deny"),y.Literal("whitelist")]),Ks=y.Union([y.Literal("allow"),y.Literal("deny"),y.Literal("whitelist")]),Ze=y.Object({enabled:y.Optional(y.Boolean({default:!0})),botName:y.Optional(y.String({minLength:1,default:"Bot"})),commandPrefix:y.Optional(y.String({minLength:1,default:"/"})),botDiscussions:y.Optional(y.Record(y.String(),zs)),dmPolicy:y.Optional(Bs),allowFrom:y.Optional(y.Array(y.String())),groupPolicy:y.Optional(Ks),groups:y.Optional(y.Array(y.String()))}),Vs=y.Object({email:y.String({minLength:1,description:"Email is required"}),password:y.String({minLength:1,description:"Password is required"}),deviceUuid:y.Optional(y.String()),deviceName:y.Optional(y.String())}),Js=y.Object({sid:y.String(),selfUid:y.String(),cookie:y.String(),baseUrl:y.String(),apiPath:y.String()}),Ws=y.Object({accountId:y.String({minLength:1,description:"Account ID is required"}),name:y.Optional(y.String()),enabled:y.Optional(y.Boolean({default:!0})),credentials:Vs,config:Ze,session:y.Optional(Js)}),Aa=y.Record(y.String(),Ws);var V="default";import*as Z from"fs";import*as tn from"path";import*as se from"os";import*as F from"crypto";import*as Oe from"os";var oe=class extends Error{constructor(e){super(e),this.name="EncryptionError"}},me=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||Oe.hostname(),n=this.username||Oe.userInfo().username;if(!e)throw new oe("device_uuid not set, cannot generate encryption key");let i=`lunkr-mcp-key-${e}-${s}-${n}`;this.key=F.createHash("sha256").update(i).digest()}return this.key}encrypt(e){if(!e)return"";let s=this.getKey(),n=F.randomBytes(12),i=F.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 oe("Ciphertext too short");let i=n.subarray(0,12),a=n.subarray(12,-16),t=n.subarray(-16),r=F.createDecipheriv("aes-256-gcm",s,i);r.setAuthTag(t);try{return Buffer.concat([r.update(a),r.final()]).toString("utf8")}catch{throw new oe("Decryption failed, config file may be corrupted or key changed")}}};function en(o){return o<128?Buffer.from([o]):o<256?Buffer.from([129,o]):Buffer.from([130,o>>8&255,o&255])}function to(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]),en(s.length),s])}function ro(o){return Buffer.concat([Buffer.from([48]),en(o.length),o])}function Hs(o){let e=Buffer.concat([Buffer.from([0]),o]);return Buffer.concat([Buffer.from([3]),en(e.length),e])}function co(o,e){let s=to(e),n=to(o),i=ro(Buffer.concat([s,n])),a=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return ro(Buffer.concat([a,Hs(i)]))}function nn(o,e,s){try{let n=co(e,s),i=F.createPublicKey({key:n,format:"der",type:"spki"});return F.publicEncrypt({key:i,padding:F.constants.RSA_PKCS1_PADDING},Buffer.from(o,"utf8")).toString("base64")}catch{return o}}function on(o,e){let s=Buffer.from(e,"base64"),n=F.createPublicKey({key:s,format:"der",type:"spki"});return F.publicEncrypt({key:n,padding:F.constants.RSA_PKCS1_PADDING},Buffer.from(o,"utf8")).toString("base64")}var lo=".lunkr",po="config.json",$e="Bot";function ke(){return tn.join(se.homedir(),lo)}function W(){return tn.join(ke(),po)}function uo(){let o=ke();Z.existsSync(o)||Z.mkdirSync(o,{recursive:!0})}function Qs(){let o=se.hostname(),e=se.platform(),s=se.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:mo(),device_os:n,device_model:i,device_name:o}}function mo(){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 an(){return{...Qs(),bot_name:$e,accounts:[]}}function fo(o){let e=new me;return e.setDeviceUuid(o.device_uuid),e.setDeviceName(o.device_name),e}function sn(o){if(!o)return!1;try{return Buffer.from(o,"base64").length>=28}catch{return!1}}function Xs(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 Ys(o,e){let s={...o};if(s.session){let n={...s.session};try{n.sid&&sn(n.sid)&&(n.sid=e.decrypt(n.sid))}catch{n.sid=""}try{n.cookie&&sn(n.cookie)&&(n.cookie=e.decrypt(n.cookie))}catch{n.cookie=""}s.session=n}try{s.apiToken&&sn(s.apiToken)&&(s.apiToken=e.decrypt(s.apiToken))}catch{s.apiToken=void 0}return s}function _(){let o=W();if(!Z.existsSync(o))return an();try{let e=Z.readFileSync(o,"utf-8"),s=JSON.parse(e);if(s.device_uuid||(s.device_uuid=mo()),s.bot_name||(s.bot_name=$e),s.accounts||(s.accounts=[]),s.accounts?.length){let n=fo(s);try{s.accounts=s.accounts.map(i=>Ys(i,n))}catch(i){i instanceof oe&&console.warn("Warning: Failed to decrypt config, values may be unencrypted or from different machine/user")}}return s}catch{return an()}}function T(o){uo();let e=W(),s={...o,accounts:o.accounts?.map(n=>{let i=fo(o);return Xs(n,i)})};Z.writeFileSync(e,JSON.stringify(s,null,2),"utf-8")}function qe(o){let e=o||_();return e.accounts?.length&&(e.accounts.find(n=>n.enabled&&n.session?.sid)||e.accounts.find(n=>n.session?.sid))||null}function rn(o){return(o||_()).bot_name||$e}function Zs(){return _().accounts||[]}function go(o){let e=Zs();if(o&&o!==V){let n=e.find(i=>i.accountId===o);return n?{accountId:n.accountId,name:n.name,enabled:n.enabled,session:n.session,config:n.config}:null}let s=e.find(n=>n.session);return s?{accountId:s.accountId,name:s.name,enabled:s.enabled,session:s.session,config:s.config}:null}function xo(o){return o.channels?.["lunkr-openclaw"]}function N(o,e){let s=xo(o),n=e??V,i=go(n);if(!i?.session||s?.enabled===!1)return null;let a=s?.enabled??!0,t=i.session;return{accountId:n,name:i.name??s?.botName,enabled:a,selfUid:i.session.selfUid,sid:i.session.sid,cookie:i.session.cookie,botName:s?.botName??"Bot",commandPrefix:s?.commandPrefix??"/bot",botDiscussions:s?.botDiscussions??{},senderName:t.senderName,config:s??{enabled:!0,botName:"Bot",commandPrefix:"/bot",botDiscussions:{},dmPolicy:"allow",allowFrom:[],groupPolicy:"allow",groups:[]},lunkrConfig:i.session}}function Fe(o,e){return{...o,sid:e.sid,cookie:e.cookie,selfUid:e.selfUid||o.selfUid,lunkrConfig:e}}var ho={listAccountIds:o=>go(V)?.session?[V]:[],resolveAccount:(o,e)=>N(o,e),defaultAccountId:()=>V,isConfigured:o=>o?!!(o.sid&&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.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 vo(o){return o.replace(/^lunkr:/i,"")}function ei(o,e,s){let n=s.config.dmPolicy??"allow",i=s.config.allowFrom??[];return{policy:n,allowFrom:i.map(vo),policyPath:"channels.lunkr-openclaw.dmPolicy",allowFromPath:"channels.lunkr-openclaw.allowFrom",approveHint:"openclaw pairing approve lunkr <code>",normalizeEntry:vo}}async function ni(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 bo={resolveDmPolicy:o=>{let{cfg:e,accountId:s,account:n}=o;return ei(e,s??V,n)},collectWarnings:o=>ni(o)};var Ho=oo(ln(),1);import*as z from"fs";import*as te from"path";import*as Wo from"os";import*as ye from"https";import*as Te from"zlib";import{HttpsProxyAgent as pi}from"https-proxy-agent";var we,Io=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;Io&&(we=new pi(Io));function De(o,e){if(!e)return o.toString("utf8");let s=e.toLowerCase().split(",").map(n=>n.trim());try{if(s.includes("gzip"))return Te.gunzipSync(o).toString("utf8");if(s.includes("deflate"))return Te.inflateSync(o).toString("utf8")}catch{}return o.toString("utf8")}var Ee={accept:"*/*","accept-encoding":"gzip, deflate",connection:"keep-alive","user-agent":"python-httpx/0.27.2"};function H(o,e,s,n){return new Promise((i,a)=>{let t=new URL(o),r=Buffer.from(e,"utf8"),c={hostname:t.hostname,port:t.port||443,path:t.pathname+t.search,method:"POST",headers:{...Ee,...s,"Content-Length":r.length},timeout:n,agent:we},l=ye.request(c,u=>{let d=[];u.on("data",m=>{d.push(m)}),u.on("end",()=>{let m={};if(u.headers)for(let[g,b]of Object.entries(u.headers))b!==void 0&&(m[g.toLowerCase()]=Array.isArray(b)?b.join(", "):b);let f=Buffer.concat(d),x=De(f,u.headers["content-encoding"]);i({status:u.statusCode||0,data:x,headers:m})})});l.on("error",a),l.on("timeout",()=>{l.destroy(),a(new Error("Request timeout"))}),l.write(r),l.end()})}function le(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:{...Ee,...e},timeout:s,agent:we},r=ye.request(t,c=>{let l=[];c.on("data",u=>{l.push(u)}),c.on("end",()=>{let u={};if(c.headers)for(let[f,x]of Object.entries(c.headers))x!==void 0&&(u[f.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let d=Buffer.concat(l),m=De(d,c.headers["content-encoding"]);n({status:c.statusCode||0,data:m,headers:u})})});r.on("error",i),r.on("timeout",()=>{r.destroy(),i(new Error("Request timeout"))}),r.end()})}function Ce(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:{...Ee,...e},timeout:s,agent:we},r=ye.request(t,c=>{let l=[];c.on("data",u=>{l.push(u)}),c.on("end",()=>{let u={};if(c.headers)for(let[f,x]of Object.entries(c.headers))x!==void 0&&(u[f.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let d=Buffer.concat(l),m=c.headers["content-encoding"];if(m){let f=De(d,m);n({status:c.statusCode||0,data:Buffer.from(f,"utf8"),headers:u})}else n({status:c.statusCode||0,data:d,headers:u})})});r.on("error",i),r.on("timeout",()=>{r.destroy(),i(new Error("Request timeout"))}),r.end()})}function fe(o,e,s,n){return new Promise((i,a)=>{let t=new URL(o),r={hostname:t.hostname,port:t.port||443,path:t.pathname+t.search,method:"POST",headers:{...Ee,...s,"Content-Length":e.length},timeout:n,agent:we},c=ye.request(r,l=>{let u=[];l.on("data",d=>{u.push(d)}),l.on("end",()=>{let d={};if(l.headers)for(let[x,g]of Object.entries(l.headers))g!==void 0&&(d[x.toLowerCase()]=Array.isArray(g)?g.join(", "):g);let m=Buffer.concat(u),f=De(m,l.headers["content-encoding"]);i({status:l.statusCode||0,data:f,headers:d})})});c.on("error",a),c.on("timeout",()=>{c.destroy(),a(new Error("Request timeout"))}),c.write(e),c.end()})}import*as Ae from"crypto";import*as ie from"os";import{XMLParser as ui}from"fast-xml-parser";var Ge="https://lunkr.coremail.cn",ge="/lunkr/s/json",R=class extends Error{constructor(e){super(e),this.name="AuthError"}},Se=class extends R{constructor(e){super(e),this.name="PasswordError"}};var Le=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 le(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 R(`Domain query failed: ${i}, cause: ${n.cause}`):new R(`Domain query failed: ${i}`)}}static parseXmlResponse(e){let n=new ui({ignoreAttributes:!1,attributeNamePrefix:"@_"}).parse(e),i=n.result||n.querydomain;if(!i)throw new R("Domain query response parse failed: root element not found");let a=i.code;if(a!=="S_OK")throw new R(`Domain query returned error: ${a}`);let t=i.provider;if(!t)throw new R("Provider not found in domain query response");let r=[];for(let[c,l]of Object.entries(t)){if(c.startsWith("@_")||typeof l!="object"||!l)continue;let u=Array.isArray(l)?l:[l];for(let d of u){let m=d["@_uri"];if(!m||!m.startsWith("http://")&&!m.startsWith("https://"))continue;let f=new URL(m),x=`${f.protocol}//${f.host}`,g=f.pathname.replace(/\/$/,""),b=g?`${g}/s/json`:"/s/json";r.push({type:c,uri:m,baseUrl:x,apiPath:b,apiUrl:`${x}${b}`})}}return r.sort((c,l)=>{let[u,d]=this.getTypePriority(c.type),[m,f]=this.getTypePriority(l.type);return u!==m?u-m:d-f}),r}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 r=await H(a,"{}",t,3e4);if(r.status!==200)return null;let c=JSON.parse(r.data);if(c.code!=="S_OK")return null;let l=c.var||{},u=l.key||{},d=l.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 R(`Cannot extract domain from email: ${e}`);console.log(`Querying domain: ${s}`);let n=await this.queryDomain(s);if(n.length===0)throw new R(`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 R("All server addresses are unavailable")}},U=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(([l,u])=>`${encodeURIComponent(l)}=${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(([l,u])=>`${l}=${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 r=await H(i,t,a,this.timeout),c=r.headers["set-cookie"];if(c){let l=c.split(/, (?=[^=]+=[^;]+)/);for(let u of l){let d=u.match(/^([^=]+)=([^;]+)/);d&&(this._cookies[d[1].trim()]=d[2].trim())}}try{return JSON.parse(r.data)}catch{throw new R(`API returned non-JSON: ${r.data?.substring?.(0,400)||r.data}`)}}async checkSessionValid(e){try{return(await this.postJson({func:"cim.common:getOrgInfo",sid:e})).code==="S_OK"}catch{return!1}}};function pn(o){let e=ie.platform(),s=ie.release(),n=ie.arch(),i=ie.hostname(),a=o?.device_uuid?.trim()||"",t=o?.device_os?.trim()||"",r=o?.device_model?.trim()||"",c=o?.device_name?.trim()||"";if(!a){let l=`${i}-${e}-${n}`;a=Ae.createHash("sha256").update(l).digest("hex").substring(0,40)}return r||(e==="win32"?r="windows":e==="darwin"?r="mac":e==="linux"?r="Linux":r=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}`),c||(c=i),{deviceType:"AI-Bot",friendlyName:c,model:r,os:t,uuid:a}}function un(o,e,s){let n=o+e+s;return"!AIBot:"+Ae.createHash("sha1").update(n).digest("hex")}function dn(o){let e=o+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return Ae.createHash("sha1").update(e).digest("hex")}function mn(o,e,s,n=""){let i=l=>encodeURIComponent(l).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A"),a=i(o),t=i(s),r;if(n){let l=i(n);r=`accessToken=${a}&nonce=${l}&timestamp=${e}&secret=${t}`}else r=`accessToken=${a}&timestamp=${e}&secret=${t}`;return Ae.createHash("sha1").update(r).digest().toString("base64")}import*as Po from"https";import*as Oo from"http";import{WebSocket as fn}from"ws";import{v4 as di}from"uuid";function Ne(...o){process.env.LUNKR_VERBOSE==="1"&&console.log("[SocketIO]",...o)}var pe=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;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||""}static fromLunkrConfig(e,s,n,i){let a={"Cim.sid":s};for(let r of n.split(";")){let c=r.trim();if(c.includes("=")){let[l,u]=c.split("=",2);a[l.trim()]=u.trim()}}let t=new o({baseUrl:e,cookies:a,eventCallbacks:i?.eventCallbacks,uid:i?.uid,username:i?.username});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=${this.sessionId}`;try{let n=await le(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=${this.sessionId}`;try{let n=await H(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`,c=(await le(t,{Cookie:s},1e4)).data,l=c.indexOf('0{"sid"');if(l>=0&&(c=c.substring(l)),!c.startsWith("0{"))return console.error("Handshake response format error:",c.substring(0,80)),!1;let u=JSON.parse(c.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=${this.eioSid}`;return new Promise(t=>{this.ws=new fn(a,{headers:{Cookie:this.buildCookieHeader()},agent:n?new Po.Agent({rejectUnauthorized:!1}):new Oo.Agent}),this.ws.once("open",()=>{Ne("WebSocket open, sending 2probe"),this.ws.send("2probe")}),this.ws.once("message",r=>{let c=r.toString();Ne("Received during handshake:",c.substring(0,50)),c.includes("3probe")?(Ne("Upgrade confirmed, sending 5"),this.ws.send("5"),this.connected=!0,this.running=!0,this.startMessageLoop(),this.startPingLoop(),Ne("Connection complete, connected=true, running=true"),t(!0)):(console.error("[SocketIO] Upgrade handshake failed, received:",c.substring(0,50)),t(!1))}),this.ws.once("error",r=>{console.error("WebSocket connection failed:",r.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&&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===fn.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:di()})}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!==fn.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})}};var $o={"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}},mi=Object.keys($o);import*as ze from"https";import*as To from"crypto";import{WebSocket as qo}from"ws";import*as Do from"qrcode-terminal";import{v4 as Fo}from"uuid";var Re="lunkr.coremail.cn",gi={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"};async function Me(o,e,s,n){return new Promise((i,a)=>{let t=JSON.stringify(s),r=`${o}?func=${e}`;n?.sid&&(r+=`&sid=${n.sid}`);let c=n?.baseUrl||Re,l={...gi,"Content-Length":Buffer.byteLength(t)};n?.cookies&&Object.keys(n.cookies).length>0&&(l.Cookie=Object.entries(n.cookies).map(([m,f])=>`${m}=${f}`).join("; "));let d=ze.request({hostname:c,port:443,path:r,method:"POST",headers:l},m=>{let f="",x={},g=m.headers["set-cookie"];if(g)for(let b of g){let h=b.match(/^([^=]+)=([^;]+)/);h&&(x[h[1].trim()]=h[2].trim())}m.on("data",b=>f+=b),m.on("end",()=>{try{i({data:JSON.parse(f),cookies:x})}catch{a(new Error(`Invalid JSON: ${f}`))}})});d.on("error",a),d.write(t),d.end()})}async function xi(o){return new Promise((e,s)=>{ze.get(o,n=>{let i="";n.on("data",a=>i+=a),n.on("end",()=>e(i))}).on("error",s)})}async function gn(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 Me("/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 r=`https://${Re}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=await xi(r),l=c.indexOf('0{"sid"'),u=l>=0?c.substring(l):c;if(!u.startsWith("0{"))return{success:!1,error:"Handshake format error"};let d=JSON.parse(u.substring(1)),m=d.sid,f=d.pingInterval??25e3;i(`eioSid: ${m}, pingInterval: ${f}`),i("[3] WebSocket connection...");let x=`wss://${Re}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${m}`;return new Promise(g=>{let b=setTimeout(()=>{h.close(),g({success:!1,error:"Timeout waiting for QR scan"})},s),h=new qo(x,{headers:{Host:Re,Origin:`https://${Re}`,"User-Agent":"Mozilla/5.0"}}),w=!1,k;h.on("open",()=>{i("WebSocket connected, sending 2probe..."),h.send("2probe")}),h.on("message",S=>{let A=S.toString();if(i(`Received: ${A.substring(0,100)}`),A.includes("3probe")){i("Received 3probe, sending 5 and auth"),h.send("5");let v={clientId:`webmail:${t}`,sid:t,msg_v:100,uuid:Fo(),TmpSes:1};h.send(`42["auth",${JSON.stringify(v)}]`);let L=`https://www.coremail.cn/app/poster.html?action=qrLogin&sid=${t}`;console.log(""),console.log(" \u{1F99E} OpenClaw \xB7 \u8BBA\u5BA2\u626B\u7801\u767B\u5F55"),console.log(""),Do.generate(L,{small:!0},j=>{console.log(j)}),console.log(" \u8BF7\u4F7F\u7528\u8BBA\u5BA2 App \u626B\u63CF\u4E0A\u65B9\u4E8C\u7EF4\u7801"),console.log(""),e&&console.log(`QR URL: ${L}
2
- `),k=setInterval(()=>{h.readyState===qo.OPEN&&h.send("2")},f)}if(A.startsWith("42"))try{let v=JSON.parse(A.substring(2)),L=v[0],j=v[1];if(L==="ready"&&!w){w=!0,i("Auth ready, subscribing to scan events...");let O=`/onstat/mail/${t}/op_app_scanqrcode`;h.send(`42["subscribe",{"topic":"${O}"}]`)}if(L==="message"&&j?.payload){let O=typeof j.payload=="string"?JSON.parse(j.payload):j.payload;if(i(`Scan status: ${O.status}`),O.status==="verify"&&console.log("\u5DF2\u626B\u7801\uFF0C\u7B49\u5F85\u786E\u8BA4..."),O.status==="auth"){i(`Confirmed: ${O.user?.email}`);let I=O.user?.email,D={uid:I,authSid:t,authToken:O.token};i("Calling checkVersionAndLogin..."),Me("/lunkr/s/json","cim.user:checkVersionAndLogin",D).then(K=>{let G=K.data,de=K.cookies;if(i(`Login result: ${JSON.stringify(G)}`),G.code==="S_OK"&&G.var?.sid){let ve=G.var.sid,be=I,Ye=G.var.self_uid;i(`Login successful, sid: ${ve}, email: ${be}, selfUid: ${Ye}`),i("Calling getApiToken...");let Zn=n||{device_uuid:Fo(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};Me("/lunkr/s/json","cim.user:getApiToken",Zn,{sid:ve,baseUrl:"betaweb.lunkr.cn",cookies:de}).then(Ie=>{let eo=Ie.data;i(`Token result: ${JSON.stringify(eo)}`),clearTimeout(b),clearInterval(k),h.close(),g({success:!0,apiToken:eo.var?.api_token,email:be,selfUid:Ye,deviceUuid:Zn.device_uuid})}).catch(Ie=>{console.error(`getApiToken failed: ${Ie.message}`),clearTimeout(b),clearInterval(k),h.close(),g({success:!1,error:`getApiToken failed: ${Ie.message}`})})}else clearTimeout(b),clearInterval(k),h.close(),g({success:!1,error:`Login failed: ${JSON.stringify(G)}`})}).catch(K=>{clearTimeout(b),clearInterval(k),h.close(),g({success:!1,error:K.message})})}}}catch(v){i(`Event parse failed: ${v.message}`)}A==="2"&&h.send("3")}),h.on("error",S=>{i(`WebSocket error: ${S.message}`),clearTimeout(b),clearInterval(k),g({success:!1,error:S.message})}),h.on("close",()=>{i("WebSocket closed"),clearTimeout(b),clearInterval(k)})})}catch(a){return{success:!1,error:a.message}}}async function Q(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(),r=To.createHash("sha256").update(`${t}:${s}:${e}`).digest("base64");a(`timestamp: ${t}`),a(`token_hash: ${r}`);let c=await Me("/lunkr/s/json","cim.user:getLunkrSid",{email:o,timestamp:t,device_uuid:s,token_hash:r},{baseUrl:"betaweb.lunkr.cn"});if(a(`Result: ${JSON.stringify(c.data)}`),c.data.code==="S_OK"&&c.data.var?.sid){let l=c.data.var.cookie?`Cim=${c.data.var.cookie}`:c.cookies?.Cim?`Cim=${c.cookies.Cim}`:void 0;return{success:!0,sid:c.data.var.sid,email:o,selfUid:c.data.var.uid,cookie:l}}else return c.data.code==="FA_REQUEST_EXPIRED"?{success:!1,error:"\u8BA4\u8BC1\u5931\u8D25\uFF1A\u672C\u5730\u65F6\u949F\u4E0D\u51C6\u786E\uFF0C\u8BF7\u8C03\u6574\u672C\u5730\u65F6\u949F\u540E\u91CD\u8BD5\u3002"}:{success:!1,error:`getLunkrSid failed: ${c.data.code} - ${c.data.msg||"Unknown error"}`}}catch(t){return{success:!1,error:t.message}}}import*as Ke from"path";function Eo(o,e){return`[@!${o||"Unknown"}\u7684${e||"Bot"}:]`}function ee(o,e,s){return Eo(e,s)+o}var hi=/^#\d+#U$/,vi=/^#\d+#T$/,bi=/^t\.\./i,ki=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function xn(o){return hi.test(o.trim())}function hn(o){return vi.test(o.trim())}function Be(o){return bi.test(o.trim())}function vn(o){return ki.test(o.trim())}function X(o){let e=o.trim();return xn(e)||hn(e)||Be(e)||vn(e)}function Ve(o){let e=o.trim();return xn(e)||vn(e)&&!Be(e)?"user":hn(e)||Be(e)?"group":"unknown"}function bn(o){let e=o.replace(/[<>:"/\\|?*\x00-\x1f]/g,"_").replace(/\.\./g,"_").replace(/^\.+/,"_").replace(/\.+$/,"_").trim();if(e.length>200){let s=Ke.extname(e);e=Ke.basename(e,s).substring(0,200-s.length)+s}return e||"download"}function M(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 ue(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]}`}import*as je from"fs";import*as Je from"path";import{fileURLToPath as yi}from"url";import{dirname as wi}from"path";var Ci=yi(import.meta.url),Go=wi(Ci),kn=new Map,yn=null,We="en-US";function Si(){let o=Je.join(Go,"locales");return je.existsSync(o)?o:Je.join(Go,"i18n","locales")}function Li(){let o=process.env.LUNKR_LANG;if(o)return wn(o);let e=process.env.LANG||process.env.LC_ALL;if(e){let n=e.split(".")[0].replace("_","-");return wn(n)}let s=process.env.LANGUAGE;if(s){let n=s.split(":")[0].replace("_","-");return wn(n)}return We}function wn(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]||We}function No(o){if(kn.has(o))return kn.get(o);let e=Je.join(Si(),`${o}.json`);try{if(je.existsSync(e)){let s=je.readFileSync(e,"utf-8"),n=JSON.parse(s);return kn.set(o,n),n}}catch{}return null}function Ai(){return yn||(yn=Li()),yn}function Mo(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 zo(o,e){return e?o.replace(/\{\{(\w+)\}\}/g,(s,n)=>String(e[n]??"")):o}function p(o,e){let s=Ai(),n=No(s);if(n){let i=Mo(n,o);if(i)return zo(i,e)}if(s!==We){let i=No(We);if(i){let a=Mo(i,o);if(a)return zo(a,e)}}return o}var Ri=["FA_SESSION_EXPIRED","FA_AUTH_FAILED","FA_NO_SESSION","FA_SID_INVALID"];function xe(o){return Ri.includes(o)}async function ae(o,e){let s=_(),n=s.accounts?.find(r=>r.accountId===o);if(!n)return{success:!1,error:`Account not found: ${o}`};if(!n.apiToken)return{success:!1,error:"No apiToken available for refresh"};let i=e||s.device_uuid;if(!i)return{success:!1,error:"No device UUID available"};let a=n.email||o,t=await Q(a,n.apiToken,i);if(t.success&&t.sid&&t.cookie){let r={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||""},c=s.accounts?.findIndex(l=>l.accountId===o)??-1;return c>=0&&s.accounts&&(s.accounts[c].session=r,T(s)),{success:!0,session:r}}return{success:!1,error:t.error||"Unknown error during token login"}}var Bo=1e3;async function Ko(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 Vo(o,e){let s=N(o,e);if(!s)throw new Error(p("errors.account_not_configured"));let n=new U(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[r,c]=t.split("=",2);i[r.trim()]=c.trim()}}return n.setCookies(i),{client:n,account:s}}async function ji(o,e){let{to:s,content:n,sid:i,accountId:a,lunkrConfig:t}=e,r=await o.postJson({func:"cim.msg:reply",sid:i,payload:{uid:s,content:n,type:"text"}});if(r.code!=="S_OK"&&xe(String(r.code))){let l=await ae(a);if(l.success&&l.session){let u=new U(t.baseUrl,{apiPath:t.apiPath}),d={"Cim.sid":l.session.sid};for(let f of l.session.cookie.split(";")){let x=f.trim();if(x.includes("=")){let[g,b]=x.split("=",2);d[g.trim()]=b.trim()}}u.setCookies(d);let m=await u.postJson({func:"cim.msg:reply",sid:l.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(p("api.send_failed",{code:String(m.code)}))}else console.error(`[${a}] Session refresh failed: ${l.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(p("api.send_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`msg-${Date.now()}`}}async function Ui(o,e){let{to:s,content:n,sid:i,accountId:a,lunkrConfig:t}=e,r=await o.postJson({func:"cim.msg:reply",sid:i,payload:{uid:s,content:n,type:"post"}});if(r.code!=="S_OK"&&xe(String(r.code))){let l=await ae(a);if(l.success&&l.session){let u=new U(t.baseUrl,{apiPath:t.apiPath}),d={"Cim.sid":l.session.sid};for(let f of l.session.cookie.split(";")){let x=f.trim();if(x.includes("=")){let[g,b]=x.split("=",2);d[g.trim()]=b.trim()}}u.setCookies(d);let m=await u.postJson({func:"cim.msg:reply",sid:l.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(p("api.send_post_failed",{code:String(m.code)}))}else console.error(`[${a}] Session refresh failed: ${l.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(p("api.send_post_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`post-${Date.now()}`}}function Jo(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 _i(o){if(o.startsWith("http://")||o.startsWith("https://")){let s=Wo.tmpdir(),n=`lunkr-media-${Date.now()}-${te.basename(new URL(o).pathname)||"file"}`,i=te.join(s,n),a=await Ce(o,{},6e4);return z.writeFileSync(i,a.data),{filePath:i,cleanup:()=>{try{z.existsSync(i)&&z.unlinkSync(i)}catch{}}}}let e=te.resolve(o);if(!z.existsSync(e))throw new Error(p("errors.file_not_found",{path:o}));return{filePath:e,cleanup:()=>{}}}async function Ii(o,e){let{filePath:s,sid:n,uploadUid:i,cookies:a,baseUrl:t,apiPath:r}=e,c=te.resolve(s),l=te.basename(c);if(!z.existsSync(c))throw new Error(p("errors.file_not_found",{path:s}));let u=z.statSync(c),d=Ho.lookup(c)||"application/octet-stream",m=z.readFileSync(c),f=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,x=await o.postJson({func:"cim.file:prepare",sid:n,payload:{size:u.size,composeId:f,fileName:l,uid:i,contentType:d}});if(x.code!=="S_OK")throw new Error(p("api.upload_prepare_failed",{code:String(x.code)}));let b=x.var?.attachmentId;if(!b)throw new Error(p("api.upload_no_attachment_id"));let h=`${t}${r}?func=cim.file:directData&sid=${n}&composeId=${encodeURIComponent(f)}&attachmentId=${b}&offset=0&uid=${encodeURIComponent(i)}`,k={"Content-Type":"application/octet-stream",Cookie:Object.entries(a).map(([I,D])=>`${I}=${D}`).join("; ")},S=await fe(h,m,k,6e4),A;try{A=JSON.parse(S.data)}catch{throw new Error(p("api.upload_invalid_response",{data:S.data?.substring?.(0,200)}))}if(A.code!=="S_OK")throw new Error(p("api.upload_data_failed",{code:String(A.code)}));let v=await o.postJson({func:"cim.file:moveToNetFolder",sid:n,payload:{composeId:f,fileName:l,item:"fileName",attachmentId:b,uid:i}});if(v.code!=="S_OK")throw new Error(p("api.upload_move_failed",{code:String(v.code)}));let L=v.var,j=L?.fileId,O=L?.uid;if(!j)throw new Error(p("api.upload_no_file_id"));return{fileId:j,fileUid:O||""}}var Qo={deliveryMode:"direct",textChunkLimit:Bo,sendText:async o=>{let{cfg:e,to:s,text:n,replyToId:i,accountId:a}=o,{client:t,account:r}=await Vo(e,a),{chatId:c,chatType:l}=Jo(s),u=r.botName??"Bot",d=r.senderName;d||(d=await Ko(t,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=ee(n,d,u),f;return m.length>Bo?f=await Ui(t,{to:c,content:m,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}):f=await ji(t,{to:c,content:m,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}),{ok:!0,channel:"lunkr-openclaw",messageId:f.msgId}},sendMedia:async o=>{let{cfg:e,to:s,text:n,mediaUrl:i,accountId:a}=o;if(!i)throw new Error(p("errors.media_url_required"));let{client:t,account:r}=await Vo(e,a),{chatId:c,chatType:l}=Jo(s),u=r.botName??"Bot",d=r.senderName;d||(d=await Ko(t,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=ee(n||"",d,u),f={"Cim.sid":r.sid};for(let b of r.cookie.split(";")){let h=b.trim();if(h.includes("=")){let[w,k]=h.split("=",2);f[w.trim()]=k.trim()}}let x,g;try{let b=await _i(i);x=b.filePath,g=b.cleanup;let h=l==="p2p"?r.selfUid:c,{fileId:w,fileUid:k}=await Ii(t,{filePath:x,sid:r.sid,uploadUid:h,cookies:f,baseUrl:r.lunkrConfig.baseUrl,apiPath:r.lunkrConfig.apiPath}),S=await t.postJson({func:"cim.msg:reply",sid:r.sid,payload:{uid:c,content:m,type:"text",attachments:[{fileId:w,uid:k}]}});if(S.code!=="S_OK")throw new Error(p("api.send_media_failed",{code:String(S.code)}));return{ok:!0,channel:"lunkr-openclaw",messageId:S.var?.msgId??`media-${Date.now()}`}}finally{g&&g()}}};function Xo(o,e){let s=o.chatType==="group"?o.chatId:null;return s&&(e.botDiscussions||{})[s]||null}function Pi(o,e){return Xo(o,e)!==null}function Oi(o,e){return o.trim().toLowerCase().startsWith(e.toLowerCase())}function $i(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=Xo(o,e);return a?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:a.agentId}:s&&Oi(o.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function qi(o,e){let s=o.trim();return s.toLowerCase().startsWith(e.toLowerCase())?s.slice(e.length).trim():o}function Yo(o,e){let s=$i(o,e),i=Pi(o,e)?o.content:qi(o.content,e.commandPrefix),a=o.chatType==="p2p"?"direct":o.chatType;return{externalId:o.msgId,channel:"lunkr-openclaw",chatType:a,peerId:o.chatId,senderId:o.fromUid,text:i,timestamp:o.timestamp,replyTo:o.threadId,mentions:void 0,isBotMention:s.isBotMention,isFromBot:s.isFromBot,isFromSelf:s.isFromSelf,agentId:s.agentId,contentType:o.contentType,attachments:o.attachments}}var re=new Map,Ue=new Map,Zo=5e3;function Fi(o){let e=Date.now(),s=Ue.get(o);if(s&&e-s<Zo)return!0;if(Ue.set(o,e),Ue.size>1e3)for(let[n,i]of Ue)e-i>Zo*2&&Ue.delete(n);return!1}var es=1e3;async function Ti(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",r=o.senderName;r||(r=o.selfUid?.includes("@")?o.selfUid.split("@")[0]:"User");let c=ee(i,r,t),l=o.sid,u=o.cookie,d=o;if(l){let m=new U(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),f={"Cim.sid":l};for(let g of u.split(";")){let b=g.trim();if(b.includes("=")){let[h,w]=b.split("=",2);f[h.trim()]=w.trim()}}m.setCookies(f);let x=await m.postJson({func:"cim.msg:reply",sid:l,payload:{uid:n,content:c,type:c.length>es?"post":"text"}});if(s?.debug?.(`[sendLunkrReply] Response: code=${x.code}`),x.code==="S_OK"){let g=x.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully${g?`: msgId=${g}`:""}`),{msgId:g??`msg-${Date.now()}`,account:d}}if(xe(String(x.code)))s?.info(`[${o.accountId}] Session expired, clearing sid...`),l="",u="";else throw new Error(p("api.send_reply_failed",{code:String(x.code),msg:String(x.msg||"Unknown")}))}if(!l){s?.info(`[${o.accountId}] No valid session, attempting refresh with apiToken...`);let m=await ae(o.accountId);if(m.success&&m.session){s?.info(`[${o.accountId}] Session refreshed, sending message...`),l=m.session.sid,u=m.session.cookie;let f=new U(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),x={"Cim.sid":l};for(let b of u.split(";")){let h=b.trim();if(h.includes("=")){let[w,k]=h.split("=",2);x[w.trim()]=k.trim()}}f.setCookies(x);let g=await f.postJson({func:"cim.msg:reply",sid:l,payload:{uid:n,content:c,type:c.length>es?"post":"text"}});if(g.code==="S_OK"){let b=Fe(o,m.session),h=g.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully after refresh: msgId=${h}`),{msgId:h??`msg-${Date.now()}`,account:b}}throw s?.warn?.(`[${o.accountId}] Send failed after refresh: ${g.code}. Will retry later.`),new Error(p("api.send_reply_failed",{code:String(g.code),msg:String(g.msg||"Unknown")}))}throw s?.warn?.(`[${o.accountId}] Session refresh failed: ${m.error}. Will retry later.`),new Error(p("api.no_session"))}throw new Error(p("api.send_reply_failed",{code:"UNKNOWN",msg:"Unexpected state"}))}function ns(o,e){let{log:s}=e;return pe.fromLunkrConfig(o.lunkrConfig.baseUrl,o.sid,o.cookie,{uid:o.selfUid,username:o.botName,eventCallbacks:{message:i=>{try{let a=Di(i,s);if(a){let t=Yo(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 Di(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),r=a.attachments;e?.debug?.(`[parseSocketMessage] MSG keys=[${t.join(", ")}], attachments=${JSON.stringify(r)?.substring(0,200)}`);let c=String(a.mid||""),l=a.from||{},u=a.to||{},d=String(l.uid||""),m=String(l.true_name||l.email||""),f=String(a.subject||"");try{f=decodeURIComponent(f.replace(/\+/g," "))}catch{}let x=String(a.type||a.group_type||"p2p"),g=String(a.uid||u.uid||""),b;g.endsWith("#U")?b="p2p":g.endsWith("#T")?b="group":b=x==="p2p"?"p2p":x==="topic"||x==="group"?"group":"channel";let w=(a.attachments||[]).map(v=>({fileId:String(v.fileId||""),title:String(v.title||""),fileSize:Number(v.file_size||0),type:Number(v.t||0),ctype:v.ctype?String(v.ctype):void 0,inline:!!v.inline,duration:v.duration?Number(v.duration):void 0}));if(w.length===0){let v=Object.keys(a),L=v.some(I=>I.toLowerCase().includes("file")||I.toLowerCase().includes("att")||I.toLowerCase().includes("attach")||I.toLowerCase().includes("media")||I.toLowerCase().includes("image")||I.toLowerCase().includes("audio")),j=String(a.type||""),O=["file","image","audio","video","attachment"].some(I=>j.toLowerCase().includes(I));if(L||O){e?.info(`[parseSocketMessage] \u26A0\uFE0F No attachments parsed but message has file-related fields. type="${j}", keys=${v.join(", ")}`),e?.debug?.("[parseSocketMessage] No attachments found, but message might have file content"),e?.debug?.(`[parseSocketMessage] msg.type="${j}", msg keys: ${v.join(", ")}`);for(let I of v){let D=I.toLowerCase();if(D.includes("file")||D.includes("att")||D.includes("attach")||D.includes("media")||D.includes("image")||D.includes("audio")){let K=a[I];e?.debug?.(`[parseSocketMessage] Field "${I}": ${JSON.stringify(K).substring(0,500)}`)}}}}let k="text",S=w[0];if(S){let v=S.title?.split(".").pop()?.toLowerCase();v==="ilbc"?k="audio":["jpg","jpeg","png","gif","bmp","webp"].includes(v||"")?k="image":["mp4","mov","avi","mkv"].includes(v||"")?k="video":k="file"}let A=f;if(w.length>0){let v=[];for(let j of w){let O=j.title?.split(".").pop()?.toLowerCase();O==="ilbc"?v.push(`[\u8BED\u97F3\u6D88\u606F${j.duration?` ${j.duration}\u79D2`:""}]`):["jpg","jpeg","png","gif","bmp","webp"].includes(O||"")?v.push(`[\u56FE\u7247: ${j.title}]`):["mp4","mov","avi","mkv"].includes(O||"")?v.push(`[\u89C6\u9891: ${j.title}]`):v.push(`[\u6587\u4EF6: ${j.title}]`)}let L=v.join(" ");f.trim()?A=`${f}
3
- ${L}`:A=L}return w.length>0&&e?.info(`[parseSocketMessage] Parsed ${w.length} attachment(s): ${w.map(v=>v.title).join(", ")}`),{msgId:c,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:b,chatId:g||(b==="p2p"?d:""),content:A,contentType:k,timestamp:typeof a.time=="number"?a.time:Date.now(),mentioned:!1,attachments:w.length>0?w:void 0}}function Ei(o){let{msg:e,account:s,sessionKey:n,accountId:i}=o,a=e.chatType!=="direct",t=a?`group:${e.peerId}`:e.senderId,r=a?"group":"direct",c=e.attachments?.[0],l;return c&&(e.contentType==="audio"?l="audio/ilbc":e.contentType==="image"?l=`image/${c.title?.split(".").pop()||"jpeg"}`:e.contentType==="video"?l=`video/${c.title?.split(".").pop()||"mp4"}`:l="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:r,ConversationLabel:t,SenderName:void 0,SenderId:e.senderId,CommandAuthorized:!0,Provider:"lunkr",Surface:"lunkr",MessageSid:e.externalId,MediaPath:c?.fileId,MediaType:l,MediaUrl:void 0,Attachments:e.attachments,OriginatingChannel:"lunkr",OriginatingTo:`lunkr:${e.peerId}`}}var os={startAccount:async o=>{let{account:e,abortSignal:s,log:n}=o,i=e;if(n?.info(`[${i.accountId}] Starting Lunkr gateway`),!i.sid){n?.info(`[${i.accountId}] No valid session on startup, attempting refresh...`);let l=await ae(i.accountId);l.success&&l.session?(i=Fe(i,l.session),n?.info(`[${i.accountId}] Session refreshed on startup`)):n?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${l.error}. Will retry when sending messages.`)}let a={onMessage:async l=>{if(!l.isBotMention)return;if(Fi(l.externalId)){n?.debug?.(`[${i.accountId}] Skipping duplicate message: ${l.externalId}`);return}let u=l.chatType==="direct"?"DM":"Group";if(n?.info(`[${i.accountId}] [${u}:${l.peerId}] Received msg from ${l.senderId}: ${l.text?.substring(0,50)}...`),n?.debug?.(`[${i.accountId}] Attachments check: count=${l.attachments?.length||0}, contentType=${l.contentType}`),l.attachments&&l.attachments.length>0){let d=l.attachments.map(m=>{let f=m.title?.split(".").pop()?.toLowerCase();return f==="ilbc"?`\u8BED\u97F3(${m.duration||"?"}\u79D2)`:["jpg","jpeg","png","gif","bmp","webp"].includes(f||"")?`\u56FE\u7247(${m.title})`:["mp4","mov","avi","mkv"].includes(f||"")?`\u89C6\u9891(${m.title})`:`\u6587\u4EF6(${m.title})`}).join(", ");n?.info(`[${i.accountId}] [${u}:${l.peerId}] Attachments: ${d}`)}if(!o.channelRuntime){n?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let d=new Set,m=l.chatType!=="direct",f=o.channelRuntime.routing.buildAgentSessionKey({peerId:l.peerId,channelId:"lunkr-openclaw",accountId:o.accountId}),x=o.channelRuntime.routing.resolveAgentRoute({cfg:o.cfg,channel:"lunkr-openclaw",peer:{kind:m?"group":"direct",id:l.peerId},accountId:o.accountId}),g=Ei({msg:l,account:i,sessionKey:x.sessionKey,accountId:x.accountId}),h=o.cfg.session?.store;h&&await o.channelRuntime.session.recordInboundSession({storePath:h,sessionKey:g.SessionKey,ctx:g,onRecordError:w=>{n?.error?.(`[${i.accountId}] Failed to record session: ${String(w)}`)}}),await o.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:g,cfg:o.cfg,dispatcherOptions:{deliver:async(w,k)=>{let S=w.text??"";if(S.trim()){if(k.kind==="block"){n?.debug?.(`[${i.accountId}] Skipping block chunk (waiting for final)`);return}if(k.kind==="final"&&d.has(S)){n?.debug?.(`[${i.accountId}] Skipping duplicate final reply`);return}k.kind==="final"&&d.add(S),n?.info(`[${i.accountId}] Deliver ${k.kind} reply to ${l.peerId}: ${S.substring(0,50)}...`);try{let A=await Ti(i,{to:l.peerId,chatType:l.chatType,text:S},n);A.account!==i&&(i=A.account,n?.info(`[${i.accountId}] Session updated after refresh`))}catch(A){n?.error?.(`[${i.accountId}] Failed to send reply: ${A instanceof Error?A.message:String(A)}`)}}},onError:(w,k)=>{n?.error?.(`[${i.accountId}] AI ${k.kind} failed: ${String(w)}`)}}})}catch(d){n?.error?.(`[${i.accountId}] Message dispatch error: ${d instanceof Error?d.message:String(d)}`)}},onReaction:l=>{n?.debug(`[${i.accountId}] Received reaction: ${l.emoji} on ${l.msgId}`)},onError:l=>{n?.error(`[${i.accountId}] Socket error: ${l.message}`)},onDisconnect:()=>{n?.info(`[${i.accountId}] Socket disconnected`),re.delete(i.accountId)},log:n},t=ns(i,a),r=await t.connect();if(!r){n?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let l=await ae(i.accountId);l.success&&l.session&&(i=Fe(i,l.session),n?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),t=ns(i,a),r=await t.connect())}if(!r)throw new Error(p("api.socket_connect_failed",{accountId:i.accountId}));n?.info(`[${i.accountId}] Lunkr gateway connected`);let c={socket:t,connected:!0,startedAt:Date.now()};return re.set(i.accountId,c),s.addEventListener("abort",()=>{n?.info(`[${i.accountId}] Stopping Lunkr gateway`),t.disconnect(),re.delete(i.accountId)}),new Promise(l=>{let u=()=>{s.removeEventListener("abort",d),l(c)},d=()=>{n?.info(`[${i.accountId}] Gateway abort signal received`),u()};s.addEventListener("abort",d),t.onDisconnect(()=>{n?.info(`[${e.accountId}] Socket disconnected`),re.delete(e.accountId),u()})})},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}}};async function Gi(o,e=5e3){let s=Date.now();if(!o)return{ok:!1,error:"\u8D26\u53F7\u672A\u914D\u7F6E",elapsedMs:Date.now()-s};if(!o.sid||!o.lunkrConfig)return{ok:!1,error:"\u4F1A\u8BDD\u672A\u914D\u7F6E",elapsedMs:Date.now()-s};try{let n=new U(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath,timeout:e/1e3}),i={"Cim.sid":o.sid};for(let t of o.cookie.split(";")){let r=t.trim();if(r.includes("=")){let[c,l]=r.split("=",2);i[c.trim()]=l.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 Ni(o){let e=[];for(let s of o){let n=s.accountId??V;s.configured===!1&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"config",message:"Lunkr \u4F1A\u8BDD\u672A\u914D\u7F6E\u3002\u8BF7\u8FD0\u884C\uFF1Aopenclaw lunkr login",fix:"\u8FD0\u884C `openclaw lunkr login` \u8FDB\u884C\u8BA4\u8BC1"}),s.lastError&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"runtime",message:`\u9891\u9053\u9519\u8BEF\uFF1A${s.lastError}`});let i=s.probe;i&&!i.ok&&i.sessionValid===!1&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"auth",message:"Lunkr \u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u8BA4\u8BC1\u3002",fix:"\u8FD0\u884C `openclaw lunkr login` \u5237\u65B0\u4F1A\u8BDD"})}return e}function Mi(o){return ao({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 zi(o){let{account:e,runtime:s,probe:n}=o,i=!!(e.sid&&e.selfUid);return io({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:s,probe:n})}var ss={defaultRuntime:{accountId:V,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:Ni,buildChannelSummary:({snapshot:o})=>Mi({snapshot:o}),probeAccount:async({account:o,timeoutMs:e})=>Gi(o??null,e??5e3),buildAccountSnapshot:({account:o,runtime:e,probe:s})=>zi({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"};async function _e(o,e){let s=N(o,e);if(!s)throw new Error("Lunkr \u8D26\u53F7\u672A\u914D\u7F6E");let n=new U(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[r,c]=t.split("=",2);i[r.trim()]=c.trim()}}return n.setCookies(i),{client:n,account:s}}function Cn(o){return{kind:"user",id:`lunkr:${o.uid}`,name:o.name??o.uid,email:o.email,avatarUrl:o.avatar}}function is(o){return{kind:o.type==="channel"?"channel":"group",id:`lunkr:discussion:${o.gid}`,name:o.name??o.gid,avatarUrl:o.avatar}}async function as(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 ts(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 Bi(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 rs={self:async({cfg:o,accountId:e})=>{let s=N(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 _e(o,e),t=s?.trim()??"",r=n&&n>0?n:20;return t?(await as(i,a.sid,t,r)).map(Cn):[]},listPeersLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=s?.trim()??"",r=n&&n>0?n:20;return t?(await as(i,a.sid,t,r)).map(Cn):[]},listGroups:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=await ts(i,a.sid),r=t;if(s){let c=s.toLowerCase();r=t.filter(l=>l.name?.toLowerCase().includes(c)||l.gid.toLowerCase().includes(c))}return n&&n>0&&(r=r.slice(0,n)),r.map(is)},listGroupsLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=await ts(i,a.sid),r=t;if(s){let c=s.toLowerCase();r=t.filter(l=>l.name?.toLowerCase().includes(c)||l.gid.toLowerCase().includes(c))}return n&&n>0&&(r=r.slice(0,n)),r.map(is)},listGroupMembers:async({cfg:o,accountId:e,groupId:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=s.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");return(await Bi(i,a.sid,t,n??100)).map(Cn)}};function cs(o){let{cfg:e,accountId:s,groupId:n}=o,i=N(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 Ki(o){let{cfg:e,accountId:s,groupId:n}=o,i=N(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 cs({cfg:e,accountId:s,groupId:n})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function Vi(o){let{cfg:e,accountId:s,groupId:n}=o;N(e,s)}var ls={resolveRequireMention:cs,resolveGroupIntroHint:Ki,resolveToolPolicy:Vi};var Ji={id:"lunkr-openclaw",label:"Lunkr",selectionLabel:"Lunkr (\u4F01\u4E1A\u534F\u4F5C)",detailLabel:"Lunkr \u4F01\u4E1A\u534F\u4F5C",docsPath:"/channels/lunkr",docsLabel:"lunkr",blurb:"\u4F01\u4E1A\u90AE\u4EF6\u548C\u534F\u4F5C\u5E73\u53F0\uFF0C\u652F\u6301\u6D88\u606F\u3001\u8054\u7CFB\u4EBA\u3001\u8BA8\u8BBA\u7EC4\u3002"},Sn={id:"lunkr-openclaw",meta:{...Ji,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:so(Ze),config:ho,security:bo,group:ls,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:rs,outbound:Qo,status:ss,gateway:os,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:o=>o.replace(/^lunkr:/i,"")}};var Wi=null;function Hi(o){let e={...o,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return Wi=e,e}function ps(o){Hi(o)}var Ln=oo(ln(),1);import*as E from"fs";import*as J from"path";import*as us from"os";import*as ds from"crypto";var he=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 U(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=_(),n=e?s.accounts?.find(i=>i.accountId===e&&i.session):qe(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||_();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("Session \u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u4EE5\u4E0B\u547D\u4EE4\u91CD\u65B0\u767B\u5F55\uFF1A"),console.error(" lunkr login (\u626B\u7801\u767B\u5F55)"),console.error(" lunkr login-bypwd (\u5BC6\u7801\u767B\u5F55)")),e}async tryApiTokenRelogin(){let e=_(),s=e.accounts.find(t=>t.session?.selfUid===this.session.selfUid);if(!s?.apiToken)return!1;let n=s.email||s.accountId,i=await Q(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},T(e),this.sid=i.sid,this.session=s.session;let a={};for(let t of i.cookie.split(";")){let r=t.trim();if(r.includes("=")){let c=r.indexOf("="),l=r.substring(0,c).trim(),u=r.substring(c+1).trim();a[l]=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 r=t,c=String(r.uid||""),l=String(r.email||"").toLowerCase(),u=String(r.true_name||"").toLowerCase();if(l.includes(e.toLowerCase())||u.includes(e.toLowerCase())){if(i.has(c))continue;i.add(c),n.push({uid:c,email:r.email,trueName:r.true_name,name:r.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 r=t,c=String(r.uid||"");i.has(c)||(i.add(c),n.push({uid:c,email:r.email,trueName:r.true_name,name:r.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(X(s)){let a=Ve(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(`\u672A\u627E\u5230\u8054\u7CFB\u4EBA\u6216\u8BA8\u8BBA\u7EC4: ${s}`)}async resolveRecipientInteractive(e,s){let n=e.trim();if(X(n)){let t=Ve(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(l=>l.name===n||l.trueName===n);if(t.length===1){let l=t[0];return{uid:l.uid,type:"user",name:l.trueName||l.name||n,email:l.email||void 0}}let r=0;if(i.length>1&&s){let l=i.map(u=>({uid:u.uid,name:u.trueName||u.name||u.email||u.uid,type:"user"}));r=s(l)}r<0&&(r=0);let c=i[r];return{uid:c.uid,type:"user",name:c.trueName||c.name||n,email:c.email||void 0}}let a=await this.searchGroups(n,10);if(a.length>0){let t=a.filter(l=>l.name===n||l.trueName===n);if(t.length===1){let l=t[0];return{uid:l.uid,type:"group",name:l.name||l.trueName||n,email:l.email||void 0}}let r=0;if(a.length>1&&s){let l=a.map(u=>({uid:u.uid,name:u.name||u.trueName||u.email||u.uid,type:"group"}));r=s(l)}r<0&&(r=0);let c=a[r];return{uid:c.uid,type:"group",name:c.name||c.trueName||n,email:c.email||void 0}}throw new Error(`\u672A\u627E\u5230\u8054\u7CFB\u4EBA\u6216\u8BA8\u8BBA\u7EC4: ${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 r=await this.client.postJson({func:"cim.msg:list",sid:this.sid,payload:a});if(r.code!=="S_OK"||!Array.isArray(r.var))return[];let c=[];for(let l of r.var){if(typeof l!="object"||!l)continue;let u=l,d=u.data||u,m=d.from||{},f=[],x=d.attachments;if(Array.isArray(x))for(let g of x)f.push({file_id:g.fileId,uid:g.uid,title:g.title||g.filename,content_type:g.content_type,file_size:g.file_size||g.size,type:g.type,inline:g.inline===!0});c.push({mid:String(d.mid||d.uid||""),time:M(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:f})}return c}async sendMessage(e,s,n={}){let i=n.botName||this.botName,a=n.senderName||await this.ensureSenderName(),t=ee(s,a,i),r=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text"}});if(r.code!=="S_OK")throw new Error(`\u53D1\u9001\u5931\u8D25: ${r.code} - ${r.msg||"Unknown error"}`);let c=r.var?.[0];return{mid:String(c?.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=ee(n.content||"",a,i),r=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,c=ds.randomUUID(),u=e.type==="user"?this.session.selfUid:e.uid,d=[];for(let x of s){let g=await this.uploadFileWithFlow(x,u,r);d.push({fileId:g.fileId,uid:g.fileUid})}let m=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text",clientMid:c,attachments:d}});if(m.code!=="S_OK")throw new Error(`\u53D1\u9001\u5931\u8D25: ${m.code} - ${m.msg||"Unknown error"}`);let f=m.var?.[0];return{mid:String(f?.mid||""),to:e.uid,files:s}}async uploadFile(e,s,n){let i=J.resolve(e),a=J.basename(i);if(!E.existsSync(i))throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${e}`);let t=E.statSync(i),r=Ln.lookup(i)||"application/octet-stream",c=E.readFileSync(i),l=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:t.size,composeId:n,fileName:a,uid:s,contentType:r}});if(l.code!=="S_OK")throw new Error(`\u51C6\u5907\u4E0A\u4F20\u5931\u8D25: ${l.code}`);let d=l.var?.attachmentId;if(!d)throw new Error("prepare \u672A\u8FD4\u56DE attachmentId");let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${this.sid}&composeId=${encodeURIComponent(n)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(s)}`,x={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([v,L])=>`${v}=${L}`).join("; ")},g=await fe(m,c,x,6e4),b=g.headers["set-cookie"];if(b)for(let v of b.split(",")){let L=v.match(/^([^=]+)=([^;]+)/);L&&(this.cookies[L[1].trim()]=L[2].trim())}let h;try{h=JSON.parse(g.data)}catch{throw new Error(`directData \u8FD4\u56DE\u975E JSON: ${g.data?.substring?.(0,400)}`)}if(h.code!=="S_OK")throw new Error(`\u4E0A\u4F20\u6570\u636E\u5931\u8D25: ${h.code}`);let w=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:n,fileName:a,item:"fileName",attachmentId:d,uid:s}});if(w.code!=="S_OK")throw new Error(`\u79FB\u52A8\u6587\u4EF6\u5931\u8D25: ${w.code}`);let k=w.var,S=k?.fileId,A=k?.uid;if(!S)throw new Error("moveToNetFolder \u672A\u8FD4\u56DE fileId");return{fileId:S,fileUid:A||"",fileName:a}}async uploadFileWithFlow(e,s,n){let i=J.resolve(e),a=J.basename(i);if(!E.existsSync(i))throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${e}`);let t=E.statSync(i),r=Ln.lookup(i)||"application/octet-stream",c=E.readFileSync(i),l=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:t.size,composeId:n,fileName:a,uid:s,contentType:r}});if(l.code!=="S_OK")throw new Error(`\u51C6\u5907\u4E0A\u4F20\u5931\u8D25: ${l.code}`);let d=l.var?.attachmentId;if(!d)throw new Error("prepare \u672A\u8FD4\u56DE attachmentId");let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${this.sid}&composeId=${encodeURIComponent(n)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(s)}`,x={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([v,L])=>`${v}=${L}`).join("; ")},g=await fe(m,c,x,6e4),b=g.headers["set-cookie"];if(b)for(let v of b.split(",")){let L=v.match(/^([^=]+)=([^;]+)/);L&&(this.cookies[L[1].trim()]=L[2].trim())}let h;try{h=JSON.parse(g.data)}catch{throw new Error(`directData \u8FD4\u56DE\u975E JSON: ${g.data?.substring?.(0,400)}`)}if(h.code!=="S_OK")throw new Error(`\u4E0A\u4F20\u6570\u636E\u5931\u8D25: ${h.code}`);let w=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:n,fileName:a,item:"fileName",attachmentId:d,uid:s}});if(w.code!=="S_OK")throw new Error(`\u79FB\u52A8\u6587\u4EF6\u5931\u8D25: ${w.code}`);let k=w.var,S=k?.fileId,A=k?.uid;if(!S)throw new Error("moveToNetFolder \u672A\u8FD4\u56DE fileId");return{fileId:S,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)}&fallback=false`,t={Cookie:`Cim.sid=${this.sid}; Cim=${this.cookies.Cim||""}`},r=await Ce(a,t);if(!i)throw new Error("\u6587\u4EF6\u540D\u662F\u5FC5\u9700\u7684\uFF0C\u8BF7\u4ECE\u6D88\u606F\u9644\u4EF6\u5143\u6570\u636E (attachment.title) \u83B7\u53D6\u6587\u4EF6\u540D");let c=bn(i),l=n?J.resolve(n):J.join(us.tmpdir(),c),u=J.dirname(l);return E.existsSync(u)||E.mkdirSync(u,{recursive:!0}),E.writeFileSync(l,r.data),{filePath:l,fileName:c,fileSize:r.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(`\u521B\u5EFA\u8BA8\u8BBA\u7EC4\u5931\u8D25: ${a.code} - ${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(`\u5220\u9664\u8BA8\u8BBA\u7EC4\u5931\u8D25\uFF1A${s.code} - ${s.msg||""}`);return!0}createSocketClient(e){return pe.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))}}})}};function P(o){let e=he.fromConfig(o);if(!e)throw new Error("\u672A\u914D\u7F6E Lunkr \u8D26\u53F7\uFF0C\u8BF7\u8FD0\u884C\uFF1Alunkr-cli login");return e}async function Qi(o){try{let e=new U(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(),r=i.substring(a+1).trim();s[t]=r}}return e.setCookies(s),await e.checkSessionValid(o.sid)}catch{return!1}}async function An(o){try{let e=new U(o.baseUrl,{apiPath:o.apiPath}),s={};for(let i of o.cookie.split(";")){let a=i.trim();if(a.includes("=")){let t=a.indexOf("="),r=a.substring(0,t).trim(),c=a.substring(t+1).trim();s[r]=c}}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 Rn(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(` ${p("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?` ${p("messages.mode_temporary_desc")}`:` ${p("messages.mode_persistent_desc")}`),console.log("");let t=_();if(i)console.log(p("messages.force_relogin"));else{let g=t.accounts?.[0];if(g?.session?.sid){if(await Qi(g.session)){let h=await An(g.session);h&&(g.session.senderName=h,T(t)),console.log(p("messages.already_logged_in")),h&&console.log(`${p("labels.name")}: ${h}`),console.log(`UID: ${g.session.selfUid}`),console.log("");return}s&&(console.log(p("errors.session_expired_login")),console.log(""),console.log(p("status.login_hint")))}}let r=t.accounts?.[0];if(r?.apiToken&&!i){console.log(p("messages.authenticating_token"));let g=await Q(r.email||r.accountId,r.apiToken,t.device_uuid,{debug:n});if(g.success&&g.sid&&g.cookie){let b=g.selfUid||r.session?.selfUid;r.session={sid:g.sid,cookie:g.cookie,baseUrl:Ge,apiPath:ge,selfUid:b};let h=await An(r.session);h&&(r.session.senderName=h),T(t),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(` ${p("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(""),h&&console.log(` ${p("labels.name")}: ${h}`),console.log(` ${p("labels.email")}: ${g.email}`),console.log(""),console.log(` ${p("labels.config")}: ${W()}`),console.log("");return}console.log(p("login.token_expired_need_rescan")),n&&console.log(p("login.token_login_error",{error:g.error||"Unknown"}))}let c=await gn({device:{device_uuid:t.device_uuid,device_os:t.device_os,device_model:t.device_model,device_name:t.device_name},debug:n});c.success||(console.error(""),console.error(p("login.qrcode_login_failed",{error:c.error||"Unknown"})),process.exit(1)),(!c.apiToken||!c.email)&&(console.error(""),console.error(p("login.qrcode_login_no_token")),process.exit(1)),console.log(""),console.log(p("messages.authenticating_with_token"));let l=await Q(c.email,c.apiToken,c.deviceUuid||t.device_uuid,{debug:n});l.success||(console.error(""),console.error(p("login.token_login_failed",{error:l.error||"Unknown"})),process.exit(1)),(!l.sid||!l.cookie)&&(console.error(""),console.error(p("login.token_login_no_session")),process.exit(1));let u=l.selfUid||c.selfUid,d={sid:l.sid,cookie:l.cookie,baseUrl:Ge,apiPath:ge,selfUid:u},m=await An(d);m&&(d.senderName=m);let f={accountId:c.email,email:c.email,enabled:!0,session:d,apiToken:a?void 0:c.apiToken};t=_();let x=t.accounts?.findIndex(g=>g.accountId===c.email)??-1;x>=0&&t.accounts?t.accounts[x]=f:(t.accounts||(t.accounts=[]),t.accounts.push(f)),T(t),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(` ${p("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(` ${p("labels.name")}: ${m}`),console.log(` ${p("labels.email")}: ${c.email}`),console.log(` UID: ${u}`),console.log(a?` ${p("labels.mode")}: ${p("messages.mode_temporary")}`:` ${p("labels.mode")}: ${p("messages.mode_persistent")}`),console.log(""),console.log(` ${p("labels.config")}: ${W()}`),console.log("")}import*as In from"readline";import*as fs from"readline";var _n=class extends Error{constructor(s,n,i){super(s);this.sid=n;this.authType=i;this.name="OtpRequiredError"}};var jn="https://lunkr.coremail.cn",Un="/lunkr/s/json",Zr=300*1e3;function gs(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 Le.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 U(i.baseUrl,{apiPath:i.apiPath}),r=pn({device_uuid:e?.deviceUuid||o.deviceUuid,device_name:e?.deviceName||o.deviceName});return n&&console.log(`Device info: ${JSON.stringify(r,null,2)}`),{success:!0,session:await Xi(t,o.email,o.password,a,r,i,s,n)}}catch(s){return s instanceof _n?{success:!1,requiresOtp:!0,otpSid:s.sid,error:s.message}:{success:!1,error:s instanceof Error?s.message:String(s)}}}async function Xi(o,e,s,n,i,a,t,r=!1){let c={type:n.authType,e:n.rsaE,n:n.rsaN},l=c.type;r&&(console.log(`[Login] authType: ${l}`),console.log(`[Login] RSA e: ${c.e?c.e.substring(0,20)+"...":"(empty)"}`),console.log(`[Login] RSA n: ${c.n?c.n.substring(0,40)+"...":"(empty)"}`));let u;l&&l.toLowerCase()==="rsa"&&c?.e&&c?.n?((t||r)&&console.log("Encrypting password with RSA"),u=nn(s,c.e,c.n),r&&console.log(`[Login] Encrypted password length: ${u.length}`)):(r&&console.log(`[Login] WARNING: Password NOT encrypted (authType=${l})`),u=s);let d=Math.floor(Date.now()/1e3).toString(),m=un(i.uuid,e,i.friendlyName),f=dn(m),x=mn(m,d,f,"");r&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${m.substring(0,20)}...`),console.log(`[Login] signature: ${x.substring(0,20)}...`));let g={uid:e,password:u,authType:l,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:x,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(r){let v={...g},L=String(v.password||"");v.password=L.length>10?L.substring(0,20)+`...(length: ${L.length})`:"***",console.log(`[Login] Payload: ${JSON.stringify(v,null,2)}`)}let b=await o.postJson({func:"user:login",sid:n.sid,payload:g,debug:r||t});r&&console.log(`[Login] Response: ${JSON.stringify(b,null,2)}`);let h=b.code,w=b.var||{};if(h==="FA_NEED_VERIFY_CODE"||h==="FA_USER_IN_GRAYLIST"){let v=a.uri||`${a.baseUrl}/coremail/`;throw new R(`\u9700\u8981\u9A8C\u8BC1! \u9519\u8BEF\u7801: ${h}
1
+ var Gs=Object.create;var io=Object.defineProperty;var Ns=Object.getOwnPropertyDescriptor;var Ms=Object.getOwnPropertyNames;var zs=Object.getPrototypeOf,Bs=Object.prototype.hasOwnProperty;var Ks=(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 Oe=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports);var Vs=(o,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ms(e))!Bs.call(o,i)&&i!==s&&io(o,i,{get:()=>e[i],enumerable:!(n=Ns(e,i))||n.enumerable});return o};var ao=(o,e,s)=>(s=o!=null?Gs(zs(o)):{},Vs(e||!o||!o.__esModule?io(s,"default",{value:o,enumerable:!0}):s,o));var Co=Oe((Ea,ti)=>{ti.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 Lo=Oe((Ga,So)=>{So.exports=Co()});var _o=Oe((Na,Uo)=>{var Ao={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},Ro={nginx:10,apache:20,iana:40,default:30},jo={application:1,font:2,audio:2,video:3,default:0};Uo.exports=function(e,s="default"){if(e==="application/octet-stream")return 0;let[n,i]=e.split("/"),a=i.replace(/(\.|x-).*/,"$1"),t=Ao[a]||Ao.default,r=Ro[s]||Ro.default,c=jo[n]||jo.default,l=1-e.length/100;return t+r+c+l}});var pn=Oe($=>{"use strict";var le=Lo(),ri=Ks("path").extname,Io=_o(),Po=/^\s*([^;\s]*)(?:;|\s|$)/,ci=/^text\//i;$.charset=Oo;$.charsets={lookup:Oo};$.contentType=li;$.extension=ln;$.extensions=Object.create(null);$.lookup=pi;$.types=Object.create(null);$._extensionConflicts=[];ui($.extensions,$.types);function Oo(o){if(!o||typeof o!="string")return!1;var e=Po.exec(o),s=e&&le[e[1].toLowerCase()];return s&&s.charset?s.charset:e&&ci.test(e[1])?"UTF-8":!1}function li(o){if(!o||typeof o!="string")return!1;var e=o.indexOf("/")===-1?$.lookup(o):o;if(!e)return!1;if(e.indexOf("charset")===-1){var s=$.charset(e);s&&(e+="; charset="+s.toLowerCase())}return e}function ln(o){if(!o||typeof o!="string")return!1;var e=Po.exec(o),s=e&&$.extensions[e[1].toLowerCase()];return!s||!s.length?!1:s[0]}function pi(o){if(!o||typeof o!="string")return!1;var e=ri("x."+o).toLowerCase().slice(1);return e&&$.types[e]||!1}function ui(o,e){Object.keys(le).forEach(function(n){var i=le[n],a=i.extensions;if(!(!a||!a.length)){o[n]=a;for(var t=0;t<a.length;t++){var r=a[t];e[r]=di(r,e[r],n);let c=mi(r,e[r],n);c!==e[r]&&$._extensionConflicts.push([r,c,e[r]])}}})}function di(o,e,s){var n=e?Io(e,le[e].source):0,i=s?Io(s,le[s].source):0;return n>i?e:s}function mi(o,e,s){var n=["nginx","apache",void 0,"iana"],i=e?n.indexOf(le[e].source):0,a=s?n.indexOf(le[s].source):0;return $.types[ln]!=="application/octet-stream"&&(i>a||i===a&&$.types[ln]?.slice(0,12)==="application/")||i>a?e:s}});function to(o){return{}}function ro(o){return{accountId:o.accountId}}function co(o){return{}}import{Type as w}from"@sinclair/typebox";import{Value as Ra}from"@sinclair/typebox/value";var Js=w.Object({name:w.String({minLength:1,description:"Discussion name is required"}),agentId:w.Optional(w.String()),creatorUid:w.String({minLength:1,description:"Creator UID is required"}),createdAt:w.Union([w.String(),w.Number()],{description:"Creation timestamp"})}),Ws=w.Union([w.Literal("allow"),w.Literal("deny"),w.Literal("whitelist")]),Hs=w.Union([w.Literal("allow"),w.Literal("deny"),w.Literal("whitelist")]),en=w.Object({enabled:w.Optional(w.Boolean({default:!0})),botName:w.Optional(w.String({minLength:1,default:"Bot"})),commandPrefix:w.Optional(w.String({minLength:1,default:"/"})),botDiscussions:w.Optional(w.Record(w.String(),Js)),dmPolicy:w.Optional(Ws),allowFrom:w.Optional(w.Array(w.String())),groupPolicy:w.Optional(Hs),groups:w.Optional(w.Array(w.String()))}),Qs=w.Object({email:w.String({minLength:1,description:"Email is required"}),password:w.String({minLength:1,description:"Password is required"}),deviceUuid:w.Optional(w.String()),deviceName:w.Optional(w.String())}),Xs=w.Object({sid:w.String(),selfUid:w.String(),cookie:w.String(),baseUrl:w.String(),apiPath:w.String()}),Ys=w.Object({accountId:w.String({minLength:1,description:"Account ID is required"}),name:w.Optional(w.String()),enabled:w.Optional(w.Boolean({default:!0})),credentials:Qs,config:en,session:w.Optional(Xs)}),ja=w.Record(w.String(),Ys);var V="default";import*as Z from"fs";import*as rn from"path";import*as se from"os";import*as T from"crypto";import*as $e from"os";var oe=class extends Error{constructor(e){super(e),this.name="EncryptionError"}},fe=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||$e.hostname(),n=this.username||$e.userInfo().username;if(!e)throw new oe("device_uuid not set, cannot generate encryption key");let i=`lunkr-mcp-key-${e}-${s}-${n}`;this.key=T.createHash("sha256").update(i).digest()}return this.key}encrypt(e){if(!e)return"";let s=this.getKey(),n=T.randomBytes(12),i=T.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 oe("Ciphertext too short");let i=n.subarray(0,12),a=n.subarray(12,-16),t=n.subarray(-16),r=T.createDecipheriv("aes-256-gcm",s,i);r.setAuthTag(t);try{return Buffer.concat([r.update(a),r.final()]).toString("utf8")}catch{throw new oe("Decryption failed, config file may be corrupted or key changed")}}};function nn(o){return o<128?Buffer.from([o]):o<256?Buffer.from([129,o]):Buffer.from([130,o>>8&255,o&255])}function lo(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]),nn(s.length),s])}function po(o){return Buffer.concat([Buffer.from([48]),nn(o.length),o])}function Zs(o){let e=Buffer.concat([Buffer.from([0]),o]);return Buffer.concat([Buffer.from([3]),nn(e.length),e])}function uo(o,e){let s=lo(e),n=lo(o),i=po(Buffer.concat([s,n])),a=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return po(Buffer.concat([a,Zs(i)]))}function on(o,e,s){try{let n=uo(e,s),i=T.createPublicKey({key:n,format:"der",type:"spki"});return T.publicEncrypt({key:i,padding:T.constants.RSA_PKCS1_PADDING},Buffer.from(o,"utf8")).toString("base64")}catch{return o}}function sn(o,e){let s=Buffer.from(e,"base64"),n=T.createPublicKey({key:s,format:"der",type:"spki"});return T.publicEncrypt({key:n,padding:T.constants.RSA_PKCS1_PADDING},Buffer.from(o,"utf8")).toString("base64")}var mo=".lunkr",fo="config.json",qe="Bot";function ke(){return rn.join(se.homedir(),mo)}function W(){return rn.join(ke(),fo)}function go(){let o=ke();Z.existsSync(o)||Z.mkdirSync(o,{recursive:!0})}function ei(){let o=se.hostname(),e=se.platform(),s=se.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:xo(),device_os:n,device_model:i,device_name:o}}function xo(){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 tn(){return{...ei(),bot_name:qe,accounts:[]}}function ho(o){let e=new fe;return e.setDeviceUuid(o.device_uuid),e.setDeviceName(o.device_name),e}function an(o){if(!o)return!1;try{return Buffer.from(o,"base64").length>=28}catch{return!1}}function ni(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 oi(o,e){let s={...o};if(s.session){let n={...s.session};try{n.sid&&an(n.sid)&&(n.sid=e.decrypt(n.sid))}catch{n.sid=""}try{n.cookie&&an(n.cookie)&&(n.cookie=e.decrypt(n.cookie))}catch{n.cookie=""}s.session=n}try{s.apiToken&&an(s.apiToken)&&(s.apiToken=e.decrypt(s.apiToken))}catch{s.apiToken=void 0}return s}function P(){let o=W();if(!Z.existsSync(o))return tn();try{let e=Z.readFileSync(o,"utf-8"),s=JSON.parse(e);if(s.device_uuid||(s.device_uuid=xo()),s.bot_name||(s.bot_name=qe),s.accounts||(s.accounts=[]),s.accounts?.length){let n=ho(s);try{s.accounts=s.accounts.map(i=>oi(i,n))}catch(i){i instanceof oe&&console.warn("Warning: Failed to decrypt config, values may be unencrypted or from different machine/user")}}return s}catch{return tn()}}function D(o){go();let e=W(),s={...o,accounts:o.accounts?.map(n=>{let i=ho(o);return ni(n,i)})};Z.writeFileSync(e,JSON.stringify(s,null,2),"utf-8")}function Fe(o){let e=o||P();return e.accounts?.length&&(e.accounts.find(n=>n.enabled&&n.session?.sid)||e.accounts.find(n=>n.session?.sid))||null}function cn(o){return(o||P()).bot_name||qe}function si(){return P().accounts||[]}function vo(o){let e=si();if(o&&o!==V){let n=e.find(i=>i.accountId===o);return n?{accountId:n.accountId,name:n.name,enabled:n.enabled,session:n.session,config:n.config}:null}let s=e.find(n=>n.session);return s?{accountId:s.accountId,name:s.name,enabled:s.enabled,session:s.session,config:s.config}:null}function bo(o){return o.channels?.["lunkr-openclaw"]}function M(o,e){let s=bo(o),n=e??V,i=vo(n);if(!i?.session||s?.enabled===!1)return null;let a=s?.enabled??!0,t=i.session;return{accountId:n,name:i.name??s?.botName,enabled:a,selfUid:i.session.selfUid,sid:i.session.sid,cookie:i.session.cookie,botName:s?.botName??"Bot",commandPrefix:s?.commandPrefix??"/bot",botDiscussions:s?.botDiscussions??{},senderName:t.senderName,config:s??{enabled:!0,botName:"Bot",commandPrefix:"/bot",botDiscussions:{},dmPolicy:"allow",allowFrom:[],groupPolicy:"allow",groups:[]},lunkrConfig:i.session}}function Te(o,e){return{...o,sid:e.sid,cookie:e.cookie,selfUid:e.selfUid||o.selfUid,lunkrConfig:e}}var ko={listAccountIds:o=>vo(V)?.session?[V]:[],resolveAccount:(o,e)=>M(o,e),defaultAccountId:()=>V,isConfigured:o=>o?!!(o.sid&&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.selfUid);return{accountId:o.accountId,name:o.name,enabled:o.enabled,configured:e}},setAccountEnabled:o=>{let{cfg:e,enabled:s}=o,n=bo(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 ii(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 ai(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 wo={resolveDmPolicy:o=>{let{cfg:e,accountId:s,account:n}=o;return ii(e,s??V,n)},collectWarnings:o=>ai(o)};var Yo=ao(pn(),1);import*as B from"fs";import*as te from"path";import*as Xo from"os";import*as ye from"https";import*as De from"zlib";import{HttpsProxyAgent as fi}from"https-proxy-agent";var we,$o=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;$o&&(we=new fi($o));function Ee(o,e){if(!e)return o.toString("utf8");let s=e.toLowerCase().split(",").map(n=>n.trim());try{if(s.includes("gzip"))return De.gunzipSync(o).toString("utf8");if(s.includes("deflate"))return De.inflateSync(o).toString("utf8")}catch{}return o.toString("utf8")}var Ge={accept:"*/*","accept-encoding":"gzip, deflate",connection:"keep-alive","user-agent":"python-httpx/0.27.2"};function H(o,e,s,n){return new Promise((i,a)=>{let t=new URL(o),r=Buffer.from(e,"utf8"),c={hostname:t.hostname,port:t.port||443,path:t.pathname+t.search,method:"POST",headers:{...Ge,...s,"Content-Length":r.length},timeout:n,agent:we},l=ye.request(c,p=>{let d=[];p.on("data",m=>{d.push(m)}),p.on("end",()=>{let m={};if(p.headers)for(let[g,b]of Object.entries(p.headers))b!==void 0&&(m[g.toLowerCase()]=Array.isArray(b)?b.join(", "):b);let f=Buffer.concat(d),x=Ee(f,p.headers["content-encoding"]);i({status:p.statusCode||0,data:x,headers:m})})});l.on("error",a),l.on("timeout",()=>{l.destroy(),a(new Error("Request timeout"))}),l.write(r),l.end()})}function pe(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:{...Ge,...e},timeout:s,agent:we},r=ye.request(t,c=>{let l=[];c.on("data",p=>{l.push(p)}),c.on("end",()=>{let p={};if(c.headers)for(let[f,x]of Object.entries(c.headers))x!==void 0&&(p[f.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let d=Buffer.concat(l),m=Ee(d,c.headers["content-encoding"]);n({status:c.statusCode||0,data:m,headers:p})})});r.on("error",i),r.on("timeout",()=>{r.destroy(),i(new Error("Request timeout"))}),r.end()})}function Ce(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:{...Ge,...e},timeout:s,agent:we},r=ye.request(t,c=>{let l=[];c.on("data",p=>{l.push(p)}),c.on("end",()=>{let p={};if(c.headers)for(let[f,x]of Object.entries(c.headers))x!==void 0&&(p[f.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let d=Buffer.concat(l),m=c.headers["content-encoding"];if(m){let f=Ee(d,m);n({status:c.statusCode||0,data:Buffer.from(f,"utf8"),headers:p})}else n({status:c.statusCode||0,data:d,headers:p})})});r.on("error",i),r.on("timeout",()=>{r.destroy(),i(new Error("Request timeout"))}),r.end()})}function ge(o,e,s,n){return new Promise((i,a)=>{let t=new URL(o),r={hostname:t.hostname,port:t.port||443,path:t.pathname+t.search,method:"POST",headers:{...Ge,...s,"Content-Length":e.length},timeout:n,agent:we},c=ye.request(r,l=>{let p=[];l.on("data",d=>{p.push(d)}),l.on("end",()=>{let d={};if(l.headers)for(let[x,g]of Object.entries(l.headers))g!==void 0&&(d[x.toLowerCase()]=Array.isArray(g)?g.join(", "):g);let m=Buffer.concat(p),f=Ee(m,l.headers["content-encoding"]);i({status:l.statusCode||0,data:f,headers:d})})});c.on("error",a),c.on("timeout",()=>{c.destroy(),a(new Error("Request timeout"))}),c.write(e),c.end()})}import*as Ae from"crypto";import*as ie from"os";import{XMLParser as gi}from"fast-xml-parser";var Ne="https://lunkr.coremail.cn",xe="/lunkr/s/json",j=class extends Error{constructor(e){super(e),this.name="AuthError"}},Se=class extends j{constructor(e){super(e),this.name="PasswordError"}};var Le=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 pe(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 j(`Domain query failed: ${i}, cause: ${n.cause}`):new j(`Domain query failed: ${i}`)}}static parseXmlResponse(e){let n=new gi({ignoreAttributes:!1,attributeNamePrefix:"@_"}).parse(e),i=n.result||n.querydomain;if(!i)throw new j("Domain query response parse failed: root element not found");let a=i.code;if(a!=="S_OK")throw new j(`Domain query returned error: ${a}`);let t=i.provider;if(!t)throw new j("Provider not found in domain query response");let r=[];for(let[c,l]of Object.entries(t)){if(c.startsWith("@_")||typeof l!="object"||!l)continue;let p=Array.isArray(l)?l:[l];for(let d of p){let m=d["@_uri"];if(!m||!m.startsWith("http://")&&!m.startsWith("https://"))continue;let f=new URL(m),x=`${f.protocol}//${f.host}`,g=f.pathname.replace(/\/$/,""),b=g?`${g}/s/json`:"/s/json";r.push({type:c,uri:m,baseUrl:x,apiPath:b,apiUrl:`${x}${b}`})}}return r.sort((c,l)=>{let[p,d]=this.getTypePriority(c.type),[m,f]=this.getTypePriority(l.type);return p!==m?p-m:d-f}),r}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 r=await H(a,"{}",t,3e4);if(r.status!==200)return null;let c=JSON.parse(r.data);if(c.code!=="S_OK")return null;let l=c.var||{},p=l.key||{},d=l.sid,m=p.type;return!d||!m?null:{sid:d,authType:m,rsaE:p.e||"",rsaN:p.n||""}}catch{return null}}static async discoverAvailableServer(e){let s=this.extractDomain(e);if(!s)throw new j(`Cannot extract domain from email: ${e}`);console.log(`Querying domain: ${s}`);let n=await this.queryDomain(s);if(n.length===0)throw new j(`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 j("All server addresses are unavailable")}},I=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(([l,p])=>`${encodeURIComponent(l)}=${encodeURIComponent(String(p))}`).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(([l,p])=>`${l}=${p}`).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 r=await H(i,t,a,this.timeout),c=r.headers["set-cookie"];if(c){let l=c.split(/, (?=[^=]+=[^;]+)/);for(let p of l){let d=p.match(/^([^=]+)=([^;]+)/);d&&(this._cookies[d[1].trim()]=d[2].trim())}}try{return JSON.parse(r.data)}catch{throw new j(`API returned non-JSON: ${r.data?.substring?.(0,400)||r.data}`)}}async checkSessionValid(e){try{return(await this.postJson({func:"cim.common:getOrgInfo",sid:e})).code==="S_OK"}catch{return!1}}};function un(o){let e=ie.platform(),s=ie.release(),n=ie.arch(),i=ie.hostname(),a=o?.device_uuid?.trim()||"",t=o?.device_os?.trim()||"",r=o?.device_model?.trim()||"",c=o?.device_name?.trim()||"";if(!a){let l=`${i}-${e}-${n}`;a=Ae.createHash("sha256").update(l).digest("hex").substring(0,40)}return r||(e==="win32"?r="windows":e==="darwin"?r="mac":e==="linux"?r="Linux":r=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}`),c||(c=i),{deviceType:"AI-Bot",friendlyName:c,model:r,os:t,uuid:a}}function dn(o,e,s){let n=o+e+s;return"!AIBot:"+Ae.createHash("sha1").update(n).digest("hex")}function mn(o){let e=o+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return Ae.createHash("sha1").update(e).digest("hex")}function fn(o,e,s,n=""){let i=l=>encodeURIComponent(l).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A"),a=i(o),t=i(s),r;if(n){let l=i(n);r=`accessToken=${a}&nonce=${l}&timestamp=${e}&secret=${t}`}else r=`accessToken=${a}&timestamp=${e}&secret=${t}`;return Ae.createHash("sha1").update(r).digest().toString("base64")}import*as qo from"https";import*as Fo from"http";import{WebSocket as gn}from"ws";import{v4 as xi}from"uuid";function Me(...o){process.env.LUNKR_VERBOSE==="1"&&console.log("[SocketIO]",...o)}var ue=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;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||""}static fromLunkrConfig(e,s,n,i){let a={"Cim.sid":s};for(let r of n.split(";")){let c=r.trim();if(c.includes("=")){let[l,p]=c.split("=",2);a[l.trim()]=p.trim()}}let t=new o({baseUrl:e,cookies:a,eventCallbacks:i?.eventCallbacks,uid:i?.uid,username:i?.username});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=${this.sessionId}`;try{let n=await pe(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=${this.sessionId}`;try{let n=await H(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`,c=(await pe(t,{Cookie:s},1e4)).data,l=c.indexOf('0{"sid"');if(l>=0&&(c=c.substring(l)),!c.startsWith("0{"))return console.error("Handshake response format error:",c.substring(0,80)),!1;let p=JSON.parse(c.substring(1));if(this.eioSid=p.sid,this.pingInterval=p.pingInterval??25e3,!p.upgrades?.includes("websocket"))return console.error("Server does not support WebSocket upgrade"),!1}catch(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=${this.eioSid}`;return new Promise(t=>{this.ws=new gn(a,{headers:{Cookie:this.buildCookieHeader()},agent:n?new qo.Agent({rejectUnauthorized:!1}):new Fo.Agent}),this.ws.once("open",()=>{Me("WebSocket open, sending 2probe"),this.ws.send("2probe")}),this.ws.once("message",r=>{let c=r.toString();Me("Received during handshake:",c.substring(0,50)),c.includes("3probe")?(Me("Upgrade confirmed, sending 5"),this.ws.send("5"),this.connected=!0,this.running=!0,this.startMessageLoop(),this.startPingLoop(),Me("Connection complete, connected=true, running=true"),t(!0)):(console.error("[SocketIO] Upgrade handshake failed, received:",c.substring(0,50)),t(!1))}),this.ws.once("error",r=>{console.error("WebSocket connection failed:",r.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&&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===gn.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:xi()})}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!==gn.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})}};var To={"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}},hi=Object.keys(To);import*as Be from"https";import*as Go from"crypto";import{WebSocket as Do}from"ws";import*as No from"qrcode-terminal";import{v4 as Eo}from"uuid";var Re="lunkr.coremail.cn",bi={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"};async function ze(o,e,s,n){return new Promise((i,a)=>{let t=JSON.stringify(s),r=`${o}?func=${e}`;n?.sid&&(r+=`&sid=${n.sid}`);let c=n?.baseUrl||Re,l={...bi,"Content-Length":Buffer.byteLength(t)};n?.cookies&&Object.keys(n.cookies).length>0&&(l.Cookie=Object.entries(n.cookies).map(([m,f])=>`${m}=${f}`).join("; "));let d=Be.request({hostname:c,port:443,path:r,method:"POST",headers:l},m=>{let f="",x={},g=m.headers["set-cookie"];if(g)for(let b of g){let h=b.match(/^([^=]+)=([^;]+)/);h&&(x[h[1].trim()]=h[2].trim())}m.on("data",b=>f+=b),m.on("end",()=>{try{i({data:JSON.parse(f),cookies:x})}catch{a(new Error(`Invalid JSON: ${f}`))}})});d.on("error",a),d.write(t),d.end()})}async function ki(o){return new Promise((e,s)=>{Be.get(o,n=>{let i="";n.on("data",a=>i+=a),n.on("end",()=>e(i))}).on("error",s)})}async function xn(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 ze("/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 r=`https://${Re}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=await ki(r),l=c.indexOf('0{"sid"'),p=l>=0?c.substring(l):c;if(!p.startsWith("0{"))return{success:!1,error:"Handshake format error"};let d=JSON.parse(p.substring(1)),m=d.sid,f=d.pingInterval??25e3;i(`eioSid: ${m}, pingInterval: ${f}`),i("[3] WebSocket connection...");let x=`wss://${Re}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${m}`;return new Promise(g=>{let b=setTimeout(()=>{h.close(),g({success:!1,error:"Timeout waiting for QR scan"})},s),h=new Do(x,{headers:{Host:Re,Origin:`https://${Re}`,"User-Agent":"Mozilla/5.0"}}),y=!1,k;h.on("open",()=>{i("WebSocket connected, sending 2probe..."),h.send("2probe")}),h.on("message",C=>{let A=C.toString();if(i(`Received: ${A.substring(0,100)}`),A.includes("3probe")){i("Received 3probe, sending 5 and auth"),h.send("5");let v={clientId:`webmail:${t}`,sid:t,msg_v:100,uuid:Eo(),TmpSes:1};h.send(`42["auth",${JSON.stringify(v)}]`);let S=`https://www.coremail.cn/app/poster.html?action=qrLogin&sid=${t}`;console.log(""),console.log(" \u{1F99E} OpenClaw \xB7 \u8BBA\u5BA2\u626B\u7801\u767B\u5F55"),console.log(""),No.generate(S,{small:!0},U=>{console.log(U)}),console.log(" \u8BF7\u4F7F\u7528\u8BBA\u5BA2 App \u626B\u63CF\u4E0A\u65B9\u4E8C\u7EF4\u7801"),console.log(""),e&&console.log(`QR URL: ${S}
2
+ `),k=setInterval(()=>{h.readyState===Do.OPEN&&h.send("2")},f)}if(A.startsWith("42"))try{let v=JSON.parse(A.substring(2)),S=v[0],U=v[1];if(S==="ready"&&!y){y=!0,i("Auth ready, subscribing to scan events...");let _=`/onstat/mail/${t}/op_app_scanqrcode`;h.send(`42["subscribe",{"topic":"${_}"}]`)}if(S==="message"&&U?.payload){let _=typeof U.payload=="string"?JSON.parse(U.payload):U.payload;if(i(`Scan status: ${_.status}`),_.status==="verify"&&console.log("\u5DF2\u626B\u7801\uFF0C\u7B49\u5F85\u786E\u8BA4..."),_.status==="auth"){i(`Confirmed: ${_.user?.email}`);let R=_.user?.email,F={uid:R,authSid:t,authToken:_.token};i("Calling checkVersionAndLogin..."),ze("/lunkr/s/json","cim.user:checkVersionAndLogin",F).then(G=>{let N=G.data,me=G.cookies;if(i(`Login result: ${JSON.stringify(N)}`),N.code==="S_OK"&&N.var?.sid){let ve=N.var.sid,be=R,Ze=N.var.self_uid;i(`Login successful, sid: ${ve}, email: ${be}, selfUid: ${Ze}`),i("Calling getApiToken...");let oo=n||{device_uuid:Eo(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};ze("/lunkr/s/json","cim.user:getApiToken",oo,{sid:ve,baseUrl:"betaweb.lunkr.cn",cookies:me}).then(Pe=>{let so=Pe.data;i(`Token result: ${JSON.stringify(so)}`),clearTimeout(b),clearInterval(k),h.close(),g({success:!0,apiToken:so.var?.api_token,email:be,selfUid:Ze,deviceUuid:oo.device_uuid})}).catch(Pe=>{console.error(`getApiToken failed: ${Pe.message}`),clearTimeout(b),clearInterval(k),h.close(),g({success:!1,error:`getApiToken failed: ${Pe.message}`})})}else clearTimeout(b),clearInterval(k),h.close(),g({success:!1,error:`Login failed: ${JSON.stringify(N)}`})}).catch(G=>{clearTimeout(b),clearInterval(k),h.close(),g({success:!1,error:G.message})})}}}catch(v){i(`Event parse failed: ${v.message}`)}A==="2"&&h.send("3")}),h.on("error",C=>{i(`WebSocket error: ${C.message}`),clearTimeout(b),clearInterval(k),g({success:!1,error:C.message})}),h.on("close",()=>{i("WebSocket closed"),clearTimeout(b),clearInterval(k)})})}catch(a){return{success:!1,error:a.message}}}async function Q(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(),r=Go.createHash("sha256").update(`${t}:${s}:${e}`).digest("base64");a(`timestamp: ${t}`),a(`token_hash: ${r}`);let c=await ze("/lunkr/s/json","cim.user:getLunkrSid",{email:o,timestamp:t,device_uuid:s,token_hash:r},{baseUrl:"betaweb.lunkr.cn"});if(a(`Result: ${JSON.stringify(c.data)}`),c.data.code==="S_OK"&&c.data.var?.sid){let l=c.data.var.cookie?`Cim=${c.data.var.cookie}`:c.cookies?.Cim?`Cim=${c.cookies.Cim}`:void 0;return{success:!0,sid:c.data.var.sid,email:o,selfUid:c.data.var.uid,cookie:l}}else return c.data.code==="FA_REQUEST_EXPIRED"?{success:!1,error:"\u8BA4\u8BC1\u5931\u8D25\uFF1A\u672C\u5730\u65F6\u949F\u4E0D\u51C6\u786E\uFF0C\u8BF7\u8C03\u6574\u672C\u5730\u65F6\u949F\u540E\u91CD\u8BD5\u3002"}:{success:!1,error:`getLunkrSid failed: ${c.data.code} - ${c.data.msg||"Unknown error"}`}}catch(t){return{success:!1,error:t.message}}}import*as Ve from"path";function Mo(o,e){return`[@!${o||"Unknown"}\u7684${e||"Bot"}:]`}function ee(o,e,s){return Mo(e,s)+o}var yi=/^#\d+#U$/,wi=/^#\d+#T$/,Ci=/^t\.\./i,Si=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function hn(o){return yi.test(o.trim())}function vn(o){return wi.test(o.trim())}function Ke(o){return Ci.test(o.trim())}function bn(o){return Si.test(o.trim())}function X(o){let e=o.trim();return hn(e)||vn(e)||Ke(e)||bn(e)}function Je(o){let e=o.trim();return hn(e)||bn(e)&&!Ke(e)?"user":vn(e)||Ke(e)?"group":"unknown"}function kn(o){let e=o.replace(/[<>:"/\\|?*\x00-\x1f]/g,"_").replace(/\.\./g,"_").replace(/^\.+/,"_").replace(/\.+$/,"_").trim();if(e.length>200){let s=Ve.extname(e);e=Ve.basename(e,s).substring(0,200-s.length)+s}return e||"download"}function z(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 de(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]}`}import*as je from"fs";import*as We from"path";import{fileURLToPath as Li}from"url";import{dirname as Ai}from"path";var Ri=Li(import.meta.url),zo=Ai(Ri),yn=new Map,wn=null,He="en-US";function ji(){let o=We.join(zo,"locales");return je.existsSync(o)?o:We.join(zo,"i18n","locales")}function Ui(){let o=process.env.LUNKR_LANG;if(o)return Cn(o);let e=process.env.LANG||process.env.LC_ALL;if(e){let n=e.split(".")[0].replace("_","-");return Cn(n)}let s=process.env.LANGUAGE;if(s){let n=s.split(":")[0].replace("_","-");return Cn(n)}return He}function Cn(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]||He}function Bo(o){if(yn.has(o))return yn.get(o);let e=We.join(ji(),`${o}.json`);try{if(je.existsSync(e)){let s=je.readFileSync(e,"utf-8"),n=JSON.parse(s);return yn.set(o,n),n}}catch{}return null}function _i(){return wn||(wn=Ui()),wn}function Ko(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 Vo(o,e){return e?o.replace(/\{\{(\w+)\}\}/g,(s,n)=>String(e[n]??"")):o}function u(o,e){let s=_i(),n=Bo(s);if(n){let i=Ko(n,o);if(i)return Vo(i,e)}if(s!==He){let i=Bo(He);if(i){let a=Ko(i,o);if(a)return Vo(a,e)}}return o}var Ii=["FA_SESSION_EXPIRED","FA_AUTH_FAILED","FA_NO_SESSION","FA_SID_INVALID"];function he(o){return Ii.includes(o)}async function ae(o,e){let s=P(),n=s.accounts?.find(r=>r.accountId===o);if(!n)return{success:!1,error:`Account not found: ${o}`};if(!n.apiToken)return{success:!1,error:"No apiToken available for refresh"};let i=e||s.device_uuid;if(!i)return{success:!1,error:"No device UUID available"};let a=n.email||o,t=await Q(a,n.apiToken,i);if(t.success&&t.sid&&t.cookie){let r={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||""},c=s.accounts?.findIndex(l=>l.accountId===o)??-1;return c>=0&&s.accounts&&(s.accounts[c].session=r,D(s)),{success:!0,session:r}}return{success:!1,error:t.error||"Unknown error during token login"}}var Jo=1e3;async function Wo(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 Ho(o,e){let s=M(o,e);if(!s)throw new Error(u("errors.account_not_configured"));let n=new I(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[r,c]=t.split("=",2);i[r.trim()]=c.trim()}}return n.setCookies(i),{client:n,account:s}}async function Pi(o,e){let{to:s,content:n,sid:i,accountId:a,lunkrConfig:t}=e,r=await o.postJson({func:"cim.msg:reply",sid:i,payload:{uid:s,content:n,type:"text"}});if(r.code!=="S_OK"&&he(String(r.code))){let l=await ae(a);if(l.success&&l.session){let p=new I(t.baseUrl,{apiPath:t.apiPath}),d={"Cim.sid":l.session.sid};for(let f of l.session.cookie.split(";")){let x=f.trim();if(x.includes("=")){let[g,b]=x.split("=",2);d[g.trim()]=b.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:l.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(u("api.send_failed",{code:String(m.code)}))}else console.error(`[${a}] Session refresh failed: ${l.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(u("api.send_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`msg-${Date.now()}`}}async function Oi(o,e){let{to:s,content:n,sid:i,accountId:a,lunkrConfig:t}=e,r=await o.postJson({func:"cim.msg:reply",sid:i,payload:{uid:s,content:n,type:"post"}});if(r.code!=="S_OK"&&he(String(r.code))){let l=await ae(a);if(l.success&&l.session){let p=new I(t.baseUrl,{apiPath:t.apiPath}),d={"Cim.sid":l.session.sid};for(let f of l.session.cookie.split(";")){let x=f.trim();if(x.includes("=")){let[g,b]=x.split("=",2);d[g.trim()]=b.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:l.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(u("api.send_post_failed",{code:String(m.code)}))}else console.error(`[${a}] Session refresh failed: ${l.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(u("api.send_post_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`post-${Date.now()}`}}function Qo(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 $i(o){if(o.startsWith("http://")||o.startsWith("https://")){let s=Xo.tmpdir(),n=`lunkr-media-${Date.now()}-${te.basename(new URL(o).pathname)||"file"}`,i=te.join(s,n),a=await Ce(o,{},6e4);return B.writeFileSync(i,a.data),{filePath:i,cleanup:()=>{try{B.existsSync(i)&&B.unlinkSync(i)}catch{}}}}let e=te.resolve(o);if(!B.existsSync(e))throw new Error(u("errors.file_not_found",{path:o}));return{filePath:e,cleanup:()=>{}}}async function qi(o,e){let{filePath:s,sid:n,uploadUid:i,cookies:a,baseUrl:t,apiPath:r}=e,c=te.resolve(s),l=te.basename(c);if(!B.existsSync(c))throw new Error(u("errors.file_not_found",{path:s}));let p=B.statSync(c),d=Yo.lookup(c)||"application/octet-stream",m=B.readFileSync(c),f=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,x=await o.postJson({func:"cim.file:prepare",sid:n,payload:{size:p.size,composeId:f,fileName:l,uid:i,contentType:d}});if(x.code!=="S_OK")throw new Error(u("api.upload_prepare_failed",{code:String(x.code)}));let b=x.var?.attachmentId;if(!b)throw new Error(u("api.upload_no_attachment_id"));let h=`${t}${r}?func=cim.file:directData&sid=${n}&composeId=${encodeURIComponent(f)}&attachmentId=${b}&offset=0&uid=${encodeURIComponent(i)}`,k={"Content-Type":"application/octet-stream",Cookie:Object.entries(a).map(([R,F])=>`${R}=${F}`).join("; ")},C=await ge(h,m,k,6e4),A;try{A=JSON.parse(C.data)}catch{throw new Error(u("api.upload_invalid_response",{data:C.data?.substring?.(0,200)}))}if(A.code!=="S_OK")throw new Error(u("api.upload_data_failed",{code:String(A.code)}));let v=await o.postJson({func:"cim.file:moveToNetFolder",sid:n,payload:{composeId:f,fileName:l,item:"fileName",attachmentId:b,uid:i}});if(v.code!=="S_OK")throw new Error(u("api.upload_move_failed",{code:String(v.code)}));let S=v.var,U=S?.fileId,_=S?.uid;if(!U)throw new Error(u("api.upload_no_file_id"));return{fileId:U,fileUid:_||""}}var Zo={deliveryMode:"direct",textChunkLimit:Jo,sendText:async o=>{let{cfg:e,to:s,text:n,replyToId:i,accountId:a}=o,{client:t,account:r}=await Ho(e,a),{chatId:c,chatType:l}=Qo(s),p=r.botName??"Bot",d=r.senderName;d||(d=await Wo(t,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=ee(n,d,p),f;return m.length>Jo?f=await Oi(t,{to:c,content:m,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}):f=await Pi(t,{to:c,content:m,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}),{ok:!0,channel:"lunkr-openclaw",messageId:f.msgId}},sendMedia:async o=>{let{cfg:e,to:s,text:n,mediaUrl:i,accountId:a}=o;if(!i)throw new Error(u("errors.media_url_required"));let{client:t,account:r}=await Ho(e,a),{chatId:c,chatType:l}=Qo(s),p=r.botName??"Bot",d=r.senderName;d||(d=await Wo(t,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=ee(n||"",d,p),f={"Cim.sid":r.sid};for(let b of r.cookie.split(";")){let h=b.trim();if(h.includes("=")){let[y,k]=h.split("=",2);f[y.trim()]=k.trim()}}let x,g;try{let b=await $i(i);x=b.filePath,g=b.cleanup;let h=l==="p2p"?r.selfUid:c,{fileId:y,fileUid:k}=await qi(t,{filePath:x,sid:r.sid,uploadUid:h,cookies:f,baseUrl:r.lunkrConfig.baseUrl,apiPath:r.lunkrConfig.apiPath}),C=await t.postJson({func:"cim.msg:reply",sid:r.sid,payload:{uid:c,content:m,type:"text",attachments:[{fileId:y,uid:k}]}});if(C.code!=="S_OK")throw new Error(u("api.send_media_failed",{code:String(C.code)}));return{ok:!0,channel:"lunkr-openclaw",messageId:C.var?.msgId??`media-${Date.now()}`}}finally{g&&g()}}};function es(o,e){let s=o.chatType==="group"?o.chatId:null;return s&&(e.botDiscussions||{})[s]||null}function Fi(o,e){return es(o,e)!==null}function Ti(o,e){return o.trim().toLowerCase().startsWith(e.toLowerCase())}function Di(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=es(o,e);return a?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:a.agentId}:s&&Ti(o.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function Ei(o,e){let s=o.trim();return s.toLowerCase().startsWith(e.toLowerCase())?s.slice(e.length).trim():o}function ns(o,e){let s=Di(o,e),i=Fi(o,e)?o.content:Ei(o.content,e.commandPrefix),a=o.chatType==="p2p"?"direct":o.chatType;return{externalId:o.msgId,channel:"lunkr-openclaw",chatType:a,peerId:o.chatId,senderId:o.fromUid,text:i,timestamp:o.timestamp,replyTo:o.threadId,mentions:void 0,isBotMention:s.isBotMention,isFromBot:s.isFromBot,isFromSelf:s.isFromSelf,agentId:s.agentId,contentType:o.contentType,attachments:o.attachments}}var re=new Map,Ue=new Map,os=5e3;function Gi(o){let e=Date.now(),s=Ue.get(o);if(s&&e-s<os)return!0;if(Ue.set(o,e),Ue.size>1e3)for(let[n,i]of Ue)e-i>os*2&&Ue.delete(n);return!1}var ss=1e3;async function Ni(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",r=o.senderName;r||(r=o.selfUid?.includes("@")?o.selfUid.split("@")[0]:"User");let c=ee(i,r,t),l=o.sid,p=o.cookie,d=o;if(l){let m=new I(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),f={"Cim.sid":l};for(let g of p.split(";")){let b=g.trim();if(b.includes("=")){let[h,y]=b.split("=",2);f[h.trim()]=y.trim()}}m.setCookies(f);let x=await m.postJson({func:"cim.msg:reply",sid:l,payload:{uid:n,content:c,type:c.length>ss?"post":"text"}});if(s?.debug?.(`[sendLunkrReply] Response: code=${x.code}`),x.code==="S_OK"){let g=x.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully${g?`: msgId=${g}`:""}`),{msgId:g??`msg-${Date.now()}`,account:d}}if(he(String(x.code)))s?.info(`[${o.accountId}] Session expired, clearing sid...`),l="",p="";else throw new Error(u("api.send_reply_failed",{code:String(x.code),msg:String(x.msg||"Unknown")}))}if(!l){s?.info(`[${o.accountId}] No valid session, attempting refresh with apiToken...`);let m=await ae(o.accountId);if(m.success&&m.session){s?.info(`[${o.accountId}] Session refreshed, sending message...`),l=m.session.sid,p=m.session.cookie;let f=new I(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),x={"Cim.sid":l};for(let b of p.split(";")){let h=b.trim();if(h.includes("=")){let[y,k]=h.split("=",2);x[y.trim()]=k.trim()}}f.setCookies(x);let g=await f.postJson({func:"cim.msg:reply",sid:l,payload:{uid:n,content:c,type:c.length>ss?"post":"text"}});if(g.code==="S_OK"){let b=Te(o,m.session),h=g.var?.msgId;return s?.info(`[sendLunkrReply] Message sent successfully after refresh: msgId=${h}`),{msgId:h??`msg-${Date.now()}`,account:b}}throw s?.warn?.(`[${o.accountId}] Send failed after refresh: ${g.code}. Will retry later.`),new Error(u("api.send_reply_failed",{code:String(g.code),msg:String(g.msg||"Unknown")}))}throw s?.warn?.(`[${o.accountId}] Session refresh failed: ${m.error}. Will retry later.`),new Error(u("api.no_session"))}throw new Error(u("api.send_reply_failed",{code:"UNKNOWN",msg:"Unexpected state"}))}function is(o,e){let{log:s}=e;return ue.fromLunkrConfig(o.lunkrConfig.baseUrl,o.sid,o.cookie,{uid:o.selfUid,username:o.botName,eventCallbacks:{message:i=>{try{let a=Mi(i,s);if(a){let t=ns(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 Mi(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),r=a.attachments;e?.debug?.(`[parseSocketMessage] MSG keys=[${t.join(", ")}], attachments=${JSON.stringify(r)?.substring(0,200)}`);let c=String(a.mid||""),l=a.from||{},p=a.to||{},d=String(l.uid||""),m=String(l.true_name||l.email||""),f=String(a.subject||"");try{f=decodeURIComponent(f.replace(/\+/g," "))}catch{}let x=String(a.type||a.group_type||"p2p"),g=String(a.uid||p.uid||""),b;g.endsWith("#U")?b="p2p":g.endsWith("#T")?b="group":b=x==="p2p"?"p2p":x==="topic"||x==="group"?"group":"channel";let y=(a.attachments||[]).map(v=>({fileId:String(v.fileId||""),title:String(v.title||""),fileSize:Number(v.file_size||0),type:Number(v.t||0),ctype:v.ctype?String(v.ctype):void 0,inline:!!v.inline,duration:v.duration?Number(v.duration):void 0}));if(y.length===0){let v=Object.keys(a),S=v.some(R=>R.toLowerCase().includes("file")||R.toLowerCase().includes("att")||R.toLowerCase().includes("attach")||R.toLowerCase().includes("media")||R.toLowerCase().includes("image")||R.toLowerCase().includes("audio")),U=String(a.type||""),_=["file","image","audio","video","attachment"].some(R=>U.toLowerCase().includes(R));if(S||_){e?.info(`[parseSocketMessage] \u26A0\uFE0F No attachments parsed but message has file-related fields. type="${U}", keys=${v.join(", ")}`),e?.debug?.("[parseSocketMessage] No attachments found, but message might have file content"),e?.debug?.(`[parseSocketMessage] msg.type="${U}", msg keys: ${v.join(", ")}`);for(let R of v){let F=R.toLowerCase();if(F.includes("file")||F.includes("att")||F.includes("attach")||F.includes("media")||F.includes("image")||F.includes("audio")){let G=a[R];e?.debug?.(`[parseSocketMessage] Field "${R}": ${JSON.stringify(G).substring(0,500)}`)}}}}let k="text",C=y[0];if(C){let v=C.title?.split(".").pop()?.toLowerCase();v==="ilbc"?k="audio":["jpg","jpeg","png","gif","bmp","webp"].includes(v||"")?k="image":["mp4","mov","avi","mkv"].includes(v||"")?k="video":k="file"}let A=f;if(y.length>0){let v=[];for(let U of y){let _=U.title?.split(".").pop()?.toLowerCase();_==="ilbc"?v.push(`[\u8BED\u97F3\u6D88\u606F${U.duration?` ${U.duration}\u79D2`:""}]`):["jpg","jpeg","png","gif","bmp","webp"].includes(_||"")?v.push(`[\u56FE\u7247: ${U.title}]`):["mp4","mov","avi","mkv"].includes(_||"")?v.push(`[\u89C6\u9891: ${U.title}]`):v.push(`[\u6587\u4EF6: ${U.title}]`)}let S=v.join(" ");f.trim()?A=`${f}
3
+ ${S}`:A=S}return y.length>0&&e?.info(`[parseSocketMessage] Parsed ${y.length} attachment(s): ${y.map(v=>v.title).join(", ")}`),{msgId:c,threadId:a.threadId?String(a.threadId):void 0,parentId:a.parentId?String(a.parentId):void 0,fromUid:d,fromName:m||void 0,toUid:String(p.uid||""),chatType:b,chatId:g||(b==="p2p"?d:""),content:A,contentType:k,timestamp:typeof a.time=="number"?a.time:Date.now(),mentioned:!1,attachments:y.length>0?y:void 0}}function zi(o){let{msg:e,account:s,sessionKey:n,accountId:i}=o,a=e.chatType!=="direct",t=a?`group:${e.peerId}`:e.senderId,r=a?"group":"direct",c=e.attachments?.[0],l;return c&&(e.contentType==="audio"?l="audio/ilbc":e.contentType==="image"?l=`image/${c.title?.split(".").pop()||"jpeg"}`:e.contentType==="video"?l=`video/${c.title?.split(".").pop()||"mp4"}`:l="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:r,ConversationLabel:t,SenderName:void 0,SenderId:e.senderId,CommandAuthorized:!0,Provider:"lunkr",Surface:"lunkr",MessageSid:e.externalId,MediaPath:c?.fileId,MediaType:l,MediaUrl:void 0,Attachments:e.attachments,OriginatingChannel:"lunkr",OriginatingTo:`lunkr:${e.peerId}`}}var as={startAccount:async o=>{let{account:e,abortSignal:s,log:n}=o,i=e;if(n?.info(`[${i.accountId}] Starting Lunkr gateway`),!i.sid){n?.info(`[${i.accountId}] No valid session on startup, attempting refresh...`);let l=await ae(i.accountId);l.success&&l.session?(i=Te(i,l.session),n?.info(`[${i.accountId}] Session refreshed on startup`)):n?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${l.error}. Will retry when sending messages.`)}let a={onMessage:async l=>{if(!l.isBotMention)return;if(Gi(l.externalId)){n?.debug?.(`[${i.accountId}] Skipping duplicate message: ${l.externalId}`);return}let p=l.chatType==="direct"?"DM":"Group";if(n?.info(`[${i.accountId}] [${p}:${l.peerId}] Received msg from ${l.senderId}: ${l.text?.substring(0,50)}...`),n?.debug?.(`[${i.accountId}] Attachments check: count=${l.attachments?.length||0}, contentType=${l.contentType}`),l.attachments&&l.attachments.length>0){let d=l.attachments.map(m=>{let f=m.title?.split(".").pop()?.toLowerCase();return f==="ilbc"?`\u8BED\u97F3(${m.duration||"?"}\u79D2)`:["jpg","jpeg","png","gif","bmp","webp"].includes(f||"")?`\u56FE\u7247(${m.title})`:["mp4","mov","avi","mkv"].includes(f||"")?`\u89C6\u9891(${m.title})`:`\u6587\u4EF6(${m.title})`}).join(", ");n?.info(`[${i.accountId}] [${p}:${l.peerId}] Attachments: ${d}`)}if(!o.channelRuntime){n?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let d=new Set,m=l.chatType!=="direct",f=o.channelRuntime.routing.buildAgentSessionKey({peerId:l.peerId,channelId:"lunkr-openclaw",accountId:o.accountId}),x=o.channelRuntime.routing.resolveAgentRoute({cfg:o.cfg,channel:"lunkr-openclaw",peer:{kind:m?"group":"direct",id:l.peerId},accountId:o.accountId}),g=zi({msg:l,account:i,sessionKey:x.sessionKey,accountId:x.accountId}),h=o.cfg.session?.store;h&&await o.channelRuntime.session.recordInboundSession({storePath:h,sessionKey:g.SessionKey,ctx:g,onRecordError:y=>{n?.error?.(`[${i.accountId}] Failed to record session: ${String(y)}`)}}),await o.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:g,cfg:o.cfg,dispatcherOptions:{deliver:async(y,k)=>{let C=y.text??"";if(C.trim()){if(k.kind==="block"){n?.debug?.(`[${i.accountId}] Skipping block chunk (waiting for final)`);return}if(k.kind==="final"&&d.has(C)){n?.debug?.(`[${i.accountId}] Skipping duplicate final reply`);return}k.kind==="final"&&d.add(C),n?.info(`[${i.accountId}] Deliver ${k.kind} reply to ${l.peerId}: ${C.substring(0,50)}...`);try{let A=await Ni(i,{to:l.peerId,chatType:l.chatType,text:C},n);A.account!==i&&(i=A.account,n?.info(`[${i.accountId}] Session updated after refresh`))}catch(A){n?.error?.(`[${i.accountId}] Failed to send reply: ${A instanceof Error?A.message:String(A)}`)}}},onError:(y,k)=>{n?.error?.(`[${i.accountId}] AI ${k.kind} failed: ${String(y)}`)}}})}catch(d){n?.error?.(`[${i.accountId}] Message dispatch error: ${d instanceof Error?d.message:String(d)}`)}},onReaction:l=>{n?.debug(`[${i.accountId}] Received reaction: ${l.emoji} on ${l.msgId}`)},onError:l=>{n?.error(`[${i.accountId}] Socket error: ${l.message}`)},onDisconnect:()=>{n?.info(`[${i.accountId}] Socket disconnected`),re.delete(i.accountId)},log:n},t=is(i,a),r=await t.connect();if(!r){n?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let l=await ae(i.accountId);l.success&&l.session&&(i=Te(i,l.session),n?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),t=is(i,a),r=await t.connect())}if(!r)throw new Error(u("api.socket_connect_failed",{accountId:i.accountId}));n?.info(`[${i.accountId}] Lunkr gateway connected`);let c={socket:t,connected:!0,startedAt:Date.now()};return re.set(i.accountId,c),s.addEventListener("abort",()=>{n?.info(`[${i.accountId}] Stopping Lunkr gateway`),t.disconnect(),re.delete(i.accountId)}),new Promise(l=>{let p=()=>{s.removeEventListener("abort",d),l(c)},d=()=>{n?.info(`[${i.accountId}] Gateway abort signal received`),p()};s.addEventListener("abort",d),t.onDisconnect(()=>{n?.info(`[${e.accountId}] Socket disconnected`),re.delete(e.accountId),p()})})},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}}};async function Bi(o,e=5e3){let s=Date.now();if(!o)return{ok:!1,error:"\u8D26\u53F7\u672A\u914D\u7F6E",elapsedMs:Date.now()-s};if(!o.sid||!o.lunkrConfig)return{ok:!1,error:"\u4F1A\u8BDD\u672A\u914D\u7F6E",elapsedMs:Date.now()-s};try{let n=new I(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath,timeout:e/1e3}),i={"Cim.sid":o.sid};for(let t of o.cookie.split(";")){let r=t.trim();if(r.includes("=")){let[c,l]=r.split("=",2);i[c.trim()]=l.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 Ki(o){let e=[];for(let s of o){let n=s.accountId??V;s.configured===!1&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"config",message:"Lunkr \u4F1A\u8BDD\u672A\u914D\u7F6E\u3002\u8BF7\u8FD0\u884C\uFF1Aopenclaw lunkr login",fix:"\u8FD0\u884C `openclaw lunkr login` \u8FDB\u884C\u8BA4\u8BC1"}),s.lastError&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"runtime",message:`\u9891\u9053\u9519\u8BEF\uFF1A${s.lastError}`});let i=s.probe;i&&!i.ok&&i.sessionValid===!1&&e.push({channel:"lunkr-openclaw",accountId:n,kind:"auth",message:"Lunkr \u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u8BA4\u8BC1\u3002",fix:"\u8FD0\u884C `openclaw lunkr login` \u5237\u65B0\u4F1A\u8BDD"})}return e}function Vi(o){return co({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 Ji(o){let{account:e,runtime:s,probe:n}=o,i=!!(e.sid&&e.selfUid);return ro({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:s,probe:n})}var ts={defaultRuntime:{accountId:V,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:Ki,buildChannelSummary:({snapshot:o})=>Vi({snapshot:o}),probeAccount:async({account:o,timeoutMs:e})=>Bi(o??null,e??5e3),buildAccountSnapshot:({account:o,runtime:e,probe:s})=>Ji({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"};async function _e(o,e){let s=M(o,e);if(!s)throw new Error("Lunkr \u8D26\u53F7\u672A\u914D\u7F6E");let n=new I(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[r,c]=t.split("=",2);i[r.trim()]=c.trim()}}return n.setCookies(i),{client:n,account:s}}function Sn(o){return{kind:"user",id:`lunkr:${o.uid}`,name:o.name??o.uid,email:o.email,avatarUrl:o.avatar}}function rs(o){return{kind:o.type==="channel"?"channel":"group",id:`lunkr:discussion:${o.gid}`,name:o.name??o.gid,avatarUrl:o.avatar}}async function cs(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 ls(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 Wi(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 ps={self:async({cfg:o,accountId:e})=>{let s=M(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 _e(o,e),t=s?.trim()??"",r=n&&n>0?n:20;return t?(await cs(i,a.sid,t,r)).map(Sn):[]},listPeersLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=s?.trim()??"",r=n&&n>0?n:20;return t?(await cs(i,a.sid,t,r)).map(Sn):[]},listGroups:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=await ls(i,a.sid),r=t;if(s){let c=s.toLowerCase();r=t.filter(l=>l.name?.toLowerCase().includes(c)||l.gid.toLowerCase().includes(c))}return n&&n>0&&(r=r.slice(0,n)),r.map(rs)},listGroupsLive:async({cfg:o,accountId:e,query:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=await ls(i,a.sid),r=t;if(s){let c=s.toLowerCase();r=t.filter(l=>l.name?.toLowerCase().includes(c)||l.gid.toLowerCase().includes(c))}return n&&n>0&&(r=r.slice(0,n)),r.map(rs)},listGroupMembers:async({cfg:o,accountId:e,groupId:s,limit:n})=>{let{client:i,account:a}=await _e(o,e),t=s.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");return(await Wi(i,a.sid,t,n??100)).map(Sn)}};function us(o){let{cfg:e,accountId:s,groupId:n}=o,i=M(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 Hi(o){let{cfg:e,accountId:s,groupId:n}=o,i=M(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 us({cfg:e,accountId:s,groupId:n})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function Qi(o){let{cfg:e,accountId:s,groupId:n}=o;M(e,s)}var ds={resolveRequireMention:us,resolveGroupIntroHint:Hi,resolveToolPolicy:Qi};var Xi={id:"lunkr-openclaw",label:"Lunkr",selectionLabel:"Lunkr (\u4F01\u4E1A\u534F\u4F5C)",detailLabel:"Lunkr \u4F01\u4E1A\u534F\u4F5C",docsPath:"/channels/lunkr",docsLabel:"lunkr",blurb:"\u4F01\u4E1A\u90AE\u4EF6\u548C\u534F\u4F5C\u5E73\u53F0\uFF0C\u652F\u6301\u6D88\u606F\u3001\u8054\u7CFB\u4EBA\u3001\u8BA8\u8BBA\u7EC4\u3002"},Ln={id:"lunkr-openclaw",meta:{...Xi,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:to(en),config:ko,security:wo,group:ds,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:ps,outbound:Zo,status:ts,gateway:as,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:o=>o.replace(/^lunkr:/i,"")}};var Yi=null;function Zi(o){let e={...o,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return Yi=e,e}function ms(o){Zi(o)}var An=ao(pn(),1);import*as E from"fs";import*as J from"path";import*as fs from"os";import*as gs from"crypto";var ce=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 I(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=P(),n=e?s.accounts?.find(i=>i.accountId===e&&i.session):Fe(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||P();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("Session \u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u4EE5\u4E0B\u547D\u4EE4\u91CD\u65B0\u767B\u5F55\uFF1A"),console.error(" lunkr login (\u626B\u7801\u767B\u5F55)"),console.error(" lunkr login-bypwd (\u5BC6\u7801\u767B\u5F55)")),e}async tryApiTokenRelogin(){let e=P(),s=e.accounts.find(t=>t.session?.selfUid===this.session.selfUid);if(!s?.apiToken)return!1;let n=s.email||s.accountId,i=await Q(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},D(e),this.sid=i.sid,this.session=s.session;let a={};for(let t of i.cookie.split(";")){let r=t.trim();if(r.includes("=")){let c=r.indexOf("="),l=r.substring(0,c).trim(),p=r.substring(c+1).trim();a[l]=p}}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 r=t,c=String(r.uid||""),l=String(r.email||"").toLowerCase(),p=String(r.true_name||"").toLowerCase();if(l.includes(e.toLowerCase())||p.includes(e.toLowerCase())){if(i.has(c))continue;i.add(c),n.push({uid:c,email:r.email,trueName:r.true_name,name:r.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 r=t,c=String(r.uid||"");i.has(c)||(i.add(c),n.push({uid:c,email:r.email,trueName:r.true_name,name:r.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(X(s)){let a=Je(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(`\u672A\u627E\u5230\u8054\u7CFB\u4EBA\u6216\u8BA8\u8BBA\u7EC4: ${s}`)}async resolveRecipientInteractive(e,s){let n=e.trim();if(X(n)){let t=Je(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(l=>l.name===n||l.trueName===n);if(t.length===1){let l=t[0];return{uid:l.uid,type:"user",name:l.trueName||l.name||n,email:l.email||void 0}}let r=0;if(i.length>1&&s){let l=i.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"}));r=s(l)}r<0&&(r=0);let c=i[r];return{uid:c.uid,type:"user",name:c.trueName||c.name||n,email:c.email||void 0}}let a=await this.searchGroups(n,10);if(a.length>0){let t=a.filter(l=>l.name===n||l.trueName===n);if(t.length===1){let l=t[0];return{uid:l.uid,type:"group",name:l.name||l.trueName||n,email:l.email||void 0}}let r=0;if(a.length>1&&s){let l=a.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}));r=s(l)}r<0&&(r=0);let c=a[r];return{uid:c.uid,type:"group",name:c.name||c.trueName||n,email:c.email||void 0}}throw new Error(`\u672A\u627E\u5230\u8054\u7CFB\u4EBA\u6216\u8BA8\u8BBA\u7EC4: ${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 r=await this.client.postJson({func:"cim.msg:list",sid:this.sid,payload:a});if(r.code!=="S_OK"||!Array.isArray(r.var))return[];let c=[];for(let l of r.var){if(typeof l!="object"||!l)continue;let p=l,d=p.data||p,m=d.from||{},f=[],x=d.attachments;if(Array.isArray(x))for(let g of x)f.push({file_id:g.fileId,uid:g.uid,title:g.title||g.filename,content_type:g.content_type,file_size:g.file_size||g.size,type:g.type,inline:g.inline===!0});c.push({mid:String(d.mid||d.uid||""),time:z(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:f})}return c}async sendMessage(e,s,n={}){let i=n.botName||this.botName,a=n.senderName||await this.ensureSenderName(),t=ee(s,a,i),r=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text"}});if(r.code!=="S_OK")throw new Error(`\u53D1\u9001\u5931\u8D25: ${r.code} - ${r.msg||"Unknown error"}`);let c=r.var?.[0];return{mid:String(c?.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=ee(n.content||"",a,i),r=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,c=gs.randomUUID(),p=e.type==="user"?this.session.selfUid:e.uid,d=[];for(let x of s){let g=await this.uploadFileWithFlow(x,p,r);d.push({fileId:g.fileId,uid:g.fileUid})}let m=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:t,type:"text",clientMid:c,attachments:d}});if(m.code!=="S_OK")throw new Error(`\u53D1\u9001\u5931\u8D25: ${m.code} - ${m.msg||"Unknown error"}`);let f=m.var?.[0];return{mid:String(f?.mid||""),to:e.uid,files:s}}async uploadFile(e,s,n){let i=J.resolve(e),a=J.basename(i);if(!E.existsSync(i))throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${e}`);let t=E.statSync(i),r=An.lookup(i)||"application/octet-stream",c=E.readFileSync(i),l=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:t.size,composeId:n,fileName:a,uid:s,contentType:r}});if(l.code!=="S_OK")throw new Error(`\u51C6\u5907\u4E0A\u4F20\u5931\u8D25: ${l.code}`);let d=l.var?.attachmentId;if(!d)throw new Error("prepare \u672A\u8FD4\u56DE attachmentId");let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${this.sid}&composeId=${encodeURIComponent(n)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(s)}`,x={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([v,S])=>`${v}=${S}`).join("; ")},g=await ge(m,c,x,6e4),b=g.headers["set-cookie"];if(b)for(let v of b.split(",")){let S=v.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let h;try{h=JSON.parse(g.data)}catch{throw new Error(`directData \u8FD4\u56DE\u975E JSON: ${g.data?.substring?.(0,400)}`)}if(h.code!=="S_OK")throw new Error(`\u4E0A\u4F20\u6570\u636E\u5931\u8D25: ${h.code}`);let y=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:n,fileName:a,item:"fileName",attachmentId:d,uid:s}});if(y.code!=="S_OK")throw new Error(`\u79FB\u52A8\u6587\u4EF6\u5931\u8D25: ${y.code}`);let k=y.var,C=k?.fileId,A=k?.uid;if(!C)throw new Error("moveToNetFolder \u672A\u8FD4\u56DE fileId");return{fileId:C,fileUid:A||"",fileName:a}}async uploadFileWithFlow(e,s,n){let i=J.resolve(e),a=J.basename(i);if(!E.existsSync(i))throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${e}`);let t=E.statSync(i),r=An.lookup(i)||"application/octet-stream",c=E.readFileSync(i),l=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:t.size,composeId:n,fileName:a,uid:s,contentType:r}});if(l.code!=="S_OK")throw new Error(`\u51C6\u5907\u4E0A\u4F20\u5931\u8D25: ${l.code}`);let d=l.var?.attachmentId;if(!d)throw new Error("prepare \u672A\u8FD4\u56DE attachmentId");let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${this.sid}&composeId=${encodeURIComponent(n)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(s)}`,x={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([v,S])=>`${v}=${S}`).join("; ")},g=await ge(m,c,x,6e4),b=g.headers["set-cookie"];if(b)for(let v of b.split(",")){let S=v.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let h;try{h=JSON.parse(g.data)}catch{throw new Error(`directData \u8FD4\u56DE\u975E JSON: ${g.data?.substring?.(0,400)}`)}if(h.code!=="S_OK")throw new Error(`\u4E0A\u4F20\u6570\u636E\u5931\u8D25: ${h.code}`);let y=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:n,fileName:a,item:"fileName",attachmentId:d,uid:s}});if(y.code!=="S_OK")throw new Error(`\u79FB\u52A8\u6587\u4EF6\u5931\u8D25: ${y.code}`);let k=y.var,C=k?.fileId,A=k?.uid;if(!C)throw new Error("moveToNetFolder \u672A\u8FD4\u56DE fileId");return{fileId:C,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)}&fallback=false`,t={Cookie:`Cim.sid=${this.sid}; Cim=${this.cookies.Cim||""}`},r=await Ce(a,t);if(!i)throw new Error("\u6587\u4EF6\u540D\u662F\u5FC5\u9700\u7684\uFF0C\u8BF7\u4ECE\u6D88\u606F\u9644\u4EF6\u5143\u6570\u636E (attachment.title) \u83B7\u53D6\u6587\u4EF6\u540D");let c=kn(i),l=n?J.resolve(n):J.join(fs.tmpdir(),c),p=J.dirname(l);return E.existsSync(p)||E.mkdirSync(p,{recursive:!0}),E.writeFileSync(l,r.data),{filePath:l,fileName:c,fileSize:r.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(`\u521B\u5EFA\u8BA8\u8BBA\u7EC4\u5931\u8D25: ${a.code} - ${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(`\u5220\u9664\u8BA8\u8BBA\u7EC4\u5931\u8D25\uFF1A${s.code} - ${s.msg||""}`);return!0}createSocketClient(e){return ue.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))}}})}};function O(o){let e=ce.fromConfig(o);if(!e)throw new Error("\u672A\u914D\u7F6E Lunkr \u8D26\u53F7\uFF0C\u8BF7\u8FD0\u884C\uFF1Alunkr-cli login");return e}async function ea(o){try{let e=new I(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(),r=i.substring(a+1).trim();s[t]=r}}return e.setCookies(s),await e.checkSessionValid(o.sid)}catch{return!1}}async function Rn(o){try{let e=new I(o.baseUrl,{apiPath:o.apiPath}),s={};for(let i of o.cookie.split(";")){let a=i.trim();if(a.includes("=")){let t=a.indexOf("="),r=a.substring(0,t).trim(),c=a.substring(t+1).trim();s[r]=c}}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 Ie(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(` ${u("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?` ${u("messages.mode_temporary_desc")}`:` ${u("messages.mode_persistent_desc")}`),console.log("");let t=P();if(i)console.log(u("messages.force_relogin"));else{let g=t.accounts?.[0];if(g?.session?.sid){if(await ea(g.session)){let h=await Rn(g.session);h&&(g.session.senderName=h,D(t)),console.log(u("messages.already_logged_in")),h&&console.log(`${u("labels.name")}: ${h}`),console.log(`UID: ${g.session.selfUid}`),console.log("");return}s&&(console.log(u("errors.session_expired_login")),console.log(""),console.log(u("status.login_hint")))}}let r=t.accounts?.[0];if(r?.apiToken&&!i){console.log(u("messages.authenticating_token"));let g=await Q(r.email||r.accountId,r.apiToken,t.device_uuid,{debug:n});if(g.success&&g.sid&&g.cookie){let b=g.selfUid||r.session?.selfUid;r.session={sid:g.sid,cookie:g.cookie,baseUrl:Ne,apiPath:xe,selfUid:b};let h=await Rn(r.session);h&&(r.session.senderName=h),D(t),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(` ${u("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(""),h&&console.log(` ${u("labels.name")}: ${h}`),console.log(` ${u("labels.email")}: ${g.email}`),console.log(""),console.log(` ${u("labels.config")}: ${W()}`),console.log("");return}console.log(u("login.token_expired_need_rescan")),n&&console.log(u("login.token_login_error",{error:g.error||"Unknown"}))}let c=await xn({device:{device_uuid:t.device_uuid,device_os:t.device_os,device_model:t.device_model,device_name:t.device_name},debug:n});c.success||(console.error(""),console.error(u("login.qrcode_login_failed",{error:c.error||"Unknown"})),process.exit(1)),(!c.apiToken||!c.email)&&(console.error(""),console.error(u("login.qrcode_login_no_token")),process.exit(1)),console.log(""),console.log(u("messages.authenticating_with_token"));let l=await Q(c.email,c.apiToken,c.deviceUuid||t.device_uuid,{debug:n});l.success||(console.error(""),console.error(u("login.token_login_failed",{error:l.error||"Unknown"})),process.exit(1)),(!l.sid||!l.cookie)&&(console.error(""),console.error(u("login.token_login_no_session")),process.exit(1));let p=l.selfUid||c.selfUid,d={sid:l.sid,cookie:l.cookie,baseUrl:Ne,apiPath:xe,selfUid:p},m=await Rn(d);m&&(d.senderName=m);let f={accountId:c.email,email:c.email,enabled:!0,session:d,apiToken:a?void 0:c.apiToken};t=P();let x=t.accounts?.findIndex(g=>g.accountId===c.email)??-1;x>=0&&t.accounts?t.accounts[x]=f:(t.accounts||(t.accounts=[]),t.accounts.push(f)),D(t),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(` ${u("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(` ${u("labels.name")}: ${m}`),console.log(` ${u("labels.email")}: ${c.email}`),console.log(` UID: ${p}`),console.log(a?` ${u("labels.mode")}: ${u("messages.mode_temporary")}`:` ${u("labels.mode")}: ${u("messages.mode_persistent")}`),console.log(""),console.log(` ${u("labels.config")}: ${W()}`),console.log("")}import*as In from"readline";import*as hs from"readline";var _n=class extends Error{constructor(s,n,i){super(s);this.sid=n;this.authType=i;this.name="OtpRequiredError"}};var jn="https://lunkr.coremail.cn",Un="/lunkr/s/json",nc=300*1e3;function vs(o){let e={};for(let s of o.split(";")){let[n,i]=s.trim().split("=");n&&i&&(e[n]=i)}return e}async function bs(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 Le.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 I(i.baseUrl,{apiPath:i.apiPath}),r=un({device_uuid:e?.deviceUuid||o.deviceUuid,device_name:e?.deviceName||o.deviceName});return n&&console.log(`Device info: ${JSON.stringify(r,null,2)}`),{success:!0,session:await na(t,o.email,o.password,a,r,i,s,n)}}catch(s){return s instanceof _n?{success:!1,requiresOtp:!0,otpSid:s.sid,error:s.message}:{success:!1,error:s instanceof Error?s.message:String(s)}}}async function na(o,e,s,n,i,a,t,r=!1){let c={type:n.authType,e:n.rsaE,n:n.rsaN},l=c.type;r&&(console.log(`[Login] authType: ${l}`),console.log(`[Login] RSA e: ${c.e?c.e.substring(0,20)+"...":"(empty)"}`),console.log(`[Login] RSA n: ${c.n?c.n.substring(0,40)+"...":"(empty)"}`));let p;l&&l.toLowerCase()==="rsa"&&c?.e&&c?.n?((t||r)&&console.log("Encrypting password with RSA"),p=on(s,c.e,c.n),r&&console.log(`[Login] Encrypted password length: ${p.length}`)):(r&&console.log(`[Login] WARNING: Password NOT encrypted (authType=${l})`),p=s);let d=Math.floor(Date.now()/1e3).toString(),m=dn(i.uuid,e,i.friendlyName),f=mn(m),x=fn(m,d,f,"");r&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${m.substring(0,20)}...`),console.log(`[Login] signature: ${x.substring(0,20)}...`));let g={uid:e,password:p,authType:l,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:x,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(r){let v={...g},S=String(v.password||"");v.password=S.length>10?S.substring(0,20)+`...(length: ${S.length})`:"***",console.log(`[Login] Payload: ${JSON.stringify(v,null,2)}`)}let b=await o.postJson({func:"user:login",sid:n.sid,payload:g,debug:r||t});r&&console.log(`[Login] Response: ${JSON.stringify(b,null,2)}`);let h=b.code,y=b.var||{};if(h==="FA_NEED_VERIFY_CODE"||h==="FA_USER_IN_GRAYLIST"){let v=a.uri||`${a.baseUrl}/coremail/`;throw new j(`\u9700\u8981\u9A8C\u8BC1! \u9519\u8BEF\u7801: ${h}
4
4
  \u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u8BBF\u95EE\u4EE5\u4E0B\u5730\u5740\u624B\u5DE5\u767B\u5F55\u4EE5\u89E3\u9664\u9650\u5236:
5
5
  ${v}`)}if(h==="FA_NEED_DYNAMIC_PWD"){console.log(`
6
- \u9700\u8981\u4E8C\u6B21\u8BA4\u8BC1 (OTP)...`);let v={tempSid:n.sid,trans:"login",device:{token:m,secret:f,uuid:i.uuid,friendlyName:i.friendlyName,model:i.model,os:i.os,deviceType:i.deviceType},type:"OTP"},L=await o.postJson({func:"user:triggerSecondAuth",sid:n.sid,payload:v});if(L.code!=="S_OK")throw new R(`\u89E6\u53D1\u4E8C\u6B21\u8BA4\u8BC1\u5931\u8D25: ${L.code}`);console.log(" \u8BF7\u5728\u5176\u4ED6\u8BBE\u5907\u4E0A\u5B8C\u6210 OTP \u9A8C\u8BC1..."),console.log(' \uFF08\u5982\u679C\u9009\u62E9"\u4FE1\u4EFB\u6B64\u8BBE\u5907"\uFF0C\u4E0B\u6B21\u767B\u5F55\u5C06\u4E0D\u9700\u8981\u518D\u6B21\u9A8C\u8BC1\uFF09'),await Yi(" \u5B8C\u6210\u540E\u6309\u56DE\u8F66\u7EE7\u7EED...");let j=await o.postJson({func:"user:querySecondAuthValidateStage",sid:n.sid,payload:{tempSid:n.sid,trans:"login"}});if(j.code!=="S_OK")throw new R(`\u67E5\u8BE2\u4E8C\u6B21\u8BA4\u8BC1\u72B6\u6001\u5931\u8D25: ${j.code}`);let I=(j.var||{}).stage;if(I!=="VALIDATED")throw new R(`\u4E8C\u6B21\u8BA4\u8BC1\u672A\u5B8C\u6210\uFF0C\u5F53\u524D\u72B6\u6001: ${I}`);console.log(" \u4E8C\u6B21\u8BA4\u8BC1\u6210\u529F!"),(t||r)&&console.log(`
7
- \u91CD\u65B0\u767B\u5F55...`);let D={uid:e,password:"",authType:l,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:x,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1},K=await o.postJson({func:"user:login",sid:n.sid,payload:D,debug:r||t});r&&console.log(`[Login] Re-login Response: ${JSON.stringify(K,null,2)}`);let G=K.code,de=K.var||{};if(G!=="S_OK"&&G!=="FA_NEED_ACCESS_SECRET")throw new R(`\u91CD\u65B0\u767B\u5F55\u5931\u8D25: ${G}`);let ve=de.sid;if(!ve)throw new R("\u91CD\u65B0\u767B\u5F55\u672A\u8FD4\u56DE sid");let be=o.cookies.Coremail||"";if(!be)throw new R("\u91CD\u65B0\u767B\u5F55\u672A\u83B7\u53D6\u5230 Coremail cookie");return(t||r)&&console.log("OTP \u9A8C\u8BC1\u6210\u529F\uFF0C\u83B7\u53D6 Lunkr session..."),await ms(ve,be,e,i,t,r)}if(h!=="S_OK"&&h!=="FA_NEED_ACCESS_SECRET"){let v=String(w.error||w.msg||b.msg||h);throw v.includes("\u5BC6\u7801")||v.toLowerCase().includes("password")||["PASSWORD_ERROR","AUTH_FAILED"].includes(h)?new Se(`Password error: ${v}`):new R(`Login failed: ${v}`)}let k=w.sid;if(!k)throw new R("Login response missing sid");r&&console.log(`[Login] Client cookies: ${JSON.stringify(o.cookies)}`);let S=o.cookies.Coremail||"";if(!S){let v=Object.keys(o.cookies);throw new R(`Login succeeded but no Coremail cookie received. Available cookies: ${v.join(", ")||"none"}`)}return(t||r)&&(console.log(`Coremail login succeeded, sid: ${k.substring(0,20)}...`),console.log(`Coremail cookie: ${S.substring(0,30)}...`),console.log("Now getting Lunkr session...")),await ms(k,S,e,i,t,r)}async function ms(o,e,s,n,i,a){(i||a)&&console.log(`
8
- [getLunkrSession] Step 1: Calling cim.common:verify...`);let t=`${jn}${Un}?func=cim.common:verify`,r={"Content-Type":"text/x-json; charset=UTF-8",Cookie:`Coremail=${e}`},c=await H(t,"{}",r,3e4);if(a&&console.log(`[getLunkrSession] verify status: ${c.status}`),c.status!==200)throw new R(`cim.common:verify request failed: ${c.status}`);let l=JSON.parse(c.data);if(l.code!=="S_OK")throw new R(`cim.common:verify failed: ${l.code}`);let u=l.var||{},d=u.login_key,m=u.login_index;if(!d)throw new R("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 f=`${o}:${e}`,x=Buffer.from(f,"utf8").toString("base64"),g=on(x,d);a&&console.log(`[getLunkrSession] X-CM-TOKEN length: ${g.length}`),(i||a)&&console.log("[getLunkrSession] Step 3: Calling cim.user:login...");let b=`${jn}${Un}?func=cim.user:login`,h={"Content-Type":"text/x-json; charset=UTF-8","X-CM-TOKEN":g},w={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&&(w.login_index=m);let k=await H(b,JSON.stringify(w),h,3e4);if(a&&console.log(`[getLunkrSession] login status: ${k.status}`),![200,202].includes(k.status))throw new R(`cim.user:login request failed: ${k.status}, response: ${k.data.substring(0,500)}`);let S=JSON.parse(k.data),A=S.code;if(A!=="S_OK"&&A!=="FA_NEED_ACCESS_SECRET")throw new R(`cim.user:login failed: ${A}`);let v=S.var||{},L=v.sid,j=v.self_uid||v.uid;if(!L)throw new R("cim.user:login did not return sid");let O=null,I=k.headers["set-cookie"];if(I)for(let G of I.split(",")){let de=G.trim().match(/^Cim=([^;]+)/);de&&(O=de[1],a&&console.log(`[getLunkrSession] Received cookie: Cim=${O.substring(0,20)}...`))}let D=O||e;return(i||a)&&(console.log(`[getLunkrSession] Lunkr SID: ${L.substring(0,20)}...`),console.log(`[getLunkrSession] selfUid: ${j}`)),{sid:L,selfUid:j||s,cookie:`Cim=${D}`,baseUrl:jn,apiPath:Un}}function Yi(o){return new Promise(e=>{let s=fs.createInterface({input:process.stdin,output:process.stdout});s.question(o,()=>{s.close(),e()})})}async function Zi(o,e,s,n,i,a){let t=new U(n,{apiPath:ge});t.setCookies(i),a&&console.log("[getApiTokenAndSession] Calling cim.user:getApiToken...");let r=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(r.code!=="S_OK"||!r.var?.api_token)throw new Error(`getApiToken failed: ${r.code} - ${r.msg||"No token returned"}`);let c=r.var.api_token;a&&console.log(`[getApiTokenAndSession] Got API token: ${c.substring(0,20)}...`);let l=await Q(e,c,s,{debug:a});if(!l.success)throw new Error(l.error||"apiTokenLogin failed");let u=l.sid,d=l.cookie;if(!d)throw new Error("apiTokenLogin did not return cookie");return a&&console.log(`[getApiTokenAndSession] New SID: ${u.substring(0,20)}...`),{apiToken:c,newSid:u,newCookie:d,selfUid:l.selfUid}}async function hs(o){let{email:e,sid:s,cookie:n,emailForAccountId:i,baseUrl:a,apiPath:t,deviceUuid:r,cookies:c,temp:l=!1,debug:u=!1}=o;u&&(console.log(`[saveSessionWithToken] Starting for ${e}...`),console.log(`[saveSessionWithToken] temp mode: ${l}`));let d=await Zi(s,i,r,a,c,u),m=_(),f={accountId:i,email:e,enabled:!0,session:{sid:d.newSid,cookie:d.newCookie,baseUrl:a,apiPath:t,selfUid:d.selfUid}};l?u&&console.log("[saveSessionWithToken] Temporary login - NOT saving apiToken"):(f.apiToken=d.apiToken,u&&console.log("[saveSessionWithToken] Saving apiToken to config"));let x=m.accounts?.findIndex(g=>g.accountId===i)??-1;return x>=0&&m.accounts?m.accounts[x]=f:(m.accounts||(m.accounts=[]),m.accounts.push(f)),T(m),u&&console.log("[saveSessionWithToken] Config saved"),{accountId:i,apiToken:l?void 0:d.apiToken}}function vs(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=r=>{let c=r;switch(c){case`
6
+ \u9700\u8981\u4E8C\u6B21\u8BA4\u8BC1 (OTP)...`);let v={tempSid:n.sid,trans:"login",device:{token:m,secret:f,uuid:i.uuid,friendlyName:i.friendlyName,model:i.model,os:i.os,deviceType:i.deviceType},type:"OTP"},S=await o.postJson({func:"user:triggerSecondAuth",sid:n.sid,payload:v});if(S.code!=="S_OK")throw new j(`\u89E6\u53D1\u4E8C\u6B21\u8BA4\u8BC1\u5931\u8D25: ${S.code}`);console.log(" \u8BF7\u5728\u5176\u4ED6\u8BBE\u5907\u4E0A\u5B8C\u6210 OTP \u9A8C\u8BC1..."),console.log(' \uFF08\u5982\u679C\u9009\u62E9"\u4FE1\u4EFB\u6B64\u8BBE\u5907"\uFF0C\u4E0B\u6B21\u767B\u5F55\u5C06\u4E0D\u9700\u8981\u518D\u6B21\u9A8C\u8BC1\uFF09'),await oa(" \u5B8C\u6210\u540E\u6309\u56DE\u8F66\u7EE7\u7EED...");let U=await o.postJson({func:"user:querySecondAuthValidateStage",sid:n.sid,payload:{tempSid:n.sid,trans:"login"}});if(U.code!=="S_OK")throw new j(`\u67E5\u8BE2\u4E8C\u6B21\u8BA4\u8BC1\u72B6\u6001\u5931\u8D25: ${U.code}`);let R=(U.var||{}).stage;if(R!=="VALIDATED")throw new j(`\u4E8C\u6B21\u8BA4\u8BC1\u672A\u5B8C\u6210\uFF0C\u5F53\u524D\u72B6\u6001: ${R}`);console.log(" \u4E8C\u6B21\u8BA4\u8BC1\u6210\u529F!"),(t||r)&&console.log(`
7
+ \u91CD\u65B0\u767B\u5F55...`);let F={uid:e,password:"",authType:l,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:x,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1},G=await o.postJson({func:"user:login",sid:n.sid,payload:F,debug:r||t});r&&console.log(`[Login] Re-login Response: ${JSON.stringify(G,null,2)}`);let N=G.code,me=G.var||{};if(N!=="S_OK"&&N!=="FA_NEED_ACCESS_SECRET")throw new j(`\u91CD\u65B0\u767B\u5F55\u5931\u8D25: ${N}`);let ve=me.sid;if(!ve)throw new j("\u91CD\u65B0\u767B\u5F55\u672A\u8FD4\u56DE sid");let be=o.cookies.Coremail||"";if(!be)throw new j("\u91CD\u65B0\u767B\u5F55\u672A\u83B7\u53D6\u5230 Coremail cookie");return(t||r)&&console.log("OTP \u9A8C\u8BC1\u6210\u529F\uFF0C\u83B7\u53D6 Lunkr session..."),await xs(ve,be,e,i,t,r)}if(h!=="S_OK"&&h!=="FA_NEED_ACCESS_SECRET"){let v=String(y.error||y.msg||b.msg||h);throw v.includes("\u5BC6\u7801")||v.toLowerCase().includes("password")||["PASSWORD_ERROR","AUTH_FAILED"].includes(h)?new Se(`Password error: ${v}`):new j(`Login failed: ${v}`)}let k=y.sid;if(!k)throw new j("Login response missing sid");r&&console.log(`[Login] Client cookies: ${JSON.stringify(o.cookies)}`);let C=o.cookies.Coremail||"";if(!C){let v=Object.keys(o.cookies);throw new j(`Login succeeded but no Coremail cookie received. Available cookies: ${v.join(", ")||"none"}`)}return(t||r)&&(console.log(`Coremail login succeeded, sid: ${k.substring(0,20)}...`),console.log(`Coremail cookie: ${C.substring(0,30)}...`),console.log("Now getting Lunkr session...")),await xs(k,C,e,i,t,r)}async function xs(o,e,s,n,i,a){(i||a)&&console.log(`
8
+ [getLunkrSession] Step 1: Calling cim.common:verify...`);let t=`${jn}${Un}?func=cim.common:verify`,r={"Content-Type":"text/x-json; charset=UTF-8",Cookie:`Coremail=${e}`},c=await H(t,"{}",r,3e4);if(a&&console.log(`[getLunkrSession] verify status: ${c.status}`),c.status!==200)throw new j(`cim.common:verify request failed: ${c.status}`);let l=JSON.parse(c.data);if(l.code!=="S_OK")throw new j(`cim.common:verify failed: ${l.code}`);let p=l.var||{},d=p.login_key,m=p.login_index;if(!d)throw new j("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 f=`${o}:${e}`,x=Buffer.from(f,"utf8").toString("base64"),g=sn(x,d);a&&console.log(`[getLunkrSession] X-CM-TOKEN length: ${g.length}`),(i||a)&&console.log("[getLunkrSession] Step 3: Calling cim.user:login...");let b=`${jn}${Un}?func=cim.user:login`,h={"Content-Type":"text/x-json; charset=UTF-8","X-CM-TOKEN":g},y={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&&(y.login_index=m);let k=await H(b,JSON.stringify(y),h,3e4);if(a&&console.log(`[getLunkrSession] login status: ${k.status}`),![200,202].includes(k.status))throw new j(`cim.user:login request failed: ${k.status}, response: ${k.data.substring(0,500)}`);let C=JSON.parse(k.data),A=C.code;if(A!=="S_OK"&&A!=="FA_NEED_ACCESS_SECRET")throw new j(`cim.user:login failed: ${A}`);let v=C.var||{},S=v.sid,U=v.self_uid||v.uid;if(!S)throw new j("cim.user:login did not return sid");let _=null,R=k.headers["set-cookie"];if(R)for(let N of R.split(",")){let me=N.trim().match(/^Cim=([^;]+)/);me&&(_=me[1],a&&console.log(`[getLunkrSession] Received cookie: Cim=${_.substring(0,20)}...`))}let F=_||e;return(i||a)&&(console.log(`[getLunkrSession] Lunkr SID: ${S.substring(0,20)}...`),console.log(`[getLunkrSession] selfUid: ${U}`)),{sid:S,selfUid:U||s,cookie:`Cim=${F}`,baseUrl:jn,apiPath:Un}}function oa(o){return new Promise(e=>{let s=hs.createInterface({input:process.stdin,output:process.stdout});s.question(o,()=>{s.close(),e()})})}async function sa(o,e,s,n,i,a){let t=new I(n,{apiPath:xe});t.setCookies(i),a&&console.log("[getApiTokenAndSession] Calling cim.user:getApiToken...");let r=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(r.code!=="S_OK"||!r.var?.api_token)throw new Error(`getApiToken failed: ${r.code} - ${r.msg||"No token returned"}`);let c=r.var.api_token;a&&console.log(`[getApiTokenAndSession] Got API token: ${c.substring(0,20)}...`);let l=await Q(e,c,s,{debug:a});if(!l.success)throw new Error(l.error||"apiTokenLogin failed");let p=l.sid,d=l.cookie;if(!d)throw new Error("apiTokenLogin did not return cookie");return a&&console.log(`[getApiTokenAndSession] New SID: ${p.substring(0,20)}...`),{apiToken:c,newSid:p,newCookie:d,selfUid:l.selfUid}}async function ks(o){let{email:e,sid:s,cookie:n,emailForAccountId:i,baseUrl:a,apiPath:t,deviceUuid:r,cookies:c,temp:l=!1,debug:p=!1}=o;p&&(console.log(`[saveSessionWithToken] Starting for ${e}...`),console.log(`[saveSessionWithToken] temp mode: ${l}`));let d=await sa(s,i,r,a,c,p),m=P(),f={accountId:i,email:e,enabled:!0,session:{sid:d.newSid,cookie:d.newCookie,baseUrl:a,apiPath:t,selfUid:d.selfUid}};l?p&&console.log("[saveSessionWithToken] Temporary login - NOT saving apiToken"):(f.apiToken=d.apiToken,p&&console.log("[saveSessionWithToken] Saving apiToken to config"));let x=m.accounts?.findIndex(g=>g.accountId===i)??-1;return x>=0&&m.accounts?m.accounts[x]=f:(m.accounts||(m.accounts=[]),m.accounts.push(f)),D(m),p&&console.log("[saveSessionWithToken] Config saved"),{accountId:i,apiToken:l?void 0:d.apiToken}}function ys(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=r=>{let c=r;switch(c){case`
9
9
  `:case"\r":case"":a.setRawMode(!1),a.pause(),a.removeListener("data",t),process.stdout.write(`
10
10
  `),s(i);break;case"":process.stdout.write(`
11
- `),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:c.charCodeAt(0)>=32&&(i+=c,process.stdout.write("*"));break}};a.on("data",t)}else if(e){process.stdout.write(o.replace("Password:","Password (visible): "));let i=In.createInterface({input:process.stdin,output:process.stdout});i.question("",a=>{i.close(),s(a.trim())})}else{let i=In.createInterface({input:process.stdin,output:process.stdout});i.question(o,a=>{i.close(),s(a.trim())})}})}async function Pn(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 vs("Email: ")),n||(console.error("\u9519\u8BEF\uFF1A\u8BF7\u8F93\u5165\u90AE\u7BB1"),process.exit(1));let i=e.password;i||(i=process.env.LUNKR_PASSWORD),i||(i=await vs("\u5BC6\u7801\uFF1A",!0)),i||(console.error("\u9519\u8BEF\uFF1A\u8BF7\u8F93\u5165\u5BC6\u7801"),process.exit(1)),console.log(""),console.log("\u6B63\u5728\u8BA4\u8BC1...");let a=e.verbose??!1,t=e.debug??!1,r=_(),c={email:n,password:i,deviceUuid:r.device_uuid,deviceName:r.device_name};try{let l=await xs(c,{deviceUuid:r.device_uuid,deviceName:r.device_name,verbose:a,debug:t});l.success||(console.error(`\u767B\u5F55\u5931\u8D25\uFF1A${l.error}`),process.exit(1)),l.session||(console.error("\u767B\u5F55\u6210\u529F\u4F46\u672A\u8FD4\u56DE\u4F1A\u8BDD"),process.exit(1));let u=gs(l.session.cookie);console.log(""),console.log("\u6B63\u5728\u83B7\u53D6 API \u4EE4\u724C...");try{await hs({email:n,sid:l.session.sid,cookie:l.session.cookie,emailForAccountId:n,baseUrl:l.session.baseUrl,apiPath:l.session.apiPath,deviceUuid:r.device_uuid,cookies:u,temp:s,debug:t})}catch(d){let m=d instanceof Error?d.message:String(d);console.warn(`\u8B66\u544A\uFF1A\u83B7\u53D6 API \u4EE4\u724C\u5931\u8D25\uFF1A${m}`),console.log("\u4F1A\u8BDD\u5C06\u5728\u6CA1\u6709 API \u4EE4\u724C\u7684\u60C5\u51B5\u4E0B\u4FDD\u5B58\uFF08\u4E34\u65F6\u6A21\u5F0F\uFF09\u3002");let f={accountId:n,email:n,enabled:!0,session:l.session},x=r.accounts?.findIndex(g=>g.accountId===n)??-1;x>=0&&r.accounts?r.accounts[x]=f:(r.accounts||(r.accounts=[]),r.accounts.push(f)),T(r)}console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" \u767B\u5F55\u6210\u529F"),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(` \u90AE\u7BB1: ${n}`),console.log(` UID: ${l.session.selfUid}`),console.log(` \u670D\u52A1\u5668: ${l.session.baseUrl}`),console.log(s?" \u6A21\u5F0F: \u4E34\u65F6\uFF08\u65E0\u81EA\u52A8\u91CD\u65B0\u767B\u5F55\uFF09":" \u6A21\u5F0F: \u6301\u4E45\uFF08\u542F\u7528\u81EA\u52A8\u91CD\u65B0\u767B\u5F55\uFF09"),console.log(""),console.log(` \u914D\u7F6E\u4FDD\u5B58\u81F3: ${W()}`),console.log("")}catch(l){let u=l instanceof Error?l.message:String(l);console.error(`\u767B\u5F55\u5931\u8D25\uFF1A${u}`),process.exit(1)}}async function On(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(` ${p("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=ke(),i=await import("fs");i.existsSync(n)?(i.rmSync(n,{recursive:!0,force:!0}),console.log(p("messages.session_data_removed")),console.log(` ${p("messages.deleted",{path:n})}`)):console.log(p("messages.session_data_not_found")),console.log("");return}let s=_();if(!s.accounts||s.accounts.length===0){console.log(p("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];T(s),console.log(p("messages.logged_out_with",{account:i.accountId||e.email}))}else console.log(p("errors.account_not_found_with_id",{accountId:e.email}))}else s.accounts=[],T(s),console.log(p("messages.logged_out_all")),console.log(` ${p("messages.config_preserved",{path:W()})}`)}catch(n){let i=n instanceof Error?n.message:String(n);console.error(`\u767B\u51FA\u5931\u8D25\uFF1A${i}`),process.exit(1)}console.log("")}async function $n(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=_();if(!s.accounts||s.accounts.length===0){console.log(p("status.not_logged_in")),console.log(""),console.log(p("status.login_hint")),console.log("");return}for(let n of s.accounts){let i=n.session;if(console.log(` ${p("labels.email")}: ${n.email||n.accountId}`),console.log(` UID: ${i?.selfUid||"N/A"}`),console.log(` ${p("labels.mode")}: ${n.enabled?p("messages.mode_persistent"):p("messages.mode_temporary")}`),console.log(` ${p("labels.server")}: ${i?.baseUrl||"N/A"}`),i?.senderName&&console.log(` ${p("labels.name")}: ${i.senderName}`),i&&n.enabled)try{let a=he.fromConfig(n.accountId);if(a){let t=await a.checkSession();if(console.log(` ${p("labels.config")}: ${t?"\u2713 \u6709\u6548":"\u2717 \u5DF2\u8FC7\u671F"}`),e.verbose){let r=await a.fetchSenderName();r&&console.log(` ${p("labels.name")}: ${r}`)}}}catch(a){console.log(` ${p("labels.config")}: \u2717 ${p("api.send_failed",{code:a instanceof Error?a.message:"\u672A\u77E5"})}`)}console.log("")}}async function qn(o,e){let s=e.keyword;s||(console.error(p("errors.keyword_required")),process.exit(1));let n=e.limit||20,i=P();await i.checkSession()||(console.error(p("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(p("messages.searching_groups",{keyword:s})),console.log("");try{let t=await i.searchGroups(s,n);if(t.length===0){console.log(p("messages.no_groups_found")),console.log("");return}console.log(p("messages.found_groups",{count:t.length})),console.log("");for(let r=0;r<t.length;r++){let c=t[r],l=r+1;if(console.log(` ${l}. ${c.name||c.trueName||"Unnamed"}`),console.log(` ${p("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${p("labels.email")}: ${c.email}`),c.description){let u=c.description.length>60?c.description.substring(0,57)+"...":c.description;console.log(` Desc: ${u}`)}console.log("")}}catch(t){let r=t instanceof Error?t.message:String(t);console.error(p("api.search_failed",{error:r})),process.exit(1)}}async function Fn(o,e){let s=e.keyword;s||(console.error(p("errors.keyword_required")),process.exit(1));let n=e.limit||20,i=P();await i.checkSession()||(console.error(p("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(p("messages.searching_contacts",{keyword:s})),console.log("");try{let t=await i.searchContacts(s,n);if(t.length===0){console.log(p("messages.no_contacts_found")),console.log("");return}console.log(p("messages.found_contacts",{count:t.length})),console.log("");for(let r=0;r<t.length;r++){let c=t[r],l=r+1;console.log(` ${l}. ${c.trueName||c.name||"Unnamed"}`),console.log(` ${p("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${p("labels.email")}: ${c.email}`),console.log("")}}catch(t){let r=t instanceof Error?t.message:String(t);console.error(p("api.search_failed",{error:r})),process.exit(1)}}function ea(o,e){return e?o.filter(s=>s.senderUid===e):o}async function Tn(o,e){let s=e.to;s||(console.error(p("errors.recipient_required")),process.exit(1));let n=e.limit||20,i=P();await i.checkSession()||(console.error(p("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(p("messages.listing_messages_with",{name:s})),console.log("");try{let t=await i.resolveRecipient(s);console.log(`${p("labels.conversation")}: ${t.name} (${t.type})`),console.log("");let r=await i.listMessages(t,{limit:n,latestFirst:!0});if(e.sender&&(r=ea(r,e.sender),console.log(p("messages.filter_by_sender",{sender:e.sender,count:r.length})),console.log("")),r.length===0){console.log(p("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:r.map(c=>({mid:c.mid,time:c.time,subject:c.subject,sender_uid:c.senderUid,sender_name:c.senderName,sender_email:c.senderEmail,attachments:c.attachments}))}},null,2));return}console.log(p("messages.recent_messages",{count:r.length})),console.log("");for(let c of r){let l=c.senderName||c.senderEmail||c.senderUid||p("labels.unknown");if(console.log(` \u250C\u2500 ${l} @ ${c.time||"N/A"}`),c.subject){let u=c.subject.length>200?c.subject.substring(0,197)+"...":c.subject;console.log(` \u2502 ${u.replace(/\n/g,`
12
- \u2502 `)}`)}if(c.attachments&&c.attachments.length>0){console.log(` \u2502 ${p("labels.attachments")}:`);for(let u of c.attachments){let d=u.file_size?ue(u.file_size):"",m=u.file_id||"",f=u.uid||"";console.log(` \u2502 - ${u.title||p("labels.unnamed")} ${d}`),m&&console.log(` \u2502 file_id: ${m}`),f&&console.log(` \u2502 uid: ${f}`)}}console.log(` \u2514\u2500 MID: ${c.mid}`),console.log("")}}catch(t){let r=t instanceof Error?t.message:String(t);console.error(p("api.list_failed",{error:r})),process.exit(1)}}import*as En from"readline";function na(o){return new Promise(e=>{console.log(p("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=En.createInterface({input:process.stdin,output:process.stdout});s.question(p("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(p("errors.invalid_selection")),process.exit(1))})})}async function Gn(o,e){let s=e.to;s||(console.error(p("errors.recipient_required")),process.exit(1));let n=P();await n.checkSession()||(console.error(p("errors.session_expired_login")),process.exit(1));try{let a=await n.resolveRecipientInteractive(s,X(s)?void 0:t=>t.length>1?-1:0);if(!X(s)){let t=await n.searchContacts(s,10),r=await n.searchGroups(s,10),c=[...t.map(u=>({uid:u.uid,name:u.trueName||u.name||u.email||u.uid,type:"user"})),...r.map(u=>({uid:u.uid,name:u.name||u.trueName||u.email||u.uid,type:"group"}))],l=c.filter(u=>u.name===s);if(l.length===1){let u=l[0],d=await n.resolveRecipient(u.uid);console.log(""),console.log(p("messages.sending_to",{name:d.name,type:d.type})),console.log(""),await Dn(n,d.uid,e.message);return}if(c.length>1){let u=await na(c),d=c[u],m=await n.resolveRecipient(d.uid);console.log(""),console.log(p("messages.sending_to",{name:m.name,type:m.type})),console.log(""),await Dn(n,m.uid,e.message);return}}console.log(""),console.log(p("messages.sending_to",{name:a.name,type:a.type})),console.log(""),await Dn(n,a.uid,e.message)}catch(a){let t=a instanceof Error?a.message:String(a);console.error(p("api.send_failed",{code:t})),process.exit(1)}}async function Dn(o,e,s){let n=s;if(!n&&!process.stdin.isTTY){let t=[];for await(let r of process.stdin)t.push(r);n=Buffer.concat(t).toString("utf-8").trim()}n||(n=await new Promise(t=>{let r=En.createInterface({input:process.stdin,output:process.stdout});r.question(p("labels.message")+"\uFF1A",c=>{r.close(),t(c.trim())})})),n||(console.error(p("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(` ${p("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(` ${p("labels.to")}: ${i.name}`),console.log(` ${p("labels.type")}: ${i.type}`),console.log(` ${p("labels.mid")}: ${a.mid}`),console.log("")}import*as bs from"readline";function oa(o){return new Promise(e=>{console.log(p("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=bs.createInterface({input:process.stdin,output:process.stdout});s.question(p("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(p("errors.invalid_selection")),process.exit(1))})})}async function Nn(o,e){let s=e.to;s||(console.error(p("errors.recipient_required")),process.exit(1));let n=e.file;(!n||n.length===0)&&(console.error(p("errors.file_required")),process.exit(1));let i=P();await i.checkSession()||(console.error(p("errors.session_expired_login")),process.exit(1));try{let t=await i.resolveRecipientInteractive(s,X(s)?void 0:l=>l.length>1?-1:0);if(!X(s)){let l=await i.searchContacts(s,10),u=await i.searchGroups(s,10),d=[...l.map(f=>({uid:f.uid,name:f.trueName||f.name||f.email||f.uid,type:"user"})),...u.map(f=>({uid:f.uid,name:f.name||f.trueName||f.email||f.uid,type:"group"}))],m=d.filter(f=>f.name===s);if(m.length===1){let f=m[0];t=await i.resolveRecipient(f.uid)}else if(d.length>1){let f=await oa(d),x=d[f];t=await i.resolveRecipient(x.uid)}}console.log(""),console.log(p("messages.sending_files_to",{count:n.length,name:t.name,type:t.type})),console.log("");let r=await import("fs");for(let l=0;l<n.length;l++){let u=n[l],d="N/A";try{let m=r.statSync(u);d=ue(m.size)}catch{d=p("messages.file_not_found")}console.log(` ${l+1}. ${u} (${d})`)}console.log("");let c=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(` ${p("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(` ${p("labels.to")}: ${t.name}`),console.log(` ${p("labels.type")}: ${t.type}`),console.log(` ${p("labels.mid")}: ${c.mid}`),console.log(` ${p("labels.files")}: ${c.files.length}`),console.log("")}catch(t){let r=t instanceof Error?t.message:String(t);console.error(p("api.send_failed",{code:r})),process.exit(1)}}async function Mn(o,e){let s=e["file-id"];s||(console.error(p("errors.file_id_required")),process.exit(1));let n=e.uid;n||(console.error(p("errors.uid_required")),process.exit(1));let i=P();await i.checkSession()||(console.error(p("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(p("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(` ${p("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(` ${p("labels.name")}: ${t.fileName}`),console.log(` ${p("labels.size")}: ${ue(t.fileSize)}`),console.log(` ${p("labels.path")}: ${t.filePath}`),console.log("")}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`${p("api.download_failed")}
11
+ `),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:c.charCodeAt(0)>=32&&(i+=c,process.stdout.write("*"));break}};a.on("data",t)}else if(e){process.stdout.write(o.replace("Password:","Password (visible): "));let i=In.createInterface({input:process.stdin,output:process.stdout});i.question("",a=>{i.close(),s(a.trim())})}else{let i=In.createInterface({input:process.stdin,output:process.stdout});i.question(o,a=>{i.close(),s(a.trim())})}})}async function Pn(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 ys("Email: ")),n||(console.error("\u9519\u8BEF\uFF1A\u8BF7\u8F93\u5165\u90AE\u7BB1"),process.exit(1));let i=e.password;i||(i=process.env.LUNKR_PASSWORD),i||(i=await ys("\u5BC6\u7801\uFF1A",!0)),i||(console.error("\u9519\u8BEF\uFF1A\u8BF7\u8F93\u5165\u5BC6\u7801"),process.exit(1)),console.log(""),console.log("\u6B63\u5728\u8BA4\u8BC1...");let a=e.verbose??!1,t=e.debug??!1,r=P(),c={email:n,password:i,deviceUuid:r.device_uuid,deviceName:r.device_name};try{let l=await bs(c,{deviceUuid:r.device_uuid,deviceName:r.device_name,verbose:a,debug:t});l.success||(console.error(`\u767B\u5F55\u5931\u8D25\uFF1A${l.error}`),process.exit(1)),l.session||(console.error("\u767B\u5F55\u6210\u529F\u4F46\u672A\u8FD4\u56DE\u4F1A\u8BDD"),process.exit(1));let p=vs(l.session.cookie);console.log(""),console.log("\u6B63\u5728\u83B7\u53D6 API \u4EE4\u724C...");try{await ks({email:n,sid:l.session.sid,cookie:l.session.cookie,emailForAccountId:n,baseUrl:l.session.baseUrl,apiPath:l.session.apiPath,deviceUuid:r.device_uuid,cookies:p,temp:s,debug:t})}catch(d){let m=d instanceof Error?d.message:String(d);console.warn(`\u8B66\u544A\uFF1A\u83B7\u53D6 API \u4EE4\u724C\u5931\u8D25\uFF1A${m}`),console.log("\u4F1A\u8BDD\u5C06\u5728\u6CA1\u6709 API \u4EE4\u724C\u7684\u60C5\u51B5\u4E0B\u4FDD\u5B58\uFF08\u4E34\u65F6\u6A21\u5F0F\uFF09\u3002");let f={accountId:n,email:n,enabled:!0,session:l.session},x=r.accounts?.findIndex(g=>g.accountId===n)??-1;x>=0&&r.accounts?r.accounts[x]=f:(r.accounts||(r.accounts=[]),r.accounts.push(f)),D(r)}console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" \u767B\u5F55\u6210\u529F"),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(` \u90AE\u7BB1: ${n}`),console.log(` UID: ${l.session.selfUid}`),console.log(` \u670D\u52A1\u5668: ${l.session.baseUrl}`),console.log(s?" \u6A21\u5F0F: \u4E34\u65F6\uFF08\u65E0\u81EA\u52A8\u91CD\u65B0\u767B\u5F55\uFF09":" \u6A21\u5F0F: \u6301\u4E45\uFF08\u542F\u7528\u81EA\u52A8\u91CD\u65B0\u767B\u5F55\uFF09"),console.log(""),console.log(` \u914D\u7F6E\u4FDD\u5B58\u81F3: ${W()}`),console.log("")}catch(l){let p=l instanceof Error?l.message:String(l);console.error(`\u767B\u5F55\u5931\u8D25\uFF1A${p}`),process.exit(1)}}async function On(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(` ${u("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=ke(),i=await import("fs");i.existsSync(n)?(i.rmSync(n,{recursive:!0,force:!0}),console.log(u("messages.session_data_removed")),console.log(` ${u("messages.deleted",{path:n})}`)):console.log(u("messages.session_data_not_found")),console.log("");return}let s=P();if(!s.accounts||s.accounts.length===0){console.log(u("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];D(s),console.log(u("messages.logged_out_with",{account:i.accountId||e.email}))}else console.log(u("errors.account_not_found_with_id",{accountId:e.email}))}else s.accounts=[],D(s),console.log(u("messages.logged_out_all")),console.log(` ${u("messages.config_preserved",{path:W()})}`)}catch(n){let i=n instanceof Error?n.message:String(n);console.error(`\u767B\u51FA\u5931\u8D25\uFF1A${i}`),process.exit(1)}console.log("")}async function $n(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=P();if(!s.accounts||s.accounts.length===0){console.log(u("status.not_logged_in")),console.log(""),console.log(u("status.login_hint")),console.log("");return}for(let n of s.accounts){let i=n.session;if(console.log(` ${u("labels.email")}: ${n.email||n.accountId}`),console.log(` UID: ${i?.selfUid||"N/A"}`),console.log(` ${u("labels.mode")}: ${n.enabled?u("messages.mode_persistent"):u("messages.mode_temporary")}`),console.log(` ${u("labels.server")}: ${i?.baseUrl||"N/A"}`),i?.senderName&&console.log(` ${u("labels.name")}: ${i.senderName}`),i&&n.enabled)try{let a=ce.fromConfig(n.accountId);if(a){let t=await a.checkSession();if(console.log(` ${u("labels.config")}: ${t?"\u2713 \u6709\u6548":"\u2717 \u5DF2\u8FC7\u671F"}`),e.verbose){let r=await a.fetchSenderName();r&&console.log(` ${u("labels.name")}: ${r}`)}}}catch(a){console.log(` ${u("labels.config")}: \u2717 ${u("api.send_failed",{code:a instanceof Error?a.message:"\u672A\u77E5"})}`)}console.log("")}}async function qn(o,e){let s=e.keyword;s||(console.error(u("errors.keyword_required")),process.exit(1));let n=e.limit||20,i=O();await i.checkSession()||(console.error(u("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(u("messages.searching_groups",{keyword:s})),console.log("");try{let t=await i.searchGroups(s,n);if(t.length===0){console.log(u("messages.no_groups_found")),console.log("");return}console.log(u("messages.found_groups",{count:t.length})),console.log("");for(let r=0;r<t.length;r++){let c=t[r],l=r+1;if(console.log(` ${l}. ${c.name||c.trueName||"Unnamed"}`),console.log(` ${u("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${u("labels.email")}: ${c.email}`),c.description){let p=c.description.length>60?c.description.substring(0,57)+"...":c.description;console.log(` Desc: ${p}`)}console.log("")}}catch(t){let r=t instanceof Error?t.message:String(t);console.error(u("api.search_failed",{error:r})),process.exit(1)}}async function Fn(o,e){let s=e.keyword;s||(console.error(u("errors.keyword_required")),process.exit(1));let n=e.limit||20,i=O();await i.checkSession()||(console.error(u("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(u("messages.searching_contacts",{keyword:s})),console.log("");try{let t=await i.searchContacts(s,n);if(t.length===0){console.log(u("messages.no_contacts_found")),console.log("");return}console.log(u("messages.found_contacts",{count:t.length})),console.log("");for(let r=0;r<t.length;r++){let c=t[r],l=r+1;console.log(` ${l}. ${c.trueName||c.name||"Unnamed"}`),console.log(` ${u("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${u("labels.email")}: ${c.email}`),console.log("")}}catch(t){let r=t instanceof Error?t.message:String(t);console.error(u("api.search_failed",{error:r})),process.exit(1)}}function ia(o,e){return e?o.filter(s=>s.senderUid===e):o}async function Tn(o,e){let s=e.to;s||(console.error(u("errors.recipient_required")),process.exit(1));let n=e.limit||20,i=O();await i.checkSession()||(console.error(u("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(u("messages.listing_messages_with",{name:s})),console.log("");try{let t=await i.resolveRecipient(s);console.log(`${u("labels.conversation")}: ${t.name} (${t.type})`),console.log("");let r=await i.listMessages(t,{limit:n,latestFirst:!0});if(e.sender&&(r=ia(r,e.sender),console.log(u("messages.filter_by_sender",{sender:e.sender,count:r.length})),console.log("")),r.length===0){console.log(u("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:r.map(c=>({mid:c.mid,time:c.time,subject:c.subject,sender_uid:c.senderUid,sender_name:c.senderName,sender_email:c.senderEmail,attachments:c.attachments}))}},null,2));return}console.log(u("messages.recent_messages",{count:r.length})),console.log("");for(let c of r){let l=c.senderName||c.senderEmail||c.senderUid||u("labels.unknown");if(console.log(` \u250C\u2500 ${l} @ ${c.time||"N/A"}`),c.subject){let p=c.subject.length>200?c.subject.substring(0,197)+"...":c.subject;console.log(` \u2502 ${p.replace(/\n/g,`
12
+ \u2502 `)}`)}if(c.attachments&&c.attachments.length>0){console.log(` \u2502 ${u("labels.attachments")}:`);for(let p of c.attachments){let d=p.file_size?de(p.file_size):"",m=p.file_id||"",f=p.uid||"";console.log(` \u2502 - ${p.title||u("labels.unnamed")} ${d}`),m&&console.log(` \u2502 file_id: ${m}`),f&&console.log(` \u2502 uid: ${f}`)}}console.log(` \u2514\u2500 MID: ${c.mid}`),console.log("")}}catch(t){let r=t instanceof Error?t.message:String(t);console.error(u("api.list_failed",{error:r})),process.exit(1)}}import*as En from"readline";function aa(o){return new Promise(e=>{console.log(u("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=En.createInterface({input:process.stdin,output:process.stdout});s.question(u("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(u("errors.invalid_selection")),process.exit(1))})})}async function Gn(o,e){let s=e.to;s||(console.error(u("errors.recipient_required")),process.exit(1));let n=O();await n.checkSession()||(console.error(u("errors.session_expired_login")),process.exit(1));try{let a=await n.resolveRecipientInteractive(s,X(s)?void 0:t=>t.length>1?-1:0);if(!X(s)){let t=await n.searchContacts(s,10),r=await n.searchGroups(s,10),c=[...t.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"})),...r.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}))],l=c.filter(p=>p.name===s);if(l.length===1){let p=l[0],d=await n.resolveRecipient(p.uid);console.log(""),console.log(u("messages.sending_to",{name:d.name,type:d.type})),console.log(""),await Dn(n,d.uid,e.message);return}if(c.length>1){let p=await aa(c),d=c[p],m=await n.resolveRecipient(d.uid);console.log(""),console.log(u("messages.sending_to",{name:m.name,type:m.type})),console.log(""),await Dn(n,m.uid,e.message);return}}console.log(""),console.log(u("messages.sending_to",{name:a.name,type:a.type})),console.log(""),await Dn(n,a.uid,e.message)}catch(a){let t=a instanceof Error?a.message:String(a);console.error(u("api.send_failed",{code:t})),process.exit(1)}}async function Dn(o,e,s){let n=s;if(!n&&!process.stdin.isTTY){let t=[];for await(let r of process.stdin)t.push(r);n=Buffer.concat(t).toString("utf-8").trim()}n||(n=await new Promise(t=>{let r=En.createInterface({input:process.stdin,output:process.stdout});r.question(u("labels.message")+"\uFF1A",c=>{r.close(),t(c.trim())})})),n||(console.error(u("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(` ${u("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(` ${u("labels.to")}: ${i.name}`),console.log(` ${u("labels.type")}: ${i.type}`),console.log(` ${u("labels.mid")}: ${a.mid}`),console.log("")}import*as ws from"readline";function ta(o){return new Promise(e=>{console.log(u("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=ws.createInterface({input:process.stdin,output:process.stdout});s.question(u("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(u("errors.invalid_selection")),process.exit(1))})})}async function Nn(o,e){let s=e.to;s||(console.error(u("errors.recipient_required")),process.exit(1));let n=e.file;(!n||n.length===0)&&(console.error(u("errors.file_required")),process.exit(1));let i=O();await i.checkSession()||(console.error(u("errors.session_expired_login")),process.exit(1));try{let t=await i.resolveRecipientInteractive(s,X(s)?void 0:l=>l.length>1?-1:0);if(!X(s)){let l=await i.searchContacts(s,10),p=await i.searchGroups(s,10),d=[...l.map(f=>({uid:f.uid,name:f.trueName||f.name||f.email||f.uid,type:"user"})),...p.map(f=>({uid:f.uid,name:f.name||f.trueName||f.email||f.uid,type:"group"}))],m=d.filter(f=>f.name===s);if(m.length===1){let f=m[0];t=await i.resolveRecipient(f.uid)}else if(d.length>1){let f=await ta(d),x=d[f];t=await i.resolveRecipient(x.uid)}}console.log(""),console.log(u("messages.sending_files_to",{count:n.length,name:t.name,type:t.type})),console.log("");let r=await import("fs");for(let l=0;l<n.length;l++){let p=n[l],d="N/A";try{let m=r.statSync(p);d=de(m.size)}catch{d=u("messages.file_not_found")}console.log(` ${l+1}. ${p} (${d})`)}console.log("");let c=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(` ${u("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(` ${u("labels.to")}: ${t.name}`),console.log(` ${u("labels.type")}: ${t.type}`),console.log(` ${u("labels.mid")}: ${c.mid}`),console.log(` ${u("labels.files")}: ${c.files.length}`),console.log("")}catch(t){let r=t instanceof Error?t.message:String(t);console.error(u("api.send_failed",{code:r})),process.exit(1)}}async function Mn(o,e){let s=e["file-id"];s||(console.error(u("errors.file_id_required")),process.exit(1));let n=e.uid;n||(console.error(u("errors.uid_required")),process.exit(1));let i=O();await i.checkSession()||(console.error(u("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(u("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(` ${u("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(` ${u("labels.name")}: ${t.fileName}`),console.log(` ${u("labels.size")}: ${de(t.fileSize)}`),console.log(` ${u("labels.path")}: ${t.filePath}`),console.log("")}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`${u("api.download_failed")}
13
13
 
14
- ${r}`),process.exit(1)}}async function zn(o,e){let s=P();await s.checkSession()||(console.error(p("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(p("messages.connecting_websocket")),console.log(p("messages.press_ctrlc")),console.log("");let i=s.createSocketClient({onConnect:()=>{console.log(`[${M(Date.now())}] Connected to Lunkr`)},onDisconnect:()=>{console.log(`[${M(Date.now())}] Disconnected from Lunkr`)},onReady:()=>{console.log(`[${M(Date.now())}] Ready to receive messages`),console.log("")},onMessage:t=>{if(e.raw){console.log(`[${M(Date.now())}] RAW:`),console.log(JSON.stringify(t,null,2)),console.log("");return}if(!t||typeof t!="object"){console.log(`[${M(Date.now())}] Unknown message:`,t);return}let r=t,c=r.topic||"",l=r.payload||"",u;try{u=JSON.parse(l)}catch{console.log(`[${M(Date.now())}] Non-JSON payload on topic: ${c}`);return}if(!u.mid&&!u.subject)return;let d=u.mid||"",m=u.from||{},f=u.to||{},x=m.uid||"",g=m.true_name||m.email||x,b=f.true_name||f.email||"",h=u.subject||"";try{h=decodeURIComponent(h.replace(/\+/g," "))}catch{}let w=u.type||u.group_type||"p2p",k=u.uid||f.uid||"",S=u.time||"";console.log(`[${M(Date.now())}] Message from ${g}:`),console.log(` ID: ${d}`),console.log(` From: ${g} (${x})`),w!=="p2p"&&b?(console.log(` To: ${b} (${k})`),console.log(` Type: ${w}`)):console.log(` Type: ${w}`),S&&console.log(` Time: ${S}`),console.log(` Text: ${h.substring(0,200)}${h.length>200?"...":""}`),console.log("")},onError:t=>{console.error(`[${M(Date.now())}] Error: ${t.message}`)}});await i.connect()||(console.error(p("api.socket_connect_failed",{accountId:"N/A"})),process.exit(1)),process.on("SIGINT",()=>{console.log(""),console.log(p("messages.disconnecting")),i.disconnect(),process.exit(0)}),await new Promise(()=>{})}async function sa(o,e,s,n){let i=`\u{1F916} ${p("create.welcome_title")}
14
+ ${r}`),process.exit(1)}}async function zn(o,e){let s=O();await s.checkSession()||(console.error(u("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(u("messages.connecting_websocket")),console.log(u("messages.press_ctrlc")),console.log("");let i=s.createSocketClient({onConnect:()=>{console.log(`[${z(Date.now())}] Connected to Lunkr`)},onDisconnect:()=>{console.log(`[${z(Date.now())}] Disconnected from Lunkr`)},onReady:()=>{console.log(`[${z(Date.now())}] Ready to receive messages`),console.log("")},onMessage:t=>{if(e.raw){console.log(`[${z(Date.now())}] RAW:`),console.log(JSON.stringify(t,null,2)),console.log("");return}if(!t||typeof t!="object"){console.log(`[${z(Date.now())}] Unknown message:`,t);return}let r=t,c=r.topic||"",l=r.payload||"",p;try{p=JSON.parse(l)}catch{console.log(`[${z(Date.now())}] Non-JSON payload on topic: ${c}`);return}if(!p.mid&&!p.subject)return;let d=p.mid||"",m=p.from||{},f=p.to||{},x=m.uid||"",g=m.true_name||m.email||x,b=f.true_name||f.email||"",h=p.subject||"";try{h=decodeURIComponent(h.replace(/\+/g," "))}catch{}let y=p.type||p.group_type||"p2p",k=p.uid||f.uid||"",C=p.time||"";console.log(`[${z(Date.now())}] Message from ${g}:`),console.log(` ID: ${d}`),console.log(` From: ${g} (${x})`),y!=="p2p"&&b?(console.log(` To: ${b} (${k})`),console.log(` Type: ${y}`)):console.log(` Type: ${y}`),C&&console.log(` Time: ${C}`),console.log(` Text: ${h.substring(0,200)}${h.length>200?"...":""}`),console.log("")},onError:t=>{console.error(`[${z(Date.now())}] Error: ${t.message}`)}});await i.connect()||(console.error(u("api.socket_connect_failed",{accountId:"N/A"})),process.exit(1)),process.on("SIGINT",()=>{console.log(""),console.log(u("messages.disconnecting")),i.disconnect(),process.exit(0)}),await new Promise(()=>{})}async function ra(o,e,s,n){let i=`\u{1F916} ${u("create.welcome_title")}
15
15
 
16
- \u{1F4CB} ${p("create.discussion_name")}: ${n.name}
17
- \u{1F194} ${p("create.discussion_id")}: ${e}
18
- ${n.agentId?`\u{1F916} ${p("create.linked_agent")}: ${n.agentId}
19
- `:""}\u{1F4A1} ${p("create.instructions")}:
20
- \u2022 ${p("create.instruction_1")}
21
- \u2022 ${p("create.instruction_2")}
22
- \u2022 ${p("create.instruction_3")}
16
+ \u{1F4CB} ${u("create.discussion_name")}: ${n.name}
17
+ \u{1F194} ${u("create.discussion_id")}: ${e}
18
+ ${n.agentId?`\u{1F916} ${u("create.linked_agent")}: ${n.agentId}
19
+ `:""}\u{1F4A1} ${u("create.instructions")}:
20
+ \u2022 ${u("create.instruction_1")}
21
+ \u2022 ${u("create.instruction_2")}
22
+ \u2022 ${u("create.instruction_3")}
23
23
 
24
- \u2705 ${p("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(p("api.welcome_failed",{code:String(t.code)}))}async function He(o,e){let{name:s,agentId:n,force:i,welcome:a=!0}=e;if(!s||s.trim().length===0)throw new Error(p("errors.discussion_name_required"));let t=P();if(!await t.checkSession())throw new Error(p("errors.session_expired_login"));let c=`[Bot-${s.trim()}]`,l=rn(),u;if(i){console.log(p("create.creating_discussion",{name:c}));try{u=(await t.createGroup(c)).uid,console.log(p("create.discussion_created",{gid:u}))}catch(k){let S=k instanceof Error?k.message:String(k);throw S.includes("\u5DF2\u5B58\u5728")||S.includes("exist")?new Error(p("create.discussion_exists",{name:c})):k}}else{let k=c.replace(/^\[|\]$/g,""),A=(await t.searchGroups(k,20)).find(v=>v.name===c||v.trueName===c);if(A)u=A.uid,console.log(p("create.reusing_discussion",{name:c})),console.log(` GID: ${u}`);else{console.log(p("create.creating_discussion",{name:c}));try{u=(await t.createGroup(c)).uid,console.log(p("create.discussion_created",{gid:u}))}catch(v){let L=v instanceof Error?v.message:String(v);throw L.includes("\u5DF2\u5B58\u5728")||L.includes("exist")?new Error(p("create.discussion_exists",{name:c})):v}}}if(a)try{await sa(t,u,l,{name:s.trim(),agentId:n}),console.log(" \u2705 "+p("create.welcome_sent"))}catch(k){console.warn(" \u26A0\uFE0F "+p("create.welcome_failed",{error:k instanceof Error?k.message:String(k)}))}let m=await o.runtime.config.loadConfig(),f=m.channels||{},x=f["lunkr-openclaw"]||{},g=t.getSelfUid(),b={name:s.trim(),agentId:n,creatorUid:g,createdAt:Date.now()},h=x.botDiscussions||{};h[u]=b;let w={...m,channels:{...f,"lunkr-openclaw":{...x,botDiscussions:h}}};await o.runtime.config.writeConfigFile(w),console.log(""),console.log(p("messages.bot_discussion_configured",{name:c})),console.log(` GID: ${u}`),n&&console.log(` ${p("create.linked_agent")}: ${n}`),console.log(""),console.log(p("create.can_chat_now")),console.log(p("create.change_agent_hint")),console.log(""),console.log(p("create.config_auto_reload"))}var ks={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}]};async function Qe(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 r=Object.entries(t);if(r.length===0){console.log(p("messages.no_bot_discussions"));return}console.log(`${p("bot_list.title",{count:r.length})}
25
- `);for(let[c,l]of r)console.log(` ${l.name}`),console.log(` GID: ${c}`),l.agentId&&console.log(` Agent: ${l.agentId}`),console.log("")}var ys={name:"bot-list",description:"List all configured bot discussions",options:[{name:"json",alias:"j",description:"Output as JSON",type:"boolean",required:!1}]};import*as Cs from"readline";function ws(o,e=!0){return new Promise(s=>{let n=Cs.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 Xe(o,e){let{name:s,gid:n}=e;if(!s&&!n)throw new Error(p("bot_delete.name_or_gid_required"));let i=P();if(!await i.checkSession())throw new Error(p("errors.session_expired_login"));let r=await o.runtime.config.loadConfig(),c=r.channels||{},l=c["lunkr-openclaw"]||{},u=l.botDiscussions||{},d,m;if(n)d=n,m=u[n];else if(s){for(let[g,b]of Object.entries(u))if(b.name===s.trim()){d=g,m=b;break}}if(!d||!m){console.log(p("bot_delete.not_found"));return}if(console.log(""),console.log(p("bot_delete.found",{name:m.name,gid:d})),!e.yes&&!await ws(p("bot_delete.confirm")+" ")){console.log(p("bot_delete.cancelled"));return}let f=!1;if(e.yes||(f=await ws(p("bot_delete.dissolve_prompt")+" ")),f){console.log(p("bot_delete.deleting_from_server",{name:m.name}));try{await i.deleteGroup(d),console.log(" "+p("bot_delete.deleted_from_server"))}catch(g){console.warn(" \u26A0\uFE0F "+p("bot_delete.delete_from_server_failed",{error:g instanceof Error?g.message:String(g)}))}}delete u[d];let x={...r,channels:{...c,"lunkr-openclaw":{...l,botDiscussions:u}}};await o.runtime.config.writeConfigFile(x),console.log(p("bot_delete.removed_from_config",{name:m.name})),console.log(` GID: ${d}`),f||(console.log(""),console.log(p("bot_delete.reuse_hint"))),console.log(""),console.log(p("create.config_auto_reload"))}var Ss={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}]};import{homedir as Ls}from"os";import{join as As}from"path";import{rmSync as ia,existsSync as aa}from"fs";async function Bn(o,e){let{purge:s=!1}=e;console.log("\u6B63\u5728\u5378\u8F7D Lunkr \u6269\u5C55..."),console.log(""),console.log("\u6B65\u9AA4 1\uFF1A\u4ECE OpenClaw \u914D\u7F6E\u4E2D\u79FB\u9664...");try{let i=await o.runtime.config.loadConfig(),a={...i.channels||{}};if(a["lunkr-openclaw"]){delete a["lunkr-openclaw"];let t={...i,channels:a};await o.runtime.config.writeConfigFile(t),console.log(" \u2713 \u5DF2\u4ECE\u914D\u7F6E\u4E2D\u79FB\u9664 lunkr-openclaw \u9891\u9053")}else console.log(" \u2139 \u914D\u7F6E\u4E2D\u672A\u627E\u5230 lunkr-openclaw \u9891\u9053\uFF08\u5DF2\u79FB\u9664\uFF09")}catch(n){console.log(" \u26A0 \u66F4\u65B0\u914D\u7F6E\u5931\u8D25\uFF1A",n instanceof Error?n.message:String(n))}if(s){console.log(""),console.log("\u6B65\u9AA4 2\uFF1A\u6E05\u9664\u4F1A\u8BDD\u6570\u636E...");let n=As(Ls(),".lunkr-mcp");if(aa(n))try{ia(n,{recursive:!0,force:!0}),console.log(` \u2713 \u5DF2\u5220\u9664 ${n}`)}catch(i){console.log(" \u26A0 \u5220\u9664\u4F1A\u8BDD\u6570\u636E\u5931\u8D25\uFF1A",i instanceof Error?i.message:String(i))}else console.log(" \u2139 \u672A\u627E\u5230\u4F1A\u8BDD\u6570\u636E")}else console.log(""),console.log("\u6B65\u9AA4 2\uFF1A\u8DF3\u8FC7\u4F1A\u8BDD\u6570\u636E\uFF08\u4F7F\u7528 --purge \u5220\u9664\uFF09"),console.log(` \u4F1A\u8BDD\u6570\u636E\u4F4D\u7F6E: ${As(Ls(),".lunkr-mcp")}`);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 \u6269\u5C55\u5DF2\u5378\u8F7D\u3002"),console.log(""),console.log("\u5DF2\u5220\u9664\u5185\u5BB9\uFF1A"),console.log(" \u2022 OpenClaw \u4E2D\u7684 Lunkr \u9891\u9053\u914D\u7F6E"),s&&console.log(" \u2022 Lunkr \u4F1A\u8BDD\u51ED\u8BC1"),console.log(""),console.log("\u91CD\u65B0\u5B89\u88C5\uFF1A"),console.log(" 1. \u8FD0\u884C: openclaw lunkr login"),console.log(" 2. \u5728 ~/.openclaw/config.json \u4E2D\u542F\u7528\u9891\u9053"),console.log(" 3. \u8FD0\u884C: openclaw lunkr create <\u540D\u79F0>"),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")}async function Kn(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(`\u5DE5\u5177 '${s}' \u5DF2\u5B89\u88C5\u3002`);return}let r={...i,tools:{...a,alsoAllow:[...t,s]}};await o.runtime.config.writeConfigFile(r),console.log(`\u5DE5\u5177 '${s}' \u5B89\u88C5\u6210\u529F\u3002`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}async function Vn(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(`\u5DE5\u5177 '${s}' \u672A\u5B89\u88C5\u3002`);return}let r={...i,tools:{...a,alsoAllow:t.filter(c=>c!==s)}};await o.runtime.config.writeConfigFile(r),console.log(`\u5DE5\u5177 '${s}' \u5378\u8F7D\u6210\u529F\u3002`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}import Rs from"node:path";async function Jn(o,e){let s=e.name||"lunkr",n="lunkr-openclaw",a=await o.runtime.config.loadConfig(),t=a.plugins||{},r=t.entries||{},c=r[n]||{},l=a.skills||{},u=l.entries||{},d=u[s]||{},m=l.load||{},f=m.extraDirs||[],x=Rs.join(Rs.dirname(o.source),"skills"),g=c.enabled===!0&&d.enabled===!0,b=f.includes(x);if(g&&b){console.log(`\u6280\u80FD '${s}' \u5DF2\u5B89\u88C5\u3002`);return}let h=b?f:[...f.filter(k=>!k.includes(`/${s}/skills`)),x],w={...a,plugins:{...t,entries:{...r,[n]:{...c,enabled:!0}}},skills:{...l,load:{...m,extraDirs:h},entries:{...u,[s]:{...d,enabled:!0}}}};await o.runtime.config.writeConfigFile(w),console.log(`\u6280\u80FD '${s}' \u5B89\u88C5\u6210\u529F\u3002`),console.log(`\u6280\u80FD\u76EE\u5F55: ${x}`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}import js from"node:path";async function Wn(o,e){let s=e.name||"lunkr",i=await o.runtime.config.loadConfig(),a=i.skills||{},t=a.entries||{},r=t[s]||{};if(!r.enabled){console.log(`\u6280\u80FD '${s}' \u672A\u5B89\u88C5\u3002`);return}let c=a.load||{},l=c.extraDirs||[],u=js.join(js.dirname(o.source),"skills"),d=l.filter(f=>f!==u),m={...i,skills:{...a,load:{...c,extraDirs:d.length>0?d:void 0},entries:{...t,[s]:{...r,enabled:!1}}}};d.length===0&&delete m.skills.load,await o.runtime.config.writeConfigFile(m),console.log(`\u6280\u80FD '${s}' \u5378\u8F7D\u6210\u529F\u3002`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}import{Type as C}from"@sinclair/typebox";function Us(){return _()}function B(o){return{success:!0,data:o}}function q(o){return{success:!1,error:o}}async function ne(){try{let o=P();return await o.checkSession()?{api:o}:{error:q("\u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8FD0\u884C\uFF1Aopenclaw lunkr login")}}catch(o){return{error:q(o instanceof Error?o.message:String(o))}}}async function Hn(o){let e=await ne();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 B({to:i.to,type:i.type,mid:i.mid})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function Qn(o){let e=await ne();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchGroups(o.keyword,o.limit||10);return B({groups:n.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function Xn(o){let e=await ne();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchContacts(o.keyword,o.limit||10);return B({contacts:n.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function _s(o){let e=await ne();return"error"in e?e.error:q("getGroupInfo not yet implemented")}async function Is(o){let e=await ne();return"error"in e?e.error:q("getUserInfo not yet implemented")}async function Ps(o){let e=await ne();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 B({file_name:n.fileName,file_size:n.fileSize,saved_to:n.filePath})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function Os(o){let e=await ne();return"error"in e?e.error:q("getMessage not yet implemented")}async function Yn(o){let e=await ne();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 B({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 q(n instanceof Error?n.message:String(n))}}async function $s(o){let e=await ne();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 B({to:i.to,mid:i.mid,files:i.files})}catch(n){return q(n instanceof Error?n.message:String(n))}}function Y(o){return{content:[{type:"text",text:JSON.stringify(o,null,2)}],details:o}}var ra=C.Object({to:C.String({description:"Recipient: user ID, group ID, email, or group email (t..xxx@coremail.cn)"}),content:C.String({description:"Message content to send"}),type:C.Optional(C.Union([C.Literal("text"),C.Literal("markdown")],{description:"Message type (default: text)"}))}),ca=C.Object({keyword:C.String({description:"Search keyword for group name"}),limit:C.Optional(C.Number({description:"Max results (default: 10)"}))}),la=C.Object({keyword:C.String({description:"Search keyword for contact name or email"}),limit:C.Optional(C.Number({description:"Max results (default: 10)"}))}),pa=C.Object({group_id:C.String({description:"Group ID (e.g., #26783249#T)"})}),ua=C.Object({user_id:C.String({description:"User ID (e.g., #835#U) or email"})}),da=C.Object({to:C.String({description:"Recipient: user ID, group ID, email, or name (auto-resolved)"}),file_paths:C.Array(C.String(),{description:"Array of absolute file paths to send"}),message:C.Optional(C.String({description:"Optional text message to accompany the files"}))}),ma=C.Object({file_id:C.String({description:"File ID from message"}),uid:C.String({description:"File storage UID (from attachment, e.g., #833#F)"}),save_path:C.Optional(C.String({description:"Path to save file (default: temp directory)"})),file_name:C.String({description:"Filename (REQUIRED: get from message attachment.title to ensure correct Chinese encoding)"})}),fa=C.Object({message_id:C.String({description:"Message ID to retrieve"})}),ga=C.Object({to:C.String({description:"Recipient: user ID, group ID, or email to list messages from"}),limit:C.Optional(C.Number({description:"Max messages to retrieve (default: 20)"}))}),xa=C.Object({command:C.String({description:"Raw command arguments"}),commandName:C.String({description:"Slash command name (e.g., /lunkr-send)"}),skillName:C.String({description:"Skill name"})});function ha(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 q("Usage: /lunkr send <to> <message>");let a=n[1],t=n.slice(2).join(" ");return B({action:"send",to:a,content:t})}case"search-groups":case"sg":{if(n.length<2)return q("Usage: /lunkr search-groups <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return B({action:"searchGroups",keyword:a,limit:t})}case"search-contacts":case"sc":{if(n.length<2)return q("Usage: /lunkr search-contacts <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return B({action:"searchContacts",keyword:a,limit:t})}case"list-messages":case"lm":case"msgs":{if(n.length<2)return q("Usage: /lunkr list-messages <to> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):20;return B({action:"listMessages",to:a,limit:t})}case"help":case void 0:return B({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 q(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function va(o){if(!o.success||!o.data)return o;let e=o.data;switch(e.action){case"send":return Hn({to:e.to,content:e.content});case"searchGroups":return Qn({keyword:e.keyword,limit:e.limit});case"searchContacts":return Xn({keyword:e.keyword,limit:e.limit});case"listMessages":return Yn({to:e.to,limit:e.limit});default:return q(`Unknown action: ${e.action}`)}}function qs(o){let e=Us();if(!e?.accounts?.length){o.logger?.info?.("lunkr: No accounts in config file, skipping tool registration");return}if(!e.accounts.some(n=>n.session)){o.logger?.info?.("lunkr: No accounts with valid session found, skipping tool registration");return}o.logger?.info?.(`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:ra,async execute(n,i){let a=await Hn(i);return Y(a)}},{name:"lunkr_send_message"}),o.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:ca,async execute(n,i){let a=await Qn(i);return Y(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:la,async execute(n,i){let a=await Xn(i);return Y(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:pa,async execute(n,i){let a=await _s(i);return Y(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:ua,async execute(n,i){let a=await Is(i);return Y(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:da,async execute(n,i){let a=await $s(i);return Y(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:ma,async execute(n,i){let a=await Ps(i);return Y(a)}},{name:"lunkr_download_file"}),o.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:fa,async execute(n,i){let a=await Os(i);return Y(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:ga,async execute(n,i){let a=await Yn(i);return Y(a)}},{name:"lunkr_list_messages"}),o.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:xa,async execute(n,i){let a=ha(i),t=await va(a);return Y(t)}},{name:"lunkr_command"}),o.logger?.info?.("lunkr: Registered 10 Lunkr tools (9 API tools + 1 command dispatcher)")}var ba={type:"object",properties:{}},ka={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:ba,register(o){let e={channel:{lunkr:{resolveAccount:async n=>{let i=await o.runtime.config.loadConfig();return N(i,n)},ensureAuthenticated:async n=>{if(!n.sid||!n.cookie)throw new Error("Lunkr \u8D26\u53F7\u672A\u8BA4\u8BC1\uFF0C\u8BF7\u8FD0\u884C\uFF1Aopenclaw lunkr login");let i=new U(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),a={"Cim.sid":n.sid};for(let r of n.cookie.split(";")){let c=r.trim();if(c.includes("=")){let[l,u]=c.split("=",2);a[l.trim()]=u.trim()}}if(i.setCookies(a),!await i.checkSessionValid(n.sid))throw new Error("Lunkr \u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u8BA4\u8BC1\u3002")},sendMessage:async n=>{let i=await e.channel.lunkr.resolveAccount(n.accountId);if(!i)throw new Error(`\u672A\u627E\u5230 Lunkr \u8D26\u53F7\uFF1A${n.accountId}`);await e.channel.lunkr.ensureAuthenticated(i);let a=new U(i.lunkrConfig.baseUrl,{apiPath:i.lunkrConfig.apiPath}),t={"Cim.sid":i.sid};for(let d of i.cookie.split(";")){let m=d.trim();if(m.includes("=")){let[f,x]=m.split("=",2);t[f.trim()]=x.trim()}}a.setCookies(t);let r=n.chatType==="p2p"?"cim.p2p:send":"cim.discussion:send",c=n.chatType==="p2p"?{to:n.chatId}:{gid:n.chatId},l={content:n.content,type:"text"};n.replyTo&&(l.replyTo=n.replyTo);let u=await a.postJson({func:r,sid:i.sid,query:c,payload:l});if(u.code!=="S_OK")throw new Error(`\u53D1\u9001\u6D88\u606F\u5931\u8D25\uFF1A${u.code}`)},probeAccount:async(n,i)=>{let a=await e.channel.lunkr.resolveAccount(n);if(!a)return{valid:!1,error:"\u672A\u627E\u5230\u8D26\u53F7"};try{let t=new U(a.lunkrConfig.baseUrl,{apiPath:a.lunkrConfig.apiPath,timeout:i?i/1e3:5}),r={"Cim.sid":a.sid};for(let l of a.cookie.split(";")){let u=l.trim();if(u.includes("=")){let[d,m]=u.split("=",2);r[d.trim()]=m.trim()}}t.setCookies(r);let c=await t.checkSessionValid(a.sid);return{valid:c,session:c?a.lunkrConfig:void 0}}catch(t){return{valid:!1,error:t instanceof Error?t.message:String(t)}}}}},config:{readConfigFile:async()=>o.runtime.config.loadConfig(),writeConfigFile:async n=>o.runtime.config.writeConfigFile(n)},logging:{shouldLogVerbose:()=>process.env.LUNKR_VERBOSE==="1"}};ps(e),o.registerChannel(Sn),qs(o);let s=async(n,i=!1)=>{try{await n()}catch(a){i||process.env.LUNKR_VERBOSE==="1"?console.error(a):console.error(a instanceof Error?a.message:String(a)),process.exitCode=1}};o.registerCli(({program:n})=>{let i=n.command("lunkr").description("Lunkr channel commands");i.command("login").description("Login to Lunkr using QR code (persistent session)").option("-v, --verbose","Verbose output").option("-d, --debug","Debug output (show network requests)").option("-f, --force","Force re-login even if session is valid").action(async a=>{await s(async()=>{await Rn(o,{verbose:a.verbose,debug:a.debug,force:a.force})},a.verbose||a.debug)}),i.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("-v, --verbose","Verbose output").option("-d, --debug","Debug output (show network requests)").action(async a=>{await s(async()=>{await Pn(o,{email:a.email,password:a.password,temp:a.temp,verbose:a.verbose,debug:a.debug})},a.verbose||a.debug)}),i.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 s(async()=>{await On(o,{email:a.email,all:a.all})})}),i.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").option("-v, --verbose","Verbose output").action(async(a,t)=>{if(!a){console.error("\u9519\u8BEF\uFF1A\u9700\u8981 name \u53C2\u6570"),process.exitCode=1;return}await s(async()=>{await He(o,{name:a,agentId:t.agentId,force:t.force,welcome:t.welcome})},t.verbose)}),i.command("bot-list").description("List all configured bot discussions").option("-j, --json","Output as JSON").action(async a=>{await s(async()=>{await Qe(o,{json:a.json})})}),i.command("bot-delete [name]").description("Delete a Bot discussion from configuration").option("-g, --gid <gid>","GID of the bot discussion to remove").option("-v, --verbose","Verbose output").action(async(a,t)=>{await s(async()=>{await Xe(o,{name:a||t.name,gid:t.gid})},t.verbose)}),i.command("uninstall-extension").description("Uninstall the entire Lunkr extension from OpenClaw").option("-p, --purge","Also remove Lunkr session credentials").option("-v, --verbose","Verbose output").action(async a=>{await s(async()=>{await Bn(o,{purge:a.purge})},a.verbose)}),i.command("tool-install [name]").description("Install a tool (add to tools.alsoAllow)").action(async a=>{await s(async()=>{await Kn(o,{name:a||void 0})})}),i.command("tool-uninstall [name]").description("Uninstall a tool (remove from tools.alsoAllow)").action(async a=>{await s(async()=>{await Vn(o,{name:a||void 0})})}),i.command("skill-install [name]").description("Install a skill (enable in skills.entries)").action(async a=>{await s(async()=>{await Jn(o,{name:a||void 0})})}),i.command("skill-uninstall [name]").description("Uninstall a skill (disable in skills.entries)").action(async a=>{await s(async()=>{await Wn(o,{name:a||void 0})})}),i.command("status").description("Show login status").option("-v, --verbose","Show detailed info").action(async a=>{await s(async()=>{await $n(o,{verbose:a.verbose})})}),i.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 s(async()=>{await qn(o,{keyword:a.keyword,limit:a.limit})})}),i.command("search-contact").description("Search for contacts").requiredOption("-k, --keyword <keyword>","Search keyword").option("-l, --limit <limit>","Maximum results",parseInt).action(async a=>{await s(async()=>{await Fn(o,{keyword:a.keyword,limit:a.limit})})}),i.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 s(async()=>{await Tn(o,{to:a.to,limit:a.limit,sender:a.sender})})}),i.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 s(async()=>{await Gn(o,{to:a.to,message:a.message})})}),i.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 s(async()=>{await Nn(o,{to:a.to,file:a.file,message:a.message})})}),i.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 s(async()=>{await Mn(o,{"file-id":a.fileId,uid:a.uid,output:a.output})})}),i.command("listen").description("Listen for real-time messages").option("-r, --raw","Show raw message data").action(async a=>{await s(async()=>{await zn(o,{raw:a.raw})})})},{commands:["lunkr"]})}},sp=ka;export{Xe as botDeleteCommand,Ss as botDeleteCommandMeta,Qe as botListCommand,ys as botListCommandMeta,Sn as channelPlugin,He as createCommand,ks as createCommandMeta,sp as default};
24
+ \u2705 ${u("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(u("api.welcome_failed",{code:String(t.code)}))}async function Qe(o,e){let{name:s,agentId:n,force:i,welcome:a=!0}=e;if(!s||s.trim().length===0)throw new Error(u("errors.discussion_name_required"));let t=O();if(!await t.checkSession())throw new Error(u("errors.session_expired_login"));let c=`[Bot-${s.trim()}]`,l=cn(),p;if(i){console.log(u("create.creating_discussion",{name:c}));try{p=(await t.createGroup(c)).uid,console.log(u("create.discussion_created",{gid:p}))}catch(k){let C=k instanceof Error?k.message:String(k);throw C.includes("\u5DF2\u5B58\u5728")||C.includes("exist")?new Error(u("create.discussion_exists",{name:c})):k}}else{let k=c.replace(/^\[|\]$/g,""),A=(await t.searchGroups(k,20)).find(v=>v.name===c||v.trueName===c);if(A)p=A.uid,console.log(u("create.reusing_discussion",{name:c})),console.log(` GID: ${p}`);else{console.log(u("create.creating_discussion",{name:c}));try{p=(await t.createGroup(c)).uid,console.log(u("create.discussion_created",{gid:p}))}catch(v){let S=v instanceof Error?v.message:String(v);throw S.includes("\u5DF2\u5B58\u5728")||S.includes("exist")?new Error(u("create.discussion_exists",{name:c})):v}}}if(a)try{await ra(t,p,l,{name:s.trim(),agentId:n}),console.log(" \u2705 "+u("create.welcome_sent"))}catch(k){console.warn(" \u26A0\uFE0F "+u("create.welcome_failed",{error:k instanceof Error?k.message:String(k)}))}let m=await o.runtime.config.loadConfig(),f=m.channels||{},x=f["lunkr-openclaw"]||{},g=t.getSelfUid(),b={name:s.trim(),agentId:n,creatorUid:g,createdAt:Date.now()},h=x.botDiscussions||{};h[p]=b;let y={...m,channels:{...f,"lunkr-openclaw":{...x,botDiscussions:h}}};await o.runtime.config.writeConfigFile(y),console.log(""),console.log(u("messages.bot_discussion_configured",{name:c})),console.log(` GID: ${p}`),n&&console.log(` ${u("create.linked_agent")}: ${n}`),console.log(""),console.log(u("create.can_chat_now")),console.log(u("create.change_agent_hint")),console.log(""),console.log(u("create.config_auto_reload"))}var Cs={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}]};async function Xe(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 r=Object.entries(t);if(r.length===0){console.log(u("messages.no_bot_discussions"));return}console.log(`${u("bot_list.title",{count:r.length})}
25
+ `);for(let[c,l]of r)console.log(` ${l.name}`),console.log(` GID: ${c}`),l.agentId&&console.log(` Agent: ${l.agentId}`),console.log("")}var Ss={name:"bot-list",description:"List all configured bot discussions",options:[{name:"json",alias:"j",description:"Output as JSON",type:"boolean",required:!1}]};import*as As from"readline";function Ls(o,e=!0){return new Promise(s=>{let n=As.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 Ye(o,e){let{name:s,gid:n}=e;if(!s&&!n)throw new Error(u("bot_delete.name_or_gid_required"));let i=O();if(!await i.checkSession())throw new Error(u("errors.session_expired_login"));let r=await o.runtime.config.loadConfig(),c=r.channels||{},l=c["lunkr-openclaw"]||{},p=l.botDiscussions||{},d,m;if(n)d=n,m=p[n];else if(s){for(let[g,b]of Object.entries(p))if(b.name===s.trim()){d=g,m=b;break}}if(!d||!m){console.log(u("bot_delete.not_found"));return}if(console.log(""),console.log(u("bot_delete.found",{name:m.name,gid:d})),!e.yes&&!await Ls(u("bot_delete.confirm")+" ")){console.log(u("bot_delete.cancelled"));return}let f=!1;if(e.yes||(f=await Ls(u("bot_delete.dissolve_prompt")+" ")),f){console.log(u("bot_delete.deleting_from_server",{name:m.name}));try{await i.deleteGroup(d),console.log(" "+u("bot_delete.deleted_from_server"))}catch(g){console.warn(" \u26A0\uFE0F "+u("bot_delete.delete_from_server_failed",{error:g instanceof Error?g.message:String(g)}))}}delete p[d];let x={...r,channels:{...c,"lunkr-openclaw":{...l,botDiscussions:p}}};await o.runtime.config.writeConfigFile(x),console.log(u("bot_delete.removed_from_config",{name:m.name})),console.log(` GID: ${d}`),f||(console.log(""),console.log(u("bot_delete.reuse_hint"))),console.log(""),console.log(u("create.config_auto_reload"))}var Rs={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}]};import{homedir as Bn}from"os";import{join as Kn}from"path";import{existsSync as js,rmSync as Us}from"fs";async function Vn(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(" Lunkr \u6269\u5C55\u5378\u8F7D"),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("\u6B65\u9AA4 1\uFF1A\u6E05\u9664 OpenClaw \u914D\u7F6E...");try{let r=await o.runtime.config.loadConfig(),c=!1,l=r.plugins||{},p=l.allow||[],d=p.filter(v=>v!==n);d.length<p.length?(l.allow=d,c=!0,console.log(` \u2713 \u5DF2\u4ECE plugins.allow \u79FB\u9664 '${n}'`)):console.log(` \u2139 plugins.allow \u4E2D\u672A\u627E\u5230 '${n}'`);let m=l.entries||{};m[n]?(delete m[n],l.entries=m,c=!0,console.log(` \u2713 \u5DF2\u5220\u9664 plugins.entries.${n}`)):console.log(` \u2139 plugins.entries \u4E2D\u672A\u627E\u5230 '${n}'`),r.plugins=l;let f=r.tools||{},x=f.alsoAllow||[],g=x.filter(v=>v!==i);g.length<x.length?(f.alsoAllow=g,c=!0,console.log(` \u2713 \u5DF2\u4ECE tools.alsoAllow \u79FB\u9664 '${i}'`)):console.log(` \u2139 tools.alsoAllow \u4E2D\u672A\u627E\u5230 '${i}'`),r.tools=f;let b=r.skills||{},h=b.entries||{};h[a]?(delete h[a],b.entries=h,c=!0,console.log(` \u2713 \u5DF2\u5220\u9664 skills.entries.${a}`)):console.log(` \u2139 skills.entries \u4E2D\u672A\u627E\u5230 '${a}'`);let y=b.load||{},k=y.extraDirs||[],C=k.filter(v=>!v.includes(`/${n}/skills`)&&!v.includes(`/${a}/skills`));C.length<k.length?(y.extraDirs=C,b.load=y,c=!0,console.log(" \u2713 \u5DF2\u4ECE skills.load.extraDirs \u79FB\u9664\u6280\u80FD\u76EE\u5F55")):console.log(" \u2139 skills.load.extraDirs \u4E2D\u672A\u627E\u5230\u6280\u80FD\u76EE\u5F55"),r.skills=b;let A=r.channels||{};A[n]?(delete A[n],r.channels=A,c=!0,console.log(` \u2713 \u5DF2\u5220\u9664 channels.${n}`)):console.log(` \u2139 channels \u4E2D\u672A\u627E\u5230 '${n}'`),c&&await o.runtime.config.writeConfigFile(r)}catch(t){console.log(" \u26A0 \u66F4\u65B0\u914D\u7F6E\u5931\u8D25\uFF1A",t instanceof Error?t.message:String(t))}if(s){console.log(""),console.log("\u6B65\u9AA4 2\uFF1A\u6E05\u9664\u4F1A\u8BDD\u6570\u636E...");let t=Kn(Bn(),".lunkr");if(js(t))try{Us(t,{recursive:!0,force:!0}),console.log(` \u2713 \u5DF2\u5220\u9664 ${t}`)}catch(c){console.log(" \u26A0 \u5220\u9664\u4F1A\u8BDD\u6570\u636E\u5931\u8D25\uFF1A",c instanceof Error?c.message:String(c))}else console.log(` \u2139 \u672A\u627E\u5230 ${t}`);let r=Kn(Bn(),".lunkr-mcp");if(js(r))try{Us(r,{recursive:!0,force:!0}),console.log(` \u2713 \u5DF2\u5220\u9664\u65E7\u8DEF\u5F84 ${r}`)}catch(c){console.log(" \u26A0 \u5220\u9664\u65E7\u4F1A\u8BDD\u6570\u636E\u5931\u8D25\uFF1A",c instanceof Error?c.message:String(c))}}else console.log(""),console.log("\u6B65\u9AA4 2\uFF1A\u8DF3\u8FC7\u4F1A\u8BDD\u6570\u636E\uFF08\u4F7F\u7528 --purge \u5220\u9664\uFF09"),console.log(` \u4F1A\u8BDD\u6570\u636E\u4F4D\u7F6E: ${Kn(Bn(),".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(" Lunkr \u6269\u5C55\u5DF2\u5378\u8F7D\u3002"),console.log(""),console.log(" \u5F7B\u5E95\u79FB\u9664\u6269\u5C55\u6587\u4EF6\uFF1A"),console.log(" openclaw plugins uninstall lunkr-openclaw"),console.log(""),console.log(" \u91CD\u65B0\u5B89\u88C5\uFF1A"),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("")}async function Jn(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(`\u5DE5\u5177 '${s}' \u5DF2\u5B89\u88C5\u3002`);return}let r={...i,tools:{...a,alsoAllow:[...t,s]}};await o.runtime.config.writeConfigFile(r),console.log(`\u5DE5\u5177 '${s}' \u5B89\u88C5\u6210\u529F\u3002`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}async function Wn(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(`\u5DE5\u5177 '${s}' \u672A\u5B89\u88C5\u3002`);return}let r={...i,tools:{...a,alsoAllow:t.filter(c=>c!==s)}};await o.runtime.config.writeConfigFile(r),console.log(`\u5DE5\u5177 '${s}' \u5378\u8F7D\u6210\u529F\u3002`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}import _s from"node:path";async function Hn(o,e){let s=e.name||"lunkr",n="lunkr-openclaw",a=await o.runtime.config.loadConfig(),t=a.plugins||{},r=t.entries||{},c=r[n]||{},l=a.skills||{},p=l.entries||{},d=p[s]||{},m=l.load||{},f=m.extraDirs||[],x=_s.join(_s.dirname(o.source),"skills"),g=c.enabled===!0&&d.enabled===!0,b=f.includes(x);if(g&&b){console.log(`\u6280\u80FD '${s}' \u5DF2\u5B89\u88C5\u3002`);return}let h=b?f:[...f.filter(k=>!k.includes(`/${s}/skills`)),x],y={...a,plugins:{...t,entries:{...r,[n]:{...c,enabled:!0}}},skills:{...l,load:{...m,extraDirs:h},entries:{...p,[s]:{...d,enabled:!0}}}};await o.runtime.config.writeConfigFile(y),console.log(`\u6280\u80FD '${s}' \u5B89\u88C5\u6210\u529F\u3002`),console.log(`\u6280\u80FD\u76EE\u5F55: ${x}`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}import Is from"node:path";async function Qn(o,e){let s=e.name||"lunkr",i=await o.runtime.config.loadConfig(),a=i.skills||{},t=a.entries||{},r=t[s]||{};if(!r.enabled){console.log(`\u6280\u80FD '${s}' \u672A\u5B89\u88C5\u3002`);return}let c=a.load||{},l=c.extraDirs||[],p=Is.join(Is.dirname(o.source),"skills"),d=l.filter(f=>f!==p),m={...i,skills:{...a,load:{...c,extraDirs:d.length>0?d:void 0},entries:{...t,[s]:{...r,enabled:!1}}}};d.length===0&&delete m.skills.load,await o.runtime.config.writeConfigFile(m),console.log(`\u6280\u80FD '${s}' \u5378\u8F7D\u6210\u529F\u3002`),console.log("\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")}import Ps from"node:path";async function Xn(o,e){let s="lunkr-openclaw",n="lunkr-openclaw",i="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(" Lunkr \u4E00\u952E\u914D\u7F6E"),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 t=await o.runtime.config.loadConfig(),r=!1,c=t.plugins||{},l=c.allow||[];if(l.includes(s))console.log(` \u2713 \u63D2\u4EF6 '${s}' \u5DF2\u6CE8\u518C\u5230 plugins.allow`);else{let R=[...l,s];t.plugins={...c,allow:R},r=!0,console.log(` \u2713 \u63D2\u4EF6 '${s}' \u5DF2\u6DFB\u52A0\u5230 plugins.allow`)}let p=t.tools||{},d=p.alsoAllow||[];d.includes(n)?console.log(` \u2713 \u5DE5\u5177 '${n}' \u5DF2\u6CE8\u518C\u5230 tools.alsoAllow`):(t.tools={...p,alsoAllow:[...d,n]},r=!0,console.log(` \u2713 \u5DE5\u5177 '${n}' \u5DF2\u6DFB\u52A0\u5230 tools.alsoAllow`));let f=(t.plugins||{}).entries||{},x=f[s]||{},g=t.skills||{},b=g.entries||{},h=b[i]||{},y=g.load||{},k=y.extraDirs||[],C=Ps.join(Ps.dirname(o.source),"skills"),A=x.enabled===!0,v=h.enabled===!0,S=k.includes(C);if(A&&v&&S)console.log(` \u2713 \u6280\u80FD '${i}' \u5DF2\u6CE8\u518C`);else{let R=S?k:[...k.filter(F=>!F.includes(`/${i}/skills`)),C];t.plugins={...t.plugins,entries:{...f,[s]:{...x,enabled:!0}}},t.skills={...g,load:{...y,extraDirs:R},entries:{...b,[i]:{...h,enabled:!0}}},r=!0,console.log(` \u2713 \u6280\u80FD '${i}' \u5DF2\u6CE8\u518C`)}if(r&&(await o.runtime.config.writeConfigFile(t),console.log(""),console.log(" \u914D\u7F6E\u5DF2\u66F4\u65B0\uFF0C\u91CD\u542F\u6D3B\u52A8\u4F1A\u8BDD\u4EE5\u5E94\u7528\u66F4\u6539\u3002")),console.log(""),e.skipLogin){console.log(" \u23ED \u8DF3\u8FC7\u767B\u5F55\u6B65\u9AA4 (--skip-login)"),console.log("");return}let _=P().accounts?.[0];if(_?.session?.sid)try{let R=ce.fromConfig(_.accountId);if(R&&await R.checkSession()){let G=_.session.senderName||_.email||_.accountId;console.log(` \u2713 \u5DF2\u767B\u5F55: ${G}`),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(" \u8BBE\u7F6E\u5B8C\u6210\uFF01"),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("");return}}catch{}console.log(" \u5F00\u59CB\u767B\u5F55..."),await Ie(o,{})}import{Type as L}from"@sinclair/typebox";function Os(){return P()}function K(o){return{success:!0,data:o}}function q(o){return{success:!1,error:o}}async function ne(){try{let o=O();return await o.checkSession()?{api:o}:{error:q("\u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8FD0\u884C\uFF1Aopenclaw lunkr login")}}catch(o){return{error:q(o instanceof Error?o.message:String(o))}}}async function Yn(o){let e=await ne();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 K({to:i.to,type:i.type,mid:i.mid})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function Zn(o){let e=await ne();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchGroups(o.keyword,o.limit||10);return K({groups:n.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function eo(o){let e=await ne();if("error"in e)return e.error;let{api:s}=e;try{let n=await s.searchContacts(o.keyword,o.limit||10);return K({contacts:n.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function $s(o){let e=await ne();return"error"in e?e.error:q("getGroupInfo not yet implemented")}async function qs(o){let e=await ne();return"error"in e?e.error:q("getUserInfo not yet implemented")}async function Fs(o){let e=await ne();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 K({file_name:n.fileName,file_size:n.fileSize,saved_to:n.filePath})}catch(n){return q(n instanceof Error?n.message:String(n))}}async function Ts(o){let e=await ne();return"error"in e?e.error:q("getMessage not yet implemented")}async function no(o){let e=await ne();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 K({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 q(n instanceof Error?n.message:String(n))}}async function Ds(o){let e=await ne();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 K({to:i.to,mid:i.mid,files:i.files})}catch(n){return q(n instanceof Error?n.message:String(n))}}function Y(o){return{content:[{type:"text",text:JSON.stringify(o,null,2)}],details:o}}var la=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)"}))}),pa=L.Object({keyword:L.String({description:"Search keyword for group name"}),limit:L.Optional(L.Number({description:"Max results (default: 10)"}))}),ua=L.Object({keyword:L.String({description:"Search keyword for contact name or email"}),limit:L.Optional(L.Number({description:"Max results (default: 10)"}))}),da=L.Object({group_id:L.String({description:"Group ID (e.g., #26783249#T)"})}),ma=L.Object({user_id:L.String({description:"User ID (e.g., #835#U) or email"})}),fa=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"}))}),ga=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)"})}),xa=L.Object({message_id:L.String({description:"Message ID to retrieve"})}),ha=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)"}))}),va=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 ba(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 q("Usage: /lunkr send <to> <message>");let a=n[1],t=n.slice(2).join(" ");return K({action:"send",to:a,content:t})}case"search-groups":case"sg":{if(n.length<2)return q("Usage: /lunkr search-groups <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return K({action:"searchGroups",keyword:a,limit:t})}case"search-contacts":case"sc":{if(n.length<2)return q("Usage: /lunkr search-contacts <keyword> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):10;return K({action:"searchContacts",keyword:a,limit:t})}case"list-messages":case"lm":case"msgs":{if(n.length<2)return q("Usage: /lunkr list-messages <to> [limit]");let a=n[1],t=n[2]?parseInt(n[2],10):20;return K({action:"listMessages",to:a,limit:t})}case"help":case void 0:return K({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 q(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function ka(o){if(!o.success||!o.data)return o;let e=o.data;switch(e.action){case"send":return Yn({to:e.to,content:e.content});case"searchGroups":return Zn({keyword:e.keyword,limit:e.limit});case"searchContacts":return eo({keyword:e.keyword,limit:e.limit});case"listMessages":return no({to:e.to,limit:e.limit});default:return q(`Unknown action: ${e.action}`)}}function Es(o){let e=Os();if(!e?.accounts?.length){o.logger?.info?.("lunkr: No accounts in config file, skipping tool registration");return}if(!e.accounts.some(n=>n.session)){o.logger?.info?.("lunkr: No accounts with valid session found, skipping tool registration");return}o.logger?.info?.(`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:la,async execute(n,i){let a=await Yn(i);return Y(a)}},{name:"lunkr_send_message"}),o.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:pa,async execute(n,i){let a=await Zn(i);return Y(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:ua,async execute(n,i){let a=await eo(i);return Y(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:da,async execute(n,i){let a=await $s(i);return Y(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:ma,async execute(n,i){let a=await qs(i);return Y(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:fa,async execute(n,i){let a=await Ds(i);return Y(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:ga,async execute(n,i){let a=await Fs(i);return Y(a)}},{name:"lunkr_download_file"}),o.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:xa,async execute(n,i){let a=await Ts(i);return Y(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:ha,async execute(n,i){let a=await no(i);return Y(a)}},{name:"lunkr_list_messages"}),o.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:va,async execute(n,i){let a=ba(i),t=await ka(a);return Y(t)}},{name:"lunkr_command"}),o.logger?.info?.("lunkr: Registered 10 Lunkr tools (9 API tools + 1 command dispatcher)")}var ya={type:"object",properties:{}},wa={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:ya,register(o){let e={channel:{lunkr:{resolveAccount:async n=>{let i=await o.runtime.config.loadConfig();return M(i,n)},ensureAuthenticated:async n=>{if(!n.sid||!n.cookie)throw new Error("Lunkr \u8D26\u53F7\u672A\u8BA4\u8BC1\uFF0C\u8BF7\u8FD0\u884C\uFF1Aopenclaw lunkr login");let i=new I(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),a={"Cim.sid":n.sid};for(let r of n.cookie.split(";")){let c=r.trim();if(c.includes("=")){let[l,p]=c.split("=",2);a[l.trim()]=p.trim()}}if(i.setCookies(a),!await i.checkSessionValid(n.sid))throw new Error("Lunkr \u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u8BA4\u8BC1\u3002")},sendMessage:async n=>{let i=await e.channel.lunkr.resolveAccount(n.accountId);if(!i)throw new Error(`\u672A\u627E\u5230 Lunkr \u8D26\u53F7\uFF1A${n.accountId}`);await e.channel.lunkr.ensureAuthenticated(i);let a=new I(i.lunkrConfig.baseUrl,{apiPath:i.lunkrConfig.apiPath}),t={"Cim.sid":i.sid};for(let d of i.cookie.split(";")){let m=d.trim();if(m.includes("=")){let[f,x]=m.split("=",2);t[f.trim()]=x.trim()}}a.setCookies(t);let r=n.chatType==="p2p"?"cim.p2p:send":"cim.discussion:send",c=n.chatType==="p2p"?{to:n.chatId}:{gid:n.chatId},l={content:n.content,type:"text"};n.replyTo&&(l.replyTo=n.replyTo);let p=await a.postJson({func:r,sid:i.sid,query:c,payload:l});if(p.code!=="S_OK")throw new Error(`\u53D1\u9001\u6D88\u606F\u5931\u8D25\uFF1A${p.code}`)},probeAccount:async(n,i)=>{let a=await e.channel.lunkr.resolveAccount(n);if(!a)return{valid:!1,error:"\u672A\u627E\u5230\u8D26\u53F7"};try{let t=new I(a.lunkrConfig.baseUrl,{apiPath:a.lunkrConfig.apiPath,timeout:i?i/1e3:5}),r={"Cim.sid":a.sid};for(let l of a.cookie.split(";")){let p=l.trim();if(p.includes("=")){let[d,m]=p.split("=",2);r[d.trim()]=m.trim()}}t.setCookies(r);let c=await t.checkSessionValid(a.sid);return{valid:c,session:c?a.lunkrConfig:void 0}}catch(t){return{valid:!1,error:t instanceof Error?t.message:String(t)}}}}},config:{readConfigFile:async()=>o.runtime.config.loadConfig(),writeConfigFile:async n=>o.runtime.config.writeConfigFile(n)},logging:{shouldLogVerbose:()=>process.env.LUNKR_VERBOSE==="1"}};ms(e),o.registerChannel(Ln),Es(o);let s=async(n,i=!1)=>{try{await n()}catch(a){i||process.env.LUNKR_VERBOSE==="1"?console.error(a):console.error(a instanceof Error?a.message:String(a)),process.exitCode=1}};o.registerCli(({program:n})=>{let i=n.command("lunkr").description("Lunkr channel commands");i.command("setup").description("One-click setup: register plugin, tools, skills, and login").option("--skip-login","Skip the login step").action(async a=>{await s(async()=>{await Xn(o,{skipLogin:a.skipLogin})})}),i.command("login").description("Login to Lunkr using QR code (persistent session)").option("-v, --verbose","Verbose output").option("-d, --debug","Debug output (show network requests)").option("-f, --force","Force re-login even if session is valid").action(async a=>{await s(async()=>{await Ie(o,{verbose:a.verbose,debug:a.debug,force:a.force})},a.verbose||a.debug)}),i.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("-v, --verbose","Verbose output").option("-d, --debug","Debug output (show network requests)").action(async a=>{await s(async()=>{await Pn(o,{email:a.email,password:a.password,temp:a.temp,verbose:a.verbose,debug:a.debug})},a.verbose||a.debug)}),i.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 s(async()=>{await On(o,{email:a.email,all:a.all})})}),i.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").option("-v, --verbose","Verbose output").action(async(a,t)=>{if(!a){console.error("\u9519\u8BEF\uFF1A\u9700\u8981 name \u53C2\u6570"),process.exitCode=1;return}await s(async()=>{await Qe(o,{name:a,agentId:t.agentId,force:t.force,welcome:t.welcome})},t.verbose)}),i.command("bot-list").description("List all configured bot discussions").option("-j, --json","Output as JSON").action(async a=>{await s(async()=>{await Xe(o,{json:a.json})})}),i.command("bot-delete [name]").description("Delete a Bot discussion from configuration").option("-g, --gid <gid>","GID of the bot discussion to remove").option("-v, --verbose","Verbose output").action(async(a,t)=>{await s(async()=>{await Ye(o,{name:a||t.name,gid:t.gid})},t.verbose)}),i.command("uninstall-extension").description("Uninstall the entire Lunkr extension from OpenClaw").option("-p, --purge","Also remove Lunkr session credentials").option("-v, --verbose","Verbose output").action(async a=>{await s(async()=>{await Vn(o,{purge:a.purge})},a.verbose)}),i.command("tool-install [name]").description("Install a tool (add to tools.alsoAllow)").action(async a=>{await s(async()=>{await Jn(o,{name:a||void 0})})}),i.command("tool-uninstall [name]").description("Uninstall a tool (remove from tools.alsoAllow)").action(async a=>{await s(async()=>{await Wn(o,{name:a||void 0})})}),i.command("skill-install [name]").description("Install a skill (enable in skills.entries)").action(async a=>{await s(async()=>{await Hn(o,{name:a||void 0})})}),i.command("skill-uninstall [name]").description("Uninstall a skill (disable in skills.entries)").action(async a=>{await s(async()=>{await Qn(o,{name:a||void 0})})}),i.command("status").description("Show login status").option("-v, --verbose","Show detailed info").action(async a=>{await s(async()=>{await $n(o,{verbose:a.verbose})})}),i.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 s(async()=>{await qn(o,{keyword:a.keyword,limit:a.limit})})}),i.command("search-contact").description("Search for contacts").requiredOption("-k, --keyword <keyword>","Search keyword").option("-l, --limit <limit>","Maximum results",parseInt).action(async a=>{await s(async()=>{await Fn(o,{keyword:a.keyword,limit:a.limit})})}),i.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 s(async()=>{await Tn(o,{to:a.to,limit:a.limit,sender:a.sender})})}),i.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 s(async()=>{await Gn(o,{to:a.to,message:a.message})})}),i.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 s(async()=>{await Nn(o,{to:a.to,file:a.file,message:a.message})})}),i.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 s(async()=>{await Mn(o,{"file-id":a.fileId,uid:a.uid,output:a.output})})}),i.command("listen").description("Listen for real-time messages").option("-r, --raw","Show raw message data").action(async a=>{await s(async()=>{await zn(o,{raw:a.raw})})})},{commands:["lunkr"]})}},dp=wa;export{Ye as botDeleteCommand,Rs as botDeleteCommandMeta,Xe as botListCommand,Ss as botListCommandMeta,Ln as channelPlugin,Qe as createCommand,Cs as createCommandMeta,dp as default};
26
26
  /*! Bundled license information:
27
27
 
28
28
  mime-db/index.js: