slnodejs 6.1.128 → 6.1.129
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.
|
@@ -46,14 +46,14 @@ source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-templ
|
|
|
46
46
|
"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:true,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"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:false,extensions:["jnlp"]},"application/x-javascript":{compressible:true},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:false,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:false},"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:true,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:false,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:false,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:true,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:false,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:false,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:true,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:true,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:true,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:true,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:true,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:false,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:true,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:true,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:true,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:true,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:true},"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:true,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:false,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"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:true},"application/xaml+xml":{source:"apache",compressible:true,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:true,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:true,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:true,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:true,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:true},"application/xcap-ns+xml":{source:"iana",compressible:true,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:true},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:true},"application/xenc+xml":{source:"iana",compressible:true,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:true,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:true},"application/xliff+xml":{source:"iana",compressible:true,extensions:["xlf"]},"application/xml":{source:"iana",compressible:true,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:true,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:true},"application/xmpp+xml":{source:"iana",compressible:true},"application/xop+xml":{source:"iana",compressible:true,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:true,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:true,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:true,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:true,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:true},"application/yang-data+xml":{source:"iana",compressible:true},"application/yang-patch+json":{source:"iana",compressible:true},"application/yang-patch+xml":{source:"iana",compressible:true},"application/yin+xml":{source:"iana",compressible:true,extensions:["yin"]},"application/zip":{source:"iana",compressible:false,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:false,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"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:false,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/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:false},"audio/l8":{source:"iana"},"audio/lpc":{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/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:false,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:false,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:false,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:false,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:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:false},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:false},"audio/vorbis":{source:"iana",compressible:false},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:false,extensions:["wav"]},"audio/wave":{compressible:false,extensions:["wav"]},"audio/webm":{source:"apache",compressible:false,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:false,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:false,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:true,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:true,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:false,extensions:["apng"]},"image/avci":{source:"iana"},"image/avcs":{source:"iana"},"image/avif":{source:"iana",compressible:false,extensions:["avif"]},"image/bmp":{source:"iana",compressible:true,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:false,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/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:false,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:false,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:false,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:false,extensions:["jpx","jpf"]},"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:false},"image/png":{source:"iana",compressible:false,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:true,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:false,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:true,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"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:true,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:true,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:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:true,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:true,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-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:false},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"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:false},"message/imdn+xml":{source:"iana",compressible:true},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:false},"message/rfc822":{source:"iana",compressible:true,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:true,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:true,extensions:["glb"]},"model/iges":{source:"iana",compressible:false,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:false,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:true,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:false,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:false,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:true,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:true},"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"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:false,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:false,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:false,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:false,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:true,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:false},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:false},"multipart/form-data":{source:"iana",compressible:false},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:false},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:false},"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:true,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:true},"text/cmd":{compressible:true},"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:true,extensions:["css"]},"text/csv":{source:"iana",compressible:true,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"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/html":{source:"iana",compressible:true,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:true},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:true,extensions:["jsx"]},"text/less":{compressible:true,extensions:["less"]},"text/markdown":{source:"iana",compressible:true,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:true,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:true,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:true,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/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:true,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:true,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:true,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:true,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:true,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.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:"iana"},"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.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/vtt":{source:"iana",charset:"UTF-8",compressible:true,extensions:["vtt"]},"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:true},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:true},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:true,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:true,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:true,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},
|
|
47
47
|
"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:true,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:true,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:true,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/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/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/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:false,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:false,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:false,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:false,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.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"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:false,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:false,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:false,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:false,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:true},"x-shader/x-vertex":{compressible:true}}},{}],442:[function(require,module,exports){module.exports=require("./db.json")},{"./db.json":441}],443:[function(require,module,exports){"use strict";var db=require("mime-db");var extname=require("path").extname;var EXTRACT_TYPE_REGEXP=/^\s*([^;\s]*)(?:;|\s|$)/;var TEXT_TYPE_REGEXP=/^text\//i;exports.charset=charset;exports.charsets={lookup:charset};exports.contentType=contentType;exports.extension=extension;exports.extensions=Object.create(null);exports.lookup=lookup;exports.types=Object.create(null);populateMaps(exports.extensions,exports.types);function charset(type){if(!type||typeof type!=="string"){return false}var match=EXTRACT_TYPE_REGEXP.exec(type);var mime=match&&db[match[1].toLowerCase()];if(mime&&mime.charset){return mime.charset}if(match&&TEXT_TYPE_REGEXP.test(match[1])){return"UTF-8"}return false}function contentType(str){if(!str||typeof str!=="string"){return false}var mime=str.indexOf("/")===-1?exports.lookup(str):str;if(!mime){return false}if(mime.indexOf("charset")===-1){var charset=exports.charset(mime);if(charset)mime+="; charset="+charset.toLowerCase()}return mime}function extension(type){if(!type||typeof type!=="string"){return false}var match=EXTRACT_TYPE_REGEXP.exec(type);var exts=match&&exports.extensions[match[1].toLowerCase()];if(!exts||!exts.length){return false}return exts[0]}function lookup(path){if(!path||typeof path!=="string"){return false}var extension=extname("x."+path).toLowerCase().substr(1);if(!extension){return false}return exports.types[extension]||false}function populateMaps(extensions,types){var preference=["nginx","apache",undefined,"iana"];Object.keys(db).forEach(function forEachMimeType(type){var mime=db[type];var exts=mime.extensions;if(!exts||!exts.length){return}extensions[type]=exts;for(var i=0;i<exts.length;i++){var extension=exts[i];if(types[extension]){var from=preference.indexOf(db[types[extension]].source);var to=preference.indexOf(mime.source);if(types[extension]!=="application/octet-stream"&&(from>to||from===to&&types[extension].substr(0,12)==="application/")){continue}}types[extension]=type}})}},{"mime-db":442,path:171}],444:[function(require,module,exports){var crypto=require("crypto");function sha(key,body,algorithm){return crypto.createHmac(algorithm,key).update(body).digest("base64")}function rsa(key,body){return crypto.createSign("RSA-SHA1").update(body).sign(key,"base64")}function rfc3986(str){return encodeURIComponent(str).replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/'/g,"%27")}function map(obj){var key,val,arr=[];for(key in obj){val=obj[key];if(Array.isArray(val))for(var i=0;i<val.length;i++)arr.push([key,val[i]]);else if(typeof val==="object")for(var prop in val)arr.push([key+"["+prop+"]",val[prop]]);else arr.push([key,val])}return arr}function compare(a,b){return a>b?1:a<b?-1:0}function generateBase(httpMethod,base_uri,params){var normalized=map(params).map(function(p){return[rfc3986(p[0]),rfc3986(p[1]||"")]}).sort(function(a,b){return compare(a[0],b[0])||compare(a[1],b[1])}).map(function(p){return p.join("=")}).join("&");var base=[rfc3986(httpMethod?httpMethod.toUpperCase():"GET"),rfc3986(base_uri),rfc3986(normalized)].join("&");return base}function hmacsign(httpMethod,base_uri,params,consumer_secret,token_secret){var base=generateBase(httpMethod,base_uri,params);var key=[consumer_secret||"",token_secret||""].map(rfc3986).join("&");return sha(key,base,"sha1")}function hmacsign256(httpMethod,base_uri,params,consumer_secret,token_secret){var base=generateBase(httpMethod,base_uri,params);var key=[consumer_secret||"",token_secret||""].map(rfc3986).join("&");return sha(key,base,"sha256")}function rsasign(httpMethod,base_uri,params,private_key,token_secret){var base=generateBase(httpMethod,base_uri,params);var key=private_key||"";return rsa(key,base)}function plaintext(consumer_secret,token_secret){var key=[consumer_secret||"",token_secret||""].map(rfc3986).join("&");return key}function sign(signMethod,httpMethod,base_uri,params,consumer_secret,token_secret){var method;var skipArgs=1;switch(signMethod){case"RSA-SHA1":method=rsasign;break;case"HMAC-SHA1":method=hmacsign;break;case"HMAC-SHA256":method=hmacsign256;break;case"PLAINTEXT":method=plaintext;skipArgs=4;break;default:throw new Error("Signature method not supported: "+signMethod)}return method.apply(null,[].slice.call(arguments,skipArgs))}exports.hmacsign=hmacsign;exports.hmacsign256=hmacsign256;exports.rsasign=rsasign;exports.plaintext=plaintext;exports.sign=sign;exports.rfc3986=rfc3986;exports.generateBase=generateBase},{crypto:81}],445:[function(require,module,exports){(function(process){(function(){(function(){var getNanoSeconds,hrtime,loadTime,moduleLoadTime,nodeLoadTime,upTime;if(typeof performance!=="undefined"&&performance!==null&&performance.now){module.exports=function(){return performance.now()}}else if(typeof process!=="undefined"&&process!==null&&process.hrtime){module.exports=function(){return(getNanoSeconds()-nodeLoadTime)/1e6};hrtime=process.hrtime;getNanoSeconds=function(){var hr;hr=hrtime();return hr[0]*1e9+hr[1]};moduleLoadTime=getNanoSeconds();upTime=process.uptime()*1e9;nodeLoadTime=moduleLoadTime-upTime}else if(Date.now){module.exports=function(){return Date.now()-loadTime};loadTime=Date.now()}else{module.exports=function(){return(new Date).getTime()-loadTime};loadTime=(new Date).getTime()}}).call(this)}).call(this)}).call(this,require("_process"))},{_process:179}],446:[function(require,module,exports){
|
|
48
48
|
module.exports=["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","com.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","net.ar","org.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","education.tas.edu.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","cri.br","cuiaba.br","curitiba.br","def.br","ecn.br","eco.br","edu.br","emp.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","aprendemas.cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","name.cy","net.cy","org.cy","parliament.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","com.dz","org.dz","net.dz","gov.dz","edu.dz","asso.dz","pol.dz","art.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个人.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","edu.ky","gov.ky","com.ky","org.ky","net.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","com.my","net.my","org.my","gov.my","edu.my","mil.my","name.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","net.ss","org.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","gov.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","intl.tn","nat.tn","net.tn","org.tn","info.tn","perso.tn","tourism.tn","edunet.tn","rnrt.tn","rns.tn","rnu.tn","mincom.tn","agrinet.tn","defense.tn","turen.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","dominic.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.ri.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","org.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","*.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afamilycompany","afl","africa","agakhan","agency","aig","aigo","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","budapest","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","caseih","cash","casino","catering","catholic","cba","cbn","cbre","cbs","ceb","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","duck","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","esurance","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glade","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","intel","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","iveco","jaguar","java","jcb","jcp","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","lupin","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","metlife","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","mutual","nab","nadex","nagoya","nationwide","natura","navy","nba","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","qvc","racing","radio","raid","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","spreadbetting","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiftcover","swiss","sydney","symantec","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","大众汽车","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","工行","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手表","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","珠宝","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","adobeaemcloud.com","adobeaemcloud.net","*.dev.adobeaemcloud.com","beep.pl","barsy.ca","*.compute.estate","*.alces.network","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","amsw.nl","t3l3p0rt.net","tele.amune.org","apigee.io","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","myfritz.net","*.awdev.ca","*.advisor.ws","b-data.io","backplaneapp.io","balena-devices.com","app.banzaicloud.io","betainabox.com","bnr.la","blackbaudcdn.net","boomla.net","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","mycd.eu","carrd.co","crd.co","uwu.ai","ae.org","ar.com","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.com","gb.net","hu.com","hu.net","jp.net","jpn.com","kr.com","mex.com","no.com","qc.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","uy.com","za.bz","za.com","africa.com","gr.com","in.net","us.org","co.com","c.la","certmgr.org","xenapponazure.com","discourse.group","discourse.team","virtueeldomein.nl","cleverapps.io","*.lcl.dev","*.stg.dev","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","cloudera.site","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cloudeity.net","cnpy.gdn","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","edgestack.me","debian.net","dedyn.io","dnshome.de","online.th","shop.th","drayddns.com","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","en-root.fr","mytuleap.com","onred.one","staging.onred.one","enonic.io","customer.enonic.io","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastpanel.direct","fastvps-server.com","fhapp.xyz","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","flynnhub.com","flynnhosting.net","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","service.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","lab.ms","github.io","githubusercontent.com","gitlab.io","glitch.me","lolipop.io","cloudapps.digital","london.cloudapps.digital","homeoffice.gov.uk","ro.im","shop.ro","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","cloudfunctions.net","cloud.goog","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","awsmppl.com","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","hepforge.org","herokuapp.com","herokussl.com","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","bpl.biz","orx.biz","ng.city","biz.gl","ng.ink","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","ng.school","sch.so","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","ipifony.net","mein-iserv.de","test-iserv.de","iserv.dev","iobb.net","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","oya.to","co.krd","edu.krd","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkitools.space","linkyard.cloud","linkyard-cloud.ch","members.linode.com","nodebalancer.linode.com","we.bs","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","uklugs.org","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","miniserver.com","memset.net","cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","ui.nabu.casa","pony.club","of.fashion","on.fashion","of.football","in.london","of.london","for.men","and.mom","for.mom","for.one","for.sale","of.work","to.work","nctu.me","bitballoon.com","netlify.com","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","nodum.co","nodum.io","pcloud.host","nyc.mn","nom.ae","nom.af","nom.ai","nom.al","nym.by","nom.bz","nym.bz","nom.cl","nym.ec","nom.gd","nom.ge","nom.gl","nym.gr","nom.gt","nym.gy","nym.hk","nom.hn","nym.ie","nom.im","nom.ke","nym.kz","nym.la","nym.lc","nom.li","nym.li","nym.lt","nym.lu","nom.lv","nym.me","nom.mk","nym.mn","nym.mx","nom.nu","nym.nz","nym.pe","nym.pt","nom.pw","nom.qa","nym.ro","nom.rs","nom.si","nym.sk","nom.st","nym.su","nym.sx","nom.tj","nym.tw","nom.ug","nom.uy","nom.vc","nom.vg","static.observableusercontent.com","cya.gg","cloudycluster.net","nid.io","opencraft.hosting","operaunite.com","skygearapp.com","outsystemscloud.com","ownprovider.com","own.pm","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","on-web.fr","*.platform.sh","*.platformsh.site","dyn53.io","co.bn","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","qualifioapp.com","qbuser.com","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","ptplus.fit","wellbeingzone.co.uk","git-pages.rit.edu","sandcats.io","logoip.de","logoip.com","schokokeks.net","gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","senseering.net","biz.ua","co.ua","pp.ua","shiftedit.io","myshopblocks.com","shopitsite.com","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","stackhero-network.com","static.land","dev.static.land","sites.static.land","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","applicationcloud.io","scapp.io","*.s5y.io","*.sensiosite.cloud","syncloud.it","diskstation.me","dscloud.biz","dscloud.me","dscloud.mobi","dsmynas.com","dsmynas.net","dsmynas.org","familyds.com","familyds.net","familyds.org","i234.me","myds.me","synology.me","vpnplus.to","direct.quickconnect.to","taifun-dns.de","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","edugit.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","arvo.network","azimuth.network","bloxcms.com","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","virtualuser.de","virtual-user.de","urown.cloud","dnsupdate.info","lib.de.us","2038.io","router.management","v-info.info","voorloper.cloud","v.ua","wafflecell.com","*.webhare.dev","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","wmflabs.org","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","nohost.me","noho.st","za.net","za.org","now.sh","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"]
|
|
49
|
-
},{}],447:[function(require,module,exports){"use strict";var Punycode=require("punycode");var internals={};internals.rules=require("./data/rules.json").map(function(rule){return{rule:rule,suffix:rule.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:rule.charAt(0)==="*",exception:rule.charAt(0)==="!"}});internals.endsWith=function(str,suffix){return str.indexOf(suffix,str.length-suffix.length)!==-1};internals.findRule=function(domain){var punyDomain=Punycode.toASCII(domain);return internals.rules.reduce(function(memo,rule){if(rule.punySuffix===-1){rule.punySuffix=Punycode.toASCII(rule.suffix)}if(!internals.endsWith(punyDomain,"."+rule.punySuffix)&&punyDomain!==rule.punySuffix){return memo}return rule},null)};exports.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."};internals.validate=function(input){var ascii=Punycode.toASCII(input);if(ascii.length<1){return"DOMAIN_TOO_SHORT"}if(ascii.length>255){return"DOMAIN_TOO_LONG"}var labels=ascii.split(".");var label;for(var i=0;i<labels.length;++i){label=labels[i];if(!label.length){return"LABEL_TOO_SHORT"}if(label.length>63){return"LABEL_TOO_LONG"}if(label.charAt(0)==="-"){return"LABEL_STARTS_WITH_DASH"}if(label.charAt(label.length-1)==="-"){return"LABEL_ENDS_WITH_DASH"}if(!/^[a-z0-9\-]+$/.test(label)){return"LABEL_INVALID_CHARS"}}};exports.parse=function(input){if(typeof input!=="string"){throw new TypeError("Domain name must be a string.")}var domain=input.slice(0).toLowerCase();if(domain.charAt(domain.length-1)==="."){domain=domain.slice(0,domain.length-1)}var error=internals.validate(domain);if(error){return{input:input,error:{message:exports.errorCodes[error],code:error}}}var parsed={input:input,tld:null,sld:null,domain:null,subdomain:null,listed:false};var domainParts=domain.split(".");if(domainParts[domainParts.length-1]==="local"){return parsed}var handlePunycode=function(){if(!/xn--/.test(domain)){return parsed}if(parsed.domain){parsed.domain=Punycode.toASCII(parsed.domain)}if(parsed.subdomain){parsed.subdomain=Punycode.toASCII(parsed.subdomain)}return parsed};var rule=internals.findRule(domain);if(!rule){if(domainParts.length<2){return parsed}parsed.tld=domainParts.pop();parsed.sld=domainParts.pop();parsed.domain=[parsed.sld,parsed.tld].join(".");if(domainParts.length){parsed.subdomain=domainParts.pop()}return handlePunycode()}parsed.listed=true;var tldParts=rule.suffix.split(".");var privateParts=domainParts.slice(0,domainParts.length-tldParts.length);if(rule.exception){privateParts.push(tldParts.shift())}parsed.tld=tldParts.join(".");if(!privateParts.length){return handlePunycode()}if(rule.wildcard){tldParts.unshift(privateParts.pop());parsed.tld=tldParts.join(".")}if(!privateParts.length){return handlePunycode()}parsed.sld=privateParts.pop();parsed.domain=[parsed.sld,parsed.tld].join(".");if(privateParts.length){parsed.subdomain=privateParts.join(".")}return handlePunycode()};exports.get=function(domain){if(!domain){return null}return exports.parse(domain).domain||null};exports.isValid=function(domain){var parsed=exports.parse(domain);return Boolean(parsed.domain&&parsed.listed)}},{"./data/rules.json":446,punycode:187}],448:[function(require,module,exports){"use strict";var replace=String.prototype.replace;var percentTwenties=/%20/g;module.exports={default:"RFC3986",formatters:{RFC1738:function(value){return replace.call(value,percentTwenties,"+")},RFC3986:function(value){return value}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},{}],449:[function(require,module,exports){"use strict";var stringify=require("./stringify");var parse=require("./parse");var formats=require("./formats");module.exports={formats:formats,parse:parse,stringify:stringify}},{"./formats":448,"./parse":450,"./stringify":451}],450:[function(require,module,exports){"use strict";var utils=require("./utils");var has=Object.prototype.hasOwnProperty;var defaults={allowDots:false,allowPrototypes:false,arrayLimit:20,decoder:utils.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:false,strictNullHandling:false};var parseValues=function parseQueryStringValues(str,options){var obj={};var cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str;var limit=options.parameterLimit===Infinity?undefined:options.parameterLimit;var parts=cleanStr.split(options.delimiter,limit);for(var i=0;i<parts.length;++i){var part=parts[i];var bracketEqualsPos=part.indexOf("]=");var pos=bracketEqualsPos===-1?part.indexOf("="):bracketEqualsPos+1;var key,val;if(pos===-1){key=options.decoder(part,defaults.decoder);val=options.strictNullHandling?null:""}else{key=options.decoder(part.slice(0,pos),defaults.decoder);val=options.decoder(part.slice(pos+1),defaults.decoder)}if(has.call(obj,key)){obj[key]=[].concat(obj[key]).concat(val)}else{obj[key]=val}}return obj};var parseObject=function(chain,val,options){var leaf=val;for(var i=chain.length-1;i>=0;--i){var obj;var root=chain[i];if(root==="[]"){obj=[];obj=obj.concat(leaf)}else{obj=options.plainObjects?Object.create(null):{};var cleanRoot=root.charAt(0)==="["&&root.charAt(root.length-1)==="]"?root.slice(1,-1):root;var index=parseInt(cleanRoot,10);if(!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&(options.parseArrays&&index<=options.arrayLimit)){obj=[];obj[index]=leaf}else{obj[cleanRoot]=leaf}}leaf=obj}return leaf};var parseKeys=function parseQueryStringKeys(givenKey,val,options){if(!givenKey){return}var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,"[$1]"):givenKey;var brackets=/(\[[^[\]]*])/;var child=/(\[[^[\]]*])/g;var segment=brackets.exec(key);var parent=segment?key.slice(0,segment.index):key;var keys=[];if(parent){if(!options.plainObjects&&has.call(Object.prototype,parent)){if(!options.allowPrototypes){return}}keys.push(parent)}var i=0;while((segment=child.exec(key))!==null&&i<options.depth){i+=1;if(!options.plainObjects&&has.call(Object.prototype,segment[1].slice(1,-1))){if(!options.allowPrototypes){return}}keys.push(segment[1])}if(segment){keys.push("["+key.slice(segment.index)+"]")}return parseObject(keys,val,options)};module.exports=function(str,opts){var options=opts?utils.assign({},opts):{};if(options.decoder!==null&&options.decoder!==undefined&&typeof options.decoder!=="function"){throw new TypeError("Decoder has to be a function.")}options.ignoreQueryPrefix=options.ignoreQueryPrefix===true;options.delimiter=typeof options.delimiter==="string"||utils.isRegExp(options.delimiter)?options.delimiter:defaults.delimiter;options.depth=typeof options.depth==="number"?options.depth:defaults.depth;options.arrayLimit=typeof options.arrayLimit==="number"?options.arrayLimit:defaults.arrayLimit;options.parseArrays=options.parseArrays!==false;options.decoder=typeof options.decoder==="function"?options.decoder:defaults.decoder;options.allowDots=typeof options.allowDots==="boolean"?options.allowDots:defaults.allowDots;options.plainObjects=typeof options.plainObjects==="boolean"?options.plainObjects:defaults.plainObjects;options.allowPrototypes=typeof options.allowPrototypes==="boolean"?options.allowPrototypes:defaults.allowPrototypes;options.parameterLimit=typeof options.parameterLimit==="number"?options.parameterLimit:defaults.parameterLimit;options.strictNullHandling=typeof options.strictNullHandling==="boolean"?options.strictNullHandling:defaults.strictNullHandling;if(str===""||str===null||typeof str==="undefined"){return options.plainObjects?Object.create(null):{}}var tempObj=typeof str==="string"?parseValues(str,options):str;var obj=options.plainObjects?Object.create(null):{};var keys=Object.keys(tempObj);for(var i=0;i<keys.length;++i){var key=keys[i];var newObj=parseKeys(key,tempObj[key],options);obj=utils.merge(obj,newObj,options)}return utils.compact(obj)}},{"./utils":452}],451:[function(require,module,exports){"use strict";var utils=require("./utils");var formats=require("./formats");var arrayPrefixGenerators={brackets:function brackets(prefix){return prefix+"[]"},indices:function indices(prefix,key){return prefix+"["+key+"]"},repeat:function repeat(prefix){return prefix}};var toISO=Date.prototype.toISOString;var defaults={delimiter:"&",encode:true,encoder:utils.encode,encodeValuesOnly:false,serializeDate:function serializeDate(date){return toISO.call(date)},skipNulls:false,strictNullHandling:false};var stringify=function stringify(object,prefix,generateArrayPrefix,strictNullHandling,skipNulls,encoder,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly){var obj=object;if(typeof filter==="function"){obj=filter(prefix,obj)}else if(obj instanceof Date){obj=serializeDate(obj)}else if(obj===null){if(strictNullHandling){return encoder&&!encodeValuesOnly?encoder(prefix,defaults.encoder):prefix}obj=""}if(typeof obj==="string"||typeof obj==="number"||typeof obj==="boolean"||utils.isBuffer(obj)){if(encoder){var keyValue=encodeValuesOnly?prefix:encoder(prefix,defaults.encoder);return[formatter(keyValue)+"="+formatter(encoder(obj,defaults.encoder))]}return[formatter(prefix)+"="+formatter(String(obj))]}var values=[];if(typeof obj==="undefined"){return values}var objKeys;if(Array.isArray(filter)){objKeys=filter}else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var i=0;i<objKeys.length;++i){var key=objKeys[i];if(skipNulls&&obj[key]===null){continue}if(Array.isArray(obj)){values=values.concat(stringify(obj[key],generateArrayPrefix(prefix,key),generateArrayPrefix,strictNullHandling,skipNulls,encoder,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly))}else{values=values.concat(stringify(obj[key],prefix+(allowDots?"."+key:"["+key+"]"),generateArrayPrefix,strictNullHandling,skipNulls,encoder,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly))}}return values};module.exports=function(object,opts){var obj=object;var options=opts?utils.assign({},opts):{};if(options.encoder!==null&&options.encoder!==undefined&&typeof options.encoder!=="function"){throw new TypeError("Encoder has to be a function.")}var delimiter=typeof options.delimiter==="undefined"?defaults.delimiter:options.delimiter;var strictNullHandling=typeof options.strictNullHandling==="boolean"?options.strictNullHandling:defaults.strictNullHandling;var skipNulls=typeof options.skipNulls==="boolean"?options.skipNulls:defaults.skipNulls;var encode=typeof options.encode==="boolean"?options.encode:defaults.encode;var encoder=typeof options.encoder==="function"?options.encoder:defaults.encoder;var sort=typeof options.sort==="function"?options.sort:null;var allowDots=typeof options.allowDots==="undefined"?false:options.allowDots;var serializeDate=typeof options.serializeDate==="function"?options.serializeDate:defaults.serializeDate;var encodeValuesOnly=typeof options.encodeValuesOnly==="boolean"?options.encodeValuesOnly:defaults.encodeValuesOnly;if(typeof options.format==="undefined"){options.format=formats["default"]}else if(!Object.prototype.hasOwnProperty.call(formats.formatters,options.format)){throw new TypeError("Unknown format option provided.")}var formatter=formats.formatters[options.format];var objKeys;var filter;if(typeof options.filter==="function"){filter=options.filter;obj=filter("",obj)}else if(Array.isArray(options.filter)){filter=options.filter;objKeys=filter}var keys=[];if(typeof obj!=="object"||obj===null){return""}var arrayFormat;if(options.arrayFormat in arrayPrefixGenerators){arrayFormat=options.arrayFormat}else if("indices"in options){arrayFormat=options.indices?"indices":"repeat"}else{arrayFormat="indices"}var generateArrayPrefix=arrayPrefixGenerators[arrayFormat];if(!objKeys){objKeys=Object.keys(obj)}if(sort){objKeys.sort(sort)}for(var i=0;i<objKeys.length;++i){var key=objKeys[i];if(skipNulls&&obj[key]===null){continue}keys=keys.concat(stringify(obj[key],key,generateArrayPrefix,strictNullHandling,skipNulls,encode?encoder:null,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly))}var joined=keys.join(delimiter);var prefix=options.addQueryPrefix===true?"?":"";return joined.length>0?prefix+joined:""}},{"./formats":448,"./utils":452}],452:[function(require,module,exports){"use strict";var has=Object.prototype.hasOwnProperty;var hexTable=function(){var array=[];for(var i=0;i<256;++i){array.push("%"+((i<16?"0":"")+i.toString(16)).toUpperCase())}return array}();var compactQueue=function compactQueue(queue){var obj;while(queue.length){var item=queue.pop();obj=item.obj[item.prop];if(Array.isArray(obj)){var compacted=[];for(var j=0;j<obj.length;++j){if(typeof obj[j]!=="undefined"){compacted.push(obj[j])}}item.obj[item.prop]=compacted}}return obj};var arrayToObject=function arrayToObject(source,options){var obj=options&&options.plainObjects?Object.create(null):{};for(var i=0;i<source.length;++i){if(typeof source[i]!=="undefined"){obj[i]=source[i]}}return obj};var merge=function merge(target,source,options){if(!source){return target}if(typeof source!=="object"){if(Array.isArray(target)){target.push(source)}else if(typeof target==="object"){if(options.plainObjects||options.allowPrototypes||!has.call(Object.prototype,source)){target[source]=true}}else{return[target,source]}return target}if(typeof target!=="object"){return[target].concat(source)}var mergeTarget=target;if(Array.isArray(target)&&!Array.isArray(source)){mergeTarget=arrayToObject(target,options)}if(Array.isArray(target)&&Array.isArray(source)){source.forEach(function(item,i){if(has.call(target,i)){if(target[i]&&typeof target[i]==="object"){target[i]=merge(target[i],item,options)}else{target.push(item)}}else{target[i]=item}});return target}return Object.keys(source).reduce(function(acc,key){var value=source[key];if(has.call(acc,key)){acc[key]=merge(acc[key],value,options)}else{acc[key]=value}return acc},mergeTarget)};var assign=function assignSingleSource(target,source){return Object.keys(source).reduce(function(acc,key){acc[key]=source[key];return acc},target)};var decode=function(str){try{return decodeURIComponent(str.replace(/\+/g," "))}catch(e){return str}};var encode=function encode(str){if(str.length===0){return str}var string=typeof str==="string"?str:String(str);var out="";for(var i=0;i<string.length;++i){var c=string.charCodeAt(i);if(c===45||c===46||c===95||c===126||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122){out+=string.charAt(i);continue}if(c<128){out=out+hexTable[c];continue}if(c<2048){out=out+(hexTable[192|c>>6]+hexTable[128|c&63]);continue}if(c<55296||c>=57344){out=out+(hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|c&63]);continue}i+=1;c=65536+((c&1023)<<10|string.charCodeAt(i)&1023);out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|c&63]}return out};var compact=function compact(value){var queue=[{obj:{o:value},prop:"o"}];var refs=[];for(var i=0;i<queue.length;++i){var item=queue[i];var obj=item.obj[item.prop];var keys=Object.keys(obj);for(var j=0;j<keys.length;++j){var key=keys[j];var val=obj[key];if(typeof val==="object"&&val!==null&&refs.indexOf(val)===-1){queue.push({obj:obj,prop:key});refs.push(val)}}}return compactQueue(queue)};var isRegExp=function isRegExp(obj){return Object.prototype.toString.call(obj)==="[object RegExp]"};var isBuffer=function isBuffer(obj){if(obj===null||typeof obj==="undefined"){return false}return!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))};module.exports={arrayToObject:arrayToObject,assign:assign,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isRegExp:isRegExp,merge:merge}},{}],453:[function(require,module,exports){"use strict";var extend=require("extend");var cookies=require("./lib/cookies");var helpers=require("./lib/helpers");var paramsHaveRequestBody=helpers.paramsHaveRequestBody;function initParams(uri,options,callback){if(typeof options==="function"){callback=options}var params={};if(options!==null&&typeof options==="object"){extend(params,options,{uri:uri})}else if(typeof uri==="string"){extend(params,{uri:uri})}else{extend(params,uri)}params.callback=callback||params.callback;return params}function request(uri,options,callback){if(typeof uri==="undefined"){throw new Error("undefined is not a valid uri or options object.")}var params=initParams(uri,options,callback);if(params.method==="HEAD"&¶msHaveRequestBody(params)){throw new Error("HTTP HEAD requests MUST NOT include a request body.")}return new request.Request(params)}function verbFunc(verb){var method=verb.toUpperCase();return function(uri,options,callback){var params=initParams(uri,options,callback);params.method=method;return request(params,params.callback)}}request.get=verbFunc("get");request.head=verbFunc("head");request.options=verbFunc("options");request.post=verbFunc("post");request.put=verbFunc("put");request.patch=verbFunc("patch");request.del=verbFunc("delete");request["delete"]=verbFunc("delete");request.jar=function(store){return cookies.jar(store)};request.cookie=function(str){return cookies.parse(str)};function wrapRequestMethod(method,options,requester,verb){return function(uri,opts,callback){var params=initParams(uri,opts,callback);var target={};extend(true,target,options,params);target.pool=params.pool||options.pool;if(verb){target.method=verb.toUpperCase()}if(typeof requester==="function"){method=requester}return method(target,target.callback)}}request.defaults=function(options,requester){var self=this;options=options||{};if(typeof options==="function"){requester=options;options={}}var defaults=wrapRequestMethod(self,options,requester);var verbs=["get","head","post","put","patch","del","delete"];verbs.forEach(function(verb){defaults[verb]=wrapRequestMethod(self[verb],options,requester,verb)});defaults.cookie=wrapRequestMethod(self.cookie,options,requester);defaults.jar=self.jar;defaults.defaults=self.defaults;return defaults};request.forever=function(agentOptions,optionsArg){var options={};if(optionsArg){extend(options,optionsArg)}if(agentOptions){options.agentOptions=agentOptions}options.forever=true;return request.defaults(options)};module.exports=request;request.Request=require("./request");request.initParams=initParams;Object.defineProperty(request,"debug",{enumerable:true,get:function(){return request.Request.debug},set:function(debug){request.Request.debug=debug}})},{"./lib/cookies":455,"./lib/helpers":459,"./request":468,extend:399}],454:[function(require,module,exports){"use strict";var caseless=require("caseless");var uuid=require("uuid/v4");var helpers=require("./helpers");var md5=helpers.md5;var toBase64=helpers.toBase64;function Auth(request){this.request=request;this.hasAuth=false;this.sentAuth=false;this.bearerToken=null;this.user=null;this.pass=null}Auth.prototype.basic=function(user,pass,sendImmediately){var self=this;if(typeof user!=="string"||pass!==undefined&&typeof pass!=="string"){self.request.emit("error",new Error("auth() received invalid user or password"))}self.user=user;self.pass=pass;self.hasAuth=true;var header=user+":"+(pass||"");if(sendImmediately||typeof sendImmediately==="undefined"){var authHeader="Basic "+toBase64(header);self.sentAuth=true;return authHeader}};Auth.prototype.bearer=function(bearer,sendImmediately){var self=this;self.bearerToken=bearer;self.hasAuth=true;if(sendImmediately||typeof sendImmediately==="undefined"){if(typeof bearer==="function"){bearer=bearer()}var authHeader="Bearer "+(bearer||"");self.sentAuth=true;return authHeader}};Auth.prototype.digest=function(method,path,authHeader){var self=this;var challenge={};var re=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;while(true){var match=re.exec(authHeader);if(!match){break}challenge[match[1]]=match[2]||match[3]}var ha1Compute=function(algorithm,user,realm,pass,nonce,cnonce){var ha1=md5(user+":"+realm+":"+pass);if(algorithm&&algorithm.toLowerCase()==="md5-sess"){return md5(ha1+":"+nonce+":"+cnonce)}else{return ha1}};var qop=/(^|,)\s*auth\s*($|,)/.test(challenge.qop)&&"auth";var nc=qop&&"00000001";var cnonce=qop&&uuid().replace(/-/g,"");var ha1=ha1Compute(challenge.algorithm,self.user,challenge.realm,self.pass,challenge.nonce,cnonce);var ha2=md5(method+":"+path);var digestResponse=qop?md5(ha1+":"+challenge.nonce+":"+nc+":"+cnonce+":"+qop+":"+ha2):md5(ha1+":"+challenge.nonce+":"+ha2);var authValues={username:self.user,realm:challenge.realm,nonce:challenge.nonce,uri:path,qop:qop,response:digestResponse,nc:nc,cnonce:cnonce,algorithm:challenge.algorithm,opaque:challenge.opaque};authHeader=[];for(var k in authValues){if(authValues[k]){if(k==="qop"||k==="nc"||k==="algorithm"){authHeader.push(k+"="+authValues[k])}else{authHeader.push(k+'="'+authValues[k]+'"')}}}authHeader="Digest "+authHeader.join(", ");self.sentAuth=true;return authHeader};Auth.prototype.onRequest=function(user,pass,sendImmediately,bearer){var self=this;var request=self.request;var authHeader;if(bearer===undefined&&user===undefined){self.request.emit("error",new Error("no auth mechanism defined"))}else if(bearer!==undefined){authHeader=self.bearer(bearer,sendImmediately)}else{authHeader=self.basic(user,pass,sendImmediately)}if(authHeader){request.setHeader("authorization",authHeader)}};Auth.prototype.onResponse=function(response){var self=this;var request=self.request;if(!self.hasAuth||self.sentAuth){return null}var c=caseless(response.headers);var authHeader=c.get("www-authenticate");var authVerb=authHeader&&authHeader.split(" ")[0].toLowerCase();request.debug("reauth",authVerb);switch(authVerb){case"basic":return self.basic(self.user,self.pass,true);case"bearer":return self.bearer(self.bearerToken,true);case"digest":return self.digest(request.method,request.path,authHeader)}};exports.Auth=Auth},{"./helpers":459,caseless:392,"uuid/v4":467}],455:[function(require,module,exports){"use strict";var tough=require("tough-cookie");var Cookie=tough.Cookie;var CookieJar=tough.CookieJar;exports.parse=function(str){if(str&&str.uri){str=str.uri}if(typeof str!=="string"){throw new Error("The cookie function only accepts STRING as param")}return Cookie.parse(str,{loose:true})};function RequestJar(store){var self=this;self._jar=new CookieJar(store,{looseMode:true})}RequestJar.prototype.setCookie=function(cookieOrStr,uri,options){var self=this;return self._jar.setCookieSync(cookieOrStr,uri,options||{})};RequestJar.prototype.getCookieString=function(uri){var self=this;return self._jar.getCookieStringSync(uri)};RequestJar.prototype.getCookies=function(uri){var self=this;return self._jar.getCookiesSync(uri)};exports.jar=function(store){return new RequestJar(store)}},{"tough-cookie":496}],456:[function(require,module,exports){(function(process){(function(){"use strict";function formatHostname(hostname){return hostname.replace(/^\.*/,".").toLowerCase()}function parseNoProxyZone(zone){zone=zone.trim().toLowerCase();var zoneParts=zone.split(":",2);var zoneHost=formatHostname(zoneParts[0]);var zonePort=zoneParts[1];var hasPort=zone.indexOf(":")>-1;return{hostname:zoneHost,port:zonePort,hasPort:hasPort}}function uriInNoProxy(uri,noProxy){var port=uri.port||(uri.protocol==="https:"?"443":"80");var hostname=formatHostname(uri.hostname);var noProxyList=noProxy.split(",");return noProxyList.map(parseNoProxyZone).some(function(noProxyZone){var isMatchedAt=hostname.indexOf(noProxyZone.hostname);var hostnameMatched=isMatchedAt>-1&&isMatchedAt===hostname.length-noProxyZone.hostname.length;if(noProxyZone.hasPort){return port===noProxyZone.port&&hostnameMatched}return hostnameMatched})}function getProxyFromURI(uri){var noProxy=process.env.NO_PROXY||process.env.no_proxy||"";if(noProxy==="*"){return null}if(noProxy!==""&&uriInNoProxy(uri,noProxy)){return null}if(uri.protocol==="http:"){return process.env.HTTP_PROXY||process.env.http_proxy||null}if(uri.protocol==="https:"){return process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||null}return null}module.exports=getProxyFromURI}).call(this)}).call(this,require("_process"))},{_process:179}],457:[function(require,module,exports){"use strict";var fs=require("fs");var qs=require("querystring");var validate=require("har-validator");var extend=require("extend");function Har(request){this.request=request}Har.prototype.reducer=function(obj,pair){if(obj[pair.name]===undefined){obj[pair.name]=pair.value;return obj}var arr=[obj[pair.name],pair.value];obj[pair.name]=arr;return obj};Har.prototype.prep=function(data){data.queryObj={};data.headersObj={};data.postData.jsonObj=false;data.postData.paramsObj=false;if(data.queryString&&data.queryString.length){data.queryObj=data.queryString.reduce(this.reducer,{})}if(data.headers&&data.headers.length){data.headersObj=data.headers.reduceRight(function(headers,header){headers[header.name]=header.value;return headers},{})}if(data.cookies&&data.cookies.length){var cookies=data.cookies.map(function(cookie){return cookie.name+"="+cookie.value});if(cookies.length){data.headersObj.cookie=cookies.join("; ")}}function some(arr){return arr.some(function(type){return data.postData.mimeType.indexOf(type)===0})}if(some(["multipart/mixed","multipart/related","multipart/form-data","multipart/alternative"])){data.postData.mimeType="multipart/form-data"}else if(some(["application/x-www-form-urlencoded"])){if(!data.postData.params){data.postData.text=""}else{data.postData.paramsObj=data.postData.params.reduce(this.reducer,{});data.postData.text=qs.stringify(data.postData.paramsObj)}}else if(some(["text/json","text/x-json","application/json","application/x-json"])){data.postData.mimeType="application/json";if(data.postData.text){try{data.postData.jsonObj=JSON.parse(data.postData.text)}catch(e){this.request.debug(e);data.postData.mimeType="text/plain"}}}return data};Har.prototype.options=function(options){if(!options.har){return options}var har={};extend(har,options.har);if(har.log&&har.log.entries){har=har.log.entries[0]}har.url=har.url||options.url||options.uri||options.baseUrl||"/";har.httpVersion=har.httpVersion||"HTTP/1.1";har.queryString=har.queryString||[];har.headers=har.headers||[];har.cookies=har.cookies||[];har.postData=har.postData||{};har.postData.mimeType=har.postData.mimeType||"application/octet-stream";har.bodySize=0;har.headersSize=0;har.postData.size=0;if(!validate.request(har)){return options}var req=this.prep(har);if(req.url){options.url=req.url}if(req.method){options.method=req.method}if(Object.keys(req.queryObj).length){options.qs=req.queryObj}if(Object.keys(req.headersObj).length){options.headers=req.headersObj}function test(type){return req.postData.mimeType.indexOf(type)===0}if(test("application/x-www-form-urlencoded")){options.form=req.postData.paramsObj}else if(test("application/json")){if(req.postData.jsonObj){options.body=req.postData.jsonObj;options.json=true}}else if(test("multipart/form-data")){options.formData={};req.postData.params.forEach(function(param){var attachment={};if(!param.fileName&&!param.contentType){options.formData[param.name]=param.value;return}if(param.fileName&&!param.value){attachment.value=fs.createReadStream(param.fileName)}else if(param.value){attachment.value=param.value}if(param.fileName){attachment.options={filename:param.fileName,contentType:param.contentType?param.contentType:null}}options.formData[param.name]=attachment})}else{if(req.postData.text){options.body=req.postData.text}}return options};exports.Har=Har},{extend:399,fs:69,"har-validator":425,querystring:190}],458:[function(require,module,exports){"use strict";var crypto=require("crypto");function randomString(size){var bits=(size+1)*6;var buffer=crypto.randomBytes(Math.ceil(bits/8));var string=buffer.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");return string.slice(0,size)}function calculatePayloadHash(payload,algorithm,contentType){var hash=crypto.createHash(algorithm);hash.update("hawk.1.payload\n");hash.update((contentType?contentType.split(";")[0].trim().toLowerCase():"")+"\n");hash.update(payload||"");hash.update("\n");return hash.digest("base64")}exports.calculateMac=function(credentials,opts){var normalized="hawk.1.header\n"+opts.ts+"\n"+opts.nonce+"\n"+(opts.method||"").toUpperCase()+"\n"+opts.resource+"\n"+opts.host.toLowerCase()+"\n"+opts.port+"\n"+(opts.hash||"")+"\n";if(opts.ext){normalized=normalized+opts.ext.replace("\\","\\\\").replace("\n","\\n")}normalized=normalized+"\n";if(opts.app){normalized=normalized+opts.app+"\n"+(opts.dlg||"")+"\n"}var hmac=crypto.createHmac(credentials.algorithm,credentials.key).update(normalized);var digest=hmac.digest("base64");return digest};exports.header=function(uri,method,opts){var timestamp=opts.timestamp||Math.floor((Date.now()+(opts.localtimeOffsetMsec||0))/1e3);var credentials=opts.credentials;if(!credentials||!credentials.id||!credentials.key||!credentials.algorithm){return""}if(["sha1","sha256"].indexOf(credentials.algorithm)===-1){return""}var artifacts={ts:timestamp,nonce:opts.nonce||randomString(6),method:method,resource:uri.pathname+(uri.search||""),host:uri.hostname,port:uri.port||(uri.protocol==="http:"?80:443),hash:opts.hash,ext:opts.ext,app:opts.app,dlg:opts.dlg};if(!artifacts.hash&&(opts.payload||opts.payload==="")){artifacts.hash=calculatePayloadHash(opts.payload,credentials.algorithm,opts.contentType)}var mac=exports.calculateMac(credentials,artifacts);var hasExt=artifacts.ext!==null&&artifacts.ext!==undefined&&artifacts.ext!=="";var header='Hawk id="'+credentials.id+'", ts="'+artifacts.ts+'", nonce="'+artifacts.nonce+(artifacts.hash?'", hash="'+artifacts.hash:"")+(hasExt?'", ext="'+artifacts.ext.replace(/\\/g,"\\\\").replace(/"/g,'\\"'):"")+'", mac="'+mac+'"';if(artifacts.app){header=header+', app="'+artifacts.app+(artifacts.dlg?'", dlg="'+artifacts.dlg:"")+'"'}return header}},{crypto:81}],459:[function(require,module,exports){(function(process,setImmediate){(function(){"use strict";var jsonSafeStringify=require("json-stringify-safe");var crypto=require("crypto");var Buffer=require("safe-buffer").Buffer;var defer=typeof setImmediate==="undefined"?process.nextTick:setImmediate;function paramsHaveRequestBody(params){return params.body||params.requestBodyStream||params.json&&typeof params.json!=="boolean"||params.multipart}function safeStringify(obj,replacer){var ret;try{ret=JSON.stringify(obj,replacer)}catch(e){ret=jsonSafeStringify(obj,replacer)}return ret}function md5(str){return crypto.createHash("md5").update(str).digest("hex")}function isReadStream(rs){return rs.readable&&rs.path&&rs.mode}function toBase64(str){return Buffer.from(str||"","utf8").toString("base64")}function copy(obj){var o={};Object.keys(obj).forEach(function(i){o[i]=obj[i]});return o}function version(){var numbers=process.version.replace("v","").split(".");return{major:parseInt(numbers[0],10),minor:parseInt(numbers[1],10),patch:parseInt(numbers[2],10)}}exports.paramsHaveRequestBody=paramsHaveRequestBody;exports.safeStringify=safeStringify;exports.md5=md5;exports.isReadStream=isReadStream;exports.toBase64=toBase64;exports.copy=copy;exports.version=version;exports.defer=defer}).call(this)}).call(this,require("_process"),require("timers").setImmediate)},{_process:179,crypto:81,"json-stringify-safe":436,"safe-buffer":469,timers:236}],460:[function(require,module,exports){"use strict";var uuid=require("uuid/v4");var CombinedStream=require("combined-stream");var isstream=require("isstream");var Buffer=require("safe-buffer").Buffer;function Multipart(request){this.request=request;this.boundary=uuid();this.chunked=false;this.body=null}Multipart.prototype.isChunked=function(options){var self=this;var chunked=false;var parts=options.data||options;if(!parts.forEach){self.request.emit("error",new Error("Argument error, options.multipart."))}if(options.chunked!==undefined){chunked=options.chunked}if(self.request.getHeader("transfer-encoding")==="chunked"){chunked=true}if(!chunked){
|
|
50
|
-
parts.forEach(function(part){if(typeof part.body==="undefined"){self.request.emit("error",new Error("Body attribute missing in multipart."))}if(isstream(part.body)){chunked=true}})}return chunked};Multipart.prototype.setHeaders=function(chunked){var self=this;if(chunked&&!self.request.hasHeader("transfer-encoding")){self.request.setHeader("transfer-encoding","chunked")}var header=self.request.getHeader("content-type");if(!header||header.indexOf("multipart")===-1){self.request.setHeader("content-type","multipart/related; boundary="+self.boundary)}else{if(header.indexOf("boundary")!==-1){self.boundary=header.replace(/.*boundary=([^\s;]+).*/,"$1")}else{self.request.setHeader("content-type",header+"; boundary="+self.boundary)}}};Multipart.prototype.build=function(parts,chunked){var self=this;var body=chunked?new CombinedStream:[];function add(part){if(typeof part==="number"){part=part.toString()}return chunked?body.append(part):body.push(Buffer.from(part))}if(self.request.preambleCRLF){add("\r\n")}parts.forEach(function(part){var preamble="--"+self.boundary+"\r\n";Object.keys(part).forEach(function(key){if(key==="body"){return}preamble+=key+": "+part[key]+"\r\n"});preamble+="\r\n";add(preamble);add(part.body);add("\r\n")});add("--"+self.boundary+"--");if(self.request.postambleCRLF){add("\r\n")}return body};Multipart.prototype.onRequest=function(options){var self=this;var chunked=self.isChunked(options);var parts=options.data||options;self.setHeaders(chunked);self.chunked=chunked;self.body=self.build(parts,chunked)};exports.Multipart=Multipart},{"combined-stream":393,isstream:432,"safe-buffer":469,"uuid/v4":467}],461:[function(require,module,exports){"use strict";var url=require("url");var qs=require("qs");var caseless=require("caseless");var uuid=require("uuid/v4");var oauth=require("oauth-sign");var crypto=require("crypto");var Buffer=require("safe-buffer").Buffer;function OAuth(request){this.request=request;this.params=null}OAuth.prototype.buildParams=function(_oauth,uri,method,query,form,qsLib){var oa={};for(var i in _oauth){oa["oauth_"+i]=_oauth[i]}if(!oa.oauth_version){oa.oauth_version="1.0"}if(!oa.oauth_timestamp){oa.oauth_timestamp=Math.floor(Date.now()/1e3).toString()}if(!oa.oauth_nonce){oa.oauth_nonce=uuid().replace(/-/g,"")}if(!oa.oauth_signature_method){oa.oauth_signature_method="HMAC-SHA1"}var consumer_secret_or_private_key=oa.oauth_consumer_secret||oa.oauth_private_key;delete oa.oauth_consumer_secret;delete oa.oauth_private_key;var token_secret=oa.oauth_token_secret;delete oa.oauth_token_secret;var realm=oa.oauth_realm;delete oa.oauth_realm;delete oa.oauth_transport_method;var baseurl=uri.protocol+"//"+uri.host+uri.pathname;var params=qsLib.parse([].concat(query,form,qsLib.stringify(oa)).join("&"));oa.oauth_signature=oauth.sign(oa.oauth_signature_method,method,baseurl,params,consumer_secret_or_private_key,token_secret);if(realm){oa.realm=realm}return oa};OAuth.prototype.buildBodyHash=function(_oauth,body){if(["HMAC-SHA1","RSA-SHA1"].indexOf(_oauth.signature_method||"HMAC-SHA1")<0){this.request.emit("error",new Error("oauth: "+_oauth.signature_method+" signature_method not supported with body_hash signing."))}var shasum=crypto.createHash("sha1");shasum.update(body||"");var sha1=shasum.digest("hex");return Buffer.from(sha1,"hex").toString("base64")};OAuth.prototype.concatParams=function(oa,sep,wrap){wrap=wrap||"";var params=Object.keys(oa).filter(function(i){return i!=="realm"&&i!=="oauth_signature"}).sort();if(oa.realm){params.splice(0,0,"realm")}params.push("oauth_signature");return params.map(function(i){return i+"="+wrap+oauth.rfc3986(oa[i])+wrap}).join(sep)};OAuth.prototype.onRequest=function(_oauth){var self=this;self.params=_oauth;var uri=self.request.uri||{};var method=self.request.method||"";var headers=caseless(self.request.headers);var body=self.request.body||"";var qsLib=self.request.qsLib||qs;var form;var query;var contentType=headers.get("content-type")||"";var formContentType="application/x-www-form-urlencoded";var transport=_oauth.transport_method||"header";if(contentType.slice(0,formContentType.length)===formContentType){contentType=formContentType;form=body}if(uri.query){query=uri.query}if(transport==="body"&&(method!=="POST"||contentType!==formContentType)){self.request.emit("error",new Error("oauth: transport_method of body requires POST "+"and content-type "+formContentType))}if(!form&&typeof _oauth.body_hash==="boolean"){_oauth.body_hash=self.buildBodyHash(_oauth,self.request.body.toString())}var oa=self.buildParams(_oauth,uri,method,query,form,qsLib);switch(transport){case"header":self.request.setHeader("Authorization","OAuth "+self.concatParams(oa,",",'"'));break;case"query":var href=self.request.uri.href+=(query?"&":"?")+self.concatParams(oa,"&");self.request.uri=url.parse(href);self.request.path=self.request.uri.path;break;case"body":self.request.body=(form?form+"&":"")+self.concatParams(oa,"&");break;default:self.request.emit("error",new Error("oauth: transport_method invalid"))}};exports.OAuth=OAuth},{caseless:392,crypto:81,"oauth-sign":444,qs:449,"safe-buffer":469,url:238,"uuid/v4":467}],462:[function(require,module,exports){"use strict";var qs=require("qs");var querystring=require("querystring");function Querystring(request){this.request=request;this.lib=null;this.useQuerystring=null;this.parseOptions=null;this.stringifyOptions=null}Querystring.prototype.init=function(options){if(this.lib){return}this.useQuerystring=options.useQuerystring;this.lib=this.useQuerystring?querystring:qs;this.parseOptions=options.qsParseOptions||{};this.stringifyOptions=options.qsStringifyOptions||{}};Querystring.prototype.stringify=function(obj){return this.useQuerystring?this.rfc3986(this.lib.stringify(obj,this.stringifyOptions.sep||null,this.stringifyOptions.eq||null,this.stringifyOptions)):this.lib.stringify(obj,this.stringifyOptions)};Querystring.prototype.parse=function(str){return this.useQuerystring?this.lib.parse(str,this.parseOptions.sep||null,this.parseOptions.eq||null,this.parseOptions):this.lib.parse(str,this.parseOptions)};Querystring.prototype.rfc3986=function(str){return str.replace(/[!'()*]/g,function(c){return"%"+c.charCodeAt(0).toString(16).toUpperCase()})};Querystring.prototype.unescape=querystring.unescape;exports.Querystring=Querystring},{qs:449,querystring:190}],463:[function(require,module,exports){"use strict";var url=require("url");var isUrl=/^https?:/;function Redirect(request){this.request=request;this.followRedirect=true;this.followRedirects=true;this.followAllRedirects=false;this.followOriginalHttpMethod=false;this.allowRedirect=function(){return true};this.maxRedirects=10;this.redirects=[];this.redirectsFollowed=0;this.removeRefererHeader=false}Redirect.prototype.onRequest=function(options){var self=this;if(options.maxRedirects!==undefined){self.maxRedirects=options.maxRedirects}if(typeof options.followRedirect==="function"){self.allowRedirect=options.followRedirect}if(options.followRedirect!==undefined){self.followRedirects=!!options.followRedirect}if(options.followAllRedirects!==undefined){self.followAllRedirects=options.followAllRedirects}if(self.followRedirects||self.followAllRedirects){self.redirects=self.redirects||[]}if(options.removeRefererHeader!==undefined){self.removeRefererHeader=options.removeRefererHeader}if(options.followOriginalHttpMethod!==undefined){self.followOriginalHttpMethod=options.followOriginalHttpMethod}};Redirect.prototype.redirectTo=function(response){var self=this;var request=self.request;var redirectTo=null;if(response.statusCode>=300&&response.statusCode<400&&response.caseless.has("location")){var location=response.caseless.get("location");request.debug("redirect",location);if(self.followAllRedirects){redirectTo=location}else if(self.followRedirects){switch(request.method){case"PATCH":case"PUT":case"POST":case"DELETE":break;default:redirectTo=location;break}}}else if(response.statusCode===401){var authHeader=request._auth.onResponse(response);if(authHeader){request.setHeader("authorization",authHeader);redirectTo=request.uri}}return redirectTo};Redirect.prototype.onResponse=function(response){var self=this;var request=self.request;var redirectTo=self.redirectTo(response);if(!redirectTo||!self.allowRedirect.call(request,response)){return false}request.debug("redirect to",redirectTo);if(response.resume){response.resume()}if(self.redirectsFollowed>=self.maxRedirects){request.emit("error",new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+request.uri.href));return false}self.redirectsFollowed+=1;if(!isUrl.test(redirectTo)){redirectTo=url.resolve(request.uri.href,redirectTo)}var uriPrev=request.uri;request.uri=url.parse(redirectTo);if(request.uri.protocol!==uriPrev.protocol){delete request.agent}self.redirects.push({statusCode:response.statusCode,redirectUri:redirectTo});if(self.followAllRedirects&&request.method!=="HEAD"&&response.statusCode!==401&&response.statusCode!==307){request.method=self.followOriginalHttpMethod?request.method:"GET"}delete request.src;delete request.req;delete request._started;if(response.statusCode!==401&&response.statusCode!==307){delete request.body;delete request._form;if(request.headers){request.removeHeader("host");request.removeHeader("content-type");request.removeHeader("content-length");if(request.uri.hostname!==request.originalHost.split(":")[0]){request.removeHeader("authorization")}}}if(!self.removeRefererHeader){request.setHeader("referer",uriPrev.href)}request.emit("redirect");request.init();return true};exports.Redirect=Redirect},{url:238}],464:[function(require,module,exports){"use strict";var url=require("url");var tunnel=require("tunnel-agent");var defaultProxyHeaderWhiteList=["accept","accept-charset","accept-encoding","accept-language","accept-ranges","cache-control","content-encoding","content-language","content-location","content-md5","content-range","content-type","connection","date","expect","max-forwards","pragma","referer","te","user-agent","via"];var defaultProxyHeaderExclusiveList=["proxy-authorization"];function constructProxyHost(uriObject){var port=uriObject.port;var protocol=uriObject.protocol;var proxyHost=uriObject.hostname+":";if(port){proxyHost+=port}else if(protocol==="https:"){proxyHost+="443"}else{proxyHost+="80"}return proxyHost}function constructProxyHeaderWhiteList(headers,proxyHeaderWhiteList){var whiteList=proxyHeaderWhiteList.reduce(function(set,header){set[header.toLowerCase()]=true;return set},{});return Object.keys(headers).filter(function(header){return whiteList[header.toLowerCase()]}).reduce(function(set,header){set[header]=headers[header];return set},{})}function constructTunnelOptions(request,proxyHeaders){var proxy=request.proxy;var tunnelOptions={proxy:{host:proxy.hostname,port:+proxy.port,proxyAuth:proxy.auth,headers:proxyHeaders},headers:request.headers,ca:request.ca,cert:request.cert,key:request.key,passphrase:request.passphrase,pfx:request.pfx,ciphers:request.ciphers,rejectUnauthorized:request.rejectUnauthorized,secureOptions:request.secureOptions,secureProtocol:request.secureProtocol};return tunnelOptions}function constructTunnelFnName(uri,proxy){var uriProtocol=uri.protocol==="https:"?"https":"http";var proxyProtocol=proxy.protocol==="https:"?"Https":"Http";return[uriProtocol,proxyProtocol].join("Over")}function getTunnelFn(request){var uri=request.uri;var proxy=request.proxy;var tunnelFnName=constructTunnelFnName(uri,proxy);return tunnel[tunnelFnName]}function Tunnel(request){this.request=request;this.proxyHeaderWhiteList=defaultProxyHeaderWhiteList;this.proxyHeaderExclusiveList=[];if(typeof request.tunnel!=="undefined"){this.tunnelOverride=request.tunnel}}Tunnel.prototype.isEnabled=function(){var self=this;var request=self.request;if(typeof self.tunnelOverride!=="undefined"){return self.tunnelOverride}if(request.uri.protocol==="https:"){return true}return false};Tunnel.prototype.setup=function(options){var self=this;var request=self.request;options=options||{};if(typeof request.proxy==="string"){request.proxy=url.parse(request.proxy)}if(!request.proxy||!request.tunnel){return false}if(options.proxyHeaderWhiteList){self.proxyHeaderWhiteList=options.proxyHeaderWhiteList}if(options.proxyHeaderExclusiveList){self.proxyHeaderExclusiveList=options.proxyHeaderExclusiveList}var proxyHeaderExclusiveList=self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList);var proxyHeaderWhiteList=self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList);var proxyHeaders=constructProxyHeaderWhiteList(request.headers,proxyHeaderWhiteList);proxyHeaders.host=constructProxyHost(request.uri);proxyHeaderExclusiveList.forEach(request.removeHeader,request);var tunnelFn=getTunnelFn(request);var tunnelOptions=constructTunnelOptions(request,proxyHeaders);request.agent=tunnelFn(tunnelOptions);return true};Tunnel.defaultProxyHeaderWhiteList=defaultProxyHeaderWhiteList;Tunnel.defaultProxyHeaderExclusiveList=defaultProxyHeaderExclusiveList;exports.Tunnel=Tunnel},{"tunnel-agent":503,url:238}],465:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return[bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]]].join("")}module.exports=bytesToUuid},{}],466:[function(require,module,exports){var getRandomValues=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof window.msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto);if(getRandomValues){var rnds8=new Uint8Array(16);module.exports=function whatwgRNG(){getRandomValues(rnds8);return rnds8}}else{var rnds=new Array(16);module.exports=function mathRNG(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}},{}],467:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options==="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":465,"./lib/rng":466}],468:[function(require,module,exports){(function(process){(function(){"use strict";var http=require("http");var https=require("https");var url=require("url");var util=require("util");var stream=require("stream");var zlib=require("zlib");var aws2=require("aws-sign2");var aws4=require("aws4");var httpSignature=require("http-signature");var mime=require("mime-types");var caseless=require("caseless");var ForeverAgent=require("forever-agent");var FormData=require("form-data");var extend=require("extend");var isstream=require("isstream");var isTypedArray=require("is-typedarray").strict;var helpers=require("./lib/helpers");var cookies=require("./lib/cookies");var getProxyFromURI=require("./lib/getProxyFromURI");var Querystring=require("./lib/querystring").Querystring;var Har=require("./lib/har").Har;var Auth=require("./lib/auth").Auth;var OAuth=require("./lib/oauth").OAuth;var hawk=require("./lib/hawk");var Multipart=require("./lib/multipart").Multipart;var Redirect=require("./lib/redirect").Redirect;var Tunnel=require("./lib/tunnel").Tunnel;var now=require("performance-now");var Buffer=require("safe-buffer").Buffer;var safeStringify=helpers.safeStringify;var isReadStream=helpers.isReadStream;var toBase64=helpers.toBase64;var defer=helpers.defer;var copy=helpers.copy;var version=helpers.version;var globalCookieJar=cookies.jar();var globalPool={};function filterForNonReserved(reserved,options){var object={};for(var i in options){var notReserved=reserved.indexOf(i)===-1;if(notReserved){object[i]=options[i]}}return object}function filterOutReservedFunctions(reserved,options){var object={};for(var i in options){var isReserved=!(reserved.indexOf(i)===-1);var isFunction=typeof options[i]==="function";if(!(isReserved&&isFunction)){object[i]=options[i]}}return object}function requestToJSON(){var self=this;return{uri:self.uri,method:self.method,headers:self.headers}}function responseToJSON(){var self=this;return{statusCode:self.statusCode,body:self.body,headers:self.headers,request:requestToJSON.call(self.request)}}function Request(options){var self=this;if(options.har){self._har=new Har(self);options=self._har.options(options)}stream.Stream.call(self);var reserved=Object.keys(Request.prototype);var nonReserved=filterForNonReserved(reserved,options);extend(self,nonReserved);options=filterOutReservedFunctions(reserved,options);self.readable=true;self.writable=true;if(options.method){self.explicitMethod=true}self._qs=new Querystring(self);self._auth=new Auth(self);self._oauth=new OAuth(self);self._multipart=new Multipart(self);self._redirect=new Redirect(self);self._tunnel=new Tunnel(self);self.init(options)}util.inherits(Request,stream.Stream);Request.debug=process.env.NODE_DEBUG&&/\brequest\b/.test(process.env.NODE_DEBUG);function debug(){if(Request.debug){console.error("REQUEST %s",util.format.apply(util,arguments))}}Request.prototype.debug=debug;Request.prototype.init=function(options){var self=this;if(!options){options={}}self.headers=self.headers?copy(self.headers):{};for(var headerName in self.headers){if(typeof self.headers[headerName]==="undefined"){delete self.headers[headerName]}}caseless.httpify(self,self.headers);if(!self.method){self.method=options.method||"GET"}if(!self.localAddress){self.localAddress=options.localAddress}self._qs.init(options);debug(options);if(!self.pool&&self.pool!==false){self.pool=globalPool}self.dests=self.dests||[];self.__isRequestRequest=true;if(!self._callback&&self.callback){self._callback=self.callback;self.callback=function(){if(self._callbackCalled){return}self._callbackCalled=true;self._callback.apply(self,arguments)};self.on("error",self.callback.bind());self.on("complete",self.callback.bind(self,null))}if(!self.uri&&self.url){self.uri=self.url;delete self.url}if(self.baseUrl){if(typeof self.baseUrl!=="string"){return self.emit("error",new Error("options.baseUrl must be a string"))}if(typeof self.uri!=="string"){return self.emit("error",new Error("options.uri must be a string when using options.baseUrl"))}if(self.uri.indexOf("//")===0||self.uri.indexOf("://")!==-1){return self.emit("error",new Error("options.uri must be a path when using options.baseUrl"))}var baseUrlEndsWithSlash=self.baseUrl.lastIndexOf("/")===self.baseUrl.length-1;var uriStartsWithSlash=self.uri.indexOf("/")===0;if(baseUrlEndsWithSlash&&uriStartsWithSlash){self.uri=self.baseUrl+self.uri.slice(1)}else if(baseUrlEndsWithSlash||uriStartsWithSlash){self.uri=self.baseUrl+self.uri}else if(self.uri===""){self.uri=self.baseUrl}else{self.uri=self.baseUrl+"/"+self.uri}delete self.baseUrl}if(!self.uri){return self.emit("error",new Error("options.uri is a required argument"))}if(typeof self.uri==="string"){self.uri=url.parse(self.uri)}if(!self.uri.href){self.uri.href=url.format(self.uri)}if(self.uri.protocol==="unix:"){return self.emit("error",new Error("`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`"))}if(self.uri.host==="unix"){self.enableUnixSocket()}if(self.strictSSL===false){self.rejectUnauthorized=false}if(!self.uri.pathname){self.uri.pathname="/"}if(!(self.uri.host||self.uri.hostname&&self.uri.port)&&!self.uri.isUnix){var faultyUri=url.format(self.uri);var message='Invalid URI "'+faultyUri+'"';if(Object.keys(options).length===0){message+=". This can be caused by a crappy redirection."}self.abort();return self.emit("error",new Error(message))}if(!self.hasOwnProperty("proxy")){self.proxy=getProxyFromURI(self.uri)}self.tunnel=self._tunnel.isEnabled();if(self.proxy){self._tunnel.setup(options)}self._redirect.onRequest(options);self.setHost=false;if(!self.hasHeader("host")){var hostHeaderName=self.originalHostHeaderName||"host";self.setHeader(hostHeaderName,self.uri.host);if(self.uri.port){if(self.uri.port==="80"&&self.uri.protocol==="http:"||self.uri.port==="443"&&self.uri.protocol==="https:"){self.setHeader(hostHeaderName,self.uri.hostname)}}self.setHost=true}self.jar(self._jar||options.jar);if(!self.uri.port){if(self.uri.protocol==="http:"){self.uri.port=80}else if(self.uri.protocol==="https:"){self.uri.port=443}}if(self.proxy&&!self.tunnel){self.port=self.proxy.port;self.host=self.proxy.hostname}else{self.port=self.uri.port;self.host=self.uri.hostname}if(options.form){self.form(options.form)}if(options.formData){var formData=options.formData;var requestForm=self.form();var appendFormValue=function(key,value){if(value&&value.hasOwnProperty("value")&&value.hasOwnProperty("options")){requestForm.append(key,value.value,value.options)}else{requestForm.append(key,value)}};for(var formKey in formData){if(formData.hasOwnProperty(formKey)){var formValue=formData[formKey];if(formValue instanceof Array){for(var j=0;j<formValue.length;j++){appendFormValue(formKey,formValue[j])}}else{appendFormValue(formKey,formValue)}}}}if(options.qs){self.qs(options.qs)}if(self.uri.path){self.path=self.uri.path}else{self.path=self.uri.pathname+(self.uri.search||"")}if(self.path.length===0){self.path="/"}if(options.aws){self.aws(options.aws)}if(options.hawk){self.hawk(options.hawk)}if(options.httpSignature){self.httpSignature(options.httpSignature)}if(options.auth){if(Object.prototype.hasOwnProperty.call(options.auth,"username")){options.auth.user=options.auth.username}if(Object.prototype.hasOwnProperty.call(options.auth,"password")){options.auth.pass=options.auth.password}self.auth(options.auth.user,options.auth.pass,options.auth.sendImmediately,options.auth.bearer)}if(self.gzip&&!self.hasHeader("accept-encoding")){self.setHeader("accept-encoding","gzip, deflate")}if(self.uri.auth&&!self.hasHeader("authorization")){var uriAuthPieces=self.uri.auth.split(":").map(function(item){return self._qs.unescape(item)});self.auth(uriAuthPieces[0],uriAuthPieces.slice(1).join(":"),true)}if(!self.tunnel&&self.proxy&&self.proxy.auth&&!self.hasHeader("proxy-authorization")){var proxyAuthPieces=self.proxy.auth.split(":").map(function(item){return self._qs.unescape(item)});var authHeader="Basic "+toBase64(proxyAuthPieces.join(":"));self.setHeader("proxy-authorization",authHeader)}if(self.proxy&&!self.tunnel){self.path=self.uri.protocol+"//"+self.uri.host+self.path}if(options.json){self.json(options.json)}if(options.multipart){self.multipart(options.multipart)}if(options.time){self.timing=true;self.elapsedTime=self.elapsedTime||0}function setContentLength(){if(isTypedArray(self.body)){self.body=Buffer.from(self.body)}if(!self.hasHeader("content-length")){var length;if(typeof self.body==="string"){length=Buffer.byteLength(self.body)}else if(Array.isArray(self.body)){length=self.body.reduce(function(a,b){return a+b.length},0)}else{length=self.body.length}if(length){self.setHeader("content-length",length)}else{self.emit("error",new Error("Argument error, options.body."))}}}if(self.body&&!isstream(self.body)){setContentLength()}if(options.oauth){self.oauth(options.oauth)}else if(self._oauth.params&&self.hasHeader("authorization")){self.oauth(self._oauth.params)}var protocol=self.proxy&&!self.tunnel?self.proxy.protocol:self.uri.protocol;var defaultModules={"http:":http,"https:":https};var httpModules=self.httpModules||{};self.httpModule=httpModules[protocol]||defaultModules[protocol];if(!self.httpModule){return self.emit("error",new Error("Invalid protocol: "+protocol))}if(options.ca){self.ca=options.ca}if(!self.agent){if(options.agentOptions){self.agentOptions=options.agentOptions}if(options.agentClass){self.agentClass=options.agentClass}else if(options.forever){var v=version();if(v.major===0&&v.minor<=10){self.agentClass=protocol==="http:"?ForeverAgent:ForeverAgent.SSL}else{self.agentClass=self.httpModule.Agent;self.agentOptions=self.agentOptions||{};self.agentOptions.keepAlive=true}}else{self.agentClass=self.httpModule.Agent}}if(self.pool===false){self.agent=false}else{self.agent=self.agent||self.getNewAgent()}self.on("pipe",function(src){if(self.ntick&&self._started){self.emit("error",new Error("You cannot pipe to this stream after the outbound request has started."))}self.src=src;if(isReadStream(src)){if(!self.hasHeader("content-type")){self.setHeader("content-type",mime.lookup(src.path))}}else{if(src.headers){for(var i in src.headers){if(!self.hasHeader(i)){self.setHeader(i,src.headers[i])}}}if(self._json&&!self.hasHeader("content-type")){self.setHeader("content-type","application/json")}if(src.method&&!self.explicitMethod){self.method=src.method}}});defer(function(){if(self._aborted){return}var end=function(){if(self._form){if(!self._auth.hasAuth){self._form.pipe(self)}else if(self._auth.hasAuth&&self._auth.sentAuth){self._form.pipe(self)}}if(self._multipart&&self._multipart.chunked){self._multipart.body.pipe(self)}if(self.body){if(isstream(self.body)){self.body.pipe(self)}else{setContentLength();if(Array.isArray(self.body)){self.body.forEach(function(part){self.write(part)})}else{self.write(self.body)}self.end()}}else if(self.requestBodyStream){console.warn("options.requestBodyStream is deprecated, please pass the request object to stream.pipe.");self.requestBodyStream.pipe(self)}else if(!self.src){if(self._auth.hasAuth&&!self._auth.sentAuth){self.end();return}if(self.method!=="GET"&&typeof self.method!=="undefined"){self.setHeader("content-length",0)}self.end()}};if(self._form&&!self.hasHeader("content-length")){self.setHeader(self._form.getHeaders(),true);self._form.getLength(function(err,length){if(!err&&!isNaN(length)){self.setHeader("content-length",length)}end()})}else{end()}self.ntick=true})};Request.prototype.getNewAgent=function(){var self=this;var Agent=self.agentClass;var options={};if(self.agentOptions){for(var i in self.agentOptions){options[i]=self.agentOptions[i]}}if(self.ca){options.ca=self.ca}if(self.ciphers){options.ciphers=self.ciphers}if(self.secureProtocol){options.secureProtocol=self.secureProtocol}if(self.secureOptions){options.secureOptions=self.secureOptions}if(typeof self.rejectUnauthorized!=="undefined"){options.rejectUnauthorized=self.rejectUnauthorized}if(self.cert&&self.key){options.key=self.key;options.cert=self.cert}if(self.pfx){options.pfx=self.pfx}if(self.passphrase){options.passphrase=self.passphrase}var poolKey="";if(Agent!==self.httpModule.Agent){poolKey+=Agent.name}var proxy=self.proxy;if(typeof proxy==="string"){proxy=url.parse(proxy)}var isHttps=proxy&&proxy.protocol==="https:"||this.uri.protocol==="https:";if(isHttps){if(options.ca){if(poolKey){poolKey+=":"}poolKey+=options.ca}if(typeof options.rejectUnauthorized!=="undefined"){if(poolKey){poolKey+=":"}poolKey+=options.rejectUnauthorized}if(options.cert){if(poolKey){poolKey+=":"}poolKey+=options.cert.toString("ascii")+options.key.toString("ascii")}if(options.pfx){if(poolKey){poolKey+=":"}poolKey+=options.pfx.toString("ascii")}if(options.ciphers){if(poolKey){poolKey+=":"}poolKey+=options.ciphers}if(options.secureProtocol){if(poolKey){poolKey+=":"}poolKey+=options.secureProtocol}if(options.secureOptions){if(poolKey){poolKey+=":"}poolKey+=options.secureOptions}}if(self.pool===globalPool&&!poolKey&&Object.keys(options).length===0&&self.httpModule.globalAgent){return self.httpModule.globalAgent}poolKey=self.uri.protocol+poolKey;if(!self.pool[poolKey]){self.pool[poolKey]=new Agent(options);if(self.pool.maxSockets){self.pool[poolKey].maxSockets=self.pool.maxSockets}}return self.pool[poolKey]};Request.prototype.start=function(){var self=this;if(self.timing){var startTime=(new Date).getTime();var startTimeNow=now()}if(self._aborted){return}self._started=true;self.method=self.method||"GET";self.href=self.uri.href;if(self.src&&self.src.stat&&self.src.stat.size&&!self.hasHeader("content-length")){self.setHeader("content-length",self.src.stat.size)}if(self._aws){self.aws(self._aws,true)}var reqOptions=copy(self);delete reqOptions.auth;debug("make request",self.uri.href);delete reqOptions.timeout;try{self.req=self.httpModule.request(reqOptions)}catch(err){self.emit("error",err);return}if(self.timing){self.startTime=startTime;self.startTimeNow=startTimeNow;self.timings={}}var timeout;if(self.timeout&&!self.timeoutTimer){if(self.timeout<0){timeout=0}else if(typeof self.timeout==="number"&&isFinite(self.timeout)){timeout=self.timeout}}self.req.on("response",self.onRequestResponse.bind(self));self.req.on("error",self.onRequestError.bind(self));self.req.on("drain",function(){self.emit("drain")});self.req.on("socket",function(socket){var isConnecting=socket._connecting||socket.connecting;if(self.timing){self.timings.socket=now()-self.startTimeNow;if(isConnecting){var onLookupTiming=function(){self.timings.lookup=now()-self.startTimeNow};var onConnectTiming=function(){self.timings.connect=now()-self.startTimeNow};socket.once("lookup",onLookupTiming);socket.once("connect",onConnectTiming);self.req.once("error",function(){socket.removeListener("lookup",onLookupTiming);socket.removeListener("connect",onConnectTiming)})}}var setReqTimeout=function(){self.req.setTimeout(timeout,function(){if(self.req){self.abort();var e=new Error("ESOCKETTIMEDOUT");e.code="ESOCKETTIMEDOUT";e.connect=false;self.emit("error",e)}})};if(timeout!==undefined){if(isConnecting){var onReqSockConnect=function(){socket.removeListener("connect",onReqSockConnect);self.clearTimeout();setReqTimeout()};socket.on("connect",onReqSockConnect);self.req.on("error",function(err){socket.removeListener("connect",onReqSockConnect)});self.timeoutTimer=setTimeout(function(){socket.removeListener("connect",onReqSockConnect);self.abort();var e=new Error("ETIMEDOUT");e.code="ETIMEDOUT";e.connect=true;self.emit("error",e)},timeout)}else{setReqTimeout()}}self.emit("socket",socket)});self.emit("request",self.req)};Request.prototype.onRequestError=function(error){var self=this;if(self._aborted){return}if(self.req&&self.req._reusedSocket&&error.code==="ECONNRESET"&&self.agent.addRequestNoreuse){self.agent={addRequest:self.agent.addRequestNoreuse.bind(self.agent)};self.start();self.req.end();return}self.clearTimeout();self.emit("error",error)};Request.prototype.onRequestResponse=function(response){var self=this;if(self.timing){self.timings.response=now()-self.startTimeNow}debug("onRequestResponse",self.uri.href,response.statusCode,response.headers);response.on("end",function(){if(self.timing){self.timings.end=now()-self.startTimeNow;response.timingStart=self.startTime;if(!self.timings.socket){self.timings.socket=0}if(!self.timings.lookup){self.timings.lookup=self.timings.socket}if(!self.timings.connect){self.timings.connect=self.timings.lookup}if(!self.timings.response){self.timings.response=self.timings.connect}debug("elapsed time",self.timings.end);self.elapsedTime+=Math.round(self.timings.end);response.elapsedTime=self.elapsedTime;response.timings=self.timings;response.timingPhases={wait:self.timings.socket,dns:self.timings.lookup-self.timings.socket,tcp:self.timings.connect-self.timings.lookup,firstByte:self.timings.response-self.timings.connect,download:self.timings.end-self.timings.response,total:self.timings.end}}debug("response end",self.uri.href,response.statusCode,response.headers)});if(self._aborted){debug("aborted",self.uri.href);response.resume();return}self.response=response;response.request=self;response.toJSON=responseToJSON;if(self.httpModule===https&&self.strictSSL&&(!response.hasOwnProperty("socket")||!response.socket.authorized)){debug("strict ssl error",self.uri.href);var sslErr=response.hasOwnProperty("socket")?response.socket.authorizationError:self.uri.href+" does not support SSL";self.emit("error",new Error("SSL Error: "+sslErr));return}self.originalHost=self.getHeader("host")
|
|
51
|
-
;if(!self.originalHostHeaderName){self.originalHostHeaderName=self.hasHeader("host")}if(self.setHost){self.removeHeader("host")}self.clearTimeout();var targetCookieJar=self._jar&&self._jar.setCookie?self._jar:globalCookieJar;var addCookie=function(cookie){try{targetCookieJar.setCookie(cookie,self.uri.href,{ignoreError:true})}catch(e){self.emit("error",e)}};response.caseless=caseless(response.headers);if(response.caseless.has("set-cookie")&&!self._disableCookies){var headerName=response.caseless.has("set-cookie");if(Array.isArray(response.headers[headerName])){response.headers[headerName].forEach(addCookie)}else{addCookie(response.headers[headerName])}}if(self._redirect.onResponse(response)){return}else{response.on("close",function(){if(!self._ended){self.response.emit("end")}});response.once("end",function(){self._ended=true});var noBody=function(code){return self.method==="HEAD"||code>=100&&code<200||code===204||code===304};var responseContent;if(self.gzip&&!noBody(response.statusCode)){var contentEncoding=response.headers["content-encoding"]||"identity";contentEncoding=contentEncoding.trim().toLowerCase();var zlibOptions={flush:zlib.Z_SYNC_FLUSH,finishFlush:zlib.Z_SYNC_FLUSH};if(contentEncoding==="gzip"){responseContent=zlib.createGunzip(zlibOptions);response.pipe(responseContent)}else if(contentEncoding==="deflate"){responseContent=zlib.createInflate(zlibOptions);response.pipe(responseContent)}else{if(contentEncoding!=="identity"){debug("ignoring unrecognized Content-Encoding "+contentEncoding)}responseContent=response}}else{responseContent=response}if(self.encoding){if(self.dests.length!==0){console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.")}else{responseContent.setEncoding(self.encoding)}}if(self._paused){responseContent.pause()}self.responseContent=responseContent;self.emit("response",response);self.dests.forEach(function(dest){self.pipeDest(dest)});responseContent.on("data",function(chunk){if(self.timing&&!self.responseStarted){self.responseStartTime=(new Date).getTime();response.responseStartTime=self.responseStartTime}self._destdata=true;self.emit("data",chunk)});responseContent.once("end",function(chunk){self.emit("end",chunk)});responseContent.on("error",function(error){self.emit("error",error)});responseContent.on("close",function(){self.emit("close")});if(self.callback){self.readResponseBody(response)}else{self.on("end",function(){if(self._aborted){debug("aborted",self.uri.href);return}self.emit("complete",response)})}}debug("finish init function",self.uri.href)};Request.prototype.readResponseBody=function(response){var self=this;debug("reading response's body");var buffers=[];var bufferLength=0;var strings=[];self.on("data",function(chunk){if(!Buffer.isBuffer(chunk)){strings.push(chunk)}else if(chunk.length){bufferLength+=chunk.length;buffers.push(chunk)}});self.on("end",function(){debug("end event",self.uri.href);if(self._aborted){debug("aborted",self.uri.href);buffers=[];bufferLength=0;return}if(bufferLength){debug("has body",self.uri.href,bufferLength);response.body=Buffer.concat(buffers,bufferLength);if(self.encoding!==null){response.body=response.body.toString(self.encoding)}buffers=[];bufferLength=0}else if(strings.length){if(self.encoding==="utf8"&&strings[0].length>0&&strings[0][0]==="\ufeff"){strings[0]=strings[0].substring(1)}response.body=strings.join("")}if(self._json){try{response.body=JSON.parse(response.body,self._jsonReviver)}catch(e){debug("invalid JSON received",self.uri.href)}}debug("emitting complete",self.uri.href);if(typeof response.body==="undefined"&&!self._json){response.body=self.encoding===null?Buffer.alloc(0):""}self.emit("complete",response,response.body)})};Request.prototype.abort=function(){var self=this;self._aborted=true;if(self.req){self.req.abort()}else if(self.response){self.response.destroy()}self.clearTimeout();self.emit("abort")};Request.prototype.pipeDest=function(dest){var self=this;var response=self.response;if(dest.headers&&!dest.headersSent){if(response.caseless.has("content-type")){var ctname=response.caseless.has("content-type");if(dest.setHeader){dest.setHeader(ctname,response.headers[ctname])}else{dest.headers[ctname]=response.headers[ctname]}}if(response.caseless.has("content-length")){var clname=response.caseless.has("content-length");if(dest.setHeader){dest.setHeader(clname,response.headers[clname])}else{dest.headers[clname]=response.headers[clname]}}}if(dest.setHeader&&!dest.headersSent){for(var i in response.headers){if(!self.gzip||i!=="content-encoding"){dest.setHeader(i,response.headers[i])}}dest.statusCode=response.statusCode}if(self.pipefilter){self.pipefilter(response,dest)}};Request.prototype.qs=function(q,clobber){var self=this;var base;if(!clobber&&self.uri.query){base=self._qs.parse(self.uri.query)}else{base={}}for(var i in q){base[i]=q[i]}var qs=self._qs.stringify(base);if(qs===""){return self}self.uri=url.parse(self.uri.href.split("?")[0]+"?"+qs);self.url=self.uri;self.path=self.uri.path;if(self.uri.host==="unix"){self.enableUnixSocket()}return self};Request.prototype.form=function(form){var self=this;if(form){if(!/^application\/x-www-form-urlencoded\b/.test(self.getHeader("content-type"))){self.setHeader("content-type","application/x-www-form-urlencoded")}self.body=typeof form==="string"?self._qs.rfc3986(form.toString("utf8")):self._qs.stringify(form).toString("utf8");return self}self._form=new FormData;self._form.on("error",function(err){err.message="form-data: "+err.message;self.emit("error",err);self.abort()});return self._form};Request.prototype.multipart=function(multipart){var self=this;self._multipart.onRequest(multipart);if(!self._multipart.chunked){self.body=self._multipart.body}return self};Request.prototype.json=function(val){var self=this;if(!self.hasHeader("accept")){self.setHeader("accept","application/json")}if(typeof self.jsonReplacer==="function"){self._jsonReplacer=self.jsonReplacer}self._json=true;if(typeof val==="boolean"){if(self.body!==undefined){if(!/^application\/x-www-form-urlencoded\b/.test(self.getHeader("content-type"))){self.body=safeStringify(self.body,self._jsonReplacer)}else{self.body=self._qs.rfc3986(self.body)}if(!self.hasHeader("content-type")){self.setHeader("content-type","application/json")}}}else{self.body=safeStringify(val,self._jsonReplacer);if(!self.hasHeader("content-type")){self.setHeader("content-type","application/json")}}if(typeof self.jsonReviver==="function"){self._jsonReviver=self.jsonReviver}return self};Request.prototype.getHeader=function(name,headers){var self=this;var result,re,match;if(!headers){headers=self.headers}Object.keys(headers).forEach(function(key){if(key.length!==name.length){return}re=new RegExp(name,"i");match=key.match(re);if(match){result=headers[key]}});return result};Request.prototype.enableUnixSocket=function(){var unixParts=this.uri.path.split(":");var host=unixParts[0];var path=unixParts[1];this.socketPath=host;this.uri.pathname=path;this.uri.path=path;this.uri.host=host;this.uri.hostname=host;this.uri.isUnix=true};Request.prototype.auth=function(user,pass,sendImmediately,bearer){var self=this;self._auth.onRequest(user,pass,sendImmediately,bearer);return self};Request.prototype.aws=function(opts,now){var self=this;if(!now){self._aws=opts;return self}if(opts.sign_version===4||opts.sign_version==="4"){var options={host:self.uri.host,path:self.uri.path,method:self.method,headers:self.headers,body:self.body};if(opts.service){options.service=opts.service}var signRes=aws4.sign(options,{accessKeyId:opts.key,secretAccessKey:opts.secret,sessionToken:opts.session});self.setHeader("authorization",signRes.headers.Authorization);self.setHeader("x-amz-date",signRes.headers["X-Amz-Date"]);if(signRes.headers["X-Amz-Security-Token"]){self.setHeader("x-amz-security-token",signRes.headers["X-Amz-Security-Token"])}}else{var date=new Date;self.setHeader("date",date.toUTCString());var auth={key:opts.key,secret:opts.secret,verb:self.method.toUpperCase(),date:date,contentType:self.getHeader("content-type")||"",md5:self.getHeader("content-md5")||"",amazonHeaders:aws2.canonicalizeHeaders(self.headers)};var path=self.uri.path;if(opts.bucket&&path){auth.resource="/"+opts.bucket+path}else if(opts.bucket&&!path){auth.resource="/"+opts.bucket}else if(!opts.bucket&&path){auth.resource=path}else if(!opts.bucket&&!path){auth.resource="/"}auth.resource=aws2.canonicalizeResource(auth.resource);self.setHeader("authorization",aws2.authorization(auth))}return self};Request.prototype.httpSignature=function(opts){var self=this;httpSignature.signRequest({getHeader:function(header){return self.getHeader(header,self.headers)},setHeader:function(header,value){self.setHeader(header,value)},method:self.method,path:self.path},opts);debug("httpSignature authorization",self.getHeader("authorization"));return self};Request.prototype.hawk=function(opts){var self=this;self.setHeader("Authorization",hawk.header(self.uri,self.method,opts))};Request.prototype.oauth=function(_oauth){var self=this;self._oauth.onRequest(_oauth);return self};Request.prototype.jar=function(jar){var self=this;var cookies;if(self._redirect.redirectsFollowed===0){self.originalCookieHeader=self.getHeader("cookie")}if(!jar){cookies=false;self._disableCookies=true}else{var targetCookieJar=jar.getCookieString?jar:globalCookieJar;var urihref=self.uri.href;if(targetCookieJar){cookies=targetCookieJar.getCookieString(urihref)}}if(cookies&&cookies.length){if(self.originalCookieHeader){self.setHeader("cookie",self.originalCookieHeader+"; "+cookies)}else{self.setHeader("cookie",cookies)}}self._jar=jar;return self};Request.prototype.pipe=function(dest,opts){var self=this;if(self.response){if(self._destdata){self.emit("error",new Error("You cannot pipe after data has been emitted from the response."))}else if(self._ended){self.emit("error",new Error("You cannot pipe after the response has been ended."))}else{stream.Stream.prototype.pipe.call(self,dest,opts);self.pipeDest(dest);return dest}}else{self.dests.push(dest);stream.Stream.prototype.pipe.call(self,dest,opts);return dest}};Request.prototype.write=function(){var self=this;if(self._aborted){return}if(!self._started){self.start()}if(self.req){return self.req.write.apply(self.req,arguments)}};Request.prototype.end=function(chunk){var self=this;if(self._aborted){return}if(chunk){self.write(chunk)}if(!self._started){self.start()}if(self.req){self.req.end()}};Request.prototype.pause=function(){var self=this;if(!self.responseContent){self._paused=true}else{self.responseContent.pause.apply(self.responseContent,arguments)}};Request.prototype.resume=function(){var self=this;if(!self.responseContent){self._paused=false}else{self.responseContent.resume.apply(self.responseContent,arguments)}};Request.prototype.destroy=function(){var self=this;this.clearTimeout();if(!self._ended){self.end()}else if(self.response){self.response.destroy()}};Request.prototype.clearTimeout=function(){if(this.timeoutTimer){clearTimeout(this.timeoutTimer);this.timeoutTimer=null}};Request.defaultProxyHeaderWhiteList=Tunnel.defaultProxyHeaderWhiteList.slice();Request.defaultProxyHeaderExclusiveList=Tunnel.defaultProxyHeaderExclusiveList.slice();Request.prototype.toJSON=requestToJSON;module.exports=Request}).call(this)}).call(this,require("_process"))},{"./lib/auth":454,"./lib/cookies":455,"./lib/getProxyFromURI":456,"./lib/har":457,"./lib/hawk":458,"./lib/helpers":459,"./lib/multipart":460,"./lib/oauth":461,"./lib/querystring":462,"./lib/redirect":463,"./lib/tunnel":464,_process:179,"aws-sign2":388,aws4:389,caseless:392,extend:399,"forever-agent":403,"form-data":404,http:230,"http-signature":426,https:142,"is-typedarray":431,isstream:432,"mime-types":443,"performance-now":445,"safe-buffer":469,stream:229,url:238,util:243,zlib:68}],469:[function(require,module,exports){arguments[4][202][0].apply(exports,arguments)},{buffer:71,dup:202}],470:[function(require,module,exports){(function(process){(function(){"use strict";var buffer=require("buffer");var Buffer=buffer.Buffer;var safer={};var key;for(key in buffer){if(!buffer.hasOwnProperty(key))continue;if(key==="SlowBuffer"||key==="Buffer")continue;safer[key]=buffer[key]}var Safer=safer.Buffer={};for(key in Buffer){if(!Buffer.hasOwnProperty(key))continue;if(key==="allocUnsafe"||key==="allocUnsafeSlow")continue;Safer[key]=Buffer[key]}safer.Buffer.prototype=Buffer.prototype;if(!Safer.from||Safer.from===Uint8Array.from){Safer.from=function(value,encodingOrOffset,length){if(typeof value==="number"){throw new TypeError('The "value" argument must not be of type number. Received type '+typeof value)}if(value&&typeof value.length==="undefined"){throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof value)}return Buffer(value,encodingOrOffset,length)}}if(!Safer.alloc){Safer.alloc=function(size,fill,encoding){if(typeof size!=="number"){throw new TypeError('The "size" argument must be of type number. Received type '+typeof size)}if(size<0||size>=2*(1<<30)){throw new RangeError('The value "'+size+'" is invalid for option "size"')}var buf=Buffer(size);if(!fill||fill.length===0){buf.fill(0)}else if(typeof encoding==="string"){buf.fill(fill,encoding)}else{buf.fill(fill)}return buf}}if(!safer.kStringMaxLength){try{safer.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch(e){}}if(!safer.constants){safer.constants={MAX_LENGTH:safer.kMaxLength};if(safer.kStringMaxLength){safer.constants.MAX_STRING_LENGTH=safer.kStringMaxLength}}module.exports=safer}).call(this)}).call(this,require("_process"))},{_process:179,buffer:71}],471:[function(require,module,exports){var Buffer=require("safer-buffer").Buffer;var algInfo={dsa:{parts:["p","q","g","y"],sizePart:"p"},rsa:{parts:["e","n"],sizePart:"n"},ecdsa:{parts:["curve","Q"],sizePart:"Q"},ed25519:{parts:["A"],sizePart:"A"}};algInfo["curve25519"]=algInfo["ed25519"];var algPrivInfo={dsa:{parts:["p","q","g","y","x"]},rsa:{parts:["n","e","d","iqmp","p","q"]},ecdsa:{parts:["curve","Q","d"]},ed25519:{parts:["A","k"]}};algPrivInfo["curve25519"]=algPrivInfo["ed25519"];var hashAlgs={md5:true,sha1:true,sha256:true,sha384:true,sha512:true};var curves={nistp256:{size:256,pkcs8oid:"1.2.840.10045.3.1.7",p:Buffer.from(("00"+"ffffffff 00000001 00000000 00000000"+"00000000 ffffffff ffffffff ffffffff").replace(/ /g,""),"hex"),a:Buffer.from(("00"+"FFFFFFFF 00000001 00000000 00000000"+"00000000 FFFFFFFF FFFFFFFF FFFFFFFC").replace(/ /g,""),"hex"),b:Buffer.from(("5ac635d8 aa3a93e7 b3ebbd55 769886bc"+"651d06b0 cc53b0f6 3bce3c3e 27d2604b").replace(/ /g,""),"hex"),s:Buffer.from(("00"+"c49d3608 86e70493 6a6678e1 139d26b7"+"819f7e90").replace(/ /g,""),"hex"),n:Buffer.from(("00"+"ffffffff 00000000 ffffffff ffffffff"+"bce6faad a7179e84 f3b9cac2 fc632551").replace(/ /g,""),"hex"),G:Buffer.from(("04"+"6b17d1f2 e12c4247 f8bce6e5 63a440f2"+"77037d81 2deb33a0 f4a13945 d898c296"+"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16"+"2bce3357 6b315ece cbb64068 37bf51f5").replace(/ /g,""),"hex")},nistp384:{size:384,pkcs8oid:"1.3.132.0.34",p:Buffer.from(("00"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff fffffffe"+"ffffffff 00000000 00000000 ffffffff").replace(/ /g,""),"hex"),a:Buffer.from(("00"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE"+"FFFFFFFF 00000000 00000000 FFFFFFFC").replace(/ /g,""),"hex"),b:Buffer.from(("b3312fa7 e23ee7e4 988e056b e3f82d19"+"181d9c6e fe814112 0314088f 5013875a"+"c656398d 8a2ed19d 2a85c8ed d3ec2aef").replace(/ /g,""),"hex"),s:Buffer.from(("00"+"a335926a a319a27a 1d00896a 6773a482"+"7acdac73").replace(/ /g,""),"hex"),n:Buffer.from(("00"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff c7634d81 f4372ddf"+"581a0db2 48b0a77a ecec196a ccc52973").replace(/ /g,""),"hex"),G:Buffer.from(("04"+"aa87ca22 be8b0537 8eb1c71e f320ad74"+"6e1d3b62 8ba79b98 59f741e0 82542a38"+"5502f25d bf55296c 3a545e38 72760ab7"+"3617de4a 96262c6f 5d9e98bf 9292dc29"+"f8f41dbd 289a147c e9da3113 b5f0b8c0"+"0a60b1ce 1d7e819d 7a431d7c 90ea0e5f").replace(/ /g,""),"hex")},nistp521:{size:521,pkcs8oid:"1.3.132.0.35",p:Buffer.from(("01ffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff ffffffff"+"ffff").replace(/ /g,""),"hex"),a:Buffer.from(("01FF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC").replace(/ /g,""),"hex"),b:Buffer.from(("51"+"953eb961 8e1c9a1f 929a21a0 b68540ee"+"a2da725b 99b315f3 b8b48991 8ef109e1"+"56193951 ec7e937b 1652c0bd 3bb1bf07"+"3573df88 3d2c34f1 ef451fd4 6b503f00").replace(/ /g,""),"hex"),s:Buffer.from(("00"+"d09e8800 291cb853 96cc6717 393284aa"+"a0da64ba").replace(/ /g,""),"hex"),n:Buffer.from(("01ff"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff fffffffa"+"51868783 bf2f966b 7fcc0148 f709a5d0"+"3bb5c9b8 899c47ae bb6fb71e 91386409").replace(/ /g,""),"hex"),G:Buffer.from(("04"+"00c6 858e06b7 0404e9cd 9e3ecb66 2395b442"+"9c648139 053fb521 f828af60 6b4d3dba"+"a14b5e77 efe75928 fe1dc127 a2ffa8de"+"3348b3c1 856a429b f97e7e31 c2e5bd66"+"0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9"+"98f54449 579b4468 17afbd17 273e662c"+"97ee7299 5ef42640 c550b901 3fad0761"+"353c7086 a272c240 88be9476 9fd16650").replace(/ /g,""),"hex")}};module.exports={info:algInfo,privInfo:algPrivInfo,hashAlgs:hashAlgs,curves:curves}},{"safer-buffer":470}],472:[function(require,module,exports){module.exports=Certificate;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var errs=require("./errors");var util=require("util");var utils=require("./utils");var Key=require("./key");var PrivateKey=require("./private-key");var Identity=require("./identity");var formats={};formats["openssh"]=require("./formats/openssh-cert");formats["x509"]=require("./formats/x509");formats["pem"]=require("./formats/x509-pem");var CertificateParseError=errs.CertificateParseError;var InvalidAlgorithmError=errs.InvalidAlgorithmError;function Certificate(opts){assert.object(opts,"options");assert.arrayOfObject(opts.subjects,"options.subjects");utils.assertCompatible(opts.subjects[0],Identity,[1,0],"options.subjects");utils.assertCompatible(opts.subjectKey,Key,[1,0],"options.subjectKey");utils.assertCompatible(opts.issuer,Identity,[1,0],"options.issuer");if(opts.issuerKey!==undefined){utils.assertCompatible(opts.issuerKey,Key,[1,0],"options.issuerKey")}assert.object(opts.signatures,"options.signatures");assert.buffer(opts.serial,"options.serial");assert.date(opts.validFrom,"options.validFrom");assert.date(opts.validUntil,"optons.validUntil");assert.optionalArrayOfString(opts.purposes,"options.purposes");this._hashCache={};this.subjects=opts.subjects;this.issuer=opts.issuer;this.subjectKey=opts.subjectKey;this.issuerKey=opts.issuerKey;this.signatures=opts.signatures;this.serial=opts.serial;this.validFrom=opts.validFrom;this.validUntil=opts.validUntil;this.purposes=opts.purposes}Certificate.formats=formats;Certificate.prototype.toBuffer=function(format,options){if(format===undefined)format="x509";assert.string(format,"format");assert.object(formats[format],"formats[format]");assert.optionalObject(options,"options");return formats[format].write(this,options)};Certificate.prototype.toString=function(format,options){if(format===undefined)format="pem";return this.toBuffer(format,options).toString()};Certificate.prototype.fingerprint=function(algo){if(algo===undefined)algo="sha256";assert.string(algo,"algorithm");var opts={type:"certificate",hash:this.hash(algo),algorithm:algo};return new Fingerprint(opts)};Certificate.prototype.hash=function(algo){assert.string(algo,"algorithm");algo=algo.toLowerCase();if(algs.hashAlgs[algo]===undefined)throw new InvalidAlgorithmError(algo);if(this._hashCache[algo])return this._hashCache[algo];var hash=crypto.createHash(algo).update(this.toBuffer("x509")).digest();this._hashCache[algo]=hash;return hash};Certificate.prototype.isExpired=function(when){if(when===undefined)when=new Date;return!(when.getTime()>=this.validFrom.getTime()&&when.getTime()<this.validUntil.getTime())};Certificate.prototype.isSignedBy=function(issuerCert){utils.assertCompatible(issuerCert,Certificate,[1,0],"issuer");if(!this.issuer.equals(issuerCert.subjects[0]))return false;if(this.issuer.purposes&&this.issuer.purposes.length>0&&this.issuer.purposes.indexOf("ca")===-1){return false}return this.isSignedByKey(issuerCert.subjectKey)};Certificate.prototype.getExtension=function(keyOrOid){assert.string(keyOrOid,"keyOrOid");var ext=this.getExtensions().filter(function(maybeExt){if(maybeExt.format==="x509")return maybeExt.oid===keyOrOid;if(maybeExt.format==="openssh")return maybeExt.name===keyOrOid;return false})[0];return ext};Certificate.prototype.getExtensions=function(){var exts=[];var x509=this.signatures.x509;if(x509&&x509.extras&&x509.extras.exts){x509.extras.exts.forEach(function(ext){ext.format="x509";exts.push(ext)})}var openssh=this.signatures.openssh;if(openssh&&openssh.exts){openssh.exts.forEach(function(ext){ext.format="openssh";exts.push(ext)})}return exts};Certificate.prototype.isSignedByKey=function(issuerKey){utils.assertCompatible(issuerKey,Key,[1,2],"issuerKey");if(this.issuerKey!==undefined){return this.issuerKey.fingerprint("sha512").matches(issuerKey)}var fmt=Object.keys(this.signatures)[0];var valid=formats[fmt].verify(this,issuerKey);if(valid)this.issuerKey=issuerKey;return valid};Certificate.prototype.signWith=function(key){utils.assertCompatible(key,PrivateKey,[1,2],"key");var fmts=Object.keys(formats);var didOne=false;for(var i=0;i<fmts.length;++i){if(fmts[i]!=="pem"){var ret=formats[fmts[i]].sign(this,key);if(ret===true)didOne=true}}if(!didOne){throw new Error("Failed to sign the certificate for any "+"available certificate formats")}};Certificate.createSelfSigned=function(subjectOrSubjects,key,options){var subjects;if(Array.isArray(subjectOrSubjects))subjects=subjectOrSubjects;else subjects=[subjectOrSubjects];assert.arrayOfObject(subjects);subjects.forEach(function(subject){utils.assertCompatible(subject,Identity,[1,0],"subject")});utils.assertCompatible(key,PrivateKey,[1,2],"private key");assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalObject(options.validFrom,"options.validFrom");assert.optionalObject(options.validUntil,"options.validUntil");var validFrom=options.validFrom;var validUntil=options.validUntil;if(validFrom===undefined)validFrom=new Date;if(validUntil===undefined){assert.optionalNumber(options.lifetime,"options.lifetime");var lifetime=options.lifetime;if(lifetime===undefined)lifetime=10*365*24*3600;validUntil=new Date;validUntil.setTime(validUntil.getTime()+lifetime*1e3)}assert.optionalBuffer(options.serial,"options.serial");var serial=options.serial;if(serial===undefined)serial=Buffer.from("0000000000000001","hex");var purposes=options.purposes;if(purposes===undefined)purposes=[];if(purposes.indexOf("signature")===-1)purposes.push("signature");if(purposes.indexOf("ca")===-1)purposes.push("ca");if(purposes.indexOf("crl")===-1)purposes.push("crl");if(purposes.length<=3){var hostSubjects=subjects.filter(function(subject){return subject.type==="host"});var userSubjects=subjects.filter(function(subject){return subject.type==="user"});if(hostSubjects.length>0){if(purposes.indexOf("serverAuth")===-1)purposes.push("serverAuth")}if(userSubjects.length>0){if(purposes.indexOf("clientAuth")===-1)purposes.push("clientAuth")}if(userSubjects.length>0||hostSubjects.length>0){if(purposes.indexOf("keyAgreement")===-1)purposes.push("keyAgreement");if(key.type==="rsa"&&purposes.indexOf("encryption")===-1)purposes.push("encryption")}}var cert=new Certificate({subjects:subjects,issuer:subjects[0],subjectKey:key.toPublic(),issuerKey:key.toPublic(),signatures:{},serial:serial,validFrom:validFrom,validUntil:validUntil,purposes:purposes});cert.signWith(key);return cert};Certificate.create=function(subjectOrSubjects,key,issuer,issuerKey,options){var subjects;if(Array.isArray(subjectOrSubjects))subjects=subjectOrSubjects;else subjects=[subjectOrSubjects];assert.arrayOfObject(subjects);subjects.forEach(function(subject){utils.assertCompatible(subject,Identity,[1,0],"subject")});utils.assertCompatible(key,Key,[1,0],"key");if(PrivateKey.isPrivateKey(key))key=key.toPublic();utils.assertCompatible(issuer,Identity,[1,0],"issuer");utils.assertCompatible(issuerKey,PrivateKey,[1,2],"issuer key");assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalObject(options.validFrom,"options.validFrom");assert.optionalObject(options.validUntil,"options.validUntil");var validFrom=options.validFrom;var validUntil=options.validUntil;if(validFrom===undefined)validFrom=new Date;if(validUntil===undefined){assert.optionalNumber(options.lifetime,"options.lifetime");var lifetime=options.lifetime;if(lifetime===undefined)lifetime=10*365*24*3600;validUntil=new Date;validUntil.setTime(validUntil.getTime()+lifetime*1e3)}assert.optionalBuffer(options.serial,"options.serial");var serial=options.serial;if(serial===undefined)serial=Buffer.from("0000000000000001","hex");var purposes=options.purposes;if(purposes===undefined)purposes=[];if(purposes.indexOf("signature")===-1)purposes.push("signature");if(options.ca===true){if(purposes.indexOf("ca")===-1)purposes.push("ca");if(purposes.indexOf("crl")===-1)purposes.push("crl")}var hostSubjects=subjects.filter(function(subject){return subject.type==="host"});var userSubjects=subjects.filter(function(subject){return subject.type==="user"});if(hostSubjects.length>0){if(purposes.indexOf("serverAuth")===-1)purposes.push("serverAuth")}if(userSubjects.length>0){if(purposes.indexOf("clientAuth")===-1)purposes.push("clientAuth")}if(userSubjects.length>0||hostSubjects.length>0){if(purposes.indexOf("keyAgreement")===-1)purposes.push("keyAgreement");if(key.type==="rsa"&&purposes.indexOf("encryption")===-1)purposes.push("encryption")}var cert=new Certificate({subjects:subjects,issuer:issuer,subjectKey:key,issuerKey:issuerKey.toPublic(),signatures:{},serial:serial,validFrom:validFrom,validUntil:validUntil,purposes:purposes});cert.signWith(issuerKey);return cert};Certificate.parse=function(data,format,options){if(typeof data!=="string")assert.buffer(data,"data");if(format===undefined)format="auto";assert.string(format,"format");if(typeof options==="string")options={filename:options};assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalString(options.filename,"options.filename");if(options.filename===undefined)options.filename="(unnamed)";assert.object(formats[format],"formats[format]");try{var k=formats[format].read(data,options);return k}catch(e){throw new CertificateParseError(options.filename,format,e)}};Certificate.isCertificate=function(obj,ver){return utils.isCompatible(obj,Certificate,ver)};Certificate.prototype._sshpkApiVersion=[1,1];Certificate._oldVersionDetect=function(obj){return[1,0]}},{"./algs":471,"./errors":475,"./fingerprint":476,"./formats/openssh-cert":479,"./formats/x509":488,"./formats/x509-pem":487,"./identity":489,"./key":491,"./private-key":492,"./signature":493,"./utils":495,"assert-plus":387,crypto:81,"safer-buffer":470,util:243}],473:[function(require,module,exports){module.exports={DiffieHellman:DiffieHellman,generateECDSA:generateECDSA,generateED25519:generateED25519};var assert=require("assert-plus");var crypto=require("crypto");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var utils=require("./utils");var nacl=require("tweetnacl");var Key=require("./key");var PrivateKey=require("./private-key");var CRYPTO_HAVE_ECDH=crypto.createECDH!==undefined;var ecdh=require("ecc-jsbn");var ec=require("ecc-jsbn/lib/ec");var jsbn=require("jsbn").BigInteger;function DiffieHellman(key){utils.assertCompatible(key,Key,[1,4],"key");this._isPriv=PrivateKey.isPrivateKey(key,[1,3]);this._algo=key.type;this._curve=key.curve;this._key=key;if(key.type==="dsa"){if(!CRYPTO_HAVE_ECDH){throw new Error("Due to bugs in the node 0.10 "+"crypto API, node 0.12.x or later is required "+"to use DH")}this._dh=crypto.createDiffieHellman(key.part.p.data,undefined,key.part.g.data,undefined);this._p=key.part.p;this._g=key.part.g;if(this._isPriv)this._dh.setPrivateKey(key.part.x.data);this._dh.setPublicKey(key.part.y.data)}else if(key.type==="ecdsa"){if(!CRYPTO_HAVE_ECDH){this._ecParams=new X9ECParameters(this._curve);if(this._isPriv){this._priv=new ECPrivate(this._ecParams,key.part.d.data)}return}var curve={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[key.curve];this._dh=crypto.createECDH(curve);if(typeof this._dh!=="object"||typeof this._dh.setPrivateKey!=="function"){CRYPTO_HAVE_ECDH=false;DiffieHellman.call(this,key);return}if(this._isPriv)this._dh.setPrivateKey(key.part.d.data);this._dh.setPublicKey(key.part.Q.data)}else if(key.type==="curve25519"){if(this._isPriv){utils.assertCompatible(key,PrivateKey,[1,5],"key");this._priv=key.part.k.data}}else{throw new Error("DH not supported for "+key.type+" keys")}}DiffieHellman.prototype.getPublicKey=function(){if(this._isPriv)return this._key.toPublic();return this._key};DiffieHellman.prototype.getPrivateKey=function(){if(this._isPriv)return this._key;else return undefined};DiffieHellman.prototype.getKey=DiffieHellman.prototype.getPrivateKey;DiffieHellman.prototype._keyCheck=function(pk,isPub){assert.object(pk,"key");if(!isPub)utils.assertCompatible(pk,PrivateKey,[1,3],"key");utils.assertCompatible(pk,Key,[1,4],"key");if(pk.type!==this._algo){throw new Error("A "+pk.type+" key cannot be used in "+this._algo+" Diffie-Hellman")}if(pk.curve!==this._curve){throw new Error("A key from the "+pk.curve+" curve "+"cannot be used with a "+this._curve+" Diffie-Hellman")}if(pk.type==="dsa"){assert.deepEqual(pk.part.p,this._p,"DSA key prime does not match");assert.deepEqual(pk.part.g,this._g,"DSA key generator does not match")}};DiffieHellman.prototype.setKey=function(pk){this._keyCheck(pk);if(pk.type==="dsa"){this._dh.setPrivateKey(pk.part.x.data);this._dh.setPublicKey(pk.part.y.data)}else if(pk.type==="ecdsa"){if(CRYPTO_HAVE_ECDH){this._dh.setPrivateKey(pk.part.d.data);this._dh.setPublicKey(pk.part.Q.data)}else{this._priv=new ECPrivate(this._ecParams,pk.part.d.data)}}else if(pk.type==="curve25519"){var k=pk.part.k;if(!pk.part.k)k=pk.part.r;this._priv=k.data;if(this._priv[0]===0)this._priv=this._priv.slice(1);this._priv=this._priv.slice(0,32)}this._key=pk;this._isPriv=true};DiffieHellman.prototype.setPrivateKey=DiffieHellman.prototype.setKey;DiffieHellman.prototype.computeSecret=function(otherpk){this._keyCheck(otherpk,true);if(!this._isPriv)throw new Error("DH exchange has not been initialized with "+"a private key yet");var pub;if(this._algo==="dsa"){return this._dh.computeSecret(otherpk.part.y.data)}else if(this._algo==="ecdsa"){if(CRYPTO_HAVE_ECDH){return this._dh.computeSecret(otherpk.part.Q.data)}else{pub=new ECPublic(this._ecParams,otherpk.part.Q.data);return this._priv.deriveSharedSecret(pub)}}else if(this._algo==="curve25519"){pub=otherpk.part.A.data;while(pub[0]===0&&pub.length>32)pub=pub.slice(1);var priv=this._priv;assert.strictEqual(pub.length,32);assert.strictEqual(priv.length,32);var secret=nacl.box.before(new Uint8Array(pub),new Uint8Array(priv));return Buffer.from(secret)}throw new Error("Invalid algorithm: "+this._algo)};DiffieHellman.prototype.generateKey=function(){var parts=[];var priv,pub;if(this._algo==="dsa"){this._dh.generateKeys();parts.push({name:"p",data:this._p.data});parts.push({name:"q",data:this._key.part.q.data});parts.push({name:"g",data:this._g.data});parts.push({name:"y",data:this._dh.getPublicKey()});parts.push({name:"x",data:this._dh.getPrivateKey()});this._key=new PrivateKey({type:"dsa",parts:parts});this._isPriv=true
|
|
52
|
-
;return this._key}else if(this._algo==="ecdsa"){if(CRYPTO_HAVE_ECDH){this._dh.generateKeys();parts.push({name:"curve",data:Buffer.from(this._curve)});parts.push({name:"Q",data:this._dh.getPublicKey()});parts.push({name:"d",data:this._dh.getPrivateKey()});this._key=new PrivateKey({type:"ecdsa",curve:this._curve,parts:parts});this._isPriv=true;return this._key}else{var n=this._ecParams.getN();var r=new jsbn(crypto.randomBytes(n.bitLength()));var n1=n.subtract(jsbn.ONE);priv=r.mod(n1).add(jsbn.ONE);pub=this._ecParams.getG().multiply(priv);priv=Buffer.from(priv.toByteArray());pub=Buffer.from(this._ecParams.getCurve().encodePointHex(pub),"hex");this._priv=new ECPrivate(this._ecParams,priv);parts.push({name:"curve",data:Buffer.from(this._curve)});parts.push({name:"Q",data:pub});parts.push({name:"d",data:priv});this._key=new PrivateKey({type:"ecdsa",curve:this._curve,parts:parts});this._isPriv=true;return this._key}}else if(this._algo==="curve25519"){var pair=nacl.box.keyPair();priv=Buffer.from(pair.secretKey);pub=Buffer.from(pair.publicKey);priv=Buffer.concat([priv,pub]);assert.strictEqual(priv.length,64);assert.strictEqual(pub.length,32);parts.push({name:"A",data:pub});parts.push({name:"k",data:priv});this._key=new PrivateKey({type:"curve25519",parts:parts});this._isPriv=true;return this._key}throw new Error("Invalid algorithm: "+this._algo)};DiffieHellman.prototype.generateKeys=DiffieHellman.prototype.generateKey;function X9ECParameters(name){var params=algs.curves[name];assert.object(params);var p=new jsbn(params.p);var a=new jsbn(params.a);var b=new jsbn(params.b);var n=new jsbn(params.n);var h=jsbn.ONE;var curve=new ec.ECCurveFp(p,a,b);var G=curve.decodePointHex(params.G.toString("hex"));this.curve=curve;this.g=G;this.n=n;this.h=h}X9ECParameters.prototype.getCurve=function(){return this.curve};X9ECParameters.prototype.getG=function(){return this.g};X9ECParameters.prototype.getN=function(){return this.n};X9ECParameters.prototype.getH=function(){return this.h};function ECPublic(params,buffer){this._params=params;if(buffer[0]===0)buffer=buffer.slice(1);this._pub=params.getCurve().decodePointHex(buffer.toString("hex"))}function ECPrivate(params,buffer){this._params=params;this._priv=new jsbn(utils.mpNormalize(buffer))}ECPrivate.prototype.deriveSharedSecret=function(pubKey){assert.ok(pubKey instanceof ECPublic);var S=pubKey._pub.multiply(this._priv);return Buffer.from(S.getX().toBigInteger().toByteArray())};function generateED25519(){var pair=nacl.sign.keyPair();var priv=Buffer.from(pair.secretKey);var pub=Buffer.from(pair.publicKey);assert.strictEqual(priv.length,64);assert.strictEqual(pub.length,32);var parts=[];parts.push({name:"A",data:pub});parts.push({name:"k",data:priv.slice(0,32)});var key=new PrivateKey({type:"ed25519",parts:parts});return key}function generateECDSA(curve){var parts=[];var key;if(CRYPTO_HAVE_ECDH){var osCurve={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[curve];var dh=crypto.createECDH(osCurve);dh.generateKeys();parts.push({name:"curve",data:Buffer.from(curve)});parts.push({name:"Q",data:dh.getPublicKey()});parts.push({name:"d",data:dh.getPrivateKey()});key=new PrivateKey({type:"ecdsa",curve:curve,parts:parts});return key}else{var ecParams=new X9ECParameters(curve);var n=ecParams.getN();var cByteLen=Math.ceil((n.bitLength()+64)/8);var c=new jsbn(crypto.randomBytes(cByteLen));var n1=n.subtract(jsbn.ONE);var priv=c.mod(n1).add(jsbn.ONE);var pub=ecParams.getG().multiply(priv);priv=Buffer.from(priv.toByteArray());pub=Buffer.from(ecParams.getCurve().encodePointHex(pub),"hex");parts.push({name:"curve",data:Buffer.from(curve)});parts.push({name:"Q",data:pub});parts.push({name:"d",data:priv});key=new PrivateKey({type:"ecdsa",curve:curve,parts:parts});return key}}},{"./algs":471,"./key":491,"./private-key":492,"./utils":495,"assert-plus":387,crypto:81,"ecc-jsbn":396,"ecc-jsbn/lib/ec":397,jsbn:433,"safer-buffer":470,tweetnacl:504}],474:[function(require,module,exports){module.exports={Verifier:Verifier,Signer:Signer};var nacl=require("tweetnacl");var stream=require("stream");var util=require("util");var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var Signature=require("./signature");function Verifier(key,hashAlgo){if(hashAlgo.toLowerCase()!=="sha512")throw new Error("ED25519 only supports the use of "+"SHA-512 hashes");this.key=key;this.chunks=[];stream.Writable.call(this,{})}util.inherits(Verifier,stream.Writable);Verifier.prototype._write=function(chunk,enc,cb){this.chunks.push(chunk);cb()};Verifier.prototype.update=function(chunk){if(typeof chunk==="string")chunk=Buffer.from(chunk,"binary");this.chunks.push(chunk)};Verifier.prototype.verify=function(signature,fmt){var sig;if(Signature.isSignature(signature,[2,0])){if(signature.type!=="ed25519")return false;sig=signature.toBuffer("raw")}else if(typeof signature==="string"){sig=Buffer.from(signature,"base64")}else if(Signature.isSignature(signature,[1,0])){throw new Error("signature was created by too old "+"a version of sshpk and cannot be verified")}assert.buffer(sig);return nacl.sign.detached.verify(new Uint8Array(Buffer.concat(this.chunks)),new Uint8Array(sig),new Uint8Array(this.key.part.A.data))};function Signer(key,hashAlgo){if(hashAlgo.toLowerCase()!=="sha512")throw new Error("ED25519 only supports the use of "+"SHA-512 hashes");this.key=key;this.chunks=[];stream.Writable.call(this,{})}util.inherits(Signer,stream.Writable);Signer.prototype._write=function(chunk,enc,cb){this.chunks.push(chunk);cb()};Signer.prototype.update=function(chunk){if(typeof chunk==="string")chunk=Buffer.from(chunk,"binary");this.chunks.push(chunk)};Signer.prototype.sign=function(){var sig=nacl.sign.detached(new Uint8Array(Buffer.concat(this.chunks)),new Uint8Array(Buffer.concat([this.key.part.k.data,this.key.part.A.data])));var sigBuf=Buffer.from(sig);var sigObj=Signature.parse(sigBuf,"ed25519","raw");sigObj.hashAlgorithm="sha512";return sigObj}},{"./signature":493,"assert-plus":387,"safer-buffer":470,stream:229,tweetnacl:504,util:243}],475:[function(require,module,exports){var assert=require("assert-plus");var util=require("util");function FingerprintFormatError(fp,format){if(Error.captureStackTrace)Error.captureStackTrace(this,FingerprintFormatError);this.name="FingerprintFormatError";this.fingerprint=fp;this.format=format;this.message="Fingerprint format is not supported, or is invalid: ";if(fp!==undefined)this.message+=" fingerprint = "+fp;if(format!==undefined)this.message+=" format = "+format}util.inherits(FingerprintFormatError,Error);function InvalidAlgorithmError(alg){if(Error.captureStackTrace)Error.captureStackTrace(this,InvalidAlgorithmError);this.name="InvalidAlgorithmError";this.algorithm=alg;this.message='Algorithm "'+alg+'" is not supported'}util.inherits(InvalidAlgorithmError,Error);function KeyParseError(name,format,innerErr){if(Error.captureStackTrace)Error.captureStackTrace(this,KeyParseError);this.name="KeyParseError";this.format=format;this.keyName=name;this.innerErr=innerErr;this.message="Failed to parse "+name+" as a valid "+format+" format key: "+innerErr.message}util.inherits(KeyParseError,Error);function SignatureParseError(type,format,innerErr){if(Error.captureStackTrace)Error.captureStackTrace(this,SignatureParseError);this.name="SignatureParseError";this.type=type;this.format=format;this.innerErr=innerErr;this.message="Failed to parse the given data as a "+type+" signature in "+format+" format: "+innerErr.message}util.inherits(SignatureParseError,Error);function CertificateParseError(name,format,innerErr){if(Error.captureStackTrace)Error.captureStackTrace(this,CertificateParseError);this.name="CertificateParseError";this.format=format;this.certName=name;this.innerErr=innerErr;this.message="Failed to parse "+name+" as a valid "+format+" format certificate: "+innerErr.message}util.inherits(CertificateParseError,Error);function KeyEncryptedError(name,format){if(Error.captureStackTrace)Error.captureStackTrace(this,KeyEncryptedError);this.name="KeyEncryptedError";this.format=format;this.keyName=name;this.message="The "+format+" format key "+name+" is "+"encrypted (password-protected), and no passphrase was "+"provided in `options`"}util.inherits(KeyEncryptedError,Error);module.exports={FingerprintFormatError:FingerprintFormatError,InvalidAlgorithmError:InvalidAlgorithmError,KeyParseError:KeyParseError,SignatureParseError:SignatureParseError,KeyEncryptedError:KeyEncryptedError,CertificateParseError:CertificateParseError}},{"assert-plus":387,util:243}],476:[function(require,module,exports){module.exports=Fingerprint;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var errs=require("./errors");var Key=require("./key");var PrivateKey=require("./private-key");var Certificate=require("./certificate");var utils=require("./utils");var FingerprintFormatError=errs.FingerprintFormatError;var InvalidAlgorithmError=errs.InvalidAlgorithmError;function Fingerprint(opts){assert.object(opts,"options");assert.string(opts.type,"options.type");assert.buffer(opts.hash,"options.hash");assert.string(opts.algorithm,"options.algorithm");this.algorithm=opts.algorithm.toLowerCase();if(algs.hashAlgs[this.algorithm]!==true)throw new InvalidAlgorithmError(this.algorithm);this.hash=opts.hash;this.type=opts.type;this.hashType=opts.hashType}Fingerprint.prototype.toString=function(format){if(format===undefined){if(this.algorithm==="md5"||this.hashType==="spki")format="hex";else format="base64"}assert.string(format);switch(format){case"hex":if(this.hashType==="spki")return this.hash.toString("hex");return addColons(this.hash.toString("hex"));case"base64":if(this.hashType==="spki")return this.hash.toString("base64");return sshBase64Format(this.algorithm,this.hash.toString("base64"));default:throw new FingerprintFormatError(undefined,format)}};Fingerprint.prototype.matches=function(other){assert.object(other,"key or certificate");if(this.type==="key"&&this.hashType!=="ssh"){utils.assertCompatible(other,Key,[1,7],"key with spki");if(PrivateKey.isPrivateKey(other)){utils.assertCompatible(other,PrivateKey,[1,6],"privatekey with spki support")}}else if(this.type==="key"){utils.assertCompatible(other,Key,[1,0],"key")}else{utils.assertCompatible(other,Certificate,[1,0],"certificate")}var theirHash=other.hash(this.algorithm,this.hashType);var theirHash2=crypto.createHash(this.algorithm).update(theirHash).digest("base64");if(this.hash2===undefined)this.hash2=crypto.createHash(this.algorithm).update(this.hash).digest("base64");return this.hash2===theirHash2};var base64RE=/^[A-Za-z0-9+\/=]+$/;var hexRE=/^[a-fA-F0-9]+$/;Fingerprint.parse=function(fp,options){assert.string(fp,"fingerprint");var alg,hash,enAlgs;if(Array.isArray(options)){enAlgs=options;options={}}assert.optionalObject(options,"options");if(options===undefined)options={};if(options.enAlgs!==undefined)enAlgs=options.enAlgs;if(options.algorithms!==undefined)enAlgs=options.algorithms;assert.optionalArrayOfString(enAlgs,"algorithms");var hashType="ssh";if(options.hashType!==undefined)hashType=options.hashType;assert.string(hashType,"options.hashType");var parts=fp.split(":");if(parts.length==2){alg=parts[0].toLowerCase();if(!base64RE.test(parts[1]))throw new FingerprintFormatError(fp);try{hash=Buffer.from(parts[1],"base64")}catch(e){throw new FingerprintFormatError(fp)}}else if(parts.length>2){alg="md5";if(parts[0].toLowerCase()==="md5")parts=parts.slice(1);parts=parts.map(function(p){while(p.length<2)p="0"+p;if(p.length>2)throw new FingerprintFormatError(fp);return p});parts=parts.join("");if(!hexRE.test(parts)||parts.length%2!==0)throw new FingerprintFormatError(fp);try{hash=Buffer.from(parts,"hex")}catch(e){throw new FingerprintFormatError(fp)}}else{if(hexRE.test(fp)){hash=Buffer.from(fp,"hex")}else if(base64RE.test(fp)){hash=Buffer.from(fp,"base64")}else{throw new FingerprintFormatError(fp)}switch(hash.length){case 32:alg="sha256";break;case 16:alg="md5";break;case 20:alg="sha1";break;case 64:alg="sha512";break;default:throw new FingerprintFormatError(fp)}if(options.hashType===undefined)hashType="spki"}if(alg===undefined)throw new FingerprintFormatError(fp);if(algs.hashAlgs[alg]===undefined)throw new InvalidAlgorithmError(alg);if(enAlgs!==undefined){enAlgs=enAlgs.map(function(a){return a.toLowerCase()});if(enAlgs.indexOf(alg)===-1)throw new InvalidAlgorithmError(alg)}return new Fingerprint({algorithm:alg,hash:hash,type:options.type||"key",hashType:hashType})};function addColons(s){return s.replace(/(.{2})(?=.)/g,"$1:")}function base64Strip(s){return s.replace(/=*$/,"")}function sshBase64Format(alg,h){return alg.toUpperCase()+":"+base64Strip(h)}Fingerprint.isFingerprint=function(obj,ver){return utils.isCompatible(obj,Fingerprint,ver)};Fingerprint.prototype._sshpkApiVersion=[1,2];Fingerprint._oldVersionDetect=function(obj){assert.func(obj.toString);assert.func(obj.matches);return[1,0]}},{"./algs":471,"./certificate":472,"./errors":475,"./key":491,"./private-key":492,"./utils":495,"assert-plus":387,crypto:81,"safer-buffer":470}],477:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var ssh=require("./ssh");var rfc4253=require("./rfc4253");var dnssec=require("./dnssec");var putty=require("./putty");var DNSSEC_PRIVKEY_HEADER_PREFIX="Private-key-format: v1";function read(buf,options){if(typeof buf==="string"){if(buf.trim().match(/^[-]+[ ]*BEGIN/))return pem.read(buf,options);if(buf.match(/^\s*ssh-[a-z]/))return ssh.read(buf,options);if(buf.match(/^\s*ecdsa-/))return ssh.read(buf,options);if(buf.match(/^putty-user-key-file-2:/i))return putty.read(buf,options);if(findDNSSECHeader(buf))return dnssec.read(buf,options);buf=Buffer.from(buf,"binary")}else{assert.buffer(buf);if(findPEMHeader(buf))return pem.read(buf,options);if(findSSHHeader(buf))return ssh.read(buf,options);if(findPuTTYHeader(buf))return putty.read(buf,options);if(findDNSSECHeader(buf))return dnssec.read(buf,options)}if(buf.readUInt32BE(0)<buf.length)return rfc4253.read(buf,options);throw new Error("Failed to auto-detect format of key")}function findPuTTYHeader(buf){var offset=0;while(offset<buf.length&&(buf[offset]===32||buf[offset]===10||buf[offset]===9))++offset;if(offset+22<=buf.length&&buf.slice(offset,offset+22).toString("ascii").toLowerCase()==="putty-user-key-file-2:")return true;return false}function findSSHHeader(buf){var offset=0;while(offset<buf.length&&(buf[offset]===32||buf[offset]===10||buf[offset]===9))++offset;if(offset+4<=buf.length&&buf.slice(offset,offset+4).toString("ascii")==="ssh-")return true;if(offset+6<=buf.length&&buf.slice(offset,offset+6).toString("ascii")==="ecdsa-")return true;return false}function findPEMHeader(buf){var offset=0;while(offset<buf.length&&(buf[offset]===32||buf[offset]===10))++offset;if(buf[offset]!==45)return false;while(offset<buf.length&&buf[offset]===45)++offset;while(offset<buf.length&&buf[offset]===32)++offset;if(offset+5>buf.length||buf.slice(offset,offset+5).toString("ascii")!=="BEGIN")return false;return true}function findDNSSECHeader(buf){if(buf.length<=DNSSEC_PRIVKEY_HEADER_PREFIX.length)return false;var headerCheck=buf.slice(0,DNSSEC_PRIVKEY_HEADER_PREFIX.length);if(headerCheck.toString("ascii")===DNSSEC_PRIVKEY_HEADER_PREFIX)return true;if(typeof buf!=="string"){buf=buf.toString("ascii")}var lines=buf.split("\n");var line=0;while(lines[line].match(/^\;/))line++;if(lines[line].toString("ascii").match(/\. IN KEY /))return true;if(lines[line].toString("ascii").match(/\. IN DNSKEY /))return true;return false}function write(key,options){throw new Error('"auto" format cannot be used for writing')}},{"../key":491,"../private-key":492,"../utils":495,"./dnssec":478,"./pem":480,"./putty":483,"./rfc4253":484,"./ssh":486,"assert-plus":387,"safer-buffer":470}],478:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var Key=require("../key");var PrivateKey=require("../private-key");var utils=require("../utils");var SSHBuffer=require("../ssh-buffer");var Dhe=require("../dhe");var supportedAlgos={"rsa-sha1":5,"rsa-sha256":8,"rsa-sha512":10,"ecdsa-p256-sha256":13,"ecdsa-p384-sha384":14};var supportedAlgosById={};Object.keys(supportedAlgos).forEach(function(k){supportedAlgosById[supportedAlgos[k]]=k.toUpperCase()});function read(buf,options){if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var lines=buf.split("\n");if(lines[0].match(/^Private-key-format\: v1/)){var algElems=lines[1].split(" ");var algoNum=parseInt(algElems[1],10);var algoName=algElems[2];if(!supportedAlgosById[algoNum])throw new Error("Unsupported algorithm: "+algoName);return readDNSSECPrivateKey(algoNum,lines.slice(2))}var line=0;while(lines[line].match(/^\;/))line++;if((lines[line].match(/\. IN KEY /)||lines[line].match(/\. IN DNSKEY /))&&lines[line+1].length===0){return readRFC3110(lines[line])}throw new Error("Cannot parse dnssec key")}function readRFC3110(keyString){var elems=keyString.split(" ");var algorithm=parseInt(elems[5],10);if(!supportedAlgosById[algorithm])throw new Error("Unsupported algorithm: "+algorithm);var base64key=elems.slice(6,elems.length).join();var keyBuffer=Buffer.from(base64key,"base64");if(supportedAlgosById[algorithm].match(/^RSA-/)){var publicExponentLen=keyBuffer.readUInt8(0);if(publicExponentLen!=3&&publicExponentLen!=1)throw new Error("Cannot parse dnssec key: "+"unsupported exponent length");var publicExponent=keyBuffer.slice(1,publicExponentLen+1);publicExponent=utils.mpNormalize(publicExponent);var modulus=keyBuffer.slice(1+publicExponentLen);modulus=utils.mpNormalize(modulus);var rsaKey={type:"rsa",parts:[]};rsaKey.parts.push({name:"e",data:publicExponent});rsaKey.parts.push({name:"n",data:modulus});return new Key(rsaKey)}if(supportedAlgosById[algorithm]==="ECDSA-P384-SHA384"||supportedAlgosById[algorithm]==="ECDSA-P256-SHA256"){var curve="nistp384";var size=384;if(supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)){curve="nistp256";size=256}var ecdsaKey={type:"ecdsa",curve:curve,size:size,parts:[{name:"curve",data:Buffer.from(curve)},{name:"Q",data:utils.ecNormalize(keyBuffer)}]};return new Key(ecdsaKey)}throw new Error("Unsupported algorithm: "+supportedAlgosById[algorithm])}function elementToBuf(e){return Buffer.from(e.split(" ")[1],"base64")}function readDNSSECRSAPrivateKey(elements){var rsaParams={};elements.forEach(function(element){if(element.split(" ")[0]==="Modulus:")rsaParams["n"]=elementToBuf(element);else if(element.split(" ")[0]==="PublicExponent:")rsaParams["e"]=elementToBuf(element);else if(element.split(" ")[0]==="PrivateExponent:")rsaParams["d"]=elementToBuf(element);else if(element.split(" ")[0]==="Prime1:")rsaParams["p"]=elementToBuf(element);else if(element.split(" ")[0]==="Prime2:")rsaParams["q"]=elementToBuf(element);else if(element.split(" ")[0]==="Exponent1:")rsaParams["dmodp"]=elementToBuf(element);else if(element.split(" ")[0]==="Exponent2:")rsaParams["dmodq"]=elementToBuf(element);else if(element.split(" ")[0]==="Coefficient:")rsaParams["iqmp"]=elementToBuf(element)});var key={type:"rsa",parts:[{name:"e",data:utils.mpNormalize(rsaParams["e"])},{name:"n",data:utils.mpNormalize(rsaParams["n"])},{name:"d",data:utils.mpNormalize(rsaParams["d"])},{name:"p",data:utils.mpNormalize(rsaParams["p"])},{name:"q",data:utils.mpNormalize(rsaParams["q"])},{name:"dmodp",data:utils.mpNormalize(rsaParams["dmodp"])},{name:"dmodq",data:utils.mpNormalize(rsaParams["dmodq"])},{name:"iqmp",data:utils.mpNormalize(rsaParams["iqmp"])}]};return new PrivateKey(key)}function readDNSSECPrivateKey(alg,elements){if(supportedAlgosById[alg].match(/^RSA-/)){return readDNSSECRSAPrivateKey(elements)}if(supportedAlgosById[alg]==="ECDSA-P384-SHA384"||supportedAlgosById[alg]==="ECDSA-P256-SHA256"){var d=Buffer.from(elements[0].split(" ")[1],"base64");var curve="nistp384";var size=384;if(supportedAlgosById[alg]==="ECDSA-P256-SHA256"){curve="nistp256";size=256}var publicKey=utils.publicFromPrivateECDSA(curve,d);var Q=publicKey.part["Q"].data;var ecdsaKey={type:"ecdsa",curve:curve,size:size,parts:[{name:"curve",data:Buffer.from(curve)},{name:"d",data:d},{name:"Q",data:Q}]};return new PrivateKey(ecdsaKey)}throw new Error("Unsupported algorithm: "+supportedAlgosById[alg])}function dnssecTimestamp(date){var year=date.getFullYear()+"";var month=date.getMonth()+1;var timestampStr=year+month+date.getUTCDate();timestampStr+=""+date.getUTCHours()+date.getUTCMinutes();timestampStr+=date.getUTCSeconds();return timestampStr}function rsaAlgFromOptions(opts){if(!opts||!opts.hashAlgo||opts.hashAlgo==="sha1")return"5 (RSASHA1)";else if(opts.hashAlgo==="sha256")return"8 (RSASHA256)";else if(opts.hashAlgo==="sha512")return"10 (RSASHA512)";else throw new Error("Unknown or unsupported hash: "+opts.hashAlgo)}function writeRSA(key,options){if(!key.part.dmodp||!key.part.dmodq){utils.addRSAMissing(key)}var out="";out+="Private-key-format: v1.3\n";out+="Algorithm: "+rsaAlgFromOptions(options)+"\n";var n=utils.mpDenormalize(key.part["n"].data);out+="Modulus: "+n.toString("base64")+"\n";var e=utils.mpDenormalize(key.part["e"].data);out+="PublicExponent: "+e.toString("base64")+"\n";var d=utils.mpDenormalize(key.part["d"].data);out+="PrivateExponent: "+d.toString("base64")+"\n";var p=utils.mpDenormalize(key.part["p"].data);out+="Prime1: "+p.toString("base64")+"\n";var q=utils.mpDenormalize(key.part["q"].data);out+="Prime2: "+q.toString("base64")+"\n";var dmodp=utils.mpDenormalize(key.part["dmodp"].data);out+="Exponent1: "+dmodp.toString("base64")+"\n";var dmodq=utils.mpDenormalize(key.part["dmodq"].data);out+="Exponent2: "+dmodq.toString("base64")+"\n";var iqmp=utils.mpDenormalize(key.part["iqmp"].data);out+="Coefficient: "+iqmp.toString("base64")+"\n";var timestamp=new Date;out+="Created: "+dnssecTimestamp(timestamp)+"\n";out+="Publish: "+dnssecTimestamp(timestamp)+"\n";out+="Activate: "+dnssecTimestamp(timestamp)+"\n";return Buffer.from(out,"ascii")}function writeECDSA(key,options){var out="";out+="Private-key-format: v1.3\n";if(key.curve==="nistp256"){out+="Algorithm: 13 (ECDSAP256SHA256)\n"}else if(key.curve==="nistp384"){out+="Algorithm: 14 (ECDSAP384SHA384)\n"}else{throw new Error("Unsupported curve")}var base64Key=key.part["d"].data.toString("base64");out+="PrivateKey: "+base64Key+"\n";var timestamp=new Date;out+="Created: "+dnssecTimestamp(timestamp)+"\n";out+="Publish: "+dnssecTimestamp(timestamp)+"\n";out+="Activate: "+dnssecTimestamp(timestamp)+"\n";return Buffer.from(out,"ascii")}function write(key,options){if(PrivateKey.isPrivateKey(key)){if(key.type==="rsa"){return writeRSA(key,options)}else if(key.type==="ecdsa"){return writeECDSA(key,options)}else{throw new Error("Unsupported algorithm: "+key.type)}}else if(Key.isKey(key)){throw new Error('Format "dnssec" only supports '+"writing private keys")}else{throw new Error("key is not a Key or PrivateKey")}}},{"../dhe":473,"../key":491,"../private-key":492,"../ssh-buffer":494,"../utils":495,"assert-plus":387,"safer-buffer":470}],479:[function(require,module,exports){module.exports={read:read,verify:verify,sign:sign,signAsync:signAsync,write:write,fromBuffer:fromBuffer,toBuffer:toBuffer};var assert=require("assert-plus");var SSHBuffer=require("../ssh-buffer");var crypto=require("crypto");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var Key=require("../key");var PrivateKey=require("../private-key");var Identity=require("../identity");var rfc4253=require("./rfc4253");var Signature=require("../signature");var utils=require("../utils");var Certificate=require("../certificate");function verify(cert,key){return false}var TYPES={user:1,host:2};Object.keys(TYPES).forEach(function(k){TYPES[TYPES[k]]=k});var ECDSA_ALGO=/^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;function read(buf,options){if(Buffer.isBuffer(buf))buf=buf.toString("ascii");var parts=buf.trim().split(/[ \t\n]+/g);if(parts.length<2||parts.length>3)throw new Error("Not a valid SSH certificate line");var algo=parts[0];var data=parts[1];data=Buffer.from(data,"base64");return fromBuffer(data,algo)}function fromBuffer(data,algo,partial){var sshbuf=new SSHBuffer({buffer:data});var innerAlgo=sshbuf.readString();if(algo!==undefined&&innerAlgo!==algo)throw new Error("SSH certificate algorithm mismatch");if(algo===undefined)algo=innerAlgo;var cert={};cert.signatures={};cert.signatures.openssh={};cert.signatures.openssh.nonce=sshbuf.readBuffer();var key={};var parts=key.parts=[];key.type=getAlg(algo);var partCount=algs.info[key.type].parts.length;while(parts.length<partCount)parts.push(sshbuf.readPart());assert.ok(parts.length>=1,"key must have at least one part");var algInfo=algs.info[key.type];if(key.type==="ecdsa"){var res=ECDSA_ALGO.exec(algo);assert.ok(res!==null);assert.strictEqual(res[1],parts[0].data.toString())}for(var i=0;i<algInfo.parts.length;++i){parts[i].name=algInfo.parts[i];if(parts[i].name!=="curve"&&algInfo.normalize!==false){var p=parts[i];p.data=utils.mpNormalize(p.data)}}cert.subjectKey=new Key(key);cert.serial=sshbuf.readInt64();var type=TYPES[sshbuf.readInt()];assert.string(type,"valid cert type");cert.signatures.openssh.keyId=sshbuf.readString();var principals=[];var pbuf=sshbuf.readBuffer();var psshbuf=new SSHBuffer({buffer:pbuf});while(!psshbuf.atEnd())principals.push(psshbuf.readString());if(principals.length===0)principals=["*"];cert.subjects=principals.map(function(pr){if(type==="user")return Identity.forUser(pr);else if(type==="host")return Identity.forHost(pr);throw new Error("Unknown identity type "+type)});cert.validFrom=int64ToDate(sshbuf.readInt64());cert.validUntil=int64ToDate(sshbuf.readInt64());var exts=[];var extbuf=new SSHBuffer({buffer:sshbuf.readBuffer()});var ext;while(!extbuf.atEnd()){ext={critical:true};ext.name=extbuf.readString();ext.data=extbuf.readBuffer();exts.push(ext)}extbuf=new SSHBuffer({buffer:sshbuf.readBuffer()});while(!extbuf.atEnd()){ext={critical:false};ext.name=extbuf.readString();ext.data=extbuf.readBuffer();exts.push(ext)}cert.signatures.openssh.exts=exts;sshbuf.readBuffer();var signingKeyBuf=sshbuf.readBuffer();cert.issuerKey=rfc4253.read(signingKeyBuf);cert.issuer=Identity.forHost("**");var sigBuf=sshbuf.readBuffer();cert.signatures.openssh.signature=Signature.parse(sigBuf,cert.issuerKey.type,"ssh");if(partial!==undefined){partial.remainder=sshbuf.remainder();partial.consumed=sshbuf._offset}return new Certificate(cert)}function int64ToDate(buf){var i=buf.readUInt32BE(0)*4294967296;i+=buf.readUInt32BE(4);var d=new Date;d.setTime(i*1e3);d.sourceInt64=buf;return d}function dateToInt64(date){if(date.sourceInt64!==undefined)return date.sourceInt64;var i=Math.round(date.getTime()/1e3);var upper=Math.floor(i/4294967296);var lower=Math.floor(i%4294967296);var buf=Buffer.alloc(8);buf.writeUInt32BE(upper,0);buf.writeUInt32BE(lower,4);return buf}function sign(cert,key){if(cert.signatures.openssh===undefined)cert.signatures.openssh={};try{var blob=toBuffer(cert,true)}catch(e){delete cert.signatures.openssh;return false}var sig=cert.signatures.openssh;var hashAlgo=undefined;if(key.type==="rsa"||key.type==="dsa")hashAlgo="sha1";var signer=key.createSign(hashAlgo);signer.write(blob);sig.signature=signer.sign();return true}function signAsync(cert,signer,done){if(cert.signatures.openssh===undefined)cert.signatures.openssh={};try{var blob=toBuffer(cert,true)}catch(e){delete cert.signatures.openssh;done(e);return}var sig=cert.signatures.openssh;signer(blob,function(err,signature){if(err){done(err);return}try{signature.toBuffer("ssh")}catch(e){done(e);return}sig.signature=signature;done()})}function write(cert,options){if(options===undefined)options={};var blob=toBuffer(cert);var out=getCertType(cert.subjectKey)+" "+blob.toString("base64");if(options.comment)out=out+" "+options.comment;return out}function toBuffer(cert,noSig){assert.object(cert.signatures.openssh,"signature for openssh format");var sig=cert.signatures.openssh;if(sig.nonce===undefined)sig.nonce=crypto.randomBytes(16);var buf=new SSHBuffer({});buf.writeString(getCertType(cert.subjectKey));buf.writeBuffer(sig.nonce);var key=cert.subjectKey;var algInfo=algs.info[key.type];algInfo.parts.forEach(function(part){buf.writePart(key.part[part])});buf.writeInt64(cert.serial);var type=cert.subjects[0].type;assert.notStrictEqual(type,"unknown");cert.subjects.forEach(function(id){assert.strictEqual(id.type,type)});type=TYPES[type];buf.writeInt(type);if(sig.keyId===undefined){sig.keyId=cert.subjects[0].type+"_"+(cert.subjects[0].uid||cert.subjects[0].hostname)}buf.writeString(sig.keyId);var sub=new SSHBuffer({});cert.subjects.forEach(function(id){if(type===TYPES.host)sub.writeString(id.hostname);else if(type===TYPES.user)sub.writeString(id.uid)});buf.writeBuffer(sub.toBuffer());buf.writeInt64(dateToInt64(cert.validFrom));buf.writeInt64(dateToInt64(cert.validUntil));var exts=sig.exts;if(exts===undefined)exts=[];var extbuf=new SSHBuffer({});exts.forEach(function(ext){if(ext.critical!==true)return;extbuf.writeString(ext.name);extbuf.writeBuffer(ext.data)});buf.writeBuffer(extbuf.toBuffer());extbuf=new SSHBuffer({});exts.forEach(function(ext){if(ext.critical===true)return;extbuf.writeString(ext.name);extbuf.writeBuffer(ext.data)});buf.writeBuffer(extbuf.toBuffer());buf.writeBuffer(Buffer.alloc(0));sub=rfc4253.write(cert.issuerKey);buf.writeBuffer(sub);if(!noSig)buf.writeBuffer(sig.signature.toBuffer("ssh"));return buf.toBuffer()}function getAlg(certType){if(certType==="ssh-rsa-cert-v01@openssh.com")return"rsa";if(certType==="ssh-dss-cert-v01@openssh.com")return"dsa";if(certType.match(ECDSA_ALGO))return"ecdsa";if(certType==="ssh-ed25519-cert-v01@openssh.com")return"ed25519";throw new Error("Unsupported cert type "+certType)}function getCertType(key){if(key.type==="rsa")return"ssh-rsa-cert-v01@openssh.com";if(key.type==="dsa")return"ssh-dss-cert-v01@openssh.com";if(key.type==="ecdsa")return"ecdsa-sha2-"+key.curve+"-cert-v01@openssh.com";if(key.type==="ed25519")return"ssh-ed25519-cert-v01@openssh.com";throw new Error("Unsupported key type "+key.type)}},{"../algs":471,"../certificate":472,"../identity":489,"../key":491,"../private-key":492,"../signature":493,"../ssh-buffer":494,"../utils":495,"./rfc4253":484,"assert-plus":387,crypto:81,"safer-buffer":470}],480:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var asn1=require("asn1");var crypto=require("crypto");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pkcs1=require("./pkcs1");var pkcs8=require("./pkcs8");var sshpriv=require("./ssh-private");var rfc4253=require("./rfc4253");var errors=require("../errors");var OID_PBES2="1.2.840.113549.1.5.13";var OID_PBKDF2="1.2.840.113549.1.5.12";var OID_TO_CIPHER={"1.2.840.113549.3.7":"3des-cbc","2.16.840.1.101.3.4.1.2":"aes128-cbc","2.16.840.1.101.3.4.1.42":"aes256-cbc"};var CIPHER_TO_OID={};Object.keys(OID_TO_CIPHER).forEach(function(k){CIPHER_TO_OID[OID_TO_CIPHER[k]]=k});var OID_TO_HASH={"1.2.840.113549.2.7":"sha1","1.2.840.113549.2.9":"sha256","1.2.840.113549.2.11":"sha512"};var HASH_TO_OID={};Object.keys(OID_TO_HASH).forEach(function(k){HASH_TO_OID[OID_TO_HASH[k]]=k});function read(buf,options,forceType){var input=buf;if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var lines=buf.trim().split(/[\r\n]+/g);var m;var si=-1;while(!m&&si<lines.length){m=lines[++si].match(/[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/)}assert.ok(m,"invalid PEM header");var m2;var ei=lines.length;while(!m2&&ei>0){m2=lines[--ei].match(/[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/)}assert.ok(m2,"invalid PEM footer")
|
|
53
|
-
;assert.equal(m[2],m2[2]);var type=m[2].toLowerCase();var alg;if(m[1]){assert.equal(m[1],m2[1],"PEM header and footer mismatch");alg=m[1].trim()}lines=lines.slice(si,ei+1);var headers={};while(true){lines=lines.slice(1);m=lines[0].match(/^([A-Za-z0-9-]+): (.+)$/);if(!m)break;headers[m[1].toLowerCase()]=m[2]}lines=lines.slice(0,-1).join("");buf=Buffer.from(lines,"base64");var cipher,key,iv;if(headers["proc-type"]){var parts=headers["proc-type"].split(",");if(parts[0]==="4"&&parts[1]==="ENCRYPTED"){if(typeof options.passphrase==="string"){options.passphrase=Buffer.from(options.passphrase,"utf-8")}if(!Buffer.isBuffer(options.passphrase)){throw new errors.KeyEncryptedError(options.filename,"PEM")}else{parts=headers["dek-info"].split(",");assert.ok(parts.length===2);cipher=parts[0].toLowerCase();iv=Buffer.from(parts[1],"hex");key=utils.opensslKeyDeriv(cipher,iv,options.passphrase,1).key}}}if(alg&&alg.toLowerCase()==="encrypted"){var eder=new asn1.BerReader(buf);var pbesEnd;eder.readSequence();eder.readSequence();pbesEnd=eder.offset+eder.length;var method=eder.readOID();if(method!==OID_PBES2){throw new Error("Unsupported PEM/PKCS8 encryption "+"scheme: "+method)}eder.readSequence();eder.readSequence();var kdfEnd=eder.offset+eder.length;var kdfOid=eder.readOID();if(kdfOid!==OID_PBKDF2)throw new Error("Unsupported PBES2 KDF: "+kdfOid);eder.readSequence();var salt=eder.readString(asn1.Ber.OctetString,true);var iterations=eder.readInt();var hashAlg="sha1";if(eder.offset<kdfEnd){eder.readSequence();var hashAlgOid=eder.readOID();hashAlg=OID_TO_HASH[hashAlgOid];if(hashAlg===undefined){throw new Error("Unsupported PBKDF2 hash: "+hashAlgOid)}}eder._offset=kdfEnd;eder.readSequence();var cipherOid=eder.readOID();cipher=OID_TO_CIPHER[cipherOid];if(cipher===undefined){throw new Error("Unsupported PBES2 cipher: "+cipherOid)}iv=eder.readString(asn1.Ber.OctetString,true);eder._offset=pbesEnd;buf=eder.readString(asn1.Ber.OctetString,true);if(typeof options.passphrase==="string"){options.passphrase=Buffer.from(options.passphrase,"utf-8")}if(!Buffer.isBuffer(options.passphrase)){throw new errors.KeyEncryptedError(options.filename,"PEM")}var cinfo=utils.opensshCipherInfo(cipher);cipher=cinfo.opensslName;key=utils.pbkdf2(hashAlg,salt,iterations,cinfo.keySize,options.passphrase);alg=undefined}if(cipher&&key&&iv){var cipherStream=crypto.createDecipheriv(cipher,key,iv);var chunk,chunks=[];cipherStream.once("error",function(e){if(e.toString().indexOf("bad decrypt")!==-1){throw new Error("Incorrect passphrase "+"supplied, could not decrypt key")}throw e});cipherStream.write(buf);cipherStream.end();while((chunk=cipherStream.read())!==null)chunks.push(chunk);buf=Buffer.concat(chunks)}if(alg&&alg.toLowerCase()==="openssh")return sshpriv.readSSHPrivate(type,buf,options);if(alg&&alg.toLowerCase()==="ssh2")return rfc4253.readType(type,buf,options);var der=new asn1.BerReader(buf);der.originalInput=input;der.readSequence();if(alg){if(forceType)assert.strictEqual(forceType,"pkcs1");return pkcs1.readPkcs1(alg,type,der)}else{if(forceType)assert.strictEqual(forceType,"pkcs8");return pkcs8.readPkcs8(alg,type,der)}}function write(key,options,type){assert.object(key);var alg={ecdsa:"EC",rsa:"RSA",dsa:"DSA",ed25519:"EdDSA"}[key.type];var header;var der=new asn1.BerWriter;if(PrivateKey.isPrivateKey(key)){if(type&&type==="pkcs8"){header="PRIVATE KEY";pkcs8.writePkcs8(der,key)}else{if(type)assert.strictEqual(type,"pkcs1");header=alg+" PRIVATE KEY";pkcs1.writePkcs1(der,key)}}else if(Key.isKey(key)){if(type&&type==="pkcs1"){header=alg+" PUBLIC KEY";pkcs1.writePkcs1(der,key)}else{if(type)assert.strictEqual(type,"pkcs8");header="PUBLIC KEY";pkcs8.writePkcs8(der,key)}}else{throw new Error("key is not a Key or PrivateKey")}var tmp=der.buffer.toString("base64");var len=tmp.length+tmp.length/64+18+16+header.length*2+10;var buf=Buffer.alloc(len);var o=0;o+=buf.write("-----BEGIN "+header+"-----\n",o);for(var i=0;i<tmp.length;){var limit=i+64;if(limit>tmp.length)limit=tmp.length;o+=buf.write(tmp.slice(i,limit),o);buf[o++]=10;i=limit}o+=buf.write("-----END "+header+"-----\n",o);return buf.slice(0,o)}},{"../algs":471,"../errors":475,"../key":491,"../private-key":492,"../utils":495,"./pkcs1":481,"./pkcs8":482,"./rfc4253":484,"./ssh-private":485,asn1:386,"assert-plus":387,crypto:81,"safer-buffer":470}],481:[function(require,module,exports){module.exports={read:read,readPkcs1:readPkcs1,write:write,writePkcs1:writePkcs1};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var pkcs8=require("./pkcs8");var readECDSACurve=pkcs8.readECDSACurve;function read(buf,options){return pem.read(buf,options,"pkcs1")}function write(key,options){return pem.write(key,options,"pkcs1")}function readMPInt(der,nm){assert.strictEqual(der.peek(),asn1.Ber.Integer,nm+" is not an Integer");return utils.mpNormalize(der.readString(asn1.Ber.Integer,true))}function readPkcs1(alg,type,der){switch(alg){case"RSA":if(type==="public")return readPkcs1RSAPublic(der);else if(type==="private")return readPkcs1RSAPrivate(der);throw new Error("Unknown key type: "+type);case"DSA":if(type==="public")return readPkcs1DSAPublic(der);else if(type==="private")return readPkcs1DSAPrivate(der);throw new Error("Unknown key type: "+type);case"EC":case"ECDSA":if(type==="private")return readPkcs1ECDSAPrivate(der);else if(type==="public")return readPkcs1ECDSAPublic(der);throw new Error("Unknown key type: "+type);case"EDDSA":case"EdDSA":if(type==="private")return readPkcs1EdDSAPrivate(der);throw new Error(type+" keys not supported with EdDSA");default:throw new Error("Unknown key algo: "+alg)}}function readPkcs1RSAPublic(der){var n=readMPInt(der,"modulus");var e=readMPInt(der,"exponent");var key={type:"rsa",parts:[{name:"e",data:e},{name:"n",data:n}]};return new Key(key)}function readPkcs1RSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version[0],0);var n=readMPInt(der,"modulus");var e=readMPInt(der,"public exponent");var d=readMPInt(der,"private exponent");var p=readMPInt(der,"prime1");var q=readMPInt(der,"prime2");var dmodp=readMPInt(der,"exponent1");var dmodq=readMPInt(der,"exponent2");var iqmp=readMPInt(der,"iqmp");var key={type:"rsa",parts:[{name:"n",data:n},{name:"e",data:e},{name:"d",data:d},{name:"iqmp",data:iqmp},{name:"p",data:p},{name:"q",data:q},{name:"dmodp",data:dmodp},{name:"dmodq",data:dmodq}]};return new PrivateKey(key)}function readPkcs1DSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version.readUInt8(0),0);var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");var y=readMPInt(der,"y");var x=readMPInt(der,"x");var key={type:"dsa",parts:[{name:"p",data:p},{name:"q",data:q},{name:"g",data:g},{name:"y",data:y},{name:"x",data:x}]};return new PrivateKey(key)}function readPkcs1EdDSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version.readUInt8(0),1);var k=der.readString(asn1.Ber.OctetString,true);der.readSequence(160);var oid=der.readOID();assert.strictEqual(oid,"1.3.101.112","the ed25519 curve identifier");der.readSequence(161);var A=utils.readBitString(der);var key={type:"ed25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)},{name:"k",data:k}]};return new PrivateKey(key)}function readPkcs1DSAPublic(der){var y=readMPInt(der,"y");var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");var key={type:"dsa",parts:[{name:"y",data:y},{name:"p",data:p},{name:"q",data:q},{name:"g",data:g}]};return new Key(key)}function readPkcs1ECDSAPublic(der){der.readSequence();var oid=der.readOID();assert.strictEqual(oid,"1.2.840.10045.2.1","must be ecPublicKey");var curveOid=der.readOID();var curve;var curves=Object.keys(algs.curves);for(var j=0;j<curves.length;++j){var c=curves[j];var cd=algs.curves[c];if(cd.pkcs8oid===curveOid){curve=c;break}}assert.string(curve,"a known ECDSA named curve");var Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q);var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curve)},{name:"Q",data:Q}]};return new Key(key)}function readPkcs1ECDSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version.readUInt8(0),1);var d=der.readString(asn1.Ber.OctetString,true);der.readSequence(160);var curve=readECDSACurve(der);assert.string(curve,"a known elliptic curve");der.readSequence(161);var Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q);var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curve)},{name:"Q",data:Q},{name:"d",data:d}]};return new PrivateKey(key)}function writePkcs1(der,key){der.startSequence();switch(key.type){case"rsa":if(PrivateKey.isPrivateKey(key))writePkcs1RSAPrivate(der,key);else writePkcs1RSAPublic(der,key);break;case"dsa":if(PrivateKey.isPrivateKey(key))writePkcs1DSAPrivate(der,key);else writePkcs1DSAPublic(der,key);break;case"ecdsa":if(PrivateKey.isPrivateKey(key))writePkcs1ECDSAPrivate(der,key);else writePkcs1ECDSAPublic(der,key);break;case"ed25519":if(PrivateKey.isPrivateKey(key))writePkcs1EdDSAPrivate(der,key);else writePkcs1EdDSAPublic(der,key);break;default:throw new Error("Unknown key algo: "+key.type)}der.endSequence()}function writePkcs1RSAPublic(der,key){der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer)}function writePkcs1RSAPrivate(der,key){var ver=Buffer.from([0]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);if(!key.part.dmodp||!key.part.dmodq)utils.addRSAMissing(key);der.writeBuffer(key.part.dmodp.data,asn1.Ber.Integer);der.writeBuffer(key.part.dmodq.data,asn1.Ber.Integer);der.writeBuffer(key.part.iqmp.data,asn1.Ber.Integer)}function writePkcs1DSAPrivate(der,key){var ver=Buffer.from([0]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer);der.writeBuffer(key.part.y.data,asn1.Ber.Integer);der.writeBuffer(key.part.x.data,asn1.Ber.Integer)}function writePkcs1DSAPublic(der,key){der.writeBuffer(key.part.y.data,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer)}function writePkcs1ECDSAPublic(der,key){der.startSequence();der.writeOID("1.2.840.10045.2.1");var curve=key.part.curve.data.toString();var curveOid=algs.curves[curve].pkcs8oid;assert.string(curveOid,"a known ECDSA named curve");der.writeOID(curveOid);der.endSequence();var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString)}function writePkcs1ECDSAPrivate(der,key){var ver=Buffer.from([1]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.OctetString);der.startSequence(160);var curve=key.part.curve.data.toString();var curveOid=algs.curves[curve].pkcs8oid;assert.string(curveOid,"a known ECDSA named curve");der.writeOID(curveOid);der.endSequence();der.startSequence(161);var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString);der.endSequence()}function writePkcs1EdDSAPrivate(der,key){var ver=Buffer.from([1]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.k.data,asn1.Ber.OctetString);der.startSequence(160);der.writeOID("1.3.101.112");der.endSequence();der.startSequence(161);utils.writeBitString(der,key.part.A.data);der.endSequence()}function writePkcs1EdDSAPublic(der,key){throw new Error("Public keys are not supported for EdDSA PKCS#1")}},{"../algs":471,"../key":491,"../private-key":492,"../utils":495,"./pem":480,"./pkcs8":482,asn1:386,"assert-plus":387,"safer-buffer":470}],482:[function(require,module,exports){module.exports={read:read,readPkcs8:readPkcs8,write:write,writePkcs8:writePkcs8,pkcs8ToBuffer:pkcs8ToBuffer,readECDSACurve:readECDSACurve,writeECDSACurve:writeECDSACurve};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");function read(buf,options){return pem.read(buf,options,"pkcs8")}function write(key,options){return pem.write(key,options,"pkcs8")}function readMPInt(der,nm){assert.strictEqual(der.peek(),asn1.Ber.Integer,nm+" is not an Integer");return utils.mpNormalize(der.readString(asn1.Ber.Integer,true))}function readPkcs8(alg,type,der){if(der.peek()===asn1.Ber.Integer){assert.strictEqual(type,"private","unexpected Integer at start of public key");der.readString(asn1.Ber.Integer,true)}der.readSequence();var next=der.offset+der.length;var oid=der.readOID();switch(oid){case"1.2.840.113549.1.1.1":der._offset=next;if(type==="public")return readPkcs8RSAPublic(der);else return readPkcs8RSAPrivate(der);case"1.2.840.10040.4.1":if(type==="public")return readPkcs8DSAPublic(der);else return readPkcs8DSAPrivate(der);case"1.2.840.10045.2.1":if(type==="public")return readPkcs8ECDSAPublic(der);else return readPkcs8ECDSAPrivate(der);case"1.3.101.112":if(type==="public"){return readPkcs8EdDSAPublic(der)}else{return readPkcs8EdDSAPrivate(der)}case"1.3.101.110":if(type==="public"){return readPkcs8X25519Public(der)}else{return readPkcs8X25519Private(der)}default:throw new Error("Unknown key type OID "+oid)}}function readPkcs8RSAPublic(der){der.readSequence(asn1.Ber.BitString);der.readByte();der.readSequence();var n=readMPInt(der,"modulus");var e=readMPInt(der,"exponent");var key={type:"rsa",source:der.originalInput,parts:[{name:"e",data:e},{name:"n",data:n}]};return new Key(key)}function readPkcs8RSAPrivate(der){der.readSequence(asn1.Ber.OctetString);der.readSequence();var ver=readMPInt(der,"version");assert.equal(ver[0],0,"unknown RSA private key version");var n=readMPInt(der,"modulus");var e=readMPInt(der,"public exponent");var d=readMPInt(der,"private exponent");var p=readMPInt(der,"prime1");var q=readMPInt(der,"prime2");var dmodp=readMPInt(der,"exponent1");var dmodq=readMPInt(der,"exponent2");var iqmp=readMPInt(der,"iqmp");var key={type:"rsa",parts:[{name:"n",data:n},{name:"e",data:e},{name:"d",data:d},{name:"iqmp",data:iqmp},{name:"p",data:p},{name:"q",data:q},{name:"dmodp",data:dmodp},{name:"dmodq",data:dmodq}]};return new PrivateKey(key)}function readPkcs8DSAPublic(der){der.readSequence();var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");der.readSequence(asn1.Ber.BitString);der.readByte();var y=readMPInt(der,"y");var key={type:"dsa",parts:[{name:"p",data:p},{name:"q",data:q},{name:"g",data:g},{name:"y",data:y}]};return new Key(key)}function readPkcs8DSAPrivate(der){der.readSequence();var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");der.readSequence(asn1.Ber.OctetString);var x=readMPInt(der,"x");var y=utils.calculateDSAPublic(g,p,x);var key={type:"dsa",parts:[{name:"p",data:p},{name:"q",data:q},{name:"g",data:g},{name:"y",data:y},{name:"x",data:x}]};return new PrivateKey(key)}function readECDSACurve(der){var curveName,curveNames;var j,c,cd;if(der.peek()===asn1.Ber.OID){var oid=der.readOID();curveNames=Object.keys(algs.curves);for(j=0;j<curveNames.length;++j){c=curveNames[j];cd=algs.curves[c];if(cd.pkcs8oid===oid){curveName=c;break}}}else{der.readSequence();var version=der.readString(asn1.Ber.Integer,true);assert.strictEqual(version[0],1,"ECDSA key not version 1");var curve={};der.readSequence();var fieldTypeOid=der.readOID();assert.strictEqual(fieldTypeOid,"1.2.840.10045.1.1","ECDSA key is not from a prime-field");var p=curve.p=utils.mpNormalize(der.readString(asn1.Ber.Integer,true));curve.size=p.length*8-utils.countZeros(p);der.readSequence();curve.a=utils.mpNormalize(der.readString(asn1.Ber.OctetString,true));curve.b=utils.mpNormalize(der.readString(asn1.Ber.OctetString,true));if(der.peek()===asn1.Ber.BitString)curve.s=der.readString(asn1.Ber.BitString,true);curve.G=der.readString(asn1.Ber.OctetString,true);assert.strictEqual(curve.G[0],4,"uncompressed G is required");curve.n=utils.mpNormalize(der.readString(asn1.Ber.Integer,true));curve.h=utils.mpNormalize(der.readString(asn1.Ber.Integer,true));assert.strictEqual(curve.h[0],1,"a cofactor=1 curve is "+"required");curveNames=Object.keys(algs.curves);var ks=Object.keys(curve);for(j=0;j<curveNames.length;++j){c=curveNames[j];cd=algs.curves[c];var equal=true;for(var i=0;i<ks.length;++i){var k=ks[i];if(cd[k]===undefined)continue;if(typeof cd[k]==="object"&&cd[k].equals!==undefined){if(!cd[k].equals(curve[k])){equal=false;break}}else if(Buffer.isBuffer(cd[k])){if(cd[k].toString("binary")!==curve[k].toString("binary")){equal=false;break}}else{if(cd[k]!==curve[k]){equal=false;break}}}if(equal){curveName=c;break}}}return curveName}function readPkcs8ECDSAPrivate(der){var curveName=readECDSACurve(der);assert.string(curveName,"a known elliptic curve");der.readSequence(asn1.Ber.OctetString);der.readSequence();var version=readMPInt(der,"version");assert.equal(version[0],1,"unknown version of ECDSA key");var d=der.readString(asn1.Ber.OctetString,true);var Q;if(der.peek()==160){der.readSequence(160);der._offset+=der.length}if(der.peek()==161){der.readSequence(161);Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q)}if(Q===undefined){var pub=utils.publicFromPrivateECDSA(curveName,d);Q=pub.part.Q.data}var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curveName)},{name:"Q",data:Q},{name:"d",data:d}]};return new PrivateKey(key)}function readPkcs8ECDSAPublic(der){var curveName=readECDSACurve(der);assert.string(curveName,"a known elliptic curve");var Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q);var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curveName)},{name:"Q",data:Q}]};return new Key(key)}function readPkcs8EdDSAPublic(der){if(der.peek()===0)der.readByte();var A=utils.readBitString(der);var key={type:"ed25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)}]};return new Key(key)}function readPkcs8X25519Public(der){var A=utils.readBitString(der);var key={type:"curve25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)}]};return new Key(key)}function readPkcs8EdDSAPrivate(der){if(der.peek()===0)der.readByte();der.readSequence(asn1.Ber.OctetString);var k=der.readString(asn1.Ber.OctetString,true);k=utils.zeroPadToLength(k,32);var A;if(der.peek()===asn1.Ber.BitString){A=utils.readBitString(der);A=utils.zeroPadToLength(A,32)}else{A=utils.calculateED25519Public(k)}var key={type:"ed25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)},{name:"k",data:utils.zeroPadToLength(k,32)}]};return new PrivateKey(key)}function readPkcs8X25519Private(der){if(der.peek()===0)der.readByte();der.readSequence(asn1.Ber.OctetString);var k=der.readString(asn1.Ber.OctetString,true);k=utils.zeroPadToLength(k,32);var A=utils.calculateX25519Public(k);var key={type:"curve25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)},{name:"k",data:utils.zeroPadToLength(k,32)}]};return new PrivateKey(key)}function pkcs8ToBuffer(key){var der=new asn1.BerWriter;writePkcs8(der,key);return der.buffer}function writePkcs8(der,key){der.startSequence();if(PrivateKey.isPrivateKey(key)){var sillyInt=Buffer.from([0]);der.writeBuffer(sillyInt,asn1.Ber.Integer)}der.startSequence();switch(key.type){case"rsa":der.writeOID("1.2.840.113549.1.1.1");if(PrivateKey.isPrivateKey(key))writePkcs8RSAPrivate(key,der);else writePkcs8RSAPublic(key,der);break;case"dsa":der.writeOID("1.2.840.10040.4.1");if(PrivateKey.isPrivateKey(key))writePkcs8DSAPrivate(key,der);else writePkcs8DSAPublic(key,der);break;case"ecdsa":der.writeOID("1.2.840.10045.2.1");if(PrivateKey.isPrivateKey(key))writePkcs8ECDSAPrivate(key,der);else writePkcs8ECDSAPublic(key,der);break;case"ed25519":der.writeOID("1.3.101.112");if(PrivateKey.isPrivateKey(key))throw new Error("Ed25519 private keys in pkcs8 "+"format are not supported");writePkcs8EdDSAPublic(key,der);break;default:throw new Error("Unsupported key type: "+key.type)}der.endSequence()}function writePkcs8RSAPrivate(key,der){der.writeNull();der.endSequence();der.startSequence(asn1.Ber.OctetString);der.startSequence();var version=Buffer.from([0]);der.writeBuffer(version,asn1.Ber.Integer);der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);if(!key.part.dmodp||!key.part.dmodq)utils.addRSAMissing(key);der.writeBuffer(key.part.dmodp.data,asn1.Ber.Integer);der.writeBuffer(key.part.dmodq.data,asn1.Ber.Integer);der.writeBuffer(key.part.iqmp.data,asn1.Ber.Integer);der.endSequence();der.endSequence()}function writePkcs8RSAPublic(key,der){der.writeNull();der.endSequence();der.startSequence(asn1.Ber.BitString);der.writeByte(0);der.startSequence();der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer);der.endSequence();der.endSequence()}function writePkcs8DSAPrivate(key,der){der.startSequence();der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer);der.endSequence();der.endSequence();der.startSequence(asn1.Ber.OctetString);der.writeBuffer(key.part.x.data,asn1.Ber.Integer);der.endSequence()}function writePkcs8DSAPublic(key,der){der.startSequence();der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer);der.endSequence();der.endSequence();der.startSequence(asn1.Ber.BitString);der.writeByte(0);der.writeBuffer(key.part.y.data,asn1.Ber.Integer);der.endSequence()}function writeECDSACurve(key,der){var curve=algs.curves[key.curve];if(curve.pkcs8oid){der.writeOID(curve.pkcs8oid)}else{der.startSequence();var version=Buffer.from([1]);der.writeBuffer(version,asn1.Ber.Integer);der.startSequence();der.writeOID("1.2.840.10045.1.1");der.writeBuffer(curve.p,asn1.Ber.Integer);der.endSequence();der.startSequence();var a=curve.p;if(a[0]===0)a=a.slice(1);der.writeBuffer(a,asn1.Ber.OctetString);der.writeBuffer(curve.b,asn1.Ber.OctetString);der.writeBuffer(curve.s,asn1.Ber.BitString);der.endSequence();der.writeBuffer(curve.G,asn1.Ber.OctetString);der.writeBuffer(curve.n,asn1.Ber.Integer);var h=curve.h;if(!h){h=Buffer.from([1])}der.writeBuffer(h,asn1.Ber.Integer);der.endSequence()}}function writePkcs8ECDSAPublic(key,der){writeECDSACurve(key,der);der.endSequence();var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString)}function writePkcs8ECDSAPrivate(key,der){writeECDSACurve(key,der);der.endSequence();der.startSequence(asn1.Ber.OctetString);der.startSequence();var version=Buffer.from([1]);der.writeBuffer(version,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.OctetString);der.startSequence(161);var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString);der.endSequence();der.endSequence();der.endSequence()}function writePkcs8EdDSAPublic(key,der){der.endSequence();utils.writeBitString(der,key.part.A.data)}function writePkcs8EdDSAPrivate(key,der){der.endSequence();var k=utils.mpNormalize(key.part.k.data,true);der.startSequence(asn1.Ber.OctetString);der.writeBuffer(k,asn1.Ber.OctetString);der.endSequence()}},{"../algs":471,"../key":491,"../private-key":492,"../utils":495,"./pem":480,asn1:386,"assert-plus":387,"safer-buffer":470}],483:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var rfc4253=require("./rfc4253");var Key=require("../key");var errors=require("../errors");function read(buf,options){var lines=buf.toString("ascii").split(/[\r\n]+/);var found=false;var parts;var si=0;while(si<lines.length){parts=splitHeader(lines[si++]);if(parts&&parts[0].toLowerCase()==="putty-user-key-file-2"){found=true;break}}if(!found){throw new Error("No PuTTY format first line found")}var alg=parts[1];parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"encryption");parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"comment");var comment=parts[1];parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"public-lines");var publicLines=parseInt(parts[1],10);if(!isFinite(publicLines)||publicLines<0||publicLines>lines.length){throw new Error("Invalid public-lines count")}var publicBuf=Buffer.from(lines.slice(si,si+publicLines).join(""),"base64");var keyType=rfc4253.algToKeyType(alg);var key=rfc4253.read(publicBuf);if(key.type!==keyType){throw new Error("Outer key algorithm mismatch")}key.comment=comment;return key}function splitHeader(line){var idx=line.indexOf(":");if(idx===-1)return null;var header=line.slice(0,idx);++idx;while(line[idx]===" ")++idx;var rest=line.slice(idx);return[header,rest]}function write(key,options){assert.object(key);if(!Key.isKey(key))throw new Error("Must be a public key");var alg=rfc4253.keyTypeToAlg(key);var buf=rfc4253.write(key);var comment=key.comment||"";var b64=buf.toString("base64");var lines=wrap(b64,64);lines.unshift("Public-Lines: "+lines.length);lines.unshift("Comment: "+comment);lines.unshift("Encryption: none");lines.unshift("PuTTY-User-Key-File-2: "+alg);return Buffer.from(lines.join("\n")+"\n")}function wrap(txt,len){var lines=[];var pos=0;while(pos<txt.length){lines.push(txt.slice(pos,pos+64));pos+=64}return lines}},{"../errors":475,"../key":491,"./rfc4253":484,"assert-plus":387,"safer-buffer":470}],484:[function(require,module,exports){module.exports={read:read.bind(undefined,false,undefined),readType:read.bind(undefined,false),write:write,readPartial:read.bind(undefined,true),readInternal:read,keyTypeToAlg:keyTypeToAlg,algToKeyType:algToKeyType};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var SSHBuffer=require("../ssh-buffer");function algToKeyType(alg){assert.string(alg);if(alg==="ssh-dss")return"dsa";else if(alg==="ssh-rsa")return"rsa";else if(alg==="ssh-ed25519")return"ed25519";else if(alg==="ssh-curve25519")return"curve25519";else if(alg.match(/^ecdsa-sha2-/))return"ecdsa";else throw new Error("Unknown algorithm "+alg)}function keyTypeToAlg(key){assert.object(key);if(key.type==="dsa")return"ssh-dss";else if(key.type==="rsa")return"ssh-rsa";else if(key.type==="ed25519")return"ssh-ed25519";else if(key.type==="curve25519")return"ssh-curve25519";else if(key.type==="ecdsa")return"ecdsa-sha2-"+key.part.curve.data.toString();else throw new Error("Unknown key type "+key.type)}function read(partial,type,buf,options){if(typeof buf==="string")buf=Buffer.from(buf);assert.buffer(buf,"buf");var key={};var parts=key.parts=[];var sshbuf=new SSHBuffer({buffer:buf});var alg=sshbuf.readString();assert.ok(!sshbuf.atEnd(),"key must have at least one part");key.type=algToKeyType(alg);var partCount=algs.info[key.type].parts.length;if(type&&type==="private")partCount=algs.privInfo[key.type].parts.length;while(!sshbuf.atEnd()&&parts.length<partCount)parts.push(sshbuf.readPart());while(!partial&&!sshbuf.atEnd())parts.push(sshbuf.readPart());assert.ok(parts.length>=1,"key must have at least one part");assert.ok(partial||sshbuf.atEnd(),"leftover bytes at end of key");var Constructor=Key;var algInfo=algs.info[key.type];if(type==="private"||algInfo.parts.length!==parts.length){algInfo=algs.privInfo[key.type];Constructor=PrivateKey}assert.strictEqual(algInfo.parts.length,parts.length);if(key.type==="ecdsa"){var res=/^ecdsa-sha2-(.+)$/.exec(alg);assert.ok(res!==null);assert.strictEqual(res[1],parts[0].data.toString())}var normalized=true;for(var i=0;i<algInfo.parts.length;++i){var p=parts[i];p.name=algInfo.parts[i];if(key.type==="ed25519"&&p.name==="k")p.data=p.data.slice(0,32);if(p.name!=="curve"&&algInfo.normalize!==false){var nd;if(key.type==="ed25519"){nd=utils.zeroPadToLength(p.data,32)}else{nd=utils.mpNormalize(p.data)}if(nd.toString("binary")!==p.data.toString("binary")){p.data=nd;normalized=false}}}if(normalized)key._rfc4253Cache=sshbuf.toBuffer();if(partial&&typeof partial==="object"){partial.remainder=sshbuf.remainder();partial.consumed=sshbuf._offset}return new Constructor(key)}function write(key,options){assert.object(key);var alg=keyTypeToAlg(key);var i;var algInfo=algs.info[key.type];if(PrivateKey.isPrivateKey(key))algInfo=algs.privInfo[key.type];var parts=algInfo.parts;var buf=new SSHBuffer({});buf.writeString(alg);for(i=0;i<parts.length;++i){var data=key.part[parts[i]].data;if(algInfo.normalize!==false){if(key.type==="ed25519")data=utils.zeroPadToLength(data,32);else data=utils.mpNormalize(data)}if(key.type==="ed25519"&&parts[i]==="k")data=Buffer.concat([data,key.part.A.data]);buf.writeBuffer(data)}return buf.toBuffer()}},{"../algs":471,"../key":491,"../private-key":492,"../ssh-buffer":494,"../utils":495,"assert-plus":387,"safer-buffer":470}],485:[function(require,module,exports){module.exports={read:read,readSSHPrivate:readSSHPrivate,write:write};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var crypto=require("crypto");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var rfc4253=require("./rfc4253");var SSHBuffer=require("../ssh-buffer");var errors=require("../errors");var bcrypt;function read(buf,options){return pem.read(buf,options)}var MAGIC="openssh-key-v1";function readSSHPrivate(type,buf,options){buf=new SSHBuffer({buffer:buf});var magic=buf.readCString();assert.strictEqual(magic,MAGIC,"bad magic string");var cipher=buf.readString();var kdf=buf.readString();var kdfOpts=buf.readBuffer();var nkeys=buf.readInt();if(nkeys!==1){throw new Error("OpenSSH-format key file contains "+"multiple keys: this is unsupported.")}var pubKey=buf.readBuffer();if(type==="public"){assert.ok(buf.atEnd(),"excess bytes left after key");return rfc4253.read(pubKey)}var privKeyBlob=buf.readBuffer();assert.ok(buf.atEnd(),"excess bytes left after key");var kdfOptsBuf=new SSHBuffer({buffer:kdfOpts});switch(kdf){case"none":if(cipher!=="none"){throw new Error('OpenSSH-format key uses KDF "none" '+'but specifies a cipher other than "none"')}break;case"bcrypt":var salt=kdfOptsBuf.readBuffer();var rounds=kdfOptsBuf.readInt();var cinf=utils.opensshCipherInfo(cipher);if(bcrypt===undefined){bcrypt=require("bcrypt-pbkdf")}if(typeof options.passphrase==="string"){options.passphrase=Buffer.from(options.passphrase,"utf-8")}if(!Buffer.isBuffer(options.passphrase)){throw new errors.KeyEncryptedError(options.filename,"OpenSSH")}var pass=new Uint8Array(options.passphrase);var salti=new Uint8Array(salt);var out=new Uint8Array(cinf.keySize+cinf.blockSize);var res=bcrypt.pbkdf(pass,pass.length,salti,salti.length,out,out.length,rounds);if(res!==0){throw new Error("bcrypt_pbkdf function returned "+"failure, parameters invalid")}out=Buffer.from(out);var ckey=out.slice(0,cinf.keySize);var iv=out.slice(cinf.keySize,cinf.keySize+cinf.blockSize);var cipherStream=crypto.createDecipheriv(cinf.opensslName,ckey,iv);cipherStream.setAutoPadding(false);var chunk,chunks=[];cipherStream.once("error",function(e){if(e.toString().indexOf("bad decrypt")!==-1){throw new Error("Incorrect passphrase "+"supplied, could not decrypt key")}throw e});cipherStream.write(privKeyBlob);cipherStream.end();while((chunk=cipherStream.read())!==null)chunks.push(chunk);privKeyBlob=Buffer.concat(chunks);break;default:throw new Error('OpenSSH-format key uses unknown KDF "'+kdf+'"')}buf=new SSHBuffer({buffer:privKeyBlob});var checkInt1=buf.readInt();var checkInt2=buf.readInt()
|
|
54
|
-
;if(checkInt1!==checkInt2){throw new Error("Incorrect passphrase supplied, could not "+"decrypt key")}var ret={};var key=rfc4253.readInternal(ret,"private",buf.remainder());buf.skip(ret.consumed);var comment=buf.readString();key.comment=comment;return key}function write(key,options){var pubKey;if(PrivateKey.isPrivateKey(key))pubKey=key.toPublic();else pubKey=key;var cipher="none";var kdf="none";var kdfopts=Buffer.alloc(0);var cinf={blockSize:8};var passphrase;if(options!==undefined){passphrase=options.passphrase;if(typeof passphrase==="string")passphrase=Buffer.from(passphrase,"utf-8");if(passphrase!==undefined){assert.buffer(passphrase,"options.passphrase");assert.optionalString(options.cipher,"options.cipher");cipher=options.cipher;if(cipher===undefined)cipher="aes128-ctr";cinf=utils.opensshCipherInfo(cipher);kdf="bcrypt"}}var privBuf;if(PrivateKey.isPrivateKey(key)){privBuf=new SSHBuffer({});var checkInt=crypto.randomBytes(4).readUInt32BE(0);privBuf.writeInt(checkInt);privBuf.writeInt(checkInt);privBuf.write(key.toBuffer("rfc4253"));privBuf.writeString(key.comment||"");var n=1;while(privBuf._offset%cinf.blockSize!==0)privBuf.writeChar(n++);privBuf=privBuf.toBuffer()}switch(kdf){case"none":break;case"bcrypt":var salt=crypto.randomBytes(16);var rounds=16;var kdfssh=new SSHBuffer({});kdfssh.writeBuffer(salt);kdfssh.writeInt(rounds);kdfopts=kdfssh.toBuffer();if(bcrypt===undefined){bcrypt=require("bcrypt-pbkdf")}var pass=new Uint8Array(passphrase);var salti=new Uint8Array(salt);var out=new Uint8Array(cinf.keySize+cinf.blockSize);var res=bcrypt.pbkdf(pass,pass.length,salti,salti.length,out,out.length,rounds);if(res!==0){throw new Error("bcrypt_pbkdf function returned "+"failure, parameters invalid")}out=Buffer.from(out);var ckey=out.slice(0,cinf.keySize);var iv=out.slice(cinf.keySize,cinf.keySize+cinf.blockSize);var cipherStream=crypto.createCipheriv(cinf.opensslName,ckey,iv);cipherStream.setAutoPadding(false);var chunk,chunks=[];cipherStream.once("error",function(e){throw e});cipherStream.write(privBuf);cipherStream.end();while((chunk=cipherStream.read())!==null)chunks.push(chunk);privBuf=Buffer.concat(chunks);break;default:throw new Error("Unsupported kdf "+kdf)}var buf=new SSHBuffer({});buf.writeCString(MAGIC);buf.writeString(cipher);buf.writeString(kdf);buf.writeBuffer(kdfopts);buf.writeInt(1);buf.writeBuffer(pubKey.toBuffer("rfc4253"));if(privBuf)buf.writeBuffer(privBuf);buf=buf.toBuffer();var header;if(PrivateKey.isPrivateKey(key))header="OPENSSH PRIVATE KEY";else header="OPENSSH PUBLIC KEY";var tmp=buf.toString("base64");var len=tmp.length+tmp.length/70+18+16+header.length*2+10;buf=Buffer.alloc(len);var o=0;o+=buf.write("-----BEGIN "+header+"-----\n",o);for(var i=0;i<tmp.length;){var limit=i+70;if(limit>tmp.length)limit=tmp.length;o+=buf.write(tmp.slice(i,limit),o);buf[o++]=10;i=limit}o+=buf.write("-----END "+header+"-----\n",o);return buf.slice(0,o)}},{"../algs":471,"../errors":475,"../key":491,"../private-key":492,"../ssh-buffer":494,"../utils":495,"./pem":480,"./rfc4253":484,asn1:386,"assert-plus":387,"bcrypt-pbkdf":391,crypto:81,"safer-buffer":470}],486:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var rfc4253=require("./rfc4253");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var sshpriv=require("./ssh-private");var SSHKEY_RE=/^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/;var SSHKEY_RE2=/^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/;function read(buf,options){if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var trimmed=buf.trim().replace(/[\\\r]/g,"");var m=trimmed.match(SSHKEY_RE);if(!m)m=trimmed.match(SSHKEY_RE2);assert.ok(m,"key must match regex");var type=rfc4253.algToKeyType(m[1]);var kbuf=Buffer.from(m[2],"base64");var key;var ret={};if(m[4]){try{key=rfc4253.read(kbuf)}catch(e){m=trimmed.match(SSHKEY_RE2);assert.ok(m,"key must match regex");kbuf=Buffer.from(m[2],"base64");key=rfc4253.readInternal(ret,"public",kbuf)}}else{key=rfc4253.readInternal(ret,"public",kbuf)}assert.strictEqual(type,key.type);if(m[4]&&m[4].length>0){key.comment=m[4]}else if(ret.consumed){var data=m[2]+(m[3]?m[3]:"");var realOffset=Math.ceil(ret.consumed/3)*4;data=data.slice(0,realOffset-2).replace(/[^a-zA-Z0-9+\/=]/g,"")+data.slice(realOffset-2);var padding=ret.consumed%3;if(padding>0&&data.slice(realOffset-1,realOffset)!=="=")realOffset--;while(data.slice(realOffset,realOffset+1)==="=")realOffset++;var trailer=data.slice(realOffset);trailer=trailer.replace(/[\r\n]/g," ").replace(/^\s+/,"");if(trailer.match(/^[a-zA-Z0-9]/))key.comment=trailer}return key}function write(key,options){assert.object(key);if(!Key.isKey(key))throw new Error("Must be a public key");var parts=[];var alg=rfc4253.keyTypeToAlg(key);parts.push(alg);var buf=rfc4253.write(key);parts.push(buf.toString("base64"));if(key.comment)parts.push(key.comment);return Buffer.from(parts.join(" "))}},{"../key":491,"../private-key":492,"../utils":495,"./rfc4253":484,"./ssh-private":485,"assert-plus":387,"safer-buffer":470}],487:[function(require,module,exports){var x509=require("./x509");module.exports={read:read,verify:x509.verify,sign:x509.sign,write:write};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var Identity=require("../identity");var Signature=require("../signature");var Certificate=require("../certificate");function read(buf,options){if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var lines=buf.trim().split(/[\r\n]+/g);var m;var si=-1;while(!m&&si<lines.length){m=lines[++si].match(/[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/)}assert.ok(m,"invalid PEM header");var m2;var ei=lines.length;while(!m2&&ei>0){m2=lines[--ei].match(/[-]+[ ]*END CERTIFICATE[ ]*[-]+/)}assert.ok(m2,"invalid PEM footer");lines=lines.slice(si,ei+1);var headers={};while(true){lines=lines.slice(1);m=lines[0].match(/^([A-Za-z0-9-]+): (.+)$/);if(!m)break;headers[m[1].toLowerCase()]=m[2]}lines=lines.slice(0,-1).join("");buf=Buffer.from(lines,"base64");return x509.read(buf,options)}function write(cert,options){var dbuf=x509.write(cert,options);var header="CERTIFICATE";var tmp=dbuf.toString("base64");var len=tmp.length+tmp.length/64+18+16+header.length*2+10;var buf=Buffer.alloc(len);var o=0;o+=buf.write("-----BEGIN "+header+"-----\n",o);for(var i=0;i<tmp.length;){var limit=i+64;if(limit>tmp.length)limit=tmp.length;o+=buf.write(tmp.slice(i,limit),o);buf[o++]=10;i=limit}o+=buf.write("-----END "+header+"-----\n",o);return buf.slice(0,o)}},{"../algs":471,"../certificate":472,"../identity":489,"../key":491,"../private-key":492,"../signature":493,"../utils":495,"./pem":480,"./x509":488,asn1:386,"assert-plus":387,"safer-buffer":470}],488:[function(require,module,exports){module.exports={read:read,verify:verify,sign:sign,signAsync:signAsync,write:write};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var Identity=require("../identity");var Signature=require("../signature");var Certificate=require("../certificate");var pkcs8=require("./pkcs8");function readMPInt(der,nm){assert.strictEqual(der.peek(),asn1.Ber.Integer,nm+" is not an Integer");return utils.mpNormalize(der.readString(asn1.Ber.Integer,true))}function verify(cert,key){var sig=cert.signatures.x509;assert.object(sig,"x509 signature");var algParts=sig.algo.split("-");if(algParts[0]!==key.type)return false;var blob=sig.cache;if(blob===undefined){var der=new asn1.BerWriter;writeTBSCert(cert,der);blob=der.buffer}var verifier=key.createVerify(algParts[1]);verifier.write(blob);return verifier.verify(sig.signature)}function Local(i){return asn1.Ber.Context|asn1.Ber.Constructor|i}function Context(i){return asn1.Ber.Context|i}var SIGN_ALGS={"rsa-md5":"1.2.840.113549.1.1.4","rsa-sha1":"1.2.840.113549.1.1.5","rsa-sha256":"1.2.840.113549.1.1.11","rsa-sha384":"1.2.840.113549.1.1.12","rsa-sha512":"1.2.840.113549.1.1.13","dsa-sha1":"1.2.840.10040.4.3","dsa-sha256":"2.16.840.1.101.3.4.3.2","ecdsa-sha1":"1.2.840.10045.4.1","ecdsa-sha256":"1.2.840.10045.4.3.2","ecdsa-sha384":"1.2.840.10045.4.3.3","ecdsa-sha512":"1.2.840.10045.4.3.4","ed25519-sha512":"1.3.101.112"};Object.keys(SIGN_ALGS).forEach(function(k){SIGN_ALGS[SIGN_ALGS[k]]=k});SIGN_ALGS["1.3.14.3.2.3"]="rsa-md5";SIGN_ALGS["1.3.14.3.2.29"]="rsa-sha1";var EXTS={issuerKeyId:"2.5.29.35",altName:"2.5.29.17",basicConstraints:"2.5.29.19",keyUsage:"2.5.29.15",extKeyUsage:"2.5.29.37"};function read(buf,options){if(typeof buf==="string"){buf=Buffer.from(buf,"binary")}assert.buffer(buf,"buf");var der=new asn1.BerReader(buf);der.readSequence();if(Math.abs(der.length-der.remain)>1){throw new Error("DER sequence does not contain whole byte "+"stream")}var tbsStart=der.offset;der.readSequence();var sigOffset=der.offset+der.length;var tbsEnd=sigOffset;if(der.peek()===Local(0)){der.readSequence(Local(0));var version=der.readInt();assert.ok(version<=3,"only x.509 versions up to v3 supported")}var cert={};cert.signatures={};var sig=cert.signatures.x509={};sig.extras={};cert.serial=readMPInt(der,"serial");der.readSequence();var after=der.offset+der.length;var certAlgOid=der.readOID();var certAlg=SIGN_ALGS[certAlgOid];if(certAlg===undefined)throw new Error("unknown signature algorithm "+certAlgOid);der._offset=after;cert.issuer=Identity.parseAsn1(der);der.readSequence();cert.validFrom=readDate(der);cert.validUntil=readDate(der);cert.subjects=[Identity.parseAsn1(der)];der.readSequence();after=der.offset+der.length;cert.subjectKey=pkcs8.readPkcs8(undefined,"public",der);der._offset=after;if(der.peek()===Local(1)){der.readSequence(Local(1));sig.extras.issuerUniqueID=buf.slice(der.offset,der.offset+der.length);der._offset+=der.length}if(der.peek()===Local(2)){der.readSequence(Local(2));sig.extras.subjectUniqueID=buf.slice(der.offset,der.offset+der.length);der._offset+=der.length}if(der.peek()===Local(3)){der.readSequence(Local(3));var extEnd=der.offset+der.length;der.readSequence();while(der.offset<extEnd)readExtension(cert,buf,der);assert.strictEqual(der.offset,extEnd)}assert.strictEqual(der.offset,sigOffset);der.readSequence();after=der.offset+der.length;var sigAlgOid=der.readOID();var sigAlg=SIGN_ALGS[sigAlgOid];if(sigAlg===undefined)throw new Error("unknown signature algorithm "+sigAlgOid);der._offset=after;var sigData=der.readString(asn1.Ber.BitString,true);if(sigData[0]===0)sigData=sigData.slice(1);var algParts=sigAlg.split("-");sig.signature=Signature.parse(sigData,algParts[0],"asn1");sig.signature.hashAlgorithm=algParts[1];sig.algo=sigAlg;sig.cache=buf.slice(tbsStart,tbsEnd);return new Certificate(cert)}function readDate(der){if(der.peek()===asn1.Ber.UTCTime){return utcTimeToDate(der.readString(asn1.Ber.UTCTime))}else if(der.peek()===asn1.Ber.GeneralizedTime){return gTimeToDate(der.readString(asn1.Ber.GeneralizedTime))}else{throw new Error("Unsupported date format")}}function writeDate(der,date){if(date.getUTCFullYear()>=2050||date.getUTCFullYear()<1950){der.writeString(dateToGTime(date),asn1.Ber.GeneralizedTime)}else{der.writeString(dateToUTCTime(date),asn1.Ber.UTCTime)}}var ALTNAME={OtherName:Local(0),RFC822Name:Context(1),DNSName:Context(2),X400Address:Local(3),DirectoryName:Local(4),EDIPartyName:Local(5),URI:Context(6),IPAddress:Context(7),OID:Context(8)};var EXTPURPOSE={serverAuth:"1.3.6.1.5.5.7.3.1",clientAuth:"1.3.6.1.5.5.7.3.2",codeSigning:"1.3.6.1.5.5.7.3.3",joyentDocker:"1.3.6.1.4.1.38678.1.4.1",joyentCmon:"1.3.6.1.4.1.38678.1.4.2"};var EXTPURPOSE_REV={};Object.keys(EXTPURPOSE).forEach(function(k){EXTPURPOSE_REV[EXTPURPOSE[k]]=k});var KEYUSEBITS=["signature","identity","keyEncryption","encryption","keyAgreement","ca","crl"];function readExtension(cert,buf,der){der.readSequence();var after=der.offset+der.length;var extId=der.readOID();var id;var sig=cert.signatures.x509;if(!sig.extras.exts)sig.extras.exts=[];var critical;if(der.peek()===asn1.Ber.Boolean)critical=der.readBoolean();switch(extId){case EXTS.basicConstraints:der.readSequence(asn1.Ber.OctetString);der.readSequence();var bcEnd=der.offset+der.length;var ca=false;if(der.peek()===asn1.Ber.Boolean)ca=der.readBoolean();if(cert.purposes===undefined)cert.purposes=[];if(ca===true)cert.purposes.push("ca");var bc={oid:extId,critical:critical};if(der.offset<bcEnd&&der.peek()===asn1.Ber.Integer)bc.pathLen=der.readInt();sig.extras.exts.push(bc);break;case EXTS.extKeyUsage:der.readSequence(asn1.Ber.OctetString);der.readSequence();if(cert.purposes===undefined)cert.purposes=[];var ekEnd=der.offset+der.length;while(der.offset<ekEnd){var oid=der.readOID();cert.purposes.push(EXTPURPOSE_REV[oid]||oid)}if(cert.purposes.indexOf("serverAuth")!==-1&&cert.purposes.indexOf("clientAuth")===-1){cert.subjects.forEach(function(ide){if(ide.type!=="host"){ide.type="host";ide.hostname=ide.uid||ide.email||ide.components[0].value}})}else if(cert.purposes.indexOf("clientAuth")!==-1&&cert.purposes.indexOf("serverAuth")===-1){cert.subjects.forEach(function(ide){if(ide.type!=="user"){ide.type="user";ide.uid=ide.hostname||ide.email||ide.components[0].value}})}sig.extras.exts.push({oid:extId,critical:critical});break;case EXTS.keyUsage:der.readSequence(asn1.Ber.OctetString);var bits=der.readString(asn1.Ber.BitString,true);var setBits=readBitField(bits,KEYUSEBITS);setBits.forEach(function(bit){if(cert.purposes===undefined)cert.purposes=[];if(cert.purposes.indexOf(bit)===-1)cert.purposes.push(bit)});sig.extras.exts.push({oid:extId,critical:critical,bits:bits});break;case EXTS.altName:der.readSequence(asn1.Ber.OctetString);der.readSequence();var aeEnd=der.offset+der.length;while(der.offset<aeEnd){switch(der.peek()){case ALTNAME.OtherName:case ALTNAME.EDIPartyName:der.readSequence();der._offset+=der.length;break;case ALTNAME.OID:der.readOID(ALTNAME.OID);break;case ALTNAME.RFC822Name:var email=der.readString(ALTNAME.RFC822Name);id=Identity.forEmail(email);if(!cert.subjects[0].equals(id))cert.subjects.push(id);break;case ALTNAME.DirectoryName:der.readSequence(ALTNAME.DirectoryName);id=Identity.parseAsn1(der);if(!cert.subjects[0].equals(id))cert.subjects.push(id);break;case ALTNAME.DNSName:var host=der.readString(ALTNAME.DNSName);id=Identity.forHost(host);if(!cert.subjects[0].equals(id))cert.subjects.push(id);break;default:der.readString(der.peek());break}}sig.extras.exts.push({oid:extId,critical:critical});break;default:sig.extras.exts.push({oid:extId,critical:critical,data:der.readString(asn1.Ber.OctetString,true)});break}der._offset=after}var UTCTIME_RE=/^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;function utcTimeToDate(t){var m=t.match(UTCTIME_RE);assert.ok(m,"timestamps must be in UTC");var d=new Date;var thisYear=d.getUTCFullYear();var century=Math.floor(thisYear/100)*100;var year=parseInt(m[1],10);if(thisYear%100<50&&year>=60)year+=century-1;else year+=century;d.setUTCFullYear(year,parseInt(m[2],10)-1,parseInt(m[3],10));d.setUTCHours(parseInt(m[4],10),parseInt(m[5],10));if(m[6]&&m[6].length>0)d.setUTCSeconds(parseInt(m[6],10));return d}var GTIME_RE=/^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;function gTimeToDate(t){var m=t.match(GTIME_RE);assert.ok(m);var d=new Date;d.setUTCFullYear(parseInt(m[1],10),parseInt(m[2],10)-1,parseInt(m[3],10));d.setUTCHours(parseInt(m[4],10),parseInt(m[5],10));if(m[6]&&m[6].length>0)d.setUTCSeconds(parseInt(m[6],10));return d}function zeroPad(n,m){if(m===undefined)m=2;var s=""+n;while(s.length<m)s="0"+s;return s}function dateToUTCTime(d){var s="";s+=zeroPad(d.getUTCFullYear()%100);s+=zeroPad(d.getUTCMonth()+1);s+=zeroPad(d.getUTCDate());s+=zeroPad(d.getUTCHours());s+=zeroPad(d.getUTCMinutes());s+=zeroPad(d.getUTCSeconds());s+="Z";return s}function dateToGTime(d){var s="";s+=zeroPad(d.getUTCFullYear(),4);s+=zeroPad(d.getUTCMonth()+1);s+=zeroPad(d.getUTCDate());s+=zeroPad(d.getUTCHours());s+=zeroPad(d.getUTCMinutes());s+=zeroPad(d.getUTCSeconds());s+="Z";return s}function sign(cert,key){if(cert.signatures.x509===undefined)cert.signatures.x509={};var sig=cert.signatures.x509;sig.algo=key.type+"-"+key.defaultHashAlgorithm();if(SIGN_ALGS[sig.algo]===undefined)return false;var der=new asn1.BerWriter;writeTBSCert(cert,der);var blob=der.buffer;sig.cache=blob;var signer=key.createSign();signer.write(blob);cert.signatures.x509.signature=signer.sign();return true}function signAsync(cert,signer,done){if(cert.signatures.x509===undefined)cert.signatures.x509={};var sig=cert.signatures.x509;var der=new asn1.BerWriter;writeTBSCert(cert,der);var blob=der.buffer;sig.cache=blob;signer(blob,function(err,signature){if(err){done(err);return}sig.algo=signature.type+"-"+signature.hashAlgorithm;if(SIGN_ALGS[sig.algo]===undefined){done(new Error('Invalid signing algorithm "'+sig.algo+'"'));return}sig.signature=signature;done()})}function write(cert,options){var sig=cert.signatures.x509;assert.object(sig,"x509 signature");var der=new asn1.BerWriter;der.startSequence();if(sig.cache){der._ensure(sig.cache.length);sig.cache.copy(der._buf,der._offset);der._offset+=sig.cache.length}else{writeTBSCert(cert,der)}der.startSequence();der.writeOID(SIGN_ALGS[sig.algo]);if(sig.algo.match(/^rsa-/))der.writeNull();der.endSequence();var sigData=sig.signature.toBuffer("asn1");var data=Buffer.alloc(sigData.length+1);data[0]=0;sigData.copy(data,1);der.writeBuffer(data,asn1.Ber.BitString);der.endSequence();return der.buffer}function writeTBSCert(cert,der){var sig=cert.signatures.x509;assert.object(sig,"x509 signature");der.startSequence();der.startSequence(Local(0));der.writeInt(2);der.endSequence();der.writeBuffer(utils.mpNormalize(cert.serial),asn1.Ber.Integer);der.startSequence();der.writeOID(SIGN_ALGS[sig.algo]);if(sig.algo.match(/^rsa-/))der.writeNull();der.endSequence();cert.issuer.toAsn1(der);der.startSequence();writeDate(der,cert.validFrom);writeDate(der,cert.validUntil);der.endSequence();var subject=cert.subjects[0];var altNames=cert.subjects.slice(1);subject.toAsn1(der);pkcs8.writePkcs8(der,cert.subjectKey);if(sig.extras&&sig.extras.issuerUniqueID){der.writeBuffer(sig.extras.issuerUniqueID,Local(1))}if(sig.extras&&sig.extras.subjectUniqueID){der.writeBuffer(sig.extras.subjectUniqueID,Local(2))}if(altNames.length>0||subject.type==="host"||cert.purposes!==undefined&&cert.purposes.length>0||sig.extras&&sig.extras.exts){der.startSequence(Local(3));der.startSequence();var exts=[];if(cert.purposes!==undefined&&cert.purposes.length>0){exts.push({oid:EXTS.basicConstraints,critical:true});exts.push({oid:EXTS.keyUsage,critical:true});exts.push({oid:EXTS.extKeyUsage,critical:true})}exts.push({oid:EXTS.altName});if(sig.extras&&sig.extras.exts)exts=sig.extras.exts;for(var i=0;i<exts.length;++i){der.startSequence();der.writeOID(exts[i].oid);if(exts[i].critical!==undefined)der.writeBoolean(exts[i].critical);if(exts[i].oid===EXTS.altName){der.startSequence(asn1.Ber.OctetString);der.startSequence();if(subject.type==="host"){der.writeString(subject.hostname,Context(2))}for(var j=0;j<altNames.length;++j){if(altNames[j].type==="host"){der.writeString(altNames[j].hostname,ALTNAME.DNSName)}else if(altNames[j].type==="email"){der.writeString(altNames[j].email,ALTNAME.RFC822Name)}else{der.startSequence(ALTNAME.DirectoryName);altNames[j].toAsn1(der);der.endSequence()}}der.endSequence();der.endSequence()}else if(exts[i].oid===EXTS.basicConstraints){der.startSequence(asn1.Ber.OctetString);der.startSequence();var ca=cert.purposes.indexOf("ca")!==-1;var pathLen=exts[i].pathLen;der.writeBoolean(ca);if(pathLen!==undefined)der.writeInt(pathLen);der.endSequence();der.endSequence()}else if(exts[i].oid===EXTS.extKeyUsage){der.startSequence(asn1.Ber.OctetString);der.startSequence();cert.purposes.forEach(function(purpose){if(purpose==="ca")return;if(KEYUSEBITS.indexOf(purpose)!==-1)return;var oid=purpose;if(EXTPURPOSE[purpose]!==undefined)oid=EXTPURPOSE[purpose];der.writeOID(oid)});der.endSequence();der.endSequence()}else if(exts[i].oid===EXTS.keyUsage){der.startSequence(asn1.Ber.OctetString);if(exts[i].bits!==undefined){der.writeBuffer(exts[i].bits,asn1.Ber.BitString)}else{var bits=writeBitField(cert.purposes,KEYUSEBITS);der.writeBuffer(bits,asn1.Ber.BitString)}der.endSequence()}else{der.writeBuffer(exts[i].data,asn1.Ber.OctetString)}der.endSequence()}der.endSequence();der.endSequence()}der.endSequence()}function readBitField(bits,bitIndex){var bitLen=8*(bits.length-1)-bits[0];var setBits={};for(var i=0;i<bitLen;++i){var byteN=1+Math.floor(i/8);var bit=7-i%8;var mask=1<<bit;var bitVal=(bits[byteN]&mask)!==0;var name=bitIndex[i];if(bitVal&&typeof name==="string"){setBits[name]=true}}return Object.keys(setBits)}function writeBitField(setBits,bitIndex){var bitLen=bitIndex.length;var blen=Math.ceil(bitLen/8);var unused=blen*8-bitLen;var bits=Buffer.alloc(1+blen);bits[0]=unused;for(var i=0;i<bitLen;++i){var byteN=1+Math.floor(i/8);var bit=7-i%8;var mask=1<<bit;var name=bitIndex[i];if(name===undefined)continue;var bitVal=setBits.indexOf(name)!==-1;if(bitVal){bits[byteN]|=mask}}return bits}},{"../algs":471,"../certificate":472,"../identity":489,"../key":491,"../private-key":492,"../signature":493,"../utils":495,"./pem":480,"./pkcs8":482,asn1:386,"assert-plus":387,"safer-buffer":470}],489:[function(require,module,exports){module.exports=Identity;var assert=require("assert-plus");var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var errs=require("./errors");var util=require("util");var utils=require("./utils");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var DNS_NAME_RE=/^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i;var oids={};oids.cn="2.5.4.3";oids.o="2.5.4.10";oids.ou="2.5.4.11";oids.l="2.5.4.7";oids.s="2.5.4.8";oids.c="2.5.4.6";oids.sn="2.5.4.4";oids.postalCode="2.5.4.17";oids.serialNumber="2.5.4.5";oids.street="2.5.4.9";oids.x500UniqueIdentifier="2.5.4.45";oids.role="2.5.4.72";oids.telephoneNumber="2.5.4.20";oids.description="2.5.4.13";oids.dc="0.9.2342.19200300.100.1.25";oids.uid="0.9.2342.19200300.100.1.1";oids.mail="0.9.2342.19200300.100.1.3";oids.title="2.5.4.12";oids.gn="2.5.4.42";oids.initials="2.5.4.43";oids.pseudonym="2.5.4.65";oids.emailAddress="1.2.840.113549.1.9.1";var unoids={};Object.keys(oids).forEach(function(k){unoids[oids[k]]=k});function Identity(opts){var self=this;assert.object(opts,"options");assert.arrayOfObject(opts.components,"options.components");this.components=opts.components;this.componentLookup={};this.components.forEach(function(c){if(c.name&&!c.oid)c.oid=oids[c.name];if(c.oid&&!c.name)c.name=unoids[c.oid];if(self.componentLookup[c.name]===undefined)self.componentLookup[c.name]=[];self.componentLookup[c.name].push(c)});if(this.componentLookup.cn&&this.componentLookup.cn.length>0){this.cn=this.componentLookup.cn[0].value}assert.optionalString(opts.type,"options.type");if(opts.type===undefined){if(this.components.length===1&&this.componentLookup.cn&&this.componentLookup.cn.length===1&&this.componentLookup.cn[0].value.match(DNS_NAME_RE)){this.type="host";this.hostname=this.componentLookup.cn[0].value}else if(this.componentLookup.dc&&this.components.length===this.componentLookup.dc.length){this.type="host";this.hostname=this.componentLookup.dc.map(function(c){return c.value}).join(".")}else if(this.componentLookup.uid&&this.components.length===this.componentLookup.uid.length){this.type="user";this.uid=this.componentLookup.uid[0].value}else if(this.componentLookup.cn&&this.componentLookup.cn.length===1&&this.componentLookup.cn[0].value.match(DNS_NAME_RE)){this.type="host";this.hostname=this.componentLookup.cn[0].value}else if(this.componentLookup.uid&&this.componentLookup.uid.length===1){this.type="user";this.uid=this.componentLookup.uid[0].value}else if(this.componentLookup.mail&&this.componentLookup.mail.length===1){this.type="email";this.email=this.componentLookup.mail[0].value}else if(this.componentLookup.cn&&this.componentLookup.cn.length===1){this.type="user";this.uid=this.componentLookup.cn[0].value}else{this.type="unknown"}}else{this.type=opts.type;if(this.type==="host")this.hostname=opts.hostname;else if(this.type==="user")this.uid=opts.uid;else if(this.type==="email")this.email=opts.email;else throw new Error("Unknown type "+this.type)}}Identity.prototype.toString=function(){return this.components.map(function(c){var n=c.name.toUpperCase();n=n.replace(/=/g,"\\=");var v=c.value;v=v.replace(/,/g,"\\,");return n+"="+v}).join(", ")};Identity.prototype.get=function(name,asArray){assert.string(name,"name");var arr=this.componentLookup[name];if(arr===undefined||arr.length===0)return undefined;if(!asArray&&arr.length>1)throw new Error("Multiple values for attribute "+name);if(!asArray)return arr[0].value;return arr.map(function(c){return c.value})};Identity.prototype.toArray=function(idx){return this.components.map(function(c){return{name:c.name,value:c.value}})};var NOT_PRINTABLE=/[^a-zA-Z0-9 '(),+.\/:=?-]/;var NOT_IA5=/[^\x00-\x7f]/;Identity.prototype.toAsn1=function(der,tag){der.startSequence(tag);this.components.forEach(function(c){der.startSequence(asn1.Ber.Constructor|asn1.Ber.Set);der.startSequence();der.writeOID(c.oid);if(c.asn1type===asn1.Ber.Utf8String||c.value.match(NOT_IA5)){var v=Buffer.from(c.value,"utf8");der.writeBuffer(v,asn1.Ber.Utf8String)}else if(c.asn1type===asn1.Ber.IA5String||c.value.match(NOT_PRINTABLE)){der.writeString(c.value,asn1.Ber.IA5String)}else{var type=asn1.Ber.PrintableString;if(c.asn1type!==undefined)type=c.asn1type;der.writeString(c.value,type)}der.endSequence();der.endSequence()});der.endSequence()};function globMatch(a,b){if(a==="**"||b==="**")return true;var aParts=a.split(".");var bParts=b.split(".");if(aParts.length!==bParts.length)return false;for(var i=0;i<aParts.length;++i){if(aParts[i]==="*"||bParts[i]==="*")continue;if(aParts[i]!==bParts[i])return false}return true}Identity.prototype.equals=function(other){if(!Identity.isIdentity(other,[1,0]))return false;if(other.components.length!==this.components.length)return false;for(var i=0;i<this.components.length;++i){if(this.components[i].oid!==other.components[i].oid)return false;if(!globMatch(this.components[i].value,other.components[i].value)){return false}}return true};Identity.forHost=function(hostname){assert.string(hostname,"hostname");return new Identity({type:"host",hostname:hostname,components:[{name:"cn",value:hostname}]})};Identity.forUser=function(uid){assert.string(uid,"uid");return new Identity({type:"user",uid:uid,components:[{name:"uid",value:uid}]})};Identity.forEmail=function(email){assert.string(email,"email");return new Identity({type:"email",email:email,components:[{name:"mail",value:email}]})};Identity.parseDN=function(dn){assert.string(dn,"dn");var parts=[""];var idx=0;var rem=dn;while(rem.length>0){var m;if((m=/^,/.exec(rem))!==null){parts[++idx]="";rem=rem.slice(m[0].length)}else if((m=/^\\,/.exec(rem))!==null){parts[idx]+=",";rem=rem.slice(m[0].length)}else if((m=/^\\./.exec(rem))!==null){parts[idx]+=m[0];rem=rem.slice(m[0].length)}else if((m=/^[^\\,]+/.exec(rem))!==null){parts[idx]+=m[0];rem=rem.slice(m[0].length)}else{throw new Error("Failed to parse DN")}}var cmps=parts.map(function(c){c=c.trim();var eqPos=c.indexOf("=");while(eqPos>0&&c.charAt(eqPos-1)==="\\")eqPos=c.indexOf("=",eqPos+1);if(eqPos===-1){throw new Error("Failed to parse DN")}var name=c.slice(0,eqPos).toLowerCase().replace(/\\=/g,"=");var value=c.slice(eqPos+1);return{name:name,value:value}});return new Identity({components:cmps})};Identity.fromArray=function(components){assert.arrayOfObject(components,"components");components.forEach(function(cmp){assert.object(cmp,"component");assert.string(cmp.name,"component.name");if(!Buffer.isBuffer(cmp.value)&&!(typeof cmp.value==="string")){throw new Error("Invalid component value")}});return new Identity({components:components})};Identity.parseAsn1=function(der,top){var components=[];der.readSequence(top);var end=der.offset+der.length;while(der.offset<end){der.readSequence(asn1.Ber.Constructor|asn1.Ber.Set);var after=der.offset+der.length;der.readSequence();var oid=der.readOID();var type=der.peek();var value;switch(type){case asn1.Ber.PrintableString:case asn1.Ber.IA5String:case asn1.Ber.OctetString:case asn1.Ber.T61String:value=der.readString(type);break;case asn1.Ber.Utf8String:value=der.readString(type,true);value=value.toString("utf8");break;case asn1.Ber.CharacterString:case asn1.Ber.BMPString:value=der.readString(type,true);value=value.toString("utf16le");break;default:throw new Error("Unknown asn1 type "+type)}components.push({oid:oid,asn1type:type,value:value});der._offset=after}der._offset=end;return new Identity({components:components})};Identity.isIdentity=function(obj,ver){return utils.isCompatible(obj,Identity,ver)};Identity.prototype._sshpkApiVersion=[1,0];Identity._oldVersionDetect=function(obj){return[1,0]}},{"./algs":471,"./errors":475,"./fingerprint":476,"./signature":493,"./utils":495,asn1:386,"assert-plus":387,crypto:81,"safer-buffer":470,util:243}],490:[function(require,module,exports){var Key=require("./key");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var PrivateKey=require("./private-key");var Certificate=require("./certificate");var Identity=require("./identity");var errs=require("./errors");module.exports={Key:Key,parseKey:Key.parse,Fingerprint:Fingerprint,parseFingerprint:Fingerprint.parse,Signature:Signature,parseSignature:Signature.parse,PrivateKey:PrivateKey,parsePrivateKey:PrivateKey.parse,generatePrivateKey:PrivateKey.generate,Certificate:Certificate,parseCertificate:Certificate.parse,createSelfSignedCertificate:Certificate.createSelfSigned,createCertificate:Certificate.create,Identity:Identity,identityFromDN:Identity.parseDN,identityForHost:Identity.forHost,identityForUser:Identity.forUser,identityForEmail:Identity.forEmail,identityFromArray:Identity.fromArray,FingerprintFormatError:errs.FingerprintFormatError,InvalidAlgorithmError:errs.InvalidAlgorithmError,KeyParseError:errs.KeyParseError,SignatureParseError:errs.SignatureParseError,KeyEncryptedError:errs.KeyEncryptedError,CertificateParseError:errs.CertificateParseError}},{"./certificate":472,"./errors":475,"./fingerprint":476,"./identity":489,"./key":491,"./private-key":492,"./signature":493}],491:[function(require,module,exports){(function(Buffer){(function(){module.exports=Key;var assert=require("assert-plus");var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var DiffieHellman=require("./dhe").DiffieHellman;var errs=require("./errors");var utils=require("./utils");var PrivateKey=require("./private-key");var edCompat;try{edCompat=require("./ed-compat")}catch(e){}var InvalidAlgorithmError=errs.InvalidAlgorithmError;var KeyParseError=errs.KeyParseError;var formats={};formats["auto"]=require("./formats/auto");formats["pem"]=require("./formats/pem");formats["pkcs1"]=require("./formats/pkcs1");formats["pkcs8"]=require("./formats/pkcs8");formats["rfc4253"]=require("./formats/rfc4253");formats["ssh"]=require("./formats/ssh");formats["ssh-private"]=require("./formats/ssh-private");formats["openssh"]=formats["ssh-private"];formats["dnssec"]=require("./formats/dnssec");formats["putty"]=require("./formats/putty");formats["ppk"]=formats["putty"];function Key(opts){assert.object(opts,"options");assert.arrayOfObject(opts.parts,"options.parts");assert.string(opts.type,"options.type");assert.optionalString(opts.comment,"options.comment");var algInfo=algs.info[opts.type]
|
|
55
|
-
;if(typeof algInfo!=="object")throw new InvalidAlgorithmError(opts.type);var partLookup={};for(var i=0;i<opts.parts.length;++i){var part=opts.parts[i];partLookup[part.name]=part}this.type=opts.type;this.parts=opts.parts;this.part=partLookup;this.comment=undefined;this.source=opts.source;this._rfc4253Cache=opts._rfc4253Cache;this._hashCache={};var sz;this.curve=undefined;if(this.type==="ecdsa"){var curve=this.part.curve.data.toString();this.curve=curve;sz=algs.curves[curve].size}else if(this.type==="ed25519"||this.type==="curve25519"){sz=256;this.curve="curve25519"}else{var szPart=this.part[algInfo.sizePart];sz=szPart.data.length;sz=sz*8-utils.countZeros(szPart.data)}this.size=sz}Key.formats=formats;Key.prototype.toBuffer=function(format,options){if(format===undefined)format="ssh";assert.string(format,"format");assert.object(formats[format],"formats[format]");assert.optionalObject(options,"options");if(format==="rfc4253"){if(this._rfc4253Cache===undefined)this._rfc4253Cache=formats["rfc4253"].write(this);return this._rfc4253Cache}return formats[format].write(this,options)};Key.prototype.toString=function(format,options){return this.toBuffer(format,options).toString()};Key.prototype.hash=function(algo,type){assert.string(algo,"algorithm");assert.optionalString(type,"type");if(type===undefined)type="ssh";algo=algo.toLowerCase();if(algs.hashAlgs[algo]===undefined)throw new InvalidAlgorithmError(algo);var cacheKey=algo+"||"+type;if(this._hashCache[cacheKey])return this._hashCache[cacheKey];var buf;if(type==="ssh"){buf=this.toBuffer("rfc4253")}else if(type==="spki"){buf=formats.pkcs8.pkcs8ToBuffer(this)}else{throw new Error("Hash type "+type+" not supported")}var hash=crypto.createHash(algo).update(buf).digest();this._hashCache[cacheKey]=hash;return hash};Key.prototype.fingerprint=function(algo,type){if(algo===undefined)algo="sha256";if(type===undefined)type="ssh";assert.string(algo,"algorithm");assert.string(type,"type");var opts={type:"key",hash:this.hash(algo,type),algorithm:algo,hashType:type};return new Fingerprint(opts)};Key.prototype.defaultHashAlgorithm=function(){var hashAlgo="sha1";if(this.type==="rsa")hashAlgo="sha256";if(this.type==="dsa"&&this.size>1024)hashAlgo="sha256";if(this.type==="ed25519")hashAlgo="sha512";if(this.type==="ecdsa"){if(this.size<=256)hashAlgo="sha256";else if(this.size<=384)hashAlgo="sha384";else hashAlgo="sha512"}return hashAlgo};Key.prototype.createVerify=function(hashAlgo){if(hashAlgo===undefined)hashAlgo=this.defaultHashAlgorithm();assert.string(hashAlgo,"hash algorithm");if(this.type==="ed25519"&&edCompat!==undefined)return new edCompat.Verifier(this,hashAlgo);if(this.type==="curve25519")throw new Error("Curve25519 keys are not suitable for "+"signing or verification");var v,nm,err;try{nm=hashAlgo.toUpperCase();v=crypto.createVerify(nm)}catch(e){err=e}if(v===undefined||err instanceof Error&&err.message.match(/Unknown message digest/)){nm="RSA-";nm+=hashAlgo.toUpperCase();v=crypto.createVerify(nm)}assert.ok(v,"failed to create verifier");var oldVerify=v.verify.bind(v);var key=this.toBuffer("pkcs8");var curve=this.curve;var self=this;v.verify=function(signature,fmt){if(Signature.isSignature(signature,[2,0])){if(signature.type!==self.type)return false;if(signature.hashAlgorithm&&signature.hashAlgorithm!==hashAlgo)return false;if(signature.curve&&self.type==="ecdsa"&&signature.curve!==curve)return false;return oldVerify(key,signature.toBuffer("asn1"))}else if(typeof signature==="string"||Buffer.isBuffer(signature)){return oldVerify(key,signature,fmt)}else if(Signature.isSignature(signature,[1,0])){throw new Error("signature was created by too old "+"a version of sshpk and cannot be verified")}else{throw new TypeError("signature must be a string, "+"Buffer, or Signature object")}};return v};Key.prototype.createDiffieHellman=function(){if(this.type==="rsa")throw new Error("RSA keys do not support Diffie-Hellman");return new DiffieHellman(this)};Key.prototype.createDH=Key.prototype.createDiffieHellman;Key.parse=function(data,format,options){if(typeof data!=="string")assert.buffer(data,"data");if(format===undefined)format="auto";assert.string(format,"format");if(typeof options==="string")options={filename:options};assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalString(options.filename,"options.filename");if(options.filename===undefined)options.filename="(unnamed)";assert.object(formats[format],"formats[format]");try{var k=formats[format].read(data,options);if(k instanceof PrivateKey)k=k.toPublic();if(!k.comment)k.comment=options.filename;return k}catch(e){if(e.name==="KeyEncryptedError")throw e;throw new KeyParseError(options.filename,format,e)}};Key.isKey=function(obj,ver){return utils.isCompatible(obj,Key,ver)};Key.prototype._sshpkApiVersion=[1,7];Key._oldVersionDetect=function(obj){assert.func(obj.toBuffer);assert.func(obj.fingerprint);if(obj.createDH)return[1,4];if(obj.defaultHashAlgorithm)return[1,3];if(obj.formats["auto"])return[1,2];if(obj.formats["pkcs1"])return[1,1];return[1,0]}}).call(this)}).call(this,{isBuffer:require("../../../browser-agent/node_modules/is-buffer/index.js")})},{"../../../browser-agent/node_modules/is-buffer/index.js":146,"./algs":471,"./dhe":473,"./ed-compat":474,"./errors":475,"./fingerprint":476,"./formats/auto":477,"./formats/dnssec":478,"./formats/pem":480,"./formats/pkcs1":481,"./formats/pkcs8":482,"./formats/putty":483,"./formats/rfc4253":484,"./formats/ssh":486,"./formats/ssh-private":485,"./private-key":492,"./signature":493,"./utils":495,"assert-plus":387,crypto:81}],492:[function(require,module,exports){module.exports=PrivateKey;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var errs=require("./errors");var util=require("util");var utils=require("./utils");var dhe=require("./dhe");var generateECDSA=dhe.generateECDSA;var generateED25519=dhe.generateED25519;var edCompat=require("./ed-compat");var nacl=require("tweetnacl");var Key=require("./key");var InvalidAlgorithmError=errs.InvalidAlgorithmError;var KeyParseError=errs.KeyParseError;var KeyEncryptedError=errs.KeyEncryptedError;var formats={};formats["auto"]=require("./formats/auto");formats["pem"]=require("./formats/pem");formats["pkcs1"]=require("./formats/pkcs1");formats["pkcs8"]=require("./formats/pkcs8");formats["rfc4253"]=require("./formats/rfc4253");formats["ssh-private"]=require("./formats/ssh-private");formats["openssh"]=formats["ssh-private"];formats["ssh"]=formats["ssh-private"];formats["dnssec"]=require("./formats/dnssec");function PrivateKey(opts){assert.object(opts,"options");Key.call(this,opts);this._pubCache=undefined}util.inherits(PrivateKey,Key);PrivateKey.formats=formats;PrivateKey.prototype.toBuffer=function(format,options){if(format===undefined)format="pkcs1";assert.string(format,"format");assert.object(formats[format],"formats[format]");assert.optionalObject(options,"options");return formats[format].write(this,options)};PrivateKey.prototype.hash=function(algo,type){return this.toPublic().hash(algo,type)};PrivateKey.prototype.fingerprint=function(algo,type){return this.toPublic().fingerprint(algo,type)};PrivateKey.prototype.toPublic=function(){if(this._pubCache)return this._pubCache;var algInfo=algs.info[this.type];var pubParts=[];for(var i=0;i<algInfo.parts.length;++i){var p=algInfo.parts[i];pubParts.push(this.part[p])}this._pubCache=new Key({type:this.type,source:this,parts:pubParts});if(this.comment)this._pubCache.comment=this.comment;return this._pubCache};PrivateKey.prototype.derive=function(newType){assert.string(newType,"type");var priv,pub,pair;if(this.type==="ed25519"&&newType==="curve25519"){priv=this.part.k.data;if(priv[0]===0)priv=priv.slice(1);pair=nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));pub=Buffer.from(pair.publicKey);return new PrivateKey({type:"curve25519",parts:[{name:"A",data:utils.mpNormalize(pub)},{name:"k",data:utils.mpNormalize(priv)}]})}else if(this.type==="curve25519"&&newType==="ed25519"){priv=this.part.k.data;if(priv[0]===0)priv=priv.slice(1);pair=nacl.sign.keyPair.fromSeed(new Uint8Array(priv));pub=Buffer.from(pair.publicKey);return new PrivateKey({type:"ed25519",parts:[{name:"A",data:utils.mpNormalize(pub)},{name:"k",data:utils.mpNormalize(priv)}]})}throw new Error("Key derivation not supported from "+this.type+" to "+newType)};PrivateKey.prototype.createVerify=function(hashAlgo){return this.toPublic().createVerify(hashAlgo)};PrivateKey.prototype.createSign=function(hashAlgo){if(hashAlgo===undefined)hashAlgo=this.defaultHashAlgorithm();assert.string(hashAlgo,"hash algorithm");if(this.type==="ed25519"&&edCompat!==undefined)return new edCompat.Signer(this,hashAlgo);if(this.type==="curve25519")throw new Error("Curve25519 keys are not suitable for "+"signing or verification");var v,nm,err;try{nm=hashAlgo.toUpperCase();v=crypto.createSign(nm)}catch(e){err=e}if(v===undefined||err instanceof Error&&err.message.match(/Unknown message digest/)){nm="RSA-";nm+=hashAlgo.toUpperCase();v=crypto.createSign(nm)}assert.ok(v,"failed to create verifier");var oldSign=v.sign.bind(v);var key=this.toBuffer("pkcs1");var type=this.type;var curve=this.curve;v.sign=function(){var sig=oldSign(key);if(typeof sig==="string")sig=Buffer.from(sig,"binary");sig=Signature.parse(sig,type,"asn1");sig.hashAlgorithm=hashAlgo;sig.curve=curve;return sig};return v};PrivateKey.parse=function(data,format,options){if(typeof data!=="string")assert.buffer(data,"data");if(format===undefined)format="auto";assert.string(format,"format");if(typeof options==="string")options={filename:options};assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalString(options.filename,"options.filename");if(options.filename===undefined)options.filename="(unnamed)";assert.object(formats[format],"formats[format]");try{var k=formats[format].read(data,options);assert.ok(k instanceof PrivateKey,"key is not a private key");if(!k.comment)k.comment=options.filename;return k}catch(e){if(e.name==="KeyEncryptedError")throw e;throw new KeyParseError(options.filename,format,e)}};PrivateKey.isPrivateKey=function(obj,ver){return utils.isCompatible(obj,PrivateKey,ver)};PrivateKey.generate=function(type,options){if(options===undefined)options={};assert.object(options,"options");switch(type){case"ecdsa":if(options.curve===undefined)options.curve="nistp256";assert.string(options.curve,"options.curve");return generateECDSA(options.curve);case"ed25519":return generateED25519();default:throw new Error("Key generation not supported with key "+'type "'+type+'"')}};PrivateKey.prototype._sshpkApiVersion=[1,6];PrivateKey._oldVersionDetect=function(obj){assert.func(obj.toPublic);assert.func(obj.createSign);if(obj.derive)return[1,3];if(obj.defaultHashAlgorithm)return[1,2];if(obj.formats["auto"])return[1,1];return[1,0]}},{"./algs":471,"./dhe":473,"./ed-compat":474,"./errors":475,"./fingerprint":476,"./formats/auto":477,"./formats/dnssec":478,"./formats/pem":480,"./formats/pkcs1":481,"./formats/pkcs8":482,"./formats/rfc4253":484,"./formats/ssh-private":485,"./key":491,"./signature":493,"./utils":495,"assert-plus":387,crypto:81,"safer-buffer":470,tweetnacl:504,util:243}],493:[function(require,module,exports){module.exports=Signature;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var errs=require("./errors");var utils=require("./utils");var asn1=require("asn1");var SSHBuffer=require("./ssh-buffer");var InvalidAlgorithmError=errs.InvalidAlgorithmError;var SignatureParseError=errs.SignatureParseError;function Signature(opts){assert.object(opts,"options");assert.arrayOfObject(opts.parts,"options.parts");assert.string(opts.type,"options.type");var partLookup={};for(var i=0;i<opts.parts.length;++i){var part=opts.parts[i];partLookup[part.name]=part}this.type=opts.type;this.hashAlgorithm=opts.hashAlgo;this.curve=opts.curve;this.parts=opts.parts;this.part=partLookup}Signature.prototype.toBuffer=function(format){if(format===undefined)format="asn1";assert.string(format,"format");var buf;var stype="ssh-"+this.type;switch(this.type){case"rsa":switch(this.hashAlgorithm){case"sha256":stype="rsa-sha2-256";break;case"sha512":stype="rsa-sha2-512";break;case"sha1":case undefined:break;default:throw new Error("SSH signature "+"format does not support hash "+"algorithm "+this.hashAlgorithm)}if(format==="ssh"){buf=new SSHBuffer({});buf.writeString(stype);buf.writePart(this.part.sig);return buf.toBuffer()}else{return this.part.sig.data}break;case"ed25519":if(format==="ssh"){buf=new SSHBuffer({});buf.writeString(stype);buf.writePart(this.part.sig);return buf.toBuffer()}else{return this.part.sig.data}break;case"dsa":case"ecdsa":var r,s;if(format==="asn1"){var der=new asn1.BerWriter;der.startSequence();r=utils.mpNormalize(this.part.r.data);s=utils.mpNormalize(this.part.s.data);der.writeBuffer(r,asn1.Ber.Integer);der.writeBuffer(s,asn1.Ber.Integer);der.endSequence();return der.buffer}else if(format==="ssh"&&this.type==="dsa"){buf=new SSHBuffer({});buf.writeString("ssh-dss");r=this.part.r.data;if(r.length>20&&r[0]===0)r=r.slice(1);s=this.part.s.data;if(s.length>20&&s[0]===0)s=s.slice(1);if(this.hashAlgorithm&&this.hashAlgorithm!=="sha1"||r.length+s.length!==40){throw new Error("OpenSSH only supports "+"DSA signatures with SHA1 hash")}buf.writeBuffer(Buffer.concat([r,s]));return buf.toBuffer()}else if(format==="ssh"&&this.type==="ecdsa"){var inner=new SSHBuffer({});r=this.part.r.data;inner.writeBuffer(r);inner.writePart(this.part.s);buf=new SSHBuffer({});var curve;if(r[0]===0)r=r.slice(1);var sz=r.length*8;if(sz===256)curve="nistp256";else if(sz===384)curve="nistp384";else if(sz===528)curve="nistp521";buf.writeString("ecdsa-sha2-"+curve);buf.writeBuffer(inner.toBuffer());return buf.toBuffer()}throw new Error("Invalid signature format");default:throw new Error("Invalid signature data")}};Signature.prototype.toString=function(format){assert.optionalString(format,"format");return this.toBuffer(format).toString("base64")};Signature.parse=function(data,type,format){if(typeof data==="string")data=Buffer.from(data,"base64");assert.buffer(data,"data");assert.string(format,"format");assert.string(type,"type");var opts={};opts.type=type.toLowerCase();opts.parts=[];try{assert.ok(data.length>0,"signature must not be empty");switch(opts.type){case"rsa":return parseOneNum(data,type,format,opts);case"ed25519":return parseOneNum(data,type,format,opts);case"dsa":case"ecdsa":if(format==="asn1")return parseDSAasn1(data,type,format,opts);else if(opts.type==="dsa")return parseDSA(data,type,format,opts);else return parseECDSA(data,type,format,opts);default:throw new InvalidAlgorithmError(type)}}catch(e){if(e instanceof InvalidAlgorithmError)throw e;throw new SignatureParseError(type,format,e)}};function parseOneNum(data,type,format,opts){if(format==="ssh"){try{var buf=new SSHBuffer({buffer:data});var head=buf.readString()}catch(e){}if(buf!==undefined){var msg="SSH signature does not match expected "+"type (expected "+type+", got "+head+")";switch(head){case"ssh-rsa":assert.strictEqual(type,"rsa",msg);opts.hashAlgo="sha1";break;case"rsa-sha2-256":assert.strictEqual(type,"rsa",msg);opts.hashAlgo="sha256";break;case"rsa-sha2-512":assert.strictEqual(type,"rsa",msg);opts.hashAlgo="sha512";break;case"ssh-ed25519":assert.strictEqual(type,"ed25519",msg);opts.hashAlgo="sha512";break;default:throw new Error("Unknown SSH signature "+"type: "+head)}var sig=buf.readPart();assert.ok(buf.atEnd(),"extra trailing bytes");sig.name="sig";opts.parts.push(sig);return new Signature(opts)}}opts.parts.push({name:"sig",data:data});return new Signature(opts)}function parseDSAasn1(data,type,format,opts){var der=new asn1.BerReader(data);der.readSequence();var r=der.readString(asn1.Ber.Integer,true);var s=der.readString(asn1.Ber.Integer,true);opts.parts.push({name:"r",data:utils.mpNormalize(r)});opts.parts.push({name:"s",data:utils.mpNormalize(s)});return new Signature(opts)}function parseDSA(data,type,format,opts){if(data.length!=40){var buf=new SSHBuffer({buffer:data});var d=buf.readBuffer();if(d.toString("ascii")==="ssh-dss")d=buf.readBuffer();assert.ok(buf.atEnd(),"extra trailing bytes");assert.strictEqual(d.length,40,"invalid inner length");data=d}opts.parts.push({name:"r",data:data.slice(0,20)});opts.parts.push({name:"s",data:data.slice(20,40)});return new Signature(opts)}function parseECDSA(data,type,format,opts){var buf=new SSHBuffer({buffer:data});var r,s;var inner=buf.readBuffer();var stype=inner.toString("ascii");if(stype.slice(0,6)==="ecdsa-"){var parts=stype.split("-");assert.strictEqual(parts[0],"ecdsa");assert.strictEqual(parts[1],"sha2");opts.curve=parts[2];switch(opts.curve){case"nistp256":opts.hashAlgo="sha256";break;case"nistp384":opts.hashAlgo="sha384";break;case"nistp521":opts.hashAlgo="sha512";break;default:throw new Error("Unsupported ECDSA curve: "+opts.curve)}inner=buf.readBuffer();assert.ok(buf.atEnd(),"extra trailing bytes on outer");buf=new SSHBuffer({buffer:inner});r=buf.readPart()}else{r={data:inner}}s=buf.readPart();assert.ok(buf.atEnd(),"extra trailing bytes");r.name="r";s.name="s";opts.parts.push(r);opts.parts.push(s);return new Signature(opts)}Signature.isSignature=function(obj,ver){return utils.isCompatible(obj,Signature,ver)};Signature.prototype._sshpkApiVersion=[2,1];Signature._oldVersionDetect=function(obj){assert.func(obj.toBuffer);if(obj.hasOwnProperty("hashAlgorithm"))return[2,0];return[1,0]}},{"./algs":471,"./errors":475,"./ssh-buffer":494,"./utils":495,asn1:386,"assert-plus":387,crypto:81,"safer-buffer":470}],494:[function(require,module,exports){module.exports=SSHBuffer;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;function SSHBuffer(opts){assert.object(opts,"options");if(opts.buffer!==undefined)assert.buffer(opts.buffer,"options.buffer");this._size=opts.buffer?opts.buffer.length:1024;this._buffer=opts.buffer||Buffer.alloc(this._size);this._offset=0}SSHBuffer.prototype.toBuffer=function(){return this._buffer.slice(0,this._offset)};SSHBuffer.prototype.atEnd=function(){return this._offset>=this._buffer.length};SSHBuffer.prototype.remainder=function(){return this._buffer.slice(this._offset)};SSHBuffer.prototype.skip=function(n){this._offset+=n};SSHBuffer.prototype.expand=function(){this._size*=2;var buf=Buffer.alloc(this._size);this._buffer.copy(buf,0);this._buffer=buf};SSHBuffer.prototype.readPart=function(){return{data:this.readBuffer()}};SSHBuffer.prototype.readBuffer=function(){var len=this._buffer.readUInt32BE(this._offset);this._offset+=4;assert.ok(this._offset+len<=this._buffer.length,"length out of bounds at +0x"+this._offset.toString(16)+" (data truncated?)");var buf=this._buffer.slice(this._offset,this._offset+len);this._offset+=len;return buf};SSHBuffer.prototype.readString=function(){return this.readBuffer().toString()};SSHBuffer.prototype.readCString=function(){var offset=this._offset;while(offset<this._buffer.length&&this._buffer[offset]!==0)offset++;assert.ok(offset<this._buffer.length,"c string does not terminate");var str=this._buffer.slice(this._offset,offset).toString();this._offset=offset+1;return str};SSHBuffer.prototype.readInt=function(){var v=this._buffer.readUInt32BE(this._offset);this._offset+=4;return v};SSHBuffer.prototype.readInt64=function(){assert.ok(this._offset+8<this._buffer.length,"buffer not long enough to read Int64");var v=this._buffer.slice(this._offset,this._offset+8);this._offset+=8;return v};SSHBuffer.prototype.readChar=function(){var v=this._buffer[this._offset++];return v};SSHBuffer.prototype.writeBuffer=function(buf){while(this._offset+4+buf.length>this._size)this.expand();this._buffer.writeUInt32BE(buf.length,this._offset);this._offset+=4;buf.copy(this._buffer,this._offset);this._offset+=buf.length};SSHBuffer.prototype.writeString=function(str){this.writeBuffer(Buffer.from(str,"utf8"))};SSHBuffer.prototype.writeCString=function(str){while(this._offset+1+str.length>this._size)this.expand();this._buffer.write(str,this._offset);this._offset+=str.length;this._buffer[this._offset++]=0};SSHBuffer.prototype.writeInt=function(v){while(this._offset+4>this._size)this.expand();this._buffer.writeUInt32BE(v,this._offset);this._offset+=4};SSHBuffer.prototype.writeInt64=function(v){assert.buffer(v,"value");if(v.length>8){var lead=v.slice(0,v.length-8);for(var i=0;i<lead.length;++i){assert.strictEqual(lead[i],0,"must fit in 64 bits of precision")}v=v.slice(v.length-8,v.length)}while(this._offset+8>this._size)this.expand();v.copy(this._buffer,this._offset);this._offset+=8};SSHBuffer.prototype.writeChar=function(v){while(this._offset+1>this._size)this.expand();this._buffer[this._offset++]=v};SSHBuffer.prototype.writePart=function(p){this.writeBuffer(p.data)};SSHBuffer.prototype.write=function(buf){while(this._offset+buf.length>this._size)this.expand();buf.copy(this._buffer,this._offset);this._offset+=buf.length}},{"assert-plus":387,"safer-buffer":470}],495:[function(require,module,exports){module.exports={bufferSplit:bufferSplit,addRSAMissing:addRSAMissing,calculateDSAPublic:calculateDSAPublic,calculateED25519Public:calculateED25519Public,calculateX25519Public:calculateX25519Public,mpNormalize:mpNormalize,mpDenormalize:mpDenormalize,ecNormalize:ecNormalize,countZeros:countZeros,assertCompatible:assertCompatible,isCompatible:isCompatible,opensslKeyDeriv:opensslKeyDeriv,opensshCipherInfo:opensshCipherInfo,publicFromPrivateECDSA:publicFromPrivateECDSA,zeroPadToLength:zeroPadToLength,writeBitString:writeBitString,readBitString:readBitString,pbkdf2:pbkdf2};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var PrivateKey=require("./private-key");var Key=require("./key");var crypto=require("crypto");var algs=require("./algs");var asn1=require("asn1");var ec=require("ecc-jsbn/lib/ec");var jsbn=require("jsbn").BigInteger;var nacl=require("tweetnacl");var MAX_CLASS_DEPTH=3;function isCompatible(obj,klass,needVer){if(obj===null||typeof obj!=="object")return false;if(needVer===undefined)needVer=klass.prototype._sshpkApiVersion;if(obj instanceof klass&&klass.prototype._sshpkApiVersion[0]==needVer[0])return true;var proto=Object.getPrototypeOf(obj);var depth=0;while(proto.constructor.name!==klass.name){proto=Object.getPrototypeOf(proto);if(!proto||++depth>MAX_CLASS_DEPTH)return false}if(proto.constructor.name!==klass.name)return false;var ver=proto._sshpkApiVersion;if(ver===undefined)ver=klass._oldVersionDetect(obj);if(ver[0]!=needVer[0]||ver[1]<needVer[1])return false;return true}function assertCompatible(obj,klass,needVer,name){if(name===undefined)name="object";assert.ok(obj,name+" must not be null");assert.object(obj,name+" must be an object");if(needVer===undefined)needVer=klass.prototype._sshpkApiVersion;if(obj instanceof klass&&klass.prototype._sshpkApiVersion[0]==needVer[0])return;var proto=Object.getPrototypeOf(obj);var depth=0;while(proto.constructor.name!==klass.name){proto=Object.getPrototypeOf(proto);assert.ok(proto&&++depth<=MAX_CLASS_DEPTH,name+" must be a "+klass.name+" instance")}assert.strictEqual(proto.constructor.name,klass.name,name+" must be a "+klass.name+" instance");var ver=proto._sshpkApiVersion;if(ver===undefined)ver=klass._oldVersionDetect(obj);assert.ok(ver[0]==needVer[0]&&ver[1]>=needVer[1],name+" must be compatible with "+klass.name+" klass "+"version "+needVer[0]+"."+needVer[1])}var CIPHER_LEN={"des-ede3-cbc":{key:24,iv:8},"aes-128-cbc":{key:16,iv:16},"aes-256-cbc":{key:32,iv:16}};var PKCS5_SALT_LEN=8;function opensslKeyDeriv(cipher,salt,passphrase,count){assert.buffer(salt,"salt");assert.buffer(passphrase,"passphrase");assert.number(count,"iteration count");var clen=CIPHER_LEN[cipher];assert.object(clen,"supported cipher");salt=salt.slice(0,PKCS5_SALT_LEN);var D,D_prev,bufs;var material=Buffer.alloc(0);while(material.length<clen.key+clen.iv){bufs=[];if(D_prev)bufs.push(D_prev);bufs.push(passphrase);bufs.push(salt);D=Buffer.concat(bufs);for(var j=0;j<count;++j)D=crypto.createHash("md5").update(D).digest();material=Buffer.concat([material,D]);D_prev=D}return{key:material.slice(0,clen.key),iv:material.slice(clen.key,clen.key+clen.iv)}}function pbkdf2(hashAlg,salt,iterations,size,passphrase){var hkey=Buffer.alloc(salt.length+4);salt.copy(hkey);var gen=0,ts=[];var i=1;while(gen<size){var t=T(i++);gen+=t.length;ts.push(t)}return Buffer.concat(ts).slice(0,size);function T(I){hkey.writeUInt32BE(I,hkey.length-4);var hmac=crypto.createHmac(hashAlg,passphrase);hmac.update(hkey);var Ti=hmac.digest();var Uc=Ti;var c=1;while(c++<iterations){hmac=crypto.createHmac(hashAlg,passphrase);hmac.update(Uc);Uc=hmac.digest();for(var x=0;x<Ti.length;++x)Ti[x]^=Uc[x]}return Ti}}function countZeros(buf){var o=0,obit=8;while(o<buf.length){var mask=1<<obit;if((buf[o]&mask)===mask)break;obit--;if(obit<0){o++;obit=8}}return o*8+(8-obit)-1}function bufferSplit(buf,chr){assert.buffer(buf);assert.string(chr);var parts=[];var lastPart=0;var matches=0;for(var i=0;i<buf.length;++i){if(buf[i]===chr.charCodeAt(matches))++matches;else if(buf[i]===chr.charCodeAt(0))matches=1;else matches=0;if(matches>=chr.length){var newPart=i+1;parts.push(buf.slice(lastPart,newPart-matches));lastPart=newPart;matches=0}}if(lastPart<=buf.length)parts.push(buf.slice(lastPart,buf.length));return parts}function ecNormalize(buf,addZero){assert.buffer(buf);if(buf[0]===0&&buf[1]===4){if(addZero)return buf;return buf.slice(1)}else if(buf[0]===4){if(!addZero)return buf}else{while(buf[0]===0)buf=buf.slice(1);if(buf[0]===2||buf[0]===3)throw new Error("Compressed elliptic curve points "+"are not supported");if(buf[0]!==4)throw new Error("Not a valid elliptic curve point");if(!addZero)return buf}var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);return b}function readBitString(der,tag){if(tag===undefined)tag=asn1.Ber.BitString;var buf=der.readString(tag,true);assert.strictEqual(buf[0],0,"bit strings with unused bits are "+"not supported (0x"+buf[0].toString(16)+")");return buf.slice(1)}function writeBitString(der,buf,tag){if(tag===undefined)tag=asn1.Ber.BitString;var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);der.writeBuffer(b,tag)}function mpNormalize(buf){assert.buffer(buf);while(buf.length>1&&buf[0]===0&&(buf[1]&128)===0)buf=buf.slice(1);if((buf[0]&128)===128){var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);buf=b}return buf}function mpDenormalize(buf){assert.buffer(buf);while(buf.length>1&&buf[0]===0)buf=buf.slice(1);return buf}function zeroPadToLength(buf,len){assert.buffer(buf);assert.number(len);while(buf.length>len){assert.equal(buf[0],0);buf=buf.slice(1)}while(buf.length<len){var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);buf=b}return buf}function bigintToMpBuf(bigint){var buf=Buffer.from(bigint.toByteArray());buf=mpNormalize(buf);return buf}function calculateDSAPublic(g,p,x){assert.buffer(g);assert.buffer(p);assert.buffer(x);g=new jsbn(g);p=new jsbn(p);x=new jsbn(x);var y=g.modPow(x,p);var ybuf=bigintToMpBuf(y);return ybuf}function calculateED25519Public(k){assert.buffer(k);var kp=nacl.sign.keyPair.fromSeed(new Uint8Array(k));return Buffer.from(kp.publicKey)}function calculateX25519Public(k){assert.buffer(k);var kp=nacl.box.keyPair.fromSeed(new Uint8Array(k));return Buffer.from(kp.publicKey)}function addRSAMissing(key){assert.object(key);assertCompatible(key,PrivateKey,[1,1]);var d=new jsbn(key.part.d.data);var buf;if(!key.part.dmodp){var p=new jsbn(key.part.p.data);var dmodp=d.mod(p.subtract(1));buf=bigintToMpBuf(dmodp);key.part.dmodp={name:"dmodp",data:buf};key.parts.push(key.part.dmodp)}if(!key.part.dmodq){var q=new jsbn(key.part.q.data);var dmodq=d.mod(q.subtract(1));buf=bigintToMpBuf(dmodq);key.part.dmodq={name:"dmodq",data:buf};key.parts.push(key.part.dmodq)}}function publicFromPrivateECDSA(curveName,priv){assert.string(curveName,"curveName");assert.buffer(priv);var params=algs.curves[curveName];var p=new jsbn(params.p);var a=new jsbn(params.a);var b=new jsbn(params.b);var curve=new ec.ECCurveFp(p,a,b);var G=curve.decodePointHex(params.G.toString("hex"));var d=new jsbn(mpNormalize(priv));var pub=G.multiply(d);pub=Buffer.from(curve.encodePointHex(pub),"hex");var parts=[];parts.push({name:"curve",data:Buffer.from(curveName)});parts.push({name:"Q",data:pub});var key=new Key({type:"ecdsa",curve:curve,parts:parts});return key}function opensshCipherInfo(cipher){var inf={};switch(cipher){case"3des-cbc":inf.keySize=24;inf.blockSize=8;inf.opensslName="des-ede3-cbc";break;case"blowfish-cbc":inf.keySize=16;inf.blockSize=8;inf.opensslName="bf-cbc";break;case"aes128-cbc":case"aes128-ctr":case"aes128-gcm@openssh.com":inf.keySize=16;inf.blockSize=16;inf.opensslName="aes-128-"+cipher.slice(7,10);break;case"aes192-cbc":case"aes192-ctr":case"aes192-gcm@openssh.com":inf.keySize=24;inf.blockSize=16;inf.opensslName="aes-192-"+cipher.slice(7,10);break;case"aes256-cbc":case"aes256-ctr":case"aes256-gcm@openssh.com":inf.keySize=32;inf.blockSize=16;inf.opensslName="aes-256-"+cipher.slice(7,10);break;default:throw new Error('Unsupported openssl cipher "'+cipher+'"')}return inf}},{"./algs":471,"./key":491,"./private-key":492,asn1:386,"assert-plus":387,crypto:81,"ecc-jsbn/lib/ec":397,jsbn:433,"safer-buffer":470,tweetnacl:504}],496:[function(require,module,exports){"use strict";var net=require("net");var urlParse=require("url").parse;var util=require("util");var pubsuffix=require("./pubsuffix-psl");var Store=require("./store").Store;var MemoryCookieStore=require("./memstore").MemoryCookieStore;var pathMatch=require("./pathMatch").pathMatch;var VERSION=require("./version");var punycode;try{punycode=require("punycode")}catch(e){console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization")}var COOKIE_OCTETS=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;var CONTROL_CHARS=/[\x00-\x1F]/;var TERMINATORS=["\n","\r","\0"];var PATH_VALUE=/[\x20-\x3A\x3C-\x7E]+/;var DATE_DELIM=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;var MONTH_TO_NUM={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};var NUM_TO_MONTH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var NUM_TO_DAY=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var MAX_TIME=2147483647e3;var MIN_TIME=0;function parseDigits(token,minDigits,maxDigits,trailingOK){var count=0;while(count<token.length){var c=token.charCodeAt(count);if(c<=47||c>=58){break}count++}if(count<minDigits||count>maxDigits){return null}if(!trailingOK&&count!=token.length){return null}return parseInt(token.substr(0,count),10)}function parseTime(token){var parts=token.split(":");var result=[0,0,0];if(parts.length!==3){return null}for(var i=0;i<3;i++){var trailingOK=i==2;var num=parseDigits(parts[i],1,2,trailingOK);if(num===null){return null}result[i]=num}return result}function parseMonth(token){token=String(token).substr(0,3).toLowerCase();var num=MONTH_TO_NUM[token];return num>=0?num:null}function parseDate(str){if(!str){return}var tokens=str.split(DATE_DELIM);if(!tokens){return}var hour=null;var minute=null;var second=null;var dayOfMonth=null;var month=null;var year=null;for(var i=0;i<tokens.length;i++){var token=tokens[i].trim();if(!token.length){continue}var result;if(second===null){result=parseTime(token);if(result){hour=result[0];minute=result[1];second=result[2];continue}}if(dayOfMonth===null){result=parseDigits(token,1,2,true);if(result!==null){dayOfMonth=result;continue}}if(month===null){result=parseMonth(token);if(result!==null){month=result;continue}}if(year===null){result=parseDigits(token,2,4,true);if(result!==null){year=result;if(year>=70&&year<=99){year+=1900}else if(year>=0&&year<=69){year+=2e3}}}}if(dayOfMonth===null||month===null||year===null||second===null||dayOfMonth<1||dayOfMonth>31||year<1601||hour>23||minute>59||second>59){return}return new Date(Date.UTC(year,month,dayOfMonth,hour,minute,second))}function formatDate(date){var d=date.getUTCDate();d=d>=10?d:"0"+d
|
|
56
|
-
;var h=date.getUTCHours();h=h>=10?h:"0"+h;var m=date.getUTCMinutes();m=m>=10?m:"0"+m;var s=date.getUTCSeconds();s=s>=10?s:"0"+s;return NUM_TO_DAY[date.getUTCDay()]+", "+d+" "+NUM_TO_MONTH[date.getUTCMonth()]+" "+date.getUTCFullYear()+" "+h+":"+m+":"+s+" GMT"}function canonicalDomain(str){if(str==null){return null}str=str.trim().replace(/^\./,"");if(punycode&&/[^\u0001-\u007f]/.test(str)){str=punycode.toASCII(str)}return str.toLowerCase()}function domainMatch(str,domStr,canonicalize){if(str==null||domStr==null){return null}if(canonicalize!==false){str=canonicalDomain(str);domStr=canonicalDomain(domStr)}if(str==domStr){return true}if(net.isIP(str)){return false}var idx=str.indexOf(domStr);if(idx<=0){return false}if(str.length!==domStr.length+idx){return false}if(str.substr(idx-1,1)!=="."){return false}return true}function defaultPath(path){if(!path||path.substr(0,1)!=="/"){return"/"}if(path==="/"){return path}var rightSlash=path.lastIndexOf("/");if(rightSlash===0){return"/"}return path.slice(0,rightSlash)}function trimTerminator(str){for(var t=0;t<TERMINATORS.length;t++){var terminatorIdx=str.indexOf(TERMINATORS[t]);if(terminatorIdx!==-1){str=str.substr(0,terminatorIdx)}}return str}function parseCookiePair(cookiePair,looseMode){cookiePair=trimTerminator(cookiePair);var firstEq=cookiePair.indexOf("=");if(looseMode){if(firstEq===0){cookiePair=cookiePair.substr(1);firstEq=cookiePair.indexOf("=")}}else{if(firstEq<=0){return}}var cookieName,cookieValue;if(firstEq<=0){cookieName="";cookieValue=cookiePair.trim()}else{cookieName=cookiePair.substr(0,firstEq).trim();cookieValue=cookiePair.substr(firstEq+1).trim()}if(CONTROL_CHARS.test(cookieName)||CONTROL_CHARS.test(cookieValue)){return}var c=new Cookie;c.key=cookieName;c.value=cookieValue;return c}function parse(str,options){if(!options||typeof options!=="object"){options={}}str=str.trim();var firstSemi=str.indexOf(";");var cookiePair=firstSemi===-1?str:str.substr(0,firstSemi);var c=parseCookiePair(cookiePair,!!options.loose);if(!c){return}if(firstSemi===-1){return c}var unparsed=str.slice(firstSemi+1).trim();if(unparsed.length===0){return c}var cookie_avs=unparsed.split(";");while(cookie_avs.length){var av=cookie_avs.shift().trim();if(av.length===0){continue}var av_sep=av.indexOf("=");var av_key,av_value;if(av_sep===-1){av_key=av;av_value=null}else{av_key=av.substr(0,av_sep);av_value=av.substr(av_sep+1)}av_key=av_key.trim().toLowerCase();if(av_value){av_value=av_value.trim()}switch(av_key){case"expires":if(av_value){var exp=parseDate(av_value);if(exp){c.expires=exp}}break;case"max-age":if(av_value){if(/^-?[0-9]+$/.test(av_value)){var delta=parseInt(av_value,10);c.setMaxAge(delta)}}break;case"domain":if(av_value){var domain=av_value.trim().replace(/^\./,"");if(domain){c.domain=domain.toLowerCase()}}break;case"path":c.path=av_value&&av_value[0]==="/"?av_value:null;break;case"secure":c.secure=true;break;case"httponly":c.httpOnly=true;break;default:c.extensions=c.extensions||[];c.extensions.push(av);break}}return c}function jsonParse(str){var obj;try{obj=JSON.parse(str)}catch(e){return e}return obj}function fromJSON(str){if(!str){return null}var obj;if(typeof str==="string"){obj=jsonParse(str);if(obj instanceof Error){return null}}else{obj=str}var c=new Cookie;for(var i=0;i<Cookie.serializableProperties.length;i++){var prop=Cookie.serializableProperties[i];if(obj[prop]===undefined||obj[prop]===Cookie.prototype[prop]){continue}if(prop==="expires"||prop==="creation"||prop==="lastAccessed"){if(obj[prop]===null){c[prop]=null}else{c[prop]=obj[prop]=="Infinity"?"Infinity":new Date(obj[prop])}}else{c[prop]=obj[prop]}}return c}function cookieCompare(a,b){var cmp=0;var aPathLen=a.path?a.path.length:0;var bPathLen=b.path?b.path.length:0;cmp=bPathLen-aPathLen;if(cmp!==0){return cmp}var aTime=a.creation?a.creation.getTime():MAX_TIME;var bTime=b.creation?b.creation.getTime():MAX_TIME;cmp=aTime-bTime;if(cmp!==0){return cmp}cmp=a.creationIndex-b.creationIndex;return cmp}function permutePath(path){if(path==="/"){return["/"]}if(path.lastIndexOf("/")===path.length-1){path=path.substr(0,path.length-1)}var permutations=[path];while(path.length>1){var lindex=path.lastIndexOf("/");if(lindex===0){break}path=path.substr(0,lindex);permutations.push(path)}permutations.push("/");return permutations}function getCookieContext(url){if(url instanceof Object){return url}try{url=decodeURI(url)}catch(err){}return urlParse(url)}function Cookie(options){options=options||{};Object.keys(options).forEach(function(prop){if(Cookie.prototype.hasOwnProperty(prop)&&Cookie.prototype[prop]!==options[prop]&&prop.substr(0,1)!=="_"){this[prop]=options[prop]}},this);this.creation=this.creation||new Date;Object.defineProperty(this,"creationIndex",{configurable:false,enumerable:false,writable:true,value:++Cookie.cookiesCreated})}Cookie.cookiesCreated=0;Cookie.parse=parse;Cookie.fromJSON=fromJSON;Cookie.prototype.key="";Cookie.prototype.value="";Cookie.prototype.expires="Infinity";Cookie.prototype.maxAge=null;Cookie.prototype.domain=null;Cookie.prototype.path=null;Cookie.prototype.secure=false;Cookie.prototype.httpOnly=false;Cookie.prototype.extensions=null;Cookie.prototype.hostOnly=null;Cookie.prototype.pathIsDefault=null;Cookie.prototype.creation=null;Cookie.prototype.lastAccessed=null;Object.defineProperty(Cookie.prototype,"creationIndex",{configurable:true,enumerable:false,writable:true,value:0});Cookie.serializableProperties=Object.keys(Cookie.prototype).filter(function(prop){return!(Cookie.prototype[prop]instanceof Function||prop==="creationIndex"||prop.substr(0,1)==="_")});Cookie.prototype.inspect=function inspect(){var now=Date.now();return'Cookie="'+this.toString()+"; hostOnly="+(this.hostOnly!=null?this.hostOnly:"?")+"; aAge="+(this.lastAccessed?now-this.lastAccessed.getTime()+"ms":"?")+"; cAge="+(this.creation?now-this.creation.getTime()+"ms":"?")+'"'};if(util.inspect.custom){Cookie.prototype[util.inspect.custom]=Cookie.prototype.inspect}Cookie.prototype.toJSON=function(){var obj={};var props=Cookie.serializableProperties;for(var i=0;i<props.length;i++){var prop=props[i];if(this[prop]===Cookie.prototype[prop]){continue}if(prop==="expires"||prop==="creation"||prop==="lastAccessed"){if(this[prop]===null){obj[prop]=null}else{obj[prop]=this[prop]=="Infinity"?"Infinity":this[prop].toISOString()}}else if(prop==="maxAge"){if(this[prop]!==null){obj[prop]=this[prop]==Infinity||this[prop]==-Infinity?this[prop].toString():this[prop]}}else{if(this[prop]!==Cookie.prototype[prop]){obj[prop]=this[prop]}}}return obj};Cookie.prototype.clone=function(){return fromJSON(this.toJSON())};Cookie.prototype.validate=function validate(){if(!COOKIE_OCTETS.test(this.value)){return false}if(this.expires!=Infinity&&!(this.expires instanceof Date)&&!parseDate(this.expires)){return false}if(this.maxAge!=null&&this.maxAge<=0){return false}if(this.path!=null&&!PATH_VALUE.test(this.path)){return false}var cdomain=this.cdomain();if(cdomain){if(cdomain.match(/\.$/)){return false}var suffix=pubsuffix.getPublicSuffix(cdomain);if(suffix==null){return false}}return true};Cookie.prototype.setExpires=function setExpires(exp){if(exp instanceof Date){this.expires=exp}else{this.expires=parseDate(exp)||"Infinity"}};Cookie.prototype.setMaxAge=function setMaxAge(age){if(age===Infinity||age===-Infinity){this.maxAge=age.toString()}else{this.maxAge=age}};Cookie.prototype.cookieString=function cookieString(){var val=this.value;if(val==null){val=""}if(this.key===""){return val}return this.key+"="+val};Cookie.prototype.toString=function toString(){var str=this.cookieString();if(this.expires!=Infinity){if(this.expires instanceof Date){str+="; Expires="+formatDate(this.expires)}else{str+="; Expires="+this.expires}}if(this.maxAge!=null&&this.maxAge!=Infinity){str+="; Max-Age="+this.maxAge}if(this.domain&&!this.hostOnly){str+="; Domain="+this.domain}if(this.path){str+="; Path="+this.path}if(this.secure){str+="; Secure"}if(this.httpOnly){str+="; HttpOnly"}if(this.extensions){this.extensions.forEach(function(ext){str+="; "+ext})}return str};Cookie.prototype.TTL=function TTL(now){if(this.maxAge!=null){return this.maxAge<=0?0:this.maxAge*1e3}var expires=this.expires;if(expires!=Infinity){if(!(expires instanceof Date)){expires=parseDate(expires)||Infinity}if(expires==Infinity){return Infinity}return expires.getTime()-(now||Date.now())}return Infinity};Cookie.prototype.expiryTime=function expiryTime(now){if(this.maxAge!=null){var relativeTo=now||this.creation||new Date;var age=this.maxAge<=0?-Infinity:this.maxAge*1e3;return relativeTo.getTime()+age}if(this.expires==Infinity){return Infinity}return this.expires.getTime()};Cookie.prototype.expiryDate=function expiryDate(now){var millisec=this.expiryTime(now);if(millisec==Infinity){return new Date(MAX_TIME)}else if(millisec==-Infinity){return new Date(MIN_TIME)}else{return new Date(millisec)}};Cookie.prototype.isPersistent=function isPersistent(){return this.maxAge!=null||this.expires!=Infinity};Cookie.prototype.cdomain=Cookie.prototype.canonicalizedDomain=function canonicalizedDomain(){if(this.domain==null){return null}return canonicalDomain(this.domain)};function CookieJar(store,options){if(typeof options==="boolean"){options={rejectPublicSuffixes:options}}else if(options==null){options={}}if(options.rejectPublicSuffixes!=null){this.rejectPublicSuffixes=options.rejectPublicSuffixes}if(options.looseMode!=null){this.enableLooseMode=options.looseMode}if(!store){store=new MemoryCookieStore}this.store=store}CookieJar.prototype.store=null;CookieJar.prototype.rejectPublicSuffixes=true;CookieJar.prototype.enableLooseMode=false;var CAN_BE_SYNC=[];CAN_BE_SYNC.push("setCookie");CookieJar.prototype.setCookie=function(cookie,url,options,cb){var err;var context=getCookieContext(url);if(options instanceof Function){cb=options;options={}}var host=canonicalDomain(context.hostname);var loose=this.enableLooseMode;if(options.loose!=null){loose=options.loose}if(!(cookie instanceof Cookie)){cookie=Cookie.parse(cookie,{loose:loose})}if(!cookie){err=new Error("Cookie failed to parse");return cb(options.ignoreError?null:err)}var now=options.now||new Date;if(this.rejectPublicSuffixes&&cookie.domain){var suffix=pubsuffix.getPublicSuffix(cookie.cdomain());if(suffix==null){err=new Error("Cookie has domain set to a public suffix");return cb(options.ignoreError?null:err)}}if(cookie.domain){if(!domainMatch(host,cookie.cdomain(),false)){err=new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host);return cb(options.ignoreError?null:err)}if(cookie.hostOnly==null){cookie.hostOnly=false}}else{cookie.hostOnly=true;cookie.domain=host}if(!cookie.path||cookie.path[0]!=="/"){cookie.path=defaultPath(context.pathname);cookie.pathIsDefault=true}if(options.http===false&&cookie.httpOnly){err=new Error("Cookie is HttpOnly and this isn't an HTTP API");return cb(options.ignoreError?null:err)}var store=this.store;if(!store.updateCookie){store.updateCookie=function(oldCookie,newCookie,cb){this.putCookie(newCookie,cb)}}function withCookie(err,oldCookie){if(err){return cb(err)}var next=function(err){if(err){return cb(err)}else{cb(null,cookie)}};if(oldCookie){if(options.http===false&&oldCookie.httpOnly){err=new Error("old Cookie is HttpOnly and this isn't an HTTP API");return cb(options.ignoreError?null:err)}cookie.creation=oldCookie.creation;cookie.creationIndex=oldCookie.creationIndex;cookie.lastAccessed=now;store.updateCookie(oldCookie,cookie,next)}else{cookie.creation=cookie.lastAccessed=now;store.putCookie(cookie,next)}}store.findCookie(cookie.domain,cookie.path,cookie.key,withCookie)};CAN_BE_SYNC.push("getCookies");CookieJar.prototype.getCookies=function(url,options,cb){var context=getCookieContext(url);if(options instanceof Function){cb=options;options={}}var host=canonicalDomain(context.hostname);var path=context.pathname||"/";var secure=options.secure;if(secure==null&&context.protocol&&(context.protocol=="https:"||context.protocol=="wss:")){secure=true}var http=options.http;if(http==null){http=true}var now=options.now||Date.now();var expireCheck=options.expire!==false;var allPaths=!!options.allPaths;var store=this.store;function matchingCookie(c){if(c.hostOnly){if(c.domain!=host){return false}}else{if(!domainMatch(host,c.domain,false)){return false}}if(!allPaths&&!pathMatch(path,c.path)){return false}if(c.secure&&!secure){return false}if(c.httpOnly&&!http){return false}if(expireCheck&&c.expiryTime()<=now){store.removeCookie(c.domain,c.path,c.key,function(){});return false}return true}store.findCookies(host,allPaths?null:path,function(err,cookies){if(err){return cb(err)}cookies=cookies.filter(matchingCookie);if(options.sort!==false){cookies=cookies.sort(cookieCompare)}var now=new Date;cookies.forEach(function(c){c.lastAccessed=now});cb(null,cookies)})};CAN_BE_SYNC.push("getCookieString");CookieJar.prototype.getCookieString=function(){var args=Array.prototype.slice.call(arguments,0);var cb=args.pop();var next=function(err,cookies){if(err){cb(err)}else{cb(null,cookies.sort(cookieCompare).map(function(c){return c.cookieString()}).join("; "))}};args.push(next);this.getCookies.apply(this,args)};CAN_BE_SYNC.push("getSetCookieStrings");CookieJar.prototype.getSetCookieStrings=function(){var args=Array.prototype.slice.call(arguments,0);var cb=args.pop();var next=function(err,cookies){if(err){cb(err)}else{cb(null,cookies.map(function(c){return c.toString()}))}};args.push(next);this.getCookies.apply(this,args)};CAN_BE_SYNC.push("serialize");CookieJar.prototype.serialize=function(cb){var type=this.store.constructor.name;if(type==="Object"){type=null}var serialized={version:"tough-cookie@"+VERSION,storeType:type,rejectPublicSuffixes:!!this.rejectPublicSuffixes,cookies:[]};if(!(this.store.getAllCookies&&typeof this.store.getAllCookies==="function")){return cb(new Error("store does not support getAllCookies and cannot be serialized"))}this.store.getAllCookies(function(err,cookies){if(err){return cb(err)}serialized.cookies=cookies.map(function(cookie){cookie=cookie instanceof Cookie?cookie.toJSON():cookie;delete cookie.creationIndex;return cookie});return cb(null,serialized)})};CookieJar.prototype.toJSON=function(){return this.serializeSync()};CAN_BE_SYNC.push("_importCookies");CookieJar.prototype._importCookies=function(serialized,cb){var jar=this;var cookies=serialized.cookies;if(!cookies||!Array.isArray(cookies)){return cb(new Error("serialized jar has no cookies array"))}cookies=cookies.slice();function putNext(err){if(err){return cb(err)}if(!cookies.length){return cb(err,jar)}var cookie;try{cookie=fromJSON(cookies.shift())}catch(e){return cb(e)}if(cookie===null){return putNext(null)}jar.store.putCookie(cookie,putNext)}putNext()};CookieJar.deserialize=function(strOrObj,store,cb){if(arguments.length!==3){cb=store;store=null}var serialized;if(typeof strOrObj==="string"){serialized=jsonParse(strOrObj);if(serialized instanceof Error){return cb(serialized)}}else{serialized=strOrObj}var jar=new CookieJar(store,serialized.rejectPublicSuffixes);jar._importCookies(serialized,function(err){if(err){return cb(err)}cb(null,jar)})};CookieJar.deserializeSync=function(strOrObj,store){var serialized=typeof strOrObj==="string"?JSON.parse(strOrObj):strOrObj;var jar=new CookieJar(store,serialized.rejectPublicSuffixes);if(!jar.store.synchronous){throw new Error("CookieJar store is not synchronous; use async API instead.")}jar._importCookiesSync(serialized);return jar};CookieJar.fromJSON=CookieJar.deserializeSync;CookieJar.prototype.clone=function(newStore,cb){if(arguments.length===1){cb=newStore;newStore=null}this.serialize(function(err,serialized){if(err){return cb(err)}CookieJar.deserialize(serialized,newStore,cb)})};CAN_BE_SYNC.push("removeAllCookies");CookieJar.prototype.removeAllCookies=function(cb){var store=this.store;if(store.removeAllCookies instanceof Function&&store.removeAllCookies!==Store.prototype.removeAllCookies){return store.removeAllCookies(cb)}store.getAllCookies(function(err,cookies){if(err){return cb(err)}if(cookies.length===0){return cb(null)}var completedCount=0;var removeErrors=[];function removeCookieCb(removeErr){if(removeErr){removeErrors.push(removeErr)}completedCount++;if(completedCount===cookies.length){return cb(removeErrors.length?removeErrors[0]:null)}}cookies.forEach(function(cookie){store.removeCookie(cookie.domain,cookie.path,cookie.key,removeCookieCb)})})};CookieJar.prototype._cloneSync=syncWrap("clone");CookieJar.prototype.cloneSync=function(newStore){if(!newStore.synchronous){throw new Error("CookieJar clone destination store is not synchronous; use async API instead.")}return this._cloneSync(newStore)};function syncWrap(method){return function(){if(!this.store.synchronous){throw new Error("CookieJar store is not synchronous; use async API instead.")}var args=Array.prototype.slice.call(arguments);var syncErr,syncResult;args.push(function syncCb(err,result){syncErr=err;syncResult=result});this[method].apply(this,args);if(syncErr){throw syncErr}return syncResult}}CAN_BE_SYNC.forEach(function(method){CookieJar.prototype[method+"Sync"]=syncWrap(method)});exports.version=VERSION;exports.CookieJar=CookieJar;exports.Cookie=Cookie;exports.Store=Store;exports.MemoryCookieStore=MemoryCookieStore;exports.parseDate=parseDate;exports.formatDate=formatDate;exports.parse=parse;exports.fromJSON=fromJSON;exports.domainMatch=domainMatch;exports.defaultPath=defaultPath;exports.pathMatch=pathMatch;exports.getPublicSuffix=pubsuffix.getPublicSuffix;exports.cookieCompare=cookieCompare;exports.permuteDomain=require("./permuteDomain").permuteDomain;exports.permutePath=permutePath;exports.canonicalDomain=canonicalDomain},{"./memstore":497,"./pathMatch":498,"./permuteDomain":499,"./pubsuffix-psl":500,"./store":501,"./version":502,net:69,punycode:187,url:238,util:243}],497:[function(require,module,exports){"use strict";var Store=require("./store").Store;var permuteDomain=require("./permuteDomain").permuteDomain;var pathMatch=require("./pathMatch").pathMatch;var util=require("util");function MemoryCookieStore(){Store.call(this);this.idx={}}util.inherits(MemoryCookieStore,Store);exports.MemoryCookieStore=MemoryCookieStore;MemoryCookieStore.prototype.idx=null;MemoryCookieStore.prototype.synchronous=true;MemoryCookieStore.prototype.inspect=function(){return"{ idx: "+util.inspect(this.idx,false,2)+" }"};if(util.inspect.custom){MemoryCookieStore.prototype[util.inspect.custom]=MemoryCookieStore.prototype.inspect}MemoryCookieStore.prototype.findCookie=function(domain,path,key,cb){if(!this.idx[domain]){return cb(null,undefined)}if(!this.idx[domain][path]){return cb(null,undefined)}return cb(null,this.idx[domain][path][key]||null)};MemoryCookieStore.prototype.findCookies=function(domain,path,cb){var results=[];if(!domain){return cb(null,[])}var pathMatcher;if(!path){pathMatcher=function matchAll(domainIndex){for(var curPath in domainIndex){var pathIndex=domainIndex[curPath];for(var key in pathIndex){results.push(pathIndex[key])}}}}else{pathMatcher=function matchRFC(domainIndex){Object.keys(domainIndex).forEach(function(cookiePath){if(pathMatch(path,cookiePath)){var pathIndex=domainIndex[cookiePath];for(var key in pathIndex){results.push(pathIndex[key])}}})}}var domains=permuteDomain(domain)||[domain];var idx=this.idx;domains.forEach(function(curDomain){var domainIndex=idx[curDomain];if(!domainIndex){return}pathMatcher(domainIndex)});cb(null,results)};MemoryCookieStore.prototype.putCookie=function(cookie,cb){if(!this.idx[cookie.domain]){this.idx[cookie.domain]={}}if(!this.idx[cookie.domain][cookie.path]){this.idx[cookie.domain][cookie.path]={}}this.idx[cookie.domain][cookie.path][cookie.key]=cookie;cb(null)};MemoryCookieStore.prototype.updateCookie=function(oldCookie,newCookie,cb){this.putCookie(newCookie,cb)};MemoryCookieStore.prototype.removeCookie=function(domain,path,key,cb){if(this.idx[domain]&&this.idx[domain][path]&&this.idx[domain][path][key]){delete this.idx[domain][path][key]}cb(null)};MemoryCookieStore.prototype.removeCookies=function(domain,path,cb){if(this.idx[domain]){if(path){delete this.idx[domain][path]}else{delete this.idx[domain]}}return cb(null)};MemoryCookieStore.prototype.removeAllCookies=function(cb){this.idx={};return cb(null)};MemoryCookieStore.prototype.getAllCookies=function(cb){var cookies=[];var idx=this.idx;var domains=Object.keys(idx);domains.forEach(function(domain){var paths=Object.keys(idx[domain]);paths.forEach(function(path){var keys=Object.keys(idx[domain][path]);keys.forEach(function(key){if(key!==null){cookies.push(idx[domain][path][key])}})})});cookies.sort(function(a,b){return(a.creationIndex||0)-(b.creationIndex||0)});cb(null,cookies)}},{"./pathMatch":498,"./permuteDomain":499,"./store":501,util:243}],498:[function(require,module,exports){"use strict";function pathMatch(reqPath,cookiePath){if(cookiePath===reqPath){return true}var idx=reqPath.indexOf(cookiePath);if(idx===0){if(cookiePath.substr(-1)==="/"){return true}if(reqPath.substr(cookiePath.length,1)==="/"){return true}}return false}exports.pathMatch=pathMatch},{}],499:[function(require,module,exports){"use strict";var pubsuffix=require("./pubsuffix-psl");function permuteDomain(domain){var pubSuf=pubsuffix.getPublicSuffix(domain);if(!pubSuf){return null}if(pubSuf==domain){return[domain]}var prefix=domain.slice(0,-(pubSuf.length+1));var parts=prefix.split(".").reverse();var cur=pubSuf;var permutations=[cur];while(parts.length){cur=parts.shift()+"."+cur;permutations.push(cur)}return permutations}exports.permuteDomain=permuteDomain},{"./pubsuffix-psl":500}],500:[function(require,module,exports){"use strict";var psl=require("psl");function getPublicSuffix(domain){return psl.get(domain)}exports.getPublicSuffix=getPublicSuffix},{psl:447}],501:[function(require,module,exports){"use strict";function Store(){}exports.Store=Store;Store.prototype.synchronous=false;Store.prototype.findCookie=function(domain,path,key,cb){throw new Error("findCookie is not implemented")};Store.prototype.findCookies=function(domain,path,cb){throw new Error("findCookies is not implemented")};Store.prototype.putCookie=function(cookie,cb){throw new Error("putCookie is not implemented")};Store.prototype.updateCookie=function(oldCookie,newCookie,cb){throw new Error("updateCookie is not implemented")};Store.prototype.removeCookie=function(domain,path,key,cb){throw new Error("removeCookie is not implemented")};Store.prototype.removeCookies=function(domain,path,cb){throw new Error("removeCookies is not implemented")};Store.prototype.removeAllCookies=function(cb){throw new Error("removeAllCookies is not implemented")};Store.prototype.getAllCookies=function(cb){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}},{}],502:[function(require,module,exports){module.exports="2.5.0"},{}],503:[function(require,module,exports){(function(process){(function(){"use strict";var net=require("net"),tls=require("tls"),http=require("http"),https=require("https"),events=require("events"),assert=require("assert"),util=require("util"),Buffer=require("safe-buffer").Buffer;exports.httpOverHttp=httpOverHttp;exports.httpsOverHttp=httpsOverHttp;exports.httpOverHttps=httpOverHttps;exports.httpsOverHttps=httpsOverHttps;function httpOverHttp(options){var agent=new TunnelingAgent(options);agent.request=http.request;return agent}function httpsOverHttp(options){var agent=new TunnelingAgent(options);agent.request=http.request;agent.createSocket=createSecureSocket;agent.defaultPort=443;return agent}function httpOverHttps(options){var agent=new TunnelingAgent(options);agent.request=https.request;return agent}function httpsOverHttps(options){var agent=new TunnelingAgent(options);agent.request=https.request;agent.createSocket=createSecureSocket;agent.defaultPort=443;return agent}function TunnelingAgent(options){var self=this;self.options=options||{};self.proxyOptions=self.options.proxy||{};self.maxSockets=self.options.maxSockets||http.Agent.defaultMaxSockets;self.requests=[];self.sockets=[];self.on("free",function onFree(socket,host,port){for(var i=0,len=self.requests.length;i<len;++i){var pending=self.requests[i];if(pending.host===host&&pending.port===port){self.requests.splice(i,1);pending.request.onSocket(socket);return}}socket.destroy();self.removeSocket(socket)})}util.inherits(TunnelingAgent,events.EventEmitter);TunnelingAgent.prototype.addRequest=function addRequest(req,options){var self=this;if(typeof options==="string"){options={host:options,port:arguments[2],path:arguments[3]}}if(self.sockets.length>=this.maxSockets){self.requests.push({host:options.host,port:options.port,request:req});return}self.createConnection({host:options.host,port:options.port,request:req})};TunnelingAgent.prototype.createConnection=function createConnection(pending){var self=this;self.createSocket(pending,function(socket){socket.on("free",onFree);socket.on("close",onCloseOrRemove);socket.on("agentRemove",onCloseOrRemove);pending.request.onSocket(socket);function onFree(){self.emit("free",socket,pending.host,pending.port)}function onCloseOrRemove(err){self.removeSocket(socket);socket.removeListener("free",onFree);socket.removeListener("close",onCloseOrRemove);socket.removeListener("agentRemove",onCloseOrRemove)}})};TunnelingAgent.prototype.createSocket=function createSocket(options,cb){var self=this;var placeholder={};self.sockets.push(placeholder);var connectOptions=mergeOptions({},self.proxyOptions,{method:"CONNECT",path:options.host+":"+options.port,agent:false});if(connectOptions.proxyAuth){connectOptions.headers=connectOptions.headers||{};connectOptions.headers["Proxy-Authorization"]="Basic "+Buffer.from(connectOptions.proxyAuth).toString("base64")}debug("making CONNECT request");var connectReq=self.request(connectOptions);connectReq.useChunkedEncodingByDefault=false;connectReq.once("response",onResponse);connectReq.once("upgrade",onUpgrade);connectReq.once("connect",onConnect);connectReq.once("error",onError);connectReq.end();function onResponse(res){res.upgrade=true}function onUpgrade(res,socket,head){process.nextTick(function(){onConnect(res,socket,head)})}function onConnect(res,socket,head){connectReq.removeAllListeners();socket.removeAllListeners();if(res.statusCode===200){assert.equal(head.length,0);debug("tunneling connection has established");self.sockets[self.sockets.indexOf(placeholder)]=socket;cb(socket)}else{debug("tunneling socket could not be established, statusCode=%d",res.statusCode);var error=new Error("tunneling socket could not be established, "+"statusCode="+res.statusCode);error.code="ECONNRESET";options.request.emit("error",error);self.removeSocket(placeholder)}}function onError(cause){connectReq.removeAllListeners();debug("tunneling socket could not be established, cause=%s\n",cause.message,cause.stack);var error=new Error("tunneling socket could not be established, "+"cause="+cause.message);error.code="ECONNRESET";options.request.emit("error",error);self.removeSocket(placeholder)}};TunnelingAgent.prototype.removeSocket=function removeSocket(socket){var pos=this.sockets.indexOf(socket);if(pos===-1)return;this.sockets.splice(pos,1);var pending=this.requests.shift();if(pending){this.createConnection(pending)}};function createSecureSocket(options,cb){var self=this;TunnelingAgent.prototype.createSocket.call(self,options,function(socket){var secureSocket=tls.connect(0,mergeOptions({},self.options,{servername:options.host,socket:socket}));self.sockets[self.sockets.indexOf(socket)]=secureSocket;cb(secureSocket)})}function mergeOptions(target){for(var i=1,len=arguments.length;i<len;++i){var overrides=arguments[i];if(typeof overrides==="object"){var keys=Object.keys(overrides);for(var j=0,keyLen=keys.length;j<keyLen;++j){var k=keys[j];if(overrides[k]!==undefined){target[k]=overrides[k]}}}}return target}var debug;if(process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)){debug=function(){var args=Array.prototype.slice.call(arguments);if(typeof args[0]==="string"){args[0]="TUNNEL: "+args[0]}else{args.unshift("TUNNEL:")}console.error.apply(console,args)}}else{debug=function(){}}exports.debug=debug}).call(this)}).call(this,require("_process"))},{_process:179,assert:16,events:110,http:230,https:142,net:69,"safe-buffer":469,tls:69,util:243}],504:[function(require,module,exports){(function(nacl){"use strict";var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i<init.length;i++)r[i]=init[i];return r};var randombytes=function(){throw new Error("no PRNG")};var _0=new Uint8Array(16);var _9=new Uint8Array(32);_9[0]=9;var gf0=gf(),gf1=gf([1]),_121665=gf([56129,1]),D=gf([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),D2=gf([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),X=gf([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),Y=gf([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),I=gf([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function ts64(x,i,h,l){x[i]=h>>24&255;x[i+1]=h>>16&255;x[i+2]=h>>8&255;x[i+3]=h&255;x[i+4]=l>>24&255;x[i+5]=l>>16&255;x[i+6]=l>>8&255;x[i+7]=l&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i<n;i++)d|=x[xi+i]^y[yi+i];return(1&d-1>>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core_salsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}x0=x0+j0|0;x1=x1+j1|0;x2=x2+j2|0;x3=x3+j3|0;x4=x4+j4|0;x5=x5+j5|0;x6=x6+j6|0;x7=x7+j7|0;x8=x8+j8|0;x9=x9+j9|0;x10=x10+j10|0;x11=x11+j11|0;x12=x12+j12|0;x13=x13+j13|0;x14=x14+j14|0;x15=x15+j15|0;o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x1>>>0&255;o[5]=x1>>>8&255;o[6]=x1>>>16&255;o[7]=x1>>>24&255;o[8]=x2>>>0&255;o[9]=x2>>>8&255;o[10]=x2>>>16&255;o[11]=x2>>>24&255;o[12]=x3>>>0&255;o[13]=x3>>>8&255;o[14]=x3>>>16&255;o[15]=x3>>>24&255;o[16]=x4>>>0&255;o[17]=x4>>>8&255;o[18]=x4>>>16&255;o[19]=x4>>>24&255
|
|
57
|
-
;o[20]=x5>>>0&255;o[21]=x5>>>8&255;o[22]=x5>>>16&255;o[23]=x5>>>24&255;o[24]=x6>>>0&255;o[25]=x6>>>8&255;o[26]=x6>>>16&255;o[27]=x6>>>24&255;o[28]=x7>>>0&255;o[29]=x7>>>8&255;o[30]=x7>>>16&255;o[31]=x7>>>24&255;o[32]=x8>>>0&255;o[33]=x8>>>8&255;o[34]=x8>>>16&255;o[35]=x8>>>24&255;o[36]=x9>>>0&255;o[37]=x9>>>8&255;o[38]=x9>>>16&255;o[39]=x9>>>24&255;o[40]=x10>>>0&255;o[41]=x10>>>8&255;o[42]=x10>>>16&255;o[43]=x10>>>24&255;o[44]=x11>>>0&255;o[45]=x11>>>8&255;o[46]=x11>>>16&255;o[47]=x11>>>24&255;o[48]=x12>>>0&255;o[49]=x12>>>8&255;o[50]=x12>>>16&255;o[51]=x12>>>24&255;o[52]=x13>>>0&255;o[53]=x13>>>8&255;o[54]=x13>>>16&255;o[55]=x13>>>24&255;o[56]=x14>>>0&255;o[57]=x14>>>8&255;o[58]=x14>>>16&255;o[59]=x14>>>24&255;o[60]=x15>>>0&255;o[61]=x15>>>8&255;o[62]=x15>>>16&255;o[63]=x15>>>24&255}function core_hsalsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x5>>>0&255;o[5]=x5>>>8&255;o[6]=x5>>>16&255;o[7]=x5>>>24&255;o[8]=x10>>>0&255;o[9]=x10>>>8&255;o[10]=x10>>>16&255;o[11]=x10>>>24&255;o[12]=x15>>>0&255;o[13]=x15>>>8&255;o[14]=x15>>>16&255;o[15]=x15>>>24&255;o[16]=x6>>>0&255;o[17]=x6>>>8&255;o[18]=x6>>>16&255;o[19]=x6>>>24&255;o[20]=x7>>>0&255;o[21]=x7>>>8&255;o[22]=x7>>>16&255;o[23]=x7>>>24&255;o[24]=x8>>>0&255;o[25]=x8>>>8&255;o[26]=x8>>>16&255;o[27]=x8>>>24&255;o[28]=x9>>>0&255;o[29]=x9>>>8&255;o[30]=x9>>>16&255;o[31]=x9>>>24&255}function crypto_core_salsa20(out,inp,k,c){core_salsa20(out,inp,k,c)}function crypto_core_hsalsa20(out,inp,k,c){core_hsalsa20(out,inp,k,c)}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=m[mpos+i]^x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64;mpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<b;i++)c[cpos+i]=m[mpos+i]^x[i]}return 0}function crypto_stream_salsa20(c,cpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<b;i++)c[cpos+i]=x[i]}return 0}function crypto_stream(c,cpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);var sn=new Uint8Array(8);for(var i=0;i<8;i++)sn[i]=n[i+16];return crypto_stream_salsa20(c,cpos,d,sn,s)}function crypto_stream_xor(c,cpos,m,mpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);var sn=new Uint8Array(8);for(var i=0;i<8;i++)sn[i]=n[i+16];return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s)}var poly1305=function(key){this.buffer=new Uint8Array(16);this.r=new Uint16Array(10);this.h=new Uint16Array(10);this.pad=new Uint16Array(8);this.leftover=0;this.fin=0;var t0,t1,t2,t3,t4,t5,t6,t7;t0=key[0]&255|(key[1]&255)<<8;this.r[0]=t0&8191;t1=key[2]&255|(key[3]&255)<<8;this.r[1]=(t0>>>13|t1<<3)&8191;t2=key[4]&255|(key[5]&255)<<8;this.r[2]=(t1>>>10|t2<<6)&7939;t3=key[6]&255|(key[7]&255)<<8;this.r[3]=(t2>>>7|t3<<9)&8191;t4=key[8]&255|(key[9]&255)<<8;this.r[4]=(t3>>>4|t4<<12)&255;this.r[5]=t4>>>1&8190;t5=key[10]&255|(key[11]&255)<<8;this.r[6]=(t4>>>14|t5<<2)&8191;t6=key[12]&255|(key[13]&255)<<8;this.r[7]=(t5>>>11|t6<<5)&8065;t7=key[14]&255|(key[15]&255)<<8;this.r[8]=(t6>>>8|t7<<8)&8191;this.r[9]=t7>>>5&127;this.pad[0]=key[16]&255|(key[17]&255)<<8;this.pad[1]=key[18]&255|(key[19]&255)<<8;this.pad[2]=key[20]&255|(key[21]&255)<<8;this.pad[3]=key[22]&255|(key[23]&255)<<8;this.pad[4]=key[24]&255|(key[25]&255)<<8;this.pad[5]=key[26]&255|(key[27]&255)<<8;this.pad[6]=key[28]&255|(key[29]&255)<<8;this.pad[7]=key[30]&255|(key[31]&255)<<8};poly1305.prototype.blocks=function(m,mpos,bytes){var hibit=this.fin?0:1<<11;var t0,t1,t2,t3,t4,t5,t6,t7,c;var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;var h0=this.h[0],h1=this.h[1],h2=this.h[2],h3=this.h[3],h4=this.h[4],h5=this.h[5],h6=this.h[6],h7=this.h[7],h8=this.h[8],h9=this.h[9];var r0=this.r[0],r1=this.r[1],r2=this.r[2],r3=this.r[3],r4=this.r[4],r5=this.r[5],r6=this.r[6],r7=this.r[7],r8=this.r[8],r9=this.r[9];while(bytes>=16){t0=m[mpos+0]&255|(m[mpos+1]&255)<<8;h0+=t0&8191;t1=m[mpos+2]&255|(m[mpos+3]&255)<<8;h1+=(t0>>>13|t1<<3)&8191;t2=m[mpos+4]&255|(m[mpos+5]&255)<<8;h2+=(t1>>>10|t2<<6)&8191;t3=m[mpos+6]&255|(m[mpos+7]&255)<<8;h3+=(t2>>>7|t3<<9)&8191;t4=m[mpos+8]&255|(m[mpos+9]&255)<<8;h4+=(t3>>>4|t4<<12)&8191;h5+=t4>>>1&8191;t5=m[mpos+10]&255|(m[mpos+11]&255)<<8;h6+=(t4>>>14|t5<<2)&8191;t6=m[mpos+12]&255|(m[mpos+13]&255)<<8;h7+=(t5>>>11|t6<<5)&8191;t7=m[mpos+14]&255|(m[mpos+15]&255)<<8;h8+=(t6>>>8|t7<<8)&8191;h9+=t7>>>5|hibit;c=0;d0=c;d0+=h0*r0;d0+=h1*(5*r9);d0+=h2*(5*r8);d0+=h3*(5*r7);d0+=h4*(5*r6);c=d0>>>13;d0&=8191;d0+=h5*(5*r5);d0+=h6*(5*r4);d0+=h7*(5*r3);d0+=h8*(5*r2);d0+=h9*(5*r1);c+=d0>>>13;d0&=8191;d1=c;d1+=h0*r1;d1+=h1*r0;d1+=h2*(5*r9);d1+=h3*(5*r8);d1+=h4*(5*r7);c=d1>>>13;d1&=8191;d1+=h5*(5*r6);d1+=h6*(5*r5);d1+=h7*(5*r4);d1+=h8*(5*r3);d1+=h9*(5*r2);c+=d1>>>13;d1&=8191;d2=c;d2+=h0*r2;d2+=h1*r1;d2+=h2*r0;d2+=h3*(5*r9);d2+=h4*(5*r8);c=d2>>>13;d2&=8191;d2+=h5*(5*r7);d2+=h6*(5*r6);d2+=h7*(5*r5);d2+=h8*(5*r4);d2+=h9*(5*r3);c+=d2>>>13;d2&=8191;d3=c;d3+=h0*r3;d3+=h1*r2;d3+=h2*r1;d3+=h3*r0;d3+=h4*(5*r9);c=d3>>>13;d3&=8191;d3+=h5*(5*r8);d3+=h6*(5*r7);d3+=h7*(5*r6);d3+=h8*(5*r5);d3+=h9*(5*r4);c+=d3>>>13;d3&=8191;d4=c;d4+=h0*r4;d4+=h1*r3;d4+=h2*r2;d4+=h3*r1;d4+=h4*r0;c=d4>>>13;d4&=8191;d4+=h5*(5*r9);d4+=h6*(5*r8);d4+=h7*(5*r7);d4+=h8*(5*r6);d4+=h9*(5*r5);c+=d4>>>13;d4&=8191;d5=c;d5+=h0*r5;d5+=h1*r4;d5+=h2*r3;d5+=h3*r2;d5+=h4*r1;c=d5>>>13;d5&=8191;d5+=h5*r0;d5+=h6*(5*r9);d5+=h7*(5*r8);d5+=h8*(5*r7);d5+=h9*(5*r6);c+=d5>>>13;d5&=8191;d6=c;d6+=h0*r6;d6+=h1*r5;d6+=h2*r4;d6+=h3*r3;d6+=h4*r2;c=d6>>>13;d6&=8191;d6+=h5*r1;d6+=h6*r0;d6+=h7*(5*r9);d6+=h8*(5*r8);d6+=h9*(5*r7);c+=d6>>>13;d6&=8191;d7=c;d7+=h0*r7;d7+=h1*r6;d7+=h2*r5;d7+=h3*r4;d7+=h4*r3;c=d7>>>13;d7&=8191;d7+=h5*r2;d7+=h6*r1;d7+=h7*r0;d7+=h8*(5*r9);d7+=h9*(5*r8);c+=d7>>>13;d7&=8191;d8=c;d8+=h0*r8;d8+=h1*r7;d8+=h2*r6;d8+=h3*r5;d8+=h4*r4;c=d8>>>13;d8&=8191;d8+=h5*r3;d8+=h6*r2;d8+=h7*r1;d8+=h8*r0;d8+=h9*(5*r9);c+=d8>>>13;d8&=8191;d9=c;d9+=h0*r9;d9+=h1*r8;d9+=h2*r7;d9+=h3*r6;d9+=h4*r5;c=d9>>>13;d9&=8191;d9+=h5*r4;d9+=h6*r3;d9+=h7*r2;d9+=h8*r1;d9+=h9*r0;c+=d9>>>13;d9&=8191;c=(c<<2)+c|0;c=c+d0|0;d0=c&8191;c=c>>>13;d1+=c;h0=d0;h1=d1;h2=d2;h3=d3;h4=d4;h5=d5;h6=d6;h7=d7;h8=d8;h9=d9;mpos+=16;bytes-=16}this.h[0]=h0;this.h[1]=h1;this.h[2]=h2;this.h[3]=h3;this.h[4]=h4;this.h[5]=h5;this.h[6]=h6;this.h[7]=h7;this.h[8]=h8;this.h[9]=h9};poly1305.prototype.finish=function(mac,macpos){var g=new Uint16Array(10);var c,mask,f,i;if(this.leftover){i=this.leftover;this.buffer[i++]=1;for(;i<16;i++)this.buffer[i]=0;this.fin=1;this.blocks(this.buffer,0,16)}c=this.h[1]>>>13;this.h[1]&=8191;for(i=2;i<10;i++){this.h[i]+=c;c=this.h[i]>>>13;this.h[i]&=8191}this.h[0]+=c*5;c=this.h[0]>>>13;this.h[0]&=8191;this.h[1]+=c;c=this.h[1]>>>13;this.h[1]&=8191;this.h[2]+=c;g[0]=this.h[0]+5;c=g[0]>>>13;g[0]&=8191;for(i=1;i<10;i++){g[i]=this.h[i]+c;c=g[i]>>>13;g[i]&=8191}g[9]-=1<<13;mask=(c^1)-1;for(i=0;i<10;i++)g[i]&=mask;mask=~mask;for(i=0;i<10;i++)this.h[i]=this.h[i]&mask|g[i];this.h[0]=(this.h[0]|this.h[1]<<13)&65535;this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535;this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535;this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535;this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535;this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535;this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535;this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535;f=this.h[0]+this.pad[0];this.h[0]=f&65535;for(i=1;i<8;i++){f=(this.h[i]+this.pad[i]|0)+(f>>>16)|0;this.h[i]=f&65535}mac[macpos+0]=this.h[0]>>>0&255;mac[macpos+1]=this.h[0]>>>8&255;mac[macpos+2]=this.h[1]>>>0&255;mac[macpos+3]=this.h[1]>>>8&255;mac[macpos+4]=this.h[2]>>>0&255;mac[macpos+5]=this.h[2]>>>8&255;mac[macpos+6]=this.h[3]>>>0&255;mac[macpos+7]=this.h[3]>>>8&255;mac[macpos+8]=this.h[4]>>>0&255;mac[macpos+9]=this.h[4]>>>8&255;mac[macpos+10]=this.h[5]>>>0&255;mac[macpos+11]=this.h[5]>>>8&255;mac[macpos+12]=this.h[6]>>>0&255;mac[macpos+13]=this.h[6]>>>8&255;mac[macpos+14]=this.h[7]>>>0&255;mac[macpos+15]=this.h[7]>>>8&255};poly1305.prototype.update=function(m,mpos,bytes){var i,want;if(this.leftover){want=16-this.leftover;if(want>bytes)want=bytes;for(i=0;i<want;i++)this.buffer[this.leftover+i]=m[mpos+i];bytes-=want;mpos+=want;this.leftover+=want;if(this.leftover<16)return;this.blocks(this.buffer,0,16);this.leftover=0}if(bytes>=16){want=bytes-bytes%16;this.blocks(m,mpos,want);mpos+=want;bytes-=want}if(bytes){for(i=0;i<bytes;i++)this.buffer[this.leftover+i]=m[mpos+i];this.leftover+=bytes}};function crypto_onetimeauth(out,outpos,m,mpos,n,k){var s=new poly1305(k);s.update(m,mpos,n);s.finish(out,outpos);return 0}function crypto_onetimeauth_verify(h,hpos,m,mpos,n,k){var x=new Uint8Array(16);crypto_onetimeauth(x,0,m,mpos,n,k);return crypto_verify_16(h,hpos,x,0)}function crypto_secretbox(c,m,d,n,k){var i;if(d<32)return-1;crypto_stream_xor(c,0,m,0,d,n,k);crypto_onetimeauth(c,16,c,32,d-32,c);for(i=0;i<16;i++)c[i]=0;return 0}function crypto_secretbox_open(m,c,d,n,k){var i;var x=new Uint8Array(32);if(d<32)return-1;crypto_stream(x,0,32,n,k);if(crypto_onetimeauth_verify(c,16,c,32,d-32,x)!==0)return-1;crypto_stream_xor(m,0,c,0,d,n,k);for(i=0;i<32;i++)m[i]=0;return 0}function set25519(r,a){var i;for(i=0;i<16;i++)r[i]=a[i]|0}function car25519(o){var i,v,c=1;for(i=0;i<16;i++){v=o[i]+c+65535;c=Math.floor(v/65536);o[i]=v-c*65536}o[0]+=c-1+37*(c-1)}function sel25519(p,q,b){var t,c=~(b-1);for(var i=0;i<16;i++){t=c&(p[i]^q[i]);p[i]^=t;q[i]^=t}}function pack25519(o,n){var i,j,b;var m=gf(),t=gf();for(i=0;i<16;i++)t[i]=n[i];car25519(t);car25519(t);car25519(t);for(j=0;j<2;j++){m[0]=t[0]-65517;for(i=1;i<15;i++){m[i]=t[i]-65535-(m[i-1]>>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]+b[i]}function Z(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]-b[i]}function M(o,a,b){var v,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8],b9=b[9],b10=b[10],b11=b[11],b12=b[12],b13=b[13],b14=b[14],b15=b[15];v=a[0];t0+=v*b0;t1+=v*b1;t2+=v*b2;t3+=v*b3;t4+=v*b4;t5+=v*b5;t6+=v*b6;t7+=v*b7;t8+=v*b8;t9+=v*b9;t10+=v*b10;t11+=v*b11;t12+=v*b12;t13+=v*b13;t14+=v*b14;t15+=v*b15;v=a[1];t1+=v*b0;t2+=v*b1;t3+=v*b2;t4+=v*b3;t5+=v*b4;t6+=v*b5;t7+=v*b6;t8+=v*b7;t9+=v*b8;t10+=v*b9;t11+=v*b10;t12+=v*b11;t13+=v*b12;t14+=v*b13;t15+=v*b14;t16+=v*b15;v=a[2];t2+=v*b0;t3+=v*b1;t4+=v*b2;t5+=v*b3;t6+=v*b4;t7+=v*b5;t8+=v*b6;t9+=v*b7;t10+=v*b8;t11+=v*b9;t12+=v*b10;t13+=v*b11;t14+=v*b12;t15+=v*b13;t16+=v*b14;t17+=v*b15;v=a[3];t3+=v*b0;t4+=v*b1;t5+=v*b2;t6+=v*b3;t7+=v*b4;t8+=v*b5;t9+=v*b6;t10+=v*b7;t11+=v*b8;t12+=v*b9;t13+=v*b10;t14+=v*b11;t15+=v*b12;t16+=v*b13;t17+=v*b14;t18+=v*b15;v=a[4];t4+=v*b0;t5+=v*b1;t6+=v*b2;t7+=v*b3;t8+=v*b4;t9+=v*b5;t10+=v*b6;t11+=v*b7;t12+=v*b8;t13+=v*b9;t14+=v*b10;t15+=v*b11;t16+=v*b12;t17+=v*b13;t18+=v*b14;t19+=v*b15;v=a[5];t5+=v*b0;t6+=v*b1;t7+=v*b2;t8+=v*b3;t9+=v*b4;t10+=v*b5;t11+=v*b6;t12+=v*b7;t13+=v*b8;t14+=v*b9;t15+=v*b10;t16+=v*b11;t17+=v*b12;t18+=v*b13;t19+=v*b14;t20+=v*b15;v=a[6];t6+=v*b0;t7+=v*b1;t8+=v*b2;t9+=v*b3;t10+=v*b4;t11+=v*b5;t12+=v*b6;t13+=v*b7;t14+=v*b8;t15+=v*b9;t16+=v*b10;t17+=v*b11;t18+=v*b12;t19+=v*b13;t20+=v*b14;t21+=v*b15;v=a[7];t7+=v*b0;t8+=v*b1;t9+=v*b2;t10+=v*b3;t11+=v*b4;t12+=v*b5;t13+=v*b6;t14+=v*b7;t15+=v*b8;t16+=v*b9;t17+=v*b10;t18+=v*b11;t19+=v*b12;t20+=v*b13;t21+=v*b14;t22+=v*b15;v=a[8];t8+=v*b0;t9+=v*b1;t10+=v*b2;t11+=v*b3;t12+=v*b4;t13+=v*b5;t14+=v*b6;t15+=v*b7;t16+=v*b8;t17+=v*b9;t18+=v*b10;t19+=v*b11;t20+=v*b12;t21+=v*b13;t22+=v*b14;t23+=v*b15;v=a[9];t9+=v*b0;t10+=v*b1;t11+=v*b2;t12+=v*b3;t13+=v*b4;t14+=v*b5;t15+=v*b6;t16+=v*b7;t17+=v*b8;t18+=v*b9;t19+=v*b10;t20+=v*b11;t21+=v*b12;t22+=v*b13;t23+=v*b14;t24+=v*b15;v=a[10];t10+=v*b0;t11+=v*b1;t12+=v*b2;t13+=v*b3;t14+=v*b4;t15+=v*b5;t16+=v*b6;t17+=v*b7;t18+=v*b8;t19+=v*b9;t20+=v*b10;t21+=v*b11;t22+=v*b12;t23+=v*b13;t24+=v*b14;t25+=v*b15;v=a[11];t11+=v*b0;t12+=v*b1;t13+=v*b2;t14+=v*b3;t15+=v*b4;t16+=v*b5;t17+=v*b6;t18+=v*b7;t19+=v*b8;t20+=v*b9;t21+=v*b10;t22+=v*b11;t23+=v*b12;t24+=v*b13;t25+=v*b14;t26+=v*b15;v=a[12];t12+=v*b0;t13+=v*b1;t14+=v*b2;t15+=v*b3;t16+=v*b4;t17+=v*b5;t18+=v*b6;t19+=v*b7;t20+=v*b8;t21+=v*b9;t22+=v*b10;t23+=v*b11;t24+=v*b12;t25+=v*b13;t26+=v*b14;t27+=v*b15;v=a[13];t13+=v*b0;t14+=v*b1;t15+=v*b2;t16+=v*b3;t17+=v*b4;t18+=v*b5;t19+=v*b6;t20+=v*b7;t21+=v*b8;t22+=v*b9;t23+=v*b10;t24+=v*b11;t25+=v*b12;t26+=v*b13;t27+=v*b14;t28+=v*b15;v=a[14];t14+=v*b0;t15+=v*b1;t16+=v*b2;t17+=v*b3;t18+=v*b4;t19+=v*b5;t20+=v*b6;t21+=v*b7;t22+=v*b8;t23+=v*b9;t24+=v*b10;t25+=v*b11;t26+=v*b12;t27+=v*b13;t28+=v*b14;t29+=v*b15;v=a[15];t15+=v*b0;t16+=v*b1;t17+=v*b2;t18+=v*b3;t19+=v*b4;t20+=v*b5;t21+=v*b6;t22+=v*b7;t23+=v*b8;t24+=v*b9;t25+=v*b10;t26+=v*b11;t27+=v*b12;t28+=v*b13;t29+=v*b14;t30+=v*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z[i]=n[i];z[31]=n[31]&127|64;z[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function crypto_hashblocks_hl(hh,hl,m,n){var wh=new Int32Array(16),wl=new Int32Array(16),bh0,bh1,bh2,bh3,bh4,bh5,bh6,bh7,bl0,bl1,bl2,bl3,bl4,bl5,bl6,bl7,th,tl,i,j,h,l,a,b,c,d;var ah0=hh[0],ah1=hh[1],ah2=hh[2],ah3=hh[3],ah4=hh[4],ah5=hh[5],ah6=hh[6],ah7=hh[7],al0=hl[0],al1=hl[1],al2=hl[2],al3=hl[3],al4=hl[4],al5=hl[5],al6=hl[6],al7=hl[7];var pos=0;while(n>=128){for(i=0;i<16;i++){j=8*i+pos;wh[i]=m[j+0]<<24|m[j+1]<<16|m[j+2]<<8|m[j+3];wl[i]=m[j+4]<<24|m[j+5]<<16|m[j+6]<<8|m[j+7]}for(i=0;i<80;i++){bh0=ah0;bh1=ah1;bh2=ah2;bh3=ah3;bh4=ah4;bh5=ah5;bh6=ah6;bh7=ah7;bl0=al0;bl1=al1;bl2=al2;bl3=al3;bl4=al4;bl5=al5;bl6=al6;bl7=al7;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah4>>>14|al4<<32-14)^(ah4>>>18|al4<<32-18)^(al4>>>41-32|ah4<<32-(41-32));l=(al4>>>14|ah4<<32-14)^(al4>>>18|ah4<<32-18)^(ah4>>>41-32|al4<<32-(41-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah4&ah5^~ah4&ah6;l=al4&al5^~al4&al6;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=K[i*2];l=K[i*2+1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=wh[i%16];l=wl[i%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;th=c&65535|d<<16;tl=a&65535|b<<16;h=th;l=tl;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah0>>>28|al0<<32-28)^(al0>>>34-32|ah0<<32-(34-32))^(al0>>>39-32|ah0<<32-(39-32));l=(al0>>>28|ah0<<32-28)^(ah0>>>34-32|al0<<32-(34-32))^(ah0>>>39-32|al0<<32-(39-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah0&ah1^ah0&ah2^ah1&ah2;l=al0&al1^al0&al2^al1&al2;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh7=c&65535|d<<16;bl7=a&65535|b<<16;h=bh3;l=bl3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=th;l=tl;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh3=c&65535|d<<16;bl3=a&65535|b<<16;ah1=bh0;ah2=bh1;ah3=bh2;ah4=bh3;ah5=bh4;ah6=bh5;ah7=bh6;ah0=bh7;al1=bl0;al2=bl1;al3=bl2;al4=bl3;al5=bl4;al6=bl5;al7=bl6;al0=bl7;if(i%16===15){for(j=0;j<16;j++){h=wh[j];l=wl[j];a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=wh[(j+9)%16];l=wl[(j+9)%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+1)%16];tl=wl[(j+1)%16];h=(th>>>1|tl<<32-1)^(th>>>8|tl<<32-8)^th>>>7;l=(tl>>>1|th<<32-1)^(tl>>>8|th<<32-8)^(tl>>>7|th<<32-7);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+14)%16];tl=wl[(j+14)%16];h=(th>>>19|tl<<32-19)^(tl>>>61-32|th<<32-(61-32))^th>>>6;l=(tl>>>19|th<<32-19)^(th>>>61-32|tl<<32-(61-32))^(tl>>>6|th<<32-6);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;wh[j]=c&65535|d<<16;wl[j]=a&65535|b<<16}}}h=ah0;l=al0;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[0];l=hl[0];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[0]=ah0=c&65535|d<<16;hl[0]=al0=a&65535|b<<16;h=ah1;l=al1;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[1];l=hl[1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[1]=ah1=c&65535|d<<16;hl[1]=al1=a&65535|b<<16;h=ah2;l=al2;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[2];l=hl[2];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[2]=ah2=c&65535|d<<16;hl[2]=al2=a&65535|b<<16;h=ah3;l=al3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[3];l=hl[3];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[3]=ah3=c&65535|d<<16;hl[3]=al3=a&65535|b<<16;h=ah4;l=al4;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[4];l=hl[4];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[4]=ah4=c&65535|d<<16;hl[4]=al4=a&65535|b<<16;h=ah5;l=al5;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[5];l=hl[5];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[5]=ah5=c&65535|d<<16;hl[5]=al5=a&65535|b<<16;h=ah6;l=al6;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[6];l=hl[6];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[6]=ah6=c&65535|d<<16;hl[6]=al6=a&65535|b<<16;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[7];l=hl[7];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[7]=ah7=c&65535|d<<16;hl[7]=al7=a&65535|b<<16;pos+=128;n-=128}return n}function crypto_hash(out,m,n){var hh=new Int32Array(8),hl=new Int32Array(8),x=new Uint8Array(256),i,b=n;hh[0]=1779033703;hh[1]=3144134277;hh[2]=1013904242;hh[3]=2773480762;hh[4]=1359893119;hh[5]=2600822924;hh[6]=528734635;hh[7]=1541459225;hl[0]=4089235720;hl[1]=2227873595;hl[2]=4271175723;hl[3]=1595750129;hl[4]=2917565137;hl[5]=725511199;hl[6]=4215389547;hl[7]=327033209;crypto_hashblocks_hl(hh,hl,m,n);n%=128;for(i=0;i<n;i++)x[i]=m[b-n+i];x[n]=128;n=256-128*(n<112?1:0);x[n-9]=0;ts64(x,n-8,b/536870912|0,b<<3);crypto_hashblocks_hl(hh,hl,x,n);for(i=0;i<8;i++)ts64(out,8*i,hh[i],hl[i]);return 0}function add(p,q){var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf(),g=gf(),h=gf(),t=gf();Z(a,p[1],p[0]);Z(t,q[1],q[0]);M(a,a,t);A(b,p[0],p[1]);A(t,q[0],q[1]);M(b,b,t);M(c,p[3],q[3]);M(c,c,D2);M(d,p[2],q[2]);A(d,d,d);Z(e,b,a);Z(f,d,c);A(g,d,c);A(h,b,a);M(p[0],e,f);M(p[1],h,g);M(p[2],g,f);M(p[3],e,h)}function cswap(p,q,b){var i;for(i=0;i<4;i++){sel25519(p[i],q[i],b)}}function pack(r,p){var tx=gf(),ty=gf(),zi=gf();inv25519(zi,p[2]);M(tx,p[0],zi);M(ty,p[1],zi);pack25519(r,ty);r[31]^=par25519(tx)<<7}function scalarmult(p,q,s){var b,i;set25519(p[0],gf0);set25519(p[1],gf1);set25519(p[2],gf1);set25519(p[3],gf0);for(i=255;i>=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j<k;++j){x[j]+=carry-16*x[i]*L[j-(i-32)];carry=x[j]+128>>8;x[j]-=carry*256}x[j]+=carry;x[i]=0}carry=0;for(j=0;j<32;j++){x[j]+=carry-(x[31]>>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i<n;i++)sm[64+i]=m[i];for(i=0;i<32;i++)sm[32+i]=d[32+i];crypto_hash(r,sm.subarray(32),n+32);reduce(r);scalarbase(p,r);pack(sm,p);for(i=32;i<64;i++)sm[i]=sk[i];crypto_hash(h,sm,n+64);reduce(h);for(i=0;i<64;i++)x[i]=0;for(i=0;i<32;i++)x[i]=r[i];for(i=0;i<32;i++){for(j=0;j<32;j++){x[i+j]+=h[i]*d[j]}}modL(sm.subarray(32),x);return smlen}function unpackneg(r,p){var t=gf(),chk=gf(),num=gf(),den=gf(),den2=gf(),den4=gf(),den6=gf();set25519(r[2],gf1);unpack25519(r[1],p);S(num,r[1]);M(den,num,D);Z(num,num,r[2]);A(den,r[2],den);S(den2,den);S(den4,den2);M(den6,den4,den2);M(t,den6,num);M(t,t,den);pow2523(t,t);M(t,t,num);M(t,t,den);M(t,t,den);M(r[0],t,den);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))M(r[0],r[0],I);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))return-1;if(par25519(r[0])===p[31]>>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i,mlen;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];mlen=-1;if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i<n;i++)m[i]=sm[i];for(i=0;i<32;i++)m[i+32]=pk[i];crypto_hash(h,m,n);reduce(h);scalarmult(p,q,h);scalarbase(q,sm.subarray(32));add(p,q);pack(t,p);n-=64;if(crypto_verify_32(sm,0,t,0)){for(i=0;i<n;i++)m[i]=0;return-1}for(i=0;i<n;i++)m[i]=sm[i+64];mlen=n;return mlen}var crypto_secretbox_KEYBYTES=32,crypto_secretbox_NONCEBYTES=24,crypto_secretbox_ZEROBYTES=32,crypto_secretbox_BOXZEROBYTES=16,crypto_scalarmult_BYTES=32,crypto_scalarmult_SCALARBYTES=32,crypto_box_PUBLICKEYBYTES=32,crypto_box_SECRETKEYBYTES=32,crypto_box_BEFORENMBYTES=32,crypto_box_NONCEBYTES=crypto_secretbox_NONCEBYTES,crypto_box_ZEROBYTES=crypto_secretbox_ZEROBYTES,crypto_box_BOXZEROBYTES=crypto_secretbox_BOXZEROBYTES,crypto_sign_BYTES=64,crypto_sign_PUBLICKEYBYTES=32,crypto_sign_SECRETKEYBYTES=64,crypto_sign_SEEDBYTES=32,crypto_hash_BYTES=64;nacl.lowlevel={crypto_core_hsalsa20:crypto_core_hsalsa20,crypto_stream_xor:crypto_stream_xor,crypto_stream:crypto_stream,crypto_stream_salsa20_xor:crypto_stream_salsa20_xor,crypto_stream_salsa20:crypto_stream_salsa20,crypto_onetimeauth:crypto_onetimeauth,crypto_onetimeauth_verify:crypto_onetimeauth_verify,crypto_verify_16:crypto_verify_16,crypto_verify_32:crypto_verify_32,crypto_secretbox:crypto_secretbox,crypto_secretbox_open:crypto_secretbox_open,crypto_scalarmult:crypto_scalarmult,crypto_scalarmult_base:crypto_scalarmult_base,crypto_box_beforenm:crypto_box_beforenm,crypto_box_afternm:crypto_box_afternm,crypto_box:crypto_box,crypto_box_open:crypto_box_open,crypto_box_keypair:crypto_box_keypair,crypto_hash:crypto_hash,crypto_sign:crypto_sign,crypto_sign_keypair:crypto_sign_keypair,crypto_sign_open:crypto_sign_open,crypto_secretbox_KEYBYTES:crypto_secretbox_KEYBYTES,crypto_secretbox_NONCEBYTES:crypto_secretbox_NONCEBYTES,crypto_secretbox_ZEROBYTES:crypto_secretbox_ZEROBYTES,crypto_secretbox_BOXZEROBYTES:crypto_secretbox_BOXZEROBYTES,crypto_scalarmult_BYTES:crypto_scalarmult_BYTES,crypto_scalarmult_SCALARBYTES:crypto_scalarmult_SCALARBYTES,crypto_box_PUBLICKEYBYTES:crypto_box_PUBLICKEYBYTES,crypto_box_SECRETKEYBYTES:crypto_box_SECRETKEYBYTES,crypto_box_BEFORENMBYTES:crypto_box_BEFORENMBYTES,crypto_box_NONCEBYTES:crypto_box_NONCEBYTES,crypto_box_ZEROBYTES:crypto_box_ZEROBYTES,crypto_box_BOXZEROBYTES:crypto_box_BOXZEROBYTES,crypto_sign_BYTES:crypto_sign_BYTES,crypto_sign_PUBLICKEYBYTES:crypto_sign_PUBLICKEYBYTES,crypto_sign_SECRETKEYBYTES:crypto_sign_SECRETKEYBYTES,crypto_sign_SEEDBYTES:crypto_sign_SEEDBYTES,crypto_hash_BYTES:crypto_hash_BYTES};function checkLengths(k,n){if(k.length!==crypto_secretbox_KEYBYTES)throw new Error("bad key size");if(n.length!==crypto_secretbox_NONCEBYTES)throw new Error("bad nonce size")}function checkBoxLengths(pk,sk){if(pk.length!==crypto_box_PUBLICKEYBYTES)throw new Error("bad public key size");if(sk.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size")}function checkArrayTypes(){var t,i;for(i=0;i<arguments.length;i++){if((t=Object.prototype.toString.call(arguments[i]))!=="[object Uint8Array]")throw new TypeError("unexpected type "+t+", use Uint8Array")}}function cleanup(arr){for(var i=0;i<arr.length;i++)arr[i]=0}if(!nacl.util){nacl.util={};nacl.util.decodeUTF8=nacl.util.encodeUTF8=nacl.util.encodeBase64=nacl.util.decodeBase64=function(){throw new Error("nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js")}}nacl.randomBytes=function(n){var b=new Uint8Array(n);randombytes(b,n);return b};nacl.secretbox=function(msg,nonce,key){checkArrayTypes(msg,nonce,key);checkLengths(key,nonce);var m=new Uint8Array(crypto_secretbox_ZEROBYTES+msg.length);var c=new Uint8Array(m.length)
|
|
58
|
-
;for(var i=0;i<msg.length;i++)m[i+crypto_secretbox_ZEROBYTES]=msg[i];crypto_secretbox(c,m,m.length,nonce,key);return c.subarray(crypto_secretbox_BOXZEROBYTES)};nacl.secretbox.open=function(box,nonce,key){checkArrayTypes(box,nonce,key);checkLengths(key,nonce);var c=new Uint8Array(crypto_secretbox_BOXZEROBYTES+box.length);var m=new Uint8Array(c.length);for(var i=0;i<box.length;i++)c[i+crypto_secretbox_BOXZEROBYTES]=box[i];if(c.length<32)return false;if(crypto_secretbox_open(m,c,c.length,nonce,key)!==0)return false;return m.subarray(crypto_secretbox_ZEROBYTES)};nacl.secretbox.keyLength=crypto_secretbox_KEYBYTES;nacl.secretbox.nonceLength=crypto_secretbox_NONCEBYTES;nacl.secretbox.overheadLength=crypto_secretbox_BOXZEROBYTES;nacl.scalarMult=function(n,p){checkArrayTypes(n,p);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");if(p.length!==crypto_scalarmult_BYTES)throw new Error("bad p size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult(q,n,p);return q};nacl.scalarMult.base=function(n){checkArrayTypes(n);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult_base(q,n);return q};nacl.scalarMult.scalarLength=crypto_scalarmult_SCALARBYTES;nacl.scalarMult.groupElementLength=crypto_scalarmult_BYTES;nacl.box=function(msg,nonce,publicKey,secretKey){var k=nacl.box.before(publicKey,secretKey);return nacl.secretbox(msg,nonce,k)};nacl.box.before=function(publicKey,secretKey){checkArrayTypes(publicKey,secretKey);checkBoxLengths(publicKey,secretKey);var k=new Uint8Array(crypto_box_BEFORENMBYTES);crypto_box_beforenm(k,publicKey,secretKey);return k};nacl.box.after=nacl.secretbox;nacl.box.open=function(msg,nonce,publicKey,secretKey){var k=nacl.box.before(publicKey,secretKey);return nacl.secretbox.open(msg,nonce,k)};nacl.box.open.after=nacl.secretbox.open;nacl.box.keyPair=function(){var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_box_SECRETKEYBYTES);crypto_box_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.box.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);crypto_scalarmult_base(pk,secretKey);return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl.box.publicKeyLength=crypto_box_PUBLICKEYBYTES;nacl.box.secretKeyLength=crypto_box_SECRETKEYBYTES;nacl.box.sharedKeyLength=crypto_box_BEFORENMBYTES;nacl.box.nonceLength=crypto_box_NONCEBYTES;nacl.box.overheadLength=nacl.secretbox.overheadLength;nacl.sign=function(msg,secretKey){checkArrayTypes(msg,secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var signedMsg=new Uint8Array(crypto_sign_BYTES+msg.length);crypto_sign(signedMsg,msg,msg.length,secretKey);return signedMsg};nacl.sign.open=function(signedMsg,publicKey){if(arguments.length!==2)throw new Error("nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?");checkArrayTypes(signedMsg,publicKey);if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var tmp=new Uint8Array(signedMsg.length);var mlen=crypto_sign_open(tmp,signedMsg,signedMsg.length,publicKey);if(mlen<0)return null;var m=new Uint8Array(mlen);for(var i=0;i<m.length;i++)m[i]=tmp[i];return m};nacl.sign.detached=function(msg,secretKey){var signedMsg=nacl.sign(msg,secretKey);var sig=new Uint8Array(crypto_sign_BYTES);for(var i=0;i<sig.length;i++)sig[i]=signedMsg[i];return sig};nacl.sign.detached.verify=function(msg,sig,publicKey){checkArrayTypes(msg,sig,publicKey);if(sig.length!==crypto_sign_BYTES)throw new Error("bad signature size");if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var sm=new Uint8Array(crypto_sign_BYTES+msg.length);var m=new Uint8Array(crypto_sign_BYTES+msg.length);var i;for(i=0;i<crypto_sign_BYTES;i++)sm[i]=sig[i];for(i=0;i<msg.length;i++)sm[i+crypto_sign_BYTES]=msg[i];return crypto_sign_open(m,sm,sm.length,publicKey)>=0};nacl.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i<pk.length;i++)pk[i]=secretKey[32+i];return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl.sign.keyPair.fromSeed=function(seed){checkArrayTypes(seed);if(seed.length!==crypto_sign_SEEDBYTES)throw new Error("bad seed size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);for(var i=0;i<32;i++)sk[i]=seed[i];crypto_sign_keypair(pk,sk,true);return{publicKey:pk,secretKey:sk}};nacl.sign.publicKeyLength=crypto_sign_PUBLICKEYBYTES;nacl.sign.secretKeyLength=crypto_sign_SECRETKEYBYTES;nacl.sign.seedLength=crypto_sign_SEEDBYTES;nacl.sign.signatureLength=crypto_sign_BYTES;nacl.hash=function(msg){checkArrayTypes(msg);var h=new Uint8Array(crypto_hash_BYTES);crypto_hash(h,msg,msg.length);return h};nacl.hash.hashLength=crypto_hash_BYTES;nacl.verify=function(x,y){checkArrayTypes(x,y);if(x.length===0||y.length===0)return false;if(x.length!==y.length)return false;return vn(x,0,y,0,x.length)===0?true:false};nacl.setPRNG=function(fn){randombytes=fn};(function(){var crypto=typeof self!=="undefined"?self.crypto||self.msCrypto:null;if(crypto&&crypto.getRandomValues){var QUOTA=65536;nacl.setPRNG(function(x,n){var i,v=new Uint8Array(n);for(i=0;i<n;i+=QUOTA){crypto.getRandomValues(v.subarray(i,i+Math.min(n-i,QUOTA)))}for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}else if(typeof require!=="undefined"){crypto=require("crypto");if(crypto&&crypto.randomBytes){nacl.setPRNG(function(x,n){var i,v=crypto.randomBytes(n);for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}}})()})(typeof module!=="undefined"&&module.exports?module.exports:self.nacl=self.nacl||{})},{crypto:23}],505:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):factory(global.URI=global.URI||{})})(this,function(exports){"use strict";function merge(){for(var _len=arguments.length,sets=Array(_len),_key=0;_key<_len;_key++){sets[_key]=arguments[_key]}if(sets.length>1){sets[0]=sets[0].slice(0,-1);var xl=sets.length-1;for(var x=1;x<xl;++x){sets[x]=sets[x].slice(1,-1)}sets[xl]=sets[xl].slice(1);return sets.join("")}else{return sets[0]}}function subexp(str){return"(?:"+str+")"}function typeOf(o){return o===undefined?"undefined":o===null?"null":Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase()}function toUpperCase(str){return str.toUpperCase()}function toArray(obj){return obj!==undefined&&obj!==null?obj instanceof Array?obj:typeof obj.length!=="number"||obj.split||obj.setInterval||obj.call?[obj]:Array.prototype.slice.call(obj):[]}function assign(target,source){var obj=target;if(source){for(var key in source){obj[key]=source[key]}}return obj}function buildExps(isIRI){var ALPHA$$="[A-Za-z]",CR$="[\\x0D]",DIGIT$$="[0-9]",DQUOTE$$="[\\x22]",HEXDIG$$=merge(DIGIT$$,"[A-Fa-f]"),LF$$="[\\x0A]",SP$$="[\\x20]",PCT_ENCODED$=subexp(subexp("%[EFef]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%[89A-Fa-f]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%"+HEXDIG$$+HEXDIG$$)),GEN_DELIMS$$="[\\:\\/\\?\\#\\[\\]\\@]",SUB_DELIMS$$="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",RESERVED$$=merge(GEN_DELIMS$$,SUB_DELIMS$$),UCSCHAR$$=isIRI?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]",IPRIVATE$$=isIRI?"[\\uE000-\\uF8FF]":"[]",UNRESERVED$$=merge(ALPHA$$,DIGIT$$,"[\\-\\.\\_\\~]",UCSCHAR$$),SCHEME$=subexp(ALPHA$$+merge(ALPHA$$,DIGIT$$,"[\\+\\-\\.]")+"*"),USERINFO$=subexp(subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\:]"))+"*"),DEC_OCTET$=subexp(subexp("25[0-5]")+"|"+subexp("2[0-4]"+DIGIT$$)+"|"+subexp("1"+DIGIT$$+DIGIT$$)+"|"+subexp("[1-9]"+DIGIT$$)+"|"+DIGIT$$),DEC_OCTET_RELAXED$=subexp(subexp("25[0-5]")+"|"+subexp("2[0-4]"+DIGIT$$)+"|"+subexp("1"+DIGIT$$+DIGIT$$)+"|"+subexp("0?[1-9]"+DIGIT$$)+"|0?0?"+DIGIT$$),IPV4ADDRESS$=subexp(DEC_OCTET_RELAXED$+"\\."+DEC_OCTET_RELAXED$+"\\."+DEC_OCTET_RELAXED$+"\\."+DEC_OCTET_RELAXED$),H16$=subexp(HEXDIG$$+"{1,4}"),LS32$=subexp(subexp(H16$+"\\:"+H16$)+"|"+IPV4ADDRESS$),IPV6ADDRESS1$=subexp(subexp(H16$+"\\:")+"{6}"+LS32$),IPV6ADDRESS2$=subexp("\\:\\:"+subexp(H16$+"\\:")+"{5}"+LS32$),IPV6ADDRESS3$=subexp(subexp(H16$)+"?\\:\\:"+subexp(H16$+"\\:")+"{4}"+LS32$),IPV6ADDRESS4$=subexp(subexp(subexp(H16$+"\\:")+"{0,1}"+H16$)+"?\\:\\:"+subexp(H16$+"\\:")+"{3}"+LS32$),IPV6ADDRESS5$=subexp(subexp(subexp(H16$+"\\:")+"{0,2}"+H16$)+"?\\:\\:"+subexp(H16$+"\\:")+"{2}"+LS32$),IPV6ADDRESS6$=subexp(subexp(subexp(H16$+"\\:")+"{0,3}"+H16$)+"?\\:\\:"+H16$+"\\:"+LS32$),IPV6ADDRESS7$=subexp(subexp(subexp(H16$+"\\:")+"{0,4}"+H16$)+"?\\:\\:"+LS32$),IPV6ADDRESS8$=subexp(subexp(subexp(H16$+"\\:")+"{0,5}"+H16$)+"?\\:\\:"+H16$),IPV6ADDRESS9$=subexp(subexp(subexp(H16$+"\\:")+"{0,6}"+H16$)+"?\\:\\:"),IPV6ADDRESS$=subexp([IPV6ADDRESS1$,IPV6ADDRESS2$,IPV6ADDRESS3$,IPV6ADDRESS4$,IPV6ADDRESS5$,IPV6ADDRESS6$,IPV6ADDRESS7$,IPV6ADDRESS8$,IPV6ADDRESS9$].join("|")),ZONEID$=subexp(subexp(UNRESERVED$$+"|"+PCT_ENCODED$)+"+"),IPV6ADDRZ$=subexp(IPV6ADDRESS$+"\\%25"+ZONEID$),IPV6ADDRZ_RELAXED$=subexp(IPV6ADDRESS$+subexp("\\%25|\\%(?!"+HEXDIG$$+"{2})")+ZONEID$),IPVFUTURE$=subexp("[vV]"+HEXDIG$$+"+\\."+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\:]")+"+"),IP_LITERAL$=subexp("\\["+subexp(IPV6ADDRZ_RELAXED$+"|"+IPV6ADDRESS$+"|"+IPVFUTURE$)+"\\]"),REG_NAME$=subexp(subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$))+"*"),HOST$=subexp(IP_LITERAL$+"|"+IPV4ADDRESS$+"(?!"+REG_NAME$+")"+"|"+REG_NAME$),PORT$=subexp(DIGIT$$+"*"),AUTHORITY$=subexp(subexp(USERINFO$+"@")+"?"+HOST$+subexp("\\:"+PORT$)+"?"),PCHAR$=subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\:\\@]")),SEGMENT$=subexp(PCHAR$+"*"),SEGMENT_NZ$=subexp(PCHAR$+"+"),SEGMENT_NZ_NC$=subexp(subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\@]"))+"+"),PATH_ABEMPTY$=subexp(subexp("\\/"+SEGMENT$)+"*"),PATH_ABSOLUTE$=subexp("\\/"+subexp(SEGMENT_NZ$+PATH_ABEMPTY$)+"?"),PATH_NOSCHEME$=subexp(SEGMENT_NZ_NC$+PATH_ABEMPTY$),PATH_ROOTLESS$=subexp(SEGMENT_NZ$+PATH_ABEMPTY$),PATH_EMPTY$="(?!"+PCHAR$+")",PATH$=subexp(PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_NOSCHEME$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$),QUERY$=subexp(subexp(PCHAR$+"|"+merge("[\\/\\?]",IPRIVATE$$))+"*"),FRAGMENT$=subexp(subexp(PCHAR$+"|[\\/\\?]")+"*"),HIER_PART$=subexp(subexp("\\/\\/"+AUTHORITY$+PATH_ABEMPTY$)+"|"+PATH_ABSOLUTE$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$),URI$=subexp(SCHEME$+"\\:"+HIER_PART$+subexp("\\?"+QUERY$)+"?"+subexp("\\#"+FRAGMENT$)+"?"),RELATIVE_PART$=subexp(subexp("\\/\\/"+AUTHORITY$+PATH_ABEMPTY$)+"|"+PATH_ABSOLUTE$+"|"+PATH_NOSCHEME$+"|"+PATH_EMPTY$),RELATIVE$=subexp(RELATIVE_PART$+subexp("\\?"+QUERY$)+"?"+subexp("\\#"+FRAGMENT$)+"?"),URI_REFERENCE$=subexp(URI$+"|"+RELATIVE$),ABSOLUTE_URI$=subexp(SCHEME$+"\\:"+HIER_PART$+subexp("\\?"+QUERY$)+"?"),GENERIC_REF$="^("+SCHEME$+")\\:"+subexp(subexp("\\/\\/("+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?)")+"?("+PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$+")")+subexp("\\?("+QUERY$+")")+"?"+subexp("\\#("+FRAGMENT$+")")+"?$",RELATIVE_REF$="^(){0}"+subexp(subexp("\\/\\/("+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?)")+"?("+PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_NOSCHEME$+"|"+PATH_EMPTY$+")")+subexp("\\?("+QUERY$+")")+"?"+subexp("\\#("+FRAGMENT$+")")+"?$",ABSOLUTE_REF$="^("+SCHEME$+")\\:"+subexp(subexp("\\/\\/("+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?)")+"?("+PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$+")")+subexp("\\?("+QUERY$+")")+"?$",SAMEDOC_REF$="^"+subexp("\\#("+FRAGMENT$+")")+"?$",AUTHORITY_REF$="^"+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?$";return{NOT_SCHEME:new RegExp(merge("[^]",ALPHA$$,DIGIT$$,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(merge("[^\\%\\:]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_HOST:new RegExp(merge("[^\\%\\[\\]\\:]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_PATH:new RegExp(merge("[^\\%\\/\\:\\@]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_PATH_NOSCHEME:new RegExp(merge("[^\\%\\/\\@]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_QUERY:new RegExp(merge("[^\\%]",UNRESERVED$$,SUB_DELIMS$$,"[\\:\\@\\/\\?]",IPRIVATE$$),"g"),NOT_FRAGMENT:new RegExp(merge("[^\\%]",UNRESERVED$$,SUB_DELIMS$$,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(merge("[^]",UNRESERVED$$,SUB_DELIMS$$),"g"),UNRESERVED:new RegExp(UNRESERVED$$,"g"),OTHER_CHARS:new RegExp(merge("[^\\%]",UNRESERVED$$,RESERVED$$),"g"),PCT_ENCODED:new RegExp(PCT_ENCODED$,"g"),IPV4ADDRESS:new RegExp("^("+IPV4ADDRESS$+")$"),IPV6ADDRESS:new RegExp("^\\[?("+IPV6ADDRESS$+")"+subexp(subexp("\\%25|\\%(?!"+HEXDIG$$+"{2})")+"("+ZONEID$+")")+"?\\]?$")}}var URI_PROTOCOL=buildExps(false);var IRI_PROTOCOL=buildExps(true);var slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"])_i["return"]()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr)){return arr}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i)}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}();var toConsumableArray=function(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}else{return Array.from(arr)}};var maxInt=2147483647;var base=36;var tMin=1;var tMax=26;var skew=38;var damp=700;var initialBias=72;var initialN=128;var delimiter="-";var regexPunycode=/^xn--/;var regexNonASCII=/[^\0-\x7E]/;var regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g;var errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"};var baseMinusTMin=base-tMin;var floor=Math.floor;var stringFromCharCode=String.fromCharCode;function error$1(type){throw new RangeError(errors[type])}function map(array,fn){var result=[];var length=array.length;while(length--){result[length]=fn(array[length])}return result}function mapDomain(string,fn){var parts=string.split("@");var result="";if(parts.length>1){result=parts[0]+"@";string=parts[1]}string=string.replace(regexSeparators,".");var labels=string.split(".");var encoded=map(labels,fn).join(".");return result+encoded}function ucs2decode(string){var output=[];var counter=0;var length=string.length;while(counter<length){var value=string.charCodeAt(counter++);if(value>=55296&&value<=56319&&counter<length){var extra=string.charCodeAt(counter++);if((extra&64512)==56320){output.push(((value&1023)<<10)+(extra&1023)+65536)}else{output.push(value);counter--}}else{output.push(value)}}return output}var ucs2encode=function ucs2encode(array){return String.fromCodePoint.apply(String,toConsumableArray(array))};var basicToDigit=function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base};var digitToBasic=function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)};var adapt=function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))};var decode=function decode(input){var output=[];var inputLength=input.length;var i=0;var n=initialN;var bias=initialBias;var basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(var j=0;j<basic;++j){if(input.charCodeAt(j)>=128){error$1("not-basic")}output.push(input.charCodeAt(j))}for(var index=basic>0?basic+1:0;index<inputLength;){var oldi=i;for(var w=1,k=base;;k+=base){if(index>=inputLength){error$1("invalid-input")}var digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error$1("overflow")}i+=digit*w;var t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digit<t){break}var baseMinusT=base-t;if(w>floor(maxInt/baseMinusT)){error$1("overflow")}w*=baseMinusT}var out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error$1("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return String.fromCodePoint.apply(String,output)};var encode=function encode(input){var output=[];input=ucs2decode(input);var inputLength=input.length;var n=initialN;var delta=0;var bias=initialBias;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=input[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _currentValue2=_step.value;if(_currentValue2<128){output.push(stringFromCharCode(_currentValue2))}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}var basicLength=output.length;var handledCPCount=basicLength;if(basicLength){output.push(delimiter)}while(handledCPCount<inputLength){var m=maxInt;var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=input[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var currentValue=_step2.value;if(currentValue>=n&¤tValue<m){m=currentValue}}}catch(err){_didIteratorError2=true;_iteratorError2=err}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return()}}finally{if(_didIteratorError2){throw _iteratorError2}}}var handledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error$1("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=input[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var _currentValue=_step3.value;if(_currentValue<n&&++delta>maxInt){error$1("overflow")}if(_currentValue==n){var q=delta;for(var k=base;;k+=base){var t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q<t){break}var qMinusT=q-t;var baseMinusT=base-t;output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0)));q=floor(qMinusT/baseMinusT)}output.push(stringFromCharCode(digitToBasic(q,0)));bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength);delta=0;++handledCPCount}}}catch(err){_didIteratorError3=true;_iteratorError3=err}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return()}}finally{if(_didIteratorError3){throw _iteratorError3}}}++delta;++n}return output.join("")};var toUnicode=function toUnicode(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})};var toASCII=function toASCII(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})};var punycode={version:"2.1.0",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:toASCII,toUnicode:toUnicode};var SCHEMES={};function pctEncChar(chr){var c=chr.charCodeAt(0);var e=void 0;if(c<16)e="%0"+c.toString(16).toUpperCase();else if(c<128)e="%"+c.toString(16).toUpperCase();else if(c<2048)e="%"+(c>>6|192).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();else e="%"+(c>>12|224).toString(16).toUpperCase()+"%"+(c>>6&63|128).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();return e}function pctDecChars(str){var newStr="";var i=0;var il=str.length;while(i<il){var c=parseInt(str.substr(i+1,2),16);if(c<128){newStr+=String.fromCharCode(c);i+=3}else if(c>=194&&c<224){if(il-i>=6){var c2=parseInt(str.substr(i+4,2),16);newStr+=String.fromCharCode((c&31)<<6|c2&63)}else{newStr+=str.substr(i,6)}i+=6}else if(c>=224){if(il-i>=9){var _c=parseInt(str.substr(i+4,2),16);var c3=parseInt(str.substr(i+7,2),16);newStr+=String.fromCharCode((c&15)<<12|(_c&63)<<6|c3&63)}else{newStr+=str.substr(i,9)}i+=9}else{newStr+=str.substr(i,3);i+=3}}return newStr}function _normalizeComponentEncoding(components,protocol){function decodeUnreserved(str){var decStr=pctDecChars(str);return!decStr.match(protocol.UNRESERVED)?str:decStr}if(components.scheme)components.scheme=String(components.scheme).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME,"");if(components.userinfo!==undefined)components.userinfo=String(components.userinfo).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_USERINFO,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.host!==undefined)components.host=String(components.host).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.path!==undefined)components.path=String(components.path).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(components.scheme?protocol.NOT_PATH:protocol.NOT_PATH_NOSCHEME,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.query!==undefined)components.query=String(components.query).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_QUERY,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.fragment!==undefined)components.fragment=String(components.fragment).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_FRAGMENT,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);return components}function _stripLeadingZeros(str){return str.replace(/^0*(.*)/,"$1")||"0"}function _normalizeIPv4(host,protocol){var matches=host.match(protocol.IPV4ADDRESS)||[];var _matches=slicedToArray(matches,2),address=_matches[1];if(address){return address.split(".").map(_stripLeadingZeros).join(".")}else{return host}}function _normalizeIPv6(host,protocol){var matches=host.match(protocol.IPV6ADDRESS)||[];var _matches2=slicedToArray(matches,3),address=_matches2[1],zone=_matches2[2];if(address){var _address$toLowerCase$=address.toLowerCase().split("::").reverse(),_address$toLowerCase$2=slicedToArray(_address$toLowerCase$,2),last=_address$toLowerCase$2[0],first=_address$toLowerCase$2[1];var firstFields=first?first.split(":").map(_stripLeadingZeros):[];var lastFields=last.split(":").map(_stripLeadingZeros);var isLastFieldIPv4Address=protocol.IPV4ADDRESS.test(lastFields[lastFields.length-1]);var fieldCount=isLastFieldIPv4Address?7:8;var lastFieldsStart=lastFields.length-fieldCount;var fields=Array(fieldCount);for(var x=0;x<fieldCount;++x){fields[x]=firstFields[x]||lastFields[lastFieldsStart+x]||""}if(isLastFieldIPv4Address){fields[fieldCount-1]=_normalizeIPv4(fields[fieldCount-1],protocol)}var allZeroFields=fields.reduce(function(acc,field,index){if(!field||field==="0"){var lastLongest=acc[acc.length-1];if(lastLongest&&lastLongest.index+lastLongest.length===index){lastLongest.length++}else{acc.push({index:index,length:1})}}return acc},[]);var longestZeroFields=allZeroFields.sort(function(a,b){return b.length-a.length})[0];var newHost=void 0;if(longestZeroFields&&longestZeroFields.length>1){var newFirst=fields.slice(0,longestZeroFields.index);var newLast=fields.slice(longestZeroFields.index+longestZeroFields.length);newHost=newFirst.join(":")+"::"+newLast.join(":")}else{newHost=fields.join(":")}if(zone){newHost+="%"+zone}return newHost}else{return host}}var URI_PARSE=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;var NO_MATCH_IS_UNDEFINED="".match(/(){0}/)[1]===undefined;function parse(uriString){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var components={};var protocol=options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL;if(options.reference==="suffix")uriString=(options.scheme?options.scheme+":":"")+"//"+uriString;var matches=uriString.match(URI_PARSE);if(matches){if(NO_MATCH_IS_UNDEFINED){components.scheme=matches[1];components.userinfo=matches[3];components.host=matches[4];components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=matches[7];components.fragment=matches[8];if(isNaN(components.port)){components.port=matches[5]}}else{components.scheme=matches[1]||undefined;components.userinfo=uriString.indexOf("@")!==-1?matches[3]:undefined;components.host=uriString.indexOf("//")!==-1?matches[4]:undefined;components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=uriString.indexOf("?")!==-1?matches[7]:undefined;components.fragment=uriString.indexOf("#")!==-1?matches[8]:undefined;if(isNaN(components.port)){components.port=uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?matches[4]:undefined}}if(components.host){components.host=_normalizeIPv6(_normalizeIPv4(components.host,protocol),protocol)}if(components.scheme===undefined&&components.userinfo===undefined&&components.host===undefined&&components.port===undefined&&!components.path&&components.query===undefined){components.reference="same-document"}else if(components.scheme===undefined){components.reference="relative"}else if(components.fragment===undefined){components.reference="absolute"}else{components.reference="uri"}if(options.reference&&options.reference!=="suffix"&&options.reference!==components.reference){components.error=components.error||"URI is not a "+options.reference+" reference."}var schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];if(!options.unicodeSupport&&(!schemeHandler||!schemeHandler.unicodeSupport)){if(components.host&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)){try{components.host=punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase())}catch(e){components.error=components.error||"Host's domain name can not be converted to ASCII via punycode: "+e}}_normalizeComponentEncoding(components,URI_PROTOCOL)}else{_normalizeComponentEncoding(components,protocol)}if(schemeHandler&&schemeHandler.parse){schemeHandler.parse(components,options)}}else{components.error=components.error||"URI can not be parsed."}return components}function _recomposeAuthority(components,options){var protocol=options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL;var uriTokens=[];if(components.userinfo!==undefined){uriTokens.push(components.userinfo);uriTokens.push("@")}if(components.host!==undefined){uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host),protocol),protocol).replace(protocol.IPV6ADDRESS,function(_,$1,$2){return"["+$1+($2?"%25"+$2:"")+"]"}))}if(typeof components.port==="number"||typeof components.port==="string"){uriTokens.push(":");uriTokens.push(String(components.port))}return uriTokens.length?uriTokens.join(""):undefined}var RDS1=/^\.\.?\//;var RDS2=/^\/\.(\/|$)/;var RDS3=/^\/\.\.(\/|$)/;var RDS5=/^\/?(?:.|\n)*?(?=\/|$)/;function removeDotSegments(input){var output=[];while(input.length){if(input.match(RDS1)){input=input.replace(RDS1,"")}else if(input.match(RDS2)){input=input.replace(RDS2,"/")}else if(input.match(RDS3)){input=input.replace(RDS3,"/");output.pop()}else if(input==="."||input===".."){input=""}else{var im=input.match(RDS5);if(im){var s=im[0];input=input.slice(s.length);output.push(s)}else{throw new Error("Unexpected dot segment condition")}}}return output.join("")}function serialize(components){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var protocol=options.iri?IRI_PROTOCOL:URI_PROTOCOL;var uriTokens=[];var schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];if(schemeHandler&&schemeHandler.serialize)schemeHandler.serialize(components,options);if(components.host){if(protocol.IPV6ADDRESS.test(components.host)){}else if(options.domainHost||schemeHandler&&schemeHandler.domainHost){try{components.host=!options.iri?punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase()):punycode.toUnicode(components.host)}catch(e){components.error=components.error||"Host's domain name can not be converted to "+(!options.iri?"ASCII":"Unicode")+" via punycode: "+e}}}_normalizeComponentEncoding(components,protocol);if(options.reference!=="suffix"&&components.scheme){uriTokens.push(components.scheme);uriTokens.push(":")}var authority=_recomposeAuthority(components,options);if(authority!==undefined){if(options.reference!=="suffix"){uriTokens.push("//")}uriTokens.push(authority);if(components.path&&components.path.charAt(0)!=="/"){uriTokens.push("/")}}if(components.path!==undefined){var s=components.path;if(!options.absolutePath&&(!schemeHandler||!schemeHandler.absolutePath)){s=removeDotSegments(s)}if(authority===undefined){s=s.replace(/^\/\//,"/%2F")}uriTokens.push(s)}if(components.query!==undefined){uriTokens.push("?");uriTokens.push(components.query)}if(components.fragment!==undefined){uriTokens.push("#");uriTokens.push(components.fragment)}return uriTokens.join("")}function resolveComponents(base,relative){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var skipNormalization=arguments[3];var target={};if(!skipNormalization){base=parse(serialize(base,options),options);relative=parse(serialize(relative,options),options)}options=options||{};if(!options.tolerant&&relative.scheme){target.scheme=relative.scheme;target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path||"");target.query=relative.query}else{if(relative.userinfo!==undefined||relative.host!==undefined||relative.port!==undefined){target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path||"");target.query=relative.query}else{if(!relative.path){target.path=base.path;if(relative.query!==undefined){target.query=relative.query}else{target.query=base.query}}else{if(relative.path.charAt(0)==="/"){target.path=removeDotSegments(relative.path)}else{if((base.userinfo!==undefined||base.host!==undefined||base.port!==undefined)&&!base.path){target.path="/"+relative.path}else if(!base.path){target.path=relative.path}else{target.path=base.path.slice(0,base.path.lastIndexOf("/")+1)+relative.path}target.path=removeDotSegments(target.path)}target.query=relative.query}target.userinfo=base.userinfo;target.host=base.host;target.port=base.port}target.scheme=base.scheme}target.fragment=relative.fragment;return target}function resolve(baseURI,relativeURI,options){var schemelessOptions=assign({scheme:"null"},options);return serialize(resolveComponents(parse(baseURI,schemelessOptions),parse(relativeURI,schemelessOptions),schemelessOptions,true),schemelessOptions)}function normalize(uri,options){if(typeof uri==="string"){uri=serialize(parse(uri,options),options)}else if(typeOf(uri)==="object"){uri=parse(serialize(uri,options),options)}return uri}function equal(uriA,uriB,options){if(typeof uriA==="string"){uriA=serialize(parse(uriA,options),options)}else if(typeOf(uriA)==="object"){uriA=serialize(uriA,options)}if(typeof uriB==="string"){uriB=serialize(parse(uriB,options),options)}else if(typeOf(uriB)==="object"){uriB=serialize(uriB,options)}return uriA===uriB}function escapeComponent(str,options){return str&&str.toString().replace(!options||!options.iri?URI_PROTOCOL.ESCAPE:IRI_PROTOCOL.ESCAPE,pctEncChar)}function unescapeComponent(str,options){
|
|
59
|
-
return str&&str.toString().replace(!options||!options.iri?URI_PROTOCOL.PCT_ENCODED:IRI_PROTOCOL.PCT_ENCODED,pctDecChars)}var handler={scheme:"http",domainHost:true,parse:function parse(components,options){if(!components.host){components.error=components.error||"HTTP URIs must have a host."}return components},serialize:function serialize(components,options){var secure=String(components.scheme).toLowerCase()==="https";if(components.port===(secure?443:80)||components.port===""){components.port=undefined}if(!components.path){components.path="/"}return components}};var handler$1={scheme:"https",domainHost:handler.domainHost,parse:handler.parse,serialize:handler.serialize};function isSecure(wsComponents){return typeof wsComponents.secure==="boolean"?wsComponents.secure:String(wsComponents.scheme).toLowerCase()==="wss"}var handler$2={scheme:"ws",domainHost:true,parse:function parse(components,options){var wsComponents=components;wsComponents.secure=isSecure(wsComponents);wsComponents.resourceName=(wsComponents.path||"/")+(wsComponents.query?"?"+wsComponents.query:"");wsComponents.path=undefined;wsComponents.query=undefined;return wsComponents},serialize:function serialize(wsComponents,options){if(wsComponents.port===(isSecure(wsComponents)?443:80)||wsComponents.port===""){wsComponents.port=undefined}if(typeof wsComponents.secure==="boolean"){wsComponents.scheme=wsComponents.secure?"wss":"ws";wsComponents.secure=undefined}if(wsComponents.resourceName){var _wsComponents$resourc=wsComponents.resourceName.split("?"),_wsComponents$resourc2=slicedToArray(_wsComponents$resourc,2),path=_wsComponents$resourc2[0],query=_wsComponents$resourc2[1];wsComponents.path=path&&path!=="/"?path:undefined;wsComponents.query=query;wsComponents.resourceName=undefined}wsComponents.fragment=undefined;return wsComponents}};var handler$3={scheme:"wss",domainHost:handler$2.domainHost,parse:handler$2.parse,serialize:handler$2.serialize};var O={};var isIRI=true;var UNRESERVED$$="[A-Za-z0-9\\-\\.\\_\\~"+(isIRI?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]";var HEXDIG$$="[0-9A-Fa-f]";var PCT_ENCODED$=subexp(subexp("%[EFef]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%[89A-Fa-f]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%"+HEXDIG$$+HEXDIG$$));var ATEXT$$="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";var QTEXT$$="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";var VCHAR$$=merge(QTEXT$$,'[\\"\\\\]');var SOME_DELIMS$$="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";var UNRESERVED=new RegExp(UNRESERVED$$,"g");var PCT_ENCODED=new RegExp(PCT_ENCODED$,"g");var NOT_LOCAL_PART=new RegExp(merge("[^]",ATEXT$$,"[\\.]",'[\\"]',VCHAR$$),"g");var NOT_HFNAME=new RegExp(merge("[^]",UNRESERVED$$,SOME_DELIMS$$),"g");var NOT_HFVALUE=NOT_HFNAME;function decodeUnreserved(str){var decStr=pctDecChars(str);return!decStr.match(UNRESERVED)?str:decStr}var handler$4={scheme:"mailto",parse:function parse$$1(components,options){var mailtoComponents=components;var to=mailtoComponents.to=mailtoComponents.path?mailtoComponents.path.split(","):[];mailtoComponents.path=undefined;if(mailtoComponents.query){var unknownHeaders=false;var headers={};var hfields=mailtoComponents.query.split("&");for(var x=0,xl=hfields.length;x<xl;++x){var hfield=hfields[x].split("=");switch(hfield[0]){case"to":var toAddrs=hfield[1].split(",");for(var _x=0,_xl=toAddrs.length;_x<_xl;++_x){to.push(toAddrs[_x])}break;case"subject":mailtoComponents.subject=unescapeComponent(hfield[1],options);break;case"body":mailtoComponents.body=unescapeComponent(hfield[1],options);break;default:unknownHeaders=true;headers[unescapeComponent(hfield[0],options)]=unescapeComponent(hfield[1],options);break}}if(unknownHeaders)mailtoComponents.headers=headers}mailtoComponents.query=undefined;for(var _x2=0,_xl2=to.length;_x2<_xl2;++_x2){var addr=to[_x2].split("@");addr[0]=unescapeComponent(addr[0]);if(!options.unicodeSupport){try{addr[1]=punycode.toASCII(unescapeComponent(addr[1],options).toLowerCase())}catch(e){mailtoComponents.error=mailtoComponents.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}}else{addr[1]=unescapeComponent(addr[1],options).toLowerCase()}to[_x2]=addr.join("@")}return mailtoComponents},serialize:function serialize$$1(mailtoComponents,options){var components=mailtoComponents;var to=toArray(mailtoComponents.to);if(to){for(var x=0,xl=to.length;x<xl;++x){var toAddr=String(to[x]);var atIdx=toAddr.lastIndexOf("@");var localPart=toAddr.slice(0,atIdx).replace(PCT_ENCODED,decodeUnreserved).replace(PCT_ENCODED,toUpperCase).replace(NOT_LOCAL_PART,pctEncChar);var domain=toAddr.slice(atIdx+1);try{domain=!options.iri?punycode.toASCII(unescapeComponent(domain,options).toLowerCase()):punycode.toUnicode(domain)}catch(e){components.error=components.error||"Email address's domain name can not be converted to "+(!options.iri?"ASCII":"Unicode")+" via punycode: "+e}to[x]=localPart+"@"+domain}components.path=to.join(",")}var headers=mailtoComponents.headers=mailtoComponents.headers||{};if(mailtoComponents.subject)headers["subject"]=mailtoComponents.subject;if(mailtoComponents.body)headers["body"]=mailtoComponents.body;var fields=[];for(var name in headers){if(headers[name]!==O[name]){fields.push(name.replace(PCT_ENCODED,decodeUnreserved).replace(PCT_ENCODED,toUpperCase).replace(NOT_HFNAME,pctEncChar)+"="+headers[name].replace(PCT_ENCODED,decodeUnreserved).replace(PCT_ENCODED,toUpperCase).replace(NOT_HFVALUE,pctEncChar))}}if(fields.length){components.query=fields.join("&")}return components}};var URN_PARSE=/^([^\:]+)\:(.*)/;var handler$5={scheme:"urn",parse:function parse$$1(components,options){var matches=components.path&&components.path.match(URN_PARSE);var urnComponents=components;if(matches){var scheme=options.scheme||urnComponents.scheme||"urn";var nid=matches[1].toLowerCase();var nss=matches[2];var urnScheme=scheme+":"+(options.nid||nid);var schemeHandler=SCHEMES[urnScheme];urnComponents.nid=nid;urnComponents.nss=nss;urnComponents.path=undefined;if(schemeHandler){urnComponents=schemeHandler.parse(urnComponents,options)}}else{urnComponents.error=urnComponents.error||"URN can not be parsed."}return urnComponents},serialize:function serialize$$1(urnComponents,options){var scheme=options.scheme||urnComponents.scheme||"urn";var nid=urnComponents.nid;var urnScheme=scheme+":"+(options.nid||nid);var schemeHandler=SCHEMES[urnScheme];if(schemeHandler){urnComponents=schemeHandler.serialize(urnComponents,options)}var uriComponents=urnComponents;var nss=urnComponents.nss;uriComponents.path=(nid||options.nid)+":"+nss;return uriComponents}};var UUID=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;var handler$6={scheme:"urn:uuid",parse:function parse(urnComponents,options){var uuidComponents=urnComponents;uuidComponents.uuid=uuidComponents.nss;uuidComponents.nss=undefined;if(!options.tolerant&&(!uuidComponents.uuid||!uuidComponents.uuid.match(UUID))){uuidComponents.error=uuidComponents.error||"UUID is not valid."}return uuidComponents},serialize:function serialize(uuidComponents,options){var urnComponents=uuidComponents;urnComponents.nss=(uuidComponents.uuid||"").toLowerCase();return urnComponents}};SCHEMES[handler.scheme]=handler;SCHEMES[handler$1.scheme]=handler$1;SCHEMES[handler$2.scheme]=handler$2;SCHEMES[handler$3.scheme]=handler$3;SCHEMES[handler$4.scheme]=handler$4;SCHEMES[handler$5.scheme]=handler$5;SCHEMES[handler$6.scheme]=handler$6;exports.SCHEMES=SCHEMES;exports.pctEncChar=pctEncChar;exports.pctDecChars=pctDecChars;exports.parse=parse;exports.removeDotSegments=removeDotSegments;exports.serialize=serialize;exports.resolveComponents=resolveComponents;exports.resolve=resolve;exports.normalize=normalize;exports.equal=equal;exports.escapeComponent=escapeComponent;exports.unescapeComponent=unescapeComponent;Object.defineProperty(exports,"__esModule",{value:true})})},{}],506:[function(require,module,exports){var v1=require("./v1");var v4=require("./v4");var uuid=v4;uuid.v1=v1;uuid.v4=v4;module.exports=uuid},{"./v1":509,"./v4":510}],507:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]}module.exports=bytesToUuid},{}],508:[function(require,module,exports){(function(global){(function(){var rng;var crypto=global.crypto||global.msCrypto;if(crypto&&crypto.getRandomValues){var rnds8=new Uint8Array(16);rng=function whatwgRNG(){crypto.getRandomValues(rnds8);return rnds8}}if(!rng){var rnds=new Array(16);rng=function(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}module.exports=rng}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],509:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");var _seedBytes=rng();var _nodeId=[_seedBytes[0]|1,_seedBytes[1],_seedBytes[2],_seedBytes[3],_seedBytes[4],_seedBytes[5]];var _clockseq=(_seedBytes[6]<<8|_seedBytes[7])&16383;var _lastMSecs=0,_lastNSecs=0;function v1(options,buf,offset){var i=buf&&offset||0;var b=buf||[];options=options||{};var clockseq=options.clockseq!==undefined?options.clockseq:_clockseq;var msecs=options.msecs!==undefined?options.msecs:(new Date).getTime();var nsecs=options.nsecs!==undefined?options.nsecs:_lastNSecs+1;var dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&options.clockseq===undefined){clockseq=clockseq+1&16383}if((dt<0||msecs>_lastMSecs)&&options.nsecs===undefined){nsecs=0}if(nsecs>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}_lastMSecs=msecs;_lastNSecs=nsecs;_clockseq=clockseq;msecs+=122192928e5;var tl=((msecs&268435455)*1e4+nsecs)%4294967296;b[i++]=tl>>>24&255;b[i++]=tl>>>16&255;b[i++]=tl>>>8&255;b[i++]=tl&255;var tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255;b[i++]=tmh&255;b[i++]=tmh>>>24&15|16;b[i++]=tmh>>>16&255;b[i++]=clockseq>>>8|128;b[i++]=clockseq&255;var node=options.node||_nodeId;for(var n=0;n<6;++n){b[i+n]=node[n]}return buf?buf:bytesToUuid(b)}module.exports=v1},{"./lib/bytesToUuid":507,"./lib/rng":508}],510:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options=="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":507,"./lib/rng":508}],511:[function(require,module,exports){var mod_assertplus=require("assert-plus");var mod_util=require("util");var mod_extsprintf=require("extsprintf");var mod_isError=require("core-util-is").isError;var sprintf=mod_extsprintf.sprintf;module.exports=VError;VError.VError=VError;VError.SError=SError;VError.WError=WError;VError.MultiError=MultiError;function parseConstructorArguments(args){var argv,options,sprintf_args,shortmessage,k;mod_assertplus.object(args,"args");mod_assertplus.bool(args.strict,"args.strict");mod_assertplus.array(args.argv,"args.argv");argv=args.argv;if(argv.length===0){options={};sprintf_args=[]}else if(mod_isError(argv[0])){options={cause:argv[0]};sprintf_args=argv.slice(1)}else if(typeof argv[0]==="object"){options={};for(k in argv[0]){options[k]=argv[0][k]}sprintf_args=argv.slice(1)}else{mod_assertplus.string(argv[0],"first argument to VError, SError, or WError "+"constructor must be a string, object, or Error");options={};sprintf_args=argv}mod_assertplus.object(options);if(!options.strict&&!args.strict){sprintf_args=sprintf_args.map(function(a){return a===null?"null":a===undefined?"undefined":a})}if(sprintf_args.length===0){shortmessage=""}else{shortmessage=sprintf.apply(null,sprintf_args)}return{options:options,shortmessage:shortmessage}}function VError(){var args,obj,parsed,cause,ctor,message,k;args=Array.prototype.slice.call(arguments,0);if(!(this instanceof VError)){obj=Object.create(VError.prototype);VError.apply(obj,arguments);return obj}parsed=parseConstructorArguments({argv:args,strict:false});if(parsed.options.name){mod_assertplus.string(parsed.options.name,'error\'s "name" must be a string');this.name=parsed.options.name}this.jse_shortmsg=parsed.shortmessage;message=parsed.shortmessage;cause=parsed.options.cause;if(cause){mod_assertplus.ok(mod_isError(cause),"cause is not an Error");this.jse_cause=cause;if(!parsed.options.skipCauseMessage){message+=": "+cause.message}}this.jse_info={};if(parsed.options.info){for(k in parsed.options.info){this.jse_info[k]=parsed.options.info[k]}}this.message=message;Error.call(this,message);if(Error.captureStackTrace){ctor=parsed.options.constructorOpt||this.constructor;Error.captureStackTrace(this,ctor)}return this}mod_util.inherits(VError,Error);VError.prototype.name="VError";VError.prototype.toString=function ve_toString(){var str=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;if(this.message)str+=": "+this.message;return str};VError.prototype.cause=function ve_cause(){var cause=VError.cause(this);return cause===null?undefined:cause};VError.cause=function(err){mod_assertplus.ok(mod_isError(err),"err must be an Error");return mod_isError(err.jse_cause)?err.jse_cause:null};VError.info=function(err){var rv,cause,k;mod_assertplus.ok(mod_isError(err),"err must be an Error");cause=VError.cause(err);if(cause!==null){rv=VError.info(cause)}else{rv={}}if(typeof err.jse_info=="object"&&err.jse_info!==null){for(k in err.jse_info){rv[k]=err.jse_info[k]}}return rv};VError.findCauseByName=function(err,name){var cause;mod_assertplus.ok(mod_isError(err),"err must be an Error");mod_assertplus.string(name,"name");mod_assertplus.ok(name.length>0,"name cannot be empty");for(cause=err;cause!==null;cause=VError.cause(cause)){mod_assertplus.ok(mod_isError(cause));if(cause.name==name){return cause}}return null};VError.hasCauseWithName=function(err,name){return VError.findCauseByName(err,name)!==null};VError.fullStack=function(err){mod_assertplus.ok(mod_isError(err),"err must be an Error");var cause=VError.cause(err);if(cause){return err.stack+"\ncaused by: "+VError.fullStack(cause)}return err.stack};VError.errorFromList=function(errors){mod_assertplus.arrayOfObject(errors,"errors");if(errors.length===0){return null}errors.forEach(function(e){mod_assertplus.ok(mod_isError(e))});if(errors.length==1){return errors[0]}return new MultiError(errors)};VError.errorForEach=function(err,func){mod_assertplus.ok(mod_isError(err),"err must be an Error");mod_assertplus.func(func,"func");if(err instanceof MultiError){err.errors().forEach(function iterError(e){func(e)})}else{func(err)}};function SError(){var args,obj,parsed,options;args=Array.prototype.slice.call(arguments,0);if(!(this instanceof SError)){obj=Object.create(SError.prototype);SError.apply(obj,arguments);return obj}parsed=parseConstructorArguments({argv:args,strict:true});options=parsed.options;VError.call(this,options,"%s",parsed.shortmessage);return this}mod_util.inherits(SError,VError);function MultiError(errors){mod_assertplus.array(errors,"list of errors");mod_assertplus.ok(errors.length>0,"must be at least one error");this.ase_errors=errors;VError.call(this,{cause:errors[0]},"first of %d error%s",errors.length,errors.length==1?"":"s")}mod_util.inherits(MultiError,VError);MultiError.prototype.name="MultiError";MultiError.prototype.errors=function me_errors(){return this.ase_errors.slice(0)};function WError(){var args,obj,parsed,options;args=Array.prototype.slice.call(arguments,0);if(!(this instanceof WError)){obj=Object.create(WError.prototype);WError.apply(obj,args);return obj}parsed=parseConstructorArguments({argv:args,strict:false});options=parsed.options;options["skipCauseMessage"]=true;VError.call(this,options,"%s",parsed.shortmessage);return this}mod_util.inherits(WError,VError);WError.prototype.name="WError";WError.prototype.toString=function we_toString(){var str=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;if(this.message)str+=": "+this.message;if(this.jse_cause&&this.jse_cause.message)str+="; caused by "+this.jse_cause.toString();return str};WError.prototype.cause=function we_cause(c){if(mod_isError(c))this.jse_cause=c;return this.jse_cause}},{"assert-plus":387,"core-util-is":394,extsprintf:400,util:243}]},{},[246]);
|
|
49
|
+
},{}],447:[function(require,module,exports){"use strict";var Punycode=require("punycode");var internals={};internals.rules=require("./data/rules.json").map(function(rule){return{rule:rule,suffix:rule.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:rule.charAt(0)==="*",exception:rule.charAt(0)==="!"}});internals.endsWith=function(str,suffix){return str.indexOf(suffix,str.length-suffix.length)!==-1};internals.findRule=function(domain){var punyDomain=Punycode.toASCII(domain);return internals.rules.reduce(function(memo,rule){if(rule.punySuffix===-1){rule.punySuffix=Punycode.toASCII(rule.suffix)}if(!internals.endsWith(punyDomain,"."+rule.punySuffix)&&punyDomain!==rule.punySuffix){return memo}return rule},null)};exports.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."};internals.validate=function(input){var ascii=Punycode.toASCII(input);if(ascii.length<1){return"DOMAIN_TOO_SHORT"}if(ascii.length>255){return"DOMAIN_TOO_LONG"}var labels=ascii.split(".");var label;for(var i=0;i<labels.length;++i){label=labels[i];if(!label.length){return"LABEL_TOO_SHORT"}if(label.length>63){return"LABEL_TOO_LONG"}if(label.charAt(0)==="-"){return"LABEL_STARTS_WITH_DASH"}if(label.charAt(label.length-1)==="-"){return"LABEL_ENDS_WITH_DASH"}if(!/^[a-z0-9\-]+$/.test(label)){return"LABEL_INVALID_CHARS"}}};exports.parse=function(input){if(typeof input!=="string"){throw new TypeError("Domain name must be a string.")}var domain=input.slice(0).toLowerCase();if(domain.charAt(domain.length-1)==="."){domain=domain.slice(0,domain.length-1)}var error=internals.validate(domain);if(error){return{input:input,error:{message:exports.errorCodes[error],code:error}}}var parsed={input:input,tld:null,sld:null,domain:null,subdomain:null,listed:false};var domainParts=domain.split(".");if(domainParts[domainParts.length-1]==="local"){return parsed}var handlePunycode=function(){if(!/xn--/.test(domain)){return parsed}if(parsed.domain){parsed.domain=Punycode.toASCII(parsed.domain)}if(parsed.subdomain){parsed.subdomain=Punycode.toASCII(parsed.subdomain)}return parsed};var rule=internals.findRule(domain);if(!rule){if(domainParts.length<2){return parsed}parsed.tld=domainParts.pop();parsed.sld=domainParts.pop();parsed.domain=[parsed.sld,parsed.tld].join(".");if(domainParts.length){parsed.subdomain=domainParts.pop()}return handlePunycode()}parsed.listed=true;var tldParts=rule.suffix.split(".");var privateParts=domainParts.slice(0,domainParts.length-tldParts.length);if(rule.exception){privateParts.push(tldParts.shift())}parsed.tld=tldParts.join(".");if(!privateParts.length){return handlePunycode()}if(rule.wildcard){tldParts.unshift(privateParts.pop());parsed.tld=tldParts.join(".")}if(!privateParts.length){return handlePunycode()}parsed.sld=privateParts.pop();parsed.domain=[parsed.sld,parsed.tld].join(".");if(privateParts.length){parsed.subdomain=privateParts.join(".")}return handlePunycode()};exports.get=function(domain){if(!domain){return null}return exports.parse(domain).domain||null};exports.isValid=function(domain){var parsed=exports.parse(domain);return Boolean(parsed.domain&&parsed.listed)}},{"./data/rules.json":446,punycode:187}],448:[function(require,module,exports){"use strict";var replace=String.prototype.replace;var percentTwenties=/%20/g;module.exports={default:"RFC3986",formatters:{RFC1738:function(value){return replace.call(value,percentTwenties,"+")},RFC3986:function(value){return String(value)}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},{}],449:[function(require,module,exports){"use strict";var stringify=require("./stringify");var parse=require("./parse");var formats=require("./formats");module.exports={formats:formats,parse:parse,stringify:stringify}},{"./formats":448,"./parse":450,"./stringify":451}],450:[function(require,module,exports){"use strict";var utils=require("./utils");var has=Object.prototype.hasOwnProperty;var defaults={allowDots:false,allowPrototypes:false,arrayLimit:20,decoder:utils.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:false,strictNullHandling:false};var parseValues=function parseQueryStringValues(str,options){var obj={};var cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str;var limit=options.parameterLimit===Infinity?undefined:options.parameterLimit;var parts=cleanStr.split(options.delimiter,limit);for(var i=0;i<parts.length;++i){var part=parts[i];var bracketEqualsPos=part.indexOf("]=");var pos=bracketEqualsPos===-1?part.indexOf("="):bracketEqualsPos+1;var key,val;if(pos===-1){key=options.decoder(part,defaults.decoder);val=options.strictNullHandling?null:""}else{key=options.decoder(part.slice(0,pos),defaults.decoder);val=options.decoder(part.slice(pos+1),defaults.decoder)}if(has.call(obj,key)){obj[key]=[].concat(obj[key]).concat(val)}else{obj[key]=val}}return obj};var parseObject=function(chain,val,options){var leaf=val;for(var i=chain.length-1;i>=0;--i){var obj;var root=chain[i];if(root==="[]"&&options.parseArrays){obj=[].concat(leaf)}else{obj=options.plainObjects?Object.create(null):{};var cleanRoot=root.charAt(0)==="["&&root.charAt(root.length-1)==="]"?root.slice(1,-1):root;var index=parseInt(cleanRoot,10);if(!options.parseArrays&&cleanRoot===""){obj={0:leaf}}else if(!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&(options.parseArrays&&index<=options.arrayLimit)){obj=[];obj[index]=leaf}else if(cleanRoot!=="__proto__"){obj[cleanRoot]=leaf}}leaf=obj}return leaf};var parseKeys=function parseQueryStringKeys(givenKey,val,options){if(!givenKey){return}var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,"[$1]"):givenKey;var brackets=/(\[[^[\]]*])/;var child=/(\[[^[\]]*])/g;var segment=brackets.exec(key);var parent=segment?key.slice(0,segment.index):key;var keys=[];if(parent){if(!options.plainObjects&&has.call(Object.prototype,parent)){if(!options.allowPrototypes){return}}keys.push(parent)}var i=0;while((segment=child.exec(key))!==null&&i<options.depth){i+=1;if(!options.plainObjects&&has.call(Object.prototype,segment[1].slice(1,-1))){if(!options.allowPrototypes){return}}keys.push(segment[1])}if(segment){keys.push("["+key.slice(segment.index)+"]")}return parseObject(keys,val,options)};module.exports=function(str,opts){var options=opts?utils.assign({},opts):{};if(options.decoder!==null&&options.decoder!==undefined&&typeof options.decoder!=="function"){throw new TypeError("Decoder has to be a function.")}options.ignoreQueryPrefix=options.ignoreQueryPrefix===true;options.delimiter=typeof options.delimiter==="string"||utils.isRegExp(options.delimiter)?options.delimiter:defaults.delimiter;options.depth=typeof options.depth==="number"?options.depth:defaults.depth;options.arrayLimit=typeof options.arrayLimit==="number"?options.arrayLimit:defaults.arrayLimit;options.parseArrays=options.parseArrays!==false;options.decoder=typeof options.decoder==="function"?options.decoder:defaults.decoder;options.allowDots=typeof options.allowDots==="boolean"?options.allowDots:defaults.allowDots;options.plainObjects=typeof options.plainObjects==="boolean"?options.plainObjects:defaults.plainObjects;options.allowPrototypes=typeof options.allowPrototypes==="boolean"?options.allowPrototypes:defaults.allowPrototypes;options.parameterLimit=typeof options.parameterLimit==="number"?options.parameterLimit:defaults.parameterLimit;options.strictNullHandling=typeof options.strictNullHandling==="boolean"?options.strictNullHandling:defaults.strictNullHandling;if(str===""||str===null||typeof str==="undefined"){return options.plainObjects?Object.create(null):{}}var tempObj=typeof str==="string"?parseValues(str,options):str;var obj=options.plainObjects?Object.create(null):{};var keys=Object.keys(tempObj);for(var i=0;i<keys.length;++i){var key=keys[i];var newObj=parseKeys(key,tempObj[key],options);obj=utils.merge(obj,newObj,options)}return utils.compact(obj)}},{"./utils":452}],451:[function(require,module,exports){"use strict";var utils=require("./utils");var formats=require("./formats");var arrayPrefixGenerators={brackets:function brackets(prefix){return prefix+"[]"},indices:function indices(prefix,key){return prefix+"["+key+"]"},repeat:function repeat(prefix){return prefix}};var isArray=Array.isArray;var push=Array.prototype.push;var pushToArray=function(arr,valueOrArray){push.apply(arr,isArray(valueOrArray)?valueOrArray:[valueOrArray])};var toISO=Date.prototype.toISOString;var defaults={delimiter:"&",encode:true,encoder:utils.encode,encodeValuesOnly:false,serializeDate:function serializeDate(date){return toISO.call(date)},skipNulls:false,strictNullHandling:false};var stringify=function stringify(object,prefix,generateArrayPrefix,strictNullHandling,skipNulls,encoder,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly){var obj=object;if(typeof filter==="function"){obj=filter(prefix,obj)}else if(obj instanceof Date){obj=serializeDate(obj)}if(obj===null){if(strictNullHandling){return encoder&&!encodeValuesOnly?encoder(prefix,defaults.encoder):prefix}obj=""}if(typeof obj==="string"||typeof obj==="number"||typeof obj==="boolean"||utils.isBuffer(obj)){if(encoder){var keyValue=encodeValuesOnly?prefix:encoder(prefix,defaults.encoder);return[formatter(keyValue)+"="+formatter(encoder(obj,defaults.encoder))]}return[formatter(prefix)+"="+formatter(String(obj))]}var values=[];if(typeof obj==="undefined"){return values}var objKeys;if(isArray(filter)){objKeys=filter}else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var i=0;i<objKeys.length;++i){var key=objKeys[i];if(skipNulls&&obj[key]===null){continue}if(isArray(obj)){pushToArray(values,stringify(obj[key],generateArrayPrefix(prefix,key),generateArrayPrefix,strictNullHandling,skipNulls,encoder,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly))}else{pushToArray(values,stringify(obj[key],prefix+(allowDots?"."+key:"["+key+"]"),generateArrayPrefix,strictNullHandling,skipNulls,encoder,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly))}}return values};module.exports=function(object,opts){var obj=object;var options=opts?utils.assign({},opts):{};if(options.encoder!==null&&typeof options.encoder!=="undefined"&&typeof options.encoder!=="function"){throw new TypeError("Encoder has to be a function.")}var delimiter=typeof options.delimiter==="undefined"?defaults.delimiter:options.delimiter;var strictNullHandling=typeof options.strictNullHandling==="boolean"?options.strictNullHandling:defaults.strictNullHandling;var skipNulls=typeof options.skipNulls==="boolean"?options.skipNulls:defaults.skipNulls;var encode=typeof options.encode==="boolean"?options.encode:defaults.encode;var encoder=typeof options.encoder==="function"?options.encoder:defaults.encoder;var sort=typeof options.sort==="function"?options.sort:null;var allowDots=typeof options.allowDots==="undefined"?false:options.allowDots;var serializeDate=typeof options.serializeDate==="function"?options.serializeDate:defaults.serializeDate;var encodeValuesOnly=typeof options.encodeValuesOnly==="boolean"?options.encodeValuesOnly:defaults.encodeValuesOnly;if(typeof options.format==="undefined"){options.format=formats["default"]}else if(!Object.prototype.hasOwnProperty.call(formats.formatters,options.format)){throw new TypeError("Unknown format option provided.")}var formatter=formats.formatters[options.format];var objKeys;var filter;if(typeof options.filter==="function"){filter=options.filter;obj=filter("",obj)}else if(isArray(options.filter)){filter=options.filter;objKeys=filter}var keys=[];if(typeof obj!=="object"||obj===null){return""}var arrayFormat;if(options.arrayFormat in arrayPrefixGenerators){arrayFormat=options.arrayFormat}else if("indices"in options){arrayFormat=options.indices?"indices":"repeat"}else{arrayFormat="indices"}var generateArrayPrefix=arrayPrefixGenerators[arrayFormat];if(!objKeys){objKeys=Object.keys(obj)}if(sort){objKeys.sort(sort)}for(var i=0;i<objKeys.length;++i){var key=objKeys[i];if(skipNulls&&obj[key]===null){continue}pushToArray(keys,stringify(obj[key],key,generateArrayPrefix,strictNullHandling,skipNulls,encode?encoder:null,filter,sort,allowDots,serializeDate,formatter,encodeValuesOnly))}var joined=keys.join(delimiter);var prefix=options.addQueryPrefix===true?"?":"";return joined.length>0?prefix+joined:""}},{"./formats":448,"./utils":452}],452:[function(require,module,exports){"use strict";var has=Object.prototype.hasOwnProperty;var hexTable=function(){var array=[];for(var i=0;i<256;++i){array.push("%"+((i<16?"0":"")+i.toString(16)).toUpperCase())}return array}();var compactQueue=function compactQueue(queue){var obj;while(queue.length){var item=queue.pop();obj=item.obj[item.prop];if(Array.isArray(obj)){var compacted=[];for(var j=0;j<obj.length;++j){if(typeof obj[j]!=="undefined"){compacted.push(obj[j])}}item.obj[item.prop]=compacted}}return obj};var arrayToObject=function arrayToObject(source,options){var obj=options&&options.plainObjects?Object.create(null):{};for(var i=0;i<source.length;++i){if(typeof source[i]!=="undefined"){obj[i]=source[i]}}return obj};var merge=function merge(target,source,options){if(!source){return target}if(typeof source!=="object"){if(Array.isArray(target)){target.push(source)}else if(target&&typeof target==="object"){if(options&&(options.plainObjects||options.allowPrototypes)||!has.call(Object.prototype,source)){target[source]=true}}else{return[target,source]}return target}if(!target||typeof target!=="object"){return[target].concat(source)}var mergeTarget=target;if(Array.isArray(target)&&!Array.isArray(source)){mergeTarget=arrayToObject(target,options)}if(Array.isArray(target)&&Array.isArray(source)){source.forEach(function(item,i){if(has.call(target,i)){var targetItem=target[i];if(targetItem&&typeof targetItem==="object"&&item&&typeof item==="object"){target[i]=merge(targetItem,item,options)}else{target.push(item)}}else{target[i]=item}});return target}return Object.keys(source).reduce(function(acc,key){var value=source[key];if(has.call(acc,key)){acc[key]=merge(acc[key],value,options)}else{acc[key]=value}return acc},mergeTarget)};var assign=function assignSingleSource(target,source){return Object.keys(source).reduce(function(acc,key){acc[key]=source[key];return acc},target)};var decode=function(str){try{return decodeURIComponent(str.replace(/\+/g," "))}catch(e){return str}};var encode=function encode(str){if(str.length===0){return str}var string=typeof str==="string"?str:String(str);var out="";for(var i=0;i<string.length;++i){var c=string.charCodeAt(i);if(c===45||c===46||c===95||c===126||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122){out+=string.charAt(i);continue}if(c<128){out=out+hexTable[c];continue}if(c<2048){out=out+(hexTable[192|c>>6]+hexTable[128|c&63]);continue}if(c<55296||c>=57344){out=out+(hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|c&63]);continue}i+=1;c=65536+((c&1023)<<10|string.charCodeAt(i)&1023);out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|c&63]}return out};var compact=function compact(value){var queue=[{obj:{o:value},prop:"o"}];var refs=[];for(var i=0;i<queue.length;++i){var item=queue[i];var obj=item.obj[item.prop];var keys=Object.keys(obj);for(var j=0;j<keys.length;++j){var key=keys[j];var val=obj[key];if(typeof val==="object"&&val!==null&&refs.indexOf(val)===-1){queue.push({obj:obj,prop:key});refs.push(val)}}}return compactQueue(queue)};var isRegExp=function isRegExp(obj){return Object.prototype.toString.call(obj)==="[object RegExp]"};var isBuffer=function isBuffer(obj){if(obj===null||typeof obj==="undefined"){return false}return!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))};module.exports={arrayToObject:arrayToObject,assign:assign,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isRegExp:isRegExp,merge:merge}},{}],453:[function(require,module,exports){"use strict";var extend=require("extend");var cookies=require("./lib/cookies");var helpers=require("./lib/helpers");var paramsHaveRequestBody=helpers.paramsHaveRequestBody;function initParams(uri,options,callback){if(typeof options==="function"){callback=options}var params={};if(options!==null&&typeof options==="object"){extend(params,options,{uri:uri})}else if(typeof uri==="string"){extend(params,{uri:uri})}else{extend(params,uri)}params.callback=callback||params.callback;return params}function request(uri,options,callback){if(typeof uri==="undefined"){throw new Error("undefined is not a valid uri or options object.")}var params=initParams(uri,options,callback);if(params.method==="HEAD"&¶msHaveRequestBody(params)){throw new Error("HTTP HEAD requests MUST NOT include a request body.")}return new request.Request(params)}function verbFunc(verb){var method=verb.toUpperCase();return function(uri,options,callback){var params=initParams(uri,options,callback);params.method=method;return request(params,params.callback)}}request.get=verbFunc("get");request.head=verbFunc("head");request.options=verbFunc("options");request.post=verbFunc("post");request.put=verbFunc("put");request.patch=verbFunc("patch");request.del=verbFunc("delete");request["delete"]=verbFunc("delete");request.jar=function(store){return cookies.jar(store)};request.cookie=function(str){return cookies.parse(str)};function wrapRequestMethod(method,options,requester,verb){return function(uri,opts,callback){var params=initParams(uri,opts,callback);var target={};extend(true,target,options,params);target.pool=params.pool||options.pool;if(verb){target.method=verb.toUpperCase()}if(typeof requester==="function"){method=requester}return method(target,target.callback)}}request.defaults=function(options,requester){var self=this;options=options||{};if(typeof options==="function"){requester=options;options={}}var defaults=wrapRequestMethod(self,options,requester);var verbs=["get","head","post","put","patch","del","delete"];verbs.forEach(function(verb){defaults[verb]=wrapRequestMethod(self[verb],options,requester,verb)});defaults.cookie=wrapRequestMethod(self.cookie,options,requester);defaults.jar=self.jar;defaults.defaults=self.defaults;return defaults};request.forever=function(agentOptions,optionsArg){var options={};if(optionsArg){extend(options,optionsArg)}if(agentOptions){options.agentOptions=agentOptions}options.forever=true;return request.defaults(options)};module.exports=request;request.Request=require("./request");request.initParams=initParams;Object.defineProperty(request,"debug",{enumerable:true,get:function(){return request.Request.debug},set:function(debug){request.Request.debug=debug}})},{"./lib/cookies":455,"./lib/helpers":459,"./request":468,extend:399}],454:[function(require,module,exports){"use strict";var caseless=require("caseless");var uuid=require("uuid/v4");var helpers=require("./helpers");var md5=helpers.md5;var toBase64=helpers.toBase64;function Auth(request){this.request=request;this.hasAuth=false;this.sentAuth=false;this.bearerToken=null;this.user=null;this.pass=null}Auth.prototype.basic=function(user,pass,sendImmediately){var self=this;if(typeof user!=="string"||pass!==undefined&&typeof pass!=="string"){self.request.emit("error",new Error("auth() received invalid user or password"))}self.user=user;self.pass=pass;self.hasAuth=true;var header=user+":"+(pass||"");if(sendImmediately||typeof sendImmediately==="undefined"){var authHeader="Basic "+toBase64(header);self.sentAuth=true;return authHeader}};Auth.prototype.bearer=function(bearer,sendImmediately){var self=this;self.bearerToken=bearer;self.hasAuth=true;if(sendImmediately||typeof sendImmediately==="undefined"){if(typeof bearer==="function"){bearer=bearer()}var authHeader="Bearer "+(bearer||"");self.sentAuth=true;return authHeader}};Auth.prototype.digest=function(method,path,authHeader){var self=this;var challenge={};var re=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;while(true){var match=re.exec(authHeader);if(!match){break}challenge[match[1]]=match[2]||match[3]}var ha1Compute=function(algorithm,user,realm,pass,nonce,cnonce){var ha1=md5(user+":"+realm+":"+pass);if(algorithm&&algorithm.toLowerCase()==="md5-sess"){return md5(ha1+":"+nonce+":"+cnonce)}else{return ha1}};var qop=/(^|,)\s*auth\s*($|,)/.test(challenge.qop)&&"auth";var nc=qop&&"00000001";var cnonce=qop&&uuid().replace(/-/g,"");var ha1=ha1Compute(challenge.algorithm,self.user,challenge.realm,self.pass,challenge.nonce,cnonce);var ha2=md5(method+":"+path);var digestResponse=qop?md5(ha1+":"+challenge.nonce+":"+nc+":"+cnonce+":"+qop+":"+ha2):md5(ha1+":"+challenge.nonce+":"+ha2);var authValues={username:self.user,realm:challenge.realm,nonce:challenge.nonce,uri:path,qop:qop,response:digestResponse,nc:nc,cnonce:cnonce,algorithm:challenge.algorithm,opaque:challenge.opaque};authHeader=[];for(var k in authValues){if(authValues[k]){if(k==="qop"||k==="nc"||k==="algorithm"){authHeader.push(k+"="+authValues[k])}else{authHeader.push(k+'="'+authValues[k]+'"')}}}authHeader="Digest "+authHeader.join(", ");self.sentAuth=true;return authHeader};Auth.prototype.onRequest=function(user,pass,sendImmediately,bearer){var self=this;var request=self.request;var authHeader;if(bearer===undefined&&user===undefined){self.request.emit("error",new Error("no auth mechanism defined"))}else if(bearer!==undefined){authHeader=self.bearer(bearer,sendImmediately)}else{authHeader=self.basic(user,pass,sendImmediately)}if(authHeader){request.setHeader("authorization",authHeader)}};Auth.prototype.onResponse=function(response){var self=this;var request=self.request;if(!self.hasAuth||self.sentAuth){return null}var c=caseless(response.headers);var authHeader=c.get("www-authenticate");var authVerb=authHeader&&authHeader.split(" ")[0].toLowerCase();request.debug("reauth",authVerb);switch(authVerb){case"basic":return self.basic(self.user,self.pass,true);case"bearer":return self.bearer(self.bearerToken,true);case"digest":return self.digest(request.method,request.path,authHeader)}};exports.Auth=Auth},{"./helpers":459,caseless:392,"uuid/v4":467}],455:[function(require,module,exports){"use strict";var tough=require("tough-cookie");var Cookie=tough.Cookie;var CookieJar=tough.CookieJar;exports.parse=function(str){if(str&&str.uri){str=str.uri}if(typeof str!=="string"){throw new Error("The cookie function only accepts STRING as param")}return Cookie.parse(str,{loose:true})};function RequestJar(store){var self=this;self._jar=new CookieJar(store,{looseMode:true})}RequestJar.prototype.setCookie=function(cookieOrStr,uri,options){var self=this;return self._jar.setCookieSync(cookieOrStr,uri,options||{})};RequestJar.prototype.getCookieString=function(uri){var self=this;return self._jar.getCookieStringSync(uri)};RequestJar.prototype.getCookies=function(uri){var self=this;return self._jar.getCookiesSync(uri)};exports.jar=function(store){return new RequestJar(store)}},{"tough-cookie":496}],456:[function(require,module,exports){(function(process){(function(){"use strict";function formatHostname(hostname){return hostname.replace(/^\.*/,".").toLowerCase()}function parseNoProxyZone(zone){zone=zone.trim().toLowerCase();var zoneParts=zone.split(":",2);var zoneHost=formatHostname(zoneParts[0]);var zonePort=zoneParts[1];var hasPort=zone.indexOf(":")>-1;return{hostname:zoneHost,port:zonePort,hasPort:hasPort}}function uriInNoProxy(uri,noProxy){var port=uri.port||(uri.protocol==="https:"?"443":"80");var hostname=formatHostname(uri.hostname);var noProxyList=noProxy.split(",");return noProxyList.map(parseNoProxyZone).some(function(noProxyZone){var isMatchedAt=hostname.indexOf(noProxyZone.hostname);var hostnameMatched=isMatchedAt>-1&&isMatchedAt===hostname.length-noProxyZone.hostname.length;if(noProxyZone.hasPort){return port===noProxyZone.port&&hostnameMatched}return hostnameMatched})}function getProxyFromURI(uri){var noProxy=process.env.NO_PROXY||process.env.no_proxy||"";if(noProxy==="*"){return null}if(noProxy!==""&&uriInNoProxy(uri,noProxy)){return null}if(uri.protocol==="http:"){return process.env.HTTP_PROXY||process.env.http_proxy||null}if(uri.protocol==="https:"){return process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||null}return null}module.exports=getProxyFromURI}).call(this)}).call(this,require("_process"))},{_process:179}],457:[function(require,module,exports){"use strict";var fs=require("fs");var qs=require("querystring");var validate=require("har-validator");var extend=require("extend");function Har(request){this.request=request}Har.prototype.reducer=function(obj,pair){if(obj[pair.name]===undefined){obj[pair.name]=pair.value;return obj}var arr=[obj[pair.name],pair.value];obj[pair.name]=arr;return obj};Har.prototype.prep=function(data){data.queryObj={};data.headersObj={};data.postData.jsonObj=false;data.postData.paramsObj=false;if(data.queryString&&data.queryString.length){data.queryObj=data.queryString.reduce(this.reducer,{})}if(data.headers&&data.headers.length){data.headersObj=data.headers.reduceRight(function(headers,header){headers[header.name]=header.value;return headers},{})}if(data.cookies&&data.cookies.length){var cookies=data.cookies.map(function(cookie){return cookie.name+"="+cookie.value});if(cookies.length){data.headersObj.cookie=cookies.join("; ")}}function some(arr){return arr.some(function(type){return data.postData.mimeType.indexOf(type)===0})}if(some(["multipart/mixed","multipart/related","multipart/form-data","multipart/alternative"])){data.postData.mimeType="multipart/form-data"}else if(some(["application/x-www-form-urlencoded"])){if(!data.postData.params){data.postData.text=""}else{data.postData.paramsObj=data.postData.params.reduce(this.reducer,{});data.postData.text=qs.stringify(data.postData.paramsObj)}}else if(some(["text/json","text/x-json","application/json","application/x-json"])){data.postData.mimeType="application/json";if(data.postData.text){try{data.postData.jsonObj=JSON.parse(data.postData.text)}catch(e){this.request.debug(e);data.postData.mimeType="text/plain"}}}return data};Har.prototype.options=function(options){if(!options.har){return options}var har={};extend(har,options.har);if(har.log&&har.log.entries){har=har.log.entries[0]}har.url=har.url||options.url||options.uri||options.baseUrl||"/";har.httpVersion=har.httpVersion||"HTTP/1.1";har.queryString=har.queryString||[];har.headers=har.headers||[];har.cookies=har.cookies||[];har.postData=har.postData||{};har.postData.mimeType=har.postData.mimeType||"application/octet-stream";har.bodySize=0;har.headersSize=0;har.postData.size=0;if(!validate.request(har)){return options}var req=this.prep(har);if(req.url){options.url=req.url}if(req.method){options.method=req.method}if(Object.keys(req.queryObj).length){options.qs=req.queryObj}if(Object.keys(req.headersObj).length){options.headers=req.headersObj}function test(type){return req.postData.mimeType.indexOf(type)===0}if(test("application/x-www-form-urlencoded")){options.form=req.postData.paramsObj}else if(test("application/json")){if(req.postData.jsonObj){options.body=req.postData.jsonObj;options.json=true}}else if(test("multipart/form-data")){options.formData={};req.postData.params.forEach(function(param){var attachment={};if(!param.fileName&&!param.contentType){options.formData[param.name]=param.value;return}if(param.fileName&&!param.value){attachment.value=fs.createReadStream(param.fileName)}else if(param.value){attachment.value=param.value}if(param.fileName){attachment.options={filename:param.fileName,contentType:param.contentType?param.contentType:null}}options.formData[param.name]=attachment})}else{if(req.postData.text){options.body=req.postData.text}}return options};exports.Har=Har},{extend:399,fs:69,"har-validator":425,querystring:190}],458:[function(require,module,exports){"use strict";var crypto=require("crypto");function randomString(size){var bits=(size+1)*6;var buffer=crypto.randomBytes(Math.ceil(bits/8));var string=buffer.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");return string.slice(0,size)}function calculatePayloadHash(payload,algorithm,contentType){var hash=crypto.createHash(algorithm);hash.update("hawk.1.payload\n");hash.update((contentType?contentType.split(";")[0].trim().toLowerCase():"")+"\n");hash.update(payload||"");hash.update("\n");return hash.digest("base64")}exports.calculateMac=function(credentials,opts){var normalized="hawk.1.header\n"+opts.ts+"\n"+opts.nonce+"\n"+(opts.method||"").toUpperCase()+"\n"+opts.resource+"\n"+opts.host.toLowerCase()+"\n"+opts.port+"\n"+(opts.hash||"")+"\n";if(opts.ext){normalized=normalized+opts.ext.replace("\\","\\\\").replace("\n","\\n")}normalized=normalized+"\n";if(opts.app){normalized=normalized+opts.app+"\n"+(opts.dlg||"")+"\n"}var hmac=crypto.createHmac(credentials.algorithm,credentials.key).update(normalized);var digest=hmac.digest("base64");return digest};exports.header=function(uri,method,opts){var timestamp=opts.timestamp||Math.floor((Date.now()+(opts.localtimeOffsetMsec||0))/1e3);var credentials=opts.credentials;if(!credentials||!credentials.id||!credentials.key||!credentials.algorithm){return""}if(["sha1","sha256"].indexOf(credentials.algorithm)===-1){return""}var artifacts={ts:timestamp,nonce:opts.nonce||randomString(6),method:method,resource:uri.pathname+(uri.search||""),host:uri.hostname,port:uri.port||(uri.protocol==="http:"?80:443),hash:opts.hash,ext:opts.ext,app:opts.app,dlg:opts.dlg};if(!artifacts.hash&&(opts.payload||opts.payload==="")){artifacts.hash=calculatePayloadHash(opts.payload,credentials.algorithm,opts.contentType)}var mac=exports.calculateMac(credentials,artifacts);var hasExt=artifacts.ext!==null&&artifacts.ext!==undefined&&artifacts.ext!=="";var header='Hawk id="'+credentials.id+'", ts="'+artifacts.ts+'", nonce="'+artifacts.nonce+(artifacts.hash?'", hash="'+artifacts.hash:"")+(hasExt?'", ext="'+artifacts.ext.replace(/\\/g,"\\\\").replace(/"/g,'\\"'):"")+'", mac="'+mac+'"';if(artifacts.app){header=header+', app="'+artifacts.app+(artifacts.dlg?'", dlg="'+artifacts.dlg:"")+'"'}return header}},{crypto:81}],459:[function(require,module,exports){(function(process,setImmediate){(function(){"use strict";var jsonSafeStringify=require("json-stringify-safe");var crypto=require("crypto");var Buffer=require("safe-buffer").Buffer;var defer=typeof setImmediate==="undefined"?process.nextTick:setImmediate;function paramsHaveRequestBody(params){return params.body||params.requestBodyStream||params.json&&typeof params.json!=="boolean"||params.multipart}function safeStringify(obj,replacer){var ret;try{ret=JSON.stringify(obj,replacer)}catch(e){ret=jsonSafeStringify(obj,replacer)}return ret}function md5(str){return crypto.createHash("md5").update(str).digest("hex")}function isReadStream(rs){return rs.readable&&rs.path&&rs.mode}function toBase64(str){return Buffer.from(str||"","utf8").toString("base64")}function copy(obj){var o={};Object.keys(obj).forEach(function(i){o[i]=obj[i]});return o}function version(){var numbers=process.version.replace("v","").split(".");return{major:parseInt(numbers[0],10),minor:parseInt(numbers[1],10),patch:parseInt(numbers[2],10)}}exports.paramsHaveRequestBody=paramsHaveRequestBody;exports.safeStringify=safeStringify;exports.md5=md5;exports.isReadStream=isReadStream;exports.toBase64=toBase64;exports.copy=copy;exports.version=version;exports.defer=defer}).call(this)}).call(this,require("_process"),require("timers").setImmediate)},{_process:179,crypto:81,"json-stringify-safe":436,"safe-buffer":469,timers:236}],460:[function(require,module,exports){"use strict";var uuid=require("uuid/v4");var CombinedStream=require("combined-stream");var isstream=require("isstream");var Buffer=require("safe-buffer").Buffer;function Multipart(request){this.request=request;this.boundary=uuid();this.chunked=false;this.body=null}
|
|
50
|
+
Multipart.prototype.isChunked=function(options){var self=this;var chunked=false;var parts=options.data||options;if(!parts.forEach){self.request.emit("error",new Error("Argument error, options.multipart."))}if(options.chunked!==undefined){chunked=options.chunked}if(self.request.getHeader("transfer-encoding")==="chunked"){chunked=true}if(!chunked){parts.forEach(function(part){if(typeof part.body==="undefined"){self.request.emit("error",new Error("Body attribute missing in multipart."))}if(isstream(part.body)){chunked=true}})}return chunked};Multipart.prototype.setHeaders=function(chunked){var self=this;if(chunked&&!self.request.hasHeader("transfer-encoding")){self.request.setHeader("transfer-encoding","chunked")}var header=self.request.getHeader("content-type");if(!header||header.indexOf("multipart")===-1){self.request.setHeader("content-type","multipart/related; boundary="+self.boundary)}else{if(header.indexOf("boundary")!==-1){self.boundary=header.replace(/.*boundary=([^\s;]+).*/,"$1")}else{self.request.setHeader("content-type",header+"; boundary="+self.boundary)}}};Multipart.prototype.build=function(parts,chunked){var self=this;var body=chunked?new CombinedStream:[];function add(part){if(typeof part==="number"){part=part.toString()}return chunked?body.append(part):body.push(Buffer.from(part))}if(self.request.preambleCRLF){add("\r\n")}parts.forEach(function(part){var preamble="--"+self.boundary+"\r\n";Object.keys(part).forEach(function(key){if(key==="body"){return}preamble+=key+": "+part[key]+"\r\n"});preamble+="\r\n";add(preamble);add(part.body);add("\r\n")});add("--"+self.boundary+"--");if(self.request.postambleCRLF){add("\r\n")}return body};Multipart.prototype.onRequest=function(options){var self=this;var chunked=self.isChunked(options);var parts=options.data||options;self.setHeaders(chunked);self.chunked=chunked;self.body=self.build(parts,chunked)};exports.Multipart=Multipart},{"combined-stream":393,isstream:432,"safe-buffer":469,"uuid/v4":467}],461:[function(require,module,exports){"use strict";var url=require("url");var qs=require("qs");var caseless=require("caseless");var uuid=require("uuid/v4");var oauth=require("oauth-sign");var crypto=require("crypto");var Buffer=require("safe-buffer").Buffer;function OAuth(request){this.request=request;this.params=null}OAuth.prototype.buildParams=function(_oauth,uri,method,query,form,qsLib){var oa={};for(var i in _oauth){oa["oauth_"+i]=_oauth[i]}if(!oa.oauth_version){oa.oauth_version="1.0"}if(!oa.oauth_timestamp){oa.oauth_timestamp=Math.floor(Date.now()/1e3).toString()}if(!oa.oauth_nonce){oa.oauth_nonce=uuid().replace(/-/g,"")}if(!oa.oauth_signature_method){oa.oauth_signature_method="HMAC-SHA1"}var consumer_secret_or_private_key=oa.oauth_consumer_secret||oa.oauth_private_key;delete oa.oauth_consumer_secret;delete oa.oauth_private_key;var token_secret=oa.oauth_token_secret;delete oa.oauth_token_secret;var realm=oa.oauth_realm;delete oa.oauth_realm;delete oa.oauth_transport_method;var baseurl=uri.protocol+"//"+uri.host+uri.pathname;var params=qsLib.parse([].concat(query,form,qsLib.stringify(oa)).join("&"));oa.oauth_signature=oauth.sign(oa.oauth_signature_method,method,baseurl,params,consumer_secret_or_private_key,token_secret);if(realm){oa.realm=realm}return oa};OAuth.prototype.buildBodyHash=function(_oauth,body){if(["HMAC-SHA1","RSA-SHA1"].indexOf(_oauth.signature_method||"HMAC-SHA1")<0){this.request.emit("error",new Error("oauth: "+_oauth.signature_method+" signature_method not supported with body_hash signing."))}var shasum=crypto.createHash("sha1");shasum.update(body||"");var sha1=shasum.digest("hex");return Buffer.from(sha1,"hex").toString("base64")};OAuth.prototype.concatParams=function(oa,sep,wrap){wrap=wrap||"";var params=Object.keys(oa).filter(function(i){return i!=="realm"&&i!=="oauth_signature"}).sort();if(oa.realm){params.splice(0,0,"realm")}params.push("oauth_signature");return params.map(function(i){return i+"="+wrap+oauth.rfc3986(oa[i])+wrap}).join(sep)};OAuth.prototype.onRequest=function(_oauth){var self=this;self.params=_oauth;var uri=self.request.uri||{};var method=self.request.method||"";var headers=caseless(self.request.headers);var body=self.request.body||"";var qsLib=self.request.qsLib||qs;var form;var query;var contentType=headers.get("content-type")||"";var formContentType="application/x-www-form-urlencoded";var transport=_oauth.transport_method||"header";if(contentType.slice(0,formContentType.length)===formContentType){contentType=formContentType;form=body}if(uri.query){query=uri.query}if(transport==="body"&&(method!=="POST"||contentType!==formContentType)){self.request.emit("error",new Error("oauth: transport_method of body requires POST "+"and content-type "+formContentType))}if(!form&&typeof _oauth.body_hash==="boolean"){_oauth.body_hash=self.buildBodyHash(_oauth,self.request.body.toString())}var oa=self.buildParams(_oauth,uri,method,query,form,qsLib);switch(transport){case"header":self.request.setHeader("Authorization","OAuth "+self.concatParams(oa,",",'"'));break;case"query":var href=self.request.uri.href+=(query?"&":"?")+self.concatParams(oa,"&");self.request.uri=url.parse(href);self.request.path=self.request.uri.path;break;case"body":self.request.body=(form?form+"&":"")+self.concatParams(oa,"&");break;default:self.request.emit("error",new Error("oauth: transport_method invalid"))}};exports.OAuth=OAuth},{caseless:392,crypto:81,"oauth-sign":444,qs:449,"safe-buffer":469,url:238,"uuid/v4":467}],462:[function(require,module,exports){"use strict";var qs=require("qs");var querystring=require("querystring");function Querystring(request){this.request=request;this.lib=null;this.useQuerystring=null;this.parseOptions=null;this.stringifyOptions=null}Querystring.prototype.init=function(options){if(this.lib){return}this.useQuerystring=options.useQuerystring;this.lib=this.useQuerystring?querystring:qs;this.parseOptions=options.qsParseOptions||{};this.stringifyOptions=options.qsStringifyOptions||{}};Querystring.prototype.stringify=function(obj){return this.useQuerystring?this.rfc3986(this.lib.stringify(obj,this.stringifyOptions.sep||null,this.stringifyOptions.eq||null,this.stringifyOptions)):this.lib.stringify(obj,this.stringifyOptions)};Querystring.prototype.parse=function(str){return this.useQuerystring?this.lib.parse(str,this.parseOptions.sep||null,this.parseOptions.eq||null,this.parseOptions):this.lib.parse(str,this.parseOptions)};Querystring.prototype.rfc3986=function(str){return str.replace(/[!'()*]/g,function(c){return"%"+c.charCodeAt(0).toString(16).toUpperCase()})};Querystring.prototype.unescape=querystring.unescape;exports.Querystring=Querystring},{qs:449,querystring:190}],463:[function(require,module,exports){"use strict";var url=require("url");var isUrl=/^https?:/;function Redirect(request){this.request=request;this.followRedirect=true;this.followRedirects=true;this.followAllRedirects=false;this.followOriginalHttpMethod=false;this.allowRedirect=function(){return true};this.maxRedirects=10;this.redirects=[];this.redirectsFollowed=0;this.removeRefererHeader=false}Redirect.prototype.onRequest=function(options){var self=this;if(options.maxRedirects!==undefined){self.maxRedirects=options.maxRedirects}if(typeof options.followRedirect==="function"){self.allowRedirect=options.followRedirect}if(options.followRedirect!==undefined){self.followRedirects=!!options.followRedirect}if(options.followAllRedirects!==undefined){self.followAllRedirects=options.followAllRedirects}if(self.followRedirects||self.followAllRedirects){self.redirects=self.redirects||[]}if(options.removeRefererHeader!==undefined){self.removeRefererHeader=options.removeRefererHeader}if(options.followOriginalHttpMethod!==undefined){self.followOriginalHttpMethod=options.followOriginalHttpMethod}};Redirect.prototype.redirectTo=function(response){var self=this;var request=self.request;var redirectTo=null;if(response.statusCode>=300&&response.statusCode<400&&response.caseless.has("location")){var location=response.caseless.get("location");request.debug("redirect",location);if(self.followAllRedirects){redirectTo=location}else if(self.followRedirects){switch(request.method){case"PATCH":case"PUT":case"POST":case"DELETE":break;default:redirectTo=location;break}}}else if(response.statusCode===401){var authHeader=request._auth.onResponse(response);if(authHeader){request.setHeader("authorization",authHeader);redirectTo=request.uri}}return redirectTo};Redirect.prototype.onResponse=function(response){var self=this;var request=self.request;var redirectTo=self.redirectTo(response);if(!redirectTo||!self.allowRedirect.call(request,response)){return false}request.debug("redirect to",redirectTo);if(response.resume){response.resume()}if(self.redirectsFollowed>=self.maxRedirects){request.emit("error",new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+request.uri.href));return false}self.redirectsFollowed+=1;if(!isUrl.test(redirectTo)){redirectTo=url.resolve(request.uri.href,redirectTo)}var uriPrev=request.uri;request.uri=url.parse(redirectTo);if(request.uri.protocol!==uriPrev.protocol){delete request.agent}self.redirects.push({statusCode:response.statusCode,redirectUri:redirectTo});if(self.followAllRedirects&&request.method!=="HEAD"&&response.statusCode!==401&&response.statusCode!==307){request.method=self.followOriginalHttpMethod?request.method:"GET"}delete request.src;delete request.req;delete request._started;if(response.statusCode!==401&&response.statusCode!==307){delete request.body;delete request._form;if(request.headers){request.removeHeader("host");request.removeHeader("content-type");request.removeHeader("content-length");if(request.uri.hostname!==request.originalHost.split(":")[0]){request.removeHeader("authorization")}}}if(!self.removeRefererHeader){request.setHeader("referer",uriPrev.href)}request.emit("redirect");request.init();return true};exports.Redirect=Redirect},{url:238}],464:[function(require,module,exports){"use strict";var url=require("url");var tunnel=require("tunnel-agent");var defaultProxyHeaderWhiteList=["accept","accept-charset","accept-encoding","accept-language","accept-ranges","cache-control","content-encoding","content-language","content-location","content-md5","content-range","content-type","connection","date","expect","max-forwards","pragma","referer","te","user-agent","via"];var defaultProxyHeaderExclusiveList=["proxy-authorization"];function constructProxyHost(uriObject){var port=uriObject.port;var protocol=uriObject.protocol;var proxyHost=uriObject.hostname+":";if(port){proxyHost+=port}else if(protocol==="https:"){proxyHost+="443"}else{proxyHost+="80"}return proxyHost}function constructProxyHeaderWhiteList(headers,proxyHeaderWhiteList){var whiteList=proxyHeaderWhiteList.reduce(function(set,header){set[header.toLowerCase()]=true;return set},{});return Object.keys(headers).filter(function(header){return whiteList[header.toLowerCase()]}).reduce(function(set,header){set[header]=headers[header];return set},{})}function constructTunnelOptions(request,proxyHeaders){var proxy=request.proxy;var tunnelOptions={proxy:{host:proxy.hostname,port:+proxy.port,proxyAuth:proxy.auth,headers:proxyHeaders},headers:request.headers,ca:request.ca,cert:request.cert,key:request.key,passphrase:request.passphrase,pfx:request.pfx,ciphers:request.ciphers,rejectUnauthorized:request.rejectUnauthorized,secureOptions:request.secureOptions,secureProtocol:request.secureProtocol};return tunnelOptions}function constructTunnelFnName(uri,proxy){var uriProtocol=uri.protocol==="https:"?"https":"http";var proxyProtocol=proxy.protocol==="https:"?"Https":"Http";return[uriProtocol,proxyProtocol].join("Over")}function getTunnelFn(request){var uri=request.uri;var proxy=request.proxy;var tunnelFnName=constructTunnelFnName(uri,proxy);return tunnel[tunnelFnName]}function Tunnel(request){this.request=request;this.proxyHeaderWhiteList=defaultProxyHeaderWhiteList;this.proxyHeaderExclusiveList=[];if(typeof request.tunnel!=="undefined"){this.tunnelOverride=request.tunnel}}Tunnel.prototype.isEnabled=function(){var self=this;var request=self.request;if(typeof self.tunnelOverride!=="undefined"){return self.tunnelOverride}if(request.uri.protocol==="https:"){return true}return false};Tunnel.prototype.setup=function(options){var self=this;var request=self.request;options=options||{};if(typeof request.proxy==="string"){request.proxy=url.parse(request.proxy)}if(!request.proxy||!request.tunnel){return false}if(options.proxyHeaderWhiteList){self.proxyHeaderWhiteList=options.proxyHeaderWhiteList}if(options.proxyHeaderExclusiveList){self.proxyHeaderExclusiveList=options.proxyHeaderExclusiveList}var proxyHeaderExclusiveList=self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList);var proxyHeaderWhiteList=self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList);var proxyHeaders=constructProxyHeaderWhiteList(request.headers,proxyHeaderWhiteList);proxyHeaders.host=constructProxyHost(request.uri);proxyHeaderExclusiveList.forEach(request.removeHeader,request);var tunnelFn=getTunnelFn(request);var tunnelOptions=constructTunnelOptions(request,proxyHeaders);request.agent=tunnelFn(tunnelOptions);return true};Tunnel.defaultProxyHeaderWhiteList=defaultProxyHeaderWhiteList;Tunnel.defaultProxyHeaderExclusiveList=defaultProxyHeaderExclusiveList;exports.Tunnel=Tunnel},{"tunnel-agent":503,url:238}],465:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return[bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]]].join("")}module.exports=bytesToUuid},{}],466:[function(require,module,exports){var getRandomValues=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof window.msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto);if(getRandomValues){var rnds8=new Uint8Array(16);module.exports=function whatwgRNG(){getRandomValues(rnds8);return rnds8}}else{var rnds=new Array(16);module.exports=function mathRNG(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}},{}],467:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options==="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":465,"./lib/rng":466}],468:[function(require,module,exports){(function(process){(function(){"use strict";var http=require("http");var https=require("https");var url=require("url");var util=require("util");var stream=require("stream");var zlib=require("zlib");var aws2=require("aws-sign2");var aws4=require("aws4");var httpSignature=require("http-signature");var mime=require("mime-types");var caseless=require("caseless");var ForeverAgent=require("forever-agent");var FormData=require("form-data");var extend=require("extend");var isstream=require("isstream");var isTypedArray=require("is-typedarray").strict;var helpers=require("./lib/helpers");var cookies=require("./lib/cookies");var getProxyFromURI=require("./lib/getProxyFromURI");var Querystring=require("./lib/querystring").Querystring;var Har=require("./lib/har").Har;var Auth=require("./lib/auth").Auth;var OAuth=require("./lib/oauth").OAuth;var hawk=require("./lib/hawk");var Multipart=require("./lib/multipart").Multipart;var Redirect=require("./lib/redirect").Redirect;var Tunnel=require("./lib/tunnel").Tunnel;var now=require("performance-now");var Buffer=require("safe-buffer").Buffer;var safeStringify=helpers.safeStringify;var isReadStream=helpers.isReadStream;var toBase64=helpers.toBase64;var defer=helpers.defer;var copy=helpers.copy;var version=helpers.version;var globalCookieJar=cookies.jar();var globalPool={};function filterForNonReserved(reserved,options){var object={};for(var i in options){var notReserved=reserved.indexOf(i)===-1;if(notReserved){object[i]=options[i]}}return object}function filterOutReservedFunctions(reserved,options){var object={};for(var i in options){var isReserved=!(reserved.indexOf(i)===-1);var isFunction=typeof options[i]==="function";if(!(isReserved&&isFunction)){object[i]=options[i]}}return object}function requestToJSON(){var self=this;return{uri:self.uri,method:self.method,headers:self.headers}}function responseToJSON(){var self=this;return{statusCode:self.statusCode,body:self.body,headers:self.headers,request:requestToJSON.call(self.request)}}function Request(options){var self=this;if(options.har){self._har=new Har(self);options=self._har.options(options)}stream.Stream.call(self);var reserved=Object.keys(Request.prototype);var nonReserved=filterForNonReserved(reserved,options);extend(self,nonReserved);options=filterOutReservedFunctions(reserved,options);self.readable=true;self.writable=true;if(options.method){self.explicitMethod=true}self._qs=new Querystring(self);self._auth=new Auth(self);self._oauth=new OAuth(self);self._multipart=new Multipart(self);self._redirect=new Redirect(self);self._tunnel=new Tunnel(self);self.init(options)}util.inherits(Request,stream.Stream);Request.debug=process.env.NODE_DEBUG&&/\brequest\b/.test(process.env.NODE_DEBUG);function debug(){if(Request.debug){console.error("REQUEST %s",util.format.apply(util,arguments))}}Request.prototype.debug=debug;Request.prototype.init=function(options){var self=this;if(!options){options={}}self.headers=self.headers?copy(self.headers):{};for(var headerName in self.headers){if(typeof self.headers[headerName]==="undefined"){delete self.headers[headerName]}}caseless.httpify(self,self.headers);if(!self.method){self.method=options.method||"GET"}if(!self.localAddress){self.localAddress=options.localAddress}self._qs.init(options);debug(options);if(!self.pool&&self.pool!==false){self.pool=globalPool}self.dests=self.dests||[];self.__isRequestRequest=true;if(!self._callback&&self.callback){self._callback=self.callback;self.callback=function(){if(self._callbackCalled){return}self._callbackCalled=true;self._callback.apply(self,arguments)};self.on("error",self.callback.bind());self.on("complete",self.callback.bind(self,null))}if(!self.uri&&self.url){self.uri=self.url;delete self.url}if(self.baseUrl){if(typeof self.baseUrl!=="string"){return self.emit("error",new Error("options.baseUrl must be a string"))}if(typeof self.uri!=="string"){return self.emit("error",new Error("options.uri must be a string when using options.baseUrl"))}if(self.uri.indexOf("//")===0||self.uri.indexOf("://")!==-1){return self.emit("error",new Error("options.uri must be a path when using options.baseUrl"))}var baseUrlEndsWithSlash=self.baseUrl.lastIndexOf("/")===self.baseUrl.length-1;var uriStartsWithSlash=self.uri.indexOf("/")===0;if(baseUrlEndsWithSlash&&uriStartsWithSlash){self.uri=self.baseUrl+self.uri.slice(1)}else if(baseUrlEndsWithSlash||uriStartsWithSlash){self.uri=self.baseUrl+self.uri}else if(self.uri===""){self.uri=self.baseUrl}else{self.uri=self.baseUrl+"/"+self.uri}delete self.baseUrl}if(!self.uri){return self.emit("error",new Error("options.uri is a required argument"))}if(typeof self.uri==="string"){self.uri=url.parse(self.uri)}if(!self.uri.href){self.uri.href=url.format(self.uri)}if(self.uri.protocol==="unix:"){return self.emit("error",new Error("`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`"))}if(self.uri.host==="unix"){self.enableUnixSocket()}if(self.strictSSL===false){self.rejectUnauthorized=false}if(!self.uri.pathname){self.uri.pathname="/"}if(!(self.uri.host||self.uri.hostname&&self.uri.port)&&!self.uri.isUnix){var faultyUri=url.format(self.uri);var message='Invalid URI "'+faultyUri+'"';if(Object.keys(options).length===0){message+=". This can be caused by a crappy redirection."}self.abort();return self.emit("error",new Error(message))}if(!self.hasOwnProperty("proxy")){self.proxy=getProxyFromURI(self.uri)}self.tunnel=self._tunnel.isEnabled();if(self.proxy){self._tunnel.setup(options)}self._redirect.onRequest(options);self.setHost=false;if(!self.hasHeader("host")){var hostHeaderName=self.originalHostHeaderName||"host";self.setHeader(hostHeaderName,self.uri.host);if(self.uri.port){if(self.uri.port==="80"&&self.uri.protocol==="http:"||self.uri.port==="443"&&self.uri.protocol==="https:"){self.setHeader(hostHeaderName,self.uri.hostname)}}self.setHost=true}self.jar(self._jar||options.jar);if(!self.uri.port){if(self.uri.protocol==="http:"){self.uri.port=80}else if(self.uri.protocol==="https:"){self.uri.port=443}}if(self.proxy&&!self.tunnel){self.port=self.proxy.port;self.host=self.proxy.hostname}else{self.port=self.uri.port;self.host=self.uri.hostname}if(options.form){self.form(options.form)}if(options.formData){var formData=options.formData;var requestForm=self.form();var appendFormValue=function(key,value){if(value&&value.hasOwnProperty("value")&&value.hasOwnProperty("options")){requestForm.append(key,value.value,value.options)}else{requestForm.append(key,value)}};for(var formKey in formData){if(formData.hasOwnProperty(formKey)){var formValue=formData[formKey];if(formValue instanceof Array){for(var j=0;j<formValue.length;j++){appendFormValue(formKey,formValue[j])}}else{appendFormValue(formKey,formValue)}}}}if(options.qs){self.qs(options.qs)}if(self.uri.path){self.path=self.uri.path}else{self.path=self.uri.pathname+(self.uri.search||"")}if(self.path.length===0){self.path="/"}if(options.aws){self.aws(options.aws)}if(options.hawk){self.hawk(options.hawk)}if(options.httpSignature){self.httpSignature(options.httpSignature)}if(options.auth){if(Object.prototype.hasOwnProperty.call(options.auth,"username")){options.auth.user=options.auth.username}if(Object.prototype.hasOwnProperty.call(options.auth,"password")){options.auth.pass=options.auth.password}self.auth(options.auth.user,options.auth.pass,options.auth.sendImmediately,options.auth.bearer)}if(self.gzip&&!self.hasHeader("accept-encoding")){self.setHeader("accept-encoding","gzip, deflate")}if(self.uri.auth&&!self.hasHeader("authorization")){var uriAuthPieces=self.uri.auth.split(":").map(function(item){return self._qs.unescape(item)});self.auth(uriAuthPieces[0],uriAuthPieces.slice(1).join(":"),true)}if(!self.tunnel&&self.proxy&&self.proxy.auth&&!self.hasHeader("proxy-authorization")){var proxyAuthPieces=self.proxy.auth.split(":").map(function(item){return self._qs.unescape(item)});var authHeader="Basic "+toBase64(proxyAuthPieces.join(":"));self.setHeader("proxy-authorization",authHeader)}if(self.proxy&&!self.tunnel){self.path=self.uri.protocol+"//"+self.uri.host+self.path}if(options.json){self.json(options.json)}if(options.multipart){self.multipart(options.multipart)}if(options.time){self.timing=true;self.elapsedTime=self.elapsedTime||0}function setContentLength(){if(isTypedArray(self.body)){self.body=Buffer.from(self.body)}if(!self.hasHeader("content-length")){var length;if(typeof self.body==="string"){length=Buffer.byteLength(self.body)}else if(Array.isArray(self.body)){length=self.body.reduce(function(a,b){return a+b.length},0)}else{length=self.body.length}if(length){self.setHeader("content-length",length)}else{self.emit("error",new Error("Argument error, options.body."))}}}if(self.body&&!isstream(self.body)){setContentLength()}if(options.oauth){self.oauth(options.oauth)}else if(self._oauth.params&&self.hasHeader("authorization")){self.oauth(self._oauth.params)}var protocol=self.proxy&&!self.tunnel?self.proxy.protocol:self.uri.protocol;var defaultModules={"http:":http,"https:":https};var httpModules=self.httpModules||{};self.httpModule=httpModules[protocol]||defaultModules[protocol];if(!self.httpModule){return self.emit("error",new Error("Invalid protocol: "+protocol))}if(options.ca){self.ca=options.ca}if(!self.agent){if(options.agentOptions){self.agentOptions=options.agentOptions}if(options.agentClass){self.agentClass=options.agentClass}else if(options.forever){var v=version();if(v.major===0&&v.minor<=10){self.agentClass=protocol==="http:"?ForeverAgent:ForeverAgent.SSL}else{self.agentClass=self.httpModule.Agent;self.agentOptions=self.agentOptions||{};self.agentOptions.keepAlive=true}}else{self.agentClass=self.httpModule.Agent}}if(self.pool===false){self.agent=false}else{self.agent=self.agent||self.getNewAgent()}self.on("pipe",function(src){if(self.ntick&&self._started){self.emit("error",new Error("You cannot pipe to this stream after the outbound request has started."))}self.src=src;if(isReadStream(src)){if(!self.hasHeader("content-type")){self.setHeader("content-type",mime.lookup(src.path))}}else{if(src.headers){for(var i in src.headers){if(!self.hasHeader(i)){self.setHeader(i,src.headers[i])}}}if(self._json&&!self.hasHeader("content-type")){self.setHeader("content-type","application/json")}if(src.method&&!self.explicitMethod){self.method=src.method}}});defer(function(){if(self._aborted){return}var end=function(){if(self._form){if(!self._auth.hasAuth){self._form.pipe(self)}else if(self._auth.hasAuth&&self._auth.sentAuth){self._form.pipe(self)}}if(self._multipart&&self._multipart.chunked){self._multipart.body.pipe(self)}if(self.body){if(isstream(self.body)){self.body.pipe(self)}else{setContentLength();if(Array.isArray(self.body)){self.body.forEach(function(part){self.write(part)})}else{self.write(self.body)}self.end()}}else if(self.requestBodyStream){console.warn("options.requestBodyStream is deprecated, please pass the request object to stream.pipe.");self.requestBodyStream.pipe(self)}else if(!self.src){if(self._auth.hasAuth&&!self._auth.sentAuth){self.end();return}if(self.method!=="GET"&&typeof self.method!=="undefined"){self.setHeader("content-length",0)}self.end()}};if(self._form&&!self.hasHeader("content-length")){self.setHeader(self._form.getHeaders(),true);self._form.getLength(function(err,length){if(!err&&!isNaN(length)){self.setHeader("content-length",length)}end()})}else{end()}self.ntick=true})};Request.prototype.getNewAgent=function(){var self=this;var Agent=self.agentClass;var options={};if(self.agentOptions){for(var i in self.agentOptions){options[i]=self.agentOptions[i]}}if(self.ca){options.ca=self.ca}if(self.ciphers){options.ciphers=self.ciphers}if(self.secureProtocol){options.secureProtocol=self.secureProtocol}if(self.secureOptions){options.secureOptions=self.secureOptions}if(typeof self.rejectUnauthorized!=="undefined"){options.rejectUnauthorized=self.rejectUnauthorized}if(self.cert&&self.key){options.key=self.key;options.cert=self.cert}if(self.pfx){options.pfx=self.pfx}if(self.passphrase){options.passphrase=self.passphrase}var poolKey="";if(Agent!==self.httpModule.Agent){poolKey+=Agent.name}var proxy=self.proxy;if(typeof proxy==="string"){proxy=url.parse(proxy)}var isHttps=proxy&&proxy.protocol==="https:"||this.uri.protocol==="https:";if(isHttps){if(options.ca){if(poolKey){poolKey+=":"}poolKey+=options.ca}if(typeof options.rejectUnauthorized!=="undefined"){if(poolKey){poolKey+=":"}poolKey+=options.rejectUnauthorized}if(options.cert){if(poolKey){poolKey+=":"}poolKey+=options.cert.toString("ascii")+options.key.toString("ascii")}if(options.pfx){if(poolKey){poolKey+=":"}poolKey+=options.pfx.toString("ascii")}if(options.ciphers){if(poolKey){poolKey+=":"}poolKey+=options.ciphers}if(options.secureProtocol){if(poolKey){poolKey+=":"}poolKey+=options.secureProtocol}if(options.secureOptions){if(poolKey){poolKey+=":"}poolKey+=options.secureOptions}}if(self.pool===globalPool&&!poolKey&&Object.keys(options).length===0&&self.httpModule.globalAgent){return self.httpModule.globalAgent}poolKey=self.uri.protocol+poolKey;if(!self.pool[poolKey]){self.pool[poolKey]=new Agent(options);if(self.pool.maxSockets){self.pool[poolKey].maxSockets=self.pool.maxSockets}}return self.pool[poolKey]};Request.prototype.start=function(){var self=this;if(self.timing){var startTime=(new Date).getTime();var startTimeNow=now()}if(self._aborted){return}self._started=true;self.method=self.method||"GET";self.href=self.uri.href;if(self.src&&self.src.stat&&self.src.stat.size&&!self.hasHeader("content-length")){self.setHeader("content-length",self.src.stat.size)}if(self._aws){self.aws(self._aws,true)}var reqOptions=copy(self);delete reqOptions.auth;debug("make request",self.uri.href);delete reqOptions.timeout;try{self.req=self.httpModule.request(reqOptions)}catch(err){self.emit("error",err);return}if(self.timing){self.startTime=startTime;self.startTimeNow=startTimeNow;self.timings={}}var timeout;if(self.timeout&&!self.timeoutTimer){if(self.timeout<0){timeout=0}else if(typeof self.timeout==="number"&&isFinite(self.timeout)){timeout=self.timeout}}self.req.on("response",self.onRequestResponse.bind(self));self.req.on("error",self.onRequestError.bind(self));self.req.on("drain",function(){self.emit("drain")});self.req.on("socket",function(socket){var isConnecting=socket._connecting||socket.connecting;if(self.timing){self.timings.socket=now()-self.startTimeNow;if(isConnecting){var onLookupTiming=function(){self.timings.lookup=now()-self.startTimeNow};var onConnectTiming=function(){self.timings.connect=now()-self.startTimeNow};socket.once("lookup",onLookupTiming);socket.once("connect",onConnectTiming);self.req.once("error",function(){socket.removeListener("lookup",onLookupTiming);socket.removeListener("connect",onConnectTiming)})}}var setReqTimeout=function(){self.req.setTimeout(timeout,function(){if(self.req){self.abort();var e=new Error("ESOCKETTIMEDOUT");e.code="ESOCKETTIMEDOUT";e.connect=false;self.emit("error",e)}})};if(timeout!==undefined){if(isConnecting){var onReqSockConnect=function(){socket.removeListener("connect",onReqSockConnect);self.clearTimeout();setReqTimeout()};socket.on("connect",onReqSockConnect);self.req.on("error",function(err){socket.removeListener("connect",onReqSockConnect)});self.timeoutTimer=setTimeout(function(){socket.removeListener("connect",onReqSockConnect);self.abort();var e=new Error("ETIMEDOUT");e.code="ETIMEDOUT";e.connect=true;self.emit("error",e)},timeout)}else{setReqTimeout()}}self.emit("socket",socket)});self.emit("request",self.req)};Request.prototype.onRequestError=function(error){var self=this;if(self._aborted){return}if(self.req&&self.req._reusedSocket&&error.code==="ECONNRESET"&&self.agent.addRequestNoreuse){self.agent={addRequest:self.agent.addRequestNoreuse.bind(self.agent)};self.start();self.req.end();return}self.clearTimeout();self.emit("error",error)};Request.prototype.onRequestResponse=function(response){var self=this;if(self.timing){self.timings.response=now()-self.startTimeNow}debug("onRequestResponse",self.uri.href,response.statusCode,response.headers);response.on("end",function(){if(self.timing){self.timings.end=now()-self.startTimeNow;response.timingStart=self.startTime;if(!self.timings.socket){self.timings.socket=0}if(!self.timings.lookup){self.timings.lookup=self.timings.socket}if(!self.timings.connect){self.timings.connect=self.timings.lookup}if(!self.timings.response){self.timings.response=self.timings.connect}debug("elapsed time",self.timings.end);self.elapsedTime+=Math.round(self.timings.end);response.elapsedTime=self.elapsedTime;response.timings=self.timings;response.timingPhases={wait:self.timings.socket,dns:self.timings.lookup-self.timings.socket,tcp:self.timings.connect-self.timings.lookup,firstByte:self.timings.response-self.timings.connect,download:self.timings.end-self.timings.response,total:self.timings.end}}debug("response end",self.uri.href,response.statusCode,response.headers)});if(self._aborted){debug("aborted",self.uri.href);response.resume();return}self.response=response;response.request=self;response.toJSON=responseToJSON
|
|
51
|
+
;if(self.httpModule===https&&self.strictSSL&&(!response.hasOwnProperty("socket")||!response.socket.authorized)){debug("strict ssl error",self.uri.href);var sslErr=response.hasOwnProperty("socket")?response.socket.authorizationError:self.uri.href+" does not support SSL";self.emit("error",new Error("SSL Error: "+sslErr));return}self.originalHost=self.getHeader("host");if(!self.originalHostHeaderName){self.originalHostHeaderName=self.hasHeader("host")}if(self.setHost){self.removeHeader("host")}self.clearTimeout();var targetCookieJar=self._jar&&self._jar.setCookie?self._jar:globalCookieJar;var addCookie=function(cookie){try{targetCookieJar.setCookie(cookie,self.uri.href,{ignoreError:true})}catch(e){self.emit("error",e)}};response.caseless=caseless(response.headers);if(response.caseless.has("set-cookie")&&!self._disableCookies){var headerName=response.caseless.has("set-cookie");if(Array.isArray(response.headers[headerName])){response.headers[headerName].forEach(addCookie)}else{addCookie(response.headers[headerName])}}if(self._redirect.onResponse(response)){return}else{response.on("close",function(){if(!self._ended){self.response.emit("end")}});response.once("end",function(){self._ended=true});var noBody=function(code){return self.method==="HEAD"||code>=100&&code<200||code===204||code===304};var responseContent;if(self.gzip&&!noBody(response.statusCode)){var contentEncoding=response.headers["content-encoding"]||"identity";contentEncoding=contentEncoding.trim().toLowerCase();var zlibOptions={flush:zlib.Z_SYNC_FLUSH,finishFlush:zlib.Z_SYNC_FLUSH};if(contentEncoding==="gzip"){responseContent=zlib.createGunzip(zlibOptions);response.pipe(responseContent)}else if(contentEncoding==="deflate"){responseContent=zlib.createInflate(zlibOptions);response.pipe(responseContent)}else{if(contentEncoding!=="identity"){debug("ignoring unrecognized Content-Encoding "+contentEncoding)}responseContent=response}}else{responseContent=response}if(self.encoding){if(self.dests.length!==0){console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.")}else{responseContent.setEncoding(self.encoding)}}if(self._paused){responseContent.pause()}self.responseContent=responseContent;self.emit("response",response);self.dests.forEach(function(dest){self.pipeDest(dest)});responseContent.on("data",function(chunk){if(self.timing&&!self.responseStarted){self.responseStartTime=(new Date).getTime();response.responseStartTime=self.responseStartTime}self._destdata=true;self.emit("data",chunk)});responseContent.once("end",function(chunk){self.emit("end",chunk)});responseContent.on("error",function(error){self.emit("error",error)});responseContent.on("close",function(){self.emit("close")});if(self.callback){self.readResponseBody(response)}else{self.on("end",function(){if(self._aborted){debug("aborted",self.uri.href);return}self.emit("complete",response)})}}debug("finish init function",self.uri.href)};Request.prototype.readResponseBody=function(response){var self=this;debug("reading response's body");var buffers=[];var bufferLength=0;var strings=[];self.on("data",function(chunk){if(!Buffer.isBuffer(chunk)){strings.push(chunk)}else if(chunk.length){bufferLength+=chunk.length;buffers.push(chunk)}});self.on("end",function(){debug("end event",self.uri.href);if(self._aborted){debug("aborted",self.uri.href);buffers=[];bufferLength=0;return}if(bufferLength){debug("has body",self.uri.href,bufferLength);response.body=Buffer.concat(buffers,bufferLength);if(self.encoding!==null){response.body=response.body.toString(self.encoding)}buffers=[];bufferLength=0}else if(strings.length){if(self.encoding==="utf8"&&strings[0].length>0&&strings[0][0]==="\ufeff"){strings[0]=strings[0].substring(1)}response.body=strings.join("")}if(self._json){try{response.body=JSON.parse(response.body,self._jsonReviver)}catch(e){debug("invalid JSON received",self.uri.href)}}debug("emitting complete",self.uri.href);if(typeof response.body==="undefined"&&!self._json){response.body=self.encoding===null?Buffer.alloc(0):""}self.emit("complete",response,response.body)})};Request.prototype.abort=function(){var self=this;self._aborted=true;if(self.req){self.req.abort()}else if(self.response){self.response.destroy()}self.clearTimeout();self.emit("abort")};Request.prototype.pipeDest=function(dest){var self=this;var response=self.response;if(dest.headers&&!dest.headersSent){if(response.caseless.has("content-type")){var ctname=response.caseless.has("content-type");if(dest.setHeader){dest.setHeader(ctname,response.headers[ctname])}else{dest.headers[ctname]=response.headers[ctname]}}if(response.caseless.has("content-length")){var clname=response.caseless.has("content-length");if(dest.setHeader){dest.setHeader(clname,response.headers[clname])}else{dest.headers[clname]=response.headers[clname]}}}if(dest.setHeader&&!dest.headersSent){for(var i in response.headers){if(!self.gzip||i!=="content-encoding"){dest.setHeader(i,response.headers[i])}}dest.statusCode=response.statusCode}if(self.pipefilter){self.pipefilter(response,dest)}};Request.prototype.qs=function(q,clobber){var self=this;var base;if(!clobber&&self.uri.query){base=self._qs.parse(self.uri.query)}else{base={}}for(var i in q){base[i]=q[i]}var qs=self._qs.stringify(base);if(qs===""){return self}self.uri=url.parse(self.uri.href.split("?")[0]+"?"+qs);self.url=self.uri;self.path=self.uri.path;if(self.uri.host==="unix"){self.enableUnixSocket()}return self};Request.prototype.form=function(form){var self=this;if(form){if(!/^application\/x-www-form-urlencoded\b/.test(self.getHeader("content-type"))){self.setHeader("content-type","application/x-www-form-urlencoded")}self.body=typeof form==="string"?self._qs.rfc3986(form.toString("utf8")):self._qs.stringify(form).toString("utf8");return self}self._form=new FormData;self._form.on("error",function(err){err.message="form-data: "+err.message;self.emit("error",err);self.abort()});return self._form};Request.prototype.multipart=function(multipart){var self=this;self._multipart.onRequest(multipart);if(!self._multipart.chunked){self.body=self._multipart.body}return self};Request.prototype.json=function(val){var self=this;if(!self.hasHeader("accept")){self.setHeader("accept","application/json")}if(typeof self.jsonReplacer==="function"){self._jsonReplacer=self.jsonReplacer}self._json=true;if(typeof val==="boolean"){if(self.body!==undefined){if(!/^application\/x-www-form-urlencoded\b/.test(self.getHeader("content-type"))){self.body=safeStringify(self.body,self._jsonReplacer)}else{self.body=self._qs.rfc3986(self.body)}if(!self.hasHeader("content-type")){self.setHeader("content-type","application/json")}}}else{self.body=safeStringify(val,self._jsonReplacer);if(!self.hasHeader("content-type")){self.setHeader("content-type","application/json")}}if(typeof self.jsonReviver==="function"){self._jsonReviver=self.jsonReviver}return self};Request.prototype.getHeader=function(name,headers){var self=this;var result,re,match;if(!headers){headers=self.headers}Object.keys(headers).forEach(function(key){if(key.length!==name.length){return}re=new RegExp(name,"i");match=key.match(re);if(match){result=headers[key]}});return result};Request.prototype.enableUnixSocket=function(){var unixParts=this.uri.path.split(":");var host=unixParts[0];var path=unixParts[1];this.socketPath=host;this.uri.pathname=path;this.uri.path=path;this.uri.host=host;this.uri.hostname=host;this.uri.isUnix=true};Request.prototype.auth=function(user,pass,sendImmediately,bearer){var self=this;self._auth.onRequest(user,pass,sendImmediately,bearer);return self};Request.prototype.aws=function(opts,now){var self=this;if(!now){self._aws=opts;return self}if(opts.sign_version===4||opts.sign_version==="4"){var options={host:self.uri.host,path:self.uri.path,method:self.method,headers:self.headers,body:self.body};if(opts.service){options.service=opts.service}var signRes=aws4.sign(options,{accessKeyId:opts.key,secretAccessKey:opts.secret,sessionToken:opts.session});self.setHeader("authorization",signRes.headers.Authorization);self.setHeader("x-amz-date",signRes.headers["X-Amz-Date"]);if(signRes.headers["X-Amz-Security-Token"]){self.setHeader("x-amz-security-token",signRes.headers["X-Amz-Security-Token"])}}else{var date=new Date;self.setHeader("date",date.toUTCString());var auth={key:opts.key,secret:opts.secret,verb:self.method.toUpperCase(),date:date,contentType:self.getHeader("content-type")||"",md5:self.getHeader("content-md5")||"",amazonHeaders:aws2.canonicalizeHeaders(self.headers)};var path=self.uri.path;if(opts.bucket&&path){auth.resource="/"+opts.bucket+path}else if(opts.bucket&&!path){auth.resource="/"+opts.bucket}else if(!opts.bucket&&path){auth.resource=path}else if(!opts.bucket&&!path){auth.resource="/"}auth.resource=aws2.canonicalizeResource(auth.resource);self.setHeader("authorization",aws2.authorization(auth))}return self};Request.prototype.httpSignature=function(opts){var self=this;httpSignature.signRequest({getHeader:function(header){return self.getHeader(header,self.headers)},setHeader:function(header,value){self.setHeader(header,value)},method:self.method,path:self.path},opts);debug("httpSignature authorization",self.getHeader("authorization"));return self};Request.prototype.hawk=function(opts){var self=this;self.setHeader("Authorization",hawk.header(self.uri,self.method,opts))};Request.prototype.oauth=function(_oauth){var self=this;self._oauth.onRequest(_oauth);return self};Request.prototype.jar=function(jar){var self=this;var cookies;if(self._redirect.redirectsFollowed===0){self.originalCookieHeader=self.getHeader("cookie")}if(!jar){cookies=false;self._disableCookies=true}else{var targetCookieJar=jar.getCookieString?jar:globalCookieJar;var urihref=self.uri.href;if(targetCookieJar){cookies=targetCookieJar.getCookieString(urihref)}}if(cookies&&cookies.length){if(self.originalCookieHeader){self.setHeader("cookie",self.originalCookieHeader+"; "+cookies)}else{self.setHeader("cookie",cookies)}}self._jar=jar;return self};Request.prototype.pipe=function(dest,opts){var self=this;if(self.response){if(self._destdata){self.emit("error",new Error("You cannot pipe after data has been emitted from the response."))}else if(self._ended){self.emit("error",new Error("You cannot pipe after the response has been ended."))}else{stream.Stream.prototype.pipe.call(self,dest,opts);self.pipeDest(dest);return dest}}else{self.dests.push(dest);stream.Stream.prototype.pipe.call(self,dest,opts);return dest}};Request.prototype.write=function(){var self=this;if(self._aborted){return}if(!self._started){self.start()}if(self.req){return self.req.write.apply(self.req,arguments)}};Request.prototype.end=function(chunk){var self=this;if(self._aborted){return}if(chunk){self.write(chunk)}if(!self._started){self.start()}if(self.req){self.req.end()}};Request.prototype.pause=function(){var self=this;if(!self.responseContent){self._paused=true}else{self.responseContent.pause.apply(self.responseContent,arguments)}};Request.prototype.resume=function(){var self=this;if(!self.responseContent){self._paused=false}else{self.responseContent.resume.apply(self.responseContent,arguments)}};Request.prototype.destroy=function(){var self=this;this.clearTimeout();if(!self._ended){self.end()}else if(self.response){self.response.destroy()}};Request.prototype.clearTimeout=function(){if(this.timeoutTimer){clearTimeout(this.timeoutTimer);this.timeoutTimer=null}};Request.defaultProxyHeaderWhiteList=Tunnel.defaultProxyHeaderWhiteList.slice();Request.defaultProxyHeaderExclusiveList=Tunnel.defaultProxyHeaderExclusiveList.slice();Request.prototype.toJSON=requestToJSON;module.exports=Request}).call(this)}).call(this,require("_process"))},{"./lib/auth":454,"./lib/cookies":455,"./lib/getProxyFromURI":456,"./lib/har":457,"./lib/hawk":458,"./lib/helpers":459,"./lib/multipart":460,"./lib/oauth":461,"./lib/querystring":462,"./lib/redirect":463,"./lib/tunnel":464,_process:179,"aws-sign2":388,aws4:389,caseless:392,extend:399,"forever-agent":403,"form-data":404,http:230,"http-signature":426,https:142,"is-typedarray":431,isstream:432,"mime-types":443,"performance-now":445,"safe-buffer":469,stream:229,url:238,util:243,zlib:68}],469:[function(require,module,exports){arguments[4][202][0].apply(exports,arguments)},{buffer:71,dup:202}],470:[function(require,module,exports){(function(process){(function(){"use strict";var buffer=require("buffer");var Buffer=buffer.Buffer;var safer={};var key;for(key in buffer){if(!buffer.hasOwnProperty(key))continue;if(key==="SlowBuffer"||key==="Buffer")continue;safer[key]=buffer[key]}var Safer=safer.Buffer={};for(key in Buffer){if(!Buffer.hasOwnProperty(key))continue;if(key==="allocUnsafe"||key==="allocUnsafeSlow")continue;Safer[key]=Buffer[key]}safer.Buffer.prototype=Buffer.prototype;if(!Safer.from||Safer.from===Uint8Array.from){Safer.from=function(value,encodingOrOffset,length){if(typeof value==="number"){throw new TypeError('The "value" argument must not be of type number. Received type '+typeof value)}if(value&&typeof value.length==="undefined"){throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof value)}return Buffer(value,encodingOrOffset,length)}}if(!Safer.alloc){Safer.alloc=function(size,fill,encoding){if(typeof size!=="number"){throw new TypeError('The "size" argument must be of type number. Received type '+typeof size)}if(size<0||size>=2*(1<<30)){throw new RangeError('The value "'+size+'" is invalid for option "size"')}var buf=Buffer(size);if(!fill||fill.length===0){buf.fill(0)}else if(typeof encoding==="string"){buf.fill(fill,encoding)}else{buf.fill(fill)}return buf}}if(!safer.kStringMaxLength){try{safer.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch(e){}}if(!safer.constants){safer.constants={MAX_LENGTH:safer.kMaxLength};if(safer.kStringMaxLength){safer.constants.MAX_STRING_LENGTH=safer.kStringMaxLength}}module.exports=safer}).call(this)}).call(this,require("_process"))},{_process:179,buffer:71}],471:[function(require,module,exports){var Buffer=require("safer-buffer").Buffer;var algInfo={dsa:{parts:["p","q","g","y"],sizePart:"p"},rsa:{parts:["e","n"],sizePart:"n"},ecdsa:{parts:["curve","Q"],sizePart:"Q"},ed25519:{parts:["A"],sizePart:"A"}};algInfo["curve25519"]=algInfo["ed25519"];var algPrivInfo={dsa:{parts:["p","q","g","y","x"]},rsa:{parts:["n","e","d","iqmp","p","q"]},ecdsa:{parts:["curve","Q","d"]},ed25519:{parts:["A","k"]}};algPrivInfo["curve25519"]=algPrivInfo["ed25519"];var hashAlgs={md5:true,sha1:true,sha256:true,sha384:true,sha512:true};var curves={nistp256:{size:256,pkcs8oid:"1.2.840.10045.3.1.7",p:Buffer.from(("00"+"ffffffff 00000001 00000000 00000000"+"00000000 ffffffff ffffffff ffffffff").replace(/ /g,""),"hex"),a:Buffer.from(("00"+"FFFFFFFF 00000001 00000000 00000000"+"00000000 FFFFFFFF FFFFFFFF FFFFFFFC").replace(/ /g,""),"hex"),b:Buffer.from(("5ac635d8 aa3a93e7 b3ebbd55 769886bc"+"651d06b0 cc53b0f6 3bce3c3e 27d2604b").replace(/ /g,""),"hex"),s:Buffer.from(("00"+"c49d3608 86e70493 6a6678e1 139d26b7"+"819f7e90").replace(/ /g,""),"hex"),n:Buffer.from(("00"+"ffffffff 00000000 ffffffff ffffffff"+"bce6faad a7179e84 f3b9cac2 fc632551").replace(/ /g,""),"hex"),G:Buffer.from(("04"+"6b17d1f2 e12c4247 f8bce6e5 63a440f2"+"77037d81 2deb33a0 f4a13945 d898c296"+"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16"+"2bce3357 6b315ece cbb64068 37bf51f5").replace(/ /g,""),"hex")},nistp384:{size:384,pkcs8oid:"1.3.132.0.34",p:Buffer.from(("00"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff fffffffe"+"ffffffff 00000000 00000000 ffffffff").replace(/ /g,""),"hex"),a:Buffer.from(("00"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE"+"FFFFFFFF 00000000 00000000 FFFFFFFC").replace(/ /g,""),"hex"),b:Buffer.from(("b3312fa7 e23ee7e4 988e056b e3f82d19"+"181d9c6e fe814112 0314088f 5013875a"+"c656398d 8a2ed19d 2a85c8ed d3ec2aef").replace(/ /g,""),"hex"),s:Buffer.from(("00"+"a335926a a319a27a 1d00896a 6773a482"+"7acdac73").replace(/ /g,""),"hex"),n:Buffer.from(("00"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff c7634d81 f4372ddf"+"581a0db2 48b0a77a ecec196a ccc52973").replace(/ /g,""),"hex"),G:Buffer.from(("04"+"aa87ca22 be8b0537 8eb1c71e f320ad74"+"6e1d3b62 8ba79b98 59f741e0 82542a38"+"5502f25d bf55296c 3a545e38 72760ab7"+"3617de4a 96262c6f 5d9e98bf 9292dc29"+"f8f41dbd 289a147c e9da3113 b5f0b8c0"+"0a60b1ce 1d7e819d 7a431d7c 90ea0e5f").replace(/ /g,""),"hex")},nistp521:{size:521,pkcs8oid:"1.3.132.0.35",p:Buffer.from(("01ffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff ffffffff"+"ffff").replace(/ /g,""),"hex"),a:Buffer.from(("01FF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"+"FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC").replace(/ /g,""),"hex"),b:Buffer.from(("51"+"953eb961 8e1c9a1f 929a21a0 b68540ee"+"a2da725b 99b315f3 b8b48991 8ef109e1"+"56193951 ec7e937b 1652c0bd 3bb1bf07"+"3573df88 3d2c34f1 ef451fd4 6b503f00").replace(/ /g,""),"hex"),s:Buffer.from(("00"+"d09e8800 291cb853 96cc6717 393284aa"+"a0da64ba").replace(/ /g,""),"hex"),n:Buffer.from(("01ff"+"ffffffff ffffffff ffffffff ffffffff"+"ffffffff ffffffff ffffffff fffffffa"+"51868783 bf2f966b 7fcc0148 f709a5d0"+"3bb5c9b8 899c47ae bb6fb71e 91386409").replace(/ /g,""),"hex"),G:Buffer.from(("04"+"00c6 858e06b7 0404e9cd 9e3ecb66 2395b442"+"9c648139 053fb521 f828af60 6b4d3dba"+"a14b5e77 efe75928 fe1dc127 a2ffa8de"+"3348b3c1 856a429b f97e7e31 c2e5bd66"+"0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9"+"98f54449 579b4468 17afbd17 273e662c"+"97ee7299 5ef42640 c550b901 3fad0761"+"353c7086 a272c240 88be9476 9fd16650").replace(/ /g,""),"hex")}};module.exports={info:algInfo,privInfo:algPrivInfo,hashAlgs:hashAlgs,curves:curves}},{"safer-buffer":470}],472:[function(require,module,exports){module.exports=Certificate;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var errs=require("./errors");var util=require("util");var utils=require("./utils");var Key=require("./key");var PrivateKey=require("./private-key");var Identity=require("./identity");var formats={};formats["openssh"]=require("./formats/openssh-cert");formats["x509"]=require("./formats/x509");formats["pem"]=require("./formats/x509-pem");var CertificateParseError=errs.CertificateParseError;var InvalidAlgorithmError=errs.InvalidAlgorithmError;function Certificate(opts){assert.object(opts,"options");assert.arrayOfObject(opts.subjects,"options.subjects");utils.assertCompatible(opts.subjects[0],Identity,[1,0],"options.subjects");utils.assertCompatible(opts.subjectKey,Key,[1,0],"options.subjectKey");utils.assertCompatible(opts.issuer,Identity,[1,0],"options.issuer");if(opts.issuerKey!==undefined){utils.assertCompatible(opts.issuerKey,Key,[1,0],"options.issuerKey")}assert.object(opts.signatures,"options.signatures");assert.buffer(opts.serial,"options.serial");assert.date(opts.validFrom,"options.validFrom");assert.date(opts.validUntil,"optons.validUntil");assert.optionalArrayOfString(opts.purposes,"options.purposes");this._hashCache={};this.subjects=opts.subjects;this.issuer=opts.issuer;this.subjectKey=opts.subjectKey;this.issuerKey=opts.issuerKey;this.signatures=opts.signatures;this.serial=opts.serial;this.validFrom=opts.validFrom;this.validUntil=opts.validUntil;this.purposes=opts.purposes}Certificate.formats=formats;Certificate.prototype.toBuffer=function(format,options){if(format===undefined)format="x509";assert.string(format,"format");assert.object(formats[format],"formats[format]");assert.optionalObject(options,"options");return formats[format].write(this,options)};Certificate.prototype.toString=function(format,options){if(format===undefined)format="pem";return this.toBuffer(format,options).toString()};Certificate.prototype.fingerprint=function(algo){if(algo===undefined)algo="sha256";assert.string(algo,"algorithm");var opts={type:"certificate",hash:this.hash(algo),algorithm:algo};return new Fingerprint(opts)};Certificate.prototype.hash=function(algo){assert.string(algo,"algorithm");algo=algo.toLowerCase();if(algs.hashAlgs[algo]===undefined)throw new InvalidAlgorithmError(algo);if(this._hashCache[algo])return this._hashCache[algo];var hash=crypto.createHash(algo).update(this.toBuffer("x509")).digest();this._hashCache[algo]=hash;return hash};Certificate.prototype.isExpired=function(when){if(when===undefined)when=new Date;return!(when.getTime()>=this.validFrom.getTime()&&when.getTime()<this.validUntil.getTime())};Certificate.prototype.isSignedBy=function(issuerCert){utils.assertCompatible(issuerCert,Certificate,[1,0],"issuer");if(!this.issuer.equals(issuerCert.subjects[0]))return false;if(this.issuer.purposes&&this.issuer.purposes.length>0&&this.issuer.purposes.indexOf("ca")===-1){return false}return this.isSignedByKey(issuerCert.subjectKey)};Certificate.prototype.getExtension=function(keyOrOid){assert.string(keyOrOid,"keyOrOid");var ext=this.getExtensions().filter(function(maybeExt){if(maybeExt.format==="x509")return maybeExt.oid===keyOrOid;if(maybeExt.format==="openssh")return maybeExt.name===keyOrOid;return false})[0];return ext};Certificate.prototype.getExtensions=function(){var exts=[];var x509=this.signatures.x509;if(x509&&x509.extras&&x509.extras.exts){x509.extras.exts.forEach(function(ext){ext.format="x509";exts.push(ext)})}var openssh=this.signatures.openssh;if(openssh&&openssh.exts){openssh.exts.forEach(function(ext){ext.format="openssh";exts.push(ext)})}return exts};Certificate.prototype.isSignedByKey=function(issuerKey){utils.assertCompatible(issuerKey,Key,[1,2],"issuerKey");if(this.issuerKey!==undefined){return this.issuerKey.fingerprint("sha512").matches(issuerKey)}var fmt=Object.keys(this.signatures)[0];var valid=formats[fmt].verify(this,issuerKey);if(valid)this.issuerKey=issuerKey;return valid};Certificate.prototype.signWith=function(key){utils.assertCompatible(key,PrivateKey,[1,2],"key");var fmts=Object.keys(formats);var didOne=false;for(var i=0;i<fmts.length;++i){if(fmts[i]!=="pem"){var ret=formats[fmts[i]].sign(this,key);if(ret===true)didOne=true}}if(!didOne){throw new Error("Failed to sign the certificate for any "+"available certificate formats")}};Certificate.createSelfSigned=function(subjectOrSubjects,key,options){var subjects;if(Array.isArray(subjectOrSubjects))subjects=subjectOrSubjects;else subjects=[subjectOrSubjects];assert.arrayOfObject(subjects);subjects.forEach(function(subject){utils.assertCompatible(subject,Identity,[1,0],"subject")});utils.assertCompatible(key,PrivateKey,[1,2],"private key");assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalObject(options.validFrom,"options.validFrom");assert.optionalObject(options.validUntil,"options.validUntil");var validFrom=options.validFrom;var validUntil=options.validUntil;if(validFrom===undefined)validFrom=new Date;if(validUntil===undefined){assert.optionalNumber(options.lifetime,"options.lifetime");var lifetime=options.lifetime;if(lifetime===undefined)lifetime=10*365*24*3600;validUntil=new Date;validUntil.setTime(validUntil.getTime()+lifetime*1e3)}assert.optionalBuffer(options.serial,"options.serial");var serial=options.serial;if(serial===undefined)serial=Buffer.from("0000000000000001","hex");var purposes=options.purposes;if(purposes===undefined)purposes=[];if(purposes.indexOf("signature")===-1)purposes.push("signature");if(purposes.indexOf("ca")===-1)purposes.push("ca");if(purposes.indexOf("crl")===-1)purposes.push("crl");if(purposes.length<=3){var hostSubjects=subjects.filter(function(subject){return subject.type==="host"});var userSubjects=subjects.filter(function(subject){return subject.type==="user"});if(hostSubjects.length>0){if(purposes.indexOf("serverAuth")===-1)purposes.push("serverAuth")}if(userSubjects.length>0){if(purposes.indexOf("clientAuth")===-1)purposes.push("clientAuth")}if(userSubjects.length>0||hostSubjects.length>0){if(purposes.indexOf("keyAgreement")===-1)purposes.push("keyAgreement");if(key.type==="rsa"&&purposes.indexOf("encryption")===-1)purposes.push("encryption")}}var cert=new Certificate({subjects:subjects,issuer:subjects[0],subjectKey:key.toPublic(),issuerKey:key.toPublic(),signatures:{},serial:serial,validFrom:validFrom,validUntil:validUntil,purposes:purposes});cert.signWith(key);return cert};Certificate.create=function(subjectOrSubjects,key,issuer,issuerKey,options){var subjects;if(Array.isArray(subjectOrSubjects))subjects=subjectOrSubjects;else subjects=[subjectOrSubjects];assert.arrayOfObject(subjects);subjects.forEach(function(subject){utils.assertCompatible(subject,Identity,[1,0],"subject")});utils.assertCompatible(key,Key,[1,0],"key");if(PrivateKey.isPrivateKey(key))key=key.toPublic();utils.assertCompatible(issuer,Identity,[1,0],"issuer");utils.assertCompatible(issuerKey,PrivateKey,[1,2],"issuer key");assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalObject(options.validFrom,"options.validFrom");assert.optionalObject(options.validUntil,"options.validUntil");var validFrom=options.validFrom;var validUntil=options.validUntil;if(validFrom===undefined)validFrom=new Date;if(validUntil===undefined){assert.optionalNumber(options.lifetime,"options.lifetime");var lifetime=options.lifetime;if(lifetime===undefined)lifetime=10*365*24*3600;validUntil=new Date;validUntil.setTime(validUntil.getTime()+lifetime*1e3)}assert.optionalBuffer(options.serial,"options.serial");var serial=options.serial;if(serial===undefined)serial=Buffer.from("0000000000000001","hex");var purposes=options.purposes;if(purposes===undefined)purposes=[];if(purposes.indexOf("signature")===-1)purposes.push("signature");if(options.ca===true){if(purposes.indexOf("ca")===-1)purposes.push("ca");if(purposes.indexOf("crl")===-1)purposes.push("crl")}var hostSubjects=subjects.filter(function(subject){return subject.type==="host"});var userSubjects=subjects.filter(function(subject){return subject.type==="user"});if(hostSubjects.length>0){if(purposes.indexOf("serverAuth")===-1)purposes.push("serverAuth")}if(userSubjects.length>0){if(purposes.indexOf("clientAuth")===-1)purposes.push("clientAuth")}if(userSubjects.length>0||hostSubjects.length>0){if(purposes.indexOf("keyAgreement")===-1)purposes.push("keyAgreement");if(key.type==="rsa"&&purposes.indexOf("encryption")===-1)purposes.push("encryption")}var cert=new Certificate({subjects:subjects,issuer:issuer,subjectKey:key,issuerKey:issuerKey.toPublic(),signatures:{},serial:serial,validFrom:validFrom,validUntil:validUntil,purposes:purposes});cert.signWith(issuerKey);return cert};Certificate.parse=function(data,format,options){if(typeof data!=="string")assert.buffer(data,"data");if(format===undefined)format="auto";assert.string(format,"format");if(typeof options==="string")options={filename:options};assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalString(options.filename,"options.filename");if(options.filename===undefined)options.filename="(unnamed)";assert.object(formats[format],"formats[format]");try{var k=formats[format].read(data,options);return k}catch(e){throw new CertificateParseError(options.filename,format,e)}};Certificate.isCertificate=function(obj,ver){return utils.isCompatible(obj,Certificate,ver)};Certificate.prototype._sshpkApiVersion=[1,1];Certificate._oldVersionDetect=function(obj){return[1,0]}},{"./algs":471,"./errors":475,"./fingerprint":476,"./formats/openssh-cert":479,"./formats/x509":488,"./formats/x509-pem":487,"./identity":489,"./key":491,"./private-key":492,"./signature":493,"./utils":495,"assert-plus":387,crypto:81,"safer-buffer":470,util:243}],473:[function(require,module,exports){module.exports={DiffieHellman:DiffieHellman,generateECDSA:generateECDSA,generateED25519:generateED25519};var assert=require("assert-plus");var crypto=require("crypto");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var utils=require("./utils");var nacl=require("tweetnacl");var Key=require("./key");var PrivateKey=require("./private-key");var CRYPTO_HAVE_ECDH=crypto.createECDH!==undefined;var ecdh=require("ecc-jsbn");var ec=require("ecc-jsbn/lib/ec");var jsbn=require("jsbn").BigInteger;function DiffieHellman(key){utils.assertCompatible(key,Key,[1,4],"key");this._isPriv=PrivateKey.isPrivateKey(key,[1,3]);this._algo=key.type;this._curve=key.curve;this._key=key;if(key.type==="dsa"){if(!CRYPTO_HAVE_ECDH){throw new Error("Due to bugs in the node 0.10 "+"crypto API, node 0.12.x or later is required "+"to use DH")}this._dh=crypto.createDiffieHellman(key.part.p.data,undefined,key.part.g.data,undefined);this._p=key.part.p;this._g=key.part.g;if(this._isPriv)this._dh.setPrivateKey(key.part.x.data);this._dh.setPublicKey(key.part.y.data)}else if(key.type==="ecdsa"){if(!CRYPTO_HAVE_ECDH){this._ecParams=new X9ECParameters(this._curve);if(this._isPriv){this._priv=new ECPrivate(this._ecParams,key.part.d.data)}return}var curve={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[key.curve];this._dh=crypto.createECDH(curve);if(typeof this._dh!=="object"||typeof this._dh.setPrivateKey!=="function"){CRYPTO_HAVE_ECDH=false;DiffieHellman.call(this,key);return}if(this._isPriv)this._dh.setPrivateKey(key.part.d.data);this._dh.setPublicKey(key.part.Q.data)}else if(key.type==="curve25519"){if(this._isPriv){utils.assertCompatible(key,PrivateKey,[1,5],"key");this._priv=key.part.k.data}}else{throw new Error("DH not supported for "+key.type+" keys")}}DiffieHellman.prototype.getPublicKey=function(){if(this._isPriv)return this._key.toPublic();return this._key};DiffieHellman.prototype.getPrivateKey=function(){if(this._isPriv)return this._key;else return undefined};DiffieHellman.prototype.getKey=DiffieHellman.prototype.getPrivateKey;DiffieHellman.prototype._keyCheck=function(pk,isPub){assert.object(pk,"key");if(!isPub)utils.assertCompatible(pk,PrivateKey,[1,3],"key");utils.assertCompatible(pk,Key,[1,4],"key");if(pk.type!==this._algo){throw new Error("A "+pk.type+" key cannot be used in "+this._algo+" Diffie-Hellman")}if(pk.curve!==this._curve){throw new Error("A key from the "+pk.curve+" curve "+"cannot be used with a "+this._curve+" Diffie-Hellman")}if(pk.type==="dsa"){assert.deepEqual(pk.part.p,this._p,"DSA key prime does not match");assert.deepEqual(pk.part.g,this._g,"DSA key generator does not match")}};DiffieHellman.prototype.setKey=function(pk){this._keyCheck(pk);if(pk.type==="dsa"){this._dh.setPrivateKey(pk.part.x.data);this._dh.setPublicKey(pk.part.y.data)}else if(pk.type==="ecdsa"){if(CRYPTO_HAVE_ECDH){this._dh.setPrivateKey(pk.part.d.data);this._dh.setPublicKey(pk.part.Q.data)}else{this._priv=new ECPrivate(this._ecParams,pk.part.d.data)}}else if(pk.type==="curve25519"){var k=pk.part.k;if(!pk.part.k)k=pk.part.r;this._priv=k.data;if(this._priv[0]===0)this._priv=this._priv.slice(1);this._priv=this._priv.slice(0,32)}this._key=pk;this._isPriv=true};DiffieHellman.prototype.setPrivateKey=DiffieHellman.prototype.setKey;DiffieHellman.prototype.computeSecret=function(otherpk){this._keyCheck(otherpk,true);if(!this._isPriv)throw new Error("DH exchange has not been initialized with "+"a private key yet");var pub;if(this._algo==="dsa"){return this._dh.computeSecret(otherpk.part.y.data)}else if(this._algo==="ecdsa"){if(CRYPTO_HAVE_ECDH){return this._dh.computeSecret(otherpk.part.Q.data)}else{pub=new ECPublic(this._ecParams,otherpk.part.Q.data);return this._priv.deriveSharedSecret(pub)}}else if(this._algo==="curve25519"){pub=otherpk.part.A.data;while(pub[0]===0&&pub.length>32)pub=pub.slice(1);var priv=this._priv;assert.strictEqual(pub.length,32);assert.strictEqual(priv.length,32);var secret=nacl.box.before(new Uint8Array(pub),new Uint8Array(priv));return Buffer.from(secret)}throw new Error("Invalid algorithm: "+this._algo)};DiffieHellman.prototype.generateKey=function(){var parts=[]
|
|
52
|
+
;var priv,pub;if(this._algo==="dsa"){this._dh.generateKeys();parts.push({name:"p",data:this._p.data});parts.push({name:"q",data:this._key.part.q.data});parts.push({name:"g",data:this._g.data});parts.push({name:"y",data:this._dh.getPublicKey()});parts.push({name:"x",data:this._dh.getPrivateKey()});this._key=new PrivateKey({type:"dsa",parts:parts});this._isPriv=true;return this._key}else if(this._algo==="ecdsa"){if(CRYPTO_HAVE_ECDH){this._dh.generateKeys();parts.push({name:"curve",data:Buffer.from(this._curve)});parts.push({name:"Q",data:this._dh.getPublicKey()});parts.push({name:"d",data:this._dh.getPrivateKey()});this._key=new PrivateKey({type:"ecdsa",curve:this._curve,parts:parts});this._isPriv=true;return this._key}else{var n=this._ecParams.getN();var r=new jsbn(crypto.randomBytes(n.bitLength()));var n1=n.subtract(jsbn.ONE);priv=r.mod(n1).add(jsbn.ONE);pub=this._ecParams.getG().multiply(priv);priv=Buffer.from(priv.toByteArray());pub=Buffer.from(this._ecParams.getCurve().encodePointHex(pub),"hex");this._priv=new ECPrivate(this._ecParams,priv);parts.push({name:"curve",data:Buffer.from(this._curve)});parts.push({name:"Q",data:pub});parts.push({name:"d",data:priv});this._key=new PrivateKey({type:"ecdsa",curve:this._curve,parts:parts});this._isPriv=true;return this._key}}else if(this._algo==="curve25519"){var pair=nacl.box.keyPair();priv=Buffer.from(pair.secretKey);pub=Buffer.from(pair.publicKey);priv=Buffer.concat([priv,pub]);assert.strictEqual(priv.length,64);assert.strictEqual(pub.length,32);parts.push({name:"A",data:pub});parts.push({name:"k",data:priv});this._key=new PrivateKey({type:"curve25519",parts:parts});this._isPriv=true;return this._key}throw new Error("Invalid algorithm: "+this._algo)};DiffieHellman.prototype.generateKeys=DiffieHellman.prototype.generateKey;function X9ECParameters(name){var params=algs.curves[name];assert.object(params);var p=new jsbn(params.p);var a=new jsbn(params.a);var b=new jsbn(params.b);var n=new jsbn(params.n);var h=jsbn.ONE;var curve=new ec.ECCurveFp(p,a,b);var G=curve.decodePointHex(params.G.toString("hex"));this.curve=curve;this.g=G;this.n=n;this.h=h}X9ECParameters.prototype.getCurve=function(){return this.curve};X9ECParameters.prototype.getG=function(){return this.g};X9ECParameters.prototype.getN=function(){return this.n};X9ECParameters.prototype.getH=function(){return this.h};function ECPublic(params,buffer){this._params=params;if(buffer[0]===0)buffer=buffer.slice(1);this._pub=params.getCurve().decodePointHex(buffer.toString("hex"))}function ECPrivate(params,buffer){this._params=params;this._priv=new jsbn(utils.mpNormalize(buffer))}ECPrivate.prototype.deriveSharedSecret=function(pubKey){assert.ok(pubKey instanceof ECPublic);var S=pubKey._pub.multiply(this._priv);return Buffer.from(S.getX().toBigInteger().toByteArray())};function generateED25519(){var pair=nacl.sign.keyPair();var priv=Buffer.from(pair.secretKey);var pub=Buffer.from(pair.publicKey);assert.strictEqual(priv.length,64);assert.strictEqual(pub.length,32);var parts=[];parts.push({name:"A",data:pub});parts.push({name:"k",data:priv.slice(0,32)});var key=new PrivateKey({type:"ed25519",parts:parts});return key}function generateECDSA(curve){var parts=[];var key;if(CRYPTO_HAVE_ECDH){var osCurve={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[curve];var dh=crypto.createECDH(osCurve);dh.generateKeys();parts.push({name:"curve",data:Buffer.from(curve)});parts.push({name:"Q",data:dh.getPublicKey()});parts.push({name:"d",data:dh.getPrivateKey()});key=new PrivateKey({type:"ecdsa",curve:curve,parts:parts});return key}else{var ecParams=new X9ECParameters(curve);var n=ecParams.getN();var cByteLen=Math.ceil((n.bitLength()+64)/8);var c=new jsbn(crypto.randomBytes(cByteLen));var n1=n.subtract(jsbn.ONE);var priv=c.mod(n1).add(jsbn.ONE);var pub=ecParams.getG().multiply(priv);priv=Buffer.from(priv.toByteArray());pub=Buffer.from(ecParams.getCurve().encodePointHex(pub),"hex");parts.push({name:"curve",data:Buffer.from(curve)});parts.push({name:"Q",data:pub});parts.push({name:"d",data:priv});key=new PrivateKey({type:"ecdsa",curve:curve,parts:parts});return key}}},{"./algs":471,"./key":491,"./private-key":492,"./utils":495,"assert-plus":387,crypto:81,"ecc-jsbn":396,"ecc-jsbn/lib/ec":397,jsbn:433,"safer-buffer":470,tweetnacl:504}],474:[function(require,module,exports){module.exports={Verifier:Verifier,Signer:Signer};var nacl=require("tweetnacl");var stream=require("stream");var util=require("util");var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var Signature=require("./signature");function Verifier(key,hashAlgo){if(hashAlgo.toLowerCase()!=="sha512")throw new Error("ED25519 only supports the use of "+"SHA-512 hashes");this.key=key;this.chunks=[];stream.Writable.call(this,{})}util.inherits(Verifier,stream.Writable);Verifier.prototype._write=function(chunk,enc,cb){this.chunks.push(chunk);cb()};Verifier.prototype.update=function(chunk){if(typeof chunk==="string")chunk=Buffer.from(chunk,"binary");this.chunks.push(chunk)};Verifier.prototype.verify=function(signature,fmt){var sig;if(Signature.isSignature(signature,[2,0])){if(signature.type!=="ed25519")return false;sig=signature.toBuffer("raw")}else if(typeof signature==="string"){sig=Buffer.from(signature,"base64")}else if(Signature.isSignature(signature,[1,0])){throw new Error("signature was created by too old "+"a version of sshpk and cannot be verified")}assert.buffer(sig);return nacl.sign.detached.verify(new Uint8Array(Buffer.concat(this.chunks)),new Uint8Array(sig),new Uint8Array(this.key.part.A.data))};function Signer(key,hashAlgo){if(hashAlgo.toLowerCase()!=="sha512")throw new Error("ED25519 only supports the use of "+"SHA-512 hashes");this.key=key;this.chunks=[];stream.Writable.call(this,{})}util.inherits(Signer,stream.Writable);Signer.prototype._write=function(chunk,enc,cb){this.chunks.push(chunk);cb()};Signer.prototype.update=function(chunk){if(typeof chunk==="string")chunk=Buffer.from(chunk,"binary");this.chunks.push(chunk)};Signer.prototype.sign=function(){var sig=nacl.sign.detached(new Uint8Array(Buffer.concat(this.chunks)),new Uint8Array(Buffer.concat([this.key.part.k.data,this.key.part.A.data])));var sigBuf=Buffer.from(sig);var sigObj=Signature.parse(sigBuf,"ed25519","raw");sigObj.hashAlgorithm="sha512";return sigObj}},{"./signature":493,"assert-plus":387,"safer-buffer":470,stream:229,tweetnacl:504,util:243}],475:[function(require,module,exports){var assert=require("assert-plus");var util=require("util");function FingerprintFormatError(fp,format){if(Error.captureStackTrace)Error.captureStackTrace(this,FingerprintFormatError);this.name="FingerprintFormatError";this.fingerprint=fp;this.format=format;this.message="Fingerprint format is not supported, or is invalid: ";if(fp!==undefined)this.message+=" fingerprint = "+fp;if(format!==undefined)this.message+=" format = "+format}util.inherits(FingerprintFormatError,Error);function InvalidAlgorithmError(alg){if(Error.captureStackTrace)Error.captureStackTrace(this,InvalidAlgorithmError);this.name="InvalidAlgorithmError";this.algorithm=alg;this.message='Algorithm "'+alg+'" is not supported'}util.inherits(InvalidAlgorithmError,Error);function KeyParseError(name,format,innerErr){if(Error.captureStackTrace)Error.captureStackTrace(this,KeyParseError);this.name="KeyParseError";this.format=format;this.keyName=name;this.innerErr=innerErr;this.message="Failed to parse "+name+" as a valid "+format+" format key: "+innerErr.message}util.inherits(KeyParseError,Error);function SignatureParseError(type,format,innerErr){if(Error.captureStackTrace)Error.captureStackTrace(this,SignatureParseError);this.name="SignatureParseError";this.type=type;this.format=format;this.innerErr=innerErr;this.message="Failed to parse the given data as a "+type+" signature in "+format+" format: "+innerErr.message}util.inherits(SignatureParseError,Error);function CertificateParseError(name,format,innerErr){if(Error.captureStackTrace)Error.captureStackTrace(this,CertificateParseError);this.name="CertificateParseError";this.format=format;this.certName=name;this.innerErr=innerErr;this.message="Failed to parse "+name+" as a valid "+format+" format certificate: "+innerErr.message}util.inherits(CertificateParseError,Error);function KeyEncryptedError(name,format){if(Error.captureStackTrace)Error.captureStackTrace(this,KeyEncryptedError);this.name="KeyEncryptedError";this.format=format;this.keyName=name;this.message="The "+format+" format key "+name+" is "+"encrypted (password-protected), and no passphrase was "+"provided in `options`"}util.inherits(KeyEncryptedError,Error);module.exports={FingerprintFormatError:FingerprintFormatError,InvalidAlgorithmError:InvalidAlgorithmError,KeyParseError:KeyParseError,SignatureParseError:SignatureParseError,KeyEncryptedError:KeyEncryptedError,CertificateParseError:CertificateParseError}},{"assert-plus":387,util:243}],476:[function(require,module,exports){module.exports=Fingerprint;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var errs=require("./errors");var Key=require("./key");var PrivateKey=require("./private-key");var Certificate=require("./certificate");var utils=require("./utils");var FingerprintFormatError=errs.FingerprintFormatError;var InvalidAlgorithmError=errs.InvalidAlgorithmError;function Fingerprint(opts){assert.object(opts,"options");assert.string(opts.type,"options.type");assert.buffer(opts.hash,"options.hash");assert.string(opts.algorithm,"options.algorithm");this.algorithm=opts.algorithm.toLowerCase();if(algs.hashAlgs[this.algorithm]!==true)throw new InvalidAlgorithmError(this.algorithm);this.hash=opts.hash;this.type=opts.type;this.hashType=opts.hashType}Fingerprint.prototype.toString=function(format){if(format===undefined){if(this.algorithm==="md5"||this.hashType==="spki")format="hex";else format="base64"}assert.string(format);switch(format){case"hex":if(this.hashType==="spki")return this.hash.toString("hex");return addColons(this.hash.toString("hex"));case"base64":if(this.hashType==="spki")return this.hash.toString("base64");return sshBase64Format(this.algorithm,this.hash.toString("base64"));default:throw new FingerprintFormatError(undefined,format)}};Fingerprint.prototype.matches=function(other){assert.object(other,"key or certificate");if(this.type==="key"&&this.hashType!=="ssh"){utils.assertCompatible(other,Key,[1,7],"key with spki");if(PrivateKey.isPrivateKey(other)){utils.assertCompatible(other,PrivateKey,[1,6],"privatekey with spki support")}}else if(this.type==="key"){utils.assertCompatible(other,Key,[1,0],"key")}else{utils.assertCompatible(other,Certificate,[1,0],"certificate")}var theirHash=other.hash(this.algorithm,this.hashType);var theirHash2=crypto.createHash(this.algorithm).update(theirHash).digest("base64");if(this.hash2===undefined)this.hash2=crypto.createHash(this.algorithm).update(this.hash).digest("base64");return this.hash2===theirHash2};var base64RE=/^[A-Za-z0-9+\/=]+$/;var hexRE=/^[a-fA-F0-9]+$/;Fingerprint.parse=function(fp,options){assert.string(fp,"fingerprint");var alg,hash,enAlgs;if(Array.isArray(options)){enAlgs=options;options={}}assert.optionalObject(options,"options");if(options===undefined)options={};if(options.enAlgs!==undefined)enAlgs=options.enAlgs;if(options.algorithms!==undefined)enAlgs=options.algorithms;assert.optionalArrayOfString(enAlgs,"algorithms");var hashType="ssh";if(options.hashType!==undefined)hashType=options.hashType;assert.string(hashType,"options.hashType");var parts=fp.split(":");if(parts.length==2){alg=parts[0].toLowerCase();if(!base64RE.test(parts[1]))throw new FingerprintFormatError(fp);try{hash=Buffer.from(parts[1],"base64")}catch(e){throw new FingerprintFormatError(fp)}}else if(parts.length>2){alg="md5";if(parts[0].toLowerCase()==="md5")parts=parts.slice(1);parts=parts.map(function(p){while(p.length<2)p="0"+p;if(p.length>2)throw new FingerprintFormatError(fp);return p});parts=parts.join("");if(!hexRE.test(parts)||parts.length%2!==0)throw new FingerprintFormatError(fp);try{hash=Buffer.from(parts,"hex")}catch(e){throw new FingerprintFormatError(fp)}}else{if(hexRE.test(fp)){hash=Buffer.from(fp,"hex")}else if(base64RE.test(fp)){hash=Buffer.from(fp,"base64")}else{throw new FingerprintFormatError(fp)}switch(hash.length){case 32:alg="sha256";break;case 16:alg="md5";break;case 20:alg="sha1";break;case 64:alg="sha512";break;default:throw new FingerprintFormatError(fp)}if(options.hashType===undefined)hashType="spki"}if(alg===undefined)throw new FingerprintFormatError(fp);if(algs.hashAlgs[alg]===undefined)throw new InvalidAlgorithmError(alg);if(enAlgs!==undefined){enAlgs=enAlgs.map(function(a){return a.toLowerCase()});if(enAlgs.indexOf(alg)===-1)throw new InvalidAlgorithmError(alg)}return new Fingerprint({algorithm:alg,hash:hash,type:options.type||"key",hashType:hashType})};function addColons(s){return s.replace(/(.{2})(?=.)/g,"$1:")}function base64Strip(s){return s.replace(/=*$/,"")}function sshBase64Format(alg,h){return alg.toUpperCase()+":"+base64Strip(h)}Fingerprint.isFingerprint=function(obj,ver){return utils.isCompatible(obj,Fingerprint,ver)};Fingerprint.prototype._sshpkApiVersion=[1,2];Fingerprint._oldVersionDetect=function(obj){assert.func(obj.toString);assert.func(obj.matches);return[1,0]}},{"./algs":471,"./certificate":472,"./errors":475,"./key":491,"./private-key":492,"./utils":495,"assert-plus":387,crypto:81,"safer-buffer":470}],477:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var ssh=require("./ssh");var rfc4253=require("./rfc4253");var dnssec=require("./dnssec");var putty=require("./putty");var DNSSEC_PRIVKEY_HEADER_PREFIX="Private-key-format: v1";function read(buf,options){if(typeof buf==="string"){if(buf.trim().match(/^[-]+[ ]*BEGIN/))return pem.read(buf,options);if(buf.match(/^\s*ssh-[a-z]/))return ssh.read(buf,options);if(buf.match(/^\s*ecdsa-/))return ssh.read(buf,options);if(buf.match(/^putty-user-key-file-2:/i))return putty.read(buf,options);if(findDNSSECHeader(buf))return dnssec.read(buf,options);buf=Buffer.from(buf,"binary")}else{assert.buffer(buf);if(findPEMHeader(buf))return pem.read(buf,options);if(findSSHHeader(buf))return ssh.read(buf,options);if(findPuTTYHeader(buf))return putty.read(buf,options);if(findDNSSECHeader(buf))return dnssec.read(buf,options)}if(buf.readUInt32BE(0)<buf.length)return rfc4253.read(buf,options);throw new Error("Failed to auto-detect format of key")}function findPuTTYHeader(buf){var offset=0;while(offset<buf.length&&(buf[offset]===32||buf[offset]===10||buf[offset]===9))++offset;if(offset+22<=buf.length&&buf.slice(offset,offset+22).toString("ascii").toLowerCase()==="putty-user-key-file-2:")return true;return false}function findSSHHeader(buf){var offset=0;while(offset<buf.length&&(buf[offset]===32||buf[offset]===10||buf[offset]===9))++offset;if(offset+4<=buf.length&&buf.slice(offset,offset+4).toString("ascii")==="ssh-")return true;if(offset+6<=buf.length&&buf.slice(offset,offset+6).toString("ascii")==="ecdsa-")return true;return false}function findPEMHeader(buf){var offset=0;while(offset<buf.length&&(buf[offset]===32||buf[offset]===10))++offset;if(buf[offset]!==45)return false;while(offset<buf.length&&buf[offset]===45)++offset;while(offset<buf.length&&buf[offset]===32)++offset;if(offset+5>buf.length||buf.slice(offset,offset+5).toString("ascii")!=="BEGIN")return false;return true}function findDNSSECHeader(buf){if(buf.length<=DNSSEC_PRIVKEY_HEADER_PREFIX.length)return false;var headerCheck=buf.slice(0,DNSSEC_PRIVKEY_HEADER_PREFIX.length);if(headerCheck.toString("ascii")===DNSSEC_PRIVKEY_HEADER_PREFIX)return true;if(typeof buf!=="string"){buf=buf.toString("ascii")}var lines=buf.split("\n");var line=0;while(lines[line].match(/^\;/))line++;if(lines[line].toString("ascii").match(/\. IN KEY /))return true;if(lines[line].toString("ascii").match(/\. IN DNSKEY /))return true;return false}function write(key,options){throw new Error('"auto" format cannot be used for writing')}},{"../key":491,"../private-key":492,"../utils":495,"./dnssec":478,"./pem":480,"./putty":483,"./rfc4253":484,"./ssh":486,"assert-plus":387,"safer-buffer":470}],478:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var Key=require("../key");var PrivateKey=require("../private-key");var utils=require("../utils");var SSHBuffer=require("../ssh-buffer");var Dhe=require("../dhe");var supportedAlgos={"rsa-sha1":5,"rsa-sha256":8,"rsa-sha512":10,"ecdsa-p256-sha256":13,"ecdsa-p384-sha384":14};var supportedAlgosById={};Object.keys(supportedAlgos).forEach(function(k){supportedAlgosById[supportedAlgos[k]]=k.toUpperCase()});function read(buf,options){if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var lines=buf.split("\n");if(lines[0].match(/^Private-key-format\: v1/)){var algElems=lines[1].split(" ");var algoNum=parseInt(algElems[1],10);var algoName=algElems[2];if(!supportedAlgosById[algoNum])throw new Error("Unsupported algorithm: "+algoName);return readDNSSECPrivateKey(algoNum,lines.slice(2))}var line=0;while(lines[line].match(/^\;/))line++;if((lines[line].match(/\. IN KEY /)||lines[line].match(/\. IN DNSKEY /))&&lines[line+1].length===0){return readRFC3110(lines[line])}throw new Error("Cannot parse dnssec key")}function readRFC3110(keyString){var elems=keyString.split(" ");var algorithm=parseInt(elems[5],10);if(!supportedAlgosById[algorithm])throw new Error("Unsupported algorithm: "+algorithm);var base64key=elems.slice(6,elems.length).join();var keyBuffer=Buffer.from(base64key,"base64");if(supportedAlgosById[algorithm].match(/^RSA-/)){var publicExponentLen=keyBuffer.readUInt8(0);if(publicExponentLen!=3&&publicExponentLen!=1)throw new Error("Cannot parse dnssec key: "+"unsupported exponent length");var publicExponent=keyBuffer.slice(1,publicExponentLen+1);publicExponent=utils.mpNormalize(publicExponent);var modulus=keyBuffer.slice(1+publicExponentLen);modulus=utils.mpNormalize(modulus);var rsaKey={type:"rsa",parts:[]};rsaKey.parts.push({name:"e",data:publicExponent});rsaKey.parts.push({name:"n",data:modulus});return new Key(rsaKey)}if(supportedAlgosById[algorithm]==="ECDSA-P384-SHA384"||supportedAlgosById[algorithm]==="ECDSA-P256-SHA256"){var curve="nistp384";var size=384;if(supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)){curve="nistp256";size=256}var ecdsaKey={type:"ecdsa",curve:curve,size:size,parts:[{name:"curve",data:Buffer.from(curve)},{name:"Q",data:utils.ecNormalize(keyBuffer)}]};return new Key(ecdsaKey)}throw new Error("Unsupported algorithm: "+supportedAlgosById[algorithm])}function elementToBuf(e){return Buffer.from(e.split(" ")[1],"base64")}function readDNSSECRSAPrivateKey(elements){var rsaParams={};elements.forEach(function(element){if(element.split(" ")[0]==="Modulus:")rsaParams["n"]=elementToBuf(element);else if(element.split(" ")[0]==="PublicExponent:")rsaParams["e"]=elementToBuf(element);else if(element.split(" ")[0]==="PrivateExponent:")rsaParams["d"]=elementToBuf(element);else if(element.split(" ")[0]==="Prime1:")rsaParams["p"]=elementToBuf(element);else if(element.split(" ")[0]==="Prime2:")rsaParams["q"]=elementToBuf(element);else if(element.split(" ")[0]==="Exponent1:")rsaParams["dmodp"]=elementToBuf(element);else if(element.split(" ")[0]==="Exponent2:")rsaParams["dmodq"]=elementToBuf(element);else if(element.split(" ")[0]==="Coefficient:")rsaParams["iqmp"]=elementToBuf(element)});var key={type:"rsa",parts:[{name:"e",data:utils.mpNormalize(rsaParams["e"])},{name:"n",data:utils.mpNormalize(rsaParams["n"])},{name:"d",data:utils.mpNormalize(rsaParams["d"])},{name:"p",data:utils.mpNormalize(rsaParams["p"])},{name:"q",data:utils.mpNormalize(rsaParams["q"])},{name:"dmodp",data:utils.mpNormalize(rsaParams["dmodp"])},{name:"dmodq",data:utils.mpNormalize(rsaParams["dmodq"])},{name:"iqmp",data:utils.mpNormalize(rsaParams["iqmp"])}]};return new PrivateKey(key)}function readDNSSECPrivateKey(alg,elements){if(supportedAlgosById[alg].match(/^RSA-/)){return readDNSSECRSAPrivateKey(elements)}if(supportedAlgosById[alg]==="ECDSA-P384-SHA384"||supportedAlgosById[alg]==="ECDSA-P256-SHA256"){var d=Buffer.from(elements[0].split(" ")[1],"base64");var curve="nistp384";var size=384;if(supportedAlgosById[alg]==="ECDSA-P256-SHA256"){curve="nistp256";size=256}var publicKey=utils.publicFromPrivateECDSA(curve,d);var Q=publicKey.part["Q"].data;var ecdsaKey={type:"ecdsa",curve:curve,size:size,parts:[{name:"curve",data:Buffer.from(curve)},{name:"d",data:d},{name:"Q",data:Q}]};return new PrivateKey(ecdsaKey)}throw new Error("Unsupported algorithm: "+supportedAlgosById[alg])}function dnssecTimestamp(date){var year=date.getFullYear()+"";var month=date.getMonth()+1;var timestampStr=year+month+date.getUTCDate();timestampStr+=""+date.getUTCHours()+date.getUTCMinutes();timestampStr+=date.getUTCSeconds();return timestampStr}function rsaAlgFromOptions(opts){if(!opts||!opts.hashAlgo||opts.hashAlgo==="sha1")return"5 (RSASHA1)";else if(opts.hashAlgo==="sha256")return"8 (RSASHA256)";else if(opts.hashAlgo==="sha512")return"10 (RSASHA512)";else throw new Error("Unknown or unsupported hash: "+opts.hashAlgo)}function writeRSA(key,options){if(!key.part.dmodp||!key.part.dmodq){utils.addRSAMissing(key)}var out="";out+="Private-key-format: v1.3\n";out+="Algorithm: "+rsaAlgFromOptions(options)+"\n";var n=utils.mpDenormalize(key.part["n"].data);out+="Modulus: "+n.toString("base64")+"\n";var e=utils.mpDenormalize(key.part["e"].data);out+="PublicExponent: "+e.toString("base64")+"\n";var d=utils.mpDenormalize(key.part["d"].data);out+="PrivateExponent: "+d.toString("base64")+"\n";var p=utils.mpDenormalize(key.part["p"].data);out+="Prime1: "+p.toString("base64")+"\n";var q=utils.mpDenormalize(key.part["q"].data);out+="Prime2: "+q.toString("base64")+"\n";var dmodp=utils.mpDenormalize(key.part["dmodp"].data);out+="Exponent1: "+dmodp.toString("base64")+"\n";var dmodq=utils.mpDenormalize(key.part["dmodq"].data);out+="Exponent2: "+dmodq.toString("base64")+"\n";var iqmp=utils.mpDenormalize(key.part["iqmp"].data);out+="Coefficient: "+iqmp.toString("base64")+"\n";var timestamp=new Date;out+="Created: "+dnssecTimestamp(timestamp)+"\n";out+="Publish: "+dnssecTimestamp(timestamp)+"\n";out+="Activate: "+dnssecTimestamp(timestamp)+"\n";return Buffer.from(out,"ascii")}function writeECDSA(key,options){var out="";out+="Private-key-format: v1.3\n";if(key.curve==="nistp256"){out+="Algorithm: 13 (ECDSAP256SHA256)\n"}else if(key.curve==="nistp384"){out+="Algorithm: 14 (ECDSAP384SHA384)\n"}else{throw new Error("Unsupported curve")}var base64Key=key.part["d"].data.toString("base64");out+="PrivateKey: "+base64Key+"\n";var timestamp=new Date;out+="Created: "+dnssecTimestamp(timestamp)+"\n";out+="Publish: "+dnssecTimestamp(timestamp)+"\n";out+="Activate: "+dnssecTimestamp(timestamp)+"\n";return Buffer.from(out,"ascii")}function write(key,options){if(PrivateKey.isPrivateKey(key)){if(key.type==="rsa"){return writeRSA(key,options)}else if(key.type==="ecdsa"){return writeECDSA(key,options)}else{throw new Error("Unsupported algorithm: "+key.type)}}else if(Key.isKey(key)){throw new Error('Format "dnssec" only supports '+"writing private keys")}else{throw new Error("key is not a Key or PrivateKey")}}},{"../dhe":473,"../key":491,"../private-key":492,"../ssh-buffer":494,"../utils":495,"assert-plus":387,"safer-buffer":470}],479:[function(require,module,exports){module.exports={read:read,verify:verify,sign:sign,signAsync:signAsync,write:write,fromBuffer:fromBuffer,toBuffer:toBuffer};var assert=require("assert-plus");var SSHBuffer=require("../ssh-buffer");var crypto=require("crypto");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var Key=require("../key");var PrivateKey=require("../private-key");var Identity=require("../identity");var rfc4253=require("./rfc4253");var Signature=require("../signature");var utils=require("../utils");var Certificate=require("../certificate");function verify(cert,key){return false}var TYPES={user:1,host:2};Object.keys(TYPES).forEach(function(k){TYPES[TYPES[k]]=k});var ECDSA_ALGO=/^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;function read(buf,options){if(Buffer.isBuffer(buf))buf=buf.toString("ascii");var parts=buf.trim().split(/[ \t\n]+/g);if(parts.length<2||parts.length>3)throw new Error("Not a valid SSH certificate line");var algo=parts[0];var data=parts[1];data=Buffer.from(data,"base64");return fromBuffer(data,algo)}function fromBuffer(data,algo,partial){var sshbuf=new SSHBuffer({buffer:data});var innerAlgo=sshbuf.readString();if(algo!==undefined&&innerAlgo!==algo)throw new Error("SSH certificate algorithm mismatch");if(algo===undefined)algo=innerAlgo;var cert={};cert.signatures={};cert.signatures.openssh={};cert.signatures.openssh.nonce=sshbuf.readBuffer();var key={};var parts=key.parts=[];key.type=getAlg(algo);var partCount=algs.info[key.type].parts.length;while(parts.length<partCount)parts.push(sshbuf.readPart());assert.ok(parts.length>=1,"key must have at least one part");var algInfo=algs.info[key.type];if(key.type==="ecdsa"){var res=ECDSA_ALGO.exec(algo);assert.ok(res!==null);assert.strictEqual(res[1],parts[0].data.toString())}for(var i=0;i<algInfo.parts.length;++i){parts[i].name=algInfo.parts[i];if(parts[i].name!=="curve"&&algInfo.normalize!==false){var p=parts[i];p.data=utils.mpNormalize(p.data)}}cert.subjectKey=new Key(key);cert.serial=sshbuf.readInt64();var type=TYPES[sshbuf.readInt()];assert.string(type,"valid cert type");cert.signatures.openssh.keyId=sshbuf.readString();var principals=[];var pbuf=sshbuf.readBuffer();var psshbuf=new SSHBuffer({buffer:pbuf});while(!psshbuf.atEnd())principals.push(psshbuf.readString());if(principals.length===0)principals=["*"];cert.subjects=principals.map(function(pr){if(type==="user")return Identity.forUser(pr);else if(type==="host")return Identity.forHost(pr);throw new Error("Unknown identity type "+type)});cert.validFrom=int64ToDate(sshbuf.readInt64());cert.validUntil=int64ToDate(sshbuf.readInt64());var exts=[];var extbuf=new SSHBuffer({buffer:sshbuf.readBuffer()});var ext;while(!extbuf.atEnd()){ext={critical:true};ext.name=extbuf.readString();ext.data=extbuf.readBuffer();exts.push(ext)}extbuf=new SSHBuffer({buffer:sshbuf.readBuffer()});while(!extbuf.atEnd()){ext={critical:false};ext.name=extbuf.readString();ext.data=extbuf.readBuffer();exts.push(ext)}cert.signatures.openssh.exts=exts;sshbuf.readBuffer();var signingKeyBuf=sshbuf.readBuffer();cert.issuerKey=rfc4253.read(signingKeyBuf);cert.issuer=Identity.forHost("**");var sigBuf=sshbuf.readBuffer();cert.signatures.openssh.signature=Signature.parse(sigBuf,cert.issuerKey.type,"ssh");if(partial!==undefined){partial.remainder=sshbuf.remainder();partial.consumed=sshbuf._offset}return new Certificate(cert)}function int64ToDate(buf){var i=buf.readUInt32BE(0)*4294967296;i+=buf.readUInt32BE(4);var d=new Date;d.setTime(i*1e3);d.sourceInt64=buf;return d}function dateToInt64(date){if(date.sourceInt64!==undefined)return date.sourceInt64;var i=Math.round(date.getTime()/1e3);var upper=Math.floor(i/4294967296);var lower=Math.floor(i%4294967296);var buf=Buffer.alloc(8);buf.writeUInt32BE(upper,0);buf.writeUInt32BE(lower,4);return buf}function sign(cert,key){if(cert.signatures.openssh===undefined)cert.signatures.openssh={};try{var blob=toBuffer(cert,true)}catch(e){delete cert.signatures.openssh;return false}var sig=cert.signatures.openssh;var hashAlgo=undefined;if(key.type==="rsa"||key.type==="dsa")hashAlgo="sha1";var signer=key.createSign(hashAlgo);signer.write(blob);sig.signature=signer.sign();return true}function signAsync(cert,signer,done){if(cert.signatures.openssh===undefined)cert.signatures.openssh={};try{var blob=toBuffer(cert,true)}catch(e){delete cert.signatures.openssh;done(e);return}var sig=cert.signatures.openssh;signer(blob,function(err,signature){if(err){done(err);return}try{signature.toBuffer("ssh")}catch(e){done(e);return}sig.signature=signature;done()})}function write(cert,options){if(options===undefined)options={};var blob=toBuffer(cert);var out=getCertType(cert.subjectKey)+" "+blob.toString("base64");if(options.comment)out=out+" "+options.comment;return out}function toBuffer(cert,noSig){assert.object(cert.signatures.openssh,"signature for openssh format");var sig=cert.signatures.openssh;if(sig.nonce===undefined)sig.nonce=crypto.randomBytes(16);var buf=new SSHBuffer({});buf.writeString(getCertType(cert.subjectKey));buf.writeBuffer(sig.nonce);var key=cert.subjectKey;var algInfo=algs.info[key.type];algInfo.parts.forEach(function(part){buf.writePart(key.part[part])});buf.writeInt64(cert.serial);var type=cert.subjects[0].type;assert.notStrictEqual(type,"unknown");cert.subjects.forEach(function(id){assert.strictEqual(id.type,type)});type=TYPES[type];buf.writeInt(type);if(sig.keyId===undefined){sig.keyId=cert.subjects[0].type+"_"+(cert.subjects[0].uid||cert.subjects[0].hostname)}buf.writeString(sig.keyId);var sub=new SSHBuffer({});cert.subjects.forEach(function(id){if(type===TYPES.host)sub.writeString(id.hostname);else if(type===TYPES.user)sub.writeString(id.uid)});buf.writeBuffer(sub.toBuffer());buf.writeInt64(dateToInt64(cert.validFrom));buf.writeInt64(dateToInt64(cert.validUntil));var exts=sig.exts;if(exts===undefined)exts=[];var extbuf=new SSHBuffer({});exts.forEach(function(ext){if(ext.critical!==true)return;extbuf.writeString(ext.name);extbuf.writeBuffer(ext.data)});buf.writeBuffer(extbuf.toBuffer());extbuf=new SSHBuffer({});exts.forEach(function(ext){if(ext.critical===true)return;extbuf.writeString(ext.name);extbuf.writeBuffer(ext.data)});buf.writeBuffer(extbuf.toBuffer());buf.writeBuffer(Buffer.alloc(0));sub=rfc4253.write(cert.issuerKey);buf.writeBuffer(sub);if(!noSig)buf.writeBuffer(sig.signature.toBuffer("ssh"));return buf.toBuffer()}function getAlg(certType){if(certType==="ssh-rsa-cert-v01@openssh.com")return"rsa";if(certType==="ssh-dss-cert-v01@openssh.com")return"dsa";if(certType.match(ECDSA_ALGO))return"ecdsa";if(certType==="ssh-ed25519-cert-v01@openssh.com")return"ed25519";throw new Error("Unsupported cert type "+certType)}function getCertType(key){if(key.type==="rsa")return"ssh-rsa-cert-v01@openssh.com";if(key.type==="dsa")return"ssh-dss-cert-v01@openssh.com";if(key.type==="ecdsa")return"ecdsa-sha2-"+key.curve+"-cert-v01@openssh.com";if(key.type==="ed25519")return"ssh-ed25519-cert-v01@openssh.com";throw new Error("Unsupported key type "+key.type)}},{"../algs":471,"../certificate":472,"../identity":489,"../key":491,"../private-key":492,"../signature":493,"../ssh-buffer":494,"../utils":495,"./rfc4253":484,"assert-plus":387,crypto:81,"safer-buffer":470}],480:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var asn1=require("asn1");var crypto=require("crypto");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pkcs1=require("./pkcs1");var pkcs8=require("./pkcs8");var sshpriv=require("./ssh-private");var rfc4253=require("./rfc4253");var errors=require("../errors");var OID_PBES2="1.2.840.113549.1.5.13";var OID_PBKDF2="1.2.840.113549.1.5.12";var OID_TO_CIPHER={"1.2.840.113549.3.7":"3des-cbc","2.16.840.1.101.3.4.1.2":"aes128-cbc","2.16.840.1.101.3.4.1.42":"aes256-cbc"};var CIPHER_TO_OID={};Object.keys(OID_TO_CIPHER).forEach(function(k){CIPHER_TO_OID[OID_TO_CIPHER[k]]=k});var OID_TO_HASH={"1.2.840.113549.2.7":"sha1","1.2.840.113549.2.9":"sha256","1.2.840.113549.2.11":"sha512"};var HASH_TO_OID={};Object.keys(OID_TO_HASH).forEach(function(k){HASH_TO_OID[OID_TO_HASH[k]]=k});function read(buf,options,forceType){var input=buf;if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}
|
|
53
|
+
var lines=buf.trim().split(/[\r\n]+/g);var m;var si=-1;while(!m&&si<lines.length){m=lines[++si].match(/[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/)}assert.ok(m,"invalid PEM header");var m2;var ei=lines.length;while(!m2&&ei>0){m2=lines[--ei].match(/[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/)}assert.ok(m2,"invalid PEM footer");assert.equal(m[2],m2[2]);var type=m[2].toLowerCase();var alg;if(m[1]){assert.equal(m[1],m2[1],"PEM header and footer mismatch");alg=m[1].trim()}lines=lines.slice(si,ei+1);var headers={};while(true){lines=lines.slice(1);m=lines[0].match(/^([A-Za-z0-9-]+): (.+)$/);if(!m)break;headers[m[1].toLowerCase()]=m[2]}lines=lines.slice(0,-1).join("");buf=Buffer.from(lines,"base64");var cipher,key,iv;if(headers["proc-type"]){var parts=headers["proc-type"].split(",");if(parts[0]==="4"&&parts[1]==="ENCRYPTED"){if(typeof options.passphrase==="string"){options.passphrase=Buffer.from(options.passphrase,"utf-8")}if(!Buffer.isBuffer(options.passphrase)){throw new errors.KeyEncryptedError(options.filename,"PEM")}else{parts=headers["dek-info"].split(",");assert.ok(parts.length===2);cipher=parts[0].toLowerCase();iv=Buffer.from(parts[1],"hex");key=utils.opensslKeyDeriv(cipher,iv,options.passphrase,1).key}}}if(alg&&alg.toLowerCase()==="encrypted"){var eder=new asn1.BerReader(buf);var pbesEnd;eder.readSequence();eder.readSequence();pbesEnd=eder.offset+eder.length;var method=eder.readOID();if(method!==OID_PBES2){throw new Error("Unsupported PEM/PKCS8 encryption "+"scheme: "+method)}eder.readSequence();eder.readSequence();var kdfEnd=eder.offset+eder.length;var kdfOid=eder.readOID();if(kdfOid!==OID_PBKDF2)throw new Error("Unsupported PBES2 KDF: "+kdfOid);eder.readSequence();var salt=eder.readString(asn1.Ber.OctetString,true);var iterations=eder.readInt();var hashAlg="sha1";if(eder.offset<kdfEnd){eder.readSequence();var hashAlgOid=eder.readOID();hashAlg=OID_TO_HASH[hashAlgOid];if(hashAlg===undefined){throw new Error("Unsupported PBKDF2 hash: "+hashAlgOid)}}eder._offset=kdfEnd;eder.readSequence();var cipherOid=eder.readOID();cipher=OID_TO_CIPHER[cipherOid];if(cipher===undefined){throw new Error("Unsupported PBES2 cipher: "+cipherOid)}iv=eder.readString(asn1.Ber.OctetString,true);eder._offset=pbesEnd;buf=eder.readString(asn1.Ber.OctetString,true);if(typeof options.passphrase==="string"){options.passphrase=Buffer.from(options.passphrase,"utf-8")}if(!Buffer.isBuffer(options.passphrase)){throw new errors.KeyEncryptedError(options.filename,"PEM")}var cinfo=utils.opensshCipherInfo(cipher);cipher=cinfo.opensslName;key=utils.pbkdf2(hashAlg,salt,iterations,cinfo.keySize,options.passphrase);alg=undefined}if(cipher&&key&&iv){var cipherStream=crypto.createDecipheriv(cipher,key,iv);var chunk,chunks=[];cipherStream.once("error",function(e){if(e.toString().indexOf("bad decrypt")!==-1){throw new Error("Incorrect passphrase "+"supplied, could not decrypt key")}throw e});cipherStream.write(buf);cipherStream.end();while((chunk=cipherStream.read())!==null)chunks.push(chunk);buf=Buffer.concat(chunks)}if(alg&&alg.toLowerCase()==="openssh")return sshpriv.readSSHPrivate(type,buf,options);if(alg&&alg.toLowerCase()==="ssh2")return rfc4253.readType(type,buf,options);var der=new asn1.BerReader(buf);der.originalInput=input;der.readSequence();if(alg){if(forceType)assert.strictEqual(forceType,"pkcs1");return pkcs1.readPkcs1(alg,type,der)}else{if(forceType)assert.strictEqual(forceType,"pkcs8");return pkcs8.readPkcs8(alg,type,der)}}function write(key,options,type){assert.object(key);var alg={ecdsa:"EC",rsa:"RSA",dsa:"DSA",ed25519:"EdDSA"}[key.type];var header;var der=new asn1.BerWriter;if(PrivateKey.isPrivateKey(key)){if(type&&type==="pkcs8"){header="PRIVATE KEY";pkcs8.writePkcs8(der,key)}else{if(type)assert.strictEqual(type,"pkcs1");header=alg+" PRIVATE KEY";pkcs1.writePkcs1(der,key)}}else if(Key.isKey(key)){if(type&&type==="pkcs1"){header=alg+" PUBLIC KEY";pkcs1.writePkcs1(der,key)}else{if(type)assert.strictEqual(type,"pkcs8");header="PUBLIC KEY";pkcs8.writePkcs8(der,key)}}else{throw new Error("key is not a Key or PrivateKey")}var tmp=der.buffer.toString("base64");var len=tmp.length+tmp.length/64+18+16+header.length*2+10;var buf=Buffer.alloc(len);var o=0;o+=buf.write("-----BEGIN "+header+"-----\n",o);for(var i=0;i<tmp.length;){var limit=i+64;if(limit>tmp.length)limit=tmp.length;o+=buf.write(tmp.slice(i,limit),o);buf[o++]=10;i=limit}o+=buf.write("-----END "+header+"-----\n",o);return buf.slice(0,o)}},{"../algs":471,"../errors":475,"../key":491,"../private-key":492,"../utils":495,"./pkcs1":481,"./pkcs8":482,"./rfc4253":484,"./ssh-private":485,asn1:386,"assert-plus":387,crypto:81,"safer-buffer":470}],481:[function(require,module,exports){module.exports={read:read,readPkcs1:readPkcs1,write:write,writePkcs1:writePkcs1};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var pkcs8=require("./pkcs8");var readECDSACurve=pkcs8.readECDSACurve;function read(buf,options){return pem.read(buf,options,"pkcs1")}function write(key,options){return pem.write(key,options,"pkcs1")}function readMPInt(der,nm){assert.strictEqual(der.peek(),asn1.Ber.Integer,nm+" is not an Integer");return utils.mpNormalize(der.readString(asn1.Ber.Integer,true))}function readPkcs1(alg,type,der){switch(alg){case"RSA":if(type==="public")return readPkcs1RSAPublic(der);else if(type==="private")return readPkcs1RSAPrivate(der);throw new Error("Unknown key type: "+type);case"DSA":if(type==="public")return readPkcs1DSAPublic(der);else if(type==="private")return readPkcs1DSAPrivate(der);throw new Error("Unknown key type: "+type);case"EC":case"ECDSA":if(type==="private")return readPkcs1ECDSAPrivate(der);else if(type==="public")return readPkcs1ECDSAPublic(der);throw new Error("Unknown key type: "+type);case"EDDSA":case"EdDSA":if(type==="private")return readPkcs1EdDSAPrivate(der);throw new Error(type+" keys not supported with EdDSA");default:throw new Error("Unknown key algo: "+alg)}}function readPkcs1RSAPublic(der){var n=readMPInt(der,"modulus");var e=readMPInt(der,"exponent");var key={type:"rsa",parts:[{name:"e",data:e},{name:"n",data:n}]};return new Key(key)}function readPkcs1RSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version[0],0);var n=readMPInt(der,"modulus");var e=readMPInt(der,"public exponent");var d=readMPInt(der,"private exponent");var p=readMPInt(der,"prime1");var q=readMPInt(der,"prime2");var dmodp=readMPInt(der,"exponent1");var dmodq=readMPInt(der,"exponent2");var iqmp=readMPInt(der,"iqmp");var key={type:"rsa",parts:[{name:"n",data:n},{name:"e",data:e},{name:"d",data:d},{name:"iqmp",data:iqmp},{name:"p",data:p},{name:"q",data:q},{name:"dmodp",data:dmodp},{name:"dmodq",data:dmodq}]};return new PrivateKey(key)}function readPkcs1DSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version.readUInt8(0),0);var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");var y=readMPInt(der,"y");var x=readMPInt(der,"x");var key={type:"dsa",parts:[{name:"p",data:p},{name:"q",data:q},{name:"g",data:g},{name:"y",data:y},{name:"x",data:x}]};return new PrivateKey(key)}function readPkcs1EdDSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version.readUInt8(0),1);var k=der.readString(asn1.Ber.OctetString,true);der.readSequence(160);var oid=der.readOID();assert.strictEqual(oid,"1.3.101.112","the ed25519 curve identifier");der.readSequence(161);var A=utils.readBitString(der);var key={type:"ed25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)},{name:"k",data:k}]};return new PrivateKey(key)}function readPkcs1DSAPublic(der){var y=readMPInt(der,"y");var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");var key={type:"dsa",parts:[{name:"y",data:y},{name:"p",data:p},{name:"q",data:q},{name:"g",data:g}]};return new Key(key)}function readPkcs1ECDSAPublic(der){der.readSequence();var oid=der.readOID();assert.strictEqual(oid,"1.2.840.10045.2.1","must be ecPublicKey");var curveOid=der.readOID();var curve;var curves=Object.keys(algs.curves);for(var j=0;j<curves.length;++j){var c=curves[j];var cd=algs.curves[c];if(cd.pkcs8oid===curveOid){curve=c;break}}assert.string(curve,"a known ECDSA named curve");var Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q);var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curve)},{name:"Q",data:Q}]};return new Key(key)}function readPkcs1ECDSAPrivate(der){var version=readMPInt(der,"version");assert.strictEqual(version.readUInt8(0),1);var d=der.readString(asn1.Ber.OctetString,true);der.readSequence(160);var curve=readECDSACurve(der);assert.string(curve,"a known elliptic curve");der.readSequence(161);var Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q);var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curve)},{name:"Q",data:Q},{name:"d",data:d}]};return new PrivateKey(key)}function writePkcs1(der,key){der.startSequence();switch(key.type){case"rsa":if(PrivateKey.isPrivateKey(key))writePkcs1RSAPrivate(der,key);else writePkcs1RSAPublic(der,key);break;case"dsa":if(PrivateKey.isPrivateKey(key))writePkcs1DSAPrivate(der,key);else writePkcs1DSAPublic(der,key);break;case"ecdsa":if(PrivateKey.isPrivateKey(key))writePkcs1ECDSAPrivate(der,key);else writePkcs1ECDSAPublic(der,key);break;case"ed25519":if(PrivateKey.isPrivateKey(key))writePkcs1EdDSAPrivate(der,key);else writePkcs1EdDSAPublic(der,key);break;default:throw new Error("Unknown key algo: "+key.type)}der.endSequence()}function writePkcs1RSAPublic(der,key){der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer)}function writePkcs1RSAPrivate(der,key){var ver=Buffer.from([0]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);if(!key.part.dmodp||!key.part.dmodq)utils.addRSAMissing(key);der.writeBuffer(key.part.dmodp.data,asn1.Ber.Integer);der.writeBuffer(key.part.dmodq.data,asn1.Ber.Integer);der.writeBuffer(key.part.iqmp.data,asn1.Ber.Integer)}function writePkcs1DSAPrivate(der,key){var ver=Buffer.from([0]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer);der.writeBuffer(key.part.y.data,asn1.Ber.Integer);der.writeBuffer(key.part.x.data,asn1.Ber.Integer)}function writePkcs1DSAPublic(der,key){der.writeBuffer(key.part.y.data,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer)}function writePkcs1ECDSAPublic(der,key){der.startSequence();der.writeOID("1.2.840.10045.2.1");var curve=key.part.curve.data.toString();var curveOid=algs.curves[curve].pkcs8oid;assert.string(curveOid,"a known ECDSA named curve");der.writeOID(curveOid);der.endSequence();var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString)}function writePkcs1ECDSAPrivate(der,key){var ver=Buffer.from([1]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.OctetString);der.startSequence(160);var curve=key.part.curve.data.toString();var curveOid=algs.curves[curve].pkcs8oid;assert.string(curveOid,"a known ECDSA named curve");der.writeOID(curveOid);der.endSequence();der.startSequence(161);var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString);der.endSequence()}function writePkcs1EdDSAPrivate(der,key){var ver=Buffer.from([1]);der.writeBuffer(ver,asn1.Ber.Integer);der.writeBuffer(key.part.k.data,asn1.Ber.OctetString);der.startSequence(160);der.writeOID("1.3.101.112");der.endSequence();der.startSequence(161);utils.writeBitString(der,key.part.A.data);der.endSequence()}function writePkcs1EdDSAPublic(der,key){throw new Error("Public keys are not supported for EdDSA PKCS#1")}},{"../algs":471,"../key":491,"../private-key":492,"../utils":495,"./pem":480,"./pkcs8":482,asn1:386,"assert-plus":387,"safer-buffer":470}],482:[function(require,module,exports){module.exports={read:read,readPkcs8:readPkcs8,write:write,writePkcs8:writePkcs8,pkcs8ToBuffer:pkcs8ToBuffer,readECDSACurve:readECDSACurve,writeECDSACurve:writeECDSACurve};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");function read(buf,options){return pem.read(buf,options,"pkcs8")}function write(key,options){return pem.write(key,options,"pkcs8")}function readMPInt(der,nm){assert.strictEqual(der.peek(),asn1.Ber.Integer,nm+" is not an Integer");return utils.mpNormalize(der.readString(asn1.Ber.Integer,true))}function readPkcs8(alg,type,der){if(der.peek()===asn1.Ber.Integer){assert.strictEqual(type,"private","unexpected Integer at start of public key");der.readString(asn1.Ber.Integer,true)}der.readSequence();var next=der.offset+der.length;var oid=der.readOID();switch(oid){case"1.2.840.113549.1.1.1":der._offset=next;if(type==="public")return readPkcs8RSAPublic(der);else return readPkcs8RSAPrivate(der);case"1.2.840.10040.4.1":if(type==="public")return readPkcs8DSAPublic(der);else return readPkcs8DSAPrivate(der);case"1.2.840.10045.2.1":if(type==="public")return readPkcs8ECDSAPublic(der);else return readPkcs8ECDSAPrivate(der);case"1.3.101.112":if(type==="public"){return readPkcs8EdDSAPublic(der)}else{return readPkcs8EdDSAPrivate(der)}case"1.3.101.110":if(type==="public"){return readPkcs8X25519Public(der)}else{return readPkcs8X25519Private(der)}default:throw new Error("Unknown key type OID "+oid)}}function readPkcs8RSAPublic(der){der.readSequence(asn1.Ber.BitString);der.readByte();der.readSequence();var n=readMPInt(der,"modulus");var e=readMPInt(der,"exponent");var key={type:"rsa",source:der.originalInput,parts:[{name:"e",data:e},{name:"n",data:n}]};return new Key(key)}function readPkcs8RSAPrivate(der){der.readSequence(asn1.Ber.OctetString);der.readSequence();var ver=readMPInt(der,"version");assert.equal(ver[0],0,"unknown RSA private key version");var n=readMPInt(der,"modulus");var e=readMPInt(der,"public exponent");var d=readMPInt(der,"private exponent");var p=readMPInt(der,"prime1");var q=readMPInt(der,"prime2");var dmodp=readMPInt(der,"exponent1");var dmodq=readMPInt(der,"exponent2");var iqmp=readMPInt(der,"iqmp");var key={type:"rsa",parts:[{name:"n",data:n},{name:"e",data:e},{name:"d",data:d},{name:"iqmp",data:iqmp},{name:"p",data:p},{name:"q",data:q},{name:"dmodp",data:dmodp},{name:"dmodq",data:dmodq}]};return new PrivateKey(key)}function readPkcs8DSAPublic(der){der.readSequence();var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");der.readSequence(asn1.Ber.BitString);der.readByte();var y=readMPInt(der,"y");var key={type:"dsa",parts:[{name:"p",data:p},{name:"q",data:q},{name:"g",data:g},{name:"y",data:y}]};return new Key(key)}function readPkcs8DSAPrivate(der){der.readSequence();var p=readMPInt(der,"p");var q=readMPInt(der,"q");var g=readMPInt(der,"g");der.readSequence(asn1.Ber.OctetString);var x=readMPInt(der,"x");var y=utils.calculateDSAPublic(g,p,x);var key={type:"dsa",parts:[{name:"p",data:p},{name:"q",data:q},{name:"g",data:g},{name:"y",data:y},{name:"x",data:x}]};return new PrivateKey(key)}function readECDSACurve(der){var curveName,curveNames;var j,c,cd;if(der.peek()===asn1.Ber.OID){var oid=der.readOID();curveNames=Object.keys(algs.curves);for(j=0;j<curveNames.length;++j){c=curveNames[j];cd=algs.curves[c];if(cd.pkcs8oid===oid){curveName=c;break}}}else{der.readSequence();var version=der.readString(asn1.Ber.Integer,true);assert.strictEqual(version[0],1,"ECDSA key not version 1");var curve={};der.readSequence();var fieldTypeOid=der.readOID();assert.strictEqual(fieldTypeOid,"1.2.840.10045.1.1","ECDSA key is not from a prime-field");var p=curve.p=utils.mpNormalize(der.readString(asn1.Ber.Integer,true));curve.size=p.length*8-utils.countZeros(p);der.readSequence();curve.a=utils.mpNormalize(der.readString(asn1.Ber.OctetString,true));curve.b=utils.mpNormalize(der.readString(asn1.Ber.OctetString,true));if(der.peek()===asn1.Ber.BitString)curve.s=der.readString(asn1.Ber.BitString,true);curve.G=der.readString(asn1.Ber.OctetString,true);assert.strictEqual(curve.G[0],4,"uncompressed G is required");curve.n=utils.mpNormalize(der.readString(asn1.Ber.Integer,true));curve.h=utils.mpNormalize(der.readString(asn1.Ber.Integer,true));assert.strictEqual(curve.h[0],1,"a cofactor=1 curve is "+"required");curveNames=Object.keys(algs.curves);var ks=Object.keys(curve);for(j=0;j<curveNames.length;++j){c=curveNames[j];cd=algs.curves[c];var equal=true;for(var i=0;i<ks.length;++i){var k=ks[i];if(cd[k]===undefined)continue;if(typeof cd[k]==="object"&&cd[k].equals!==undefined){if(!cd[k].equals(curve[k])){equal=false;break}}else if(Buffer.isBuffer(cd[k])){if(cd[k].toString("binary")!==curve[k].toString("binary")){equal=false;break}}else{if(cd[k]!==curve[k]){equal=false;break}}}if(equal){curveName=c;break}}}return curveName}function readPkcs8ECDSAPrivate(der){var curveName=readECDSACurve(der);assert.string(curveName,"a known elliptic curve");der.readSequence(asn1.Ber.OctetString);der.readSequence();var version=readMPInt(der,"version");assert.equal(version[0],1,"unknown version of ECDSA key");var d=der.readString(asn1.Ber.OctetString,true);var Q;if(der.peek()==160){der.readSequence(160);der._offset+=der.length}if(der.peek()==161){der.readSequence(161);Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q)}if(Q===undefined){var pub=utils.publicFromPrivateECDSA(curveName,d);Q=pub.part.Q.data}var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curveName)},{name:"Q",data:Q},{name:"d",data:d}]};return new PrivateKey(key)}function readPkcs8ECDSAPublic(der){var curveName=readECDSACurve(der);assert.string(curveName,"a known elliptic curve");var Q=der.readString(asn1.Ber.BitString,true);Q=utils.ecNormalize(Q);var key={type:"ecdsa",parts:[{name:"curve",data:Buffer.from(curveName)},{name:"Q",data:Q}]};return new Key(key)}function readPkcs8EdDSAPublic(der){if(der.peek()===0)der.readByte();var A=utils.readBitString(der);var key={type:"ed25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)}]};return new Key(key)}function readPkcs8X25519Public(der){var A=utils.readBitString(der);var key={type:"curve25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)}]};return new Key(key)}function readPkcs8EdDSAPrivate(der){if(der.peek()===0)der.readByte();der.readSequence(asn1.Ber.OctetString);var k=der.readString(asn1.Ber.OctetString,true);k=utils.zeroPadToLength(k,32);var A;if(der.peek()===asn1.Ber.BitString){A=utils.readBitString(der);A=utils.zeroPadToLength(A,32)}else{A=utils.calculateED25519Public(k)}var key={type:"ed25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)},{name:"k",data:utils.zeroPadToLength(k,32)}]};return new PrivateKey(key)}function readPkcs8X25519Private(der){if(der.peek()===0)der.readByte();der.readSequence(asn1.Ber.OctetString);var k=der.readString(asn1.Ber.OctetString,true);k=utils.zeroPadToLength(k,32);var A=utils.calculateX25519Public(k);var key={type:"curve25519",parts:[{name:"A",data:utils.zeroPadToLength(A,32)},{name:"k",data:utils.zeroPadToLength(k,32)}]};return new PrivateKey(key)}function pkcs8ToBuffer(key){var der=new asn1.BerWriter;writePkcs8(der,key);return der.buffer}function writePkcs8(der,key){der.startSequence();if(PrivateKey.isPrivateKey(key)){var sillyInt=Buffer.from([0]);der.writeBuffer(sillyInt,asn1.Ber.Integer)}der.startSequence();switch(key.type){case"rsa":der.writeOID("1.2.840.113549.1.1.1");if(PrivateKey.isPrivateKey(key))writePkcs8RSAPrivate(key,der);else writePkcs8RSAPublic(key,der);break;case"dsa":der.writeOID("1.2.840.10040.4.1");if(PrivateKey.isPrivateKey(key))writePkcs8DSAPrivate(key,der);else writePkcs8DSAPublic(key,der);break;case"ecdsa":der.writeOID("1.2.840.10045.2.1");if(PrivateKey.isPrivateKey(key))writePkcs8ECDSAPrivate(key,der);else writePkcs8ECDSAPublic(key,der);break;case"ed25519":der.writeOID("1.3.101.112");if(PrivateKey.isPrivateKey(key))throw new Error("Ed25519 private keys in pkcs8 "+"format are not supported");writePkcs8EdDSAPublic(key,der);break;default:throw new Error("Unsupported key type: "+key.type)}der.endSequence()}function writePkcs8RSAPrivate(key,der){der.writeNull();der.endSequence();der.startSequence(asn1.Ber.OctetString);der.startSequence();var version=Buffer.from([0]);der.writeBuffer(version,asn1.Ber.Integer);der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.Integer);der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);if(!key.part.dmodp||!key.part.dmodq)utils.addRSAMissing(key);der.writeBuffer(key.part.dmodp.data,asn1.Ber.Integer);der.writeBuffer(key.part.dmodq.data,asn1.Ber.Integer);der.writeBuffer(key.part.iqmp.data,asn1.Ber.Integer);der.endSequence();der.endSequence()}function writePkcs8RSAPublic(key,der){der.writeNull();der.endSequence();der.startSequence(asn1.Ber.BitString);der.writeByte(0);der.startSequence();der.writeBuffer(key.part.n.data,asn1.Ber.Integer);der.writeBuffer(key.part.e.data,asn1.Ber.Integer);der.endSequence();der.endSequence()}function writePkcs8DSAPrivate(key,der){der.startSequence();der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer);der.endSequence();der.endSequence();der.startSequence(asn1.Ber.OctetString);der.writeBuffer(key.part.x.data,asn1.Ber.Integer);der.endSequence()}function writePkcs8DSAPublic(key,der){der.startSequence();der.writeBuffer(key.part.p.data,asn1.Ber.Integer);der.writeBuffer(key.part.q.data,asn1.Ber.Integer);der.writeBuffer(key.part.g.data,asn1.Ber.Integer);der.endSequence();der.endSequence();der.startSequence(asn1.Ber.BitString);der.writeByte(0);der.writeBuffer(key.part.y.data,asn1.Ber.Integer);der.endSequence()}function writeECDSACurve(key,der){var curve=algs.curves[key.curve];if(curve.pkcs8oid){der.writeOID(curve.pkcs8oid)}else{der.startSequence();var version=Buffer.from([1]);der.writeBuffer(version,asn1.Ber.Integer);der.startSequence();der.writeOID("1.2.840.10045.1.1");der.writeBuffer(curve.p,asn1.Ber.Integer);der.endSequence();der.startSequence();var a=curve.p;if(a[0]===0)a=a.slice(1);der.writeBuffer(a,asn1.Ber.OctetString);der.writeBuffer(curve.b,asn1.Ber.OctetString);der.writeBuffer(curve.s,asn1.Ber.BitString);der.endSequence();der.writeBuffer(curve.G,asn1.Ber.OctetString);der.writeBuffer(curve.n,asn1.Ber.Integer);var h=curve.h;if(!h){h=Buffer.from([1])}der.writeBuffer(h,asn1.Ber.Integer);der.endSequence()}}function writePkcs8ECDSAPublic(key,der){writeECDSACurve(key,der);der.endSequence();var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString)}function writePkcs8ECDSAPrivate(key,der){writeECDSACurve(key,der);der.endSequence();der.startSequence(asn1.Ber.OctetString);der.startSequence();var version=Buffer.from([1]);der.writeBuffer(version,asn1.Ber.Integer);der.writeBuffer(key.part.d.data,asn1.Ber.OctetString);der.startSequence(161);var Q=utils.ecNormalize(key.part.Q.data,true);der.writeBuffer(Q,asn1.Ber.BitString);der.endSequence();der.endSequence();der.endSequence()}function writePkcs8EdDSAPublic(key,der){der.endSequence();utils.writeBitString(der,key.part.A.data)}function writePkcs8EdDSAPrivate(key,der){der.endSequence();var k=utils.mpNormalize(key.part.k.data,true);der.startSequence(asn1.Ber.OctetString);der.writeBuffer(k,asn1.Ber.OctetString);der.endSequence()}},{"../algs":471,"../key":491,"../private-key":492,"../utils":495,"./pem":480,asn1:386,"assert-plus":387,"safer-buffer":470}],483:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var rfc4253=require("./rfc4253");var Key=require("../key");var SSHBuffer=require("../ssh-buffer");var crypto=require("crypto");var PrivateKey=require("../private-key");var errors=require("../errors");function read(buf,options){var lines=buf.toString("ascii").split(/[\r\n]+/);var found=false;var parts;var si=0;var formatVersion;while(si<lines.length){parts=splitHeader(lines[si++]);if(parts){formatVersion={"putty-user-key-file-2":2,"putty-user-key-file-3":3}[parts[0].toLowerCase()];if(formatVersion){found=true;break}}}if(!found){throw new Error("No PuTTY format first line found")}var alg=parts[1];parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"encryption");var encryption=parts[1];parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"comment");var comment=parts[1];parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"public-lines");var publicLines=parseInt(parts[1],10);if(!isFinite(publicLines)||publicLines<0||publicLines>lines.length){throw new Error("Invalid public-lines count")}var publicBuf=Buffer.from(lines.slice(si,si+publicLines).join(""),"base64");var keyType=rfc4253.algToKeyType(alg);var key=rfc4253.read(publicBuf);if(key.type!==keyType){throw new Error("Outer key algorithm mismatch")}si+=publicLines;if(lines[si]){parts=splitHeader(lines[si++]);assert.equal(parts[0].toLowerCase(),"private-lines");var privateLines=parseInt(parts[1],10);if(!isFinite(privateLines)||privateLines<0||privateLines>lines.length){throw new Error("Invalid private-lines count")}var privateBuf=Buffer.from(lines.slice(si,si+privateLines).join(""),"base64");if(encryption!=="none"&&formatVersion===3){throw new Error("Encrypted keys arenot supported for"+" PuTTY format version 3")}if(encryption==="aes256-cbc"){if(!options.passphrase){throw new errors.KeyEncryptedError(options.filename,"PEM")}var iv=Buffer.alloc(16,0);var decipher=crypto.createDecipheriv("aes-256-cbc",derivePPK2EncryptionKey(options.passphrase),iv);decipher.setAutoPadding(false);privateBuf=Buffer.concat([decipher.update(privateBuf),decipher.final()])}key=new PrivateKey(key);if(key.type!==keyType){throw new Error("Outer key algorithm mismatch")}var sshbuf=new SSHBuffer({buffer:privateBuf});var privateKeyParts;if(alg==="ssh-dss"){privateKeyParts=[{name:"x",data:sshbuf.readBuffer()}]}else if(alg==="ssh-rsa"){privateKeyParts=[{name:"d",data:sshbuf.readBuffer()},{name:"p",data:sshbuf.readBuffer()},{name:"q",data:sshbuf.readBuffer()},{name:"iqmp",data:sshbuf.readBuffer()}]}else if(alg.match(/^ecdsa-sha2-nistp/)){privateKeyParts=[{name:"d",data:sshbuf.readBuffer()}]}else if(alg==="ssh-ed25519"){privateKeyParts=[{name:"k",data:sshbuf.readBuffer()}]}else{throw new Error("Unsupported PPK key type: "+alg)}key=new PrivateKey({type:key.type,parts:key.parts.concat(privateKeyParts)})}key.comment=comment;return key}function derivePPK2EncryptionKey(passphrase){var hash1=crypto.createHash("sha1").update(Buffer.concat([Buffer.from([0,0,0,0]),Buffer.from(passphrase)])).digest();var hash2=crypto.createHash("sha1").update(Buffer.concat([Buffer.from([0,0,0,1]),Buffer.from(passphrase)])).digest();return Buffer.concat([hash1,hash2]).slice(0,32)}function splitHeader(line){var idx=line.indexOf(":");if(idx===-1)return null;var header=line.slice(0,idx);++idx;while(line[idx]===" ")++idx;var rest=line.slice(idx);return[header,rest]}function write(key,options){assert.object(key);if(!Key.isKey(key))throw new Error("Must be a public key");var alg=rfc4253.keyTypeToAlg(key);var buf=rfc4253.write(key);var comment=key.comment||"";var b64=buf.toString("base64");var lines=wrap(b64,64);lines.unshift("Public-Lines: "+lines.length);lines.unshift("Comment: "+comment);lines.unshift("Encryption: none");lines.unshift("PuTTY-User-Key-File-2: "+alg);return Buffer.from(lines.join("\n")+"\n")}function wrap(txt,len){var lines=[];var pos=0;while(pos<txt.length){lines.push(txt.slice(pos,pos+64));pos+=64}return lines}},{"../errors":475,"../key":491,"../private-key":492,"../ssh-buffer":494,"./rfc4253":484,"assert-plus":387,crypto:81,"safer-buffer":470}],484:[function(require,module,exports){module.exports={read:read.bind(undefined,false,undefined),readType:read.bind(undefined,false),write:write,readPartial:read.bind(undefined,true),readInternal:read,keyTypeToAlg:keyTypeToAlg,algToKeyType:algToKeyType};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var SSHBuffer=require("../ssh-buffer");function algToKeyType(alg){assert.string(alg);if(alg==="ssh-dss")return"dsa";else if(alg==="ssh-rsa")return"rsa";else if(alg==="ssh-ed25519")return"ed25519";else if(alg==="ssh-curve25519")return"curve25519";else if(alg.match(/^ecdsa-sha2-/))return"ecdsa";else throw new Error("Unknown algorithm "+alg)}function keyTypeToAlg(key){assert.object(key);if(key.type==="dsa")return"ssh-dss";else if(key.type==="rsa")return"ssh-rsa";else if(key.type==="ed25519")return"ssh-ed25519";else if(key.type==="curve25519")return"ssh-curve25519";else if(key.type==="ecdsa")return"ecdsa-sha2-"+key.part.curve.data.toString();else throw new Error("Unknown key type "+key.type)}function read(partial,type,buf,options){if(typeof buf==="string")buf=Buffer.from(buf);assert.buffer(buf,"buf");var key={};var parts=key.parts=[];var sshbuf=new SSHBuffer({buffer:buf});var alg=sshbuf.readString();assert.ok(!sshbuf.atEnd(),"key must have at least one part");key.type=algToKeyType(alg);var partCount=algs.info[key.type].parts.length;if(type&&type==="private")partCount=algs.privInfo[key.type].parts.length;while(!sshbuf.atEnd()&&parts.length<partCount)parts.push(sshbuf.readPart());while(!partial&&!sshbuf.atEnd())parts.push(sshbuf.readPart());assert.ok(parts.length>=1,"key must have at least one part");assert.ok(partial||sshbuf.atEnd(),"leftover bytes at end of key");var Constructor=Key;var algInfo=algs.info[key.type];if(type==="private"||algInfo.parts.length!==parts.length){algInfo=algs.privInfo[key.type];Constructor=PrivateKey}assert.strictEqual(algInfo.parts.length,parts.length);if(key.type==="ecdsa"){var res=/^ecdsa-sha2-(.+)$/.exec(alg);assert.ok(res!==null);assert.strictEqual(res[1],parts[0].data.toString())}var normalized=true;for(var i=0;i<algInfo.parts.length;++i){var p=parts[i];p.name=algInfo.parts[i];if(key.type==="ed25519"&&p.name==="k")p.data=p.data.slice(0,32);if(p.name!=="curve"&&algInfo.normalize!==false){var nd;if(key.type==="ed25519"){nd=utils.zeroPadToLength(p.data,32)}else{nd=utils.mpNormalize(p.data)}if(nd.toString("binary")!==p.data.toString("binary")){p.data=nd;normalized=false}}}if(normalized)key._rfc4253Cache=sshbuf.toBuffer();if(partial&&typeof partial==="object"){partial.remainder=sshbuf.remainder();partial.consumed=sshbuf._offset}return new Constructor(key)}function write(key,options){assert.object(key);var alg=keyTypeToAlg(key);var i;var algInfo=algs.info[key.type];if(PrivateKey.isPrivateKey(key))algInfo=algs.privInfo[key.type];var parts=algInfo.parts;var buf=new SSHBuffer({});buf.writeString(alg);for(i=0;i<parts.length;++i){var data=key.part[parts[i]].data;if(algInfo.normalize!==false){if(key.type==="ed25519")data=utils.zeroPadToLength(data,32);else data=utils.mpNormalize(data)}if(key.type==="ed25519"&&parts[i]==="k")data=Buffer.concat([data,key.part.A.data]);buf.writeBuffer(data)}return buf.toBuffer()}},{"../algs":471,"../key":491,"../private-key":492,"../ssh-buffer":494,"../utils":495,"assert-plus":387,"safer-buffer":470}],485:[function(require,module,exports){module.exports={read:read,readSSHPrivate:readSSHPrivate,write:write};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs")
|
|
54
|
+
;var utils=require("../utils");var crypto=require("crypto");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var rfc4253=require("./rfc4253");var SSHBuffer=require("../ssh-buffer");var errors=require("../errors");var bcrypt;function read(buf,options){return pem.read(buf,options)}var MAGIC="openssh-key-v1";function readSSHPrivate(type,buf,options){buf=new SSHBuffer({buffer:buf});var magic=buf.readCString();assert.strictEqual(magic,MAGIC,"bad magic string");var cipher=buf.readString();var kdf=buf.readString();var kdfOpts=buf.readBuffer();var nkeys=buf.readInt();if(nkeys!==1){throw new Error("OpenSSH-format key file contains "+"multiple keys: this is unsupported.")}var pubKey=buf.readBuffer();if(type==="public"){assert.ok(buf.atEnd(),"excess bytes left after key");return rfc4253.read(pubKey)}var privKeyBlob=buf.readBuffer();assert.ok(buf.atEnd(),"excess bytes left after key");var kdfOptsBuf=new SSHBuffer({buffer:kdfOpts});switch(kdf){case"none":if(cipher!=="none"){throw new Error('OpenSSH-format key uses KDF "none" '+'but specifies a cipher other than "none"')}break;case"bcrypt":var salt=kdfOptsBuf.readBuffer();var rounds=kdfOptsBuf.readInt();var cinf=utils.opensshCipherInfo(cipher);if(bcrypt===undefined){bcrypt=require("bcrypt-pbkdf")}if(typeof options.passphrase==="string"){options.passphrase=Buffer.from(options.passphrase,"utf-8")}if(!Buffer.isBuffer(options.passphrase)){throw new errors.KeyEncryptedError(options.filename,"OpenSSH")}var pass=new Uint8Array(options.passphrase);var salti=new Uint8Array(salt);var out=new Uint8Array(cinf.keySize+cinf.blockSize);var res=bcrypt.pbkdf(pass,pass.length,salti,salti.length,out,out.length,rounds);if(res!==0){throw new Error("bcrypt_pbkdf function returned "+"failure, parameters invalid")}out=Buffer.from(out);var ckey=out.slice(0,cinf.keySize);var iv=out.slice(cinf.keySize,cinf.keySize+cinf.blockSize);var cipherStream=crypto.createDecipheriv(cinf.opensslName,ckey,iv);cipherStream.setAutoPadding(false);var chunk,chunks=[];cipherStream.once("error",function(e){if(e.toString().indexOf("bad decrypt")!==-1){throw new Error("Incorrect passphrase "+"supplied, could not decrypt key")}throw e});cipherStream.write(privKeyBlob);cipherStream.end();while((chunk=cipherStream.read())!==null)chunks.push(chunk);privKeyBlob=Buffer.concat(chunks);break;default:throw new Error('OpenSSH-format key uses unknown KDF "'+kdf+'"')}buf=new SSHBuffer({buffer:privKeyBlob});var checkInt1=buf.readInt();var checkInt2=buf.readInt();if(checkInt1!==checkInt2){throw new Error("Incorrect passphrase supplied, could not "+"decrypt key")}var ret={};var key=rfc4253.readInternal(ret,"private",buf.remainder());buf.skip(ret.consumed);var comment=buf.readString();key.comment=comment;return key}function write(key,options){var pubKey;if(PrivateKey.isPrivateKey(key))pubKey=key.toPublic();else pubKey=key;var cipher="none";var kdf="none";var kdfopts=Buffer.alloc(0);var cinf={blockSize:8};var passphrase;if(options!==undefined){passphrase=options.passphrase;if(typeof passphrase==="string")passphrase=Buffer.from(passphrase,"utf-8");if(passphrase!==undefined){assert.buffer(passphrase,"options.passphrase");assert.optionalString(options.cipher,"options.cipher");cipher=options.cipher;if(cipher===undefined)cipher="aes128-ctr";cinf=utils.opensshCipherInfo(cipher);kdf="bcrypt"}}var privBuf;if(PrivateKey.isPrivateKey(key)){privBuf=new SSHBuffer({});var checkInt=crypto.randomBytes(4).readUInt32BE(0);privBuf.writeInt(checkInt);privBuf.writeInt(checkInt);privBuf.write(key.toBuffer("rfc4253"));privBuf.writeString(key.comment||"");var n=1;while(privBuf._offset%cinf.blockSize!==0)privBuf.writeChar(n++);privBuf=privBuf.toBuffer()}switch(kdf){case"none":break;case"bcrypt":var salt=crypto.randomBytes(16);var rounds=16;var kdfssh=new SSHBuffer({});kdfssh.writeBuffer(salt);kdfssh.writeInt(rounds);kdfopts=kdfssh.toBuffer();if(bcrypt===undefined){bcrypt=require("bcrypt-pbkdf")}var pass=new Uint8Array(passphrase);var salti=new Uint8Array(salt);var out=new Uint8Array(cinf.keySize+cinf.blockSize);var res=bcrypt.pbkdf(pass,pass.length,salti,salti.length,out,out.length,rounds);if(res!==0){throw new Error("bcrypt_pbkdf function returned "+"failure, parameters invalid")}out=Buffer.from(out);var ckey=out.slice(0,cinf.keySize);var iv=out.slice(cinf.keySize,cinf.keySize+cinf.blockSize);var cipherStream=crypto.createCipheriv(cinf.opensslName,ckey,iv);cipherStream.setAutoPadding(false);var chunk,chunks=[];cipherStream.once("error",function(e){throw e});cipherStream.write(privBuf);cipherStream.end();while((chunk=cipherStream.read())!==null)chunks.push(chunk);privBuf=Buffer.concat(chunks);break;default:throw new Error("Unsupported kdf "+kdf)}var buf=new SSHBuffer({});buf.writeCString(MAGIC);buf.writeString(cipher);buf.writeString(kdf);buf.writeBuffer(kdfopts);buf.writeInt(1);buf.writeBuffer(pubKey.toBuffer("rfc4253"));if(privBuf)buf.writeBuffer(privBuf);buf=buf.toBuffer();var header;if(PrivateKey.isPrivateKey(key))header="OPENSSH PRIVATE KEY";else header="OPENSSH PUBLIC KEY";var tmp=buf.toString("base64");var len=tmp.length+tmp.length/70+18+16+header.length*2+10;buf=Buffer.alloc(len);var o=0;o+=buf.write("-----BEGIN "+header+"-----\n",o);for(var i=0;i<tmp.length;){var limit=i+70;if(limit>tmp.length)limit=tmp.length;o+=buf.write(tmp.slice(i,limit),o);buf[o++]=10;i=limit}o+=buf.write("-----END "+header+"-----\n",o);return buf.slice(0,o)}},{"../algs":471,"../errors":475,"../key":491,"../private-key":492,"../ssh-buffer":494,"../utils":495,"./pem":480,"./rfc4253":484,asn1:386,"assert-plus":387,"bcrypt-pbkdf":391,crypto:81,"safer-buffer":470}],486:[function(require,module,exports){module.exports={read:read,write:write};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var rfc4253=require("./rfc4253");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var sshpriv=require("./ssh-private");var SSHKEY_RE=/^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/;var SSHKEY_RE2=/^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/;function read(buf,options){if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var trimmed=buf.trim().replace(/[\\\r]/g,"");var m=trimmed.match(SSHKEY_RE);if(!m)m=trimmed.match(SSHKEY_RE2);assert.ok(m,"key must match regex");var type=rfc4253.algToKeyType(m[1]);var kbuf=Buffer.from(m[2],"base64");var key;var ret={};if(m[4]){try{key=rfc4253.read(kbuf)}catch(e){m=trimmed.match(SSHKEY_RE2);assert.ok(m,"key must match regex");kbuf=Buffer.from(m[2],"base64");key=rfc4253.readInternal(ret,"public",kbuf)}}else{key=rfc4253.readInternal(ret,"public",kbuf)}assert.strictEqual(type,key.type);if(m[4]&&m[4].length>0){key.comment=m[4]}else if(ret.consumed){var data=m[2]+(m[3]?m[3]:"");var realOffset=Math.ceil(ret.consumed/3)*4;data=data.slice(0,realOffset-2).replace(/[^a-zA-Z0-9+\/=]/g,"")+data.slice(realOffset-2);var padding=ret.consumed%3;if(padding>0&&data.slice(realOffset-1,realOffset)!=="=")realOffset--;while(data.slice(realOffset,realOffset+1)==="=")realOffset++;var trailer=data.slice(realOffset);trailer=trailer.replace(/[\r\n]/g," ").replace(/^\s+/,"");if(trailer.match(/^[a-zA-Z0-9]/))key.comment=trailer}return key}function write(key,options){assert.object(key);if(!Key.isKey(key))throw new Error("Must be a public key");var parts=[];var alg=rfc4253.keyTypeToAlg(key);parts.push(alg);var buf=rfc4253.write(key);parts.push(buf.toString("base64"));if(key.comment)parts.push(key.comment);return Buffer.from(parts.join(" "))}},{"../key":491,"../private-key":492,"../utils":495,"./rfc4253":484,"./ssh-private":485,"assert-plus":387,"safer-buffer":470}],487:[function(require,module,exports){var x509=require("./x509");module.exports={read:read,verify:x509.verify,sign:x509.sign,write:write};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var Identity=require("../identity");var Signature=require("../signature");var Certificate=require("../certificate");function read(buf,options){if(typeof buf!=="string"){assert.buffer(buf,"buf");buf=buf.toString("ascii")}var lines=buf.trim().split(/[\r\n]+/g);var m;var si=-1;while(!m&&si<lines.length){m=lines[++si].match(/[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/)}assert.ok(m,"invalid PEM header");var m2;var ei=lines.length;while(!m2&&ei>0){m2=lines[--ei].match(/[-]+[ ]*END CERTIFICATE[ ]*[-]+/)}assert.ok(m2,"invalid PEM footer");lines=lines.slice(si,ei+1);var headers={};while(true){lines=lines.slice(1);m=lines[0].match(/^([A-Za-z0-9-]+): (.+)$/);if(!m)break;headers[m[1].toLowerCase()]=m[2]}lines=lines.slice(0,-1).join("");buf=Buffer.from(lines,"base64");return x509.read(buf,options)}function write(cert,options){var dbuf=x509.write(cert,options);var header="CERTIFICATE";var tmp=dbuf.toString("base64");var len=tmp.length+tmp.length/64+18+16+header.length*2+10;var buf=Buffer.alloc(len);var o=0;o+=buf.write("-----BEGIN "+header+"-----\n",o);for(var i=0;i<tmp.length;){var limit=i+64;if(limit>tmp.length)limit=tmp.length;o+=buf.write(tmp.slice(i,limit),o);buf[o++]=10;i=limit}o+=buf.write("-----END "+header+"-----\n",o);return buf.slice(0,o)}},{"../algs":471,"../certificate":472,"../identity":489,"../key":491,"../private-key":492,"../signature":493,"../utils":495,"./pem":480,"./x509":488,asn1:386,"assert-plus":387,"safer-buffer":470}],488:[function(require,module,exports){module.exports={read:read,verify:verify,sign:sign,signAsync:signAsync,write:write};var assert=require("assert-plus");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var algs=require("../algs");var utils=require("../utils");var Key=require("../key");var PrivateKey=require("../private-key");var pem=require("./pem");var Identity=require("../identity");var Signature=require("../signature");var Certificate=require("../certificate");var pkcs8=require("./pkcs8");function readMPInt(der,nm){assert.strictEqual(der.peek(),asn1.Ber.Integer,nm+" is not an Integer");return utils.mpNormalize(der.readString(asn1.Ber.Integer,true))}function verify(cert,key){var sig=cert.signatures.x509;assert.object(sig,"x509 signature");var algParts=sig.algo.split("-");if(algParts[0]!==key.type)return false;var blob=sig.cache;if(blob===undefined){var der=new asn1.BerWriter;writeTBSCert(cert,der);blob=der.buffer}var verifier=key.createVerify(algParts[1]);verifier.write(blob);return verifier.verify(sig.signature)}function Local(i){return asn1.Ber.Context|asn1.Ber.Constructor|i}function Context(i){return asn1.Ber.Context|i}var SIGN_ALGS={"rsa-md5":"1.2.840.113549.1.1.4","rsa-sha1":"1.2.840.113549.1.1.5","rsa-sha256":"1.2.840.113549.1.1.11","rsa-sha384":"1.2.840.113549.1.1.12","rsa-sha512":"1.2.840.113549.1.1.13","dsa-sha1":"1.2.840.10040.4.3","dsa-sha256":"2.16.840.1.101.3.4.3.2","ecdsa-sha1":"1.2.840.10045.4.1","ecdsa-sha256":"1.2.840.10045.4.3.2","ecdsa-sha384":"1.2.840.10045.4.3.3","ecdsa-sha512":"1.2.840.10045.4.3.4","ed25519-sha512":"1.3.101.112"};Object.keys(SIGN_ALGS).forEach(function(k){SIGN_ALGS[SIGN_ALGS[k]]=k});SIGN_ALGS["1.3.14.3.2.3"]="rsa-md5";SIGN_ALGS["1.3.14.3.2.29"]="rsa-sha1";var EXTS={issuerKeyId:"2.5.29.35",altName:"2.5.29.17",basicConstraints:"2.5.29.19",keyUsage:"2.5.29.15",extKeyUsage:"2.5.29.37"};function read(buf,options){if(typeof buf==="string"){buf=Buffer.from(buf,"binary")}assert.buffer(buf,"buf");var der=new asn1.BerReader(buf);der.readSequence();if(Math.abs(der.length-der.remain)>1){throw new Error("DER sequence does not contain whole byte "+"stream")}var tbsStart=der.offset;der.readSequence();var sigOffset=der.offset+der.length;var tbsEnd=sigOffset;if(der.peek()===Local(0)){der.readSequence(Local(0));var version=der.readInt();assert.ok(version<=3,"only x.509 versions up to v3 supported")}var cert={};cert.signatures={};var sig=cert.signatures.x509={};sig.extras={};cert.serial=readMPInt(der,"serial");der.readSequence();var after=der.offset+der.length;var certAlgOid=der.readOID();var certAlg=SIGN_ALGS[certAlgOid];if(certAlg===undefined)throw new Error("unknown signature algorithm "+certAlgOid);der._offset=after;cert.issuer=Identity.parseAsn1(der);der.readSequence();cert.validFrom=readDate(der);cert.validUntil=readDate(der);cert.subjects=[Identity.parseAsn1(der)];der.readSequence();after=der.offset+der.length;cert.subjectKey=pkcs8.readPkcs8(undefined,"public",der);der._offset=after;if(der.peek()===Local(1)){der.readSequence(Local(1));sig.extras.issuerUniqueID=buf.slice(der.offset,der.offset+der.length);der._offset+=der.length}if(der.peek()===Local(2)){der.readSequence(Local(2));sig.extras.subjectUniqueID=buf.slice(der.offset,der.offset+der.length);der._offset+=der.length}if(der.peek()===Local(3)){der.readSequence(Local(3));var extEnd=der.offset+der.length;der.readSequence();while(der.offset<extEnd)readExtension(cert,buf,der);assert.strictEqual(der.offset,extEnd)}assert.strictEqual(der.offset,sigOffset);der.readSequence();after=der.offset+der.length;var sigAlgOid=der.readOID();var sigAlg=SIGN_ALGS[sigAlgOid];if(sigAlg===undefined)throw new Error("unknown signature algorithm "+sigAlgOid);der._offset=after;var sigData=der.readString(asn1.Ber.BitString,true);if(sigData[0]===0)sigData=sigData.slice(1);var algParts=sigAlg.split("-");sig.signature=Signature.parse(sigData,algParts[0],"asn1");sig.signature.hashAlgorithm=algParts[1];sig.algo=sigAlg;sig.cache=buf.slice(tbsStart,tbsEnd);return new Certificate(cert)}function readDate(der){if(der.peek()===asn1.Ber.UTCTime){return utcTimeToDate(der.readString(asn1.Ber.UTCTime))}else if(der.peek()===asn1.Ber.GeneralizedTime){return gTimeToDate(der.readString(asn1.Ber.GeneralizedTime))}else{throw new Error("Unsupported date format")}}function writeDate(der,date){if(date.getUTCFullYear()>=2050||date.getUTCFullYear()<1950){der.writeString(dateToGTime(date),asn1.Ber.GeneralizedTime)}else{der.writeString(dateToUTCTime(date),asn1.Ber.UTCTime)}}var ALTNAME={OtherName:Local(0),RFC822Name:Context(1),DNSName:Context(2),X400Address:Local(3),DirectoryName:Local(4),EDIPartyName:Local(5),URI:Context(6),IPAddress:Context(7),OID:Context(8)};var EXTPURPOSE={serverAuth:"1.3.6.1.5.5.7.3.1",clientAuth:"1.3.6.1.5.5.7.3.2",codeSigning:"1.3.6.1.5.5.7.3.3",joyentDocker:"1.3.6.1.4.1.38678.1.4.1",joyentCmon:"1.3.6.1.4.1.38678.1.4.2"};var EXTPURPOSE_REV={};Object.keys(EXTPURPOSE).forEach(function(k){EXTPURPOSE_REV[EXTPURPOSE[k]]=k});var KEYUSEBITS=["signature","identity","keyEncryption","encryption","keyAgreement","ca","crl"];function readExtension(cert,buf,der){der.readSequence();var after=der.offset+der.length;var extId=der.readOID();var id;var sig=cert.signatures.x509;if(!sig.extras.exts)sig.extras.exts=[];var critical;if(der.peek()===asn1.Ber.Boolean)critical=der.readBoolean();switch(extId){case EXTS.basicConstraints:der.readSequence(asn1.Ber.OctetString);der.readSequence();var bcEnd=der.offset+der.length;var ca=false;if(der.peek()===asn1.Ber.Boolean)ca=der.readBoolean();if(cert.purposes===undefined)cert.purposes=[];if(ca===true)cert.purposes.push("ca");var bc={oid:extId,critical:critical};if(der.offset<bcEnd&&der.peek()===asn1.Ber.Integer)bc.pathLen=der.readInt();sig.extras.exts.push(bc);break;case EXTS.extKeyUsage:der.readSequence(asn1.Ber.OctetString);der.readSequence();if(cert.purposes===undefined)cert.purposes=[];var ekEnd=der.offset+der.length;while(der.offset<ekEnd){var oid=der.readOID();cert.purposes.push(EXTPURPOSE_REV[oid]||oid)}if(cert.purposes.indexOf("serverAuth")!==-1&&cert.purposes.indexOf("clientAuth")===-1){cert.subjects.forEach(function(ide){if(ide.type!=="host"){ide.type="host";ide.hostname=ide.uid||ide.email||ide.components[0].value}})}else if(cert.purposes.indexOf("clientAuth")!==-1&&cert.purposes.indexOf("serverAuth")===-1){cert.subjects.forEach(function(ide){if(ide.type!=="user"){ide.type="user";ide.uid=ide.hostname||ide.email||ide.components[0].value}})}sig.extras.exts.push({oid:extId,critical:critical});break;case EXTS.keyUsage:der.readSequence(asn1.Ber.OctetString);var bits=der.readString(asn1.Ber.BitString,true);var setBits=readBitField(bits,KEYUSEBITS);setBits.forEach(function(bit){if(cert.purposes===undefined)cert.purposes=[];if(cert.purposes.indexOf(bit)===-1)cert.purposes.push(bit)});sig.extras.exts.push({oid:extId,critical:critical,bits:bits});break;case EXTS.altName:der.readSequence(asn1.Ber.OctetString);der.readSequence();var aeEnd=der.offset+der.length;while(der.offset<aeEnd){switch(der.peek()){case ALTNAME.OtherName:case ALTNAME.EDIPartyName:der.readSequence();der._offset+=der.length;break;case ALTNAME.OID:der.readOID(ALTNAME.OID);break;case ALTNAME.RFC822Name:var email=der.readString(ALTNAME.RFC822Name);id=Identity.forEmail(email);if(!cert.subjects[0].equals(id))cert.subjects.push(id);break;case ALTNAME.DirectoryName:der.readSequence(ALTNAME.DirectoryName);id=Identity.parseAsn1(der);if(!cert.subjects[0].equals(id))cert.subjects.push(id);break;case ALTNAME.DNSName:var host=der.readString(ALTNAME.DNSName);id=Identity.forHost(host);if(!cert.subjects[0].equals(id))cert.subjects.push(id);break;default:der.readString(der.peek());break}}sig.extras.exts.push({oid:extId,critical:critical});break;default:sig.extras.exts.push({oid:extId,critical:critical,data:der.readString(asn1.Ber.OctetString,true)});break}der._offset=after}var UTCTIME_RE=/^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;function utcTimeToDate(t){var m=t.match(UTCTIME_RE);assert.ok(m,"timestamps must be in UTC");var d=new Date;var thisYear=d.getUTCFullYear();var century=Math.floor(thisYear/100)*100;var year=parseInt(m[1],10);if(thisYear%100<50&&year>=60)year+=century-1;else year+=century;d.setUTCFullYear(year,parseInt(m[2],10)-1,parseInt(m[3],10));d.setUTCHours(parseInt(m[4],10),parseInt(m[5],10));if(m[6]&&m[6].length>0)d.setUTCSeconds(parseInt(m[6],10));return d}var GTIME_RE=/^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;function gTimeToDate(t){var m=t.match(GTIME_RE);assert.ok(m);var d=new Date;d.setUTCFullYear(parseInt(m[1],10),parseInt(m[2],10)-1,parseInt(m[3],10));d.setUTCHours(parseInt(m[4],10),parseInt(m[5],10));if(m[6]&&m[6].length>0)d.setUTCSeconds(parseInt(m[6],10));return d}function zeroPad(n,m){if(m===undefined)m=2;var s=""+n;while(s.length<m)s="0"+s;return s}function dateToUTCTime(d){var s="";s+=zeroPad(d.getUTCFullYear()%100);s+=zeroPad(d.getUTCMonth()+1);s+=zeroPad(d.getUTCDate());s+=zeroPad(d.getUTCHours());s+=zeroPad(d.getUTCMinutes());s+=zeroPad(d.getUTCSeconds());s+="Z";return s}function dateToGTime(d){var s="";s+=zeroPad(d.getUTCFullYear(),4);s+=zeroPad(d.getUTCMonth()+1);s+=zeroPad(d.getUTCDate());s+=zeroPad(d.getUTCHours());s+=zeroPad(d.getUTCMinutes());s+=zeroPad(d.getUTCSeconds());s+="Z";return s}function sign(cert,key){if(cert.signatures.x509===undefined)cert.signatures.x509={};var sig=cert.signatures.x509;sig.algo=key.type+"-"+key.defaultHashAlgorithm();if(SIGN_ALGS[sig.algo]===undefined)return false;var der=new asn1.BerWriter;writeTBSCert(cert,der);var blob=der.buffer;sig.cache=blob;var signer=key.createSign();signer.write(blob);cert.signatures.x509.signature=signer.sign();return true}function signAsync(cert,signer,done){if(cert.signatures.x509===undefined)cert.signatures.x509={};var sig=cert.signatures.x509;var der=new asn1.BerWriter;writeTBSCert(cert,der);var blob=der.buffer;sig.cache=blob;signer(blob,function(err,signature){if(err){done(err);return}sig.algo=signature.type+"-"+signature.hashAlgorithm;if(SIGN_ALGS[sig.algo]===undefined){done(new Error('Invalid signing algorithm "'+sig.algo+'"'));return}sig.signature=signature;done()})}function write(cert,options){var sig=cert.signatures.x509;assert.object(sig,"x509 signature");var der=new asn1.BerWriter;der.startSequence();if(sig.cache){der._ensure(sig.cache.length);sig.cache.copy(der._buf,der._offset);der._offset+=sig.cache.length}else{writeTBSCert(cert,der)}der.startSequence();der.writeOID(SIGN_ALGS[sig.algo]);if(sig.algo.match(/^rsa-/))der.writeNull();der.endSequence();var sigData=sig.signature.toBuffer("asn1");var data=Buffer.alloc(sigData.length+1);data[0]=0;sigData.copy(data,1);der.writeBuffer(data,asn1.Ber.BitString);der.endSequence();return der.buffer}function writeTBSCert(cert,der){var sig=cert.signatures.x509;assert.object(sig,"x509 signature");der.startSequence();der.startSequence(Local(0));der.writeInt(2);der.endSequence();der.writeBuffer(utils.mpNormalize(cert.serial),asn1.Ber.Integer);der.startSequence();der.writeOID(SIGN_ALGS[sig.algo]);if(sig.algo.match(/^rsa-/))der.writeNull();der.endSequence();cert.issuer.toAsn1(der);der.startSequence();writeDate(der,cert.validFrom);writeDate(der,cert.validUntil);der.endSequence();var subject=cert.subjects[0];var altNames=cert.subjects.slice(1);subject.toAsn1(der);pkcs8.writePkcs8(der,cert.subjectKey);if(sig.extras&&sig.extras.issuerUniqueID){der.writeBuffer(sig.extras.issuerUniqueID,Local(1))}if(sig.extras&&sig.extras.subjectUniqueID){der.writeBuffer(sig.extras.subjectUniqueID,Local(2))}if(altNames.length>0||subject.type==="host"||cert.purposes!==undefined&&cert.purposes.length>0||sig.extras&&sig.extras.exts){der.startSequence(Local(3));der.startSequence();var exts=[];if(cert.purposes!==undefined&&cert.purposes.length>0){exts.push({oid:EXTS.basicConstraints,critical:true});exts.push({oid:EXTS.keyUsage,critical:true});exts.push({oid:EXTS.extKeyUsage,critical:true})}exts.push({oid:EXTS.altName});if(sig.extras&&sig.extras.exts)exts=sig.extras.exts;for(var i=0;i<exts.length;++i){der.startSequence();der.writeOID(exts[i].oid);if(exts[i].critical!==undefined)der.writeBoolean(exts[i].critical);if(exts[i].oid===EXTS.altName){der.startSequence(asn1.Ber.OctetString);der.startSequence();if(subject.type==="host"){der.writeString(subject.hostname,Context(2))}for(var j=0;j<altNames.length;++j){if(altNames[j].type==="host"){der.writeString(altNames[j].hostname,ALTNAME.DNSName)}else if(altNames[j].type==="email"){der.writeString(altNames[j].email,ALTNAME.RFC822Name)}else{der.startSequence(ALTNAME.DirectoryName);altNames[j].toAsn1(der);der.endSequence()}}der.endSequence();der.endSequence()}else if(exts[i].oid===EXTS.basicConstraints){der.startSequence(asn1.Ber.OctetString);der.startSequence();var ca=cert.purposes.indexOf("ca")!==-1;var pathLen=exts[i].pathLen;der.writeBoolean(ca);if(pathLen!==undefined)der.writeInt(pathLen);der.endSequence();der.endSequence()}else if(exts[i].oid===EXTS.extKeyUsage){der.startSequence(asn1.Ber.OctetString);der.startSequence();cert.purposes.forEach(function(purpose){if(purpose==="ca")return;if(KEYUSEBITS.indexOf(purpose)!==-1)return;var oid=purpose;if(EXTPURPOSE[purpose]!==undefined)oid=EXTPURPOSE[purpose];der.writeOID(oid)});der.endSequence();der.endSequence()}else if(exts[i].oid===EXTS.keyUsage){der.startSequence(asn1.Ber.OctetString);if(exts[i].bits!==undefined){der.writeBuffer(exts[i].bits,asn1.Ber.BitString)}else{var bits=writeBitField(cert.purposes,KEYUSEBITS);der.writeBuffer(bits,asn1.Ber.BitString)}der.endSequence()}else{der.writeBuffer(exts[i].data,asn1.Ber.OctetString)}der.endSequence()}der.endSequence();der.endSequence()}der.endSequence()}function readBitField(bits,bitIndex){var bitLen=8*(bits.length-1)-bits[0];var setBits={};for(var i=0;i<bitLen;++i){var byteN=1+Math.floor(i/8);var bit=7-i%8;var mask=1<<bit;var bitVal=(bits[byteN]&mask)!==0;var name=bitIndex[i];if(bitVal&&typeof name==="string"){setBits[name]=true}}return Object.keys(setBits)}function writeBitField(setBits,bitIndex){var bitLen=bitIndex.length;var blen=Math.ceil(bitLen/8);var unused=blen*8-bitLen;var bits=Buffer.alloc(1+blen);bits[0]=unused;for(var i=0;i<bitLen;++i){var byteN=1+Math.floor(i/8);var bit=7-i%8;var mask=1<<bit;var name=bitIndex[i];if(name===undefined)continue;var bitVal=setBits.indexOf(name)!==-1;if(bitVal){bits[byteN]|=mask}}return bits}},{"../algs":471,"../certificate":472,"../identity":489,"../key":491,"../private-key":492,"../signature":493,"../utils":495,"./pem":480,"./pkcs8":482,asn1:386,"assert-plus":387,"safer-buffer":470}],489:[function(require,module,exports){module.exports=Identity;var assert=require("assert-plus");var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var errs=require("./errors");var util=require("util");var utils=require("./utils");var asn1=require("asn1");var Buffer=require("safer-buffer").Buffer;var DNS_NAME_RE=/^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i;var oids={};oids.cn="2.5.4.3";oids.o="2.5.4.10";oids.ou="2.5.4.11";oids.l="2.5.4.7";oids.s="2.5.4.8";oids.c="2.5.4.6";oids.sn="2.5.4.4";oids.postalCode="2.5.4.17";oids.serialNumber="2.5.4.5";oids.street="2.5.4.9";oids.x500UniqueIdentifier="2.5.4.45";oids.role="2.5.4.72";oids.telephoneNumber="2.5.4.20";oids.description="2.5.4.13";oids.dc="0.9.2342.19200300.100.1.25";oids.uid="0.9.2342.19200300.100.1.1";oids.mail="0.9.2342.19200300.100.1.3";oids.title="2.5.4.12";oids.gn="2.5.4.42";oids.initials="2.5.4.43";oids.pseudonym="2.5.4.65";oids.emailAddress="1.2.840.113549.1.9.1";var unoids={};Object.keys(oids).forEach(function(k){unoids[oids[k]]=k});function Identity(opts){var self=this;assert.object(opts,"options");assert.arrayOfObject(opts.components,"options.components");this.components=opts.components;this.componentLookup={};this.components.forEach(function(c){if(c.name&&!c.oid)c.oid=oids[c.name];if(c.oid&&!c.name)c.name=unoids[c.oid];if(self.componentLookup[c.name]===undefined)self.componentLookup[c.name]=[];self.componentLookup[c.name].push(c)});if(this.componentLookup.cn&&this.componentLookup.cn.length>0){this.cn=this.componentLookup.cn[0].value}assert.optionalString(opts.type,"options.type");if(opts.type===undefined){if(this.components.length===1&&this.componentLookup.cn&&this.componentLookup.cn.length===1&&this.componentLookup.cn[0].value.match(DNS_NAME_RE)){this.type="host";this.hostname=this.componentLookup.cn[0].value}else if(this.componentLookup.dc&&this.components.length===this.componentLookup.dc.length){this.type="host";this.hostname=this.componentLookup.dc.map(function(c){return c.value}).join(".")}else if(this.componentLookup.uid&&this.components.length===this.componentLookup.uid.length){this.type="user";this.uid=this.componentLookup.uid[0].value}else if(this.componentLookup.cn&&this.componentLookup.cn.length===1&&this.componentLookup.cn[0].value.match(DNS_NAME_RE)){this.type="host";this.hostname=this.componentLookup.cn[0].value}else if(this.componentLookup.uid&&this.componentLookup.uid.length===1){this.type="user";this.uid=this.componentLookup.uid[0].value}else if(this.componentLookup.mail&&this.componentLookup.mail.length===1){this.type="email";this.email=this.componentLookup.mail[0].value}else if(this.componentLookup.cn&&this.componentLookup.cn.length===1){this.type="user";this.uid=this.componentLookup.cn[0].value}else{this.type="unknown"}}else{this.type=opts.type;if(this.type==="host")this.hostname=opts.hostname;else if(this.type==="user")this.uid=opts.uid;else if(this.type==="email")this.email=opts.email;else throw new Error("Unknown type "+this.type)}}Identity.prototype.toString=function(){return this.components.map(function(c){var n=c.name.toUpperCase();n=n.replace(/=/g,"\\=");var v=c.value;v=v.replace(/,/g,"\\,");return n+"="+v}).join(", ")};Identity.prototype.get=function(name,asArray){assert.string(name,"name");var arr=this.componentLookup[name];if(arr===undefined||arr.length===0)return undefined;if(!asArray&&arr.length>1)throw new Error("Multiple values for attribute "+name);if(!asArray)return arr[0].value;return arr.map(function(c){return c.value})};Identity.prototype.toArray=function(idx){return this.components.map(function(c){return{name:c.name,value:c.value}})};var NOT_PRINTABLE=/[^a-zA-Z0-9 '(),+.\/:=?-]/;var NOT_IA5=/[^\x00-\x7f]/;Identity.prototype.toAsn1=function(der,tag){der.startSequence(tag);this.components.forEach(function(c){der.startSequence(asn1.Ber.Constructor|asn1.Ber.Set);der.startSequence();der.writeOID(c.oid);if(c.asn1type===asn1.Ber.Utf8String||c.value.match(NOT_IA5)){var v=Buffer.from(c.value,"utf8");der.writeBuffer(v,asn1.Ber.Utf8String)}else if(c.asn1type===asn1.Ber.IA5String||c.value.match(NOT_PRINTABLE)){der.writeString(c.value,asn1.Ber.IA5String)}else{var type=asn1.Ber.PrintableString;if(c.asn1type!==undefined)type=c.asn1type;der.writeString(c.value,type)}der.endSequence();der.endSequence()});der.endSequence()};function globMatch(a,b){if(a==="**"||b==="**")return true;var aParts=a.split(".");var bParts=b.split(".");if(aParts.length!==bParts.length)return false;for(var i=0;i<aParts.length;++i){if(aParts[i]==="*"||bParts[i]==="*")continue;if(aParts[i]!==bParts[i])return false}return true}Identity.prototype.equals=function(other){if(!Identity.isIdentity(other,[1,0]))return false;if(other.components.length!==this.components.length)return false;for(var i=0;i<this.components.length;++i){if(this.components[i].oid!==other.components[i].oid)return false;if(!globMatch(this.components[i].value,other.components[i].value)){return false}}return true};Identity.forHost=function(hostname){assert.string(hostname,"hostname");return new Identity({type:"host",hostname:hostname,components:[{name:"cn",value:hostname}]})};Identity.forUser=function(uid){assert.string(uid,"uid");return new Identity({type:"user",uid:uid,components:[{name:"uid",value:uid}]})};Identity.forEmail=function(email){assert.string(email,"email");return new Identity({type:"email",email:email,components:[{name:"mail",value:email}]})};Identity.parseDN=function(dn){assert.string(dn,"dn");var parts=[""];var idx=0;var rem=dn;while(rem.length>0){var m;if((m=/^,/.exec(rem))!==null){parts[++idx]="";rem=rem.slice(m[0].length)}else if((m=/^\\,/.exec(rem))!==null){parts[idx]+=",";rem=rem.slice(m[0].length)}else if((m=/^\\./.exec(rem))!==null){parts[idx]+=m[0];rem=rem.slice(m[0].length)}else if((m=/^[^\\,]+/.exec(rem))!==null){parts[idx]+=m[0];rem=rem.slice(m[0].length)}else{throw new Error("Failed to parse DN")}}var cmps=parts.map(function(c){c=c.trim();var eqPos=c.indexOf("=");while(eqPos>0&&c.charAt(eqPos-1)==="\\")eqPos=c.indexOf("=",eqPos+1);if(eqPos===-1){throw new Error("Failed to parse DN")}var name=c.slice(0,eqPos).toLowerCase().replace(/\\=/g,"=");var value=c.slice(eqPos+1);return{name:name,value:value}});return new Identity({components:cmps})};Identity.fromArray=function(components){assert.arrayOfObject(components,"components");components.forEach(function(cmp){assert.object(cmp,"component");assert.string(cmp.name,"component.name");if(!Buffer.isBuffer(cmp.value)&&!(typeof cmp.value==="string")){throw new Error("Invalid component value")}});return new Identity({components:components})};Identity.parseAsn1=function(der,top){var components=[];der.readSequence(top);var end=der.offset+der.length;while(der.offset<end){der.readSequence(asn1.Ber.Constructor|asn1.Ber.Set);var after=der.offset+der.length;der.readSequence();var oid=der.readOID();var type=der.peek();var value;switch(type){case asn1.Ber.PrintableString:case asn1.Ber.IA5String:case asn1.Ber.OctetString:case asn1.Ber.T61String:value=der.readString(type);break;case asn1.Ber.Utf8String:value=der.readString(type,true);value=value.toString("utf8");break;case asn1.Ber.CharacterString:case asn1.Ber.BMPString:value=der.readString(type,true);value=value.toString("utf16le");break;default:throw new Error("Unknown asn1 type "+type)}components.push({oid:oid,asn1type:type,value:value});der._offset=after}der._offset=end;return new Identity({components:components})};Identity.isIdentity=function(obj,ver){return utils.isCompatible(obj,Identity,ver)};Identity.prototype._sshpkApiVersion=[1,0];Identity._oldVersionDetect=function(obj){return[1,0]}},{"./algs":471,"./errors":475,"./fingerprint":476,"./signature":493,"./utils":495,asn1:386,"assert-plus":387,crypto:81,"safer-buffer":470,util:243}],490:[function(require,module,exports){var Key=require("./key")
|
|
55
|
+
;var Fingerprint=require("./fingerprint");var Signature=require("./signature");var PrivateKey=require("./private-key");var Certificate=require("./certificate");var Identity=require("./identity");var errs=require("./errors");module.exports={Key:Key,parseKey:Key.parse,Fingerprint:Fingerprint,parseFingerprint:Fingerprint.parse,Signature:Signature,parseSignature:Signature.parse,PrivateKey:PrivateKey,parsePrivateKey:PrivateKey.parse,generatePrivateKey:PrivateKey.generate,Certificate:Certificate,parseCertificate:Certificate.parse,createSelfSignedCertificate:Certificate.createSelfSigned,createCertificate:Certificate.create,Identity:Identity,identityFromDN:Identity.parseDN,identityForHost:Identity.forHost,identityForUser:Identity.forUser,identityForEmail:Identity.forEmail,identityFromArray:Identity.fromArray,FingerprintFormatError:errs.FingerprintFormatError,InvalidAlgorithmError:errs.InvalidAlgorithmError,KeyParseError:errs.KeyParseError,SignatureParseError:errs.SignatureParseError,KeyEncryptedError:errs.KeyEncryptedError,CertificateParseError:errs.CertificateParseError}},{"./certificate":472,"./errors":475,"./fingerprint":476,"./identity":489,"./key":491,"./private-key":492,"./signature":493}],491:[function(require,module,exports){(function(Buffer){(function(){module.exports=Key;var assert=require("assert-plus");var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var DiffieHellman=require("./dhe").DiffieHellman;var errs=require("./errors");var utils=require("./utils");var PrivateKey=require("./private-key");var edCompat;try{edCompat=require("./ed-compat")}catch(e){}var InvalidAlgorithmError=errs.InvalidAlgorithmError;var KeyParseError=errs.KeyParseError;var formats={};formats["auto"]=require("./formats/auto");formats["pem"]=require("./formats/pem");formats["pkcs1"]=require("./formats/pkcs1");formats["pkcs8"]=require("./formats/pkcs8");formats["rfc4253"]=require("./formats/rfc4253");formats["ssh"]=require("./formats/ssh");formats["ssh-private"]=require("./formats/ssh-private");formats["openssh"]=formats["ssh-private"];formats["dnssec"]=require("./formats/dnssec");formats["putty"]=require("./formats/putty");formats["ppk"]=formats["putty"];function Key(opts){assert.object(opts,"options");assert.arrayOfObject(opts.parts,"options.parts");assert.string(opts.type,"options.type");assert.optionalString(opts.comment,"options.comment");var algInfo=algs.info[opts.type];if(typeof algInfo!=="object")throw new InvalidAlgorithmError(opts.type);var partLookup={};for(var i=0;i<opts.parts.length;++i){var part=opts.parts[i];partLookup[part.name]=part}this.type=opts.type;this.parts=opts.parts;this.part=partLookup;this.comment=undefined;this.source=opts.source;this._rfc4253Cache=opts._rfc4253Cache;this._hashCache={};var sz;this.curve=undefined;if(this.type==="ecdsa"){var curve=this.part.curve.data.toString();this.curve=curve;sz=algs.curves[curve].size}else if(this.type==="ed25519"||this.type==="curve25519"){sz=256;this.curve="curve25519"}else{var szPart=this.part[algInfo.sizePart];sz=szPart.data.length;sz=sz*8-utils.countZeros(szPart.data)}this.size=sz}Key.formats=formats;Key.prototype.toBuffer=function(format,options){if(format===undefined)format="ssh";assert.string(format,"format");assert.object(formats[format],"formats[format]");assert.optionalObject(options,"options");if(format==="rfc4253"){if(this._rfc4253Cache===undefined)this._rfc4253Cache=formats["rfc4253"].write(this);return this._rfc4253Cache}return formats[format].write(this,options)};Key.prototype.toString=function(format,options){return this.toBuffer(format,options).toString()};Key.prototype.hash=function(algo,type){assert.string(algo,"algorithm");assert.optionalString(type,"type");if(type===undefined)type="ssh";algo=algo.toLowerCase();if(algs.hashAlgs[algo]===undefined)throw new InvalidAlgorithmError(algo);var cacheKey=algo+"||"+type;if(this._hashCache[cacheKey])return this._hashCache[cacheKey];var buf;if(type==="ssh"){buf=this.toBuffer("rfc4253")}else if(type==="spki"){buf=formats.pkcs8.pkcs8ToBuffer(this)}else{throw new Error("Hash type "+type+" not supported")}var hash=crypto.createHash(algo).update(buf).digest();this._hashCache[cacheKey]=hash;return hash};Key.prototype.fingerprint=function(algo,type){if(algo===undefined)algo="sha256";if(type===undefined)type="ssh";assert.string(algo,"algorithm");assert.string(type,"type");var opts={type:"key",hash:this.hash(algo,type),algorithm:algo,hashType:type};return new Fingerprint(opts)};Key.prototype.defaultHashAlgorithm=function(){var hashAlgo="sha1";if(this.type==="rsa")hashAlgo="sha256";if(this.type==="dsa"&&this.size>1024)hashAlgo="sha256";if(this.type==="ed25519")hashAlgo="sha512";if(this.type==="ecdsa"){if(this.size<=256)hashAlgo="sha256";else if(this.size<=384)hashAlgo="sha384";else hashAlgo="sha512"}return hashAlgo};Key.prototype.createVerify=function(hashAlgo){if(hashAlgo===undefined)hashAlgo=this.defaultHashAlgorithm();assert.string(hashAlgo,"hash algorithm");if(this.type==="ed25519"&&edCompat!==undefined)return new edCompat.Verifier(this,hashAlgo);if(this.type==="curve25519")throw new Error("Curve25519 keys are not suitable for "+"signing or verification");var v,nm,err;try{nm=hashAlgo.toUpperCase();v=crypto.createVerify(nm)}catch(e){err=e}if(v===undefined||err instanceof Error&&err.message.match(/Unknown message digest/)){nm="RSA-";nm+=hashAlgo.toUpperCase();v=crypto.createVerify(nm)}assert.ok(v,"failed to create verifier");var oldVerify=v.verify.bind(v);var key=this.toBuffer("pkcs8");var curve=this.curve;var self=this;v.verify=function(signature,fmt){if(Signature.isSignature(signature,[2,0])){if(signature.type!==self.type)return false;if(signature.hashAlgorithm&&signature.hashAlgorithm!==hashAlgo)return false;if(signature.curve&&self.type==="ecdsa"&&signature.curve!==curve)return false;return oldVerify(key,signature.toBuffer("asn1"))}else if(typeof signature==="string"||Buffer.isBuffer(signature)){return oldVerify(key,signature,fmt)}else if(Signature.isSignature(signature,[1,0])){throw new Error("signature was created by too old "+"a version of sshpk and cannot be verified")}else{throw new TypeError("signature must be a string, "+"Buffer, or Signature object")}};return v};Key.prototype.createDiffieHellman=function(){if(this.type==="rsa")throw new Error("RSA keys do not support Diffie-Hellman");return new DiffieHellman(this)};Key.prototype.createDH=Key.prototype.createDiffieHellman;Key.parse=function(data,format,options){if(typeof data!=="string")assert.buffer(data,"data");if(format===undefined)format="auto";assert.string(format,"format");if(typeof options==="string")options={filename:options};assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalString(options.filename,"options.filename");if(options.filename===undefined)options.filename="(unnamed)";assert.object(formats[format],"formats[format]");try{var k=formats[format].read(data,options);if(k instanceof PrivateKey)k=k.toPublic();if(!k.comment)k.comment=options.filename;return k}catch(e){if(e.name==="KeyEncryptedError")throw e;throw new KeyParseError(options.filename,format,e)}};Key.isKey=function(obj,ver){return utils.isCompatible(obj,Key,ver)};Key.prototype._sshpkApiVersion=[1,7];Key._oldVersionDetect=function(obj){assert.func(obj.toBuffer);assert.func(obj.fingerprint);if(obj.createDH)return[1,4];if(obj.defaultHashAlgorithm)return[1,3];if(obj.formats["auto"])return[1,2];if(obj.formats["pkcs1"])return[1,1];return[1,0]}}).call(this)}).call(this,{isBuffer:require("../../../browser-agent/node_modules/is-buffer/index.js")})},{"../../../browser-agent/node_modules/is-buffer/index.js":146,"./algs":471,"./dhe":473,"./ed-compat":474,"./errors":475,"./fingerprint":476,"./formats/auto":477,"./formats/dnssec":478,"./formats/pem":480,"./formats/pkcs1":481,"./formats/pkcs8":482,"./formats/putty":483,"./formats/rfc4253":484,"./formats/ssh":486,"./formats/ssh-private":485,"./private-key":492,"./signature":493,"./utils":495,"assert-plus":387,crypto:81}],492:[function(require,module,exports){module.exports=PrivateKey;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var Fingerprint=require("./fingerprint");var Signature=require("./signature");var errs=require("./errors");var util=require("util");var utils=require("./utils");var dhe=require("./dhe");var generateECDSA=dhe.generateECDSA;var generateED25519=dhe.generateED25519;var edCompat=require("./ed-compat");var nacl=require("tweetnacl");var Key=require("./key");var InvalidAlgorithmError=errs.InvalidAlgorithmError;var KeyParseError=errs.KeyParseError;var KeyEncryptedError=errs.KeyEncryptedError;var formats={};formats["auto"]=require("./formats/auto");formats["pem"]=require("./formats/pem");formats["pkcs1"]=require("./formats/pkcs1");formats["pkcs8"]=require("./formats/pkcs8");formats["rfc4253"]=require("./formats/rfc4253");formats["ssh-private"]=require("./formats/ssh-private");formats["openssh"]=formats["ssh-private"];formats["ssh"]=formats["ssh-private"];formats["dnssec"]=require("./formats/dnssec");formats["putty"]=require("./formats/putty");function PrivateKey(opts){assert.object(opts,"options");Key.call(this,opts);this._pubCache=undefined}util.inherits(PrivateKey,Key);PrivateKey.formats=formats;PrivateKey.prototype.toBuffer=function(format,options){if(format===undefined)format="pkcs1";assert.string(format,"format");assert.object(formats[format],"formats[format]");assert.optionalObject(options,"options");return formats[format].write(this,options)};PrivateKey.prototype.hash=function(algo,type){return this.toPublic().hash(algo,type)};PrivateKey.prototype.fingerprint=function(algo,type){return this.toPublic().fingerprint(algo,type)};PrivateKey.prototype.toPublic=function(){if(this._pubCache)return this._pubCache;var algInfo=algs.info[this.type];var pubParts=[];for(var i=0;i<algInfo.parts.length;++i){var p=algInfo.parts[i];pubParts.push(this.part[p])}this._pubCache=new Key({type:this.type,source:this,parts:pubParts});if(this.comment)this._pubCache.comment=this.comment;return this._pubCache};PrivateKey.prototype.derive=function(newType){assert.string(newType,"type");var priv,pub,pair;if(this.type==="ed25519"&&newType==="curve25519"){priv=this.part.k.data;if(priv[0]===0)priv=priv.slice(1);pair=nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));pub=Buffer.from(pair.publicKey);return new PrivateKey({type:"curve25519",parts:[{name:"A",data:utils.mpNormalize(pub)},{name:"k",data:utils.mpNormalize(priv)}]})}else if(this.type==="curve25519"&&newType==="ed25519"){priv=this.part.k.data;if(priv[0]===0)priv=priv.slice(1);pair=nacl.sign.keyPair.fromSeed(new Uint8Array(priv));pub=Buffer.from(pair.publicKey);return new PrivateKey({type:"ed25519",parts:[{name:"A",data:utils.mpNormalize(pub)},{name:"k",data:utils.mpNormalize(priv)}]})}throw new Error("Key derivation not supported from "+this.type+" to "+newType)};PrivateKey.prototype.createVerify=function(hashAlgo){return this.toPublic().createVerify(hashAlgo)};PrivateKey.prototype.createSign=function(hashAlgo){if(hashAlgo===undefined)hashAlgo=this.defaultHashAlgorithm();assert.string(hashAlgo,"hash algorithm");if(this.type==="ed25519"&&edCompat!==undefined)return new edCompat.Signer(this,hashAlgo);if(this.type==="curve25519")throw new Error("Curve25519 keys are not suitable for "+"signing or verification");var v,nm,err;try{nm=hashAlgo.toUpperCase();v=crypto.createSign(nm)}catch(e){err=e}if(v===undefined||err instanceof Error&&err.message.match(/Unknown message digest/)){nm="RSA-";nm+=hashAlgo.toUpperCase();v=crypto.createSign(nm)}assert.ok(v,"failed to create verifier");var oldSign=v.sign.bind(v);var key=this.toBuffer("pkcs1");var type=this.type;var curve=this.curve;v.sign=function(){var sig=oldSign(key);if(typeof sig==="string")sig=Buffer.from(sig,"binary");sig=Signature.parse(sig,type,"asn1");sig.hashAlgorithm=hashAlgo;sig.curve=curve;return sig};return v};PrivateKey.parse=function(data,format,options){if(typeof data!=="string")assert.buffer(data,"data");if(format===undefined)format="auto";assert.string(format,"format");if(typeof options==="string")options={filename:options};assert.optionalObject(options,"options");if(options===undefined)options={};assert.optionalString(options.filename,"options.filename");if(options.filename===undefined)options.filename="(unnamed)";assert.object(formats[format],"formats[format]");try{var k=formats[format].read(data,options);assert.ok(k instanceof PrivateKey,"key is not a private key");if(!k.comment)k.comment=options.filename;return k}catch(e){if(e.name==="KeyEncryptedError")throw e;throw new KeyParseError(options.filename,format,e)}};PrivateKey.isPrivateKey=function(obj,ver){return utils.isCompatible(obj,PrivateKey,ver)};PrivateKey.generate=function(type,options){if(options===undefined)options={};assert.object(options,"options");switch(type){case"ecdsa":if(options.curve===undefined)options.curve="nistp256";assert.string(options.curve,"options.curve");return generateECDSA(options.curve);case"ed25519":return generateED25519();default:throw new Error("Key generation not supported with key "+'type "'+type+'"')}};PrivateKey.prototype._sshpkApiVersion=[1,6];PrivateKey._oldVersionDetect=function(obj){assert.func(obj.toPublic);assert.func(obj.createSign);if(obj.derive)return[1,3];if(obj.defaultHashAlgorithm)return[1,2];if(obj.formats["auto"])return[1,1];return[1,0]}},{"./algs":471,"./dhe":473,"./ed-compat":474,"./errors":475,"./fingerprint":476,"./formats/auto":477,"./formats/dnssec":478,"./formats/pem":480,"./formats/pkcs1":481,"./formats/pkcs8":482,"./formats/putty":483,"./formats/rfc4253":484,"./formats/ssh-private":485,"./key":491,"./signature":493,"./utils":495,"assert-plus":387,crypto:81,"safer-buffer":470,tweetnacl:504,util:243}],493:[function(require,module,exports){module.exports=Signature;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var algs=require("./algs");var crypto=require("crypto");var errs=require("./errors");var utils=require("./utils");var asn1=require("asn1");var SSHBuffer=require("./ssh-buffer");var InvalidAlgorithmError=errs.InvalidAlgorithmError;var SignatureParseError=errs.SignatureParseError;function Signature(opts){assert.object(opts,"options");assert.arrayOfObject(opts.parts,"options.parts");assert.string(opts.type,"options.type");var partLookup={};for(var i=0;i<opts.parts.length;++i){var part=opts.parts[i];partLookup[part.name]=part}this.type=opts.type;this.hashAlgorithm=opts.hashAlgo;this.curve=opts.curve;this.parts=opts.parts;this.part=partLookup}Signature.prototype.toBuffer=function(format){if(format===undefined)format="asn1";assert.string(format,"format");var buf;var stype="ssh-"+this.type;switch(this.type){case"rsa":switch(this.hashAlgorithm){case"sha256":stype="rsa-sha2-256";break;case"sha512":stype="rsa-sha2-512";break;case"sha1":case undefined:break;default:throw new Error("SSH signature "+"format does not support hash "+"algorithm "+this.hashAlgorithm)}if(format==="ssh"){buf=new SSHBuffer({});buf.writeString(stype);buf.writePart(this.part.sig);return buf.toBuffer()}else{return this.part.sig.data}break;case"ed25519":if(format==="ssh"){buf=new SSHBuffer({});buf.writeString(stype);buf.writePart(this.part.sig);return buf.toBuffer()}else{return this.part.sig.data}break;case"dsa":case"ecdsa":var r,s;if(format==="asn1"){var der=new asn1.BerWriter;der.startSequence();r=utils.mpNormalize(this.part.r.data);s=utils.mpNormalize(this.part.s.data);der.writeBuffer(r,asn1.Ber.Integer);der.writeBuffer(s,asn1.Ber.Integer);der.endSequence();return der.buffer}else if(format==="ssh"&&this.type==="dsa"){buf=new SSHBuffer({});buf.writeString("ssh-dss");r=this.part.r.data;if(r.length>20&&r[0]===0)r=r.slice(1);s=this.part.s.data;if(s.length>20&&s[0]===0)s=s.slice(1);if(this.hashAlgorithm&&this.hashAlgorithm!=="sha1"||r.length+s.length!==40){throw new Error("OpenSSH only supports "+"DSA signatures with SHA1 hash")}buf.writeBuffer(Buffer.concat([r,s]));return buf.toBuffer()}else if(format==="ssh"&&this.type==="ecdsa"){var inner=new SSHBuffer({});r=this.part.r.data;inner.writeBuffer(r);inner.writePart(this.part.s);buf=new SSHBuffer({});var curve;if(r[0]===0)r=r.slice(1);var sz=r.length*8;if(sz===256)curve="nistp256";else if(sz===384)curve="nistp384";else if(sz===528)curve="nistp521";buf.writeString("ecdsa-sha2-"+curve);buf.writeBuffer(inner.toBuffer());return buf.toBuffer()}throw new Error("Invalid signature format");default:throw new Error("Invalid signature data")}};Signature.prototype.toString=function(format){assert.optionalString(format,"format");return this.toBuffer(format).toString("base64")};Signature.parse=function(data,type,format){if(typeof data==="string")data=Buffer.from(data,"base64");assert.buffer(data,"data");assert.string(format,"format");assert.string(type,"type");var opts={};opts.type=type.toLowerCase();opts.parts=[];try{assert.ok(data.length>0,"signature must not be empty");switch(opts.type){case"rsa":return parseOneNum(data,type,format,opts);case"ed25519":return parseOneNum(data,type,format,opts);case"dsa":case"ecdsa":if(format==="asn1")return parseDSAasn1(data,type,format,opts);else if(opts.type==="dsa")return parseDSA(data,type,format,opts);else return parseECDSA(data,type,format,opts);default:throw new InvalidAlgorithmError(type)}}catch(e){if(e instanceof InvalidAlgorithmError)throw e;throw new SignatureParseError(type,format,e)}};function parseOneNum(data,type,format,opts){if(format==="ssh"){try{var buf=new SSHBuffer({buffer:data});var head=buf.readString()}catch(e){}if(buf!==undefined){var msg="SSH signature does not match expected "+"type (expected "+type+", got "+head+")";switch(head){case"ssh-rsa":assert.strictEqual(type,"rsa",msg);opts.hashAlgo="sha1";break;case"rsa-sha2-256":assert.strictEqual(type,"rsa",msg);opts.hashAlgo="sha256";break;case"rsa-sha2-512":assert.strictEqual(type,"rsa",msg);opts.hashAlgo="sha512";break;case"ssh-ed25519":assert.strictEqual(type,"ed25519",msg);opts.hashAlgo="sha512";break;default:throw new Error("Unknown SSH signature "+"type: "+head)}var sig=buf.readPart();assert.ok(buf.atEnd(),"extra trailing bytes");sig.name="sig";opts.parts.push(sig);return new Signature(opts)}}opts.parts.push({name:"sig",data:data});return new Signature(opts)}function parseDSAasn1(data,type,format,opts){var der=new asn1.BerReader(data);der.readSequence();var r=der.readString(asn1.Ber.Integer,true);var s=der.readString(asn1.Ber.Integer,true);opts.parts.push({name:"r",data:utils.mpNormalize(r)});opts.parts.push({name:"s",data:utils.mpNormalize(s)});return new Signature(opts)}function parseDSA(data,type,format,opts){if(data.length!=40){var buf=new SSHBuffer({buffer:data});var d=buf.readBuffer();if(d.toString("ascii")==="ssh-dss")d=buf.readBuffer();assert.ok(buf.atEnd(),"extra trailing bytes");assert.strictEqual(d.length,40,"invalid inner length");data=d}opts.parts.push({name:"r",data:data.slice(0,20)});opts.parts.push({name:"s",data:data.slice(20,40)});return new Signature(opts)}function parseECDSA(data,type,format,opts){var buf=new SSHBuffer({buffer:data});var r,s;var inner=buf.readBuffer();var stype=inner.toString("ascii");if(stype.slice(0,6)==="ecdsa-"){var parts=stype.split("-");assert.strictEqual(parts[0],"ecdsa");assert.strictEqual(parts[1],"sha2");opts.curve=parts[2];switch(opts.curve){case"nistp256":opts.hashAlgo="sha256";break;case"nistp384":opts.hashAlgo="sha384";break;case"nistp521":opts.hashAlgo="sha512";break;default:throw new Error("Unsupported ECDSA curve: "+opts.curve)}inner=buf.readBuffer();assert.ok(buf.atEnd(),"extra trailing bytes on outer");buf=new SSHBuffer({buffer:inner});r=buf.readPart()}else{r={data:inner}}s=buf.readPart();assert.ok(buf.atEnd(),"extra trailing bytes");r.name="r";s.name="s";opts.parts.push(r);opts.parts.push(s);return new Signature(opts)}Signature.isSignature=function(obj,ver){return utils.isCompatible(obj,Signature,ver)};Signature.prototype._sshpkApiVersion=[2,1];Signature._oldVersionDetect=function(obj){assert.func(obj.toBuffer);if(obj.hasOwnProperty("hashAlgorithm"))return[2,0];return[1,0]}},{"./algs":471,"./errors":475,"./ssh-buffer":494,"./utils":495,asn1:386,"assert-plus":387,crypto:81,"safer-buffer":470}],494:[function(require,module,exports){module.exports=SSHBuffer;var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;function SSHBuffer(opts){assert.object(opts,"options");if(opts.buffer!==undefined)assert.buffer(opts.buffer,"options.buffer");this._size=opts.buffer?opts.buffer.length:1024;this._buffer=opts.buffer||Buffer.alloc(this._size);this._offset=0}SSHBuffer.prototype.toBuffer=function(){return this._buffer.slice(0,this._offset)};SSHBuffer.prototype.atEnd=function(){return this._offset>=this._buffer.length};SSHBuffer.prototype.remainder=function(){return this._buffer.slice(this._offset)};SSHBuffer.prototype.skip=function(n){this._offset+=n};SSHBuffer.prototype.expand=function(){this._size*=2;var buf=Buffer.alloc(this._size);this._buffer.copy(buf,0);this._buffer=buf};SSHBuffer.prototype.readPart=function(){return{data:this.readBuffer()}};SSHBuffer.prototype.readBuffer=function(){var len=this._buffer.readUInt32BE(this._offset);this._offset+=4;assert.ok(this._offset+len<=this._buffer.length,"length out of bounds at +0x"+this._offset.toString(16)+" (data truncated?)");var buf=this._buffer.slice(this._offset,this._offset+len);this._offset+=len;return buf};SSHBuffer.prototype.readString=function(){return this.readBuffer().toString()};SSHBuffer.prototype.readCString=function(){var offset=this._offset;while(offset<this._buffer.length&&this._buffer[offset]!==0)offset++;assert.ok(offset<this._buffer.length,"c string does not terminate");var str=this._buffer.slice(this._offset,offset).toString();this._offset=offset+1;return str};SSHBuffer.prototype.readInt=function(){var v=this._buffer.readUInt32BE(this._offset);this._offset+=4;return v};SSHBuffer.prototype.readInt64=function(){assert.ok(this._offset+8<this._buffer.length,"buffer not long enough to read Int64");var v=this._buffer.slice(this._offset,this._offset+8);this._offset+=8;return v};SSHBuffer.prototype.readChar=function(){var v=this._buffer[this._offset++];return v};SSHBuffer.prototype.writeBuffer=function(buf){while(this._offset+4+buf.length>this._size)this.expand();this._buffer.writeUInt32BE(buf.length,this._offset);this._offset+=4;buf.copy(this._buffer,this._offset);this._offset+=buf.length};SSHBuffer.prototype.writeString=function(str){this.writeBuffer(Buffer.from(str,"utf8"))};SSHBuffer.prototype.writeCString=function(str){while(this._offset+1+str.length>this._size)this.expand();this._buffer.write(str,this._offset);this._offset+=str.length;this._buffer[this._offset++]=0};SSHBuffer.prototype.writeInt=function(v){while(this._offset+4>this._size)this.expand();this._buffer.writeUInt32BE(v,this._offset);this._offset+=4};SSHBuffer.prototype.writeInt64=function(v){assert.buffer(v,"value");if(v.length>8){var lead=v.slice(0,v.length-8);for(var i=0;i<lead.length;++i){assert.strictEqual(lead[i],0,"must fit in 64 bits of precision")}v=v.slice(v.length-8,v.length)}while(this._offset+8>this._size)this.expand();v.copy(this._buffer,this._offset);this._offset+=8};SSHBuffer.prototype.writeChar=function(v){while(this._offset+1>this._size)this.expand();this._buffer[this._offset++]=v};SSHBuffer.prototype.writePart=function(p){this.writeBuffer(p.data)};SSHBuffer.prototype.write=function(buf){while(this._offset+buf.length>this._size)this.expand();buf.copy(this._buffer,this._offset);this._offset+=buf.length}},{"assert-plus":387,"safer-buffer":470}],495:[function(require,module,exports){module.exports={bufferSplit:bufferSplit,addRSAMissing:addRSAMissing,calculateDSAPublic:calculateDSAPublic,calculateED25519Public:calculateED25519Public,calculateX25519Public:calculateX25519Public,mpNormalize:mpNormalize,mpDenormalize:mpDenormalize,ecNormalize:ecNormalize,countZeros:countZeros,assertCompatible:assertCompatible,isCompatible:isCompatible,opensslKeyDeriv:opensslKeyDeriv,opensshCipherInfo:opensshCipherInfo,publicFromPrivateECDSA:publicFromPrivateECDSA,zeroPadToLength:zeroPadToLength,writeBitString:writeBitString,readBitString:readBitString,pbkdf2:pbkdf2};var assert=require("assert-plus");var Buffer=require("safer-buffer").Buffer;var PrivateKey=require("./private-key");var Key=require("./key");var crypto=require("crypto");var algs=require("./algs");var asn1=require("asn1");var ec=require("ecc-jsbn/lib/ec");var jsbn=require("jsbn").BigInteger;var nacl=require("tweetnacl");var MAX_CLASS_DEPTH=3;function isCompatible(obj,klass,needVer){if(obj===null||typeof obj!=="object")return false;if(needVer===undefined)needVer=klass.prototype._sshpkApiVersion;if(obj instanceof klass&&klass.prototype._sshpkApiVersion[0]==needVer[0])return true;var proto=Object.getPrototypeOf(obj);var depth=0;while(proto.constructor.name!==klass.name){proto=Object.getPrototypeOf(proto);if(!proto||++depth>MAX_CLASS_DEPTH)return false}if(proto.constructor.name!==klass.name)return false;var ver=proto._sshpkApiVersion;if(ver===undefined)ver=klass._oldVersionDetect(obj);if(ver[0]!=needVer[0]||ver[1]<needVer[1])return false;return true}function assertCompatible(obj,klass,needVer,name){if(name===undefined)name="object";assert.ok(obj,name+" must not be null");assert.object(obj,name+" must be an object");if(needVer===undefined)needVer=klass.prototype._sshpkApiVersion;if(obj instanceof klass&&klass.prototype._sshpkApiVersion[0]==needVer[0])return;var proto=Object.getPrototypeOf(obj);var depth=0;while(proto.constructor.name!==klass.name){proto=Object.getPrototypeOf(proto);assert.ok(proto&&++depth<=MAX_CLASS_DEPTH,name+" must be a "+klass.name+" instance")}assert.strictEqual(proto.constructor.name,klass.name,name+" must be a "+klass.name+" instance");var ver=proto._sshpkApiVersion;if(ver===undefined)ver=klass._oldVersionDetect(obj);assert.ok(ver[0]==needVer[0]&&ver[1]>=needVer[1],name+" must be compatible with "+klass.name+" klass "+"version "+needVer[0]+"."+needVer[1])}var CIPHER_LEN={"des-ede3-cbc":{key:24,iv:8},"aes-128-cbc":{key:16,iv:16},"aes-256-cbc":{key:32,iv:16}};var PKCS5_SALT_LEN=8;function opensslKeyDeriv(cipher,salt,passphrase,count){assert.buffer(salt,"salt");assert.buffer(passphrase,"passphrase");assert.number(count,"iteration count");var clen=CIPHER_LEN[cipher];assert.object(clen,"supported cipher");salt=salt.slice(0,PKCS5_SALT_LEN);var D,D_prev,bufs;var material=Buffer.alloc(0);while(material.length<clen.key+clen.iv){bufs=[];if(D_prev)bufs.push(D_prev);bufs.push(passphrase);bufs.push(salt);D=Buffer.concat(bufs);for(var j=0;j<count;++j)D=crypto.createHash("md5").update(D).digest();material=Buffer.concat([material,D]);D_prev=D}return{key:material.slice(0,clen.key),iv:material.slice(clen.key,clen.key+clen.iv)}}function pbkdf2(hashAlg,salt,iterations,size,passphrase){var hkey=Buffer.alloc(salt.length+4);salt.copy(hkey);var gen=0,ts=[];var i=1;while(gen<size){var t=T(i++);gen+=t.length;ts.push(t)}return Buffer.concat(ts).slice(0,size);function T(I){hkey.writeUInt32BE(I,hkey.length-4);var hmac=crypto.createHmac(hashAlg,passphrase);hmac.update(hkey);var Ti=hmac.digest();var Uc=Ti;var c=1;while(c++<iterations){hmac=crypto.createHmac(hashAlg,passphrase);hmac.update(Uc);Uc=hmac.digest();for(var x=0;x<Ti.length;++x)Ti[x]^=Uc[x]}return Ti}}function countZeros(buf){var o=0,obit=8;while(o<buf.length){var mask=1<<obit;if((buf[o]&mask)===mask)break;obit--;if(obit<0){o++;obit=8}}return o*8+(8-obit)-1}function bufferSplit(buf,chr){assert.buffer(buf);assert.string(chr);var parts=[];var lastPart=0;var matches=0;for(var i=0;i<buf.length;++i){if(buf[i]===chr.charCodeAt(matches))++matches;else if(buf[i]===chr.charCodeAt(0))matches=1;else matches=0;if(matches>=chr.length){var newPart=i+1;parts.push(buf.slice(lastPart,newPart-matches));lastPart=newPart;matches=0}}if(lastPart<=buf.length)parts.push(buf.slice(lastPart,buf.length));return parts}function ecNormalize(buf,addZero){assert.buffer(buf);if(buf[0]===0&&buf[1]===4){if(addZero)return buf;return buf.slice(1)}else if(buf[0]===4){if(!addZero)return buf}else{while(buf[0]===0)buf=buf.slice(1);if(buf[0]===2||buf[0]===3)throw new Error("Compressed elliptic curve points "+"are not supported");if(buf[0]!==4)throw new Error("Not a valid elliptic curve point");if(!addZero)return buf}var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);return b}function readBitString(der,tag){if(tag===undefined)tag=asn1.Ber.BitString;var buf=der.readString(tag,true);assert.strictEqual(buf[0],0,"bit strings with unused bits are "+"not supported (0x"+buf[0].toString(16)+")");return buf.slice(1)}function writeBitString(der,buf,tag){if(tag===undefined)tag=asn1.Ber.BitString;var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);der.writeBuffer(b,tag)}function mpNormalize(buf){assert.buffer(buf);while(buf.length>1&&buf[0]===0&&(buf[1]&128)===0)buf=buf.slice(1);if((buf[0]&128)===128){var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);buf=b}return buf}function mpDenormalize(buf){assert.buffer(buf);while(buf.length>1&&buf[0]===0)buf=buf.slice(1);return buf}function zeroPadToLength(buf,len){assert.buffer(buf);assert.number(len);while(buf.length>len){assert.equal(buf[0],0);buf=buf.slice(1)}while(buf.length<len){var b=Buffer.alloc(buf.length+1);b[0]=0;buf.copy(b,1);buf=b}return buf}function bigintToMpBuf(bigint){var buf=Buffer.from(bigint.toByteArray());buf=mpNormalize(buf);return buf}function calculateDSAPublic(g,p,x){assert.buffer(g);assert.buffer(p);assert.buffer(x);g=new jsbn(g);p=new jsbn(p);x=new jsbn(x);var y=g.modPow(x,p);var ybuf=bigintToMpBuf(y);return ybuf}function calculateED25519Public(k){assert.buffer(k);var kp=nacl.sign.keyPair.fromSeed(new Uint8Array(k));return Buffer.from(kp.publicKey)}function calculateX25519Public(k){assert.buffer(k);var kp=nacl.box.keyPair.fromSeed(new Uint8Array(k));return Buffer.from(kp.publicKey)}function addRSAMissing(key){assert.object(key);assertCompatible(key,PrivateKey,[1,1]);var d=new jsbn(key.part.d.data);var buf;if(!key.part.dmodp){var p=new jsbn(key.part.p.data);var dmodp=d.mod(p.subtract(1));buf=bigintToMpBuf(dmodp);key.part.dmodp={name:"dmodp",data:buf};key.parts.push(key.part.dmodp)}if(!key.part.dmodq){var q=new jsbn(key.part.q.data);var dmodq=d.mod(q.subtract(1));buf=bigintToMpBuf(dmodq);key.part.dmodq={name:"dmodq",data:buf};key.parts.push(key.part.dmodq)}}function publicFromPrivateECDSA(curveName,priv){assert.string(curveName,"curveName");assert.buffer(priv);var params=algs.curves[curveName];var p=new jsbn(params.p);var a=new jsbn(params.a);var b=new jsbn(params.b);var curve=new ec.ECCurveFp(p,a,b);var G=curve.decodePointHex(params.G.toString("hex"));var d=new jsbn(mpNormalize(priv));var pub=G.multiply(d);pub=Buffer.from(curve.encodePointHex(pub),"hex");var parts=[];parts.push({name:"curve",data:Buffer.from(curveName)});parts.push({name:"Q",data:pub});var key=new Key({type:"ecdsa",curve:curve,parts:parts});return key}function opensshCipherInfo(cipher){var inf={};switch(cipher){case"3des-cbc":inf.keySize=24;inf.blockSize=8;inf.opensslName="des-ede3-cbc";break;case"blowfish-cbc":inf.keySize=16;inf.blockSize=8;inf.opensslName="bf-cbc";break;case"aes128-cbc":case"aes128-ctr":case"aes128-gcm@openssh.com":inf.keySize=16;inf.blockSize=16;inf.opensslName="aes-128-"+cipher.slice(7,10);break;case"aes192-cbc":case"aes192-ctr":case"aes192-gcm@openssh.com":inf.keySize=24;inf.blockSize=16;inf.opensslName="aes-192-"+cipher.slice(7,10);break;case"aes256-cbc":case"aes256-ctr":case"aes256-gcm@openssh.com":inf.keySize=32;inf.blockSize=16;inf.opensslName="aes-256-"+cipher.slice(7,10);break;default:throw new Error('Unsupported openssl cipher "'+cipher+'"')}return inf}},{"./algs":471,"./key":491,"./private-key":492,asn1:386,"assert-plus":387,crypto:81,"ecc-jsbn/lib/ec":397,jsbn:433,"safer-buffer":470,tweetnacl:504}],496:[function(require,module,exports){"use strict";var net=require("net");var urlParse=require("url").parse;var util=require("util")
|
|
56
|
+
;var pubsuffix=require("./pubsuffix-psl");var Store=require("./store").Store;var MemoryCookieStore=require("./memstore").MemoryCookieStore;var pathMatch=require("./pathMatch").pathMatch;var VERSION=require("./version");var punycode;try{punycode=require("punycode")}catch(e){console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization")}var COOKIE_OCTETS=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;var CONTROL_CHARS=/[\x00-\x1F]/;var TERMINATORS=["\n","\r","\0"];var PATH_VALUE=/[\x20-\x3A\x3C-\x7E]+/;var DATE_DELIM=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;var MONTH_TO_NUM={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};var NUM_TO_MONTH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var NUM_TO_DAY=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var MAX_TIME=2147483647e3;var MIN_TIME=0;function parseDigits(token,minDigits,maxDigits,trailingOK){var count=0;while(count<token.length){var c=token.charCodeAt(count);if(c<=47||c>=58){break}count++}if(count<minDigits||count>maxDigits){return null}if(!trailingOK&&count!=token.length){return null}return parseInt(token.substr(0,count),10)}function parseTime(token){var parts=token.split(":");var result=[0,0,0];if(parts.length!==3){return null}for(var i=0;i<3;i++){var trailingOK=i==2;var num=parseDigits(parts[i],1,2,trailingOK);if(num===null){return null}result[i]=num}return result}function parseMonth(token){token=String(token).substr(0,3).toLowerCase();var num=MONTH_TO_NUM[token];return num>=0?num:null}function parseDate(str){if(!str){return}var tokens=str.split(DATE_DELIM);if(!tokens){return}var hour=null;var minute=null;var second=null;var dayOfMonth=null;var month=null;var year=null;for(var i=0;i<tokens.length;i++){var token=tokens[i].trim();if(!token.length){continue}var result;if(second===null){result=parseTime(token);if(result){hour=result[0];minute=result[1];second=result[2];continue}}if(dayOfMonth===null){result=parseDigits(token,1,2,true);if(result!==null){dayOfMonth=result;continue}}if(month===null){result=parseMonth(token);if(result!==null){month=result;continue}}if(year===null){result=parseDigits(token,2,4,true);if(result!==null){year=result;if(year>=70&&year<=99){year+=1900}else if(year>=0&&year<=69){year+=2e3}}}}if(dayOfMonth===null||month===null||year===null||second===null||dayOfMonth<1||dayOfMonth>31||year<1601||hour>23||minute>59||second>59){return}return new Date(Date.UTC(year,month,dayOfMonth,hour,minute,second))}function formatDate(date){var d=date.getUTCDate();d=d>=10?d:"0"+d;var h=date.getUTCHours();h=h>=10?h:"0"+h;var m=date.getUTCMinutes();m=m>=10?m:"0"+m;var s=date.getUTCSeconds();s=s>=10?s:"0"+s;return NUM_TO_DAY[date.getUTCDay()]+", "+d+" "+NUM_TO_MONTH[date.getUTCMonth()]+" "+date.getUTCFullYear()+" "+h+":"+m+":"+s+" GMT"}function canonicalDomain(str){if(str==null){return null}str=str.trim().replace(/^\./,"");if(punycode&&/[^\u0001-\u007f]/.test(str)){str=punycode.toASCII(str)}return str.toLowerCase()}function domainMatch(str,domStr,canonicalize){if(str==null||domStr==null){return null}if(canonicalize!==false){str=canonicalDomain(str);domStr=canonicalDomain(domStr)}if(str==domStr){return true}if(net.isIP(str)){return false}var idx=str.indexOf(domStr);if(idx<=0){return false}if(str.length!==domStr.length+idx){return false}if(str.substr(idx-1,1)!=="."){return false}return true}function defaultPath(path){if(!path||path.substr(0,1)!=="/"){return"/"}if(path==="/"){return path}var rightSlash=path.lastIndexOf("/");if(rightSlash===0){return"/"}return path.slice(0,rightSlash)}function trimTerminator(str){for(var t=0;t<TERMINATORS.length;t++){var terminatorIdx=str.indexOf(TERMINATORS[t]);if(terminatorIdx!==-1){str=str.substr(0,terminatorIdx)}}return str}function parseCookiePair(cookiePair,looseMode){cookiePair=trimTerminator(cookiePair);var firstEq=cookiePair.indexOf("=");if(looseMode){if(firstEq===0){cookiePair=cookiePair.substr(1);firstEq=cookiePair.indexOf("=")}}else{if(firstEq<=0){return}}var cookieName,cookieValue;if(firstEq<=0){cookieName="";cookieValue=cookiePair.trim()}else{cookieName=cookiePair.substr(0,firstEq).trim();cookieValue=cookiePair.substr(firstEq+1).trim()}if(CONTROL_CHARS.test(cookieName)||CONTROL_CHARS.test(cookieValue)){return}var c=new Cookie;c.key=cookieName;c.value=cookieValue;return c}function parse(str,options){if(!options||typeof options!=="object"){options={}}str=str.trim();var firstSemi=str.indexOf(";");var cookiePair=firstSemi===-1?str:str.substr(0,firstSemi);var c=parseCookiePair(cookiePair,!!options.loose);if(!c){return}if(firstSemi===-1){return c}var unparsed=str.slice(firstSemi+1).trim();if(unparsed.length===0){return c}var cookie_avs=unparsed.split(";");while(cookie_avs.length){var av=cookie_avs.shift().trim();if(av.length===0){continue}var av_sep=av.indexOf("=");var av_key,av_value;if(av_sep===-1){av_key=av;av_value=null}else{av_key=av.substr(0,av_sep);av_value=av.substr(av_sep+1)}av_key=av_key.trim().toLowerCase();if(av_value){av_value=av_value.trim()}switch(av_key){case"expires":if(av_value){var exp=parseDate(av_value);if(exp){c.expires=exp}}break;case"max-age":if(av_value){if(/^-?[0-9]+$/.test(av_value)){var delta=parseInt(av_value,10);c.setMaxAge(delta)}}break;case"domain":if(av_value){var domain=av_value.trim().replace(/^\./,"");if(domain){c.domain=domain.toLowerCase()}}break;case"path":c.path=av_value&&av_value[0]==="/"?av_value:null;break;case"secure":c.secure=true;break;case"httponly":c.httpOnly=true;break;default:c.extensions=c.extensions||[];c.extensions.push(av);break}}return c}function jsonParse(str){var obj;try{obj=JSON.parse(str)}catch(e){return e}return obj}function fromJSON(str){if(!str){return null}var obj;if(typeof str==="string"){obj=jsonParse(str);if(obj instanceof Error){return null}}else{obj=str}var c=new Cookie;for(var i=0;i<Cookie.serializableProperties.length;i++){var prop=Cookie.serializableProperties[i];if(obj[prop]===undefined||obj[prop]===Cookie.prototype[prop]){continue}if(prop==="expires"||prop==="creation"||prop==="lastAccessed"){if(obj[prop]===null){c[prop]=null}else{c[prop]=obj[prop]=="Infinity"?"Infinity":new Date(obj[prop])}}else{c[prop]=obj[prop]}}return c}function cookieCompare(a,b){var cmp=0;var aPathLen=a.path?a.path.length:0;var bPathLen=b.path?b.path.length:0;cmp=bPathLen-aPathLen;if(cmp!==0){return cmp}var aTime=a.creation?a.creation.getTime():MAX_TIME;var bTime=b.creation?b.creation.getTime():MAX_TIME;cmp=aTime-bTime;if(cmp!==0){return cmp}cmp=a.creationIndex-b.creationIndex;return cmp}function permutePath(path){if(path==="/"){return["/"]}if(path.lastIndexOf("/")===path.length-1){path=path.substr(0,path.length-1)}var permutations=[path];while(path.length>1){var lindex=path.lastIndexOf("/");if(lindex===0){break}path=path.substr(0,lindex);permutations.push(path)}permutations.push("/");return permutations}function getCookieContext(url){if(url instanceof Object){return url}try{url=decodeURI(url)}catch(err){}return urlParse(url)}function Cookie(options){options=options||{};Object.keys(options).forEach(function(prop){if(Cookie.prototype.hasOwnProperty(prop)&&Cookie.prototype[prop]!==options[prop]&&prop.substr(0,1)!=="_"){this[prop]=options[prop]}},this);this.creation=this.creation||new Date;Object.defineProperty(this,"creationIndex",{configurable:false,enumerable:false,writable:true,value:++Cookie.cookiesCreated})}Cookie.cookiesCreated=0;Cookie.parse=parse;Cookie.fromJSON=fromJSON;Cookie.prototype.key="";Cookie.prototype.value="";Cookie.prototype.expires="Infinity";Cookie.prototype.maxAge=null;Cookie.prototype.domain=null;Cookie.prototype.path=null;Cookie.prototype.secure=false;Cookie.prototype.httpOnly=false;Cookie.prototype.extensions=null;Cookie.prototype.hostOnly=null;Cookie.prototype.pathIsDefault=null;Cookie.prototype.creation=null;Cookie.prototype.lastAccessed=null;Object.defineProperty(Cookie.prototype,"creationIndex",{configurable:true,enumerable:false,writable:true,value:0});Cookie.serializableProperties=Object.keys(Cookie.prototype).filter(function(prop){return!(Cookie.prototype[prop]instanceof Function||prop==="creationIndex"||prop.substr(0,1)==="_")});Cookie.prototype.inspect=function inspect(){var now=Date.now();return'Cookie="'+this.toString()+"; hostOnly="+(this.hostOnly!=null?this.hostOnly:"?")+"; aAge="+(this.lastAccessed?now-this.lastAccessed.getTime()+"ms":"?")+"; cAge="+(this.creation?now-this.creation.getTime()+"ms":"?")+'"'};if(util.inspect.custom){Cookie.prototype[util.inspect.custom]=Cookie.prototype.inspect}Cookie.prototype.toJSON=function(){var obj={};var props=Cookie.serializableProperties;for(var i=0;i<props.length;i++){var prop=props[i];if(this[prop]===Cookie.prototype[prop]){continue}if(prop==="expires"||prop==="creation"||prop==="lastAccessed"){if(this[prop]===null){obj[prop]=null}else{obj[prop]=this[prop]=="Infinity"?"Infinity":this[prop].toISOString()}}else if(prop==="maxAge"){if(this[prop]!==null){obj[prop]=this[prop]==Infinity||this[prop]==-Infinity?this[prop].toString():this[prop]}}else{if(this[prop]!==Cookie.prototype[prop]){obj[prop]=this[prop]}}}return obj};Cookie.prototype.clone=function(){return fromJSON(this.toJSON())};Cookie.prototype.validate=function validate(){if(!COOKIE_OCTETS.test(this.value)){return false}if(this.expires!=Infinity&&!(this.expires instanceof Date)&&!parseDate(this.expires)){return false}if(this.maxAge!=null&&this.maxAge<=0){return false}if(this.path!=null&&!PATH_VALUE.test(this.path)){return false}var cdomain=this.cdomain();if(cdomain){if(cdomain.match(/\.$/)){return false}var suffix=pubsuffix.getPublicSuffix(cdomain);if(suffix==null){return false}}return true};Cookie.prototype.setExpires=function setExpires(exp){if(exp instanceof Date){this.expires=exp}else{this.expires=parseDate(exp)||"Infinity"}};Cookie.prototype.setMaxAge=function setMaxAge(age){if(age===Infinity||age===-Infinity){this.maxAge=age.toString()}else{this.maxAge=age}};Cookie.prototype.cookieString=function cookieString(){var val=this.value;if(val==null){val=""}if(this.key===""){return val}return this.key+"="+val};Cookie.prototype.toString=function toString(){var str=this.cookieString();if(this.expires!=Infinity){if(this.expires instanceof Date){str+="; Expires="+formatDate(this.expires)}else{str+="; Expires="+this.expires}}if(this.maxAge!=null&&this.maxAge!=Infinity){str+="; Max-Age="+this.maxAge}if(this.domain&&!this.hostOnly){str+="; Domain="+this.domain}if(this.path){str+="; Path="+this.path}if(this.secure){str+="; Secure"}if(this.httpOnly){str+="; HttpOnly"}if(this.extensions){this.extensions.forEach(function(ext){str+="; "+ext})}return str};Cookie.prototype.TTL=function TTL(now){if(this.maxAge!=null){return this.maxAge<=0?0:this.maxAge*1e3}var expires=this.expires;if(expires!=Infinity){if(!(expires instanceof Date)){expires=parseDate(expires)||Infinity}if(expires==Infinity){return Infinity}return expires.getTime()-(now||Date.now())}return Infinity};Cookie.prototype.expiryTime=function expiryTime(now){if(this.maxAge!=null){var relativeTo=now||this.creation||new Date;var age=this.maxAge<=0?-Infinity:this.maxAge*1e3;return relativeTo.getTime()+age}if(this.expires==Infinity){return Infinity}return this.expires.getTime()};Cookie.prototype.expiryDate=function expiryDate(now){var millisec=this.expiryTime(now);if(millisec==Infinity){return new Date(MAX_TIME)}else if(millisec==-Infinity){return new Date(MIN_TIME)}else{return new Date(millisec)}};Cookie.prototype.isPersistent=function isPersistent(){return this.maxAge!=null||this.expires!=Infinity};Cookie.prototype.cdomain=Cookie.prototype.canonicalizedDomain=function canonicalizedDomain(){if(this.domain==null){return null}return canonicalDomain(this.domain)};function CookieJar(store,options){if(typeof options==="boolean"){options={rejectPublicSuffixes:options}}else if(options==null){options={}}if(options.rejectPublicSuffixes!=null){this.rejectPublicSuffixes=options.rejectPublicSuffixes}if(options.looseMode!=null){this.enableLooseMode=options.looseMode}if(!store){store=new MemoryCookieStore}this.store=store}CookieJar.prototype.store=null;CookieJar.prototype.rejectPublicSuffixes=true;CookieJar.prototype.enableLooseMode=false;var CAN_BE_SYNC=[];CAN_BE_SYNC.push("setCookie");CookieJar.prototype.setCookie=function(cookie,url,options,cb){var err;var context=getCookieContext(url);if(options instanceof Function){cb=options;options={}}var host=canonicalDomain(context.hostname);var loose=this.enableLooseMode;if(options.loose!=null){loose=options.loose}if(!(cookie instanceof Cookie)){cookie=Cookie.parse(cookie,{loose:loose})}if(!cookie){err=new Error("Cookie failed to parse");return cb(options.ignoreError?null:err)}var now=options.now||new Date;if(this.rejectPublicSuffixes&&cookie.domain){var suffix=pubsuffix.getPublicSuffix(cookie.cdomain());if(suffix==null){err=new Error("Cookie has domain set to a public suffix");return cb(options.ignoreError?null:err)}}if(cookie.domain){if(!domainMatch(host,cookie.cdomain(),false)){err=new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host);return cb(options.ignoreError?null:err)}if(cookie.hostOnly==null){cookie.hostOnly=false}}else{cookie.hostOnly=true;cookie.domain=host}if(!cookie.path||cookie.path[0]!=="/"){cookie.path=defaultPath(context.pathname);cookie.pathIsDefault=true}if(options.http===false&&cookie.httpOnly){err=new Error("Cookie is HttpOnly and this isn't an HTTP API");return cb(options.ignoreError?null:err)}var store=this.store;if(!store.updateCookie){store.updateCookie=function(oldCookie,newCookie,cb){this.putCookie(newCookie,cb)}}function withCookie(err,oldCookie){if(err){return cb(err)}var next=function(err){if(err){return cb(err)}else{cb(null,cookie)}};if(oldCookie){if(options.http===false&&oldCookie.httpOnly){err=new Error("old Cookie is HttpOnly and this isn't an HTTP API");return cb(options.ignoreError?null:err)}cookie.creation=oldCookie.creation;cookie.creationIndex=oldCookie.creationIndex;cookie.lastAccessed=now;store.updateCookie(oldCookie,cookie,next)}else{cookie.creation=cookie.lastAccessed=now;store.putCookie(cookie,next)}}store.findCookie(cookie.domain,cookie.path,cookie.key,withCookie)};CAN_BE_SYNC.push("getCookies");CookieJar.prototype.getCookies=function(url,options,cb){var context=getCookieContext(url);if(options instanceof Function){cb=options;options={}}var host=canonicalDomain(context.hostname);var path=context.pathname||"/";var secure=options.secure;if(secure==null&&context.protocol&&(context.protocol=="https:"||context.protocol=="wss:")){secure=true}var http=options.http;if(http==null){http=true}var now=options.now||Date.now();var expireCheck=options.expire!==false;var allPaths=!!options.allPaths;var store=this.store;function matchingCookie(c){if(c.hostOnly){if(c.domain!=host){return false}}else{if(!domainMatch(host,c.domain,false)){return false}}if(!allPaths&&!pathMatch(path,c.path)){return false}if(c.secure&&!secure){return false}if(c.httpOnly&&!http){return false}if(expireCheck&&c.expiryTime()<=now){store.removeCookie(c.domain,c.path,c.key,function(){});return false}return true}store.findCookies(host,allPaths?null:path,function(err,cookies){if(err){return cb(err)}cookies=cookies.filter(matchingCookie);if(options.sort!==false){cookies=cookies.sort(cookieCompare)}var now=new Date;cookies.forEach(function(c){c.lastAccessed=now});cb(null,cookies)})};CAN_BE_SYNC.push("getCookieString");CookieJar.prototype.getCookieString=function(){var args=Array.prototype.slice.call(arguments,0);var cb=args.pop();var next=function(err,cookies){if(err){cb(err)}else{cb(null,cookies.sort(cookieCompare).map(function(c){return c.cookieString()}).join("; "))}};args.push(next);this.getCookies.apply(this,args)};CAN_BE_SYNC.push("getSetCookieStrings");CookieJar.prototype.getSetCookieStrings=function(){var args=Array.prototype.slice.call(arguments,0);var cb=args.pop();var next=function(err,cookies){if(err){cb(err)}else{cb(null,cookies.map(function(c){return c.toString()}))}};args.push(next);this.getCookies.apply(this,args)};CAN_BE_SYNC.push("serialize");CookieJar.prototype.serialize=function(cb){var type=this.store.constructor.name;if(type==="Object"){type=null}var serialized={version:"tough-cookie@"+VERSION,storeType:type,rejectPublicSuffixes:!!this.rejectPublicSuffixes,cookies:[]};if(!(this.store.getAllCookies&&typeof this.store.getAllCookies==="function")){return cb(new Error("store does not support getAllCookies and cannot be serialized"))}this.store.getAllCookies(function(err,cookies){if(err){return cb(err)}serialized.cookies=cookies.map(function(cookie){cookie=cookie instanceof Cookie?cookie.toJSON():cookie;delete cookie.creationIndex;return cookie});return cb(null,serialized)})};CookieJar.prototype.toJSON=function(){return this.serializeSync()};CAN_BE_SYNC.push("_importCookies");CookieJar.prototype._importCookies=function(serialized,cb){var jar=this;var cookies=serialized.cookies;if(!cookies||!Array.isArray(cookies)){return cb(new Error("serialized jar has no cookies array"))}cookies=cookies.slice();function putNext(err){if(err){return cb(err)}if(!cookies.length){return cb(err,jar)}var cookie;try{cookie=fromJSON(cookies.shift())}catch(e){return cb(e)}if(cookie===null){return putNext(null)}jar.store.putCookie(cookie,putNext)}putNext()};CookieJar.deserialize=function(strOrObj,store,cb){if(arguments.length!==3){cb=store;store=null}var serialized;if(typeof strOrObj==="string"){serialized=jsonParse(strOrObj);if(serialized instanceof Error){return cb(serialized)}}else{serialized=strOrObj}var jar=new CookieJar(store,serialized.rejectPublicSuffixes);jar._importCookies(serialized,function(err){if(err){return cb(err)}cb(null,jar)})};CookieJar.deserializeSync=function(strOrObj,store){var serialized=typeof strOrObj==="string"?JSON.parse(strOrObj):strOrObj;var jar=new CookieJar(store,serialized.rejectPublicSuffixes);if(!jar.store.synchronous){throw new Error("CookieJar store is not synchronous; use async API instead.")}jar._importCookiesSync(serialized);return jar};CookieJar.fromJSON=CookieJar.deserializeSync;CookieJar.prototype.clone=function(newStore,cb){if(arguments.length===1){cb=newStore;newStore=null}this.serialize(function(err,serialized){if(err){return cb(err)}CookieJar.deserialize(serialized,newStore,cb)})};CAN_BE_SYNC.push("removeAllCookies");CookieJar.prototype.removeAllCookies=function(cb){var store=this.store;if(store.removeAllCookies instanceof Function&&store.removeAllCookies!==Store.prototype.removeAllCookies){return store.removeAllCookies(cb)}store.getAllCookies(function(err,cookies){if(err){return cb(err)}if(cookies.length===0){return cb(null)}var completedCount=0;var removeErrors=[];function removeCookieCb(removeErr){if(removeErr){removeErrors.push(removeErr)}completedCount++;if(completedCount===cookies.length){return cb(removeErrors.length?removeErrors[0]:null)}}cookies.forEach(function(cookie){store.removeCookie(cookie.domain,cookie.path,cookie.key,removeCookieCb)})})};CookieJar.prototype._cloneSync=syncWrap("clone");CookieJar.prototype.cloneSync=function(newStore){if(!newStore.synchronous){throw new Error("CookieJar clone destination store is not synchronous; use async API instead.")}return this._cloneSync(newStore)};function syncWrap(method){return function(){if(!this.store.synchronous){throw new Error("CookieJar store is not synchronous; use async API instead.")}var args=Array.prototype.slice.call(arguments);var syncErr,syncResult;args.push(function syncCb(err,result){syncErr=err;syncResult=result});this[method].apply(this,args);if(syncErr){throw syncErr}return syncResult}}CAN_BE_SYNC.forEach(function(method){CookieJar.prototype[method+"Sync"]=syncWrap(method)});exports.version=VERSION;exports.CookieJar=CookieJar;exports.Cookie=Cookie;exports.Store=Store;exports.MemoryCookieStore=MemoryCookieStore;exports.parseDate=parseDate;exports.formatDate=formatDate;exports.parse=parse;exports.fromJSON=fromJSON;exports.domainMatch=domainMatch;exports.defaultPath=defaultPath;exports.pathMatch=pathMatch;exports.getPublicSuffix=pubsuffix.getPublicSuffix;exports.cookieCompare=cookieCompare;exports.permuteDomain=require("./permuteDomain").permuteDomain;exports.permutePath=permutePath;exports.canonicalDomain=canonicalDomain},{"./memstore":497,"./pathMatch":498,"./permuteDomain":499,"./pubsuffix-psl":500,"./store":501,"./version":502,net:69,punycode:187,url:238,util:243}],497:[function(require,module,exports){"use strict";var Store=require("./store").Store;var permuteDomain=require("./permuteDomain").permuteDomain;var pathMatch=require("./pathMatch").pathMatch;var util=require("util");function MemoryCookieStore(){Store.call(this);this.idx={}}util.inherits(MemoryCookieStore,Store);exports.MemoryCookieStore=MemoryCookieStore;MemoryCookieStore.prototype.idx=null;MemoryCookieStore.prototype.synchronous=true;MemoryCookieStore.prototype.inspect=function(){return"{ idx: "+util.inspect(this.idx,false,2)+" }"};if(util.inspect.custom){MemoryCookieStore.prototype[util.inspect.custom]=MemoryCookieStore.prototype.inspect}MemoryCookieStore.prototype.findCookie=function(domain,path,key,cb){if(!this.idx[domain]){return cb(null,undefined)}if(!this.idx[domain][path]){return cb(null,undefined)}return cb(null,this.idx[domain][path][key]||null)};MemoryCookieStore.prototype.findCookies=function(domain,path,cb){var results=[];if(!domain){return cb(null,[])}var pathMatcher;if(!path){pathMatcher=function matchAll(domainIndex){for(var curPath in domainIndex){var pathIndex=domainIndex[curPath];for(var key in pathIndex){results.push(pathIndex[key])}}}}else{pathMatcher=function matchRFC(domainIndex){Object.keys(domainIndex).forEach(function(cookiePath){if(pathMatch(path,cookiePath)){var pathIndex=domainIndex[cookiePath];for(var key in pathIndex){results.push(pathIndex[key])}}})}}var domains=permuteDomain(domain)||[domain];var idx=this.idx;domains.forEach(function(curDomain){var domainIndex=idx[curDomain];if(!domainIndex){return}pathMatcher(domainIndex)});cb(null,results)};MemoryCookieStore.prototype.putCookie=function(cookie,cb){if(!this.idx[cookie.domain]){this.idx[cookie.domain]={}}if(!this.idx[cookie.domain][cookie.path]){this.idx[cookie.domain][cookie.path]={}}this.idx[cookie.domain][cookie.path][cookie.key]=cookie;cb(null)};MemoryCookieStore.prototype.updateCookie=function(oldCookie,newCookie,cb){this.putCookie(newCookie,cb)};MemoryCookieStore.prototype.removeCookie=function(domain,path,key,cb){if(this.idx[domain]&&this.idx[domain][path]&&this.idx[domain][path][key]){delete this.idx[domain][path][key]}cb(null)};MemoryCookieStore.prototype.removeCookies=function(domain,path,cb){if(this.idx[domain]){if(path){delete this.idx[domain][path]}else{delete this.idx[domain]}}return cb(null)};MemoryCookieStore.prototype.removeAllCookies=function(cb){this.idx={};return cb(null)};MemoryCookieStore.prototype.getAllCookies=function(cb){var cookies=[];var idx=this.idx;var domains=Object.keys(idx);domains.forEach(function(domain){var paths=Object.keys(idx[domain]);paths.forEach(function(path){var keys=Object.keys(idx[domain][path]);keys.forEach(function(key){if(key!==null){cookies.push(idx[domain][path][key])}})})});cookies.sort(function(a,b){return(a.creationIndex||0)-(b.creationIndex||0)});cb(null,cookies)}},{"./pathMatch":498,"./permuteDomain":499,"./store":501,util:243}],498:[function(require,module,exports){"use strict";function pathMatch(reqPath,cookiePath){if(cookiePath===reqPath){return true}var idx=reqPath.indexOf(cookiePath);if(idx===0){if(cookiePath.substr(-1)==="/"){return true}if(reqPath.substr(cookiePath.length,1)==="/"){return true}}return false}exports.pathMatch=pathMatch},{}],499:[function(require,module,exports){"use strict";var pubsuffix=require("./pubsuffix-psl");function permuteDomain(domain){var pubSuf=pubsuffix.getPublicSuffix(domain);if(!pubSuf){return null}if(pubSuf==domain){return[domain]}var prefix=domain.slice(0,-(pubSuf.length+1));var parts=prefix.split(".").reverse();var cur=pubSuf;var permutations=[cur];while(parts.length){cur=parts.shift()+"."+cur;permutations.push(cur)}return permutations}exports.permuteDomain=permuteDomain},{"./pubsuffix-psl":500}],500:[function(require,module,exports){"use strict";var psl=require("psl");function getPublicSuffix(domain){return psl.get(domain)}exports.getPublicSuffix=getPublicSuffix},{psl:447}],501:[function(require,module,exports){"use strict";function Store(){}exports.Store=Store;Store.prototype.synchronous=false;Store.prototype.findCookie=function(domain,path,key,cb){throw new Error("findCookie is not implemented")};Store.prototype.findCookies=function(domain,path,cb){throw new Error("findCookies is not implemented")};Store.prototype.putCookie=function(cookie,cb){throw new Error("putCookie is not implemented")};Store.prototype.updateCookie=function(oldCookie,newCookie,cb){throw new Error("updateCookie is not implemented")};Store.prototype.removeCookie=function(domain,path,key,cb){throw new Error("removeCookie is not implemented")};Store.prototype.removeCookies=function(domain,path,cb){throw new Error("removeCookies is not implemented")};Store.prototype.removeAllCookies=function(cb){throw new Error("removeAllCookies is not implemented")};Store.prototype.getAllCookies=function(cb){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}},{}],502:[function(require,module,exports){module.exports="2.5.0"},{}],503:[function(require,module,exports){(function(process){(function(){"use strict";var net=require("net"),tls=require("tls"),http=require("http"),https=require("https"),events=require("events"),assert=require("assert"),util=require("util"),Buffer=require("safe-buffer").Buffer;exports.httpOverHttp=httpOverHttp;exports.httpsOverHttp=httpsOverHttp;exports.httpOverHttps=httpOverHttps;exports.httpsOverHttps=httpsOverHttps;function httpOverHttp(options){var agent=new TunnelingAgent(options);agent.request=http.request;return agent}function httpsOverHttp(options){var agent=new TunnelingAgent(options);agent.request=http.request;agent.createSocket=createSecureSocket;agent.defaultPort=443;return agent}function httpOverHttps(options){var agent=new TunnelingAgent(options);agent.request=https.request;return agent}function httpsOverHttps(options){var agent=new TunnelingAgent(options);agent.request=https.request;agent.createSocket=createSecureSocket;agent.defaultPort=443;return agent}function TunnelingAgent(options){var self=this;self.options=options||{};self.proxyOptions=self.options.proxy||{};self.maxSockets=self.options.maxSockets||http.Agent.defaultMaxSockets;self.requests=[];self.sockets=[];self.on("free",function onFree(socket,host,port){for(var i=0,len=self.requests.length;i<len;++i){var pending=self.requests[i];if(pending.host===host&&pending.port===port){self.requests.splice(i,1);pending.request.onSocket(socket);return}}socket.destroy();self.removeSocket(socket)})}util.inherits(TunnelingAgent,events.EventEmitter);TunnelingAgent.prototype.addRequest=function addRequest(req,options){var self=this;if(typeof options==="string"){options={host:options,port:arguments[2],path:arguments[3]}}if(self.sockets.length>=this.maxSockets){self.requests.push({host:options.host,port:options.port,request:req});return}self.createConnection({host:options.host,port:options.port,request:req})};TunnelingAgent.prototype.createConnection=function createConnection(pending){var self=this;self.createSocket(pending,function(socket){socket.on("free",onFree);socket.on("close",onCloseOrRemove);socket.on("agentRemove",onCloseOrRemove);pending.request.onSocket(socket);function onFree(){self.emit("free",socket,pending.host,pending.port)}function onCloseOrRemove(err){self.removeSocket(socket);socket.removeListener("free",onFree);socket.removeListener("close",onCloseOrRemove);socket.removeListener("agentRemove",onCloseOrRemove)}})};TunnelingAgent.prototype.createSocket=function createSocket(options,cb){var self=this;var placeholder={};self.sockets.push(placeholder);var connectOptions=mergeOptions({},self.proxyOptions,{method:"CONNECT",path:options.host+":"+options.port,agent:false});if(connectOptions.proxyAuth){connectOptions.headers=connectOptions.headers||{};connectOptions.headers["Proxy-Authorization"]="Basic "+Buffer.from(connectOptions.proxyAuth).toString("base64")}debug("making CONNECT request");var connectReq=self.request(connectOptions);connectReq.useChunkedEncodingByDefault=false;connectReq.once("response",onResponse);connectReq.once("upgrade",onUpgrade);connectReq.once("connect",onConnect);connectReq.once("error",onError);connectReq.end();function onResponse(res){res.upgrade=true}function onUpgrade(res,socket,head){process.nextTick(function(){onConnect(res,socket,head)})}function onConnect(res,socket,head){connectReq.removeAllListeners();socket.removeAllListeners();if(res.statusCode===200){assert.equal(head.length,0);debug("tunneling connection has established");self.sockets[self.sockets.indexOf(placeholder)]=socket;cb(socket)}else{debug("tunneling socket could not be established, statusCode=%d",res.statusCode);var error=new Error("tunneling socket could not be established, "+"statusCode="+res.statusCode);error.code="ECONNRESET";options.request.emit("error",error);self.removeSocket(placeholder)}}function onError(cause){connectReq.removeAllListeners();debug("tunneling socket could not be established, cause=%s\n",cause.message,cause.stack);var error=new Error("tunneling socket could not be established, "+"cause="+cause.message);error.code="ECONNRESET";options.request.emit("error",error);self.removeSocket(placeholder)}};TunnelingAgent.prototype.removeSocket=function removeSocket(socket){var pos=this.sockets.indexOf(socket);if(pos===-1)return;this.sockets.splice(pos,1);var pending=this.requests.shift();if(pending){this.createConnection(pending)}};function createSecureSocket(options,cb){var self=this;TunnelingAgent.prototype.createSocket.call(self,options,function(socket){var secureSocket=tls.connect(0,mergeOptions({},self.options,{servername:options.host,socket:socket}));self.sockets[self.sockets.indexOf(socket)]=secureSocket;cb(secureSocket)})}function mergeOptions(target){for(var i=1,len=arguments.length;i<len;++i){var overrides=arguments[i];if(typeof overrides==="object"){var keys=Object.keys(overrides);for(var j=0,keyLen=keys.length;j<keyLen;++j){var k=keys[j];if(overrides[k]!==undefined){target[k]=overrides[k]}}}}return target}var debug;if(process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)){debug=function(){var args=Array.prototype.slice.call(arguments);if(typeof args[0]==="string"){args[0]="TUNNEL: "+args[0]}else{args.unshift("TUNNEL:")}console.error.apply(console,args)}}else{debug=function(){}}exports.debug=debug}).call(this)}).call(this,require("_process"))},{_process:179,assert:16,events:110,http:230,https:142,net:69,"safe-buffer":469,tls:69,util:243}],504:[function(require,module,exports){(function(nacl){"use strict";var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i<init.length;i++)r[i]=init[i];return r};var randombytes=function(){throw new Error("no PRNG")};var _0=new Uint8Array(16);var _9=new Uint8Array(32);_9[0]=9;var gf0=gf(),gf1=gf([1]),_121665=gf([56129,1]),D=gf([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),D2=gf([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),X=gf([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),Y=gf([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),I=gf([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function ts64(x,i,h,l){x[i]=h>>24&255;x[i+1]=h>>16&255;x[i+2]=h>>8&255;x[i+3]=h&255;x[i+4]=l>>24&255;x[i+5]=l>>16&255;x[i+6]=l>>8&255;x[i+7]=l&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i<n;i++)d|=x[xi+i]^y[yi+i];return(1&d-1>>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core_salsa20(o,p,k,c){
|
|
57
|
+
var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}x0=x0+j0|0;x1=x1+j1|0;x2=x2+j2|0;x3=x3+j3|0;x4=x4+j4|0;x5=x5+j5|0;x6=x6+j6|0;x7=x7+j7|0;x8=x8+j8|0;x9=x9+j9|0;x10=x10+j10|0;x11=x11+j11|0;x12=x12+j12|0;x13=x13+j13|0;x14=x14+j14|0;x15=x15+j15|0;o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x1>>>0&255;o[5]=x1>>>8&255;o[6]=x1>>>16&255;o[7]=x1>>>24&255;o[8]=x2>>>0&255;o[9]=x2>>>8&255;o[10]=x2>>>16&255;o[11]=x2>>>24&255;o[12]=x3>>>0&255;o[13]=x3>>>8&255;o[14]=x3>>>16&255;o[15]=x3>>>24&255;o[16]=x4>>>0&255;o[17]=x4>>>8&255;o[18]=x4>>>16&255;o[19]=x4>>>24&255;o[20]=x5>>>0&255;o[21]=x5>>>8&255;o[22]=x5>>>16&255;o[23]=x5>>>24&255;o[24]=x6>>>0&255;o[25]=x6>>>8&255;o[26]=x6>>>16&255;o[27]=x6>>>24&255;o[28]=x7>>>0&255;o[29]=x7>>>8&255;o[30]=x7>>>16&255;o[31]=x7>>>24&255;o[32]=x8>>>0&255;o[33]=x8>>>8&255;o[34]=x8>>>16&255;o[35]=x8>>>24&255;o[36]=x9>>>0&255;o[37]=x9>>>8&255;o[38]=x9>>>16&255;o[39]=x9>>>24&255;o[40]=x10>>>0&255;o[41]=x10>>>8&255;o[42]=x10>>>16&255;o[43]=x10>>>24&255;o[44]=x11>>>0&255;o[45]=x11>>>8&255;o[46]=x11>>>16&255;o[47]=x11>>>24&255;o[48]=x12>>>0&255;o[49]=x12>>>8&255;o[50]=x12>>>16&255;o[51]=x12>>>24&255;o[52]=x13>>>0&255;o[53]=x13>>>8&255;o[54]=x13>>>16&255;o[55]=x13>>>24&255;o[56]=x14>>>0&255;o[57]=x14>>>8&255;o[58]=x14>>>16&255;o[59]=x14>>>24&255;o[60]=x15>>>0&255;o[61]=x15>>>8&255;o[62]=x15>>>16&255;o[63]=x15>>>24&255}function core_hsalsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x5>>>0&255;o[5]=x5>>>8&255;o[6]=x5>>>16&255;o[7]=x5>>>24&255;o[8]=x10>>>0&255;o[9]=x10>>>8&255;o[10]=x10>>>16&255;o[11]=x10>>>24&255;o[12]=x15>>>0&255;o[13]=x15>>>8&255;o[14]=x15>>>16&255;o[15]=x15>>>24&255;o[16]=x6>>>0&255;o[17]=x6>>>8&255;o[18]=x6>>>16&255;o[19]=x6>>>24&255;o[20]=x7>>>0&255;o[21]=x7>>>8&255;o[22]=x7>>>16&255;o[23]=x7>>>24&255;o[24]=x8>>>0&255;o[25]=x8>>>8&255;o[26]=x8>>>16&255;o[27]=x8>>>24&255;o[28]=x9>>>0&255;o[29]=x9>>>8&255;o[30]=x9>>>16&255;o[31]=x9>>>24&255}function crypto_core_salsa20(out,inp,k,c){core_salsa20(out,inp,k,c)}function crypto_core_hsalsa20(out,inp,k,c){core_hsalsa20(out,inp,k,c)}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=m[mpos+i]^x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64;mpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<b;i++)c[cpos+i]=m[mpos+i]^x[i]}return 0}function crypto_stream_salsa20(c,cpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<b;i++)c[cpos+i]=x[i]}return 0}function crypto_stream(c,cpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);var sn=new Uint8Array(8);for(var i=0;i<8;i++)sn[i]=n[i+16];return crypto_stream_salsa20(c,cpos,d,sn,s)}function crypto_stream_xor(c,cpos,m,mpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);var sn=new Uint8Array(8);for(var i=0;i<8;i++)sn[i]=n[i+16];return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s)}var poly1305=function(key){this.buffer=new Uint8Array(16);this.r=new Uint16Array(10);this.h=new Uint16Array(10);this.pad=new Uint16Array(8);this.leftover=0;this.fin=0;var t0,t1,t2,t3,t4,t5,t6,t7;t0=key[0]&255|(key[1]&255)<<8;this.r[0]=t0&8191;t1=key[2]&255|(key[3]&255)<<8;this.r[1]=(t0>>>13|t1<<3)&8191;t2=key[4]&255|(key[5]&255)<<8;this.r[2]=(t1>>>10|t2<<6)&7939;t3=key[6]&255|(key[7]&255)<<8;this.r[3]=(t2>>>7|t3<<9)&8191;t4=key[8]&255|(key[9]&255)<<8;this.r[4]=(t3>>>4|t4<<12)&255;this.r[5]=t4>>>1&8190;t5=key[10]&255|(key[11]&255)<<8;this.r[6]=(t4>>>14|t5<<2)&8191;t6=key[12]&255|(key[13]&255)<<8;this.r[7]=(t5>>>11|t6<<5)&8065;t7=key[14]&255|(key[15]&255)<<8;this.r[8]=(t6>>>8|t7<<8)&8191;this.r[9]=t7>>>5&127;this.pad[0]=key[16]&255|(key[17]&255)<<8;this.pad[1]=key[18]&255|(key[19]&255)<<8;this.pad[2]=key[20]&255|(key[21]&255)<<8;this.pad[3]=key[22]&255|(key[23]&255)<<8;this.pad[4]=key[24]&255|(key[25]&255)<<8;this.pad[5]=key[26]&255|(key[27]&255)<<8;this.pad[6]=key[28]&255|(key[29]&255)<<8;this.pad[7]=key[30]&255|(key[31]&255)<<8};poly1305.prototype.blocks=function(m,mpos,bytes){var hibit=this.fin?0:1<<11;var t0,t1,t2,t3,t4,t5,t6,t7,c;var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;var h0=this.h[0],h1=this.h[1],h2=this.h[2],h3=this.h[3],h4=this.h[4],h5=this.h[5],h6=this.h[6],h7=this.h[7],h8=this.h[8],h9=this.h[9];var r0=this.r[0],r1=this.r[1],r2=this.r[2],r3=this.r[3],r4=this.r[4],r5=this.r[5],r6=this.r[6],r7=this.r[7],r8=this.r[8],r9=this.r[9];while(bytes>=16){t0=m[mpos+0]&255|(m[mpos+1]&255)<<8;h0+=t0&8191;t1=m[mpos+2]&255|(m[mpos+3]&255)<<8;h1+=(t0>>>13|t1<<3)&8191;t2=m[mpos+4]&255|(m[mpos+5]&255)<<8;h2+=(t1>>>10|t2<<6)&8191;t3=m[mpos+6]&255|(m[mpos+7]&255)<<8;h3+=(t2>>>7|t3<<9)&8191;t4=m[mpos+8]&255|(m[mpos+9]&255)<<8;h4+=(t3>>>4|t4<<12)&8191;h5+=t4>>>1&8191;t5=m[mpos+10]&255|(m[mpos+11]&255)<<8;h6+=(t4>>>14|t5<<2)&8191;t6=m[mpos+12]&255|(m[mpos+13]&255)<<8;h7+=(t5>>>11|t6<<5)&8191;t7=m[mpos+14]&255|(m[mpos+15]&255)<<8;h8+=(t6>>>8|t7<<8)&8191;h9+=t7>>>5|hibit;c=0;d0=c;d0+=h0*r0;d0+=h1*(5*r9);d0+=h2*(5*r8);d0+=h3*(5*r7);d0+=h4*(5*r6);c=d0>>>13;d0&=8191;d0+=h5*(5*r5);d0+=h6*(5*r4);d0+=h7*(5*r3);d0+=h8*(5*r2);d0+=h9*(5*r1);c+=d0>>>13;d0&=8191;d1=c;d1+=h0*r1;d1+=h1*r0;d1+=h2*(5*r9);d1+=h3*(5*r8);d1+=h4*(5*r7);c=d1>>>13;d1&=8191;d1+=h5*(5*r6);d1+=h6*(5*r5);d1+=h7*(5*r4);d1+=h8*(5*r3);d1+=h9*(5*r2);c+=d1>>>13;d1&=8191;d2=c;d2+=h0*r2;d2+=h1*r1;d2+=h2*r0;d2+=h3*(5*r9);d2+=h4*(5*r8);c=d2>>>13;d2&=8191;d2+=h5*(5*r7);d2+=h6*(5*r6);d2+=h7*(5*r5);d2+=h8*(5*r4);d2+=h9*(5*r3);c+=d2>>>13;d2&=8191;d3=c;d3+=h0*r3;d3+=h1*r2;d3+=h2*r1;d3+=h3*r0;d3+=h4*(5*r9);c=d3>>>13;d3&=8191;d3+=h5*(5*r8);d3+=h6*(5*r7);d3+=h7*(5*r6);d3+=h8*(5*r5);d3+=h9*(5*r4);c+=d3>>>13;d3&=8191;d4=c;d4+=h0*r4;d4+=h1*r3;d4+=h2*r2;d4+=h3*r1;d4+=h4*r0;c=d4>>>13;d4&=8191;d4+=h5*(5*r9);d4+=h6*(5*r8);d4+=h7*(5*r7);d4+=h8*(5*r6);d4+=h9*(5*r5);c+=d4>>>13;d4&=8191;d5=c;d5+=h0*r5;d5+=h1*r4;d5+=h2*r3;d5+=h3*r2;d5+=h4*r1;c=d5>>>13;d5&=8191;d5+=h5*r0;d5+=h6*(5*r9);d5+=h7*(5*r8);d5+=h8*(5*r7);d5+=h9*(5*r6);c+=d5>>>13;d5&=8191;d6=c;d6+=h0*r6;d6+=h1*r5;d6+=h2*r4;d6+=h3*r3;d6+=h4*r2;c=d6>>>13;d6&=8191;d6+=h5*r1;d6+=h6*r0;d6+=h7*(5*r9);d6+=h8*(5*r8);d6+=h9*(5*r7);c+=d6>>>13;d6&=8191;d7=c;d7+=h0*r7;d7+=h1*r6;d7+=h2*r5;d7+=h3*r4;d7+=h4*r3;c=d7>>>13;d7&=8191;d7+=h5*r2;d7+=h6*r1;d7+=h7*r0;d7+=h8*(5*r9);d7+=h9*(5*r8);c+=d7>>>13;d7&=8191;d8=c;d8+=h0*r8;d8+=h1*r7;d8+=h2*r6;d8+=h3*r5;d8+=h4*r4;c=d8>>>13;d8&=8191;d8+=h5*r3;d8+=h6*r2;d8+=h7*r1;d8+=h8*r0;d8+=h9*(5*r9);c+=d8>>>13;d8&=8191;d9=c;d9+=h0*r9;d9+=h1*r8;d9+=h2*r7;d9+=h3*r6;d9+=h4*r5;c=d9>>>13;d9&=8191;d9+=h5*r4;d9+=h6*r3;d9+=h7*r2;d9+=h8*r1;d9+=h9*r0;c+=d9>>>13;d9&=8191;c=(c<<2)+c|0;c=c+d0|0;d0=c&8191;c=c>>>13;d1+=c;h0=d0;h1=d1;h2=d2;h3=d3;h4=d4;h5=d5;h6=d6;h7=d7;h8=d8;h9=d9;mpos+=16;bytes-=16}this.h[0]=h0;this.h[1]=h1;this.h[2]=h2;this.h[3]=h3;this.h[4]=h4;this.h[5]=h5;this.h[6]=h6;this.h[7]=h7;this.h[8]=h8;this.h[9]=h9};poly1305.prototype.finish=function(mac,macpos){var g=new Uint16Array(10);var c,mask,f,i;if(this.leftover){i=this.leftover;this.buffer[i++]=1;for(;i<16;i++)this.buffer[i]=0;this.fin=1;this.blocks(this.buffer,0,16)}c=this.h[1]>>>13;this.h[1]&=8191;for(i=2;i<10;i++){this.h[i]+=c;c=this.h[i]>>>13;this.h[i]&=8191}this.h[0]+=c*5;c=this.h[0]>>>13;this.h[0]&=8191;this.h[1]+=c;c=this.h[1]>>>13;this.h[1]&=8191;this.h[2]+=c;g[0]=this.h[0]+5;c=g[0]>>>13;g[0]&=8191;for(i=1;i<10;i++){g[i]=this.h[i]+c;c=g[i]>>>13;g[i]&=8191}g[9]-=1<<13;mask=(c^1)-1;for(i=0;i<10;i++)g[i]&=mask;mask=~mask;for(i=0;i<10;i++)this.h[i]=this.h[i]&mask|g[i];this.h[0]=(this.h[0]|this.h[1]<<13)&65535;this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535;this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535;this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535;this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535;this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535;this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535;this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535;f=this.h[0]+this.pad[0];this.h[0]=f&65535;for(i=1;i<8;i++){f=(this.h[i]+this.pad[i]|0)+(f>>>16)|0;this.h[i]=f&65535}mac[macpos+0]=this.h[0]>>>0&255;mac[macpos+1]=this.h[0]>>>8&255;mac[macpos+2]=this.h[1]>>>0&255;mac[macpos+3]=this.h[1]>>>8&255;mac[macpos+4]=this.h[2]>>>0&255;mac[macpos+5]=this.h[2]>>>8&255;mac[macpos+6]=this.h[3]>>>0&255;mac[macpos+7]=this.h[3]>>>8&255;mac[macpos+8]=this.h[4]>>>0&255;mac[macpos+9]=this.h[4]>>>8&255;mac[macpos+10]=this.h[5]>>>0&255;mac[macpos+11]=this.h[5]>>>8&255;mac[macpos+12]=this.h[6]>>>0&255;mac[macpos+13]=this.h[6]>>>8&255;mac[macpos+14]=this.h[7]>>>0&255;mac[macpos+15]=this.h[7]>>>8&255};poly1305.prototype.update=function(m,mpos,bytes){var i,want;if(this.leftover){want=16-this.leftover;if(want>bytes)want=bytes;for(i=0;i<want;i++)this.buffer[this.leftover+i]=m[mpos+i];bytes-=want;mpos+=want;this.leftover+=want;if(this.leftover<16)return;this.blocks(this.buffer,0,16);this.leftover=0}if(bytes>=16){want=bytes-bytes%16;this.blocks(m,mpos,want);mpos+=want;bytes-=want}if(bytes){for(i=0;i<bytes;i++)this.buffer[this.leftover+i]=m[mpos+i];this.leftover+=bytes}};function crypto_onetimeauth(out,outpos,m,mpos,n,k){var s=new poly1305(k);s.update(m,mpos,n);s.finish(out,outpos);return 0}function crypto_onetimeauth_verify(h,hpos,m,mpos,n,k){var x=new Uint8Array(16);crypto_onetimeauth(x,0,m,mpos,n,k);return crypto_verify_16(h,hpos,x,0)}function crypto_secretbox(c,m,d,n,k){var i;if(d<32)return-1;crypto_stream_xor(c,0,m,0,d,n,k);crypto_onetimeauth(c,16,c,32,d-32,c);for(i=0;i<16;i++)c[i]=0;return 0}function crypto_secretbox_open(m,c,d,n,k){var i;var x=new Uint8Array(32);if(d<32)return-1;crypto_stream(x,0,32,n,k);if(crypto_onetimeauth_verify(c,16,c,32,d-32,x)!==0)return-1;crypto_stream_xor(m,0,c,0,d,n,k);for(i=0;i<32;i++)m[i]=0;return 0}function set25519(r,a){var i;for(i=0;i<16;i++)r[i]=a[i]|0}function car25519(o){var i,v,c=1;for(i=0;i<16;i++){v=o[i]+c+65535;c=Math.floor(v/65536);o[i]=v-c*65536}o[0]+=c-1+37*(c-1)}function sel25519(p,q,b){var t,c=~(b-1);for(var i=0;i<16;i++){t=c&(p[i]^q[i]);p[i]^=t;q[i]^=t}}function pack25519(o,n){var i,j,b;var m=gf(),t=gf();for(i=0;i<16;i++)t[i]=n[i];car25519(t);car25519(t);car25519(t);for(j=0;j<2;j++){m[0]=t[0]-65517;for(i=1;i<15;i++){m[i]=t[i]-65535-(m[i-1]>>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]+b[i]}function Z(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]-b[i]}function M(o,a,b){var v,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8],b9=b[9],b10=b[10],b11=b[11],b12=b[12],b13=b[13],b14=b[14],b15=b[15];v=a[0];t0+=v*b0;t1+=v*b1;t2+=v*b2;t3+=v*b3;t4+=v*b4;t5+=v*b5;t6+=v*b6;t7+=v*b7;t8+=v*b8;t9+=v*b9;t10+=v*b10;t11+=v*b11;t12+=v*b12;t13+=v*b13;t14+=v*b14;t15+=v*b15;v=a[1];t1+=v*b0;t2+=v*b1;t3+=v*b2;t4+=v*b3;t5+=v*b4;t6+=v*b5;t7+=v*b6;t8+=v*b7;t9+=v*b8;t10+=v*b9;t11+=v*b10;t12+=v*b11;t13+=v*b12;t14+=v*b13;t15+=v*b14;t16+=v*b15;v=a[2];t2+=v*b0;t3+=v*b1;t4+=v*b2;t5+=v*b3;t6+=v*b4;t7+=v*b5;t8+=v*b6;t9+=v*b7;t10+=v*b8;t11+=v*b9;t12+=v*b10;t13+=v*b11;t14+=v*b12;t15+=v*b13;t16+=v*b14;t17+=v*b15;v=a[3];t3+=v*b0;t4+=v*b1;t5+=v*b2;t6+=v*b3;t7+=v*b4;t8+=v*b5;t9+=v*b6;t10+=v*b7;t11+=v*b8;t12+=v*b9;t13+=v*b10;t14+=v*b11;t15+=v*b12;t16+=v*b13;t17+=v*b14;t18+=v*b15;v=a[4];t4+=v*b0;t5+=v*b1;t6+=v*b2;t7+=v*b3;t8+=v*b4;t9+=v*b5;t10+=v*b6;t11+=v*b7;t12+=v*b8;t13+=v*b9;t14+=v*b10;t15+=v*b11;t16+=v*b12;t17+=v*b13;t18+=v*b14;t19+=v*b15;v=a[5];t5+=v*b0;t6+=v*b1;t7+=v*b2;t8+=v*b3;t9+=v*b4;t10+=v*b5;t11+=v*b6;t12+=v*b7;t13+=v*b8;t14+=v*b9;t15+=v*b10;t16+=v*b11;t17+=v*b12;t18+=v*b13;t19+=v*b14;t20+=v*b15;v=a[6];t6+=v*b0;t7+=v*b1;t8+=v*b2;t9+=v*b3;t10+=v*b4;t11+=v*b5;t12+=v*b6;t13+=v*b7;t14+=v*b8;t15+=v*b9;t16+=v*b10;t17+=v*b11;t18+=v*b12;t19+=v*b13;t20+=v*b14;t21+=v*b15;v=a[7];t7+=v*b0;t8+=v*b1;t9+=v*b2;t10+=v*b3;t11+=v*b4;t12+=v*b5;t13+=v*b6;t14+=v*b7;t15+=v*b8;t16+=v*b9;t17+=v*b10;t18+=v*b11;t19+=v*b12;t20+=v*b13;t21+=v*b14;t22+=v*b15;v=a[8];t8+=v*b0;t9+=v*b1;t10+=v*b2;t11+=v*b3;t12+=v*b4;t13+=v*b5;t14+=v*b6;t15+=v*b7;t16+=v*b8;t17+=v*b9;t18+=v*b10;t19+=v*b11;t20+=v*b12;t21+=v*b13;t22+=v*b14;t23+=v*b15;v=a[9];t9+=v*b0;t10+=v*b1;t11+=v*b2;t12+=v*b3;t13+=v*b4;t14+=v*b5;t15+=v*b6;t16+=v*b7;t17+=v*b8;t18+=v*b9;t19+=v*b10;t20+=v*b11;t21+=v*b12;t22+=v*b13;t23+=v*b14;t24+=v*b15;v=a[10];t10+=v*b0;t11+=v*b1;t12+=v*b2;t13+=v*b3;t14+=v*b4;t15+=v*b5;t16+=v*b6;t17+=v*b7;t18+=v*b8;t19+=v*b9;t20+=v*b10;t21+=v*b11;t22+=v*b12;t23+=v*b13;t24+=v*b14;t25+=v*b15;v=a[11];t11+=v*b0;t12+=v*b1;t13+=v*b2;t14+=v*b3;t15+=v*b4;t16+=v*b5;t17+=v*b6;t18+=v*b7;t19+=v*b8;t20+=v*b9;t21+=v*b10;t22+=v*b11;t23+=v*b12;t24+=v*b13;t25+=v*b14;t26+=v*b15;v=a[12];t12+=v*b0;t13+=v*b1;t14+=v*b2;t15+=v*b3;t16+=v*b4;t17+=v*b5;t18+=v*b6;t19+=v*b7;t20+=v*b8;t21+=v*b9;t22+=v*b10;t23+=v*b11;t24+=v*b12;t25+=v*b13;t26+=v*b14;t27+=v*b15;v=a[13];t13+=v*b0;t14+=v*b1;t15+=v*b2;t16+=v*b3;t17+=v*b4;t18+=v*b5;t19+=v*b6;t20+=v*b7;t21+=v*b8;t22+=v*b9;t23+=v*b10;t24+=v*b11;t25+=v*b12;t26+=v*b13;t27+=v*b14;t28+=v*b15;v=a[14];t14+=v*b0;t15+=v*b1;t16+=v*b2;t17+=v*b3;t18+=v*b4;t19+=v*b5;t20+=v*b6;t21+=v*b7;t22+=v*b8;t23+=v*b9;t24+=v*b10;t25+=v*b11;t26+=v*b12;t27+=v*b13;t28+=v*b14;t29+=v*b15;v=a[15];t15+=v*b0;t16+=v*b1;t17+=v*b2;t18+=v*b3;t19+=v*b4;t20+=v*b5;t21+=v*b6;t22+=v*b7;t23+=v*b8;t24+=v*b9;t25+=v*b10;t26+=v*b11;t27+=v*b12;t28+=v*b13;t29+=v*b14;t30+=v*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z[i]=n[i];z[31]=n[31]&127|64;z[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function crypto_hashblocks_hl(hh,hl,m,n){var wh=new Int32Array(16),wl=new Int32Array(16),bh0,bh1,bh2,bh3,bh4,bh5,bh6,bh7,bl0,bl1,bl2,bl3,bl4,bl5,bl6,bl7,th,tl,i,j,h,l,a,b,c,d;var ah0=hh[0],ah1=hh[1],ah2=hh[2],ah3=hh[3],ah4=hh[4],ah5=hh[5],ah6=hh[6],ah7=hh[7],al0=hl[0],al1=hl[1],al2=hl[2],al3=hl[3],al4=hl[4],al5=hl[5],al6=hl[6],al7=hl[7];var pos=0;while(n>=128){for(i=0;i<16;i++){j=8*i+pos;wh[i]=m[j+0]<<24|m[j+1]<<16|m[j+2]<<8|m[j+3];wl[i]=m[j+4]<<24|m[j+5]<<16|m[j+6]<<8|m[j+7]}for(i=0;i<80;i++){bh0=ah0;bh1=ah1;bh2=ah2;bh3=ah3;bh4=ah4;bh5=ah5;bh6=ah6;bh7=ah7;bl0=al0;bl1=al1;bl2=al2;bl3=al3;bl4=al4;bl5=al5;bl6=al6;bl7=al7;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah4>>>14|al4<<32-14)^(ah4>>>18|al4<<32-18)^(al4>>>41-32|ah4<<32-(41-32));l=(al4>>>14|ah4<<32-14)^(al4>>>18|ah4<<32-18)^(ah4>>>41-32|al4<<32-(41-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah4&ah5^~ah4&ah6;l=al4&al5^~al4&al6;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=K[i*2];l=K[i*2+1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=wh[i%16];l=wl[i%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;th=c&65535|d<<16;tl=a&65535|b<<16;h=th;l=tl;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah0>>>28|al0<<32-28)^(al0>>>34-32|ah0<<32-(34-32))^(al0>>>39-32|ah0<<32-(39-32));l=(al0>>>28|ah0<<32-28)^(ah0>>>34-32|al0<<32-(34-32))^(ah0>>>39-32|al0<<32-(39-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah0&ah1^ah0&ah2^ah1&ah2;l=al0&al1^al0&al2^al1&al2;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh7=c&65535|d<<16;bl7=a&65535|b<<16;h=bh3;l=bl3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=th;l=tl;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh3=c&65535|d<<16;bl3=a&65535|b<<16;ah1=bh0;ah2=bh1;ah3=bh2;ah4=bh3;ah5=bh4;ah6=bh5;ah7=bh6;ah0=bh7;al1=bl0;al2=bl1;al3=bl2;al4=bl3;al5=bl4;al6=bl5;al7=bl6;al0=bl7;if(i%16===15){for(j=0;j<16;j++){h=wh[j];l=wl[j];a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=wh[(j+9)%16];l=wl[(j+9)%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+1)%16];tl=wl[(j+1)%16];h=(th>>>1|tl<<32-1)^(th>>>8|tl<<32-8)^th>>>7;l=(tl>>>1|th<<32-1)^(tl>>>8|th<<32-8)^(tl>>>7|th<<32-7);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+14)%16];tl=wl[(j+14)%16];h=(th>>>19|tl<<32-19)^(tl>>>61-32|th<<32-(61-32))^th>>>6;l=(tl>>>19|th<<32-19)^(th>>>61-32|tl<<32-(61-32))^(tl>>>6|th<<32-6);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;wh[j]=c&65535|d<<16;wl[j]=a&65535|b<<16}}}h=ah0;l=al0;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[0];l=hl[0];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[0]=ah0=c&65535|d<<16;hl[0]=al0=a&65535|b<<16;h=ah1;l=al1;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[1];l=hl[1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[1]=ah1=c&65535|d<<16;hl[1]=al1=a&65535|b<<16;h=ah2;l=al2;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[2];l=hl[2];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[2]=ah2=c&65535|d<<16;hl[2]=al2=a&65535|b<<16;h=ah3;l=al3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[3];l=hl[3];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[3]=ah3=c&65535|d<<16;hl[3]=al3=a&65535|b<<16;h=ah4;l=al4;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[4];l=hl[4];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[4]=ah4=c&65535|d<<16;hl[4]=al4=a&65535|b<<16;h=ah5;l=al5;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[5];l=hl[5];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[5]=ah5=c&65535|d<<16;hl[5]=al5=a&65535|b<<16;h=ah6;l=al6;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[6];l=hl[6];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[6]=ah6=c&65535|d<<16;hl[6]=al6=a&65535|b<<16;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[7];l=hl[7];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[7]=ah7=c&65535|d<<16;hl[7]=al7=a&65535|b<<16;pos+=128;n-=128}return n}function crypto_hash(out,m,n){var hh=new Int32Array(8),hl=new Int32Array(8),x=new Uint8Array(256),i,b=n;hh[0]=1779033703;hh[1]=3144134277;hh[2]=1013904242;hh[3]=2773480762;hh[4]=1359893119;hh[5]=2600822924;hh[6]=528734635;hh[7]=1541459225;hl[0]=4089235720;hl[1]=2227873595;hl[2]=4271175723;hl[3]=1595750129;hl[4]=2917565137;hl[5]=725511199;hl[6]=4215389547;hl[7]=327033209;crypto_hashblocks_hl(hh,hl,m,n);n%=128;for(i=0;i<n;i++)x[i]=m[b-n+i];x[n]=128;n=256-128*(n<112?1:0);x[n-9]=0;ts64(x,n-8,b/536870912|0,b<<3);crypto_hashblocks_hl(hh,hl,x,n);for(i=0;i<8;i++)ts64(out,8*i,hh[i],hl[i]);return 0}function add(p,q){var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf(),g=gf(),h=gf(),t=gf();Z(a,p[1],p[0]);Z(t,q[1],q[0]);M(a,a,t);A(b,p[0],p[1]);A(t,q[0],q[1]);M(b,b,t);M(c,p[3],q[3]);M(c,c,D2);M(d,p[2],q[2]);A(d,d,d);Z(e,b,a);Z(f,d,c);A(g,d,c);A(h,b,a);M(p[0],e,f);M(p[1],h,g);M(p[2],g,f);M(p[3],e,h)}function cswap(p,q,b){var i;for(i=0;i<4;i++){sel25519(p[i],q[i],b)}}function pack(r,p){var tx=gf(),ty=gf(),zi=gf();inv25519(zi,p[2]);M(tx,p[0],zi);M(ty,p[1],zi);pack25519(r,ty);r[31]^=par25519(tx)<<7}function scalarmult(p,q,s){var b,i;set25519(p[0],gf0);set25519(p[1],gf1);set25519(p[2],gf1);set25519(p[3],gf0);for(i=255;i>=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j<k;++j){x[j]+=carry-16*x[i]*L[j-(i-32)];carry=x[j]+128>>8;x[j]-=carry*256}x[j]+=carry;x[i]=0}carry=0;for(j=0;j<32;j++){x[j]+=carry-(x[31]>>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i<n;i++)sm[64+i]=m[i];for(i=0;i<32;i++)sm[32+i]=d[32+i];crypto_hash(r,sm.subarray(32),n+32);reduce(r);scalarbase(p,r);pack(sm,p);for(i=32;i<64;i++)sm[i]=sk[i];crypto_hash(h,sm,n+64);reduce(h);for(i=0;i<64;i++)x[i]=0;for(i=0;i<32;i++)x[i]=r[i];for(i=0;i<32;i++){for(j=0;j<32;j++){x[i+j]+=h[i]*d[j]}}modL(sm.subarray(32),x);return smlen}function unpackneg(r,p){var t=gf(),chk=gf(),num=gf(),den=gf(),den2=gf(),den4=gf(),den6=gf();set25519(r[2],gf1);unpack25519(r[1],p);S(num,r[1]);M(den,num,D);Z(num,num,r[2]);A(den,r[2],den);S(den2,den);S(den4,den2);M(den6,den4,den2);M(t,den6,num);M(t,t,den);pow2523(t,t);M(t,t,num);M(t,t,den);M(t,t,den);M(r[0],t,den);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))M(r[0],r[0],I);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))return-1;if(par25519(r[0])===p[31]>>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i,mlen;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];mlen=-1;if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i<n;i++)m[i]=sm[i];for(i=0;i<32;i++)m[i+32]=pk[i];crypto_hash(h,m,n);reduce(h);scalarmult(p,q,h);scalarbase(q,sm.subarray(32));add(p,q);pack(t,p);n-=64;if(crypto_verify_32(sm,0,t,0)){for(i=0;i<n;i++)m[i]=0;return-1}for(i=0;i<n;i++)m[i]=sm[i+64];mlen=n;return mlen}var crypto_secretbox_KEYBYTES=32,crypto_secretbox_NONCEBYTES=24,crypto_secretbox_ZEROBYTES=32,crypto_secretbox_BOXZEROBYTES=16,crypto_scalarmult_BYTES=32,crypto_scalarmult_SCALARBYTES=32,crypto_box_PUBLICKEYBYTES=32,crypto_box_SECRETKEYBYTES=32,crypto_box_BEFORENMBYTES=32,crypto_box_NONCEBYTES=crypto_secretbox_NONCEBYTES,crypto_box_ZEROBYTES=crypto_secretbox_ZEROBYTES,crypto_box_BOXZEROBYTES=crypto_secretbox_BOXZEROBYTES,crypto_sign_BYTES=64,crypto_sign_PUBLICKEYBYTES=32,crypto_sign_SECRETKEYBYTES=64,crypto_sign_SEEDBYTES=32,crypto_hash_BYTES=64;nacl.lowlevel={crypto_core_hsalsa20:crypto_core_hsalsa20,crypto_stream_xor:crypto_stream_xor,crypto_stream:crypto_stream,crypto_stream_salsa20_xor:crypto_stream_salsa20_xor,crypto_stream_salsa20:crypto_stream_salsa20,
|
|
58
|
+
crypto_onetimeauth:crypto_onetimeauth,crypto_onetimeauth_verify:crypto_onetimeauth_verify,crypto_verify_16:crypto_verify_16,crypto_verify_32:crypto_verify_32,crypto_secretbox:crypto_secretbox,crypto_secretbox_open:crypto_secretbox_open,crypto_scalarmult:crypto_scalarmult,crypto_scalarmult_base:crypto_scalarmult_base,crypto_box_beforenm:crypto_box_beforenm,crypto_box_afternm:crypto_box_afternm,crypto_box:crypto_box,crypto_box_open:crypto_box_open,crypto_box_keypair:crypto_box_keypair,crypto_hash:crypto_hash,crypto_sign:crypto_sign,crypto_sign_keypair:crypto_sign_keypair,crypto_sign_open:crypto_sign_open,crypto_secretbox_KEYBYTES:crypto_secretbox_KEYBYTES,crypto_secretbox_NONCEBYTES:crypto_secretbox_NONCEBYTES,crypto_secretbox_ZEROBYTES:crypto_secretbox_ZEROBYTES,crypto_secretbox_BOXZEROBYTES:crypto_secretbox_BOXZEROBYTES,crypto_scalarmult_BYTES:crypto_scalarmult_BYTES,crypto_scalarmult_SCALARBYTES:crypto_scalarmult_SCALARBYTES,crypto_box_PUBLICKEYBYTES:crypto_box_PUBLICKEYBYTES,crypto_box_SECRETKEYBYTES:crypto_box_SECRETKEYBYTES,crypto_box_BEFORENMBYTES:crypto_box_BEFORENMBYTES,crypto_box_NONCEBYTES:crypto_box_NONCEBYTES,crypto_box_ZEROBYTES:crypto_box_ZEROBYTES,crypto_box_BOXZEROBYTES:crypto_box_BOXZEROBYTES,crypto_sign_BYTES:crypto_sign_BYTES,crypto_sign_PUBLICKEYBYTES:crypto_sign_PUBLICKEYBYTES,crypto_sign_SECRETKEYBYTES:crypto_sign_SECRETKEYBYTES,crypto_sign_SEEDBYTES:crypto_sign_SEEDBYTES,crypto_hash_BYTES:crypto_hash_BYTES};function checkLengths(k,n){if(k.length!==crypto_secretbox_KEYBYTES)throw new Error("bad key size");if(n.length!==crypto_secretbox_NONCEBYTES)throw new Error("bad nonce size")}function checkBoxLengths(pk,sk){if(pk.length!==crypto_box_PUBLICKEYBYTES)throw new Error("bad public key size");if(sk.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size")}function checkArrayTypes(){var t,i;for(i=0;i<arguments.length;i++){if((t=Object.prototype.toString.call(arguments[i]))!=="[object Uint8Array]")throw new TypeError("unexpected type "+t+", use Uint8Array")}}function cleanup(arr){for(var i=0;i<arr.length;i++)arr[i]=0}if(!nacl.util){nacl.util={};nacl.util.decodeUTF8=nacl.util.encodeUTF8=nacl.util.encodeBase64=nacl.util.decodeBase64=function(){throw new Error("nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js")}}nacl.randomBytes=function(n){var b=new Uint8Array(n);randombytes(b,n);return b};nacl.secretbox=function(msg,nonce,key){checkArrayTypes(msg,nonce,key);checkLengths(key,nonce);var m=new Uint8Array(crypto_secretbox_ZEROBYTES+msg.length);var c=new Uint8Array(m.length);for(var i=0;i<msg.length;i++)m[i+crypto_secretbox_ZEROBYTES]=msg[i];crypto_secretbox(c,m,m.length,nonce,key);return c.subarray(crypto_secretbox_BOXZEROBYTES)};nacl.secretbox.open=function(box,nonce,key){checkArrayTypes(box,nonce,key);checkLengths(key,nonce);var c=new Uint8Array(crypto_secretbox_BOXZEROBYTES+box.length);var m=new Uint8Array(c.length);for(var i=0;i<box.length;i++)c[i+crypto_secretbox_BOXZEROBYTES]=box[i];if(c.length<32)return false;if(crypto_secretbox_open(m,c,c.length,nonce,key)!==0)return false;return m.subarray(crypto_secretbox_ZEROBYTES)};nacl.secretbox.keyLength=crypto_secretbox_KEYBYTES;nacl.secretbox.nonceLength=crypto_secretbox_NONCEBYTES;nacl.secretbox.overheadLength=crypto_secretbox_BOXZEROBYTES;nacl.scalarMult=function(n,p){checkArrayTypes(n,p);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");if(p.length!==crypto_scalarmult_BYTES)throw new Error("bad p size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult(q,n,p);return q};nacl.scalarMult.base=function(n){checkArrayTypes(n);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult_base(q,n);return q};nacl.scalarMult.scalarLength=crypto_scalarmult_SCALARBYTES;nacl.scalarMult.groupElementLength=crypto_scalarmult_BYTES;nacl.box=function(msg,nonce,publicKey,secretKey){var k=nacl.box.before(publicKey,secretKey);return nacl.secretbox(msg,nonce,k)};nacl.box.before=function(publicKey,secretKey){checkArrayTypes(publicKey,secretKey);checkBoxLengths(publicKey,secretKey);var k=new Uint8Array(crypto_box_BEFORENMBYTES);crypto_box_beforenm(k,publicKey,secretKey);return k};nacl.box.after=nacl.secretbox;nacl.box.open=function(msg,nonce,publicKey,secretKey){var k=nacl.box.before(publicKey,secretKey);return nacl.secretbox.open(msg,nonce,k)};nacl.box.open.after=nacl.secretbox.open;nacl.box.keyPair=function(){var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_box_SECRETKEYBYTES);crypto_box_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.box.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);crypto_scalarmult_base(pk,secretKey);return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl.box.publicKeyLength=crypto_box_PUBLICKEYBYTES;nacl.box.secretKeyLength=crypto_box_SECRETKEYBYTES;nacl.box.sharedKeyLength=crypto_box_BEFORENMBYTES;nacl.box.nonceLength=crypto_box_NONCEBYTES;nacl.box.overheadLength=nacl.secretbox.overheadLength;nacl.sign=function(msg,secretKey){checkArrayTypes(msg,secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var signedMsg=new Uint8Array(crypto_sign_BYTES+msg.length);crypto_sign(signedMsg,msg,msg.length,secretKey);return signedMsg};nacl.sign.open=function(signedMsg,publicKey){if(arguments.length!==2)throw new Error("nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?");checkArrayTypes(signedMsg,publicKey);if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var tmp=new Uint8Array(signedMsg.length);var mlen=crypto_sign_open(tmp,signedMsg,signedMsg.length,publicKey);if(mlen<0)return null;var m=new Uint8Array(mlen);for(var i=0;i<m.length;i++)m[i]=tmp[i];return m};nacl.sign.detached=function(msg,secretKey){var signedMsg=nacl.sign(msg,secretKey);var sig=new Uint8Array(crypto_sign_BYTES);for(var i=0;i<sig.length;i++)sig[i]=signedMsg[i];return sig};nacl.sign.detached.verify=function(msg,sig,publicKey){checkArrayTypes(msg,sig,publicKey);if(sig.length!==crypto_sign_BYTES)throw new Error("bad signature size");if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var sm=new Uint8Array(crypto_sign_BYTES+msg.length);var m=new Uint8Array(crypto_sign_BYTES+msg.length);var i;for(i=0;i<crypto_sign_BYTES;i++)sm[i]=sig[i];for(i=0;i<msg.length;i++)sm[i+crypto_sign_BYTES]=msg[i];return crypto_sign_open(m,sm,sm.length,publicKey)>=0};nacl.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i<pk.length;i++)pk[i]=secretKey[32+i];return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl.sign.keyPair.fromSeed=function(seed){checkArrayTypes(seed);if(seed.length!==crypto_sign_SEEDBYTES)throw new Error("bad seed size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);for(var i=0;i<32;i++)sk[i]=seed[i];crypto_sign_keypair(pk,sk,true);return{publicKey:pk,secretKey:sk}};nacl.sign.publicKeyLength=crypto_sign_PUBLICKEYBYTES;nacl.sign.secretKeyLength=crypto_sign_SECRETKEYBYTES;nacl.sign.seedLength=crypto_sign_SEEDBYTES;nacl.sign.signatureLength=crypto_sign_BYTES;nacl.hash=function(msg){checkArrayTypes(msg);var h=new Uint8Array(crypto_hash_BYTES);crypto_hash(h,msg,msg.length);return h};nacl.hash.hashLength=crypto_hash_BYTES;nacl.verify=function(x,y){checkArrayTypes(x,y);if(x.length===0||y.length===0)return false;if(x.length!==y.length)return false;return vn(x,0,y,0,x.length)===0?true:false};nacl.setPRNG=function(fn){randombytes=fn};(function(){var crypto=typeof self!=="undefined"?self.crypto||self.msCrypto:null;if(crypto&&crypto.getRandomValues){var QUOTA=65536;nacl.setPRNG(function(x,n){var i,v=new Uint8Array(n);for(i=0;i<n;i+=QUOTA){crypto.getRandomValues(v.subarray(i,i+Math.min(n-i,QUOTA)))}for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}else if(typeof require!=="undefined"){crypto=require("crypto");if(crypto&&crypto.randomBytes){nacl.setPRNG(function(x,n){var i,v=crypto.randomBytes(n);for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}}})()})(typeof module!=="undefined"&&module.exports?module.exports:self.nacl=self.nacl||{})},{crypto:23}],505:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):factory(global.URI=global.URI||{})})(this,function(exports){"use strict";function merge(){for(var _len=arguments.length,sets=Array(_len),_key=0;_key<_len;_key++){sets[_key]=arguments[_key]}if(sets.length>1){sets[0]=sets[0].slice(0,-1);var xl=sets.length-1;for(var x=1;x<xl;++x){sets[x]=sets[x].slice(1,-1)}sets[xl]=sets[xl].slice(1);return sets.join("")}else{return sets[0]}}function subexp(str){return"(?:"+str+")"}function typeOf(o){return o===undefined?"undefined":o===null?"null":Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase()}function toUpperCase(str){return str.toUpperCase()}function toArray(obj){return obj!==undefined&&obj!==null?obj instanceof Array?obj:typeof obj.length!=="number"||obj.split||obj.setInterval||obj.call?[obj]:Array.prototype.slice.call(obj):[]}function assign(target,source){var obj=target;if(source){for(var key in source){obj[key]=source[key]}}return obj}function buildExps(isIRI){var ALPHA$$="[A-Za-z]",CR$="[\\x0D]",DIGIT$$="[0-9]",DQUOTE$$="[\\x22]",HEXDIG$$=merge(DIGIT$$,"[A-Fa-f]"),LF$$="[\\x0A]",SP$$="[\\x20]",PCT_ENCODED$=subexp(subexp("%[EFef]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%[89A-Fa-f]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%"+HEXDIG$$+HEXDIG$$)),GEN_DELIMS$$="[\\:\\/\\?\\#\\[\\]\\@]",SUB_DELIMS$$="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",RESERVED$$=merge(GEN_DELIMS$$,SUB_DELIMS$$),UCSCHAR$$=isIRI?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]",IPRIVATE$$=isIRI?"[\\uE000-\\uF8FF]":"[]",UNRESERVED$$=merge(ALPHA$$,DIGIT$$,"[\\-\\.\\_\\~]",UCSCHAR$$),SCHEME$=subexp(ALPHA$$+merge(ALPHA$$,DIGIT$$,"[\\+\\-\\.]")+"*"),USERINFO$=subexp(subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\:]"))+"*"),DEC_OCTET$=subexp(subexp("25[0-5]")+"|"+subexp("2[0-4]"+DIGIT$$)+"|"+subexp("1"+DIGIT$$+DIGIT$$)+"|"+subexp("[1-9]"+DIGIT$$)+"|"+DIGIT$$),DEC_OCTET_RELAXED$=subexp(subexp("25[0-5]")+"|"+subexp("2[0-4]"+DIGIT$$)+"|"+subexp("1"+DIGIT$$+DIGIT$$)+"|"+subexp("0?[1-9]"+DIGIT$$)+"|0?0?"+DIGIT$$),IPV4ADDRESS$=subexp(DEC_OCTET_RELAXED$+"\\."+DEC_OCTET_RELAXED$+"\\."+DEC_OCTET_RELAXED$+"\\."+DEC_OCTET_RELAXED$),H16$=subexp(HEXDIG$$+"{1,4}"),LS32$=subexp(subexp(H16$+"\\:"+H16$)+"|"+IPV4ADDRESS$),IPV6ADDRESS1$=subexp(subexp(H16$+"\\:")+"{6}"+LS32$),IPV6ADDRESS2$=subexp("\\:\\:"+subexp(H16$+"\\:")+"{5}"+LS32$),IPV6ADDRESS3$=subexp(subexp(H16$)+"?\\:\\:"+subexp(H16$+"\\:")+"{4}"+LS32$),IPV6ADDRESS4$=subexp(subexp(subexp(H16$+"\\:")+"{0,1}"+H16$)+"?\\:\\:"+subexp(H16$+"\\:")+"{3}"+LS32$),IPV6ADDRESS5$=subexp(subexp(subexp(H16$+"\\:")+"{0,2}"+H16$)+"?\\:\\:"+subexp(H16$+"\\:")+"{2}"+LS32$),IPV6ADDRESS6$=subexp(subexp(subexp(H16$+"\\:")+"{0,3}"+H16$)+"?\\:\\:"+H16$+"\\:"+LS32$),IPV6ADDRESS7$=subexp(subexp(subexp(H16$+"\\:")+"{0,4}"+H16$)+"?\\:\\:"+LS32$),IPV6ADDRESS8$=subexp(subexp(subexp(H16$+"\\:")+"{0,5}"+H16$)+"?\\:\\:"+H16$),IPV6ADDRESS9$=subexp(subexp(subexp(H16$+"\\:")+"{0,6}"+H16$)+"?\\:\\:"),IPV6ADDRESS$=subexp([IPV6ADDRESS1$,IPV6ADDRESS2$,IPV6ADDRESS3$,IPV6ADDRESS4$,IPV6ADDRESS5$,IPV6ADDRESS6$,IPV6ADDRESS7$,IPV6ADDRESS8$,IPV6ADDRESS9$].join("|")),ZONEID$=subexp(subexp(UNRESERVED$$+"|"+PCT_ENCODED$)+"+"),IPV6ADDRZ$=subexp(IPV6ADDRESS$+"\\%25"+ZONEID$),IPV6ADDRZ_RELAXED$=subexp(IPV6ADDRESS$+subexp("\\%25|\\%(?!"+HEXDIG$$+"{2})")+ZONEID$),IPVFUTURE$=subexp("[vV]"+HEXDIG$$+"+\\."+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\:]")+"+"),IP_LITERAL$=subexp("\\["+subexp(IPV6ADDRZ_RELAXED$+"|"+IPV6ADDRESS$+"|"+IPVFUTURE$)+"\\]"),REG_NAME$=subexp(subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$))+"*"),HOST$=subexp(IP_LITERAL$+"|"+IPV4ADDRESS$+"(?!"+REG_NAME$+")"+"|"+REG_NAME$),PORT$=subexp(DIGIT$$+"*"),AUTHORITY$=subexp(subexp(USERINFO$+"@")+"?"+HOST$+subexp("\\:"+PORT$)+"?"),PCHAR$=subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\:\\@]")),SEGMENT$=subexp(PCHAR$+"*"),SEGMENT_NZ$=subexp(PCHAR$+"+"),SEGMENT_NZ_NC$=subexp(subexp(PCT_ENCODED$+"|"+merge(UNRESERVED$$,SUB_DELIMS$$,"[\\@]"))+"+"),PATH_ABEMPTY$=subexp(subexp("\\/"+SEGMENT$)+"*"),PATH_ABSOLUTE$=subexp("\\/"+subexp(SEGMENT_NZ$+PATH_ABEMPTY$)+"?"),PATH_NOSCHEME$=subexp(SEGMENT_NZ_NC$+PATH_ABEMPTY$),PATH_ROOTLESS$=subexp(SEGMENT_NZ$+PATH_ABEMPTY$),PATH_EMPTY$="(?!"+PCHAR$+")",PATH$=subexp(PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_NOSCHEME$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$),QUERY$=subexp(subexp(PCHAR$+"|"+merge("[\\/\\?]",IPRIVATE$$))+"*"),FRAGMENT$=subexp(subexp(PCHAR$+"|[\\/\\?]")+"*"),HIER_PART$=subexp(subexp("\\/\\/"+AUTHORITY$+PATH_ABEMPTY$)+"|"+PATH_ABSOLUTE$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$),URI$=subexp(SCHEME$+"\\:"+HIER_PART$+subexp("\\?"+QUERY$)+"?"+subexp("\\#"+FRAGMENT$)+"?"),RELATIVE_PART$=subexp(subexp("\\/\\/"+AUTHORITY$+PATH_ABEMPTY$)+"|"+PATH_ABSOLUTE$+"|"+PATH_NOSCHEME$+"|"+PATH_EMPTY$),RELATIVE$=subexp(RELATIVE_PART$+subexp("\\?"+QUERY$)+"?"+subexp("\\#"+FRAGMENT$)+"?"),URI_REFERENCE$=subexp(URI$+"|"+RELATIVE$),ABSOLUTE_URI$=subexp(SCHEME$+"\\:"+HIER_PART$+subexp("\\?"+QUERY$)+"?"),GENERIC_REF$="^("+SCHEME$+")\\:"+subexp(subexp("\\/\\/("+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?)")+"?("+PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$+")")+subexp("\\?("+QUERY$+")")+"?"+subexp("\\#("+FRAGMENT$+")")+"?$",RELATIVE_REF$="^(){0}"+subexp(subexp("\\/\\/("+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?)")+"?("+PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_NOSCHEME$+"|"+PATH_EMPTY$+")")+subexp("\\?("+QUERY$+")")+"?"+subexp("\\#("+FRAGMENT$+")")+"?$",ABSOLUTE_REF$="^("+SCHEME$+")\\:"+subexp(subexp("\\/\\/("+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?)")+"?("+PATH_ABEMPTY$+"|"+PATH_ABSOLUTE$+"|"+PATH_ROOTLESS$+"|"+PATH_EMPTY$+")")+subexp("\\?("+QUERY$+")")+"?$",SAMEDOC_REF$="^"+subexp("\\#("+FRAGMENT$+")")+"?$",AUTHORITY_REF$="^"+subexp("("+USERINFO$+")@")+"?("+HOST$+")"+subexp("\\:("+PORT$+")")+"?$";return{NOT_SCHEME:new RegExp(merge("[^]",ALPHA$$,DIGIT$$,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(merge("[^\\%\\:]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_HOST:new RegExp(merge("[^\\%\\[\\]\\:]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_PATH:new RegExp(merge("[^\\%\\/\\:\\@]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_PATH_NOSCHEME:new RegExp(merge("[^\\%\\/\\@]",UNRESERVED$$,SUB_DELIMS$$),"g"),NOT_QUERY:new RegExp(merge("[^\\%]",UNRESERVED$$,SUB_DELIMS$$,"[\\:\\@\\/\\?]",IPRIVATE$$),"g"),NOT_FRAGMENT:new RegExp(merge("[^\\%]",UNRESERVED$$,SUB_DELIMS$$,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(merge("[^]",UNRESERVED$$,SUB_DELIMS$$),"g"),UNRESERVED:new RegExp(UNRESERVED$$,"g"),OTHER_CHARS:new RegExp(merge("[^\\%]",UNRESERVED$$,RESERVED$$),"g"),PCT_ENCODED:new RegExp(PCT_ENCODED$,"g"),IPV4ADDRESS:new RegExp("^("+IPV4ADDRESS$+")$"),IPV6ADDRESS:new RegExp("^\\[?("+IPV6ADDRESS$+")"+subexp(subexp("\\%25|\\%(?!"+HEXDIG$$+"{2})")+"("+ZONEID$+")")+"?\\]?$")}}var URI_PROTOCOL=buildExps(false);var IRI_PROTOCOL=buildExps(true);var slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"])_i["return"]()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr)){return arr}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i)}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}();var toConsumableArray=function(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}else{return Array.from(arr)}};var maxInt=2147483647;var base=36;var tMin=1;var tMax=26;var skew=38;var damp=700;var initialBias=72;var initialN=128;var delimiter="-";var regexPunycode=/^xn--/;var regexNonASCII=/[^\0-\x7E]/;var regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g;var errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"};var baseMinusTMin=base-tMin;var floor=Math.floor;var stringFromCharCode=String.fromCharCode;function error$1(type){throw new RangeError(errors[type])}function map(array,fn){var result=[];var length=array.length;while(length--){result[length]=fn(array[length])}return result}function mapDomain(string,fn){var parts=string.split("@");var result="";if(parts.length>1){result=parts[0]+"@";string=parts[1]}string=string.replace(regexSeparators,".");var labels=string.split(".");var encoded=map(labels,fn).join(".");return result+encoded}function ucs2decode(string){var output=[];var counter=0;var length=string.length;while(counter<length){var value=string.charCodeAt(counter++);if(value>=55296&&value<=56319&&counter<length){var extra=string.charCodeAt(counter++);if((extra&64512)==56320){output.push(((value&1023)<<10)+(extra&1023)+65536)}else{output.push(value);counter--}}else{output.push(value)}}return output}var ucs2encode=function ucs2encode(array){return String.fromCodePoint.apply(String,toConsumableArray(array))};var basicToDigit=function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base};var digitToBasic=function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)};var adapt=function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))};var decode=function decode(input){var output=[];var inputLength=input.length;var i=0;var n=initialN;var bias=initialBias;var basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(var j=0;j<basic;++j){if(input.charCodeAt(j)>=128){error$1("not-basic")}output.push(input.charCodeAt(j))}for(var index=basic>0?basic+1:0;index<inputLength;){var oldi=i;for(var w=1,k=base;;k+=base){if(index>=inputLength){error$1("invalid-input")}var digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error$1("overflow")}i+=digit*w;var t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digit<t){break}var baseMinusT=base-t;if(w>floor(maxInt/baseMinusT)){error$1("overflow")}w*=baseMinusT}var out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error$1("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return String.fromCodePoint.apply(String,output)};var encode=function encode(input){var output=[];input=ucs2decode(input);var inputLength=input.length;var n=initialN;var delta=0;var bias=initialBias;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=input[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _currentValue2=_step.value;if(_currentValue2<128){output.push(stringFromCharCode(_currentValue2))}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}var basicLength=output.length;var handledCPCount=basicLength;if(basicLength){output.push(delimiter)}while(handledCPCount<inputLength){var m=maxInt;var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=input[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var currentValue=_step2.value;if(currentValue>=n&¤tValue<m){m=currentValue}}}catch(err){_didIteratorError2=true;_iteratorError2=err}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return()}}finally{if(_didIteratorError2){throw _iteratorError2}}}var handledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error$1("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=input[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var _currentValue=_step3.value;if(_currentValue<n&&++delta>maxInt){error$1("overflow")}if(_currentValue==n){var q=delta;for(var k=base;;k+=base){var t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q<t){break}var qMinusT=q-t;var baseMinusT=base-t;output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0)));q=floor(qMinusT/baseMinusT)}output.push(stringFromCharCode(digitToBasic(q,0)));bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength);delta=0;++handledCPCount}}}catch(err){_didIteratorError3=true;_iteratorError3=err}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return()}}finally{if(_didIteratorError3){throw _iteratorError3}}}++delta;++n}return output.join("")};var toUnicode=function toUnicode(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})};var toASCII=function toASCII(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})};var punycode={version:"2.1.0",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:toASCII,toUnicode:toUnicode};var SCHEMES={};function pctEncChar(chr){var c=chr.charCodeAt(0);var e=void 0;if(c<16)e="%0"+c.toString(16).toUpperCase();else if(c<128)e="%"+c.toString(16).toUpperCase();else if(c<2048)e="%"+(c>>6|192).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();else e="%"+(c>>12|224).toString(16).toUpperCase()+"%"+(c>>6&63|128).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();return e}function pctDecChars(str){var newStr="";var i=0;var il=str.length;while(i<il){var c=parseInt(str.substr(i+1,2),16);if(c<128){newStr+=String.fromCharCode(c);i+=3}else if(c>=194&&c<224){if(il-i>=6){var c2=parseInt(str.substr(i+4,2),16);newStr+=String.fromCharCode((c&31)<<6|c2&63)}else{newStr+=str.substr(i,6)}i+=6}else if(c>=224){if(il-i>=9){var _c=parseInt(str.substr(i+4,2),16);var c3=parseInt(str.substr(i+7,2),16);newStr+=String.fromCharCode((c&15)<<12|(_c&63)<<6|c3&63)}else{newStr+=str.substr(i,9)}i+=9}else{newStr+=str.substr(i,3);i+=3}}return newStr}function _normalizeComponentEncoding(components,protocol){function decodeUnreserved(str){var decStr=pctDecChars(str);return!decStr.match(protocol.UNRESERVED)?str:decStr}if(components.scheme)components.scheme=String(components.scheme).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME,"");if(components.userinfo!==undefined)components.userinfo=String(components.userinfo).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_USERINFO,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.host!==undefined)components.host=String(components.host).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.path!==undefined)components.path=String(components.path).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(components.scheme?protocol.NOT_PATH:protocol.NOT_PATH_NOSCHEME,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.query!==undefined)components.query=String(components.query).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_QUERY,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.fragment!==undefined)components.fragment=String(components.fragment).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_FRAGMENT,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);return components}function _stripLeadingZeros(str){return str.replace(/^0*(.*)/,"$1")||"0"}function _normalizeIPv4(host,protocol){var matches=host.match(protocol.IPV4ADDRESS)||[];var _matches=slicedToArray(matches,2),address=_matches[1];if(address){return address.split(".").map(_stripLeadingZeros).join(".")}else{return host}}function _normalizeIPv6(host,protocol){var matches=host.match(protocol.IPV6ADDRESS)||[];var _matches2=slicedToArray(matches,3),address=_matches2[1],zone=_matches2[2];if(address){var _address$toLowerCase$=address.toLowerCase().split("::").reverse(),_address$toLowerCase$2=slicedToArray(_address$toLowerCase$,2),last=_address$toLowerCase$2[0],first=_address$toLowerCase$2[1];var firstFields=first?first.split(":").map(_stripLeadingZeros):[];var lastFields=last.split(":").map(_stripLeadingZeros);var isLastFieldIPv4Address=protocol.IPV4ADDRESS.test(lastFields[lastFields.length-1]);var fieldCount=isLastFieldIPv4Address?7:8;var lastFieldsStart=lastFields.length-fieldCount;var fields=Array(fieldCount);for(var x=0;x<fieldCount;++x){fields[x]=firstFields[x]||lastFields[lastFieldsStart+x]||""}if(isLastFieldIPv4Address){fields[fieldCount-1]=_normalizeIPv4(fields[fieldCount-1],protocol)}var allZeroFields=fields.reduce(function(acc,field,index){if(!field||field==="0"){var lastLongest=acc[acc.length-1];if(lastLongest&&lastLongest.index+lastLongest.length===index){lastLongest.length++}else{acc.push({index:index,length:1})}}return acc},[]);var longestZeroFields=allZeroFields.sort(function(a,b){return b.length-a.length})[0];var newHost=void 0;if(longestZeroFields&&longestZeroFields.length>1){var newFirst=fields.slice(0,longestZeroFields.index);var newLast=fields.slice(longestZeroFields.index+longestZeroFields.length);newHost=newFirst.join(":")+"::"+newLast.join(":")}else{newHost=fields.join(":")}if(zone){newHost+="%"+zone}return newHost}else{return host}}var URI_PARSE=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;var NO_MATCH_IS_UNDEFINED="".match(/(){0}/)[1]===undefined;function parse(uriString){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var components={};var protocol=options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL;if(options.reference==="suffix")uriString=(options.scheme?options.scheme+":":"")+"//"+uriString;var matches=uriString.match(URI_PARSE);if(matches){if(NO_MATCH_IS_UNDEFINED){components.scheme=matches[1];components.userinfo=matches[3];components.host=matches[4];components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=matches[7];components.fragment=matches[8];if(isNaN(components.port)){components.port=matches[5]}}else{components.scheme=matches[1]||undefined;components.userinfo=uriString.indexOf("@")!==-1?matches[3]:undefined;components.host=uriString.indexOf("//")!==-1?matches[4]:undefined;components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=uriString.indexOf("?")!==-1?matches[7]:undefined;components.fragment=uriString.indexOf("#")!==-1?matches[8]:undefined;if(isNaN(components.port)){components.port=uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?matches[4]:undefined}}if(components.host){components.host=_normalizeIPv6(_normalizeIPv4(components.host,protocol),protocol)}if(components.scheme===undefined&&components.userinfo===undefined&&components.host===undefined&&components.port===undefined&&!components.path&&components.query===undefined){components.reference="same-document"}else if(components.scheme===undefined){components.reference="relative"}else if(components.fragment===undefined){components.reference="absolute"}else{components.reference="uri"}if(options.reference&&options.reference!=="suffix"&&options.reference!==components.reference){components.error=components.error||"URI is not a "+options.reference+" reference."}var schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];if(!options.unicodeSupport&&(!schemeHandler||!schemeHandler.unicodeSupport)){if(components.host&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)){try{components.host=punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase())}catch(e){components.error=components.error||"Host's domain name can not be converted to ASCII via punycode: "+e}}_normalizeComponentEncoding(components,URI_PROTOCOL)}else{_normalizeComponentEncoding(components,protocol)}if(schemeHandler&&schemeHandler.parse){schemeHandler.parse(components,options)}}else{components.error=components.error||"URI can not be parsed."}return components}function _recomposeAuthority(components,options){var protocol=options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL;var uriTokens=[];if(components.userinfo!==undefined){uriTokens.push(components.userinfo);uriTokens.push("@")}if(components.host!==undefined){uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host),protocol),protocol).replace(protocol.IPV6ADDRESS,function(_,$1,$2){return"["+$1+($2?"%25"+$2:"")+"]"}))}if(typeof components.port==="number"||typeof components.port==="string"){uriTokens.push(":");uriTokens.push(String(components.port))}return uriTokens.length?uriTokens.join(""):undefined}var RDS1=/^\.\.?\//;var RDS2=/^\/\.(\/|$)/;var RDS3=/^\/\.\.(\/|$)/;var RDS5=/^\/?(?:.|\n)*?(?=\/|$)/;function removeDotSegments(input){var output=[];while(input.length){if(input.match(RDS1)){input=input.replace(RDS1,"")}else if(input.match(RDS2)){input=input.replace(RDS2,"/")}else if(input.match(RDS3)){input=input.replace(RDS3,"/");output.pop()}else if(input==="."||input===".."){input=""}else{var im=input.match(RDS5);if(im){var s=im[0];input=input.slice(s.length);output.push(s)}else{throw new Error("Unexpected dot segment condition")}}}return output.join("")}function serialize(components){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var protocol=options.iri?IRI_PROTOCOL:URI_PROTOCOL;var uriTokens=[];var schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];if(schemeHandler&&schemeHandler.serialize)schemeHandler.serialize(components,options);if(components.host){if(protocol.IPV6ADDRESS.test(components.host)){}else if(options.domainHost||schemeHandler&&schemeHandler.domainHost){try{components.host=!options.iri?punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase()):punycode.toUnicode(components.host)}catch(e){components.error=components.error||"Host's domain name can not be converted to "+(!options.iri?"ASCII":"Unicode")+" via punycode: "+e}}}_normalizeComponentEncoding(components,protocol);if(options.reference!=="suffix"&&components.scheme){uriTokens.push(components.scheme);uriTokens.push(":")}var authority=_recomposeAuthority(components,options);if(authority!==undefined){if(options.reference!=="suffix"){uriTokens.push("//")}uriTokens.push(authority);if(components.path&&components.path.charAt(0)!=="/"){uriTokens.push("/")}}if(components.path!==undefined){var s=components.path;if(!options.absolutePath&&(!schemeHandler||!schemeHandler.absolutePath)){s=removeDotSegments(s)}if(authority===undefined){s=s.replace(/^\/\//,"/%2F")}uriTokens.push(s)}if(components.query!==undefined){uriTokens.push("?");uriTokens.push(components.query)}if(components.fragment!==undefined){
|
|
59
|
+
uriTokens.push("#");uriTokens.push(components.fragment)}return uriTokens.join("")}function resolveComponents(base,relative){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var skipNormalization=arguments[3];var target={};if(!skipNormalization){base=parse(serialize(base,options),options);relative=parse(serialize(relative,options),options)}options=options||{};if(!options.tolerant&&relative.scheme){target.scheme=relative.scheme;target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path||"");target.query=relative.query}else{if(relative.userinfo!==undefined||relative.host!==undefined||relative.port!==undefined){target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path||"");target.query=relative.query}else{if(!relative.path){target.path=base.path;if(relative.query!==undefined){target.query=relative.query}else{target.query=base.query}}else{if(relative.path.charAt(0)==="/"){target.path=removeDotSegments(relative.path)}else{if((base.userinfo!==undefined||base.host!==undefined||base.port!==undefined)&&!base.path){target.path="/"+relative.path}else if(!base.path){target.path=relative.path}else{target.path=base.path.slice(0,base.path.lastIndexOf("/")+1)+relative.path}target.path=removeDotSegments(target.path)}target.query=relative.query}target.userinfo=base.userinfo;target.host=base.host;target.port=base.port}target.scheme=base.scheme}target.fragment=relative.fragment;return target}function resolve(baseURI,relativeURI,options){var schemelessOptions=assign({scheme:"null"},options);return serialize(resolveComponents(parse(baseURI,schemelessOptions),parse(relativeURI,schemelessOptions),schemelessOptions,true),schemelessOptions)}function normalize(uri,options){if(typeof uri==="string"){uri=serialize(parse(uri,options),options)}else if(typeOf(uri)==="object"){uri=parse(serialize(uri,options),options)}return uri}function equal(uriA,uriB,options){if(typeof uriA==="string"){uriA=serialize(parse(uriA,options),options)}else if(typeOf(uriA)==="object"){uriA=serialize(uriA,options)}if(typeof uriB==="string"){uriB=serialize(parse(uriB,options),options)}else if(typeOf(uriB)==="object"){uriB=serialize(uriB,options)}return uriA===uriB}function escapeComponent(str,options){return str&&str.toString().replace(!options||!options.iri?URI_PROTOCOL.ESCAPE:IRI_PROTOCOL.ESCAPE,pctEncChar)}function unescapeComponent(str,options){return str&&str.toString().replace(!options||!options.iri?URI_PROTOCOL.PCT_ENCODED:IRI_PROTOCOL.PCT_ENCODED,pctDecChars)}var handler={scheme:"http",domainHost:true,parse:function parse(components,options){if(!components.host){components.error=components.error||"HTTP URIs must have a host."}return components},serialize:function serialize(components,options){var secure=String(components.scheme).toLowerCase()==="https";if(components.port===(secure?443:80)||components.port===""){components.port=undefined}if(!components.path){components.path="/"}return components}};var handler$1={scheme:"https",domainHost:handler.domainHost,parse:handler.parse,serialize:handler.serialize};function isSecure(wsComponents){return typeof wsComponents.secure==="boolean"?wsComponents.secure:String(wsComponents.scheme).toLowerCase()==="wss"}var handler$2={scheme:"ws",domainHost:true,parse:function parse(components,options){var wsComponents=components;wsComponents.secure=isSecure(wsComponents);wsComponents.resourceName=(wsComponents.path||"/")+(wsComponents.query?"?"+wsComponents.query:"");wsComponents.path=undefined;wsComponents.query=undefined;return wsComponents},serialize:function serialize(wsComponents,options){if(wsComponents.port===(isSecure(wsComponents)?443:80)||wsComponents.port===""){wsComponents.port=undefined}if(typeof wsComponents.secure==="boolean"){wsComponents.scheme=wsComponents.secure?"wss":"ws";wsComponents.secure=undefined}if(wsComponents.resourceName){var _wsComponents$resourc=wsComponents.resourceName.split("?"),_wsComponents$resourc2=slicedToArray(_wsComponents$resourc,2),path=_wsComponents$resourc2[0],query=_wsComponents$resourc2[1];wsComponents.path=path&&path!=="/"?path:undefined;wsComponents.query=query;wsComponents.resourceName=undefined}wsComponents.fragment=undefined;return wsComponents}};var handler$3={scheme:"wss",domainHost:handler$2.domainHost,parse:handler$2.parse,serialize:handler$2.serialize};var O={};var isIRI=true;var UNRESERVED$$="[A-Za-z0-9\\-\\.\\_\\~"+(isIRI?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]";var HEXDIG$$="[0-9A-Fa-f]";var PCT_ENCODED$=subexp(subexp("%[EFef]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%[89A-Fa-f]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%"+HEXDIG$$+HEXDIG$$));var ATEXT$$="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";var QTEXT$$="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";var VCHAR$$=merge(QTEXT$$,'[\\"\\\\]');var SOME_DELIMS$$="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";var UNRESERVED=new RegExp(UNRESERVED$$,"g");var PCT_ENCODED=new RegExp(PCT_ENCODED$,"g");var NOT_LOCAL_PART=new RegExp(merge("[^]",ATEXT$$,"[\\.]",'[\\"]',VCHAR$$),"g");var NOT_HFNAME=new RegExp(merge("[^]",UNRESERVED$$,SOME_DELIMS$$),"g");var NOT_HFVALUE=NOT_HFNAME;function decodeUnreserved(str){var decStr=pctDecChars(str);return!decStr.match(UNRESERVED)?str:decStr}var handler$4={scheme:"mailto",parse:function parse$$1(components,options){var mailtoComponents=components;var to=mailtoComponents.to=mailtoComponents.path?mailtoComponents.path.split(","):[];mailtoComponents.path=undefined;if(mailtoComponents.query){var unknownHeaders=false;var headers={};var hfields=mailtoComponents.query.split("&");for(var x=0,xl=hfields.length;x<xl;++x){var hfield=hfields[x].split("=");switch(hfield[0]){case"to":var toAddrs=hfield[1].split(",");for(var _x=0,_xl=toAddrs.length;_x<_xl;++_x){to.push(toAddrs[_x])}break;case"subject":mailtoComponents.subject=unescapeComponent(hfield[1],options);break;case"body":mailtoComponents.body=unescapeComponent(hfield[1],options);break;default:unknownHeaders=true;headers[unescapeComponent(hfield[0],options)]=unescapeComponent(hfield[1],options);break}}if(unknownHeaders)mailtoComponents.headers=headers}mailtoComponents.query=undefined;for(var _x2=0,_xl2=to.length;_x2<_xl2;++_x2){var addr=to[_x2].split("@");addr[0]=unescapeComponent(addr[0]);if(!options.unicodeSupport){try{addr[1]=punycode.toASCII(unescapeComponent(addr[1],options).toLowerCase())}catch(e){mailtoComponents.error=mailtoComponents.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}}else{addr[1]=unescapeComponent(addr[1],options).toLowerCase()}to[_x2]=addr.join("@")}return mailtoComponents},serialize:function serialize$$1(mailtoComponents,options){var components=mailtoComponents;var to=toArray(mailtoComponents.to);if(to){for(var x=0,xl=to.length;x<xl;++x){var toAddr=String(to[x]);var atIdx=toAddr.lastIndexOf("@");var localPart=toAddr.slice(0,atIdx).replace(PCT_ENCODED,decodeUnreserved).replace(PCT_ENCODED,toUpperCase).replace(NOT_LOCAL_PART,pctEncChar);var domain=toAddr.slice(atIdx+1);try{domain=!options.iri?punycode.toASCII(unescapeComponent(domain,options).toLowerCase()):punycode.toUnicode(domain)}catch(e){components.error=components.error||"Email address's domain name can not be converted to "+(!options.iri?"ASCII":"Unicode")+" via punycode: "+e}to[x]=localPart+"@"+domain}components.path=to.join(",")}var headers=mailtoComponents.headers=mailtoComponents.headers||{};if(mailtoComponents.subject)headers["subject"]=mailtoComponents.subject;if(mailtoComponents.body)headers["body"]=mailtoComponents.body;var fields=[];for(var name in headers){if(headers[name]!==O[name]){fields.push(name.replace(PCT_ENCODED,decodeUnreserved).replace(PCT_ENCODED,toUpperCase).replace(NOT_HFNAME,pctEncChar)+"="+headers[name].replace(PCT_ENCODED,decodeUnreserved).replace(PCT_ENCODED,toUpperCase).replace(NOT_HFVALUE,pctEncChar))}}if(fields.length){components.query=fields.join("&")}return components}};var URN_PARSE=/^([^\:]+)\:(.*)/;var handler$5={scheme:"urn",parse:function parse$$1(components,options){var matches=components.path&&components.path.match(URN_PARSE);var urnComponents=components;if(matches){var scheme=options.scheme||urnComponents.scheme||"urn";var nid=matches[1].toLowerCase();var nss=matches[2];var urnScheme=scheme+":"+(options.nid||nid);var schemeHandler=SCHEMES[urnScheme];urnComponents.nid=nid;urnComponents.nss=nss;urnComponents.path=undefined;if(schemeHandler){urnComponents=schemeHandler.parse(urnComponents,options)}}else{urnComponents.error=urnComponents.error||"URN can not be parsed."}return urnComponents},serialize:function serialize$$1(urnComponents,options){var scheme=options.scheme||urnComponents.scheme||"urn";var nid=urnComponents.nid;var urnScheme=scheme+":"+(options.nid||nid);var schemeHandler=SCHEMES[urnScheme];if(schemeHandler){urnComponents=schemeHandler.serialize(urnComponents,options)}var uriComponents=urnComponents;var nss=urnComponents.nss;uriComponents.path=(nid||options.nid)+":"+nss;return uriComponents}};var UUID=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;var handler$6={scheme:"urn:uuid",parse:function parse(urnComponents,options){var uuidComponents=urnComponents;uuidComponents.uuid=uuidComponents.nss;uuidComponents.nss=undefined;if(!options.tolerant&&(!uuidComponents.uuid||!uuidComponents.uuid.match(UUID))){uuidComponents.error=uuidComponents.error||"UUID is not valid."}return uuidComponents},serialize:function serialize(uuidComponents,options){var urnComponents=uuidComponents;urnComponents.nss=(uuidComponents.uuid||"").toLowerCase();return urnComponents}};SCHEMES[handler.scheme]=handler;SCHEMES[handler$1.scheme]=handler$1;SCHEMES[handler$2.scheme]=handler$2;SCHEMES[handler$3.scheme]=handler$3;SCHEMES[handler$4.scheme]=handler$4;SCHEMES[handler$5.scheme]=handler$5;SCHEMES[handler$6.scheme]=handler$6;exports.SCHEMES=SCHEMES;exports.pctEncChar=pctEncChar;exports.pctDecChars=pctDecChars;exports.parse=parse;exports.removeDotSegments=removeDotSegments;exports.serialize=serialize;exports.resolveComponents=resolveComponents;exports.resolve=resolve;exports.normalize=normalize;exports.equal=equal;exports.escapeComponent=escapeComponent;exports.unescapeComponent=unescapeComponent;Object.defineProperty(exports,"__esModule",{value:true})})},{}],506:[function(require,module,exports){var v1=require("./v1");var v4=require("./v4");var uuid=v4;uuid.v1=v1;uuid.v4=v4;module.exports=uuid},{"./v1":509,"./v4":510}],507:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]}module.exports=bytesToUuid},{}],508:[function(require,module,exports){(function(global){(function(){var rng;var crypto=global.crypto||global.msCrypto;if(crypto&&crypto.getRandomValues){var rnds8=new Uint8Array(16);rng=function whatwgRNG(){crypto.getRandomValues(rnds8);return rnds8}}if(!rng){var rnds=new Array(16);rng=function(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}module.exports=rng}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],509:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");var _seedBytes=rng();var _nodeId=[_seedBytes[0]|1,_seedBytes[1],_seedBytes[2],_seedBytes[3],_seedBytes[4],_seedBytes[5]];var _clockseq=(_seedBytes[6]<<8|_seedBytes[7])&16383;var _lastMSecs=0,_lastNSecs=0;function v1(options,buf,offset){var i=buf&&offset||0;var b=buf||[];options=options||{};var clockseq=options.clockseq!==undefined?options.clockseq:_clockseq;var msecs=options.msecs!==undefined?options.msecs:(new Date).getTime();var nsecs=options.nsecs!==undefined?options.nsecs:_lastNSecs+1;var dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&options.clockseq===undefined){clockseq=clockseq+1&16383}if((dt<0||msecs>_lastMSecs)&&options.nsecs===undefined){nsecs=0}if(nsecs>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}_lastMSecs=msecs;_lastNSecs=nsecs;_clockseq=clockseq;msecs+=122192928e5;var tl=((msecs&268435455)*1e4+nsecs)%4294967296;b[i++]=tl>>>24&255;b[i++]=tl>>>16&255;b[i++]=tl>>>8&255;b[i++]=tl&255;var tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255;b[i++]=tmh&255;b[i++]=tmh>>>24&15|16;b[i++]=tmh>>>16&255;b[i++]=clockseq>>>8|128;b[i++]=clockseq&255;var node=options.node||_nodeId;for(var n=0;n<6;++n){b[i+n]=node[n]}return buf?buf:bytesToUuid(b)}module.exports=v1},{"./lib/bytesToUuid":507,"./lib/rng":508}],510:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options=="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":507,"./lib/rng":508}],511:[function(require,module,exports){var mod_assertplus=require("assert-plus");var mod_util=require("util");var mod_extsprintf=require("extsprintf");var mod_isError=require("core-util-is").isError;var sprintf=mod_extsprintf.sprintf;module.exports=VError;VError.VError=VError;VError.SError=SError;VError.WError=WError;VError.MultiError=MultiError;function parseConstructorArguments(args){var argv,options,sprintf_args,shortmessage,k;mod_assertplus.object(args,"args");mod_assertplus.bool(args.strict,"args.strict");mod_assertplus.array(args.argv,"args.argv");argv=args.argv;if(argv.length===0){options={};sprintf_args=[]}else if(mod_isError(argv[0])){options={cause:argv[0]};sprintf_args=argv.slice(1)}else if(typeof argv[0]==="object"){options={};for(k in argv[0]){options[k]=argv[0][k]}sprintf_args=argv.slice(1)}else{mod_assertplus.string(argv[0],"first argument to VError, SError, or WError "+"constructor must be a string, object, or Error");options={};sprintf_args=argv}mod_assertplus.object(options);if(!options.strict&&!args.strict){sprintf_args=sprintf_args.map(function(a){return a===null?"null":a===undefined?"undefined":a})}if(sprintf_args.length===0){shortmessage=""}else{shortmessage=sprintf.apply(null,sprintf_args)}return{options:options,shortmessage:shortmessage}}function VError(){var args,obj,parsed,cause,ctor,message,k;args=Array.prototype.slice.call(arguments,0);if(!(this instanceof VError)){obj=Object.create(VError.prototype);VError.apply(obj,arguments);return obj}parsed=parseConstructorArguments({argv:args,strict:false});if(parsed.options.name){mod_assertplus.string(parsed.options.name,'error\'s "name" must be a string');this.name=parsed.options.name}this.jse_shortmsg=parsed.shortmessage;message=parsed.shortmessage;cause=parsed.options.cause;if(cause){mod_assertplus.ok(mod_isError(cause),"cause is not an Error");this.jse_cause=cause;if(!parsed.options.skipCauseMessage){message+=": "+cause.message}}this.jse_info={};if(parsed.options.info){for(k in parsed.options.info){this.jse_info[k]=parsed.options.info[k]}}this.message=message;Error.call(this,message);if(Error.captureStackTrace){ctor=parsed.options.constructorOpt||this.constructor;Error.captureStackTrace(this,ctor)}return this}mod_util.inherits(VError,Error);VError.prototype.name="VError";VError.prototype.toString=function ve_toString(){var str=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;if(this.message)str+=": "+this.message;return str};VError.prototype.cause=function ve_cause(){var cause=VError.cause(this);return cause===null?undefined:cause};VError.cause=function(err){mod_assertplus.ok(mod_isError(err),"err must be an Error");return mod_isError(err.jse_cause)?err.jse_cause:null};VError.info=function(err){var rv,cause,k;mod_assertplus.ok(mod_isError(err),"err must be an Error");cause=VError.cause(err);if(cause!==null){rv=VError.info(cause)}else{rv={}}if(typeof err.jse_info=="object"&&err.jse_info!==null){for(k in err.jse_info){rv[k]=err.jse_info[k]}}return rv};VError.findCauseByName=function(err,name){var cause;mod_assertplus.ok(mod_isError(err),"err must be an Error");mod_assertplus.string(name,"name");mod_assertplus.ok(name.length>0,"name cannot be empty");for(cause=err;cause!==null;cause=VError.cause(cause)){mod_assertplus.ok(mod_isError(cause));if(cause.name==name){return cause}}return null};VError.hasCauseWithName=function(err,name){return VError.findCauseByName(err,name)!==null};VError.fullStack=function(err){mod_assertplus.ok(mod_isError(err),"err must be an Error");var cause=VError.cause(err);if(cause){return err.stack+"\ncaused by: "+VError.fullStack(cause)}return err.stack};VError.errorFromList=function(errors){mod_assertplus.arrayOfObject(errors,"errors");if(errors.length===0){return null}errors.forEach(function(e){mod_assertplus.ok(mod_isError(e))});if(errors.length==1){return errors[0]}return new MultiError(errors)};VError.errorForEach=function(err,func){mod_assertplus.ok(mod_isError(err),"err must be an Error");mod_assertplus.func(func,"func");if(err instanceof MultiError){err.errors().forEach(function iterError(e){func(e)})}else{func(err)}};function SError(){var args,obj,parsed,options;args=Array.prototype.slice.call(arguments,0);if(!(this instanceof SError)){obj=Object.create(SError.prototype);SError.apply(obj,arguments);return obj}parsed=parseConstructorArguments({argv:args,strict:true});options=parsed.options;VError.call(this,options,"%s",parsed.shortmessage);return this}mod_util.inherits(SError,VError);function MultiError(errors){mod_assertplus.array(errors,"list of errors");mod_assertplus.ok(errors.length>0,"must be at least one error");this.ase_errors=errors;VError.call(this,{cause:errors[0]},"first of %d error%s",errors.length,errors.length==1?"":"s")}mod_util.inherits(MultiError,VError);MultiError.prototype.name="MultiError";MultiError.prototype.errors=function me_errors(){return this.ase_errors.slice(0)};function WError(){var args,obj,parsed,options;args=Array.prototype.slice.call(arguments,0);if(!(this instanceof WError)){obj=Object.create(WError.prototype);WError.apply(obj,args);return obj}parsed=parseConstructorArguments({argv:args,strict:false});options=parsed.options;options["skipCauseMessage"]=true;VError.call(this,options,"%s",parsed.shortmessage);return this}mod_util.inherits(WError,VError);WError.prototype.name="WError";WError.prototype.toString=function we_toString(){var str=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;if(this.message)str+=": "+this.message;if(this.jse_cause&&this.jse_cause.message)str+="; caused by "+this.jse_cause.toString();return str};WError.prototype.cause=function we_cause(c){if(mod_isError(c))this.jse_cause=c;return this.jse_cause}},{"assert-plus":387,"core-util-is":394,extsprintf:400,util:243}]},{},[246]);
|